自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

stpeace的专栏

涛哥不知何许人也,亦不详其姓字。好读书,求甚解。常著文章自娱,颇示己志。忘怀得失,有始有终......

原创 坑踩多了的经验告诉我:能不用new/malloc就尽量不要用------今晚解决了与此相关的两个告警(小确幸)

最近有个模块有内存泄露, 非常影响后台服务质量, 用valgrind也没有分析出原因(可能是分析的时候没有泄露), 就对着代码苦苦review, 发现有个基础业务文件存在内存泄露, 是近半年改动引起的。 代码只进行了new,  但没有delete操作。         我修改了有内存泄露的代码, ...

2017-03-31 00:26:08

阅读数 6416

评论数 2

原创 两个cgi的莫名其妙的core dump问题的解决

在某模块, 有list和card两个cgi, 之前运行得好好的, 但经过一段时间后(期间发了对应的版本), 变得有core dump了, 两个cgi零星地core, 搞得很烦人。 去机器上打开core开关, 抓到了core, 用bt分析下, 发现栈消息没啥价值, 跟业务代码完全对不上。 自己很纳闷...

2017-03-31 00:04:11

阅读数 5919

评论数 0

原创 今天不顺畅啊, 连续写了两个core, 我擦!------ /var/log/messages中会有segment fault提示!

早上接到一个新需求, 开搞。         下午了, 还在塞代码, 塞着塞着, 搞出一个core, 该打的log没有打出来。当时猜测是core了(因为进程号变了), 但没有core文件产生, 于是在root下看/var/log/messages信息, 果然是有segment fault错误, 然...

2017-03-29 00:07:38

阅读数 6091

评论数 2

原创 多核、多进程、多线程对应的英语分别是怎样的?

多核: multiprocessing, 意思就是多重处理, 多个cpu同时干活。         多进程: multiprogramming, 也可以近似认为是multitasking,  意思就是多道程序设计。 单个cpu并发干活, 在不同的进程间切换。         多线程: multit...

2017-03-26 18:21:07

阅读数 12914

评论数 3

原创 gdb attach到已经存在的进程进行在线调试------能获取当前栈的所有变量值!

       不久前, 我们玩过valgrind定位程序的各类内存问题, 当时非常希望valgrind能对一个已经存在的进程进行attach在线调试, 后来看了valgrind的原理, 发现这样不可行。 只能让valgrind重新拉取新进程进行调试。        在前面的文章中, 也介绍了ki...

2017-03-26 13:21:02

阅读数 36500

评论数 1

转载 互联网创业公司黑话指南 | 嘿嘿嘿……

转载地址:http://www.yixieshi.com/74619.html     整理了一下互联网创业公司常用的黑话,供大家参考。   那个,我很严肃的,不许笑。   1. 老板黑话   你来我办公室一下 = 老子又想到了绝妙的idea   得专注用...

2017-03-25 18:55:47

阅读数 6161

评论数 0

原创 又踩了权限之坑------模块扩容引起的

大家对linux权限应该不陌生, 比如可执行文件权限, 读取文件自身的权限。 总之, 在linux中, 权限无处不在。 而且会经常踩坑。         不久前, 有个模块扩容, 原来的4台机器被扩容到8台。 同时, 过了几天, 发现某运营数据下降。 运营数据波动的查询, 通常是很蛋疼的, 想...

2017-03-25 16:26:06

阅读数 5648

评论数 0

原创 用abort函数主动让进程abort/coredump, 有什么用处?------曾用此方法解决过一个低概率开机卡死的问题

之前玩过一段时间的嵌入式设备(如下叙述以手机为例)的软件开发, 当时出现了一个低概率问题: 系统开机会低概率卡死在某个模块中。 这个问题必须解决。 如果有问题的手机发布到用于手中, 假设概率万分之一, 那也非常高了, 想想某手机厂商的电池爆炸事件吧, 那是何等的低概率, 但还是发生了...

2017-03-25 15:55:09

阅读数 7514

评论数 0

原创 用kill -6 pid 主动杀死进程, 使进程abort/coredump, 有哪些用处?

在实际开发中, 要灵活处理各种问题, 今天我们来说说kill -6 命令的使用, 它可以让主动让进程abort/coredump,   来看看一个例子: #include #include using namespace std; struct Point { int x; int y;...

2017-03-25 15:27:04

阅读数 10878

评论数 2

原创 多个问题,多个原因混杂在一起时候, 不可乱对号入座

