language
-
js 数字金额转中文人民币字符串的方法
通过 JavaScript 把数字的金额比如 12345 转成 中文的金额 一万二千三百四十五元 ,要实现起来非常简单,其他的语言也是相同的道理,思路是一样的。 思路 获取长度,得到对应单位 截取第一个字符,得到中...
-
网页变灰、黑白的的代码示例 HTML CSS filter
在HTML中让网页变黑白、变灰有一个最佳的解决方案,就是通过CSS来调整。 在CSS3中有一个属性filter,翻译中文过滤器的意思,开源调整网页元素包括图像的效果。 网页灰色黑白 这样使整个页面的灰度100%,也就变成灰色、...
-
PHP换行 PHP换行符的使用技巧
PHP换行符 r 是回车符 n 是换行符 这两个符号在很多编程语言里面都可以用来代表换行,在PHP中也是一样的。 $string = "第一行 r n 第二行 n 第三行"; // 需要...
-
just-js 高性能 javascript 运行时
一个非常小的 v8 javascript 运行时,仅适用于 Linux。 在Techempower第21回测试中,获得第一名!!! github地址: https://github.com/just-js/just 构建和运...
1 3468 3 javascript -
彻底搞懂 I/O 多路复用:从 select 到 epoll 的演进与核心底层设计
在现代互联网高并发场景(如 C10K、C10M 问题)中, I/O 多路复用 是支撑高吞吐量服务的基石。无论是 Redis、Nginx 还是 Netty,其底层都离不开这一技术的支持。 从早期的 select 、 poll 到如今...
-
深度剖析:epoll ET 模式下如果不设非阻塞,内核里会发生什么?
在 Linux 高性能网络编程中,**“epoll 的 ET(边缘触发)模式必须配合非阻塞(Non-blocking)Socket 使用”**几乎是一条铁律。 但你是否深入思考过: 如果不这么做,到底会发生什么?底层的内核运转逻辑又是...
-
大白话彻底搞懂 epoll 为什么比 select/poll 强:从内核数据结构到高并发本质
在写高并发网络程序时,大家都知道要用 epoll ,也知道 select 和 poll 在连接数多了之后性能会急剧下降。 但如果面试官深挖一步: “到底是什么底层结构和运行机制的差异,导致了这种性能上的天壤之别?” 如...
-
彻底搞懂 Nginx 的 accept_mutex:它是如何解决早期 Linux 惊群效应的?
在探讨 Nginx 的 accept_mutex 机制之前,我们需要先明确一个背景: “惊群效应”(Thundering Herd)在现代 Linux 内核中,对于单纯的 accept() 系统调用其实早已在内核层解决。 ...
-
Redis 单线程与 Reactor 模型的精密协同机制
在高性能网络编程领域,Redis 常被作为“单线程高性能”的典范。要理解为什么 Redis 的单线程设计在处理高并发网络 IO 时,不仅没有成为瓶颈,反而避免了多线程的延迟副作用,我们需要从 CPU 架构、操作系统内核以及 Redis 自...
-
为什么高并发 Redis 实例启用透明大页(THP)后,写操作延迟会瞬间飙升?
在 Linux 环境下运行高并发 Redis 实例时,如果你阅读过 Redis 的启动日志,经常会看到这样一行显眼的警告: WARNING you have Transparent Huge Pages (THP) enabled ...
-
Linux 大页(HugePages)配置指南:如何精准计算并科学避坑?
在维护大内存服务器(如 128GB、256GB 甚至更高)并运行高并发、重 I/O 的数据库系统(如 PostgreSQL、Oracle、Redis 等)时,Linux 默认的 4KB 内存页往往会成为系统性能的隐形杀手。 当物理内存...
-
Linux 性能调优:如何精准查看特定进程的共享内存被 Swap 占用的比例?
在 Linux 运维和数据库调优(如 PostgreSQL、Oracle 或使用大量共享内存的 IPC 应用)中,我们经常会遇到系统响应突然变慢的情况。这时候,排查 Swap(交换分区) 占用是常规操作。 但很快你会发现一个令人头...
-
Linux 共享内存的深水区:shm_open 与 shmget 会被 Swap 交换吗?
在 Linux 系统底层开发和高性能服务优化中,共享内存(Shared Memory)是实现进程间零拷贝通信的王牌。但许多开发者在设计高并发、低延迟系统时,常常会忽略一个致命的隐患: 当宿主机物理内存不足时,通过 shm_open 或...
-
Docker 容器 OOM 时,共享内存与 Robust Mutex 会发生什么?底层内核机制与 Namespace 影响深度剖析
在 Linux 容器(Docker)环境中,当容器内发生 OOM(Out of Memory)并触发内核 OOM Killer 强杀进程时,多进程协同系统的开发者往往会面临一系列棘手的状态一致性问题。尤其是当系统依赖共享内存(Shared...
-
当进程因 OOM 被杀,共享内存中的 Robust Mutex 真的能 100% 释放吗?剖析内核层面的极致边界
在多进程共享内存的并发设计中, Robust Mutex(健壮互斥锁) 被广泛用于解决“持有锁的进程意外崩溃,导致其他进程永久死锁”的问题。 当一个进程因为内存耗尽(OOM)被内核发送 SIGKILL 强行杀掉时,大家通常认为内...
-
Linux共享内存与Mutex避坑指南 防止死锁与内存损坏的底层技术
在 Linux 进程间通信(IPC)的高性能场景中, shm_open (POSIX 共享内存)配合共享互斥锁(Process-shared Mutex)是极常见的方案。这种方案虽然延迟极低,但由于多个进程拥有独立的虚拟地址空间,且其生命...
-
Linux 共享内存跨进程读写锁:如何系统性搞定进程崩溃后的死锁难题?
在多进程高并发场景下,共享内存(Shared Memory)因其“零拷贝”的特性,堪称进程间通信(IPC)的性能王牌。然而,高收益伴随着高风险。 最让人头疼的问题莫过于: 如果一个进程在持有共享内存的锁时,突然被 kill -9 、...
-
Linux 进程崩溃后,它的 flock / fcntl 文件锁会自动释放吗?
结论先行:会,Linux 内核会强制帮你收尾。 无论是被 kill -9 强杀、段错误(Segmentation fault)崩溃,还是正常 exit 退出,该进程持有的 flock 和 fcntl 文件锁 都会被...
-
Linux 文件锁的终极纠缠:flock、fcntl、lockf 的本质区别与致命陷阱
在 Linux 多进程或多线程开发中,文件锁(File Locking)是一个绕不开的坎。很多人在遇到进程间同步、防止程序多开、或者写入同一日志文件时,会随便搜一段代码,调个 flock 或者 fcntl 就上线了。 结果往往...
-
Go 语言中 File.Fd() 引起的 GC 惨案:flock 锁为何会悄悄失效?
直接给出结论: 是的,绝对会。 这是 Go 语言底层内存管理(垃圾回收)与 Unix 系统调用交互时,一个非常经典且极其隐蔽的“坑”。如果你在获取了 File.Fd() 之后,后续代码中不再直接使用 File 对象本身,那...