2021年4月30日
摘要:一、说明 本文的直接起因是上周公司的一个比赛用到了排列组合,之前没用过,这里记一记。 本文说的排列组合是借助itertools实现,而不是自己写代码实现。 itertools的其他一些函数还是比较有意思的,所以在最后也会做下简单的介绍。 二、排列组合实现 功能需求 总数算法 实现函数 示例 示例输出 阅读全文
posted @ 2021-04-30 17:44 诸子流 阅读(26) 评论(0) 推荐(0) 编辑
摘要:一、说明 1.1 背景说明 刚工作时D运营商多用CentOS6,在很长的一段时间内搞不清这两个问题:为什么yum安装的mysql服务用service命令就能启动了、如果自己rpm安装的或自己写的程序也想改成能用service命令启动那又该怎么做。 后来更多用了CentOS7,CentOS7又改用sy 阅读全文
posted @ 2021-04-30 17:42 诸子流 阅读(21) 评论(0) 推荐(0) 编辑
摘要:一、背景说明 已经记不得最早听说Linux进程之间通过信号进行通信是什么时候了,但这个东西没次听完看完之后都不是很在意,感觉和自己平时使用没什么关系。 最近突然认识到这个结论其实很重要:Linux的进程间在没有人为给他们搭建通信通道时,他们间的通信(或者叫相互作用)都是且只能是通过发送信号进行。 比 阅读全文
posted @ 2021-04-30 17:41 诸子流 阅读(50) 评论(0) 推荐(0) 编辑
  2021年3月15日
摘要:一、说明 1.1 背景说明 关于“代理”,从burpsuite到ss这类正向代理,再从nginx到haproxy这类反向代理,也用了好多年配置了好多年了。在日积月累之下也确认了以下几个问题: 正向代理和反向代理的区别 正常访问路径是client public network server,如果代理服 阅读全文
posted @ 2021-03-15 19:57 诸子流 阅读(97) 评论(0) 推荐(0) 编辑
  2021年3月10日
摘要:一、背影说明 最早开始接解协程应该是看到requests库代码里有await的字眼,接下来曾多次尝试理解协程怎么用,但都失败了。 主要的问题是很多文章上来就是告诉你生成器是什么、原理是什么,我一直觉得原理这东西深入理解时是应该的,但是我作为一个小白我不希望你跟我讲原理,我没耐心也听不懂。 我只希望你 阅读全文
posted @ 2021-03-10 18:39 诸子流 阅读(102) 评论(0) 推荐(0) 编辑
  2020年12月4日
摘要:一、说明 在分析了wireshark使用方法后,其表达式书写基本没什么问题,但在linux上使用的更多是tcpdump。 tcpdump自大学就开始在用了,但一直没搞懂其表达式的书写规律,基本每次使用都得查、每次用后都会忘。 二、安装 yum install tcpdump -y 三、使用 tcpd 阅读全文
posted @ 2020-12-04 13:00 诸子流 阅读(299) 评论(0) 推荐(0) 编辑
  2020年11月3日
摘要:一、说明 自接解Linux服务器后,rsync这个东西就一直若隐若现,但也没人要求帮安装配置什么的所以也就没有研究。 但近来要推弱口令改造,发现挺多就是rsync空口令,搞不懂这是什么东西就很不舒服,所以抽空来研究一下。 二、安装 操作系统:CentOS 7 # 客户端和服务端程序都在rsync一个 阅读全文
posted @ 2020-11-03 20:05 诸子流 阅读(183) 评论(0) 推荐(0) 编辑
  2020年10月21日
摘要:一、动态修改vim配置 反操作基本在原操作前加上no即可。 # 显示行号 set nu #关闭行号 set nonu # 开启粘贴模式 set paste # 关闭粘贴模式 set nopaste 二、静态修改vim配置 2.1 查看vim使用的配置文件 我们可能有时记不清vim使用哪些配置文件,可 阅读全文
posted @ 2020-10-21 20:01 诸子流 阅读(788) 评论(0) 推荐(0) 编辑
  2020年9月14日
