avatar
Articles
156
Tags
0
Categories
18

Home
Archives
Categories
Salute Those Who Gaze at the Stars
Home
Archives
Categories

Salute Those Who Gaze at the Stars

基于cesium开发应用之问题
Created2025-07-22|性能的考量
本文主要记录cesium开发过程中的坑加载模型太多导致卡顿加载上千个地标、模型、轨迹线等 Cesium Entity 时,页面帧率(FPS)骤降,操作视角卡顿,甚至浏览器内存溢出。原因:Cesium 默认对每个 Entity 单独渲染,海量实体导致 DrawCall(绘制调用)激增;解决方案: 数据分块 + 视域剔除:基于Cesium.ScreenSpaceCameraController监听视角变化,仅渲染当前视域内的实体,远距实体暂存 / 销毁; 开启性能优化配置viewer.scene.fog.enabled = true; // 开启雾效,远距模型自动淡化 viewer.scene.debugShowFramesPerSecond = true; // 监控帧率 viewer.scene.maximumAliasedLineWidth = 1; // 降低线条渲染开销 3D 模型(GLB/GLTF)加载异常 / 显示不全原因: 坐标不兼容解决方案: // 经纬度转Cesium坐标系,设置模型位置 const position = Cesium. ...
React系列:第十二回(调和过程和diff)
Created2025-07-21
本文介绍react的调和过程和diff算法所谓的调和,本质是将虚拟节点转换为真是dom的过程 React15栈调和机制下diff的核心逻辑先看下图的两个节点: 先对比连个根节点,是否为同一个元素,判断依据标签名和key。若是同一节点,更新各个属性,进入子节点的diff,若不是,简单粗暴,删除旧节点,根据新结点的虚拟dom挨个创建。 进入子节点的对比后,从头至尾依次对比。旧节点所有子节点从左到右一次同新虚拟dom的子节点对比。判断是否为同一节点,是则更新相关属性下一个。不是,删除旧节点。图中依次是B、D、E,到D时,发现不同,删除D创建C。到E时发现不同删除E创建D。 最后因为新节点还有一个E剩余,创建之。完毕。注意:react15的栈调和是深度优先遍历的。倘若D有子组件,那么会继续往下走,最后再往回冒。 上述过程存在的一个问题,新节点中明明也有D、E,但是我们还是经过了删除、创建,明显浪费。此时,就祭出了我们的key. key属性帮助react记住节点。D、E只需要执行插入即可
Method Of Learning
Created2025-07-18|Miscellany
A study method that works for any discipline, language, or technical subject Step 1 - Preparation: find an authoritative book that covers most of the fundamentals Step 2: skim through the whole book quickly once Step 3: locate a reliable mentor, work through the course, and correct misunderstandings Step 4: break the material into chunks, then study each deeply in cycles Step 5: take a comprehensive test to verify you truly understand what you learned Step 6: keep cycling—practice and produce ou ...
第一回:开宗明义的聊聊
Created2025-03-21|代码整洁之道
本文简单聊聊“整洁代码”的几个点究竟什么样的代码才是高质量可维护的代码(没有味道的代码)?什么样的组件才能叫作好的组件?函数怎么写才是干净、高效、得体的?瓦卡利马僧。但是,本文中我们尝试着去瓦卡利。 组件化编程随着业务量代码的积累,自己突然感觉有点力不从心:代码太容易成为“屎山”了。就拿目前项目的一个场景举例:写一个创建任务的表单组件。听起来很简单是吧?是很简单,但写起来,极度费劲。原因在于,该创建表单项过多,且伴随着各种联动需求。一开始愣头愣脑的上去就是干。写到一半,发现已经写不下去了—->该文件已经超过了 1000 行,变量无数,单单 flag 就十几二十来个,如若再这么写下去,我估计即使勉强实现了需求,后面接手的人都会顺着网线来砍我。此时,我的心情是崩溃且尴尬的。你能够想象,在一个单文件代码超过1000 行游走是什么感觉吗?望着这座自己亲手堆砌的半坐“屎山“,觉得自己有义务寻求一些解决方案,免得被后人耻笑。简单的讲就是一个字:拆。在《重构》这本书的指导下,疯狂拆分这座屎山,当然,这个过程也是无偿加班的过程。最终单文件代码量干到了 300 来行,虽然被拆出去的儿子组件的可复用 ...
vue3备忘录:同前代的优化
Created2025-02-12
优化总结 为了更好支持ts,类型检查,类型推导 优化代码可读性、可维护性(composition API 取代options API) 优化代码可复用性。vue2使用mixin去复用代码逻辑存在俩问题:命名冲突、数据来源不清晰。vue3抄了一把react,也用了hook的方式去复用代码 打包速度更快 diff算法优化。 响应式系统优化。通过proxy解决俩问题:新增删除的数据监听问题。2.对象嵌套过深引起的性能问题.需要注意的是,使用proxy代理整个对象的前提是该对象非嵌套,如果是嵌套的,需要在get再加一层代理逻辑 treeshaking。实际就是删除无用代码
Games104-现代游戏引擎*
Created2025-01-15|游戏杂谈
SEO相关手段
Created2024-12-22|前端剑气双修
目下前端SEO三大核心手段语义化 HTML(让爬虫识别内容结构)用语义标签替代无意义 div,明确内容层级,提升爬虫解析效率。 <h1>2025战国策略手游 - 官方首页</h1> <!-- 唯一h1,定义页面核心主题 --> <main> <!-- 核心内容区 --> <article> <h2>游戏核心玩法:战国七雄争霸</h2> </article> </main> Meta 标签精准配置(提升搜索结果相关性)title/description 含核心关键词,控制字符长度,直接影响搜索展示。 <title>战国策略手游 - 还原真实历史 | 2025公测</title> <!-- 60字符内 --> <meta name="description" content="战国策略手游主打真实历史还原,招募名将、攻城略地,2025年全平台公测!"> <!-- 120字符内 --> JS 渲染适配(解决 SPA 爬虫抓取问题)SPA 页面需让爬虫获取完整内容,避免空页面抓取。如果 ...
canvas离屏渲染详解
Created2024-10-16|性能的考量
本文通过实例介绍下,针对canvas,如何通过离屏渲染做性能优化业务场景某些场景下,我们需要在canvas进行诸多的绘制渲染的操作,当渲染量达到一定程度时,例如绘制的图形个数巨大,渲染耗时大到页面处于暂时性卡死,该如何破?离屏渲染 实现思路在主线程中,通过transferControlToOffscreen,将渲染的工作给到worker处理,以此规避卡死主线程的目的。 演示react核心代码 const drawCanvasOne = () => { if (!canvasOneRef.current || !canvasTwoRef.current) return const canvas:HTMLCanvasElement = canvasOneRef.current const ctx = canvas.getContext('2d'); if (!ctx) return let frameCount = 0; const render = () => { frameCount++; ...
基于opensumi的编辑器问题
Created2024-09-25|性能的考量
本文简单整理下,公司编辑器项目遇到的坑,及对应的解决方案这段时间在整公司的一个web3的编辑器,基于opensumi开发的,主要是支持编写各种合约语言然后编译、部署的一整套流程。总结下过程中遇到的问题。 性能问题这是绝对的大头。比如一个文件10MB+,用户需要编辑,但是用 OpenSumi 打开后,就会出现明显的卡顿(输入文字时光标滞后 0.5-1 秒)、滚动不流畅,甚至偶尔白屏。方案: Monaco Editor 层优化 开启「增量渲染」:设置 editor.maxTokenizationLineLength = 500(超过 500 行的文件仅渲染可视区域,滚动时再渲染其他区域); 禁用大文件语法高亮:通过 OpenSumi 的 IEditorService 扩展,判断文件大小 > 5MB 时,自动切换为「纯文本模式」,关闭语法高亮和代码补全; OpenSumi层 文件缓存策略优化重写 IFileService 的 readFile 方法,大文件采用「流式读取」(createReadStream),而非一次性读取全量内容,类似视频流。 自定义插件与第三方插件加载顺 ...
Webkit系列:第二回(HTML解释器和DOM模型)
Created2024-09-04|Webkit系列
本文将尽可能的解释Webkit的HTML解释器流程及Dom模型相关的知识点在前文介绍从输入url到页面的最终呈现的过程,其中有一步:渲染器进程获取到资源后会将html资源给到html解释器,用来生成dom节点最终生成dom树形结构的对象。那么html解释器具体做了啥呢? 总体流程:字节流被解码成字符流,字符流通过词法分析器被解释成词语,词语通过语法分析器构建成节点,最后节点组合成dom树。 1. 字节 —> 字符收到字节流之后,解释器会根据网页内容所使用的编码格式,将字节流解析成对应的字符串。如果没有特别指定编码格式,直接进入下一步的词法分析。 2. 字符 —> 词语HTMLTokenizerHTMLTokenizer类负责词法解析。输入字符串,输出是一个个的词语。解释完成的词语会经过XSSAuditor安全验证,干嘛的呢?实质就是将一些可能会导致安全问题的词语过滤掉。只有通过安全验证的词语,才会继续下一步。 3. 词语 —> 节点HTMLTreebuilder类的construcTree由词语创建节点过程中,坑会遇到js代码。这就是为什么全局执行的js无法访问dom ...
123…16
avatar
Miles|佚心
Articles
156
Tags
0
Categories
18
Follow Me
Announcement
変わらない闘志,折れない魂
Recent Post
3d点云项目性能测试2025-12-25
大模型领域调研-第一回2025-12-22
博弈论浅谈2025-12-17
借助AI的能力,实现本地知识库(非工具版)2025-09-26
借助AI的能力,实现本地知识库(工具版)2025-09-25
Categories
  • AI3
  • Miscellany6
  • Paperjs专栏7
  • React系列11
  • Rust系列1
  • Webkit系列4
  • Webpack系列8
  • css专栏5
Archives
  • December 20253
  • September 20255
  • August 20252
  • July 20253
  • March 20251
  • February 20251
  • January 20251
  • December 20241
Info
Article :
156
UV :
-
PV :
-
Last Push :
©2020 - 2025 By Miles|佚心
Framework Hexo|Theme Butterfly