摘要: 目标:tcp长连接的后台服务,重启时,会断开所有客户端的连接。影响范围很大,现想实现重启时,已建立的连接不断开,继续提供服务,直到客户端主动断开连接。而新建立的连接使用更新后的服务。 原理: 1. 更新可执行文件后 2. 向进程发送SIGUSR1信号 3. 进程收到SIGUSR1信号后,停止Acce 阅读全文
posted @ 2023-04-20 11:27 xiaxiaosheng 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 首先简单介绍一下业务场景,物联网设备,关注公众号,免费领取环保袋。 12月8号,也就是昨天上午,突然接到大量客户投诉反馈下单界面点击下单一直在“转圈”,最后超时。紧急排查! 第一步查看网络,服务器ping值正常,然后查询服务器带宽占用率正常。 第二步,查看应用服务器负载,很低,基本没问题。 第三步, 阅读全文
posted @ 2021-12-09 11:49 xiaxiaosheng 阅读(861) 评论(0) 推荐(2) 编辑
摘要: 以下为本人阅读goroutine调度源码随手记的笔记,现在还是一个个知识点的形式,暂时还没整理,先发到这里,一点点更新: 1). runq [256]guintptr P 的runable队列最大只能保存256个G 2). 全局的可执行队列由schedt持有,runq gQueue 3). goro 阅读全文
posted @ 2020-07-29 18:49 xiaxiaosheng 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 虽然Golang的GC自打一开始,就被人所诟病,但是经过这么多年的发展,Golang的GC已经改善了非常多,变得非常优秀了。 以下是Golang GC算法的里程碑: v1.1 STW v1.3 Mark STW, Sweep 并行 v1.5 三色标记法 v1.8 hybrid write barri 阅读全文
posted @ 2020-04-23 10:47 xiaxiaosheng 阅读(367) 评论(0) 推荐(0) 编辑
摘要: 基本操作git status 查看文件处于什么状态 git status -s 带上-s参数,可以以更紧凑的格式输出文件状态信息 git add 开始追踪该文件或者暂存已修改的文件。 .gitignore 文件,忽略一些不希望跟踪的文件 git diff 查看已暂存和未暂存的文件的差异,未暂存的也就 阅读全文
posted @ 2019-12-21 23:30 xiaxiaosheng 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 一、简介 MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。 二、内容描述 既 阅读全文
posted @ 2019-11-30 15:53 xiaxiaosheng 阅读(5068) 评论(0) 推荐(0) 编辑
摘要: 前瞻: ^ab(?=cd)$ 匹配后面带有cd的ab,如果提取出来只有ab 例: abcd-匹配 abef-不匹配 后顾: ^(?<=ab)cd$ 匹配前面带有ab的cd,如果提取出来只有cd 例: abcd-匹配 efcd-不匹配 负前瞻: ^ab(?!cd)$ 匹配后面不带cd的ab 例: ab 阅读全文
posted @ 2019-10-08 18:27 xiaxiaosheng 阅读(1645) 评论(0) 推荐(0) 编辑
摘要: goroutine是go语言的协程,go语言在语言和编译器层面提供对协程的支持。goroutine跟线程一个很大区别就是线程是操作系统的对象,而goroutine是应用层实现的线程。goroutine实际上是运行在线程池上的,由go的runtime实现调度,goroutine调度时,由于不需要像线程 阅读全文
posted @ 2019-07-15 18:57 xiaxiaosheng 阅读(2533) 评论(0) 推荐(1) 编辑
摘要: golang 分配内存主要有内置函数new和make,今天我们来探究一下make有哪些玩法。 map只能为slice, map, channel分配内存,并返回一个初始化的值。首先来看下make有以下三种不同的用法: 1. make(map[string]string) 2. make([]int, 阅读全文
posted @ 2019-07-10 23:33 xiaxiaosheng 阅读(50325) 评论(1) 推荐(7) 编辑
摘要: centos6.5安装supervisor,有很多种方法,但是有很多坑,为了以后不重复踩坑,这里记录一下。 一、如果用yum install supervisor, 默认安装的是2.1.9版本,2.x版本的问题很多,可以启动supervisord进程,但是使用supervisorctl命令会报这个错 阅读全文
posted @ 2019-05-28 15:33 xiaxiaosheng 阅读(2672) 评论(1) 推荐(1) 编辑