首页 文章 精选 留言 我的

精选列表

搜索[javascript引擎],共10000篇文章
优秀的个人博客,低调大师

阿里云:计算将成DT世界引擎

6年前,云计算创业“无人喝彩”。6年后的今天,阿里云已成长为全球领先的云计算服务平台,开始分享对于DT世界、云计算生态、数据保护以及未来核心技术等方向的判断。 7月22日,首届阿里云分享日云栖大会北京峰会召开,吸引了海内外2000余名开发者、创业者及生态伙伴参与。会上,阿里云集中发布了11款新产品、50多个行业解决方案;向企业级用户开放互联网架构解决方案;首次披露云计算生态路线图全貌;并面向行业率先发起数据保护倡议,明确数据归属客户所有,平台方不得移作它用。 与此同时,驻云科技喜迎2周年纪念,并携核心产品“架构云管理平台”献礼首届阿里云分享日云栖大会北京峰会。“架构云”将第一次揭开面纱,向新老客户展示其强大的功能和卓越的性能。 “如果说火代表农业世界,电代表工业世界,那么计算就是DT世界的标志。”阿里云总裁胡晓明在会上表示,全球已经步入DT时代,未来的一切都离不开计算和数据,阿里云要做的,就是把计算变得更简单,让计算成为世界的能力,让数据成为经济的动力。 11款新产品发布技术拓展商业边界 六年技术沉淀,阿里云在云计算基础设施领域,覆盖了从域名、备案、解析、计算、网络、存储、数据库、安全、海量数据分析到互联网中间件等一站式服务,并已在多个领域进入全球TOP行列。 分享日当天,阿里云集中发布了11款新产品,并预告了即将推出的10大产品与服务。新品包括读写性能超群的SSD云盘、可一键搭建混合云的VPC服务、基于 PostgreSQL并兼容Oracle的云数据库、支持Redis的KV数据库以及应用于基因测序与渲染等行业的批量计算等。 SSD云盘以每秒20000次读写、高达256MB的数据吞吐表现,一举扫清了读写密集型行业使用云计算的障碍。读写20万次的SSD本地盘也即将发布。VPC为搭建混合云提供了兼顾安全与便捷的最佳方案,浙江、贵州、海淀、中石化、海关等政府与国企已经在VPC+专线环境下高效运行。发布的十万核并发处理的批量计算,可应用于基因测序、新药研发与影视渲染、视觉计算等行业。 与此同时,阿里云还推出企业级互联网架构解决方案,提供应用框架、消息队列、分布式数据库等服务。 阿里云CTO章文嵩表示:“新技术和数据出现前所未见的指数级增长,并将加速更替。全新的科技商业机会由此诞生,使得很多行业的弯道超车成为可能,并对很多行业带来挑战。”他透露,“很快将推出基于GPU的高性能计算服务以及加速器,支持深度学习等领域的创新创业,让技术拓展商业边界。” 披露生态路线图向DT世界转型 伴随着阿里云成长的6年间,不仅是计算本身在发生变革,整个生态也随之生长。 当天,阿里云正式发布了汇集产品和服务的云市场,并首次明确云计算与合作伙伴的定位,描绘出10大类IT服务商向DT世界转型方向,披露了阿里云生态路线图全貌。 自去年启动“云合计划”后,阿里云上已汇聚50多个行业解决方案,覆盖游戏、多媒体、政府、医疗、物联网、金融等八大领域。这些解决方案由200余家大型合作伙伴提供,未来三年全球合作伙伴将扩大至2000家。 “我们聚焦于基础设施,提供公共云、专有云、混合云。合作伙伴向客户提供行业应用、行业解决方案、IT服务、硬件等服务。”阿里云业务总经理刘松表示。 发起数据保护倡议界定数据归属权 在DT世界,数据从沉睡中苏醒,开始流淌起来,成为新的基础能源。这意味着数据将成为最具价值的资产。 会上,阿里云全球率先发起“数据保护倡议”:“数据是客户资产,云计算平台不得移作它用,并有责任和义务帮助客户保障其数据的私密性、完整性和可用性。”据悉,这是中国云计算服务商首次定义行业标准,针对用户普遍关注的数据安全问题,进行清晰地界定。来自英特尔、数梦工场、浪潮、用友、新奥特等上千位行业人士见证并响应这一倡议。 目前,阿里云已践行这一承诺,构建了中国首个基于大数据的云计算安全体系,提供云盾DDoS防护、安骑士等全球一流的安全服务。刚刚推出的云计算保险,则为每一位客户提供了额外的保障。阿里云免费为每一个客户投保,消除后顾之忧。

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

