JS的线程模型和事件循环机制
生命不是安排,而是追求。——弗吉尼亚·伍尔芙 从线程和浏览器底层执行的角度来看,JavaScript 的延迟/休眠功能是如何实现的呢? 线程模型和事件循环JavaScript 的执行环境(如浏览器或 Node.js)是单线程的,这意味着在任何给定的时间点,只有一个线程在执行 JavaScript 代码。为了管理并发操作,JavaScript 依赖于事件循环(Event Loop)。 事件循环事件循环是一个不断检查和处理消息队列的机制。它会执行以下步骤: 检查调用栈(Call Stack),如果调用栈为空,则继续。 检查消息队列(Message Queue),如果消息队列中有待处理的任务,则取出队首的任务并执行。 重复以上步骤。 宏任务和微任务在事件循环中,有两种类型的任务:宏任务(Macro Task)和微任务(Micro Task)。 宏任务:包括整体脚本执行、setTimeout、setInterval、setImmediate(Node.js)等。 微任务:包括 Promise 的回调、process.nextTick(Node.js)、Mutation...
pandoc文件转换
不像葡萄,不像鲜花,不像微微的雪。——博尔赫斯的《山峰上的年轻牧人》 https://pandoc.org/ https://github.com/jgm/pandoc Pandoc - 强大的文档转换工具 在现代软件开发和写作中,许多文档格式共存,从 Markdown 到 LaTeX,再到 HTML、Word 和 PDF。对于需要跨格式转换文档的开发者、作者或学者来说,Pandoc 提供了一种简便且强大的解决方案。作为一个开源工具,Pandoc 能够处理多种格式之间的相互转换,极大地提高了文档处理的效率。 Pandoc 以其强大的文档转换能力,广泛应用于科研写作、电子书出版、博客撰写等领域。在这篇博客中,我们将探讨 Pandoc 的功能、安装方法和使用技巧,帮助你更好地利用这一工具。 什么是 Pandoc?Pandoc 是一个开源的文档转换工具,可以在多种文档格式之间进行转换。Pandoc 支持从一个格式转化为其他格式,例如从 Markdown 转换为 LaTeX、从 HTML 转换为 Word、从 LaTeX 转换为 PDF 等。Pandoc 是一个命令行工具,使用它,你...
raylib
世界上本来就有许多格格不入的事物为了共存而不得不相互接受。——博尔赫斯《沙之书》 https://github.com/raysan5/raylib raylib - 简单且高效的跨平台图形库 在游戏开发和图形应用的开发中,选择合适的图形库至关重要。许多开发者可能会选择大型且复杂的引擎,如 Unreal Engine 或 Unity,然而,对于一些轻量级和简单的项目,或者对于那些刚刚入门游戏开发的开发者,raylib 提供了一个既简单又高效的选择。 raylib 是一个开源的、面向 C 语言的跨平台图形库,旨在帮助开发者快速实现游戏开发和图形应用的需求。它不仅适用于新手开发者,也能够满足更有经验的开发者对性能和扩展性的要求。raylib 不仅为游戏开发提供基础的图形支持,还提供了声音、输入、物理引擎等多种功能,使得开发者可以在一个统一的框架下实现丰富的应用。 什么是 raylib?raylib 是一个简单、轻量、易用的 C 语言图形库,专为学习和制作小游戏、图形应用而设计。它的目标是让开发者能够专注于实现创意,而不是被繁琐的库或框架细节所困扰。 raylib 提供了图形渲染、...
servo
一年好景君须记,最是橙黄橘绿时。——苏轼 https://github.com/servo/servo Servo - 一个高性能、并行化的浏览器引擎 在浏览器技术的演进过程中,浏览器引擎扮演着至关重要的角色。它直接影响着网页的渲染效率、性能以及跨平台的兼容性。如今,随着对高效渲染需求的不断增加,越来越多的开源浏览器引擎开始涌现。其中,Servo 是由 Mozilla 和 Servo 项目团队共同开发的一个高性能并行浏览器引擎,致力于实现更高效、更现代的浏览器体验。 什么是 Servo?Servo 是一个用 Rust 编写的高性能浏览器引擎,旨在提供更高的并行性、更强的安全性以及更快速的网页渲染。Rust 的内存安全和并发性能让 Servo 在处理浏览器引擎中的大量并行计算时具有优势,能够更好地处理现代网页的复杂性。 Servo 的主要目标是: 高效渲染:通过并行化渲染工作,提升网页的加载速度。 现代化架构:采用 Rust 编程语言编写,能够利用 Rust 的性能优势和内存安全特性。 可移植性:通过设计良好的架构,使其能在多个平台上运行。 Web 标准支持:实现现代 Web...
MultiWaveHeader
不像葡萄,不像鲜花,不像微微的雪。——博尔赫斯的《山峰上的年轻牧人》 https://github.com/scwang90/MultiWaveHeader 多重水波纹效果:使用 MultiWaveHeader 实现动态水波效果 如果你正在开发一款 Android 应用,并且想为其加入一些视觉效果,那么动态水波纹可能是一个不错的选择。而今天,我们将介绍一个很棒的库 MultiWaveHeader,它能帮助你轻松实现水波纹效果,并且支持高度自定义,能够适应不同的设计需求。 什么是 MultiWaveHeader?MultiWaveHeader 是一个 Android 控件,可以实现动态的水波效果。它允许开发者定制水波的波形、颜色、速度、方向等多个参数,提供了灵活的配置选项,适合用于各种需要视觉反馈的场景,比如加载动画、刷新控件等。 功能特点 调节进度:可以动态调整水波的进度。 调节速度:支持自定义水波的移动速度。 方向设置:支持设置水波的上下方向。 波浪数量设置:没有波浪数量的上限,你可以自由设置波浪数量。 精细波形定义:支持精确控制每个波形的参数,比如偏移、拉伸、原始速度等。...
Palera1n
那些听不见音乐的人认为那些跳舞的人疯了。——尼采 https://palera.in/ GitHub - palera1n/palera1n: Jailbreak for A8 through A11, T2 devices, on iOS/iPadOS/tvOS 15.0, bridgeOS 5.0 and higher. 越狱(Jailbreaking)一直是 iPhone 用户中颇具争议的话题。虽然苹果公司不推荐越狱,但对于一些技术爱好者和开发者而言,越狱意味着更多的自由,能够绕过苹果的系统限制,进行个性化的系统调整、安装第三方应用等。而 Palera1n 就是一个相对新颖的越狱工具,它专注于通过 checkm8 漏洞进行 iPhone 越狱。 什么是 Palera1n?Palera1n 是一个开源的越狱工具,旨在通过 checkm8 漏洞对苹果设备进行越狱。这个工具的一个突出特点是它支持 iPhone 6s 到 iPhone X(A9 到 A11 设备芯片)的设备,并且不需要系统权限。对于那些希望通过自定义安装应用、调整系统设置或更深入使...
HuTool告别Dromara,转型商业化背后的深层原因?
爱自己是终身浪漫的开始。——奥斯卡·王尔德的《理想的丈夫》 最近,开源界一个重磅新闻引发了广泛的讨论:HuTool宣布告别Dromara组织,正式转移到商业化公司账号。这一消息不仅震动了开源社区,也让我们开始反思开源项目的未来走向,特别是在商业化压力日益加剧的今天。 1. 开源的理想与现实:商业化的抉择在开源社区中,HuTool一直是一个备受推崇的项目。它以简洁、高效的工具库为开发者提供了大量的便利,尤其在Java开发者中间有着极高的声誉。HuTool本身在加入Dromara组织之前,已经有着强大的社区支持和广泛的使用群体。然而,随着项目的不断壮大,HuTool面临的一个问题越来越突出——资金与资源的匮乏。 尽管开源项目有其理想主义的成分,很多开源贡献者也抱有让技术回馈社会的想法,但在实际操作中,长期的开发与维护是需要大量资金与人力资源的。这就让许多曾经致力于开源的项目,最终不得不面对是否要转型为商业化项目的问题。HuTool的退出Dromara,正是一个标志性的事件。 2. 商业化的力量:如何平衡开源与盈利HuTool的转型并非孤例。近年来,越来越多的开源项目都在探索商业化...
fastgpt
如果有一天,你发现我在平庸面前低了头,请向我开炮。——杰克·凯鲁亚克的《在路上》 GitHub - labring/FastGPT: FastGPT is a knowledge-based platform built on the LLMs, offers a comprehensive suite of out-of-the-box capabilities such as data processing, RAG retrieval, and visual AI workflow orchestration, letting you easily develop and deploy complex question-answering systems without the need for extensive setup or configuration. https://tryfastgpt.ai/ FastGPT:高效快速的 GPT 模型部署和服务 随着 GPT 系列模型的普及,越来越多的开发者和企业开始寻求如何在自己的应用中集成这些强大的语言模型。...
scopedb官网首页
我来到这个世界,为了看看太阳和蓝色的地平线。——《城门开》 https://github.com/scopedb/scopedb-site/pull/32 最近忙着给scopedb做了一个最简单的官网首页 这里说到一些细节吧,首先是适配移动端或者说小尺寸屏幕,这里在没有移动端对应UI设计图的情况下,我们采取pc的布局,因此字体单位使用的vw 然后是这张图片,未来可能会改为带动画的,效果会比较惊艳和抢眼 首页tsx如下 123456789101112131415161718192021222324252627282930313233343536373839import React from "react";import styles from './index.module.css';import Layout from "@theme/Layout";import clsx from "clsx";function HomepageBanner(): React.JSX.Element ...
animejs示例
读书使人充实,思考使人深邃,交谈使人清醒。——富兰克林 https://codepen.io/collection/XLebem/ 这里有anime.js实现的不少案例 例如移动端的卡片弹出动画实现: https://codepen.io/aryankap/pen/poERmEM 带进度条的提交按钮: https://codepen.io/andrewmillen/pen/MoKLob 带动画的小图标: https://codepen.io/nat-davydova/details/dyorEMm 夜间模式切换按钮: https://codepen.io/borntofrappe/details/aboPapm 等等