摘要:一、背景说明 自从整理了“正则表达式书写规则说明”后,使用正则表达式的地方都基本能应对。唯一搞不清的是不懂为什么re.search的还要用group()才能获取匹配的结果(而且是group这么个感觉和获取字符串完全不搭边的名字),正是没搞清的这点留下了很大的隐患。 上周同事问正则中重复次数只能作用于 阅读全文
posted @ 2020-09-14 19:13 诸子流 阅读(365) 评论(1) 推荐(0) 编辑
  2020年9月1日
摘要:一、背景说明 昨天在看操作日志报表,发现周末只有一两条数据,显得不正常。但一是周末操作本来也不多,二是还有其他事情要做,就没管了。 但周二再看周一还是没数据,同事向上排查发现是上游表就没数据。开始还比较淡定,猜测和之前一样是因为代码catch到异常就直接exit把exit去掉再把这两天的数据补回来就 阅读全文
posted @ 2020-09-01 19:39 诸子流 阅读(3163) 评论(0) 推荐(0) 编辑
摘要:一、说明 压缩和解压缩是日常常用的操作,不管是windows上图形界面的操作,还是linux上用命令来进行压缩解压缩,总的而言都还是比较方便的。 但用代码来实现就没做过,近期也得实现代码压缩与解压缩操作,所以就抽时间来研究一下。 二、zip文件压缩和解压缩实现 import os import zi 阅读全文
posted @ 2020-09-01 19:32 诸子流 阅读(830) 评论(0) 推荐(0) 编辑
  2020年8月26日
摘要:一、说明 我们简单地分析性能,可以通过运行前后的datatime.datatime.now()相减来确定运行两个时间中间的代码花费了多少时间。 但这种做法只能记录单次运行花费的时间、不能方便计算运行多次平均花费的时间,更不能深入分析整个程序各函数所花费的时间。 二、利用timeit分析语句/函数性能 阅读全文
posted @ 2020-08-26 19:03 诸子流 阅读(443) 评论(0) 推荐(0) 编辑
  2020年7月14日
摘要:一、环境准备 项目地址:https://github.com/dvarrazzo/py-setproctitle 安装:pip install setproctitle 二、重命名进程名 2.1 单进程中实现进程重命名 import setproctitle # 获取当前进程名 # Windows可 阅读全文
posted @ 2020-07-14 18:47 诸子流 阅读(1687) 评论(0) 推荐(0) 编辑
摘要:一、说明 之前写了一篇“Python执行系统命令教程”讲了如何执行系统命令。 除了执行系统命令外,我们有时还需要动态地执行一些python代码,有经验的朋友就会知道可以使用内置函数eval实现这一需求,如eval("print(__file__)"),这还是比较简单的。 但如果要动态执行一个函数,讲 阅读全文
posted @ 2020-07-14 18:46 诸子流 阅读(1085) 评论(0) 推荐(0) 编辑
  2020年7月9日
摘要:一、获取文件路径实现 1.1 获取当前文件路径 import os current_file_path = __file__ print(f"current_file_path: {current_file_path}") __file__变量其实有个问题,当文件被是被调用文件时__file__总是 阅读全文
posted @ 2020-07-09 18:38 诸子流 阅读(2365) 评论(0) 推荐(0) 编辑
  2020年6月23日
