自定义博客皮肤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的专栏

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

原创 tars源码漫谈第5篇------tc_epoller.h/tc_epoller.cpp(epoll基本操作的封装)

       马上就是4月1日了, 愚人节。 但2018年已经过了1/4,   好快, 这不是愚人的。       在tars代码中, 目前还没有看到select/poll的痕迹, 光芒被epoll遮挡了。       我们知道, epoll也就三个常用的api,  epoll_create, e...

2018-03-31 23:59:46

阅读数 4123

评论数 0

原创 tars源码漫谈第4篇------tc_socket.h/tc_socket.cpp(socket基本操作的封装)

     看优秀的源代码来学socket编程, 这是很好的方式, 来看下tc_socket.h/tc_socket.cpp .     TC_Socket_Exception继承了TC_Exception, 没啥好说的。 TC_SocketConnect_Exception也不需要说。      ...

2018-03-31 23:55:21

阅读数 4195

评论数 0

原创 tars源码漫谈第3篇------tc_ex.h/tc_ex.cpp(bt不是变态)

     tc_ex中有异常类TC_Exception, 类中没有什么太多的功能, 对理解整个tars的作用不大。 尽管如此, 还是来看看如下函数:void TC_Exception::getBacktrace() { void * array[64]; int nSize = b...

2018-03-31 23:42:16

阅读数 3565

评论数 0

原创 tars源码漫谈第2篇------tc_common.h/tc_common.cpp(模板特化实现字符串的相关操作)

      tc_common是很common的, 里面就是一些很common的功能。 很多软件开发, 可以直接用这些common代码, 省事,放心。      里面的代码很简单, 来看一个模板特化的代码实例:template <> string TC_Common::...

2018-03-31 23:37:19

阅读数 4087

评论数 0

原创 tars源码漫谈第1篇------tc_loki.h (牛逼哄哄的loki库)

        loki库是C++模板大牛Andrei写的, 里面大量运用模板的特性, 而tc_loki.h借用了loki库的部分代码, 形成了一个基本的文件tc_loki.h, 来看看:#ifndef __TC_TYPETRAITS_H #define __TC_TYPETRAITS_H #i...

2018-03-31 23:25:38

阅读数 4424

评论数 0

原创 tars源码漫谈第0篇------getting to know tars(初识tars)

       一个偶然的机会, 遇到了tars开源框架, 感觉很强大,花了1天的时候,把tars跑起来了, 运行良好,遂打算来研究下这个开源框架。 其实, 称不上高大上研究, 说是自我唠嗑更为合适。       据tars官方介绍:        Tars这个名字取自于电影"星际穿越&q...

2018-03-31 23:22:17

阅读数 4745

评论数 2

原创 linux上进程打开句柄最大值是1024,但为什么epoll号称能管理上百万句柄呢?

        linux上进程打开句柄最大值是1024,  这只是默认情况而已:ubuntu@VM-0-15-ubuntu:~$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -...

2018-03-31 21:34:36

阅读数 4025

评论数 0

原创 C++模板特化之初见

       模板具有通用功能,怎么定制呢? 特化即可, 来看个例子:#include <iostream> using namespace std; template<typename T> void square(T a) { ...

2018-03-31 21:30:42

阅读数 3349

评论数 0

原创 吃饭前写个linux select/poll/epoll代码示例玩玩

      等朋友吃饭,还有1个小时, 写个select, poll, epoll程序玩玩:include <stdio.h> #include <unistd.h> #include <sys/time.h> ...

2018-03-31 16:14:21

阅读数 4364

评论数 2

原创 秒破gettimeofday使用时出现的溢出问题

      最近遇到这样一段有bug的代码:#include<stdio.h> #include<unistd.h> #include <stdint.h> #include <sys/time.h&...

2018-03-29 23:05:00

阅读数 3744

评论数 0

原创 sql inner join的本质并非是取交集, 而是(可带条件地)膨胀/扩张

       先看看两张表:mysql> select * from black1; +----------+ | id | +----------+ | zhangsan | | lisi | | wangwu | +----------+ 3 rows i...

2018-03-29 23:01:47

阅读数 6015

评论数 0

原创 再来说说为什么stl sort会概率造成core dump

       stl sort的不当使用会概率造成core dump, 这个问题已经说过好几次, 如果不防范, 一旦遇到, 比较难查出原因。       来看看有问题的代码:#include <iostream> #include <vector&...

2018-03-24 22:42:46

阅读数 3880

评论数 0

原创 sql注入攻击初探与实例分析

      来看看表的结构:mysql> show create table zzz; +-------+-----------------------------------------------------------------------------------------...

2018-03-24 12:39:36

阅读数 4392

评论数 3

原创 linux和Windows在执行svn checkout(co)时的不同表现

      假设svn地址是: https://xxx/yyy/busi      如果在linux上执行svn co https://xxx/yyy/busi,   那么download下来的是busi这个目录整体, 符合心理预期。 然后, 如果在Windows上去checkout,  那么得到...

2018-03-24 11:53:30

阅读数 4311

评论数 0

原创 linux命令行无故换行的恼人问题

      在敲linux命令时, 明明本行远远没有满, 就自动换行了, 而且还覆盖, 颇为恼人。 在网上找了很多地方, 也没有比较好的解决方法, 勉强忍受了一段时间。      最近, 偶然看到一同事也遇到了这个问题, 操作是在SecureCrt界面那里先缩小界面, 然后放大界面, 搞定。   ...

2018-03-24 11:39:20

阅读数 7012

评论数 0

原创 C盘满--->保存文件失败--->尝试强制关机--->系统无法重启

C盘满--->保存文件失败--->尝试强制关机--->系统无法重启。         每一步都是教训啊, 幸亏IT维护的同学帮我修好了, 感激。

2018-03-24 11:30:02

阅读数 3529

评论数 0

原创 udp和tcp切换之坑

       某服务既支持udp访问, 也支持tcp访问。 某客户端一直是tcp访问, 切换程udp访问后, 一切work正常, 但到高峰时候,就出现故障, 经查, 是buf找过了udp的65507的限制。               某服务原来只支持udp访问, 后来又切成tcp访问, 但没有包...

2018-03-24 11:17:33

阅读数 5767

评论数 0

原创 常见I/O的访问时间scale

      了解I/O的访问时间很有好处。      我们都会把基本的字符串处理做成库或者函数, 供程序调用。你见过把字符串处理单独做成一个网络server吗? 我见过, 也用过。根据实际测试结果, 同城IDC之间, 往返网络迟延一般在10ms以内, 很快了。根据对这个字符串server进行监控,...

2018-03-24 11:03:51

阅读数 3408

评论数 0

原创 动态配置的缓存方案

       假设有这样一个问题:       微信有10亿用户,不可能对所有用户的所有操作都打印log(最多只能打印错误log),  现在,微信内部领导经常反馈问题,没有log就不能查问题, 该怎么办? 如果普通用户反馈问题呢, 怎么查?       提示:       1. 白名单      ...

2018-03-21 22:21:56

阅读数 3400

评论数 0

原创 mysql中group by的使用示例------聚合分组

       来看这样一个表:mysql> show create table tb_student; +------------+----------------------------------------------------------------------------...

2018-03-21 22:14:33

阅读数 3580

评论数 0

原创 ctrl+shift+r / ctrl+f5 强制(不使用缓存)刷新google chrome网页

      我改了csdn图片后, 一直看到的是旧图片, n天之后, 还是旧图片。猜测应该是用了缓存(且缓存更新逻辑失败, 定是csdn的bug), 用ctrl+shift+r, 或者ctrl+f5, 强制刷新页面后, 图片就更新了, 靠谱。...

2018-03-19 23:34:49

阅读数 8674

评论数 2

原创 看开源代码遇到dup2

      看开源代码遇到dup2:#include<stdio.h> #include<signal.h> #include<unistd.h> #include<stdlib.h&am...

2018-03-18 15:24:05

阅读数 3374

评论数 0

转载 socket编程中对sigpipe信号的处理------Good

       转载地址:http://blog.csdn.net/myd620/article/details/47806205我写了一个服务器程序,在Linux下测试,然后用C++写了客户端用千万级别数量的短链接进行压力测试.  但是服务器总是莫名退出,没有core文件.最后问题确定为, 对一个...

2018-03-17 22:32:37

阅读数 3667

评论数 0

原创 线程堆栈过小引起内存溢出, 进而导致core dump

       之前在某微线程服务中遇到过一次, 线程堆栈设置过小, 导致程序崩溃(core dump),  通过加大线程堆栈的大小的设置解决了问题。 最近又碰到, 简单来看下:      #include <stdio.h> #include <stdli...

2018-03-15 23:44:48

阅读数 4024

评论数 0

转载 Linux线程的分离(detached)与结合(joinable)

       转载地址:http://www.cnblogs.com/mydomain/archive/2011/08/14/2138454.htm线程的分离与结合  在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源...

2018-03-15 23:29:39

阅读数 3841

评论数 0

原创 用valgrind调试pthread_create引起的内存泄漏------顺便熟悉下线程的joinable和detached属性

       valgrind的安装和调试很简单, 之前博文多次介绍(如果是ubuntu, 直接apt安装更简单, 一条命令搞定)。 最近遇到一个让人颇为难解的内存泄漏问题, 下面我们来抽取核心逻辑, 简单来说下:       先看看这段程序:#include <stdio.h&am...

2018-03-15 23:19:40

阅读数 4038

评论数 2

原创 mysql的unique key

       最近需要用mysql做一个配置, 类似于配置文件, mysql表的列有key,value值, 此时, 可以考虑unique key, 来看看:mysql> show create table yyy; +-------+-------------------------...

2018-03-15 22:59:51

阅读数 5218

评论数 0

原创 mysql: ERROR 1292 (22007): Truncated incorrect DOUBLE value

      头晕了, 一个简单的insert操作出现了如下错误:ERROR 1292 (22007): Truncated incorrect DOUBLE value, 怎么回事?mysql> CREATE TABLE `tb_good` ( -> `xi...

2018-03-15 22:51:30

阅读数 5448

评论数 0

原创 【SVN Working copy is too old (format 10, created by Subversion 1.6)】的原因和解决

      下载了一个文件包demo, 准备提交到svn, 结果在svn add的时候, 报错:SVN Working copy is too old (format 10, created by Subversion 1.6       思考了一下, 估计是demo中有.svn文件。 查了一下,...

2018-03-15 22:41:48

阅读数 3473

评论数 0

原创 json, xml, probuf, jce, bon与core dump高发区

       上次, 解析json的时候, 判断不完整, core了。         上次, 解析xml的时候, 判断不完整, core了。       probuf的core暂时没遇到过。       上次, 解析jce的时候, 参数填错, core了。       最近, 解析bon的时候 ...

2018-03-09 22:14:52

阅读数 3421

评论数 0

原创 log夹逼法定位core, 可能存在问题

       以前经常用log夹逼法定位问题, 比如core dump,  但是, 最近在某情况下发现, 如果出现core, 那么core前的log不一定会打印, 这可能是log的缓存问题(没有core的话, log会打印): API_LOG("xxx"); // ...

2018-03-09 22:13:07

阅读数 3402

评论数 2

原创 最近实际用了一下recvfrom和sendto,感觉不错

       有个需要快速搞起的需求, 选用udp, 实际用了一下recvfrom和sendto,  不用担心粘包, 感觉不错, 顺便看看原型:ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, ...

2018-03-09 20:55:47

阅读数 4097

评论数 0

原创 测试udp的丢包和乱序

      udp服务端代码:#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h&...

2018-03-09 20:54:46

阅读数 6608

评论数 2

原创 udp服务雪崩测试与分析

       我们知道, udp socket的接收缓冲区大小是有限的, 可以查到最大值。 以server端为例, 如果server端socket接收缓冲区满了, 那么client端新进的请求不会得到及时处理, 出现丢包。 即使server端的socket的接收缓冲区没有满, 但仍有一些请求在其中...

2018-03-09 20:51:39

阅读数 3533

评论数 0

原创 带超时时间的sendto和recvfrom(用SO_SNDTIMEO和SO_RCVTIMEO搞起)

       在udp中, 可以用SO_SNDTIMEO和SO_RCVTIMEO来实现发送、接收的超时设置, 下面以SO_RCVTIMEO为例来看看:#include <stdio.h> #include <stdlib.h> #includ...

2018-03-07 22:24:50

阅读数 5761

评论数 0

原创 两个按钮一个必中100W,一个50%获得1亿,你会选择哪一个?

       两个按钮一个必中100W,一个50%获得1亿,你会选择哪一个?       有点意思,  我已经有了自己的答案

2018-03-03 19:32:19

阅读数 3943

评论数 0

原创 用ssh免密登录,但ssh无法登录, 怎么办?

       之前登录服务器时,都是采用账号密码方式登录的。最近玩免密登录,看了一下原理,于是就玩起来了。其实也简单,网上到处都是相关操作,但我搞了好几次, ssh免密一直失败,还是提醒ubuntu@localhost's password:, 最后发现是权限的问题, 来看看: ub...

2018-03-03 09:05:58

阅读数 4271

评论数 0

原创 The authenticity of host 'localhost (127.0.0.1)' can't be established的处理方法

      ssh localhost的时候遇到:ubuntu@VM-0-15-ubuntu:~/taoge/hadoop_begin/hadoop-2.7.5$ ssh localhost The authenticity of host 'localhost (127.0.0.1)&...

2018-03-02 23:21:50

阅读数 12763

评论数 0

原创 为什么执行ping命令时不需要root权限? 怎样让进程具有root权限?

     最近遇到一个问题, 需要让普通用户执行程序时具有root权限, 怎么办呢?     我们来看看ping, 它采用了raw socket, 需要root权限, 但是, 我们平常执行root命令的时候, 没有加sudo啊, 来探个究竟:ubuntu@VM-0-15-ubuntu:~/taog...

2018-03-02 23:09:33

阅读数 4434

评论数 0

原创 用raw socket接收udp数据的C/C++代码实战

       最近要用到raw socket, 来看下。server.cpp:#include <stdio.h> #include <string.h> #include <unistd.h> #include ...

2018-03-02 23:05:59

阅读数 4171

评论数 0

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