最近定位一个问题, 实际上是几个问题混杂在一起, 造成的原因也是多样的。 当时, 我看到一个问题现象, 而且也找到了一个bug,  于是, 在同步初步信息的时候, 我就说是这个bug导致了这个现象, 后来发现, 这是扯淡啊。       bug1导致现象1, bug2导致现象2, bug3导致现象...

2017-03-25 13:47:56

阅读数 5609

评论数 0

转载 linux fopen打开大于2G文件出错的解决方法 (踩了一个大坑)

先说点题外话, 最近某模块缩容, 导致单机任务堆积, 超过了2G,  fopen就失败了。 开始怀疑是文件权限问题, 但排查后, 发现不是, 但依然找不到原因, 后来某哥敏锐地发现, 文件的值在2G左右, 于是怀疑这里有问题, 于是上网一查, 果然如此。         我不写了, 直接转载网上文...

2017-03-25 13:01:15

阅读数 8010

评论数 0

原创 某定时任务系统的方案设计------软件系统设计能力很重要

来看这样一个问题:         某账号系统的账号都在unsigned int内, 也就是0-42亿左右。 在这42亿账号中, 有大约1亿账号是相对非常活跃的用户, 用户和用户之间可以建立好友关系(类似于微信那样的好友关系)。 现在要设计一个定时赠言系统, 比如: 今天是2017年3月25日, ...

2017-03-25 11:42:24

阅读数 8164

评论数 2

原创 与本地程序相关的一个bug------要配合利用date命令观察才好!

某哥让我看看如下代码输出什么结果: #include #include #include using namespace std; int getTime(int& iBegin, int& iEnd, int days) { time_t tNow; ti...

2017-03-25 09:30:48

阅读数 5891

评论数 0

原创 如何为一段buffer带上一个头?

学过数据结构的朋友们都应该知道, 在链表中有头结点这一说法, 它是不同于第一结点的。 可以这里理解, 头结点是非业务结点, 而其他结点是业务结点。          很多时候, 我们要在一段buffer前套一个头, 这个头中有这个buffer(或者整个带头buffer)的长度信息, 当然也可以带其...

2017-03-25 09:09:19

阅读数 5768

评论数 0

原创 从“-2”告警跟踪到的问题

前段时间, 业务有告警(错误码“-2”), 仔细跟进去, 发现是: 预计在3月15发出的消息, 到了16号才发出去。           有两个怀疑点:           1. 当时保存任务的时候, 保存到了16号的任务系统中;           2. 当时保存任务的时候, 保存到了15号的任...

2017-03-25 09:04:06

阅读数 5664

评论数 0

原创 定时系统“同时”之坑------理论可行, 实际不一定行; 理论不可行, 换个思路,实际可能会行!

某次, 遇到安全问题, 需要改造技术方案。 两条逻辑捆绑的消息被强行拆开, 由cgi设置一个相同的时间, 两条消息分别带着相同的时间戳进入定时系统。 定时系统在时间戳对应的时间点将两条消息同时转发, 预期同时达到另外一端。           如图:                     然...

2017-03-25 01:35:52

阅读数 5697

评论数 0

原创 又一个乱码问题------ gbk和utf8

晚上用工具发包, 无意发现了一个乱码问题, 大吃一惊, 以为外网有问题。 但这么长时间了, 怎么没有反馈呢? 难道是我下午做的改动影响到了外网? 总之, 不放心, 那就搞个究竟吧。            和某哥一起查了下, 终于查出来呢。 某哥说我查问题的思路有点乱, 反思一下, 确实有点。   ...

2017-03-24 23:56:33

阅读数 5572

评论数 0

原创 用killall命令可能会酿成事故哦!

最近, 用/usr/local/php/bin/php执行了某php文件10次, 开启了10个进程, 准确杀掉, 于是想用killall /usr/local/php/bin/php, 被某哥提醒, 会误杀/usr/local/php/bin/php卡其的其他进程, 想想也是。          ...

2017-03-24 23:42:13

阅读数 6249

评论数 0

原创 被调错误聚集在单个IP上, 可能是主调的问题哦!

在工作中, 如果遇到被调聚集的问题, 一般直接找负责被调模块的同学帮查看和处理。 但最近, 我却懵逼了。         被调负载均衡地提供着服务, 假设有3台机器。 某天, 被调出故障后, 立即剔除其中的某台机器, 剩下2台。 如果主调利用了负载均衡策略获取被调ip, 那自然是没有问题的, 主调...

2017-03-24 23:37:37

