首页 文章 精选 留言 我的

精选列表

搜索[IoT产品],共10000篇文章
优秀的个人博客,低调大师

Databend 产品月报(2025年6月)

亲爱的 Databend 用户朋友们,大家好!👋 这个六月,我们的研发团队可谓是火力全开,为大家带来了一系列重磅更新!最值得关注的就是全新推出的 企业级审计系统 ,相信这个功能会让企业的数据安全团队眼前一亮~ 本月成果速览 新增 45 + 实用功能 修复 30 + 影响体验的 bug 完成 15 + 项性能优化 其他改进 30 + 项 重点功能一览 💎 核心升级 ✓ 全链路审计追踪 :登录记录、查询日志、数据访问全面监控 ✓ 金融级精度计算 :Decimal64 精度再提升 ✓ 智能查询优化 :自动缓存常用表达式 ✓ 时间序列分析 :ASOF JOIN 助力业务分析 ✓ Python 扩展 :完美支持第三方库 🛠 开发更顺手 ✨ 新增多个实用函数 ✨ 工作负载智能分配 ✨ 存储空间优化方案 ⚡ 性能再突破 • 服务稳定性显著提升 • 智能缓存重复计算 • 大内存查询自动优化 深度解析:审计系统 五大审计法宝 功能模块 监控内容 使用场景 查询历史 所有 SQL 执行记录 性能分析 / 合规审计 访问记录 数据操作轨迹 敏感数据监控 登录日志 用户登录行为 安全审计 性能画像 查询执行详情 优化参考 系统日志 运行状态记录 故障排查 实际应用示例 -- 查看异常登录 SELECT event_time, user_name, client_ip, error_message FROM system_history.login_history WHERE event_type = 'LoginFailed' ORDER BY event_time DESC; -- 监控重要数据访问 SELECT query_id, query_start, user_name, base_objects_accessed FROM system_history.access_history WHERE base_objects_accessed LIKE '%customer_data%' AND query_start >= TODAY() - INTERVAL 7 DAY; -- 追踪模式变更 SELECT query_id, query_start, user_name, object_modified_by_ddl FROM system_history.access_history WHERE object_modified_by_ddl != '[]' ORDER BY query_start DESC; -- 查询执行详情 SELECT query_id, sql_user, query_text, query_start_time, query_duration_ms, client_address FROM system_history.query_history WHERE event_date >= TODAY() - INTERVAL 7 DAY ORDER BY query_start_time DESC; 轻松启用 ☁️ 云服务版 :默认开启,无需配置 🖥️ 自建版 :简单修改配置文件即可 未来展望:迈向 AI 驱动的数据平台 我们正在构建 下一代统一数据平台 ,让 Databend 不仅擅长处理传统结构化数据,更能驾驭 AI 时代的数据挑战: 1. 三位一体的数据能力 结构化数据 :持续优化分布式查询性能,保持行业领先 半结构化数据 :增强 JSON / Parquet 支持, 自动模式推断 + 智能索引 非结构化数据 :即将推出文本、视频、音频等多媒体处理能力 2. AI 增强功能 向量数据库 :完善 HNSW 索引,提升相似性搜索性能 智能查询 :支持语义理解与上下文感知 模型集成 :内置常用 AI 模型,支持在查询中直接调用 3. 统一数据体验 无缝衔接 :消除 ETL 管道,实现各类数据直接交互 智能优化 :基于 AI 的自动索引推荐和查询优化 统一接口 :保持 SQL 作为所有数据操作的统一语言 "我们不只是跟随趋势,而是重新定义数据平台的未来。" —— The Databend Team 立即体验 欢迎访问我们的: 👉 代码仓库:github.com/databend 📚 使用文档:docs.databend.cn 🎮 在线体验:apply.databend.cn 期待听到您的宝贵建议!我们下期再见~ ✨

优秀的个人博客,低调大师

Databend 产品月报(2025年5月)