SEO 向 GEO 转型|传统搜索引擎从业者看懂生成式引擎优化变革

过去十几年,SEO 是线上获客的重要手段,从业者围绕关键词、外链、网页排名做大量工作。随着豆包、DeepSeek 等生成式大模型普及,用户获取信息的方式发生本质改变,很多 SEO 从业者感到困惑:GEO 是什么?SEO 还有价值吗?原有经验哪些可以复用?本篇站在传统优化从业者视角,解析范式变革,给出团队转型落地思路。

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

JavaScript 中的 AbortController:如何优雅地取消异步任务

在开发搜索框实时联想、文件上传进度控制或页面切换时中断数据请求等功能时,我们经常需要取消已经发出但不再需要的异步操作。以前用 XMLHttpRequest 可以直接调用 abort(),但换到 fetch 或一些返回 Promise 的异步函数后,取消就变得棘手。很多人在组件卸载后仍收到 setState 警告,或者因为旧请求覆盖新请求导致界面显示错误数据,根源就是没有真正取消异步任务。AbortController 是现代浏览器提供的标准方案,它通过一个信号对象将取消指令传递给 fetch、事件监听甚至自定义异步逻辑。这篇文章会从实际场景出发,讲清楚它的基本用法、如何配合 fetch 取消请求、如何监听取消事件、如何封装可复用的取消逻辑,以及处理超时和多个信号的组合场景。

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

GraalVM 将重点转向 Python/JavaScript 等非 Java 语言

继 2022 年宣布将 GraalVM CE Java 代码捐赠给 OpenJDK之后,Oracle 近期发文宣布,GraalVM 未来将专注于非 Java 语言。 具体来说,与 GraalVM 相关的 Java SE 产品路线图更新如下: GraalVM 团队正在转型,专注于非 Java Graal 语言,包括 GraalPy 和 GraalJS。详情预计将于稍后公布。 GraalVM for JDK 24 是作为 Oracle Java SE 产品组件获得许可和支持的最后一个 GraalVM 版本。需要对旧版 GraalVM 进行进一步更新的客户应通过 Oracle 支持进行下载。 Oracle JDK 24 最后一个包含实验性可选 Graal JIT 的版本。 GraalVM Early Adopter technology(包括 Native Image)即将停止向 Java SE 产品客户提供。OpenJDK 的 Leyden 项目正在进一步推进缩短 Java 程序启动时间、降低峰值性能和减少内存占用的目标,并将其作为 Java 的标准组成部分。 建议对 Java 技术感兴趣的 GraalVM 用户迁移到Oracle JDK或Oracle OpenJDK版本。关注 ahead-of-time performance features 的用户,建议迁移到 Oracle JDK 25,并探索JEP 514(Ahead-of-Time Command-Line Ergonomics)和JEP 515(Ahead-of-Time Method Profiling)的优势。 建议使用 Graal JIT 的 Oracle 客户(无论是在 GraalVM 发行版中还是作为 Oracle JDK 23 和 24 集成的一部分)改用默认的 C2 JIT。 更多详情可查看官方公告。

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

JavaScript性能优化实战:表格控件高效开发指南

