alpha 的博客

何晓东 的博客 | alpha blog

go 协程,数据竞争及对应解决方法

go 协程,数据竞争及对应解决方法

场景 有个查询结果集的操作,无可避免的需要在循环获取数据,然后将结果集放到 map 中,这个操作在压测的时候,没出现问题,发布到生产环境之后,开始偶现 fatal error: concurrent map read and map write 错误,导致容器重启了。 原因 多个协程同时对 map 进行读写操作,导致数据竞争 测试环境压测未复现是因为单个 pod 常规时间只有一个 CPU,...

Mysql distinct 和 order by 排序混淆的替代方案

场景是:从一堆学习记录中,去重并获取最近学习的几条课程ID,随手就能想到这样的一条SQL语句: select distinct a from table order by updated_at desc limit 5 如果列为 a 的数据有很多条,就会发现最终取到的那条数据可能不是 updated_at 最近的那条数据,因为 distinct 有一次默认的排序,然后生成一个临时表, 然后...

Centos 系统简单排查流量异常问题

Centos 系统简单排查流量异常问题

主要起因是服务器出现了流量异常,感觉也没操作什么,突然的流量异常,一点不科学,就简单排查了一下,记录个笔记 第一步:找到哪个端口产生的异常流量 需要提前安装 iftop 这个工具,用来分析网络实时流量。Mac 系统下可能需要 iftop -i en0 指定网卡,然后进入界面后 p 键打开展示端口。更多精确参数和使用,参考 iftop 流量监控 centos 下直接用命令就行 iftop ...

PHP 实现简单多路归并排序大文件

PHP 实现简单多路归并排序大文件

算是一道常见的面试题引来的,有些大厂也喜欢把这个题当做面试题。 题目:例如有一个 1g 的文件,里面存放这乱序不唯一的数字,如果利用 100m 完成整体排序? 实现过程就是: 先将大文件逐行读取,每 10000 行为一组,然后排序后写入文件中,文件名称类似 t1.txt, t2.txt … 这样的名称,直至读取和拆分完毕整个文件, 然后遍历所有文件,每个文件先读取第一行,放入临...

入门级微服务架构

入门级微服务架构

这是一种极为简单的微服务架构,只是为了从业务上拆分,避免项目演进过程中,难以拆分。每个微服务都是一个单独的项目,不对外暴露接口,仅可被入口项目调用,每个微服务对应自己的数据库,redis db,相关配置文件,redis key 必须使用前缀,未来有大key产生容易分析问题,两个微服务之间可以互相调用接口,不可操作对方数据库,redis等,业务互相独立。队列,日志和监控服务统一到第三方基础...

2021年php常见面试题和答案

2021年php常见面试题和答案

https://github.com/alpha2016/2021php-interview-notes 主要是2021年4-5月本人面试准备和面试中不断完善的知识点,更多是八股文,能应对基础知识类的考察,深入的研究需要日常的积累了,算法类的没有体现在文档中,基本算法类的能在LeetCode上看到,我遇到的除了一线大厂,其他不是很在乎算法的考核,能有思路或者学习过,就可以带过这个问题了。 ...

推荐几个不错的教程,极客时间专栏

推荐几个不错的教程,极客时间专栏

教程小册都看过,价格不是很贵,质量超级高,大佬们觉得不错,可以访问以下链接,通过我的链接购买是8折优惠,我也能得到点返现,重点是学习。(滑稽.gif),这些课程是一个程序员向上进阶的必经之路,我也是在这样的学习。 最后恰饭 阿里云全系列产品/短信包特惠购买 中小企业上云最佳选择 阿里云内部优惠券 极客时间的数据结构与算法是极客上最火的课程,非常推荐,扫码可以8折购买,这个课绝对物...

一些不常用的PHP字符类型检测函数

一些不常用的PHP字符类型检测函数

主要是 Ctype 扩展所提供的函数,用来检测在当前的区域设定下,一个字符或者字符串,是否仅包含指定类型的字符。此类函数用来替代简单的正则验证,效率高于正则验证。参数为字符串,如果给出一个 -128 到 255 之间(含)的 int, 将会被解释为该值对应的 ASCII 字符 (负值将加上 256 以支持扩展 ASCII 字符). 其它整数将会被解释为该值对应的十进制字符串。 Ctype ...

LeetCode 从滑动窗口到初级动态规划解决一类题

LeetCode 从滑动窗口到初级动态规划解决一类题

剑指 Offer 57 - II. 和为s的连续正数序列 输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。 序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。 示例 1: 输入:target = 9 输出:[[2,3,4],[4,5]] 示例 2: 输入:target = 15 输出:[[1,2,3,4,5],[4,5,6],...

阿里云特惠购买,领取优惠券

阿里云特惠购买,领取优惠券

是一次比较好的购买和续费时机了。 欢迎大佬们点击这个 阿里云内部特惠券 双十二特惠活动,优惠购买 https://www.aliyun.com/activity/daily/bestoffer?userCode=0amqgcs9 1核2G1M 84.97元1年 1核2G1M 254.92元/3年 1核2G5M 114元/1年 2核4G3M 295.20元/年 2核4G3M ...