自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 558

原创 python3 csv解析单引号包含特殊字符的字段

python3 csv模块默认解析csv字符串或文件时,默认采用双引号来包裹字符串,采用csv模块解析时需要设置quotechar来指定用来包含特殊字符的字段。python3 csv模块对特殊字符的设置如下(详细文档请参考。一个单字符,用于包住含有特殊字符的字段,特殊字符如。去除了其后所跟字符的任何特殊含义。一个用于 writer 的单字符,用来在。在 3.11 版更改: 不允许空的。在 3.11 版更改: 不允许空的。一个用于分隔字段的单字符,默认为。未指定,且在字段中发现。python3解析样例如下。

2023-12-30 13:43:09 446

原创 linux C 设置redis操作超时

linux系统C语言通过hiredis库来连接操作redis,可以通过redisSetTimeout来设置操作的超时时间。本文通过阻塞连接redis后设置对redis操作的超时,代码如下。对于建立redis连接的超时需要通过。

2023-12-25 20:32:00 689

原创 Linux shell常用命令

shell 常用命令和简单脚本

2023-07-11 20:35:43 513

原创 centos7 docker安装clickhouse

一开始安装使用的docker run命令没有加--privileged,容器启动会报如下错误,加上--privileged后正常启动。clickhouse-server docker hub镜像地址。2. 创建并启动clickhouse容器。1. 下载clickhouse镜像。4. 安装遇到的问题。

2023-06-19 20:35:55 517

原创 centos 7.6源码编译DPDK 19.11.14

在centos 7.6系统上源码编译DPDK 19.11.14版本教程,包括编译依赖安装,编译DPDK,编译运行helloword

2023-04-14 16:41:16 943

原创 Linux系统C++调试利器systemtap定位内存double free

Linux系统通过systemtap定位double free or corruption的问题

2022-07-03 11:40:41 1038

原创 Linux系统C++内存泄漏排查利器systemtap

C++程序产生内存泄漏,在实际的产品中常会碰到,尤其是在valgrind等常用的内存泄漏排查工具不能检测出内存泄漏的地方的时候,往往会比较头疼。通过systemtap动态追踪工具则可有效检测内存泄漏点,其可以在不影响业务运行的情形下完成检测,一个功能非常强大的工具。......

2022-07-02 18:29:30 1033

原创 windows批处理脚本逐行读取文本文档及毫秒级延时

因工作需要开发了一个循环杀死服务的脚本,该脚本执行后会将自己的进程id写到一个文本文件中,在必要的时候需要另一个脚本来杀死该脚本的运行。循环杀死服务的脚本演示了如何获取脚本执行的进程id,...

2021-05-28 19:28:17 1527

原创 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 1512

原创 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 1351

原创 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 786 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 1397

原创 inno setup 禁用复选框

inno setup可以很方便的打包window软件来制作安装程序。我们常需要提供复选框让用户来选择安装部分功能或软件,inno setup提供了TNewCheckBox来创建复选框,但TCheckBox适用于不互斥的选项之间,遇到互斥的选项该如何处理呢?方法一 通过TRadioButton实现多个选项单选。方法二 通过在TCheckBox的OnClick事件中,禁用其他复选框来达到单选的目的。inno setup代码示例如下:procedure ClickWinpcapCh...

2021-05-01 11:27:26 553

原创 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 937

原创 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 507

原创 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 549

原创 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 993

原创 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 578 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 1196

原创 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 4006

原创 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 1923

原创 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 7105 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 906 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 5010

原创 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 1152

转载 牛顿迭代法求解平方根

牛顿迭代法(Newton's method)又称为牛顿-拉夫逊方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x) = 0的根。牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程

2016-09-26 21:30:12 1218 1

原创 使用两个指针判断一个单向链表是否存在环

使用两个指针pfast, pslow从头节点开始,依次向后走,pfast一次两步,pslow一次一步,当两个指针相等,则存在环,否则不存在。当pfast与pslow相遇的时候,pfast经过的环形路程比pslow经过的环形路程一定多了环长的整数倍。从起点走到连接点与pfast和pslow相遇的点继续走到连接点的距离相等。假设从起点到连接点走a步到连接点,记为S(a),设pslow走

2016-09-26 20:04:03 1366

原创 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 1819

原创 Fedora8安装VMware-tools 解决gcc和kernel缺失的问题

以前都是用Ubuntu,安装vmvare-tools基本默认就装好了。

2014-11-18 15:20:43 635

hello demo.zip

1.包含禁用复选框实现多个复选框单选功能 2.通过自定义宏读取文本文件来获取软件版本号 3.通过注册表检测重复安装及重复安装提示卸载 4.检测软件正在运行并提示结束应用程序 5.提供遍历注册表样例 6.提供通过计划任务实现开机自启动 安装步骤可参考https://blog.csdn.net/dongsongz/article/details/116333725 可根据需要修改hello demo.iss来实现自己的功能, 需要安装inno setup软件来编译后运行安装程序。

2021-05-01

银河麒麟v10服务器版 tcpreplay

银河麒麟v10服务器版 tcpreplay可执行二进制文件

2020-12-25

LinuxLive USB Creator 2.9.4.rar

LinuxLive USB Creator 2.9.4, 用于制作U盘启动系统工具。.

2020-08-08

solaris10.zip

solaris安装gcc,g++,gdb等工具 包含以下安装包 libexpat1-2.1.0,REV=2013.01.01-SunOS5.10-i386-CSW.pkg.gz bash-4.3.33,REV=2015.02.15-SunOS5.10-i386-CSW.pkg.gz libgcc_s1-4.8.0,REV=2013.03.29-SunOS5.10-i386-CSW.pkg.gz binutils-2.23.1,REV=2012.12.04-SunOS5.10-i386-CSW.pkg.gz libgmp10-6.0.0,REV=2014.10.29-SunOS5.10-i386-CSW.pkg.gz cas_etcshells-1.50,REV=2015.01.17-SunOS5.10-all-CSW.pkg.gz libiconv2-1.14,REV=2012.11.19-SunOS5.10-i386-CSW.pkg.gz cas_texinfo-1.50,REV=2015.01.17-SunOS5.10-all-CSW.pkg.gz libintl8-0.18.1.1,p,REV=2011.03.15-SunOS5.9-i386-CSW.pkg.gz common-1.7,REV=2012.11.24-SunOS5.10-all-CSW.pkg.gz libintl9-0.19.8,REV=2016.09.07-SunOS5.10-i386-CSW.pkg.gz expat-2.1.0,REV=2013.01.01-SunOS5.10-i386-CSW.pkg.gz liblzma5-5.0.4,REV=2013.01.01-SunOS5.10-i386-CSW.pkg.gz gcc4ada-4.8.0,REV=2013.03.29-SunOS5.10-i386-CSW.pkg.gz libmpc3-1.0.2,REV=2014.03.17-SunOS5.10-i386-CSW.pkg.gz gcc4core-4.8.0,REV=2013.03.29-SunOS5.10-i386-CSW.pkg.gz libmpfr4-3.1.2,REV=2014.03.18-SunOS5.10-i386-CSW.pkg.gz gcc4g++-4.8.0,REV=2013.03.29-SunOS5.10-i386-CSW.pkg.gz libncurses5-5.9,REV=2011.11.21-SunOS5.9-i386-CSW.pkg.gz gcc4gfortran-4.8.0,REV=2013.03.29-SunOS5.10-i386-CSW.pkg.gz libpcap1-1.5.2,REV=2014.01.01-SunOS5.10-i386-CSW.pkg.gz gcc4java-4.8.0,REV=2013.03.29-SunOS5.10-i386-CSW.pkg.gz libpcap_dev-1.5.2,REV=2014.01.01-SunOS5.10-i386-CSW.pkg.gz gcc4objc-4.8.0,REV=2013.03.29-SunOS5.10-i386-CSW.pkg.gz libpython2_6_1_0-2.6.9,REV=2016.03.03-SunOS5.10-i386-CSW.pkg.gz gdb-7.6,REV=2013.08.14-SunOS5.10-i386-CSW.pkg.gz libreadline6-6.3,REV=2015.10.19-SunOS5.10-i386-CSW.pkg.gz gdb-7.7,REV=2014.02.09-SunOS5.10-i386-CSW.pkg.gz libz1-1.2.8,REV=2013.09.23-SunOS5.10-i386-CSW.pkg.gz iconv_stub-1.14,REV=2011.08.08-SunOS5.9-all-CSW.pkg.gz isaexec-0.2,REV=2009.03.26-SunOS5.8-all-CSW.pkg python-2.6.9,REV=2016.03.03-SunOS5.10-i386-CSW.pkg.gz libexpat0-1.95.8,REV=2011.07.15-SunOS5.9-i386-CSW.pkg.gz

2020-06-06

redis源码日志(源码分析)

redis源码日志是对redis源码的分析解读,适用于学习。 介绍了redis是如何实现高并发、海量数据存贮的。 资源是PDF格式,有完整书签,也很清晰。

2019-01-27

在STM32F10xxx上通过USART实现在应用中编程(IAP) 例程

对于大部分基于闪存的系统来说,一项重要的需求就是当这些系统安装在终端产品上后,具有更新固件的能力,这个能力称为在应用中编程(In-Application Programming IAP)。这篇应用笔记的目的就是为创建一个IAP应用程序提供一些通用的指导原则。本文中使用STM3210B-EVAL/STM3210E-EVAL板验证IAP驱动。 STM32F10xxx微控制器可以运行用户指定的固件,在微控制器嵌入的闪存上实现IAP。这个功能可以使用任何通讯协议(如CAN、USART、USB)对片上闪存进行重新编程。示例程序使用了USART作为通信通道。

2015-07-10

在STM32F10xxx上通过USART实现在应用中编程(IAP)

对于大部分基于闪存的系统来说,一项重要的需求就是当这些系统安装在终端产品上后,具有更新固件的能力,这个能力称为在应用中编程(In-Application Programming IAP)。这篇应用笔记的目的就是为创建一个IAP应用程序提供一些通用的指导原则。本文中使用STM3210B-EVAL/STM3210E-EVAL板验证IAP驱动。 STM32F10xxx微控制器可以运行用户指定的固件,在微控制器嵌入的闪存上实现IAP。这个功能可以使用任何通讯协议(如CAN、USART、USB)对片上闪存进行重新编程。示例程序使用了USART作为通信通道。

2015-07-10

STM32F10xxx闪存编程手册.pdf

本编程手册介绍了如何烧写STM32F101xx、STM32F102xx和STM32F103xx微控制器的闪存存储器。为方便起见,在本文中出特别说明外,统称它们为STM32F10xxx。 STM32F10xxx内嵌的闪存存储器可以用于在线编程(ICP)或在程序中编程(IAP)烧写。 在线编程(In-Circuit Programming – ICP)方式用于更新闪存存储器的全部内容,它通过JTAG、SWD协议或系统加载程序(Bootloader)下载用户应用程序到微控制器中。ICP是一种快速有效的编程方法,消除了封装和管座的困扰。 与ICP方式对应,在程序中编程(In-Application Programming – IAP)可以使用微控制器支持的任一种通信接口(如I/O端口、USB、CAN、UART、I2C、SPI等)下载程序或数据到存储器中。IAP允许用户在程序运行时重新烧写闪存存储器中的内容。然而,IAP要求至少有一部分程序已经使用ICP烧到闪存存储器中。 闪存接口是在AHB协议上实现了对指令和数据的访问,它通过对存储器的预取缓存,加快了存储器的访问;闪存接口还实现了在所有工作电压下对闪存编程和擦除所需的逻辑电路,这里还包括访问和写入保护以及选项字节的控制。

2015-07-10

学习OpenCV(第二版)

只有前七章,英文版。Learning_OpenCV_Second_Edition-2013 Early Release Ver2 What Is OpenCV? OpenCV [OpenCV] is an open source (see http://opensource.org) computer vision library available from http://opencv.org. The library is written in C and C++1 and runs under Linux, Windows, Mac OS X, iOS, and Android. Interfaces are available for Python, Java, Ruby, Matlab, and other languages. OpenCV was designed for computational efficiency with a strong focus on real-time applications: optimizations were made at all levels, from algorithms to multicore and CPU instructions. For example, OpenCV supports optimizations for SSE, MMX, AVX, NEON, OpenMP, and TBB. If you desire further optimization on Intel architectures [Intel] for basic image processing, you can buy Intel’s Integrated Performance Primitives (IPP) libraries [IPP], which consist of low-level optimized routines in many different algorithmic areas. OpenCV automatically uses the appropriate instructions from IPP at runtime. The GPU module also provides CUDA-accelerated versions of many routines (for Nvidia GPUs) and OpenCL-optimized ones (for generic GPUs). One of OpenCV’s goals is to provide a simple-to-use computer vision infrastructure that helps people build fairly sophisticated vision applications quickly. The OpenCV library contains over 500 functions that span many areas, including factory product inspection, medical imaging, security, user interface, camera calibration, stereo vision, and robotics. Because computer vision and machine learning often go hand-in-hand, OpenCV also contains a full, general-purpose Machine Learning Library (MLL). This sub-library is focused on statistical pattern recognition and clustering. The MLL is highly useful for the vision tasks that are at the core of OpenCV’s mission, but it is general enough to be used for any machine learning problem.

2014-09-21

智能家居 客户端

对于摄像,我采用的是开源的mjpg-streamer来发送摄像头采集的图像。用户可通过客户端来观看视频,可查看家中实时的温湿度。客户端可以通过摄像头拍照,运行在PC上的客户端可以录制视频。

2014-08-04

局域网聊天系统(lanqq)

开发一个局域网聊天系统,支持注册、登陆、改密、私聊,登陆后显示在线、离线好友列表,实现了离线消息。使用mysql来保存用户信息。

2014-08-04

基于C语言的电子词典设计

首先将存储在磁盘中的单词文本读入内存,再用归并排序法建立索引,运用二分查找来查找单词。对文本词库,我们还建立了二进制词库,用户可选择一种词库查找单词。若词库中没有要查的单词,用户可建立自己的词库,并添加新词。

2014-08-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除