置顶随笔

[置顶]以题论道----关于虚函数的一些解读

     摘要: virtual function是很多公司面试题的重点考察内容,虽然对于C++而言这是一个老生常谈的话题了,但是工作中我发现还是有很多人理解的不透彻。
先看下面的一个例子  阅读全文

posted @ 2013-12-01 16:08 peakflys 阅读(2391) | 评论 (7)编辑 收藏

[置顶]从一道面试题来阐释一个普遍的认知误区

     摘要: 上午一个师弟在QQ上问我一道笔试题,是他前两天去KONAMI面试时做的,这道题大致是这样的:
解释以下语句的含义:
1、new A;
2、new A();
也许很多人包括我自己,都可以马上给出第一种情况的答案:在堆上为A类分配内存,然后调用A的构造函数。这种说法被大家所熟知,因为包括《STL源码剖析》等大作在内也都是这么写的(但是你认为这种说法完全正确吗?其实不尽然,答案后面揭晓)
第二种情况,对象构造的时候初始化列表为空会和第一种有什么不同呢?对于这种在实际工程中很少使用的情况,我一时还真给不出确切的答案。  阅读全文

posted @ 2013-04-08 13:43 peakflys 阅读(6206) | 评论 (21)编辑 收藏

[置顶]关于最优无限循环的考证

     摘要: 昨天在一个论坛里看到一个帖子,是关于无限循环的选择问题,之前也看到过很多次说空for比while(1)效率高的论述,只是之前一直没有功夫去考证。
话不多说,直入正题。  阅读全文

posted @ 2013-01-05 12:39 peakflys 阅读(2827) | 评论 (8)编辑 收藏

[置顶]由段错误引申出的缓冲区溢出攻击分析

     摘要: 前段时间在写《段错误造成的常见诡异宕机情况总结(中)》时,分析到 程序中数据写超时有可能写到this指针所在的地址里面,导致最终诡异的宕机。其实网络攻防里常用的缓冲区溢出攻击也是这个道理,除了使用户程序甚至计算机挂掉外,还有可能执行攻击者想执行的任何程序,这篇文章主要详细剖析一下第二种攻击的方法以及现在Linux(包括各种修改版本,例如Android)、Windows下常使用的防范措施。  阅读全文

posted @ 2012-10-24 16:51 peakflys 阅读(1993) | 评论 (2)编辑 收藏

[置顶]段错误造成的常见诡异宕机情况总结(下)

     摘要: 国庆长假终于结束了,从拥堵的噩梦中醒来,该收收心重新回到工作中来了(顺便吐槽一下闹心的长假,平时工作没时间出去,放了长假了 又不敢出去,路上耗费大量的时间和金钱也算了,弄的整个人也身心疲惫的……)
言归正传,接着上回宕机情况说。之前比较难找的宕机错误已经在前两篇随笔里说过了,这次要说的是前不久一个同事遇到的。他要做一个录像功能,每次把客户端的消息转储成文件时挂掉。大致代码如下:  阅读全文

posted @ 2012-10-08 16:13 peakflys 阅读(3794) | 评论 (1)编辑 收藏

[置顶]小议c++之回调

     摘要: 最近在做一个军团系统的资料片开发,因为策划提出了很多遍历某一军团当前所有在线玩家的操作(例如发公告、拉人、给奖励),所以就想到了用回调。
脱离实际项目代码,先看一下示例实现:  阅读全文

posted @ 2012-08-31 21:38 peakflys 阅读(2744) | 评论 (1)编辑 收藏

[置顶]论epoll的使用

     摘要: 前几天回答一个问题,是关于我们项目中使用的epoll模式的,因为记不大清了,感觉应该使用的就是epoll的高速模式,也就是ET(edge-trigger)模式。这两天闲暇的时候,打开代码又看了一下,在epoll事件注册时并未标记ET模式,看来实际使用的是epoll默认的LT(level-trigger )模式,为什么呢?使用LT意味着 只要 fd 处于 readable/writable 状态,每次 epoll_wait 时都会返回该 fd,系统开销不说,自己处理时每次都要把这些fd轮询一遍,如果fd很多的话,不管这些fd有没有事件发生,epoll_wait 都会触发这些fd的轮询判断。  阅读全文

posted @ 2012-08-26 18:33 peakflys 阅读(9799) | 评论 (18)编辑 收藏

[置顶]关于hash_map的一点感悟

     摘要: 工作两年中,关于查找敏感型的代码不少用到了hash_map,关于它的实现细节和需要注意的地方这里梳理一下。因为工作在linux环境下,所以这里hash_map的评述都是根据SGI的源码。
hash_map说简单一点就是一个hashtable桶和对于这个桶基本操作的再次封装。即包含(图片太麻烦,文字代替吧):1、_Hashtable* _M_ht;2、erase()、find()等函数。对应的iterator包含:1、_hashtable* _M_ht(这个就是hash_map中的hashtable指针);2、_Node* _M_cur(指向当前hashtable桶的某个节点)。_Node的结构为:  阅读全文

posted @ 2012-07-24 14:15 peakflys 阅读(6427) | 评论 (5)编辑 收藏

2015年2月10日

关于Bash shell在不同locale下的”异常”表现之探讨

     摘要: bash shell有很多命令是和locale相关,本篇文章就来研究一下这种相关性的具体表现。  阅读全文

posted @ 2015-02-10 09:10 peakflys 阅读(1354) | 评论 (0)编辑 收藏

