摘要: 服务端程序要求,7*24小时不断服,所以,热升级或者热补丁是常见的非功能性需求。 业界常见方法,采用在jmp跳转的方法,比较容易实现。具体实现方法就是,老的函数(被替换的函数),新的函数(替换函数)。 替换的原理,在老的函数第一个条指令前,加入一个无条件跳转指令,跳转到新的函数,当新的函数retur 阅读全文
posted @ 2020-06-30 19:52 东东安安 阅读(327) 评论(0) 推荐(0)
摘要: 造成的原因主要有两个:1. 程序(*.c,*.h)中使用了中文的标点符号(全角),比如;,},+。改成英文的标点半角符号就行了。甚至有时候空格也会出现类似错误,删掉该空格 重新输入。vim里面做类似替换还是很容易的。 如何看到报错的符号?od -c hello.c > log.txt在log中就能看 阅读全文
posted @ 2020-05-13 13:07 东东安安 阅读(835) 评论(0) 推荐(0)
摘要: 删除某个目录下的所有文件夹,但排除几个文件夹,可以采用如下命令: rm -rf `ls |egrep -v '(x86)'` 阅读全文
posted @ 2020-03-09 15:59 东东安安 阅读(1978) 评论(0) 推荐(0)
摘要: 安装systemtap 使用systemtap之前,安装它,如何安装参考链接1,同时,需要配套安装调试符号表。 centos 64的系统,安装调试符号表: 安装 kernel-debuginfo-common-x86_64-$(uname -r).el7.x86_64.rpm ,kernel-deb 阅读全文
posted @ 2020-01-12 23:49 东东安安 阅读(833) 评论(0) 推荐(0)
摘要: 为什么要做模块化设计 尽管写过很多模块,但一直对于模块化设计,没有一直很清晰的认识,这次学习了软件设计之道,终于从概念上对模块化设计有了一个更清晰的认识。一个软件本质上是完成一个或多个特定的功能,所以,写程序的第一目标是实现需求。既然是实现需求,那是不是随便怎么写,只要完成功能就行呢?不是的,因为, 阅读全文
posted @ 2020-01-01 23:03 东东安安 阅读(402) 评论(0) 推荐(0)
摘要: 原来一直不理解,linux shell下 xargs和 管道的区别: 1、管道在linux shell用得比较广泛,管道常常用来组合两个及以上的命令,共同完成一个功能; 比如:我们要统计某一个文件有多少行: cat temp_subnet_172_2.txt | wc -l 为了完成这个功能,我们用 阅读全文
posted @ 2019-12-21 00:06 东东安安 阅读(401) 评论(0) 推荐(0)
摘要: gdb调试C++ 阅读全文
posted @ 2019-12-08 17:09 东东安安 阅读(302) 评论(0) 推荐(0)