- 博客(48)
- 资源 (31)
- 收藏
- 关注
转载 inux内核数据结构之kfifo
origin: http://www.cnblogs.com/Anker/p/3481373.html1、前言 最近项目中用到一个环形缓冲区(ring buffer),代码是由linux内核的kfifo改过来的。缓冲区在文件系统中经常用到,通过缓冲区缓解cpu读写内存和读写磁盘的速度。例如一个进程A产生数据发给另外一个进程B,进程B需要对进程A传的数据进行处理并写入文件,如果B没
2015-07-31 23:59:25 530
转载 kernel中常用数据结构之kfifo(改造为ring buffer)
origin: http://www.cnblogs.com/GODYCA/archive/2013/05/28/3104281.html1、前言 最近项目中用到一个环形缓冲区(ring buffer),代码是由linux内核的kfifo改过来的。缓冲区在文件系统中经常用到,通过缓冲区缓解cpu读写内存和读写磁盘的速度。例如一个进程A产生数据发给另外一个进程B,进程B需要对进
2015-07-31 23:46:52 1806
转载 kernel中常用数据结构之链表
http://blog.chinaunix.net/uid-27119491-id-3289230.html1、前言 最近写代码需用到链表结构,正好公共库有关于链表的。第一眼看时,觉得有点新鲜,和我之前见到的链表结构不一样,只有前驱和后继指针,而没有数据域。后来看代码注释发现该代码来自linux内核,在linux源代码下include/Lish.h下。这个链表具备通
2015-07-31 23:45:58 522
转载 linux性能评测工具2-Google perftools
http://www.cnblogs.com/GODYCA/archive/2013/05/28/3104281.html1、功能简介它的主要功能就是通过采样的方式,给程序中cpu的使用情况进行“画像”,通过它所输出的结果,我们可以对程序中各个函数(得到函数之间的调用关系)耗时情况一目了然。在对程序做性能优化的时候,这个是很重要的,先把最耗时的若干个操作优化好,程序的整体性能提升应
2015-07-31 23:14:19 864
转载 Linux性能评测工具之一:gprof篇
http://blog.csdn.net/stanjiang2010/article/details/5655143这些天自己试着对项目作一些压力测试和性能优化,也对用过的测试工具作一些总结,并把相关的资料作一个汇总,以便以后信手拈来! 1 简介改进应用程序的性能是一项非常耗时耗力的工作,但是究竟程序中是哪些函数消耗掉了大部分执行时间,这通常都不是非常明显的。GNU
2015-07-31 22:52:09 574
转载 nginx源码分析(1)- 缘起
http://blog.csdn.net/kenbinzhang/article/category/603177nginx是一个开源的高性能web服务器系统,事件驱动的请求处理方式和极其苛刻的资源使用方式,使得nginx成为名副其实的高性能服务器。nginx的源码质量也相当高,作者“家酿”了许多代码,自造了不少轮子,诸如内存池、缓冲区、字符串、链表、红黑树等经典数据结构,事件驱动模型,ht
2015-07-31 22:36:14 365
原创 我们的应用场景与http的不同
核心: http是请求应答式的,而我们的应用,下行啥时候发是不确定的!!!所以才有人搞两个tcp连接,一个专门用来发上行,一个专门用来发下行,这样数据结构不会相互干扰,可以提高并发能力!!!分析:nginx用多个进程去分别处理多个fd的read/write, 为何不用一个线程去做数据的读取,而后分发呢? ----默认就一个做数据读取的线程fd是如何传递的? 如何保证resp
2015-07-31 22:26:16 519
转载 文章10:Nginx的超时处理
欢迎转载,请注明出处http://blog.csdn.net/yankai0219/article/details/84684560.序1.综述 1)Nginx管理时间采用的数据结构是红黑树 2)Nginx检测那些等待处理的事件对象是否已经超时的两种方案 3)Nginx是如何设置这两种方案的呢 2.详细分析:
2015-07-31 02:24:59 484
转载 文章9:Nginx accept互斥锁
欢迎转载,转载请注明出处http://blog.csdn.net/yankai0219/article/details/8453317文章内容0.序1.Nginx锁的核心数据结构2.分析文件锁0.序强烈推荐的文章是nginx中锁的设计以及惊群的处理,本文只是对文章中的内容进行了部分总结和部分解释。Nginx之所以要采用
2015-07-31 02:24:20 510
转载 文章6:Nginx中的Epoll事件处理机制
欢迎转载转载请注明出处http://blog.csdn.net/yankai0219/article/details/84533130.序1.Epoll事件初始化2.Epoll事件处理0.序 在Linux下,Nginx默认的事件处理机制是Epoll事件处理机制。当然Nginx也可以使用select等事件处理机制,因此Nginx
2015-07-31 02:23:43 702
转载 文章8:Nginx中与Master-Worker进程通信有关的内容
欢迎转载转载请注明出处http://blog.csdn.net/yankai0219/article/details/84533140.序尽管本文内容精简了点,但个人认为还是将整个过程都分析到了。更详细的过程请参看Nginx的master和worker进程间的通信1.创建用于进程通信的管道pipe 通过socketpair函数,在ngx_spawn_process函
2015-07-31 02:23:13 834
转载 文章5:Nginx源码分析--事件循环
欢迎转载,转载请注明出处http://blog.csdn.net/yankai0219/article/details/8453297文章内容0.序1.概述:2.几个变量的作用3.ngx_process_events_and_timers结构图4.ngx_process_events_and_timers函数详解5.分析Nginx对accept事件的处理
2015-07-31 02:22:55 427
转载 文章4:Nginx进程管理之 ngx_master_process_cycle分析
欢迎转载,转载请注明出处http://blog.csdn.net/yankai0219/article/details/84532670.序本文中内容与文章1有些重复,不过在本文中讲述了用gdb调试的过程值得一看。1.牵涉到的知识点:关于这里面的一些重要知识点分析:1.牵涉到信号的知识 :这部分内容在APUE(UNIX环境高级编程)chap10中详细讲解2.牵涉到进
2015-07-31 02:21:07 602
转载 文章2:nginx启动过程之main函数
欢迎转载,转载请注明出处http://blog.csdn.net/yankai0219/article/details/8453253本文主要是nginx启动过程中关于main函数部分的初始化。1)ngx_get_options:获得运行时的一些选项。 -g ngx_conf_params
2015-07-31 02:20:31 439
转载 文章3:Nginx中与信号有关的内容
欢迎转载,转载请注明出处http://blog.csdn.net/yankai0219/article/details/84532610.序一概述:二、启动时,三、信号初始化四、启动后的操作五、几个小问题0.序 要想学好Nginx中与信号有关的内容,就必须对Linux下信号相当熟悉。因此,在学习Nginx这部分的时
2015-07-31 02:20:08 431
转载 文章0:Nginx整体分析
origin: http://blog.csdn.net/yankai0219/article/details/8453238欢迎转载转载请注明出处http://blog.csdn.net/yankai0219/article/details/84532380.序本文是对接下来一系列文章的综述。接下来一系列文章讲述了Nginx作为一款Linux下的软件时其运行的原理。说直白一点,本
2015-07-31 02:18:33 551
转载 文章1:Nginx启动过程分析
欢迎转载,转载请注明出处http://blog.csdn.net/yankai0219/article/details/84532490.序 本文章不是单单讲述Nginx 在nginx.c中main函数中的函数,而是将其进一步延伸,一直到达Nginx的Master进程等待外部信号,Worker进程等待Http请求。我尽可能全面的讲述,但是其中肯定有很多细节不能讲到,但我依旧会将更多
2015-07-31 02:18:26 406
原创 TCP block方式时,接收端接收数据太慢,导致发送端阻塞
TCP block方式时,接收端接收数据太慢,导致发送端阻塞, 这时候下面的tcp还活着吗? 应该是活着,因为接收端收数据包,发ack但是,如果接收端不在接收数据, 发送端导致堵塞? 这时候tcp是活着的吗? 必须靠keepalive来检查这种错误了?TCP的状态是什么? 是一直在等对方的ack包吗?糊涂,糊涂!!! 还是发送端不停的重传,接收端不做回应?? 到底状态是什么?201
2015-07-28 21:09:25 3642
转载 裸奔之MMU
origin: http://www.embedu.org/Column/Column583.htm作者:程老师,华清远见嵌入式学院讲师。一、MMU的介绍MMU全称Memory Management Unit,中文称内存管理单元主要有两个功能: A.将虚拟地址转换成实际的物理地址 B.对物理内存设置访问权限二、MMU的工作
2015-07-26 22:53:16 595
转载 新一代 Linux 文件系统 btrfs 简介
origin: http://www.ibm.com/developerworks/cn/linux/l-cn-btrfs/Btrfs 简介文件系统似乎是内核中比较稳定的部分,多年来,人们一直使用 ext2/3,ext 文件系统以其卓越的稳定性成为了事实上的 Linux 标准文件系统。近年来 ext2/3 暴露出了一些扩展性问题,于是便催生了 ext4 。在 2008 年发
2015-07-24 15:21:32 566
转载 原子操作的实现原理
origin: http://www.infoq.com/cn/articles/atomic-operation/1. 引言原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为"不可被中断的一个或一系列操作" 。在多处理器上实现原子操作就变得有点复杂。本文让我们一起来聊一聊在Intel处理器和Java里是如何实现原子操作的。
2015-07-24 15:14:22 520
转载 CAS(Compare and Swap)无锁同步算法
origin:锁(lock)的代价锁是用来做并发最简单的方式,当然其代价也是最高的。内核态的锁的时候需要操作系统进行一次上下文切换,加锁、释放锁会导致比较多的上下文切换和调度延时,等待锁的线程会被挂起直至锁释放。在上下文切换的时候,cpu之前缓存的指令和数据都将失效,对性能有很大的损失。用户态的锁虽然避免了这些问题,但是其实它们只是在没有真实的竞争时才有效。Java在J
2015-07-24 15:09:05 1564
原创 __sync_val_compare_and_swap, 无锁锁
啥叫无锁同步? 所谓锁,就是指linux原来提供的那些锁,包括mutex等东西,如果线程无法获得锁,就会进行任务调度CAS,就是不使用系统提供的锁,而是直接利用cpu提供的指令,实现互斥操作。当无法获得锁时,不需要进行任务调度,从而减轻了任务切换而引起的系统开销2015.7.24
2015-07-24 14:55:25 8670
转载 阻塞socket上read/write出现errno为EAGAIN的原因解密
origin: http://blog.csdn.net/cleanfield/article/details/41649985一直以来,个人概念中只有非阻塞socket才会产生EAGAIN的错误,意思是当前不可读写,只要继续重试就好。当最近我们redis模块的一个报错纠正我的这个概念错误。事件回顾:hiredis的redisConnectWithTimeout和redisCont
2015-07-16 17:17:15 2194
转载 HTTP 协议漫谈
origin: http://www.linuxeden.com/html/news/20150713/161848.html原文出处: 宋沄剑 欢迎分享原创到伯乐头条简介网络上已经有不少介绍HTTP的的好文章。对HTTP的一些细节介绍的比较好,所以本篇文章不会对HTTP的细节进行深究,而是从够高和更结构化的角度将HTTP协议的元素进行分类讲解。 HTT
2015-07-15 23:37:26 342
转载 errno是什么?
origin: http://blog.csdn.net/xiaofei0859/article/details/49397331.为防止和正常的返回值混淆,系统调用并不直接返回错误码,而是将错误码放入一个名为errno的全局变量中。如果一个系统调用失败,你可以读出errno的值来确定问题所在。errno不同数值所代表的错误消息定义在errno.h中,你也可以通过命令"man 3 errn
2015-07-11 23:12:21 992
转载 Linux中线程与CPU核的绑定
原文地址:Linux中线程与CPU核的绑定 作者:wta670 最近在对项目进行性能优化,由于在多核平台上,所以了解了些进程、线程绑定cpu核的问题,在这里将所学记录一下。 不管是线程还是进程,都是通过设置亲和性(affinity)来达到目的。对于进程的情况,一般是使用sched_setaffinity这个函数来实现,网上讲的也比较多,这里主要讲一下线程的情况。 与进
2015-07-11 22:10:50 500
原创 SSL库比较
SSL和之后的版本tls,是在tcp层上加了个安全传输层,但是很复杂,用起来比较累!今天看了openssl, mebed ssl, libressl, 分析了mebed ssl的example, 发现用起来真的要写许多代码,关键是如何与poll这些系统调用一起使用? 没看明白,需要更多的时间来看!mebed ssl的例子很详细,继续看..........................
2015-07-11 00:02:34 2526
转载 使用 OpenSSL API 进行安全编程
origin: http://www.ibm.com/developerworks/cn/linux/l-openssl.html创建基本的安全连接和非安全连接学习如何使用 OpenSSL —— 用于安全通信的最著名的开放库 —— 的 API 有些强人所难,因为其文档并不完全。您可以通过本文中的提示补充这方面的知识,并驾驭该 API。在建立基本的连接之后,就可以查看如何使用 Ope
2015-07-10 23:55:25 689
转载 LibreSSL编辑
LibreSSL是OpenSSL加密软件库的一个分支,为一个安全套接层(SSL)和传输层安全(TLS)协议的开源实现。在OpenSSL爆出心脏出血安全漏洞之后,一些OpenBSD开发者于2014年4月创立了LibreSSL,目标是重构OpenSSL的代码,以提供一个更安全的替代品。LibreSSL复刻自OpenSSL库的1.0.1g分支,它将遵循其他OpenBSD项目所使用的安全指导原则。
2015-07-10 23:54:16 797
转载 mbed TLS
origin: http://www.oschina.net/news/60327/polarssl-is-dead-long-live-mbed-tls2014年 11 月 PolarSSL 加入 ARM 公司(详情)。在今年 2 月份时,PolarSSL 再次宣布重大变化 —— PolarSSL 改名为 mbed TLS ,以此来宣示其在 mbed 生态系统中的重要性。mbed TLS
2015-07-10 22:57:40 3433
原创 应用层如何保证一个包的完整性?
对应用层数据进行封包,但是该如何保证数据的完整性?1. 采用ssl,这样保证数据完整性2. 采用json这种封装, protobuf ??3. 采用start+end+len+crc校验,这样就能保证一部分的数据的完整性校验,但是别人伪造包则不容易检测出来!!! 别人伪造就伪造了??这个不对吧!!!真的不管了? 这是设计上的缺陷!!!2015.07.09
2015-07-09 23:37:43 1177 1
转载 tcp封包才,解包
origin: http://www.cnblogs.com/lvcha/articles/1875250.html对于基于TCP开发的通讯程序,有个很重要的问题需要解决,就是封包和拆包.自从我从事网络通讯编程工作以来(大概有三年的时间了),我一直在思索和改进封包和拆包的方法.下面就针对这个问题谈谈我的想法,抛砖引玉.若有不对,不妥之处,恳求大家指正.在此先谢过大家了. 一.为什么基于TC
2015-07-09 23:25:41 1032
转载 Ringbuffer 范例
origin: http://blog.codingnow.com/2012/04/mread.html前段时间谈到了 ringbuffer 在网络通讯中的应用 。有不少朋友写 email 和我探讨其实现细节。清明节放假,在家闲着无聊,就实现了一个试试。虽然写起来还是挺繁杂的,好在复杂度还在我的可控范围内,基本上也算是完成了。设想这样一个需求:程序 bind 并listen
2015-07-09 22:59:30 2163
转载 Ring Buffer 的应用
origin: http://blog.codingnow.com/2012/02/ring_buffer.html这是一篇命题作文,源于今天在微薄上的一系列讨(好吧,也可以说是吵架)。其实方案没有太多好坏,就看你信不信这样做能好一些或坏一些。那么,整理成 blog 写出,也就是供大家开拓思路了。我理解的需求来源于网络服务提供程序的一个普遍场景:一个服务器程序可能会收到多个客户
2015-07-09 22:57:35 1030
转载 SOCKET 封包和拆包
origin: http://blog.csdn.net/e_wsq/article/details/12835457对于基于TCP开发的通讯程序,有个很重要的问题需要解决,就是封包和拆包.自从我从事网络通讯编程工作以来(大概有三年的时间了),我一直在思索和改进封包和拆包的方法.下面就针对这个问题谈谈我的想法,抛砖引玉.若有不对,不妥之处,恳求大家指正.在此先谢过大家了.一.为什么
2015-07-07 23:55:58 1786 1
转载 经过一年时间的沉淀 再次回首 TCP Socket服务器编程
origin: http://blog.csdn.net/e_wsq/article/details/12766463前言------------------开发了这么多年,发现最困难的程序开发就是通讯系统。 其他大部分系统,例如CRM/CMS/权限框架/MIS之类的,无论怎么复杂,基本上都能够本地代码本地调试,性能也不太重要。(也许这个就是.net的企业级
2015-07-07 23:53:38 403
转载 基于win平台的高性能服务器底层通信模型设计(1)
origin: http://blog.csdn.net/sodme/article/details/392977本文作者:sodme本文出处:http://blog.csdn.net/sodme声明:本文可以不经作者同意任意转载,但请保留文章开始前的作者、出处及声明信息。谢谢。 由于个人工作的关系,接触高性能服务器的研发已经有一段时间了,在没有接触这个话题之前,我也和许
2015-07-07 23:50:05 450
转载 拼包函数及网络封包的异常处理(含代码)
origin: http://blog.csdn.net/sodme/article/details/419233本文作者:sodme本文出处:http://blog.csdn.net/sodme声明:本文可以不经作者同意任意转载、复制、传播,但任何对本文的引用都请保留作者、出处及本声明信息。谢谢! 常见的网络服务器,基本上是7*24小时运转的,对于网游来说,至少要求服务
2015-07-07 23:48:57 740
转载 PayPal高级工程总监:读完这100篇论文 就能成大数据高手
origin: http://www.csdn.net/article/2015-07-07/2825148开源(Open Source)用之于大数据技术,其作用有二:一方面,在大数据技术变革之路上,开源在众人之力和众人之智推动下,摧枯拉朽,吐故纳新,扮演着非常重要的推动作用。另一方面,开源也给大数据技术构建了一个异常复杂的生态系统。每一天,都有一大堆“新”框架、“新”类库或“新”工具,犹
2015-07-07 17:58:22 805
tcp/udp调试工具和tcp/udp server压力测试工具
2015-07-02
uboot-porting-stage4.tar.gz
2015-02-23
uboot-porting-stage2
2014-07-27
面向模式的软件体系结构-卷1模式系统
2013-01-29
Remove Google Redirects
2012-12-07
Computer Architecture, Fifth Edition: A Quantitative Approach
2012-09-06
UNIX环境高级编程第二版
2012-08-24
The.unix.programming.envirment
2012-08-24
跟我一起学Makefile
2012-07-24
tcp ip illustrated volume3
2012-06-07
tcp ip illustrated volume2.chm
2012-06-07
tcp ip illustrated volume1 2nd.Edition
2012-06-07
IEEE Std 802.1X-2004
2012-05-31
UNIX网络编程 第1卷 第三版中文.part2.rar
2012-05-12
UNIX网络编程 第1卷 第三版中文
2012-05-12
UNIX网络编程 第1卷 第三版中文.part1.rar
2012-05-12
linux内核源代码情景分析(下
2012-05-11
linux内核源代码情景分析(上)
2012-05-11
Shell脚本学习指南.pdf
2012-03-29
mit6.828_2011_JOS
2012-01-09
httpSniffer源代码
2010-04-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人