打开下面这样一个有很多嵌入块的文档:
嵌入块显示不出来,而且软件的索引功能失效,其他所有引用块都点击不了,而且悬浮窗也显示不出东西,反链面板也全部失效,文档树也全部失效,看似没卡,实际上什么功能都用不了
而且此时软件无法关闭,只能用任务管理器关闭
打开下面这样一个有很多嵌入块的文档:
嵌入块显示不出来,而且软件的索引功能失效,其他所有引用块都点击不了,而且悬浮窗也显示不出东西,反链面板也全部失效,文档树也全部失效,看似没卡,实际上什么功能都用不了
而且此时软件无法关闭,只能用任务管理器关闭
除了嵌入块和引用嵌套时的问题,还遇到一个卡死的场景,不知道两者是不是一样的问题
我把鼠标放在引用块悬浮窗上,之后就卡死了:
测试集:
打开《很多反链》这个文档。
而且反链面板显示的速度非常慢,要等很久才能显示出来,感觉比 1.4.6 的时候慢了不少,不知道这个性能能不能优化一下
回退到 1.4.6,在大库下,还是很顺畅的,大纲响应很快,也复现不出假死的 bug,所以这个假死问题和是小库还是大库应该没直接关系,和列表的写入性能应该也没直接关系,可以比较一下两者大纲响应的速度(其他条件都相同,都是在大库下):
1.4.6:
1.5.1:
在 1.5.1 中,我关闭主笔记本,剩下测试笔记本,也就是在小库下,性能也没问题,大纲响应很快,我不太理解为什么只是打开一个和这个文档无关的笔记本,会影响这个文档的大纲的响应速度 😂
是不是 1.4.7 中修改了什么东西,对性能造成了比较大的影响。像假死问题,以前从来没遇到过,1.4.7 之后经常出现,而且复现假死的方法有很多,一个一个复现排查估计有难度,假死的核心问题个人猜测在于性能,以前版本性能好,各种代码逻辑问题可能都触发不了,1.4.7 后性能变差了,导致很多问题暴露出来了,而性能变差的原因我猜测是 1.4.7 中的某个 issue 造成的
假死情况目前还是存在,最后发给您的复现方法在 1.5.2 中依然能复现
下面这个图中,我只是删除了这个文档中的所有内容,就假死了,我猜测是写入数据一直阻塞着:
过了一段时间,弹出内核连接中断:
关掉思源,重启后,发现文档中的内容没有被删除,应该是没有成功写入数据
复现这个假死问题的一个要点是“大纲的显示与文档真正的内容不匹配”的时候做一些操作,比如说之前的复现方法中,改变标题层级,在大纲还没有反应过来的时候,将列表转换为段落,此时一定会假死,如果大纲此时反应过来了,一般不会假死。
而在小库下,大纲反应很快,因此很难做到大纲与文档真正内容不匹配,也就很难复现。
“大纲的显示与文档真正的内容不匹配”这个当然是表面现象,本质肯定是其他原因。
还有 1.4.7 之后大纲的反应速度在大库下明显比以前慢了很多,这也导致了 1.4.6 之前在大库下也没法复现,而 1.4.7 之后在大库下很容易复现上面的假死问题,说不定这个问题以前版本也存在,只是以前版本大纲反应太快了,没有人有那么快的手速可以在大纲还没反应过来的时候进行其他操作。“大纲的反应速度在大库下慢”这当然也是表面现象,本质应该也是有其他原因。或许可以往提高大纲反应速度的方向修复看看?
ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。
Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。
哪里都缺人,哪里都不缺人。
微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。
Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。
面试造航母,上班拧螺丝。多面试,少加班。
发布对别人有帮助的原创内容是最好的 SEO 方式。
WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。
宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”
MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。
脑图又叫思维导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效,是一种实用性的思维工具。
Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。
Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。
Latke 是一款以 JSON 为主的 Java Web 框架。
CSDN (Chinese Software Developer Network) 创立于 1999 年,是中国的 IT 社区和服务平台,为中国的软件开发者和 IT 从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。
微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。
黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。
A second brain, for you, forever.
Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。
Love2D 是一个开源的, 跨平台的 2D 游戏引擎。使用纯 Lua 脚本来进行游戏开发。目前支持的平台有 Windows, Mac OS X, Linux, Android 和 iOS。
深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。
WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。
Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS / HTML 框架。
心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于