摘要:一、背景说明 os.walk()应该是当前python中遍历目录最推荐的函数,之前用python写了一个用于收集系统用到的第三方组件的脚本,在测试时使用os.walk()遍历了部分目录,并通过了全网的测试。但在改成遍历根目录后,被业务反馈说脚本占用内存过高导致了内存告警。 在直观感觉上,只遍历目录又 阅读全文
posted @ 2020-06-23 19:48 诸子流 阅读(480) 评论(0) 推荐(0) 编辑
摘要:一、高CPU占用 1.1 使用长时间任务 高cpu很自然会想到的是让操作系统不停地在做事,而不停做事的有做一件很久的事和做死循环两种实现方式。 但是现践来看不管是哪种实现都只能占用一定比例的cpu,在cpu原本空闲的情况下很难使cpu占用到百分之八九十。 # 计算/dev/zero的sha1值 sh 阅读全文
posted @ 2020-06-23 19:43 诸子流 阅读(482) 评论(0) 推荐(0) 编辑
摘要:一、系统资源使用限制的必要性探讨 对于一个脚本,最基础的限制是要限制单进程实例以保证了不会存在多个进程实例、在运行程序主体逻辑前检测系统资源剩余量确保自己不是压夸系统的最后一根稻草、设置程序运行超时时间以保证进程实例不会无休止地运行下去。 进一步,在部署有可用性要求较高的服务的主机中,我们还需要关注 阅读全文
posted @ 2020-06-23 19:39 诸子流 阅读(405) 评论(0) 推荐(0) 编辑
摘要:一、背景说明 以前就感觉进步的速度和博客的数量成正比,所以很长一段时间内想不通为什么很多博客为什么到最后很少甚至不在更新了,直到最近自己也快成为断更的一员。 这段时间其实碰到和解决了挺多典型的问题,但上班高负荷运转下班没心思周末觉得太耗费时间,就导致一直拖着没写。 但Python执行系统命令这个问题 阅读全文
posted @ 2020-06-23 19:17 诸子流 阅读(617) 评论(0) 推荐(0) 编辑
  2020年5月26日
摘要:一、背景说明 说实话自己是做安全的,平时总是给别人代码找茬,但轮到自己写代码有时比开发还不注重安全,其中有安全脚本一般比较小考虑安全那么处理安全问题的代码比重将会大大超过业务代码的问题也有不是专职开发添加一项功能还没开发那么熟练的问题。由于安全脚本一般不是对外开启服务的,所以一般也不会暴出什么问题。 阅读全文
posted @ 2020-05-26 18:55 诸子流 阅读(1173) 评论(0) 推荐(0) 编辑
  2020年3月27日
摘要:一、说明 早上看到Python使用pickle进行序列化和反序列化,然后发现面临的一个获取不到返回值的框架,似乎可以通过在框架中先序列化,然后在外部进行反序列化的方法来实现。就研究了一下pickle库的具体使用。 本身也没什么复杂,一方面还是怕忘记,另一方面是自从学Java听到反序化这个词开始就有一 阅读全文
posted @ 2020-03-27 18:22 诸子流 阅读(1087) 评论(0) 推荐(0) 编辑
  2020年3月21日
摘要:一、背景说明 上上周末看《易经》其封面大概是这么一张图(其实还有各卦对应的五行但一下找不到这样的图),想着为什么一个卦用三层表示呢,辗转反侧突然想到这就是二进制啊,需要三位才能表示八个数(000-111)。 然后又去看占卦解卦原理,感觉就是给定一个输入 经过一定的算法流转 给出一个输出,最后一想这就 阅读全文
posted @ 2020-03-21 22:45 诸子流 阅读(779) 评论(0) 推荐(0) 编辑
  2020年3月20日
摘要:一、说明 从某个时候发现python的字符串变量自带的strip()方法,除了可以删除字符串头尾的空格,还可以用来删除头尾的字符串觉得很好用。也就一直这么用,一直也没发现什么问题。 今天在修复一个bug时使用了strip()方法但从结果看bug并没有按预期被消除,一是没怀疑strip()删除子字符串 阅读全文
posted @ 2020-03-20 20:06 诸子流 阅读(1181) 评论(0) 推荐(0) 编辑
摘要:一、说明 return一直中,每中语言中其没没有很大差别,就不多说了。(shell语言return的是退出状态,可能差别是比较大的,感兴趣可参见“Linux Shell函数定义与调用”) 最早看到yield应该是哪们语言用来调整什么线程优先级的,记不清了,不过那里的yield和python中的yie 阅读全文
posted @ 2020-03-20 20:05 诸子流 阅读(2963) 评论(1) 推荐(0) 编辑
  2020年3月13日