五月份的更新来啦!这个月我们为大家带来了不少实用的新功能和性能优化,希望能让你的大数据处理工作更加得心应手。 这个月我们一共推出了 31 个新功能 ,修复了 18 个 bug ,还做了 15 项性能优化! 📊 五月更新亮点 重磅功能 Ngram Index - 让 LIKE '%pattern%' 查询飞起来,自带 bloom filter 加速 Iceberg 功能增强 - 新增 ORC 文件支持,数据缓存和 merge-on-read 优化 AVRO 文件支持 - 现在可以直接导入和查询 AVRO 文件了 Streaming Load API - 重新上线,性能比之前更强 Sequence 管理 - 新增 SHOW SEQUENCES 和 DESC SEQUENCE 命令 类型转换优化 - 数字转布尔值、数字字符串转换更智能了 性能提升 Query Optimizer - 优化了 JOIN 条件中的关联子查询 Fragment Forest 执行引擎 - 分布式查询的 Broadcast 操作更高效 Histogram 计算 - 字符串类型的统计信息计算更快了 内存管理 - 没有工作负载时自动释放内存 并发处理 - Row-Fetch 和数据库操作的并发性能提升 存储和稳定性 Auto-Vacuum 选项 - 新增 enable_auto_vacuum 表级设置 数据保留策略 - data_retention_num_snapshots_to_keep 参数控制快照保留 Meta-Service 改进 - 基于时间戳的 Semaphore 序列,缓存管理更智能 超时处理 - 存储操作的取消机制更安全 开发体验 时间序列 Profiling - 新的统计指标帮你更加详细的了解每个算子的实时吞吐 错误处理优化 - 异常分类和日志记录更清晰 Python Bindings - 发布了 Python 集成支持 Arrow 升级 - 升级到 v55,兼容性更好 🚀 本月最值得关注的功能 文本搜索的双重加速:两种 Index 各有所长 我们这次推出了两种文本搜索的解决方案,各有特色,可以根据不同场景选择。最棒的是 两种 index 都是全自动维护的 - 创建后就不用管了,数据插入更新时会自动同步。 | 对比项 | Ngram Index | Full-Text Index | |---------|-------------|-----------------| | 擅长场景 | 加速 LIKE '%pattern%' 查询 | 文档搜索和内容发现 | | 典型用法 | 日志分析,精确子串匹配 | 内容搜索,模糊匹配 | | 查询语法 | WHERE col LIKE '%text%' | WHERE MATCH(col, 'text') | | 高级特性 | 大小写不敏感 | 相关性打分,模糊搜索,布尔查询 | | 主要优势 | 现有 LIKE 查询直接加速 | 专业搜索功能,替代传统 LIKE | | 迁移成本 | 零成本,现有 SQL 直接受益 | 兼容 Elasticsearch 语法 | | 维护工作 | 全自动 | 全自动 | Ngram Index:让你的 LIKE 查询起飞 专门为加速 LIKE '%pattern%' 查询设计: -- 创建应用日志表 CREATE OR REPLACE TABLE app_logs ( id INT, timestamp TIMESTAMP, level STRING, message STRING ); -- 创建 ngram index(按3个字符分段) CREATE OR REPLACE NGRAM INDEX logs_message_idx ON app_logs(message) gram_size = 3; -- 插入数据,index 会自动更新 INSERT INTO app_logs VALUES (1, '2025-05-01 10:00:00', 'ERROR', 'Database connection failed'); INSERT INTO app_logs VALUES (2, '2025-05-01 10:01:00', 'INFO', 'User login successful'); INSERT INTO app_logs VALUES (3, '2025-05-01 10:02:00', 'ERROR', 'Kubernetes pod restart failed'); -- 原来的 LIKE 查询现在飞快 SELECT * FROM app_logs WHERE message LIKE '%connection%'; SELECT * FROM app_logs WHERE message LIKE '%kubernetes%'; -- 看看 index 是否生效 EXPLAIN SELECT * FROM app_logs WHERE message LIKE '%error%'; -- 会显示:bloom pruning: X to Y(说明 index 在工作) Ngram Index 文档:https://docs.databend.cn/guides/performance/ngram-index Full-Text Index:专业级文档搜索 支持 Elasticsearch 语法,Elasticsearch 用户可以无缝迁移: -- 创建知识库表 CREATE OR REPLACE TABLE knowledge_base ( doc_id INT, title STRING, content STRING, category STRING ); -- 创建全文搜索 index CREATE OR REPLACE INVERTED INDEX kb_content_idx ON knowledge_base(title, content, category); -- 插入文档数据,index 自动维护 INSERT INTO knowledge_base VALUES (1, 'Database Setup', 'Learn how to configure database connections and troubleshoot common issues', 'tutorial'); INSERT INTO knowledge_base VALUES (2, 'Kubernetes Guide', 'Complete guide to deploying applications on Kubernetes clusters', 'guide'); INSERT INTO knowledge_base VALUES (3, 'Error Handling', 'Best practices for error handling and logging in distributed systems', 'best-practices'); -- 基础搜索,带相关性打分(Elasticsearch 用户很熟悉) SELECT doc_id, title, SCORE() as relevance FROM knowledge_base WHERE MATCH(content, 'database troubleshoot') ORDER BY SCORE() DESC; -- 模糊搜索 - 和 Elasticsearch 一模一样的语法 SELECT * FROM knowledge_base WHERE MATCH(content, 'kuberntes', 'fuzziness=1'); -- 高级查询,完全是 Elasticsearch 的写法 SELECT * FROM knowledge_base WHERE QUERY('content:"error handling" AND category:best-practices'); -- 布尔查询(Elasticsearch 用户几乎无学习成本) SELECT * FROM knowledge_base WHERE QUERY('title:database OR kubernetes AND content:guide'); ES 用户的福音:我们的全文搜索语法兼容 Elasticsearch,如果你之前用过 Elasticsearch,可以直接上手,零学习成本。 怎么选择? | 你的需求 | Ngram Index | Full-Text Index | |----------|-------------|-----------------| | 现有 LIKE 查询太慢 | ✅ 完美,代码都不用改 | ❌ 需要重写查询 | | 日志分析和监控 | ✅ 专门为这个设计的 | ⚠️ 也能用,但有点大材小用 | | 文档搜索功能 | ❌ 功能太简单 | ✅ 这就是专业的 | | 需要模糊搜索和相关性 | ❌ 不支持 | ✅ 原生支持 | | 从 Elasticsearch 迁移 | ❌ 语法不一样 | ✅ 无缝迁移 | 选择建议: 用 Ngram Index 如果你想让现有的 LIKE '%pattern%' 查询跑得更快,不想改代码 用 Full-Text Index 如果你要做搜索功能,或者从 Elasticsearch 迁移过来 Full-Text Index 文档:https://docs.databend.cn/guides/performance/fulltext-index 🔮 总结 五月份对 Databend 来说是个重要的里程碑。双重索引方案让查询性能有了质的飞跃,我们正在打造下一代云数据仓库的基础设施。 社区的反馈超出了我们的预期 - 很多用户已经在生产环境中使用,给了我们很多宝贵的建议。感谢所有社区成员、贡献者,以及愿意尝鲜的朋友们。 想体验一下未来的数据仓库吗?来看看我们的项目:github.com/databendlabs/databend 🚀 关于 Databend Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式湖仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。 👨‍💻‍ Databend Cloud:databend.cn 📖 Databend 文档:docs.databend.cn 💻 Wechat:Databend ✨ GitHub:github.com/databendlab...

