alpha 的博客

何晓东 的博客 | alpha blog

一些项目中很完善的生产力工具

一些项目中很完善的生产力工具

工欲善其事,必先利其器。找到好工具,先读文档是最好的。 airflow airflow: 分布式系统任务调度管理系统 对于常规的 crontab 定时任务,需要思考几个问题: 1.分布式系统的情况下,多台机器会不会每台执行一次某个任务? 2.同一台机器上,隔一定时间执行的任务,上次任务未执行完毕,而到了下次任务执行时间,这种情况下会发生什么? 3.如果限制在一台机器上,加锁限定两...

PHP从0-n之间取k个不重复的数

PHP从0-n之间取k个不重复的数

问题是:用代码实现PHP从0-n之间,取k个不重复的数字。 使用 array 系列函数的方法 function getRandomN($max, $num) { $count = 0; $return = array(); while ($count < $num) { $return[] = mt_rand(0, $max); ...

分布式系统全局发号器的几点思考

分布式系统全局发号器的几点思考

为什么需要发号器 在分布式系统中,经常需要对大量的数据、消息、http 请求等进行唯一标识,例如:对于分布式系统,服务间相互调用需要唯一标识,调用链路分析,日志追踪的时候需要使用这个唯一标识。此时需要一个全局唯一的 ID。 需要什么样子的发号器 持久化 要满足长期全局唯一,持久化是必须的,肯定不能让已经使用的再次产生一遍,同时需要强一致性。可用选择存储在 Redis 或者 Etcd ...

高质量的学习方法

高质量的学习方法,程序员如何学习

勿图捷径,冷暖自知,相信时间的力量,终尝所愿。 一些学习方法的正反对比 追求立竿见影、急于求成的人。 正: 心稳如泰山,有条不紊循序渐进。 学习全靠死记硬背的人。 正:背书是理顺了就背得了,自己的话能说得出来。 只有输入,没有输出的人。 正: 输入还要输出,输出,输出。 ...

Nginx日志统计分析常用命令

Nginx日志统计分析常用命令

原文链接:https://opstrip.com/2017/07/04/Common-Commands-for-Nginx-Log-Statistics/ IP相关统计 统计IP访问量 awk '{print $1}' access.log | sort -n | uniq | wc -l 查看某一时间段的IP访问量(4-5点) grep "07/Apr/2017:0[4-5...

Http 500等错误码意义及解决方案

Http 500 501 502 503 504 504分别是什么意思,如何排查?

通用原则是打印日志,查看日志,对症下药 状态码意义 500 错误排查 可能原因: 1.编程语言语法错误,web脚本错误 2.并发高时,因为系统资源限制,而不能打开过多的文件 3.项目涉及到读写文件时,权限不足而抛出错误 解决思路: 1.查看 nginx、php 的错误日志文件,基本能确定情况,自定义日志同时错误偶发的时候,可以将客户请求数据等一起打印,方便复现问题 2.如果...

Python3.7统计薪水数据并生成直方图

Python3.7统计薪水数据并生成直方图

承接上篇文章抓取的数据,然后进行分析岗位数据中最关键的薪资数据,生成直方图,直观展示比例,具体采集并保存数据,请参考上篇文章 待处理的数据如下图示: 步骤: 1.使用 pymysql 查询到 salary 字段数据 2.将数据通过-分裂,然后处理成对应的整型结果,装进 list 3.展示 list 的统计数据并保存图片 代码如下: # -*- coding:utf-8 -*- ...

Python3.7抓取智联招聘岗位列表及详情数据

Python3.7抓取智联招聘岗位列表及详情数据

Python3.7爬取智联招聘数据,观察智联招聘的页面就可以看到是有个接口,获取的数据,直接拼接参数请求接口就可以的,切换头信息和抓取中 sleep 一下,这样能躲过去。执行时候,缺少的包 pip install requests 这样安装就可以 SQL结构 CREATE TABLE `jobs` ( `id` int(11) NOT NULL AUTO_INCREMENT C...

Swoole task详解及结合Redis连接池实现消息推送

Swoole task详解及结合Redis连接池实现消息推送

起源于上一篇利用 Swoole task 实现消息推送,被打脸,重新去学习了一下 Swoole 的 task,他不适合处理长时间阻塞读的场景,高并发了更会搞笑了,原文链接,不考虑场景乱写太xx task 文档中有此说明: 未指定目标 Task 进程,调用 task 方法会判断 Task 进程的忙闲状态,底层只会向处于空闲状态的 Task 进程投递任务。如果所有 Task 进程均处于...

MySQL InnoDB 行存储格式

MySQL InnoDB 行存储格式

InnoDB存储引擎支持四名的格式:REDUNDANT,COMPACT, DYNAMIC,和COMPRESSED。 InnoDB行格式概述 行格式 紧凑的存储特性 增强的可变长度列存储 大索引键前缀支持 压缩支持 支持的表空间类型 所需的文件格式 ...