摘要:一、背景说明 最开始不愿意使用Python,一大原因是因为Python2默认使用ASCII编码处理中文可以说是一件痛苦的事情。仅从更换默认编码一项变换,就可以说Python3和Python2不算同一门语言。 Python3更换为默认使用Unicode(utf-8)编码,一直使用下来再没有遇到编码问题 阅读全文
posted @ 2020-03-13 20:12 诸子流 阅读(13827) 评论(1) 推荐(1) 编辑
  2020年2月29日
摘要:一、说明 时间的获取及时间各格式间的转换是比较常用的操作,但一是多种语言经常容易弄混,二是同一种语言同一个功能可能有不同的实现函数,导致每次处理时间经常要百度所以来记录一下。 另外个人真不喜欢同样功能有多种写法的形式,从理想角度说多种实现方式让不同的人都能以其喜欢的方式进行编写;但实际上当你忘记的时 阅读全文
posted @ 2020-02-29 12:15 诸子流 阅读(1184) 评论(0) 推荐(0) 编辑
  2020年2月12日
摘要:一、客户端与python在操作数据库时的差别 在日常使用mysql客户端操作mysql和使用python代码操作mysql时,会发现他们不一致的地放: 在mysql客户端中,不管是执行select还是执行delete等命令,都不需要commit;但在python代码中我们经常要写conn.commi 阅读全文
posted @ 2020-02-12 21:42 诸子流 阅读(999) 评论(0) 推荐(0) 编辑
  2020年2月10日
摘要:一、说明 多线程这个东西,感觉一直以来都是用一次就要学一次,今天需要将之前写的脚本改成线程池的形式又学习了一轮。为了以后方便在这直接记下来。 二、多线程实现 2.1 多线程的基本实现 import threading import time import datetime # 该类是自定义的多线程类 阅读全文
posted @ 2020-02-10 18:36 诸子流 阅读(7809) 评论(3) 推荐(1) 编辑
  2020年2月9日
摘要:一、 说明 1.1 背景说明 记得在学校的时候火的是大数据、云计算和物联网,毕业后网上就开始很多讨论人工智能(还有区块链)。当只是网上听说的时候总觉得比较遥远,心里并没有很大的重视,直到有一天忘了是下午回去上班还是下午下班,和他走在路上的时候他也得到了人工智能。 他说,你说我们算1+1就是按规定1+ 阅读全文
posted @ 2020-02-09 18:27 诸子流 阅读(609) 评论(1) 推荐(0) 编辑
  2020年2月7日
摘要:一、说明 1.1 背景说明 刚工作的时候我对版控制没什么概念,比如听说MariaDB是MySQL的一个分支还是不明白他们的代码到底是不是一样的。 后来弄公司的svn算是有了一些了解,但对于git到现在都不算太会用,每次上传项目到github总是一阵抓狂。写这篇博客的原因也是为了避免自己以后再操作时到 阅读全文
posted @ 2020-02-07 18:38 诸子流 阅读(448) 评论(0) 推荐(1) 编辑
  2020年2月3日
