自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 资源 (10)
  • 收藏
  • 关注

原创 TCMalloc 安装和使用Test

TCMalloc 安装和使用 Author:Echo Chen(陈斌) Email:[email protected] Blog:Blog.csdn.net/chen19870707 Date:October 20th, 2014     前面三篇译文《TCMalloc:线程缓冲的Malloc》、《使用TCMalloc的堆

2017-02-06 18:56:55 963

原创 面对马上到来的苹果宣布强制HTTPS 服务器适配方案

Author:Echo Chen(陈斌)Email:[email protected]:Blog.csdn.net/chen19870707Date:Oct.26th, 2016      时间荏苒,转眼已经两年没写博客了,期间经历了工作的变革,入了创业的坑,回头想想,人生总总有那么一点事值得坚持,比如写博客。 而今已三十而立,谨以踩过的坑来记录我的青春。

2016-10-26 15:58:00 290

原创 网易开源框架 MMO游戏框架 pomelo剖析 安装配置篇

之前一直做C++游戏服务器,最近用做OTT游戏大厅采用nodejs进行后台开发,nodejs的性能和可扩展性还是不错的,所以顺带研究下网易的开源游戏框架pomelo。

2015-03-27 17:59:01 2958

原创 走进PHP

走进PHP-Author:Echo Chen(陈斌) - Email:[email protected] - Blog:Blog.csdn.net/chen19870707 - Date:March.13th, 2015游戏项目已经上线完成,2015年的主要业务是互联网电视的游戏布局,近期第一个项目就是做互联网游戏SDK,突然从游戏自研转到渠道服务确实让人有点不习惯。

2015-03-13 15:04:21 196

转载 Linux Glibc幽灵漏洞紧急修补方案

幽灵漏洞是Linux glibc库上出现的一个严重的安全问题,他可以让攻击者在不了解系统的任何情况下远程获取操作系统的控制权限。目前他的CVE编号为CVE-2015-0235。什么是glibcglibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务

2015-02-06 10:11:04 1480

原创 为什么linux下多线程程序如此消耗虚拟内存

最近游戏已上线运营,进行服务器内存优化,发现一个非常奇妙的问题,我们的认证服务器(AuthServer)负责跟第三方渠道SDK打交道(登陆和充值),由于采用了curl阻塞的方式,所以这里开了128个线程,奇怪的是每次刚启动的时候占用的虚拟内存在2.3G,然后每次处理消息就增加64M,增加到4.4G就不再增加了,由于我们采用预分配的方式,在线程内部根本没有大块分内存,那么这些内存到底是从哪来的呢?让人百思不得其解。

2015-01-27 21:11:38 30718 25

原创 Epoll详解及源码分析

epoll是当前在Linux下开发大规模并发网络程序的热门人选,epoll 在Linux2.6内核中正式引入,和select相似,都是I/O多路复用(IO multiplexing)技术,按照man手册的说法:是为处理大批量句柄而作了改进的poll。

2015-01-08 15:45:34 22654 6

原创 Clang &IOS 静态代码分析工具scan-build

IOS项目和Clang项目可以借助scan-build 实现代码的静态分析,找出代码缺陷。

2015-01-04 17:08:10 15632

原创 C++ 代码静态分析工具cppcheck

C++ 代码静态分析工具cppcheck   Author:Echo Chen(陈斌) Email:[email protected] Blog:Blog.csdn.net/chen19870707 Date:Jan.1st , 2015   进来游戏进入尾期,已上线运营,需求比较少,可以有时间整理优化下代码,但是优化如果没有一个标准,很难有

2015-01-04 15:46:23 14912 1

原创 菜鸟nginx源码剖析架构篇(二) nginx进程模型

nginx采用的是多进程模型,典型的master-worker方式,采用一个master process(监控进程,也叫做主进程)和多个woker process(工作进程)的设计方式,此外,还有1个可选的chache manager和 1 个可选的cache loader进程。

2014-11-18 12:21:07 13568 3

原创 菜鸟nginx源码剖析数据结构篇(十一) 共享内存ngx_shm_t

共享内存是Linux下提供的最基本的进程通信方法,它通过mmap或者shmget系统调用在内存中创建了一块连续的线性地址空间,而通过munmap或者shmdt系统调用释放这块内存,使用共享内存的好处是多个进程使用同一块内存时,在任何一个进程修改了共享内存中的内容后,其它进程通过访问这段内存就能够得到内存变化。这里探讨nginx对共享内存的封装。

2014-11-14 16:04:57 11601

原创 CAS原子操作实现无锁及性能分析