阅读数 5644

评论数 0

原创 string的erase方法, 第一次见, 没什么好说的

#include <iostream> #include <string> using namespace std; int main() { string s = "abcdefg"; s.erase(2, 1); cout << ...

2017-03-24 23:22:59

阅读数 5705

评论数 2

原创 解决100个进程莫名其妙逐渐挂掉的问题

上周天遇到这样一个问题: 开启某操作后, 开启了100个进程, 几分钟内, 这些进程逐渐全部挂掉了。 当时无法用root身份登录机器, 无法看到内核log信息。 蛋疼了一整天,  但这个问题几乎必须要在24:00前解决, 几乎是必须。 白天的思路是, 肯定要100个进程才能快速做完啊。 而且之前在...

2017-03-24 00:04:21

阅读数 6640

评论数 0

原创 一个oom(out of memory)问题的定位和“”解决“”

先说下背景: 主调模块有n台机器, 被调模块有6台机器(均衡地提供服务), 他们之间是网络调用。 而且, 被调模块在收到主调模块的网络包后, 先立即回一个响应给主调模块, 然后做自己的事情。 从去年到今年, 一直有个告警, 差不多每两个星期会遇到一次, 主调的log显示, 调用...

2017-03-23 23:43:07

阅读数 7629

评论数 3

原创 再再再说编译时遇到的cannot find -ltest错误

之前已经说过多次cannot find -ltest问题, 最近准备发版本, 在公共的编译机上, 遇到了类似cannot find -ltest, 这个我们已经很熟悉了, 立即在编译界面上搜索ltest呗, 然后找到对应的目录, 编译出libtest.a库即可。 但是, 在编译信息中, 没有搜到。...

2017-03-23 22:49:48

阅读数 5868

评论数 0

原创 谨慎使用map的下表操作

我们都知道, 当map不存在某key时, 如果用下标操作, 便会产生新key。 因此, 要特别注意, 最近一个同事中招了, 如下: #include #include #include using namespace std; int main() { map m; m["k...

2017-03-23 22:41:30

阅读数 5716

评论数 0

原创 按大小统计目录、文件大小的命令:du -a --max-depth=1 | sort -rn | awk '{print $2}' | xargs du -sh

你肯定会遇到这样的时候, linux机器上的磁盘太满了, 想删除一些没用的。 好, 那先用df -h命令查下磁盘情况。 问题是, 怎么知道哪些目录占据了较大的空间呢? 直接用        du -a --max-depth=1 | sort -rn | awk '{print $2}&...

2017-03-21 22:47:41

阅读数 8863

评论数 1

原创 说说kill和kill -9

kill是linux中被误解很深的一个命令, 很多人以为它是杀死一个进程, 其实不然。 关于这一点, 我在之前的博文中已经提到过了。 kill的真实含义是, 向进程发送信息。        kill  1234  是向进程1234发送一个SIGTERM信号。 最近, 我在用valgrind调试程...

2017-03-13 23:59:17

阅读数 9328

评论数 1

转载 valgrind---memcheck工具命令选项

转载地址:http://blog.csdn.net/strategycn/article/details/7865525 --leak-check=:如果设为yes或full,在被调程序结束后,valgrind会详细叙述每一个内存泄露情况,默认是summary,只报道发生了几次内存泄露。...

2017-03-12 20:25:38

阅读数 5616

评论数 0

原创 实例介绍利用valgrind定位变量未初始化的问题

继续介绍valgrind的用途, 看程序: #include #include int main() { int i; if(i == 0) { printf("[%d]\n", i); } return 0; }      一眼就能看出程序的问题, v...

2017-03-12 20:07:35

阅读数 5926

评论数 3

原创 实例介绍利用valgrind定位strcpy/strncpy/strcat/strncat内存重叠问题

和前面的memcpy类似, strcpy/strncpy/strcat/strncat都存在内存重叠问题,  为了简便示意起见, 我用strcpy做例子来说明。 值得注意, 有时候, 在你的环境下, strcpy没有出现如下的问题, 不表明他真的没有问题。 看程序:#include #inclu...

2017-03-12 19:55:39

阅读数 5749

评论数 1

原创 实例介绍利用valgrind定位memcpy内存重叠问题------顺便再次说说memcpy和memmove的区别

继续介绍valgrind的使用, 看程序: #include #include #include int main() { char a[] = "abcdefghijk"; memcpy(a + 1, a, 5); printf("%s\n&q...

2017-03-12 19:25:40