优秀的个人博客,低调大师

Databend 产品月报(2025年4月)

很高兴为您带来 Databend 2025 年 4 月的最新更新、新功能和改进!我们希望这些增强功能对您有所帮助,并期待您的反馈。 BendDeploy:安装 Databend 的新方式 BendDeploy 是由 Databend 开发的一款基于 Kubernetes 的平台,旨在简化和标准化 Databend 集群的部署与管理。它提供可视化、用户友好的界面,支持多集群、多租户操作,显著提升了运维效率、系统可靠性以及管控能力。 多租户管理:为不同租户提供隔离的环境,并支持基于角色的用户访问控制。 一键集群部署:只需几次点击即可轻松启动并管理 Databend 集群。 生命周期管理操作:支持滚动升级、版本回滚、水平扩展和集群重启等功能。 可视化监控与日志:集成节点状态视图、日志(如查询日志、性能分析日志)以及外部 Prometheus 指标。 网页 SQL 工作台:可在 UI 中直接执行 SQL 查询,并可指定目标租户集群。 BendSave:一条命令完成数据备份与恢复 BendSave 是一款命令行工具,用于备份和恢复 Databend 中的元数据及实际数据文件。它将备份内容存储在兼容 S3 的对象存储中,非常适合用于灾难恢复场景。 export AWS_ACCESS_KEY_ID=minioadmin export AWS_SECRET_ACCESS_KEY=minioadmin # Backup ./databend-bendsave backup \ --from ../configs/databend-query.toml \ --to 's3://backupbucket?endpoint=http://127.0.0.1:9000/&region=us-east-1' # Restore ./databend-bendsave restore \ --from "s3://backupbucket?endpoint=http://127.0.0.1:9000/&region=us-east-1" \ --to-query ../configs/databend-query.toml \ --to-meta ../configs/databend-meta.toml \ --confirm 查询结果缓存 查询结果缓存是 Databend 的一项性能优化功能,用于存储先前查询的结果。对于重复执行的查询,系统可直接从缓存中返回结果,而无需重新计算,从而降低查询延迟并提升整体系统效率,尤其适用于重复的分析型工作负载。 有关如何启用和配置查询结果缓存的详细信息,请参阅查询结果缓存。 动态列默认值:NEXTVAL() 您现在可以在创建表时,使用来自序列的动态值作为列的默认值。通过 NEXTVAL(<seq>),每次插入新行时,该列将自动获取序列生成的下一个值。 CREATE SEQUENCE staff_id_seq; CREATE TABLE staff ( staff_id INT DEFAULT NEXTVAL(staff_id_seq), -- Assigns the next number from the sequence 'staff_id_seq' if no value is provided name VARCHAR(50), department VARCHAR(50) DEFAULT 'Marketing' -- Defaults to 'Marketing' if no value is provided ); 查询文件级元数据 您现在可以从暂存文件中查询文件级别的元数据信息,例如文件名和行号。 -- Querying Metadata Fields SELECT metadata$filename, metadata$file_row_number, * FROM @my_internal_stage/iris.parquet LIMIT 5; -- Using Metadata in COPY INTO COPY INTO iris_with_meta FROM (SELECT metadata$filename, metadata$file_row_number, $1, $2, $3, $4, $5 FROM @my_internal_stage/iris.parquet) FILE_FORMAT=(TYPE=parquet); 新文件格式:Avro Apache Avro™ 是领先的记录数据序列化格式,也是流式数据管道的首选格式。Databend 现已支持将 Avro 作为加载数据的文件格式。 COPY INTO userdata FROM 'https://raw.githubusercontent.com/Teradata/kylo/master/samples/sample-data/avro/userdata1.avro' FILE_FORMAT = (type = avro); 新函数 LISTAGG:将多行中的值连接成一个字符串,并用指定的分隔符分隔。 -- Aggregate Function LISTAGG([DISTINCT] <expr> [, <delimiter>]) [WITHIN GROUP (ORDER BY <order_by_expr>)] -- Window Function LISTAGG([DISTINCT] <expr> [, <delimiter>]) [WITHIN GROUP (ORDER BY <order_by_expr>)] OVER ([PARTITION BY <partition_expr>]) DATE_BETWEEN:计算两个日期或时间戳之间的时间间隔,以指定的单位返回差值,正值表示第一个时间早于第二个时间,负值表示相反。 DATE_BETWEEN( YEAR | QUARTER | MONTH | WEEK | DAY | HOUR | MINUTE | SECOND | DOW | DOY | EPOCH | ISODOW | YEARWEEK | MILLENNIUM, <start_date_or_timestamp>, <end_date_or_timestamp> ) GLOB:使用通配符执行区分大小写的模式匹配。 GLOB(<string>, <pattern>) 关于 Databend Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式湖仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。 👨‍💻‍ Databend Cloud:databend.cn 📖 Databend 文档:docs.databend.cn 💻 Wechat:Databend ✨ GitHub:github.com/databendlab...

