MP批插优化
我虽不富甲天下,却拥有无数个艳阳天和夏日。——梭罗 看到这篇文章 https://mp.weixin.qq.com/s/NkP6kND6wQZqTd_gIuaYAw MyBatisPlus 高并发场景下的ID生成优化:分布式序列号服务实践突破分布式ID的性能瓶颈某电商平台在促销活动期间面临订单创建峰值压力,使用MyBatisPlus默认的雪花算法生成ID时,出现以下问题: 时间戳精度不足导致ID碰撞率升高(单机QPS超5000时) 服务器时钟回拨引发的批量插入失败 长ID对存储空间的额外消耗(18位 vs 传统13位) 压力测试显示,在高并发场景下单节点生成ID的吞吐量上限为1.2万/秒,成为系统瓶颈。通过改造ID生成机制,我们实现了单机5万/秒的ID生成速度,同时将存储空间压缩40%。 混合式ID生成架构设计技术方案对比 方案类型 吞吐量 碰撞概率 时钟依赖 实现复杂度 原生雪花算法 1.2万/s 0.01% 强依赖 低 UUIDv4 无限 理论无碰撞 无依赖 低 数据库序列 800/s 无 无 中 混合分段...
vue-loading-overlay
只要有一双真诚的眼睛陪我哭泣,就值得我为生命受苦。——罗曼·罗兰的《欣悦的灵魂》 https://github.com/ankurk91/vue-loading-overlay demo: https://ankurk91.github.io/vue-loading-overlay/ Vue Loading Overlay:简洁高效的加载指示器组件介绍在现代Web应用中,为了提升用户体验,加载指示器是一个必不可少的组件。尤其在处理异步请求或其他耗时操作时,加载指示器可以有效地告知用户当前的状态。Vue Loading Overlay 是一个为 Vue.js 应用提供全屏加载指示器的组件,简洁高效,易于集成和使用。 本文将介绍什么是 Vue Loading Overlay、其主要功能及其使用方法,并展示如何在项目中集成和使用这个组件。 什么是 Vue Loading Overlay?Vue Loading Overlay 是一个 Vue.js 组件,用于在页面加载时显示全屏或局部加载指示器。它可以轻松集成到 Vue.js 项目中,通过简单的配置和调用即可实现加载指示器的显示和隐...
iceberg
任凭人群来往,任凭钟声响起,小孩啼哭——决心好好过上一天。——梭罗的《瓦尔登湖》 https://github.com/apache/iceberg https://iceberg.apache.org/ Apache Iceberg:现代数据湖的高性能格式介绍在大数据处理和分析的领域,Apache Iceberg 是一个现代化的高性能格式,专为处理海量分析表而设计。Iceberg 通过将 SQL 表的可靠性和简洁性带入大数据,使得 Spark、Trino、Flink 等引擎能够更高效地进行数据处理。本文将介绍什么是 Apache Iceberg、其主要功能及其生态系统,并指导你如何开始使用它。 什么是 Apache Iceberg?Apache Iceberg 是一种用于大规模分析数据表的高性能开源格式。它由 Netflix 发起,并在 2018 年贡献给 Apache 软件基金会。Iceberg 的设计旨在解决现有大数据格式在处理大规模数据时的挑战,使数据湖的操作更加高效和可靠。 Iceberg 项目托管在 GitHub 上,由来自各大公司的开发者社区积极维护。Icebe...
ohmyzsh
我必须将自己的思想和言语用篱笆围起来,以免猪和游荡者闯入我的花园。——尼采的《查拉图斯特拉如是说》 https://ohmyz.sh/ https://github.com/ohmyzsh/ohmyzsh 一个强大的终端管理工具——Oh My Zsh。如果你是一个开发者或者频繁使用命令行的用户,那么Oh My Zsh将会极大地提升你的工作效率和终端体验。 什么是 Oh My Zsh?Oh My Zsh 是一个开源的、社区驱动的 Zsh 配置管理框架。它旨在让你的终端更漂亮、更高效,并且拥有强大的自定义能力。它包含了许多插件和主题,可以轻松地进行扩展和配置。 安装 Oh My Zsh安装 Oh My Zsh 非常简单。你只需要在终端中运行以下命令: 1sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" 或者使用 wget: 1sh -c "$(wget https://raw.githubuserconten...
Discourse
希望我们是一对和善的老伴,住在爱尔兰海边小岛一类的地方,翻阅我们一辈子胡闹的剪贴簿。——约翰·列侬 https://github.com/discourse/discourse https://www.discourse.org/ 在在线讨论和社区论坛的领域,Discourse 作为一个现代化、强大且灵活的平台脱颖而出。Discourse 是一个开源的论坛软件,旨在促进有意义的对话,并因其独特的功能和易用性而广受欢迎。本文将探讨什么是 Discourse、其主要功能以及如何开始使用它。 什么是 Discourse?Discourse 是一个开源的讨论平台,用于建立在线论坛、聊天室和邮件列表。由 Jeff Atwood、Robin Ward 和 Sam Saffron 于 2013 年创建,Discourse 旨在通过采用现代的 Web 技术和设计理念来现代化论坛软件。 该软件托管在 GitHub 上,由开发者社区积极维护。Discourse 的后端使用 Ruby on Rails 编写,前端则使用 Ember.js,使其成为一个强大且可扩展的解决方案,适用于各种讨论需求。 D...
animejs简单示例
乖孩子的路,疯子的路,五彩的路,浪荡子的路,任何的路。——杰克·凯鲁亚克的《在路上》 GitHub - juliangarnier/anime: JavaScript animation engine https://animejs.com/ 使用Anime.js这个强大的JavaScript动画库来实现一个简单的动画效果。我们将通过一个示例代码来展示如何使用Anime.js使一个div元素从透明变为不透明,并且从左向右移动50像素。 示例代码下面是我们的完整HTML代码: 1234567891011121314151617181920212223242526272829303132<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> body { back...
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...