阅读数 6161

评论数 1

原创 实例介绍利用valgrind定位内存非法访问问题

本文继续介绍 valgind的使用, 看程序: #include int main() { int a[100]; a[10000] = 0; return 0; }       用valgrind分析: [root@xxx ~/valgrind-3.8.1/bi...

2017-03-12 19:07:54

阅读数 7067

评论数 0

原创 实例介绍利用valgrind定位内存异常释放问题(double free 和wrong free)

之前介绍过利用valgrind来定位内存泄漏(慢性病, 会导致程序在某个不确定的时刻异常), 本文我们来简要介绍利用valgrind来定位内存的重复释放(急性病, 会报纸程序崩溃)。 看程序: #include #include #include int main() { char *...

2017-03-12 18:48:53

阅读数 8065

评论数 2

原创 实例介绍利用valgrind定位内存泄漏问题

在前面的文章中, 我们简单了解了valgrind工具的用途以及安装, 以便大家能进行实际操作。 在本文中, 我们通过实例来看看如何利用valgrind来定位内存泄漏问题。 先看程序: #include <stdio.h> #include <stdlib.h> char* ...

2017-03-12 17:36:56

阅读数 15569

评论数 6

原创 强大的linux tool------valgrind的简介以及安装

valgrind是linux下的一个强大工具, 其子工具(通过toolname参数来控制)主要有: 1、memcheck:检查众多内存问题,如泄漏、越界、非法指针, 我们将一一介绍。 (如果省略toolname, 则默认是memcheck, 比如执行: ./valgrind ....

2017-03-12 17:05:56

阅读数 16646

评论数 0

原创 oom和oom-killer实例简介(内存用完和进程杀死)------顺便说说linux下的两个重要目录:/proc/kmsg和/var/log/messages

oom就是out of memory, 意思就是内存用完了(内存泄漏可能导致这种现象)。 在linux中, 如果linux机器的内存用完了, 会怎样呢? 很显然, 系统肯定无法正常工作。 linux当然要考虑这种问题, linux会杀死占用内存很大的进程(这些进程后续可能被重新拉取), 从而释放...

2017-03-11 21:29:54

阅读数 12875

评论数 5

原创 linux的pidof命令

第一次看到linux下的pidof命令, 很简单, 就是找出进程名对应的进程号, 试了一下pidof xxx, 靠谱。 如果开启了多个进程, 则返回的是多个进程的进程号。        不过, 又感觉这个命令没有什么卵用, 直接ps -aux | grep xxx 就可以搞定啊!

2017-03-11 20:08:12

阅读数 9501

评论数 3

原创 又是管理端入口引入的错误------类似事情过去发生, 现在发生, 未来还会发生!

程序员都知道, 要用宏定义代替魔鬼数字, 可是, 现在的产品、运营经理们也变的刁了, 他们经常说: 这个值不要写死, 做成可配的! 呵呵!         在这种情况下, 一般要为产品、运营同学做一个管理端, 让他们可以配置对应的数据, 然后程序去读取这个数据, 实现数据的可配置化。 这样就实现了...

2017-03-11 13:30:19

阅读数 5498

评论数 2

原创 两例本地rsp结构体错误的定位------思路!

req = request rsp = response 最近遇到这样一个问题: 客户端请求服务端, 正常地触发了服务端的功能。 但客户端在接受到服务端的回包后, 本地log显示结构体rsp不完整。 定位思路: 先看有没有收到回包, 回...

2017-03-11 12:48:36

阅读数 5856

评论数 0

原创 利用随机数来加快代码调试速度

有的时候, 我们需要知道系统或者代码在不同输入值情况下的结果,  当我们设置一个值后, 编译数分钟, 然后放在系统中跑起来, 看到一种结果。 然后改变一下这个值, 编译数分钟, 然后放在系统中跑起来, 看到另外一种结果。 这是非常浪费时间的。         有的朋友可能要说, 搞个循环啊, 把可...

2017-03-06 01:13:19

阅读数 5611

评论数 0

原创 需要引起重视的gbk<--->utf8

最近开发并自测一个新功能, 我对其中一处的显示不太放心, 但感觉有80%的把握。 不管怎么样, 心里始终不踏实, 那就实际验证一把吧。        验证英语和数字显示的时候, 是OK的, 但是中文显示的时候, 出了问题, 我晕, 果然有bug.  一看就知道, 这是典型的gbk问题。 转换之后,...

2017-03-06 00:49:40

阅读数 5809

评论数 0

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