最近在研究nginx的自旋锁的时候,又见到了GCC CAS原子操作,于是决定动手分析下CAS实现的无锁到底性能如何,网上关于CAS实现无锁的文章很多,但少有研究这种无锁的性能提升的文章,这里就以实验结果和我自己的理解逐步展开。

2014-11-13 17:27:55 46846 16

原创 菜鸟nginx源码剖析 框架篇(一) 从main函数看nginx启动流程

俗话说的好,牵牛要牵牛鼻子 驾车顶牛,处理复杂的东西,只要抓住重点,才能理清脉络,不至于深陷其中,不能自拔。对复杂的nginx而言,main函数就是“牛之鼻”,只要能理清main函数,就一定能理解其中的奥秘,下面我们就一起来研究一下nginx的main函数。

2014-11-12 20:52:48 27292 5

原创 菜鸟nginx源码剖析数据结构篇(十) 自旋锁ngx_spinlock

自旋锁(Spinlock)是一种 Linux 内核中广泛运用的底层同步机制。自旋锁是一种工作于多处理器环境的特殊的锁,在单处理环境中自旋锁的操作被替换为空操作。当某个处理器上的内核执行线程申请自旋锁时,如果锁可用,则获得锁,然后执行临界区操作,最后释放锁;如果锁已被占用,线程并不会转入睡眠状态,而是忙等待该锁,一旦锁被释放,则第一个感知此信息的线程将获得锁。

2014-11-11 20:48:16 17935

原创 菜鸟nginx源码剖析数据结构篇(九) 内存池ngx_pool_t

今天是一年一度的光棍节,还没有女朋友的程序猿童鞋不妨new一个出来,内存管理一直是C/C++中最棘手的部分,远不止new/delete、malloc/free这么简单。随着代码量的递增,程序结构复杂度的提高。今天我们就一起研究一下以精巧著称的nginx的内存池。

2014-11-11 19:08:07 26139 10

原创 菜鸟nginx源码剖析 配置与部署篇(一) 手把手实现nginx "I love you"

还记得在前几年的CSDN泄漏账号事件中,统计发现程序员的账号中含有love的最多,这里我也俗套下,在这篇文章中将讲解如何 一步一步实用Nginx在一台机器上搭建一个最简单的显示“I love you”的Web服务器,大家一起动手尝试吧。

2014-11-08 16:56:20 5254 4

原创 菜鸟nginx源码剖析数据结构篇(八) 缓冲区链表ngx_chain_t

nginx 缓冲区链表的源码剖析

2014-11-06 19:54:56 16512 3

原创 菜鸟nginx源码剖析数据结构篇(六) 哈希表 ngx_hash_t(上)

哈希表是一种典型的以空间换取时间的数据结构,在没有冲突的情况下,对任意元素的插入、索引、删除的时间复杂度都是O(1)。这样优秀的时间复杂度是通过将元素的key值以hash方法f映射到哈希表中的某一个位置来访问记录来实现的,即键值为key的元素必定存储在哈希表中的f(key)的位置。当然,不同的元素的hash值可能相同,这就是hash冲突,有两种解决方法(分离链表发和开放地址发),ngx采用的是开放地址法.分离链表法是通过将冲突的元素链接在一个哈希表外的一个链表中,这样,找到hash表中的位置后,就可以通过

2014-11-04 21:46:36 15157 2

原创 菜鸟nginx源码剖析数据结构篇(七) 哈希表 ngx_hash_t(下)

菜鸟nginx源码剖析数据结构篇(七) 哈希表 ngx_hash_t(下)   Author:Echo Chen(陈斌) Email:[email protected] Blog:Blog.csdn.net/chen19870707 Date:Nov 3rd, 2014 在前面一篇文章《菜鸟nginx源码剖析数据结构篇(六) 哈希

2014-11-03 12:42:50 13130 1

原创 菜鸟nginx源码剖析数据结构篇(五) 基数树 ngx_radix_tree_t

基数树(radix tree)是一种不怎么常见的数据结构,这里简单的做一下介绍:在计算机科学中,基数树,是一种基于trie(字典树)的特殊的数据结构,可以快速定位叶子结点。radix tree是一种多叉搜索树,每个结点有固定的孩子数(叉数 为2^n).

2014-10-28 17:20:14 11812 3

原创 菜鸟nginx源码剖析数据结构篇(四)红黑树ngx_rbtree_t

ngx_rbtree是一种使用红黑树实现的关联容器,关于红黑树的特性,在《手把手实现红黑树》已经详细介绍,这里就只探讨ngx_rbtree与众不同的地方;ngx_rbtree红黑树容器中的元素都是有序的,支持快速索引,插入,删除操作,也支持范围查询,遍历操作,应用非常广泛。

2014-10-27 21:17:22 18129 7