引言 在现代Web应用开发中,电子表格功能已成为数据分析、报表展示等场景的核心需求。SpreadJS作为一款高性能的纯前端电子表格控件,能够完美兼容Excel文件格式,支持百万级数据量和复杂公式计算。然而随着数据规模的增长和业务逻辑的复杂化,性能优化成为开发者必须面对的挑战。本文将深入剖析几种SpreadJS性能优化技巧,通过实际案例和代码演示,帮助开发者构建响应迅速、用户体验优异的电子表格应用。 正文 一、渲染优化:Suspend/Resume Paint机制 SpreadJS的默认行为是每次修改后立即重绘界面,这在批量操作时会产生严重的性能损耗。通过使用suspendPaint和resumePaint方法,开发者可以暂时冻结UI渲染,待所有修改完成后再统一刷新。 // 未优化代码(耗时542ms) setSampleData(spread.getActiveSheet(), 10, 10); // 优化后代码(耗时19ms) sheet.suspendPaint(); setSampleData(sheet, 10, 10); sheet.resumePaint(); 实测数据显示,对10x10单元格设置值,优化后性能提升达28倍。此技术特别适用于工作表初始化、批量数据导入等场景。 二、计算优化:延迟公式计算策略 复杂公式的重计算是电子表格的性能瓶颈之一。SpreadJS提供了计算服务的挂起机制: sheet.suspendPaint(); sheet.suspendCalcService(); setDummyFormula(sheet, 10, 10); sheet.resumeCalcService(false); // false表示不立即计算 sheet.resumePaint(); 通过组合使用suspendCalcService和resumeCalcService,公式设置时间从110ms缩减至50-60ms。需注意: 计算服务恢复时建议关闭自动计算 重要公式可手动触发calculate方法 复杂工作簿建议分阶段恢复计算 三、加载优化:智能计算控制技术 大型工作簿加载时,可通过以下配置避免不必要的计算: workbook.fromJSON(jsonData, { doNotRecalculateAfterLoad: true }); workbook.options.calcOnDemand = true; 这两个标志位协同工作: doNotRecalculateAfterLoad:阻止加载时的全局重算 calcOnDemand:改为按需计算当前编辑区域 该方案特别适用于含大量跨表引用公式的工作簿。 四、迭代计算优化策略 循环引用是计算性能的"隐形杀手",优化方案包括: // 限制迭代次数和变化阈值 sheet.iterativeCalculation = true; sheet.iterativeCalculationMaximumIterations = 100; sheet.iterativeCalculationMaximumChange = 0.001; 最佳实践建议: 将循环引用约束在单个工作表 设置合理的收敛条件 避免多层嵌套循环引用 考虑用VBA脚本替代复杂迭代。 五、大数据加载:增量导入技术 传统JSON导入会阻塞UI线程,增量加载提供流畅体验: spread.fromJSON(json, { incrementalLoading: { loading: (progress, args) => { updateProgressBar(progress); }, loaded: () => { showCompletionToast(); } } }); 技术优势: 分片加载避免主线程卡顿 实时进度反馈增强用户体验 内存占用更平稳 支持加载中断恢复。 六、结构化数据:表格与命名范围 命名引用提升代码可读性和性能: // 传统引用 =SUM(A1:A10) - SUM(B1:B10) // 命名范围 =总收入 - 总成本 表格功能自动创建结构化引用: =SUM(销售表[金额]) 优势对比: 技术 可维护性 性能影响 适用场景 单元格引用 差 高 简单公式 命名范围 良 中 关键指标 表格引用 优 低 结构化数据。 七、公式精简策略 无效公式会拖慢整个工作簿,优化方案包括: 识别未使用的公式(如隐藏列、非活跃工作表) 转换为静态值: sheet.setValue(row, col, sheet.getValue(row, col)); 建立公式使用情况监控机制 定期执行"公式瘦身"维护^^(参考内容:方法7实施建议)。 八、批量操作:数组公式应用 传统单元格公式存在重复计算问题: // 低效方式 for(let i=0; i<1000; i++){ sheet.setFormula(i, 0, `=A${i}+B${i}`); } // 高效数组公式 sheet.setArrayFormula(0, 0, 1000, 1, "A1:A1000+B1:B1000"); 性能对比: 传统方式:1000次单独计算 数组公式:1次批量计算 内存节省约70%。 九、条件格式优化技巧 不合理的条件格式会导致指数级计算量: // 低效写法(计算144万次) =ISBLANK(K1200) // 优化方案(计算1次) =ISBLANK(K1) 优化原则: 最小化应用范围 简化判断条件 避免整行/整列引用 优先使用样式而非条件格式。 十、样式系统优化方案 样式处理不当会导致内存泄漏: // 低效方式(创建101个样式对象) for(let row=0; row<=100; row++){ let style = new GC.Spread.Sheets.Style(); style.backColor = "red"; sheet.setStyle(row, 0, style); } // 高效方式(共享1个命名样式) let style = new GC.Spread.Sheets.Style(); style.name = "warning"; style.backColor = "red"; sheet.addNamedStyle("warning"); sheet.setStyleName(0, 0, "warning"); 内存占用对比: 方式 样式对象数 内存占用 setStyle O(n) 高 setStyleName O(1) 低^^(参考内容:方法10实测数据)。 十一、数据操作:批量设置技术 单元格逐个设置效率低下: // 传统方式 for(let row=0; row<100; row++){ for(let col=0; col<10; col++){ sheet.setValue(row, col, data[row][col]); } } // 批量设置 sheet.setArray(0, 0, data); 性能提升关键点: 减少DOM操作次数 降低内存碎片 利用浏览器批处理机制 配合suspendPaint使用效果更佳。 结论 通过本文介绍的11项优化技术,开发者可以全面提升SpreadJS应用的性能表现。关键优化方向包括: 渲染控制:合理使用挂起机制避免无效重绘 计算优化:精确控制公式计算时机和范围 内存管理:共享对象引用减少内存消耗 批量操作:利用原生批量API减少交互开销 实际项目中建议结合性能分析工具(如Chrome DevTools)进行针对性优化,不同场景可组合使用多项技术。当处理10万级数据时,综合优化方案可实现5-10倍的性能提升,为用户提供桌面级电子表格体验。 随着Web技术的不断发展,性能优化将成为前端开发的核心竞争力。掌握这些SpreadJS优化技巧,不仅能够解决当前项目的性能瓶颈,更能为未来复杂应用的开发奠定坚实基础^^(参考内容:各方法综合应用建议)。 AI辅助的数据透视表生成与分析

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

