- 博客(30)
- 资源 (12)
- 收藏
- 关注
原创 python3 统计redis中每个DB占用的内存大小
redis可以通过dbsize命令来查看当前选择的DB的key的数量,有时候仅仅看key的数量可能还不能直观反映哪块业务数据占用内存多,redis也没有直接的命令可以查询每个DB占用的内存大小。这时候通过python开发一个脚本统计每个DB占用的内存大小,可以大致分析是哪些类型业务占用了过高内存。以下是一个统计redis内存并删除占用内存超过10kB的key的样例。在一些业务中,会使用多个DB来缓存不同类型的业务数据,有时候redis占用内存过高,造成服务异常。安装python3 redis依赖。
2024-01-15 20:27:53
890
原创 python3 csv解析单引号包含特殊字符的字段
python3 csv模块默认解析csv字符串或文件时,默认采用双引号来包裹字符串,采用csv模块解析时需要设置quotechar来指定用来包含特殊字符的字段。python3 csv模块对特殊字符的设置如下(详细文档请参考。一个单字符,用于包住含有特殊字符的字段,特殊字符如。去除了其后所跟字符的任何特殊含义。一个用于 writer 的单字符,用来在。在 3.11 版更改: 不允许空的。在 3.11 版更改: 不允许空的。一个用于分隔字段的单字符,默认为。未指定,且在字段中发现。python3解析样例如下。
2023-12-30 13:43:09
812
原创 linux C 设置redis操作超时
linux系统C语言通过hiredis库来连接操作redis,可以通过redisSetTimeout来设置操作的超时时间。本文通过阻塞连接redis后设置对redis操作的超时,代码如下。对于建立redis连接的超时需要通过。
2023-12-25 20:32:00
888
原创 centos7 docker安装clickhouse
一开始安装使用的docker run命令没有加--privileged,容器启动会报如下错误,加上--privileged后正常启动。clickhouse-server docker hub镜像地址。2. 创建并启动clickhouse容器。1. 下载clickhouse镜像。4. 安装遇到的问题。
2023-06-19 20:35:55
902
原创 centos 7.6源码编译DPDK 19.11.14
在centos 7.6系统上源码编译DPDK 19.11.14版本教程,包括编译依赖安装,编译DPDK,编译运行helloword
2023-04-14 16:41:16
1239
原创 Linux系统C++调试利器systemtap定位内存double free
Linux系统通过systemtap定位double free or corruption的问题
2022-07-03 11:40:41
1158
原创 Linux系统C++内存泄漏排查利器systemtap
C++程序产生内存泄漏,在实际的产品中常会碰到,尤其是在valgrind等常用的内存泄漏排查工具不能检测出内存泄漏的地方的时候,往往会比较头疼。通过systemtap动态追踪工具则可有效检测内存泄漏点,其可以在不影响业务运行的情形下完成检测,一个功能非常强大的工具。......
2022-07-02 18:29:30
1204
原创 windows批处理脚本逐行读取文本文档及毫秒级延时
因工作需要开发了一个循环杀死服务的脚本,该脚本执行后会将自己的进程id写到一个文本文件中,在必要的时候需要另一个脚本来杀死该脚本的运行。循环杀死服务的脚本演示了如何获取脚本执行的进程id,...
2021-05-28 19:28:17
1681
原创 inno setup 通过windows计划任务实现开机自启动
windows计划任务可以实现开机自启动,且是随系统启动,开机用户不登录就启动了。代码示例:function SetStartOnBoot():Boolean;var startCmd: String;var ErrorCode: Integer;begin //加上/F可以在计划任务已存在的情况下强制更新 startCmd := Format('/c schtasks /create /TN %s /RU SYSTEM /SC ONSTART /TR %s /F', ['{#MyA
2021-05-01 21:57:38
1649
原创 inno setup 通过注册表检测重复安装及重复安装提示卸载
inno setup可以在安装时写注册表,在卸载时删除注册表。重复安装检测可以通过检查注册表是否存在特定的键。代码示例如下:function CheckIsInstalled(): Boolean;var UnInstallExe, strCmdUnInstall, errorStr: String;var ErrorCode: Integer;var Subkeys: TArrayOfString;var Subkey: string;var I: Integer;var u
2021-05-01 21:51:07
1670
原创 inno setup 遍历注册表
inno setup遍历注册表某个路径如HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall下包含指定字符串的key示例如下://out表示出参function CheckIsInstalledFromRegistry(out uninstallKey: String):Boolean;var Names: TArrayOfString; I: Integer; RootKey: Integer; Subkey: Stri
2021-05-01 13:01:21
977
1
原创 inno setup 通过自定义宏实现读文本文件获取软件版本号
很多时候我们开发的软件本身已经有版本号文件了,那么如何在inno setup中使用这个版本号呢?inno setup通过新建一个安装向导会产生一个版本号,需要通过自定义宏在[Setup]段中使用从文件中获取的版本号。代码示例:#define RetrieveVersion(str FileName) \ Local[0] = FileName, \ Local[1] = FileOpen(Local[0]), \ Local[2] = FileRead(Local[1]), \
2021-05-01 12:02:52
1909
原创 inno setup 禁用复选框
inno setup可以很方便的打包window软件来制作安装程序。我们常需要提供复选框让用户来选择安装部分功能或软件,inno setup提供了TNewCheckBox来创建复选框,但TCheckBox适用于不互斥的选项之间,遇到互斥的选项该如何处理呢?方法一 通过TRadioButton实现多个选项单选。方法二 通过在TCheckBox的OnClick事件中,禁用其他复选框来达到单选的目的。inno setup代码示例如下:procedure ClickWinpcapCh...
2021-05-01 11:27:26
694
原创 windows TCP侦听端口在进程死亡后依旧占用的问题
最近在开发一个业务模块的在线升级时,在windows平台遇到一个诡异的问题。旧的进程已经死亡了,但是通过netstat查看,死亡进程依旧占用了TCP侦听端口。从上图可见,2776进程占用12345端口,但通过tasklist查看,进程已经消亡了。百思不得其解,通过仔细观察升级过程,发现在升级后会有cmd.exe进程一直存在不退出。于是便想到去查看这个cmd.exe到底在执行什么不退出。windows可以通过wmic where caption="cmd.exe" get caption,
2021-04-18 12:36:25
1166
原创 linux fork子进程调用local_time导致子进程hang住的问题
近期在开发一个业务模块的功能时,增加了一个线程,结果导致业务进程刚启动就hang住,卡在local_time()的调用上。该业务模块有两个进程,进程A(在此增加了线程)通过fork启动进程B,进程A/B都会调用local_time()来打印日志。通过gdb跟踪进程B调用栈如下:(gdb) info threadId Target Id*1 Thread 0x1de08c0 (LWP 97239) ****************************...
2021-04-12 21:08:23
649
原创 red hat在终端通过nohup启动的后台进程,exit退出终端后,后台进程被systemd杀死的问题
通过ssh终端登录到一个red hat环境,通过nohup启动一个后台服务,在终端敲下exit命令后,后台服务被systemd杀死。原因暂时未知,解决办法是通过注册systemd服务来启动后台服务。注册systemd服务如下:echo -e "[Unit]\nDescription=hello\n\n[Service]\nType=simple\nRestart=yes\nExecStart=/root/hello\n\n[Install]\nWantedBy=multi-user.target
2021-03-23 17:24:16
617
原创 centos yum 离线安装
1.mkdir packages2.cd packages/3.yum install --downloadonly --downloaddir=. createrepo4.使用yum install --downloadonly --downloaddir=. [rpm package name]下载需要的rpm包5.rpm -ivhU deltarpm* rpm -ivhU libxml2* rpm -ivhU python-deltarpm* rpm -ivhU createrep...
2020-09-11 14:50:01
1056
原创 uos 安装perf
root@:~#apt install -y linux-perfroot@:~# perf listList of pre-defined events (to be used in -e): branch-misses [Hardware event] bus-cycles [Hardware event] cache-misse...
2020-08-15 22:42:42
751
1
原创 python3 pip3制作离线安装包
1.生成本机已安装包清单pip3 freeze > requirements.txt2.下载安装包mkdir pkgapt install -y libffi-dev libcairo2-dev python3-pip ethtoolpip3 download -r requirements.txt -d ./pkgtar zcf pip3-pkg.tar.gz ./pkg执行pip3 install --no-index --find-links=./pkg -r requi
2020-07-31 17:04:04
1286
原创 pip3 使用问题小记
1. Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-sj03j16p/lxml/# pip3 install lxmlCollecting lxml Using cached https://files.pythonhosted.org/packages/2c/4d/3ec1ea8512a7fbf57f02dee3035e2cce2d63d0e9c0ab8e4e376e01452597.
2020-07-31 09:06:14
4176
原创 ubuntu 制作本地源 离线安装
对于一些不能访问Internet的服务器,需要通过离线安装软件。通过制作ubuntu本地源,可以实现通过apt install来离线安装软件。1.首先需要在能访问网络的机器上,将需要安装的软件包及依赖下载到本地。以安装expect为例:mkdir packagescd packagesapt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks
2020-07-21 19:40:16
2495
原创 UOS arm换源
清华源mv/etc/apt/sources.list /etc/apt/sources.list.bak备份原始源echo "deb https://mirror.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main restricted universe multiversedeb https://mirror.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted universe...
2020-07-21 15:02:45
7693
1
原创 solaris10安装gcc,g++,gdb等开发工具
solaris10自带的gcc/g++版本较低,对于C++11不支持,所以需要安装高版本的gcc/g++。准备好以下安装包:bash-4.3.33,REV=2015.02.15-SunOS5.10-i386-CSW.pkg libgcc_s1-4.8.0,REV=2013.03.29-SunOS5.10-i386-CSW.pkgbinutils-2.23.1,REV=2012.12.04-SunOS5.10-i386-CSW.pkg libgmp10-6.0...
2020-06-06 16:49:06
1116
1
原创 linux C 编译错误 error: ‘EOWNERDEAD’ undeclared (first use in this function)
error: ‘EOWNERDEAD’ undeclared (first use in this function)error: ‘ENOTRECOVERABLE’ undeclared (first use in this function)在linux 使用pthread_mutex_lock()判断返回值是否为EOWNERDEAD,编译出现错误。包含头文件#
2017-11-18 22:41:45
5154
原创 ubuntu12.04 安装libxml2 使用libxml2编译
直接通过apt-get安装,非常方便#sudo apt-get install libxml2#sudo apt-get install libxml2-dev默认是安装在/usr/include/libxml2 如果需要编译一个.c文件,命令如下gcc obj.c -o obj -I /usr/include/libxml2 -L
2016-10-02 23:52:10
1228
转载 牛顿迭代法求解平方根
牛顿迭代法(Newton's method)又称为牛顿-拉夫逊方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x) = 0的根。牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程
2016-09-26 21:30:12
1410
1
原创 使用两个指针判断一个单向链表是否存在环
使用两个指针pfast, pslow从头节点开始,依次向后走,pfast一次两步,pslow一次一步,当两个指针相等,则存在环,否则不存在。当pfast与pslow相遇的时候,pfast经过的环形路程比pslow经过的环形路程一定多了环长的整数倍。从起点走到连接点与pfast和pslow相遇的点继续走到连接点的距离相等。假设从起点到连接点走a步到连接点,记为S(a),设pslow走
2016-09-26 20:04:03
1404
原创 2017网易秋招笔试题 跳石板 C/C++
小易来到了一条石板路前,每块石板上从1挨着编号为:1、2、3.......这条石板路要根据特殊的规则才能前进:对于小易当前所在的编号为K的 石板,小易单次只能往前跳K的一个约数(不含1和K)步,即跳到K+X(X为K的一个非1和本身的约数)的位置。 小易当前处在编号为N的石板,他想跳到编号恰好为M的石板去,小易想知道最少需要跳跃几次可以到达。例如:N = 4,M = 24:4->6-
2016-09-15 19:48:32
1845
原创 Fedora8安装VMware-tools 解决gcc和kernel缺失的问题
以前都是用Ubuntu,安装vmvare-tools基本默认就装好了。
2014-11-18 15:20:43
678
hello demo.zip
2021-05-01
solaris10.zip
2020-06-06
redis源码日志(源码分析)
2019-01-27
在STM32F10xxx上通过USART实现在应用中编程(IAP) 例程
2015-07-10
在STM32F10xxx上通过USART实现在应用中编程(IAP)
2015-07-10
STM32F10xxx闪存编程手册.pdf
2015-07-10
学习OpenCV(第二版)
2014-09-21
智能家居 客户端
2014-08-04
基于C语言的电子词典设计
2014-08-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人