相关信息

代码量统计

项目代码统计,想要精准统计,需要用到git命令,具体如下:

bash
git ls-files | grep -E '\.(py|sql|sh|cpp|h|c|java)$' | xargs wc -l | tail

背景

为什么使用消息队列

消息队列

问题一:为什么使用消息队列

  • 解耦
  • 异步
  • 削峰

问题2:使用了消息队列会有什么缺点?

  • 系统可用性降低、系统复杂性增加;
    • 系统可用性降低:是指你的系统加一个消息中间件,那消息队列挂了,你的系统将会受到严重的影响,甚至导致整个系统无法正常的提供服务;
    • 系统的复杂性增加:是指引入了消息中间件,必须考虑数据的一致性问题、消息的重复消费,消息的可靠传输(传输的过程中不丢失)等一系列问题,
  • 所以要结合自己的业务场景去引入相关的技术,脱离业务的架构都是耍牛氓。
2025-03-270

流程图的基础学习

image.png

单词统计

  • 完整命令
sh
cat words.txt | tr -s ' ' '\n' | sort | uniq -c | sort -r | awk '{ print $2, $1 }'

shell脚本杀死进程以及子进程

sh
function kill_processes() { local pid=$1 if [ -f /proc/$pid/status ]; then for subpid in $(ps -e o pid=,ppid= | awk -vPID=$pid '{if($2==PID)print $1;}'); do kill_processes $subpid done fi if [ -f /proc/$pid/status ]; then kill -9 $pid fi }

本次说明只涵盖mac的操作

  • command + w 删除当前页面
  • command + option + -> or <- 进行页面左右切换
  • command + 数字跳转到对应的页面
  • command + shift + t 恢复关闭的页面

linux

正则表达式

image.png

背景

在生产环境中,我们使用了 pymysql 和 DBUtils.PooledDB 来管理 MySQL 数据库连接池。由于业务量激增,新增了多个业务实例,最终导致 MySQL 集群以及本地实例的连接数被打满,无法建立新的请求连接。经过排查,发现根本原因是 pymysql 默认开启事务,所有的 SQL 操作(包括查询)都会自动开启事务,并且不会自动提交,导致事务长时间占用连接,无法释放。

问题原因

1. 默认事务行为
  • pymysql 默认 autocommit=False: pymysql 默认不自动提交事务,也就是说,每执行一次 SQL 操作(包括查询)都会启动一个事务。如果在业务代码中没有显式调用 commit() 或 rollback(),那么这个事务就一直处于挂起状态。
2. 连接池连接占用
  • 事务不释放连接: 当一个连接处于挂起事务状态时,即使执行的是查询操作,该连接也不会被释放回连接池。随着大量任务的执行,长时间未提交的事务不断占用连接池中的连接,最终导致连接数打满。
3. 业务实例增加导致压力骤增
  • 新增业务实例后,同时发起的大量请求进一步加剧了连接数的压力,最终导致 MySQL 集群无法创建新的请求连接。