用 HTML 和 JavaScript 实现手写签名的简易方法

前言 今天遇到的场景是这样的:在日常业务流程中,经常需要某一流程环节中相关责任人员进行审批签字,早期许多公司为了省事就直接会把这位负责人的签名以键盘打字(楷体)的形式打印出来,但是这样的坏处就是会导致所有的负责人的签名都是一样的,没有美感,为了解决这个问题,一些公司就开始使用手写签名(用鼠标或者是电子笔写出来的签名)代替电子签名,今天本葡萄就为大家简单的介绍下手写签名到底是怎么实现的。话不多说,先上效果图: 看完效果图之后,下面为大家介绍实现的详细过程。 使用Html+JavsScript实现手写签名的添加 1.实现Html界面 <!doctype html> <html> <head> <title>SpreadJS in TypeScript</title> <!--引入在线Excel资源--> <link rel="stylesheet" type="text/css" href="node_modules/@grapecity/spread-sheets/styles/gc.spread.sheets.excel2013white.css"> <link rel="stylesheet" type="text/css" href="node_modules/@grapecity/spread-sheets-designer/styles/gc.spread.sheets.designer.min.css"> <script src="node_modules/systemjs/dist/system.src.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.0/jquery.min.js" integrity="sha512-3gJwYpMe3QewGELv8k/BX9vcqhryRdzRMxVfq6ngyWXwo03GFEzjsUm8Q7RZcHPHksttq7/GFoxjCVUjkjvPdw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jSignature/2.1.3/jSignature.min.js" integrity="sha512-lZ7GJNAmaXw7L4bCR5ZgLFu12zSkuxHZGPJdIoAqP6lG+4eoSvwbmKvkyfauz8QyyzHGUGVHyoq/W+3gFHCLjA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script src="systemjs.config.js"></script> <script> System.import('./src/app'); </script> </head> <!--添加清空和确认功能--> <body> <div id="signArea" style="position: absolute;top:100px;left:200px;visibility:hidden;z-index:100"> <div id="sign" style="height:300px;width:600px;border:1px dashed \#ddd;margin-bottom:10px"></div> <div> <button id="clear">清空</button> <button id="confirm">确认</button> </div> </div> <div id="designer-container" style="width:100%;height:90vh;border:1px solid darkgray"></div> </body> </html> 首先引入需要的在线Excel资源包,然后添加增加清空和确认手写签名两个按钮。 2.手写签名的JavsScript实现方法 (1) 添加手写签名: let config = JSON.parse(JSON.stringify(GC.Spread.Sheets.Designer.DefaultConfig)) let customeAddSign = { "text":"添加手写签名", commandName:"customeAddSign", execute:() =\> { if(document.getElementById("signArea")){ document.getElementById("signArea").style.visibility = 'visible' } } } (2) 追加右键自定义菜单: 核心代码: // 追加自定义右键菜单 config.contextMenu.push("customeAddSign") config.commandMap = { customeAddSign } let designer = new GC.Spread.Sheets.Designer.Designer("designer-container",config) let spread = designer.getWorkbook() $("#sign").jSignature({lineWidth:'16',width:'100%',height:'100%'}) document.getElementById("clear").onclick = function(){ $("#sign").jSignature("reset") } document.getElementById("confirm").onclick = function(){ let datapair = "data:" + $("#sign").jSignature("getData") let sheet = spread.getActiveSheet() let row = sheet.getActiveRowIndex() let col = sheet.getActiveColumnIndex() let picture = sheet.shapes.addPictureShape(`${sheet.name()}-${row}-${col}}`, datapair,0,0,100,100); picture.startRow(row) picture.endRow(row + 1) picture.startColumn(col) picture.endColumn(col + 1) picture.startRowOffset(0); picture.startColumnOffset(0); picture.endRowOffset(0); picture.endColumnOffset(0); picture.allowResize(false) picture.allowMove(false) picture.allowRotate(false) $("#sign").jSignature("reset") document.getElementById("signArea").style.visibility = 'hidden' } 这一步的作用是实现在Excel单元格中添加手写签名的功能,右键菜单选择手写签名后会调用对应的签名插件,在签名插件上可以用鼠标进行输入,输入完之后点击确认就会显示在单元格中。 完整代码和在线Demo地址: 相信看到这里,很多小伙伴已经想操作一下了吧,本葡萄也为大家准备了一个自由发挥的平台,点击下方链接便可以跳转到对应的Demo在线地址: https://jscodemine.grapecity.com/share/sXBAh7hZ00SAsemg_1jLbQ/?IsEmbed=false&Theme=Unset&PreviewDirection=0&IsEditorShow=true&IsExplorerShow=true&IsPreviewShow=true&IsConsoleShow=true&IsRunBTNShow=false&IsResetBTNShow=false&IsOpenInCodemineBTNShow=false&PanelWidth=20&PanelWidth=50&PanelWidth=30&defaultOpen=%7B%22OpenedFileName%22%3A%5B%22%2Findex.html%22%5D%2C%22ActiveFile%22%3A%22%2Findex.html%22%7D 扩展链接: Spring Boot框架下实现Excel服务端导入导出 项目实战:在线报价采购系统(React +SpreadJS+Echarts) Svelte 框架结合 SpreadJS 实现纯前端类 Excel 在线报表设计

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

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

用户登录
用户注册