Spring

GBK 和 Unicode 之间的转换问题——"锟斤拷"的由来

本文主要介绍了 GBK 和 Unicode 之间的转换问题。其中,当使用错误的编码方式进行转换时,会产生乱码现象,例如将正常的 GBK 字节流以 UTF-8 解码或将正常的 UTF-8 字节流以 GBK 解码。此外,在某些场景中,由于中途被改变,导致输出的字符串出现乱码,例如在 HTTP 请求回来默认使用 UTF8 生成字符串。

Redis 的缓存穿透、缓存击穿和缓存雪崩问题

缓存穿透(Cache Penetration):在缓存中无法找到所需数据,导致每次请求都直接查询后端数据库。因为缓存中不存在相应的数据,攻击者可以通过发送大量的请求来绕过缓存层,直接访问数据库。 缓存击穿(Cache Breakdown):指的是一个热点 key 在缓存中失效或被清除,而此时又有大量并发请求同时访问该热点 key,导致所有请求都落到后端数据库上。由于瞬间请求集中在同一个 key 上,后端数据库负载剧增,可能导致数据库压力过大。 缓存雪崩(Cache Avalanche):当缓存中的大量 key 在同一时间失效,导致所有相关的请求都落到后端数据库上。与缓存击穿不同的是,缓存雪崩是多个缓存 key 同时失效,并且请求分布较为均匀,但由于缓存无法命中,大量请求被转发到后端数据库,造成数据库负载激增。

curl 于 wget 的区别(下载文件)

url 和 wget 的区别。wget 是个专职的下载利器,简单,专一,极致;curl 可以下载,但是长项不在于下载,而在于模拟提交 web 数据,调试网页等。

MySQL 去重之 distinct

在使用 MySQL 时,有时需要查询出某个字段不重复的记录,这时可以使用 MySQL 提供的 distinct 这个关键字来过滤重复的记录。

GO 语言快速入门

提供给有编程基础、希望快速了解 Golang 的朋友清晰简洁的基础知识点,帮助他们快速入门这门语言。

Learning programming is different from learning a programming language

计算机科学研究的是使用计算机自动解决问题的方法,而不是研究计算机本身。因此,虽然编程语言是帮助我们解决问题的工具,但真正的编程是通过严密的分析和推理来实现的。本文强调不同编程语言之间只有语法的差异。建议初学者从学习伪代码开始,以便更好地培养编程思维,掌握编程语言的核心部分。

Docker 之 Linux CGroup

本文介绍了 Linux CGroup 的基本概念和相关资源子系统,并详细讲解了如何使用 CPU 限制。首先通过在 cgroup 对应的子资源目录下创建目录并往对应文件写入分配值来限制 CPU 占用率,然后运行测试程序并将其 PID 写入相应文件,最后成功限制 CPU 占用率。本文还介绍了如何移出限制,即结束进程或将 pid 写入根 cgroup 的 tasks 文件。