2015年1月14日

SGI STL中默认Allocator为何变为new_allocator?

     摘要: 项目中和自己代码中大量使用了STL的容器,平时也没怎么关注alloc的具体实现细节,主观认识上还停留在侯捷大师的《STL源码剖析》中的讲解。
但是目前编译器的实现,早已经不是书中所言……  阅读全文

posted @ 2015-01-14 16:50 peakflys 阅读(2639) | 评论 (8)编辑 收藏

2014年3月26日

说说服务器宕机恢复和负载均衡那些事(上)

     摘要: 对于服务器程序而言,尤其是云计算时代的服务器程序,三高标准(高可用、高性能、高扩展)往往是衡量一个优秀的服务器程序的重要指标。本篇文章主要聊聊服务宕机恢复(高可用的重要内容)、负载均衡(高扩展、高可用的主要内容)。以下内容均属个人工作中的见解,如有不妥之处,欢迎指正。 ----peakflys  阅读全文

posted @ 2014-03-26 16:58 peakflys 阅读(3340) | 评论 (0)编辑 收藏

2013年12月1日

以题论道----关于虚函数的一些解读

     摘要: virtual function是很多公司面试题的重点考察内容,虽然对于C++而言这是一个老生常谈的话题了,但是工作中我发现还是有很多人理解的不透彻。
先看下面的一个例子  阅读全文

posted @ 2013-12-01 16:08 peakflys 阅读(2391) | 评论 (7)编辑 收藏

2013年5月27日

一场虚惊——记大量心跳超时事件的排查

     摘要: 项目终于上线了,伴随着人数的逐步上升,最近查看日志,发现了大量连接超时的日志。项目中使用的是TCP长连接,为了保证网络资源及时有效的释放,程序中是1分钟一次心跳,3分钟无心跳即认为超时。此为本文的背景
相对于TCP连接建立时的三次握手,我想很多人对断开连接的四次招呼就不是那么熟了,这里先谈一下TCP的断开,下面给出TCP断开连接的过程图:  阅读全文

posted @ 2013-05-27 16:56 peakflys 阅读(5103) | 评论 (2)编辑 收藏

2013年4月8日

从一道面试题来阐释一个普遍的认知误区

     摘要: 上午一个师弟在QQ上问我一道笔试题,是他前两天去KONAMI面试时做的,这道题大致是这样的:
解释以下语句的含义:
1、new A;
2、new A();
也许很多人包括我自己,都可以马上给出第一种情况的答案:在堆上为A类分配内存,然后调用A的构造函数。这种说法被大家所熟知,因为包括《STL源码剖析》等大作在内也都是这么写的(但是你认为这种说法完全正确吗?其实不尽然,答案后面揭晓)
第二种情况,对象构造的时候初始化列表为空会和第一种有什么不同呢?对于这种在实际工程中很少使用的情况,我一时还真给不出确切的答案。  阅读全文

posted @ 2013-04-08 13:43 peakflys 阅读(6206) | 评论 (21)编辑 收藏

2013年2月4日

Libjingle和各协议的关系

     摘要: 前两篇blog介绍了P2P的原理和libjingle库的基本情况,如果直接看代码,很多细节可能不会注意到,这种时候最有效的方法当然是看它的开发文档,因为库是由Google开发和维护,所以这方面我们不用担心,文档首页见这里。但是如果要深入了解库代码为什么这么写,为什么这么约定时,还需要了解相应的协议。
便于大家了解,特整理如下。(转载请注明作者和出处 by peakflys)  阅读全文

posted @ 2013-02-04 15:29 peakflys 阅读(7157) | 评论 (2)编辑 收藏

2013年1月30日

Libjingle库 综述

     摘要: 国内现在很多语音聊天工具都是基于TURN方式实现的,包括YY、AK等等,这种方式对于服务器的性能要求很高,而且在用户量增大的时候,服务器压力也会越来越大,用户的语音质量也会受到很大影响。而基于P2P方式实现的语聊服务器,就可以极大的避免这种情况的发生,而且用户的语音体验也会非常好。  阅读全文

posted @ 2013-01-30 16:54 peakflys 阅读(16134) | 评论 (3)编辑 收藏

2013年1月25日

P2P的原理和常见的实现方式(为libjingle开路)

     摘要: 为了项目的后期IM应用,最近在研究libjingle,中间看了也收集了很多资料,感慨网上很多资料要么太过于纠结协议(如STUN、ICE等)实现细节,要么中间有很多纰漏。最后去伪存真,归纳总结了一下,希望对以后的同行有些许帮助。
如果有什么需要讨论或者指正的,欢迎留言或者邮件peakflys@gmail.com   阅读全文

posted @ 2013-01-25 15:43 peakflys 阅读(28339) | 评论 (12)编辑 收藏

2013年1月5日

关于最优无限循环的考证

     摘要: 昨天在一个论坛里看到一个帖子,是关于无限循环的选择问题,之前也看到过很多次说空for比while(1)效率高的论述,只是之前一直没有功夫去考证。
话不多说,直入正题。  阅读全文

posted @ 2013-01-05 12:39 peakflys 阅读(2827) | 评论 (8)编辑 收藏

仅列出标题  下一页
<2018年6月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

公告

人不淡定的时候,就爱表现出来,敲代码如此,偶尔的灵感亦如此……

常用链接

留言簿(4)

随笔分类

随笔档案

文章档案

搜索

最新评论

阅读排行榜

评论排行榜