转载 站在巨人的肩膀上,C++开源库大全

内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。标准库C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。Standard Template Library:标准模板库C POSIX library : POSIX系统的C标准库规范ISO C++ Standards

2014-10-24 15:04:26 15007 5

原创 菜鸟nginx源码剖析数据结构篇(三) 单向链表 ngx_list_t

ngx_list _t是一个顺序容器,它实际上是动态数组和单向链表的结合体,扩容起来比动态数组简单的多,可以一次扩容一个数组,所以说它结合了 链表插入删除不需要移动的 和 数组下标快速索引 的优势,设计非常让人叫绝,此外它还有以下特点:链表中存储的元素是灵活的,可以是任何一种数据结构。链表元素需要占用的内存由ngx_list_t管理,它已经通过数组分配好了。小块的内存使用链表访问O(n)效率是低下的,可以使用数组通过直接通过偏移量来直接访问O(1)。

2014-10-23 17:20:07 11775 7

原创 菜鸟nginx源码剖析数据结构篇(二) 双向链表ngx_queue_t

ngx_queue作为顺序容器链表,它优势在于其可以高效地执行插入、删除、合并操作,在插入删除的过程中,只需要修改指针指向,而不需要拷贝数据,因此,对于频繁修改的容器很适合。此外,相对于STL list,它还具有以下特点:自身实现了排序功能轻量级,不负责内存的分配自身支持两个链表的合并

2014-10-22 09:20:56 11344 5

原创 菜鸟nginx源码剖析数据结构篇(一)动态数组ngx_array_t

菜鸟nginx源码剖析数据结构篇(四)红黑树ngx_rbtree_t   Author:Echo Chen(陈斌) Email:[email protected] Blog:Blog.csdn.net/chen19870707 Date:October 27h, 2014     1.ngx_rbtree优势和特点  

2014-10-21 13:54:52 67501 8

原创 TCMalloc 对MYSQL 性能 优化的分析

虽然经过研究发现TCMalloc不适合我们现有的游戏框架,但意外收获发现TCMalloc可以大幅度提高MYSQL 性能及内存占用,这里给出配置及测试的结果:

2014-10-20 16:43:03 65366 1

原创 TCMalloc 安装和使用

前面三篇译文《TCMalloc:线程缓冲的Malloc》、《使用TCMalloc的堆栈检查》、《使用TCMalloc进行堆栈分析》介绍了TCMalloc的基本原理,以及堆栈分析和检查工具,TCMalloc优点很多,比glibc 2.3的malloc快、自带的堆栈工具可以轻松找出内存瓶颈和内存泄漏,给服务器开发指明了一条新的道路。

2014-10-20 15:58:01 85671 2

翻译 使用Tcmalloc进行堆栈分析

前一篇译文《使用TCmalloc的堆栈检查》,介绍了Tcmalloc进行堆栈检查,今天翻译《heap-profiling using tcmalloc》,了解如何 TCmalloc进行堆栈分析。

2014-10-16 11:33:44 67618

翻译 使用TCmalloc的堆栈检查

在前一篇译文《TCMalloc:线程缓冲的Malloc》详细讲解了TCMalloc的工作原理和特点,今天翻译《heap-checking using tcmalloc》,了解Tcmalloc堆栈检查。

2014-10-15 19:50:50 15416

翻译 TCMalloc:线程缓冲的Malloc

TCMalloc要比glibc 2.3的malloc(可以从一个叫作ptmalloc2的独立库获得)和其他我测试过的malloc都快。ptmalloc在一台2.8GHz的P4机器上执行一次小对象malloc及free大约需要300纳秒,而TCMalloc的版本同样的操作大约只需要50纳秒。malloc版本的速度是至关重要的,因为如果malloc不够快,应用程序的作者就倾向于在malloc之上写一个自己的内存释放列表。这就可能导致额外的代码复杂度,以及更多的内存占用――除非作者本身非常仔细地划分释放列表的大小

2014-10-13 08:55:04 15838 1

翻译 TCMalloc:线程缓冲的Malloc

TCMalloc:线程缓冲的MallocAuthor:Echo Chen(陈斌)Email:[email protected]:Blog.csdn.net/chen19870707Date:October 10th, 2014 这段时间比较闲,研究下内存管理,从官方文档开始啃起《TCMalloc : Thread-Caching Ma

2014-10-12 21:10:57 595

原创 眉目传情之并发无锁环形队列的实现

前面在《眉目传情之匠心独运的kfifo》一文中详细解析了 linux 内核并发无锁环形队列kfifo的原理和实现,kfifo鬼斧神工,博大精深,让人叹为观止,但遗憾的是kfifo为内核提供服务,并未开放出来。剑不试则利钝暗,弓不试则劲挠诬,鹰不试则巧拙惑,马不试则良驽疑,光说不练是不能学到精髓的,下面就动手实现自己的并发无锁队列UnlockQueue(单生产者单消费者)。