摘要:一、说明 背景一:大学的时候学网络编程,经常看到说socket有AF_UNIX、AF_INET和AF_INET6三个协议族,AF_UNIX一般不用、AF_INET是IPv4的、AF_INET6是IPv6的。基于这种说教一直以来写网络编程,上来协议族就写AF_INET,AF_UNIX是什么怎么用一直没 阅读全文
posted @ 2020-02-03 14:37 诸子流 阅读(843) 评论(0) 推荐(0) 编辑
摘要:一、说明 在前一家公司经常测出一些缓冲区溢出导致进程挂掉的问题,开发经常要求在调试模式进行测试,生成core文件给他们定位问题。 当时的调试模式启动只是修改某些配置文件重新启动即可,所以在很长一段时间内并不知道到底要如何生成core文件及core文件如何使用。 二、配置允许生成core文件 临时配置 阅读全文
posted @ 2020-02-03 14:35 诸子流 阅读(1709) 评论(0) 推荐(0) 编辑
摘要:一、说明 2.1 背景说明 在上家公司的时候想实现应用进程不使用root用户启动,但开发反馈像配置网卡等命令就是得用root来执行的,领导朋友说可以通过setuid解决这个问题。 由于物联网设备毕竟是和硬件强相关的改造动作可能比较大又可能遗漏某些意想不到的地方,并没有着手处理root启动的问题。 所 阅读全文
posted @ 2020-02-03 14:34 诸子流 阅读(3031) 评论(0) 推荐(0) 编辑
摘要:一、说明 自己写shell脚本进行调试时感觉是很烦心的,如果是在Linux服务器上直接echo打印还行但vim用着总没有Windows上的图形界面编缉器顺手,如果在Windows上写好传到Linux服务器上去那每次修改完总要有个文件上传的动作。 所以一直在寻找些类似调试的功能,在此做个记录。 二、直 阅读全文
posted @ 2020-02-03 14:02 诸子流 阅读(347) 评论(0) 推荐(0) 编辑
摘要:一、说明 在上家公司第一次听说”交叉编译“,但开发机环境配置一直没成功,后来也就不了了之了,所以一直不太懂”交叉编译“具体实现上是怎么个形式。 Python在Windows上和Linux上是有些差别的,在Windows上运行得好的程序在Linux上不一定没有问题,而在Windows开发好代码再传到L 阅读全文
posted @ 2020-02-03 14:01 诸子流 阅读(746) 评论(0) 推荐(0) 编辑
  2020年1月26日
摘要:一、背景说明 过年被肺炎困在家里实在无聊,早上想着要做什么的时候突然想到抖音上的代码舞(我也不知道叫不叫这名字)挺有意思,就来研究一番。 首先要知道Python处理图片/音视/视频一般都是pillow/opencv/ffmpeg组合,至于具体代码不知道这也好解决:内事不决问百度,外事不决问谷歌,码事 阅读全文
posted @ 2020-01-26 14:29 诸子流 阅读(1168) 评论(0) 推荐(0) 编辑
  2020年1月4日
摘要:一、说明 最近在做一些主机的自动化检查操作,每次都是定时主动去扫描。这种方式一是实时性不佳,二是扫描时会陡然给中心机很大的压力。后来想有没有一种主机上的配置如果发生变动就能主动上报的机制,如果能主动上报一又解决了实时性问题,二也解决了中心机压力的问题。 二、Shell脚本实现 2.1 基本使用 安装 阅读全文
posted @ 2020-01-04 08:39 诸子流 阅读(3350) 评论(0) 推荐(1) 编辑
  2019年12月28日
摘要:一、背景 上周五有个朋友说,防sql注入都用参数化的方法,但是有些地方是不能参数化的。比如order by后就不能参数化,她有个同事挖sql注入时找有排序功能需求的位置(比如博客常按时间排序),基本十之六七都能挖到sql注入。 某些地方不能参数化,这个问题在以前面试时有被问过,但回答不上来,后来也没 阅读全文
posted @ 2019-12-28 10:28 诸子流 阅读(3458) 评论(0) 推荐(0) 编辑
摘要:一、说明 之前写了“Linux shell脚本单实例模式实现”,python也是日常需要使用的,所以也想来看python中如何实现。 一方面,shell中没有类和类实例的概念,所以一般说“单实例”都是指“单进程实例”,没有设计模式中“单例”的概念;另一方面,由于单进程实例和单例都是强调“唯一一份”所 阅读全文
posted @ 2019-12-28 09:16 诸子流 阅读(1283) 评论(0) 推荐(1) 编辑
  2019年12月22日
摘要:一、说明 1.1 关于可变参数 所谓可变参数,最主要是指传递给被调用函数的参数的个数可以是不固定的。 可变参数应该来说是很常见的,比如C的标准main函数就写成int main(int argc, ** char argv),再比如很常用的print()函数就是最典型的可变参数函数。 但一方面在很长 阅读全文
posted @ 2019-12-22 14:50 诸子流 阅读(980) 评论(0) 推荐(0) 编辑