优秀的个人博客,低调大师

Databend 产品月报(2025年3月)

很高兴为您带来 Databend 2025 年 3 月的最新更新、新功能和改进!我们希望这些增强功能对您有所帮助,并期待您的反馈。 仪表盘共享 您现在可以在 Databend Cloud 上与组织内的所有人或特定个人共享您的仪表盘,并选择以下权限级别之一来控制他人对其的访问方式: 只读 (Read Only) :查看仪表盘,但无法进行更改或运行查询以获取最新结果。 执行(Execute) :运行查询以获取最新结果或与仪表盘交互,但无法修改它。 编辑(Edit) :修改仪表盘,包括更改查询和仪表盘如何反映结果。 使用来自另一个表的值更新表 UPDATE 命令已增强,允许使用来自另一个表的值更新表。 UPDATE bookstore SET book_name = book_updates.new_book_name FROM book_updates WHERE bookstore.book_id = book_updates.book_id; 最小日期和时间戳调整 我们已更新日期和时间戳数据类型的最小值: 最小日期:0001-01-01 最小时间戳:0001-01-01 00:00:00.00000 对用户名称和角色名称的限制 Databend 不允许 SQL 用户或角色名称包含以下特殊字符: 单引号(') 双引号(") 退格符(\b) 换页符(\f) 使用 enable_expand_roles 管理角色继承 enable_expand_roles 设置确定 SHOW_GRANTS 函数是否显示来自角色的继承权限。默认设置为 1,它递归地扩展所有权限;当设置为 0 时,它仅显示直接权限和角色授予。例如: 当 enable_expand_roles=1 时: SELECT grants FROM show_grants('role', 'a') ORDER BY object_id; ┌──────────────────────────────────────────────────────┐ │ grants │ ├──────────────────────────────────────────────────────┤ │ GRANT SELECT ON 'default'.'default'.'t1' TO ROLE `a` │ │ GRANT SELECT ON 'default'.'default'.'t2' TO ROLE `a` │ └──────────────────────────────────────────────────────┘ 当 enable_expand_roles=0 时: SELECT grants FROM show_grants('role', 'a') ORDER BY object_id; ┌──────────────────────────────────────────────────────┐ │ grants │ ├──────────────────────────────────────────────────────┤ │ GRANT SELECT ON 'default'.'default'.'t1' TO ROLE `a` │ │ GRANT ROLE b to ROLE `a` │ │ GRANT ROLE public to ROLE `a` │ └──────────────────────────────────────────────────────┘ 日志级别配置更新 databend-query.toml 配置文件中的 [log.file] 和 [log.stderr] 设置现在使用 env_logger 语法(error, warn, info, debug, trace, off),默认设置为 warn,databend_=info,openraft=info,以实现灵活的日志控制。 Iceberg 表函数 Databend 引入了以下表函数用于查询 Iceberg 元数据,允许用户高效地检查快照和清单: ICEBERG_MANIFEST:返回 Iceberg 表的清单文件的元数据,包括文件路径、分区详细信息和快照关联。 SELECT * FROM ICEBERG_MANIFEST('tpcds', 'catalog_returns'); ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ content │ path │ length │ partition_spec │ added_snapshot │ added_data_fil │ existing_data_ │ deleted_data_ │ added_delete_ │ existing_dele │ deleted_delet │ partition_sum │ │ Int32 │ String │ Int64 │ _id │ _id │ es_count │ files_count │ files_count │ files_count │ te_files_coun │ e_files_count │ maries │ │ │ │ │ Int32 │ Nullable(Int64 │ Nullable(Int32 │ Nullable(Int32 │ Nullable(Int3 │ Nullable(Int3 │ t │ Nullable(Int3 │ Array(Nullabl │ │ │ │ │ │ ) │ ) │ ) │ 2) │ 2) │ Nullable(Int3 │ 2) │ e(Tuple(Nulla │ │ │ │ │ │ │ │ │ │ │ 2) │ │ ble(Boolean), │ │ │ │ │ │ │ │ │ │ │ │ │ Nullable(Bool │ │ │ │ │ │ │ │ │ │ │ │ │ ean), String, │ │ │ │ │ │ │ │ │ │ │ │ │ String))) │ ├─────────┼────────────────┼────────┼────────────────┼────────────────┼────────────────┼────────────────┼───────────────┼───────────────┼───────────────┼───────────────┼───────────────┤ │ 0 │ s3://warehouse │ 9241 │ 0 │ 75657674165904 │ 2 │ 0 │ 0 │ 2 │ 0 │ 0 │ [] │ │ │ /catalog_retur │ │ │ 11866 │ │ │ │ │ │ │ │ │ │ ns/metadata/fa │ │ │ │ │ │ │ │ │ │ │ │ │ 1ea4d5-a382-49 │ │ │ │ │ │ │ │ │ │ │ │ │ 7a-9f22-1acb9a │ │ │ │ │ │ │ │ │ │ │ │ │ 74a346-m0.avro │ │ │ │ │ │ │ │ │ │ │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ICEBERG_SNAPSHOT:返回 Iceberg 表的快照元数据,包括数据更改、操作信息和摘要统计信息。 SELECT * FROM ICEBERG_SNAPSHOT('tpcds', 'catalog_returns'); ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ committed_at │ snapshot_id │ parent_id │ operation │ manifest_list │ summary │ ├────────────────────────────┼─────────────────────┼───────────┼───────────┼──────────────────────────────────────────────────────┼─────────────────────────────────────────────────────┤ │ 2025-03-12 23:18:26.626000 │ 7565767416590411866 │ 0 │ append │ s3://warehouse/catalog_returns/metadata/snap-7565767 │ {'spark.app.id':'local-1741821433430','added-data-f │ │ │ │ │ │ 416590411866-1-fa1ea4d5-a382-497a-9f22-1acb9a74a346. │ iles':'2','added-records':'144067','total-equality- │ │ │ │ │ │ avro │ deletes':'0','changed-partition-count':'1','total-r │ │ │ │ │ │ │ ecords':'144067','total-files-size':'7679811','tota │ │ │ │ │ │ │ l-data-files':'2','added-files-size':'7679811','tot │ │ │ │ │ │ │ al-delete-files':'0','total-position-deletes':'0'} │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ [新功能预览] 表函数 fuse_vacuum2() fuse_vacuum2() 表函数根据 data_retention_time_in_days 的设置,帮助用户清理 Fuse 表中过时的数据,回收存储空间并提升查询性能。 SET data_retention_time_in_days = 0; SELECT * FROM fuse_vacuum2('<database>', '<table>'); [新功能预览] Hilbert Clustering 优化 Databend 引入 基于范围的分区 来增强 Hilbert Clustering,使数据组织更加高效。它通过 对 Clustering Key 进行采样 、分配范围分区 ID 以及 计算 Hilbert 索引,从而实现更好的数据裁剪(pruning)和聚类,提高查询性能。 关于 Databend Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式湖仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。 👨‍💻‍ Databend Cloud:databend.cn 📖 Databend 文档:docs.databend.com 💻 Wechat:Databend ✨ GitHub:github.com/databendlab...

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册