2014-10-11 14:53:21 23908 7

原创 眉目传情之匠心独运的kfifo

学不考儒,务掇精华;文不按古,匠心独运。Linux kernal 鬼斧神工,博大精深,让人叹为观止,拍手叫绝。然匠心独运的设计并非扑朔迷离、盘根错节,真正的匠心独运乃辞简理博、化繁为简,在简洁中昭显优雅和智慧,kfifo就是这样一种数据结构,它就是这样简约高效,匠心独运,妙不可言,下面就跟大家一起探讨学习。

2014-10-08 21:27:53 24638 13

翻译 为什么需要内存屏障

内存屏障,也称内存栅栏,内存栅障,屏障指令等, 是一类同步屏障指令,使得CPU或编译器在对内存随机访问的操作中的一个同步点,使得此点之前的所有读写操作都执行后才可以开始执行此点之后的操作。来自一篇墙外的文章,写的非常好。

2014-10-08 18:00:36 8921 1

原创 十月份计划

1.研究nginx源代码,写一个专栏。 2.整理环形缓冲区,kfifo,tcmalloc。 3.csdn 精品文章20篇,访问量到20W,申请准专家。 4.读完老周的《我的互联网方法论》。 5.慢跑80km,每天坚持5km。

2014-10-08 09:01:44 1404

原创 游戏服务器设计的一些感悟

Author:Echo Chen(陈斌) Email:[email protected] Blog:Blog.csdn.net/chen19870707 Date:September 30th, 2014 时间荏苒,转眼间已经做游戏一年了,第一款卡牌游戏《完美神话》也已经测试上线了,十一之后开始推广渠道,这一年经历了无数次崩服、回档、卡顿后,现在服务器终于基本稳定,对于程序员来说出问题是个好事情,只有在问题面前才

2014-09-30 12:36:04 7142 4

原创 C++ json库jsoncpp 吐槽

最近在做游戏接入SDK时用到C++的json库jsoncpp,jsoncpp 是一款优秀的json库,但恶心的一点是它采用Assert作为错误处理方法,而assert在linux下通过调用 abort 来终止程序运行,对于服务器而言将会收到SIGABRT,崩溃打出core,这对于服务器而言是致命的,下面总结了几种 Assertion `type_ == nullValue || type_ == object Value' failed的情况.

2014-09-28 19:56:46 24018 4

原创 手把手实现红黑树

一步一步彻底实现红黑树,面试不再愁。

2014-09-26 20:20:19 23493 6

原创 MySQL bin-log分析方法

利用 MySQL bin-log分析特定时间内SQL执行条数以及执行慢的SQL语句。

2014-09-25 14:25:59 18466 1

原创 使用ccache大幅度加速gcc编译速度

使用ccache大幅度加速gcc编译速度

2014-09-24 14:58:09 20317

性能测试工具sysbench

sysbench是一个开源的、模块化的、跨平台的多线程性能测试工具,可以用来进行CPU、内存、磁盘I/O、线程、数据库的性能测试。目前支持的数据库有MySQL、Oracle和PostgreSQL。以下操作都将以支持MySQL数据库为例进行。

2014-10-20

一步一步彻底实现红黑树,面试不再愁

手把手实现红黑树,一步一步彻底实现红黑树,面试不再愁。...

2014-09-26

stl源码剖析 stl源码剖析

stl源码剖析stl源码剖析stl源码剖析stl源码剖析stl源码剖析stl源码剖析stl源码剖析

2010-08-05

学生成绩管理系统(C++)

c++实现学生成绩管理 程序源码 vs2008

2010-07-18

操作系统课程设计 生产者消费者

操作系统课程设计 生产者消费者操作系统课程设计

2009-06-26

地铁自动控制系统需求分析 软件需求课程设计

包括E-R图 文档等 课程设计得优秀 任务书都有

2009-03-20

华为内部程序设计培训教材

华为内部程序设计培训教材 C++编码规范

2009-03-20

个人档案文件管理系统 汇编课程设计

个人档案文件管理系统 汇编课程设计 源代码及文档

2009-03-20

Ubuntu学习资料

Ubuntu学习资料Ubuntu学习资料Ubuntu学习资料Ubuntu学习资料Ubuntu学习资料

2009-01-09

C++Primer答案

C++Primer答案C++Primer答案C++Primer答案C++Primer答案C++Primer答案C++Primer答案

2009-01-09

空空如也

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

TA关注的人

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