E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
Muduo源代码分析
Linux经典书籍推荐
国产经典《Linux驱动详细解》也是一本非常不错的书,很实用,书中
源代码分析
比较多,基于2440的,对
v5qqbrowser
·
2012-07-07 17:00
linux
libevent-1.1a
源代码分析
原文:http://blog.163.com/ecy_fu/blog/static/444512620094291011129/ 如果想深入理解memcached源代码,那么理解libevent的机制是非常重要的,多线程版的memcached中每个线程都要同1个event_base,其对libevent的使用复杂度超过了单线程的libevent,所以分析libevent-1.1a也为
dengxu11
·
2012-07-06 15:00
struct
insert
callback
Signal
events
代码分析
(莱昂氏unix
源代码分析
导读-21)时钟中断处理
时钟中断是系统中最重要的中断,每个时钟滴答都会产生时钟中断,它的中断矢量为(0100)或(0103)。 0533:.=100^.0534: kwlp;br60535: kwlp;br6 0569:.globl _clock0570:kwlp: jsrr0,call;_clock 显然,时钟中断会通过call例程调用_clock函数,对clock函数,11.1小节有详细的介绍。
cszhao1980
·
2012-07-02 12:00
《
Muduo
网络库:现代非阻塞C++网络编程》演讲
《
Muduo
网络库:现代非阻塞C++网络编程》演讲2012年6月30日下午将在深圳做《
Muduo
网络库:现代非阻塞C++网络编程》演讲,这是PPT:http://www.slideshare.net/chenshuo
陈硕的Blog
·
2012-07-01 23:00
《
Muduo
网络库:现代非阻塞C++网络编程》演讲
2012年6月30日下午将在深圳做《
Muduo
网络库:现代非阻塞C++网络编程》演讲,这是PPT:http://www.slideshare.net/chenshuo/
muduo
-network-library
·
2012-07-01 23:00
网络编程
linux驱动编写之十三(设备模型之sysfs,bus,device,driver
源代码分析
)
sysfs文件系统存在于内存中,是一个虚拟文件系统,其提供了kobject对象层次的视图,可以让用户以一个简单文件系统的方式来观察系统中的各种设备的拓扑结构,使用属性对象,kobject可以导出文件的方式,将内核变量提供给用户读取或者写入。在2.6内核的系统中,都拥有sysfs文件系统。sysfs将kobject对象与目录项紧密联系,通过kobject结构体中的dentry字段实现的。sysfs根
bbs598598
·
2012-07-01 18:00
linux
struct
File
null
代码分析
symlink
《
Muduo
网络库:现代非阻塞C++网络编程》演讲
2012年6月30日下午将在深圳做《
Muduo
网络库:现代非阻塞C++网络编程》演讲,这是PPT:http://www.slideshare.net/chenshuo/
muduo
-network-library
Solstice
·
2012-06-29 23:00
编程
C++
网络
活动
MD5
源代码分析
、供大家学习
无聊之际,把加密的算法给大家。// shiyan.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include /* Constants for MD5Transform routine.*/#define S11 7#define S12 12#define S13 17#define S14 22#define S21
long892230
·
2012-06-26 19:00
c
list
buffer
input
output
代码分析
Tomcat7调试运行环境搭建与
源代码分析
入门 Tomcat7的核心架构图
1.需要准备好下面这些工具JDK1.6+Maven2或3TortoiseSVN1.7+(从1.7开始”.svn”目录集中放在一处了,不再每个目录下都放一份)Eclipse3.5+这4个工具不在这里描述怎么配置了,如果你是有两三年开发经验的Java开发人员,正常来讲都一直在用了。另外,分析tomcat源代码不需要对这4个工具做什么特殊配置。2.下载Tomcat的源代码Apache旗下的开源项目基本上
ajian005
·
2012-06-26 19:00
java
eclipse
maven
tomcat
tortoiseSVN
(莱昂氏unix
源代码分析
导读-20)中断、陷入的入口和出口
陷入处理程序的入口都为“trap”(这里是指一个汇编程序,而非PDP11指令);中断则不同。他们有不同的入口,如:525 .=60^. 当前地址设置为60octal526 klin;br4 /(中断矢量地址为60,电传打字机输入的中断处理程序)527 klou;br4
cszhao1980
·
2012-06-25 12:00
数据结构
unix
汇编
user
语言
代码分析
(莱昂氏unix
源代码分析
导读-19)再谈进程swtch
我们已经涉及到了部分进程切换的概念,在本章中,我们会从更一般的意义上考察进程切换的行为。首先,进程切换(也称作contextswitch)一定是在内核中完成的。比如,以下为发生进程切换的最常见的情况:(1) active进程因等待某资源阻塞,自动让出cpu;(2)进程时间片用完; 情况1中,进程会通过系统调用进入内核,在内核态让出cpu;而情况2的检查是在时钟中断处理程序中进行的。 就其原因来
cszhao1980
·
2012-06-18 12:00
unix
struct
user
null
Signal
代码分析
wireshark
源代码分析
经过多次尝试,终于在windows上成功编译wireshark源代码,但用的不是下面的这个步骤,不过大同小异,我的是vs2005,所以用的:http://blog.csdn.net/alexander_vc/article/details/6198836的方法。1.2.7版的wireshark的capture_if_details_dlg_win32.c对vs2005有bug,需要下载更新的wir
xieqb
·
2012-06-15 19:00
hadoop datanode源码分析
DataNode
源代码分析
: 1.简介:DataNode是文件存储的基本单元,它将Block存储在本地文件系统中,保存了Block的Meta-data, 同时周期性地将所有存在的Block信息发送给NameNode
flyingpig4
·
2012-06-15 17:00
hadoop
socket
null
存储
buffer
代码分析
Tomcat7调试运行环境搭建与
源代码分析
入门
1.需要准备好下面这些工具JDK1.6+Maven2或3TortoiseSVN1.7+(从1.7开始”.svn”目录集中放在一处了,不再每个目录下都放一份)Eclipse3.5+这4个工具不在这里描述怎么配置了,如果你是有两三年开发经验的Java开发人员,正常来讲都一直在用了。另外,分析tomcat源代码不需要对这4个工具做什么特殊配置。2.下载Tomcat的源代码Apache旗下的开源项目基本上
阿里中间件
·
2012-06-12 08:00
tomcat7
源代码分析
调试运行环境搭建
Boost中的function和bind功能,实现Linux下线程类封装
最近在看陈硕的
MUDUO
网络通信库的过程中,发现作者大量使用了Boost::function以及Boost::bind功能,为了能够正常的学习作者的代码,决定先弄明白function以及bind的功能。
西昆仑
·
2012-06-11 23:00
boost::bind
boost::function
Android系统匿名共享内存Ashmem(Anonymous Shared Memory)在进程间共享的原理分析
在前面一篇文章Android系统匿名共享内存Ashmem(AnonymousSharedMemory)驱动程序
源代码分析
中,我们系统地介绍了Android系统匿名共享内存的实现原理,其中着重介绍了它是如何辅助内存管理系统来有效地管理内存的
Hnust_cool
·
2012-06-11 20:00
Android系统匿名共享内存Ashmem(Anonymous Shared Memory)驱动程序
源代码分析
在上一文章Android系统匿名共享内存Ashmem(AnonymousSharedMemory)简要介绍和学习计划中,我们简要介绍了Android系统的匿名共享内存机制,其中,简要提到了它具有辅助内存管理系统来有效地管理内存的特点,但是没有进一步去了解它是如何实现的。在本文中,我们将通过分析Android系统的匿名共享内存Ashmem驱动程序的源代码,来深入了解它是如何辅助内存管理系 A
Hnust_cool
·
2012-06-11 19:00
android
list
struct
cache
jni
linux内核
Android系统进程间通信Binder机制在应用程序框架层的Java接口
源代码分析
在前面几篇文章中,我们详细介绍了Android系统进程间通信机制Binder的原理,并且深入分析了系统提供的Binder运行库和驱动程序的源代码。细心的读者会发现,这几篇文章分析的Binder接口都是基于C/C++语言来实现的,但是我们在编写应用程序都是基于Java语言的,那么,我们如何使用Java语言来使用系统的Binder机制来进行进程间通信呢?这就是本文要介绍的Android系统应用程序框架
Hnust_cool
·
2012-06-11 19:00
java
android
框架
manager
service
Descriptor
Android系统进程间通信(IPC)机制Binder中的Client获得Server远程接口过程
源代码分析
在上一篇文章中,我们分析了Android系统进程间通信机制Binder中的Server在启动过程使用ServiceManager的addService接口把自己添加到ServiceManager守护过程中接受管理。在这一篇文章中,我们将深入到Binder驱动程序源代码去分析Client是如何通过ServiceManager的getService接口中来获得Server远程接口的。Client只有
Hnust_cool
·
2012-06-11 19:00
thread
android
server
manager
service
代码分析
Android系统进程间通信(IPC)机制Binder中的Server启动过程
源代码分析
在前面一篇文章浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得ServiceManager接口之路中,介绍了在Android系统中Binder进程间通信机制中的Server角色是如何获得ServiceManager远程接口的,即defaultServiceManager函数的实现。Server获得了ServiceManager远程接口之后,就要把自己的S
Hnust_cool
·
2012-06-11 19:00
thread
android
server
manager
service
代码分析
Android版块开发资源大汇总
android开发资料大集合Android开发资料分享-免积分(升级版)Android近百个项目的源代码,覆盖Android开发的每个领域android新手入门资料无私奉献(无需积分下载)android系统
源代码分析
电子书
qq282133
·
2012-06-11 16:00
(莱昂氏unix
源代码分析
导读-18) 再谈中断与陷入
从产生原因看,中断和陷入也有巨大的差别。 硬件中断由外部事件造成,属于异步事件,往往与当前进程毫无关系;陷入则不同,它常常都是同步的(如除0错),并与当前进程上下文相关。 除此之外,陷入还用来实现系统调用——内核为user进程提供了大量的服务,这些服务就是通过系统调用来访问的。PDP11提供了trap指令来使user进程进入内核,进行系统调用。 由于系统调用的存在,内核在逻辑上可以分为上下两层。
cszhao1980
·
2012-06-11 12:00
数据结构
unix
user
代码分析
Android应用程序启动过程
源代码分析
前文简要介绍了Android应用程序的Activity的启动过程。在Android系统中,应用程序是由Activity组成的,因此,应用程序的启动过程实际上就是应用程序中的默认Activity的启动过程,本文将详细分析应用程序框架层的源代码,了解Android应用程序的启动过程。 在上一篇文章Android应用程序的Activity启动过程简要介绍和学习计划中,我们举例子说明了启动Andr
·
2012-06-10 23:00
java中HashMap详解
通过HashMap、HashSet的
源代码分析
其Hash存储机制实际上,Ha
kavensu
·
2012-06-08 13:00
TestNG
源代码分析
--- 依赖管理的实现(二)
在上一篇文章中,留下了一些的问题:Graph对象中的一些字段是怎么被初始化的?在使用Graph对象的topologicalSort方法的时候,需要用到这些字段,比如m_nodes以及m_independentNodes这两个集合,它们分别存放的是所有的节点的引用以及所有独立节点的引用。Graph对象是如何使用的,即方法调用栈的上层是如何调用Graph中的topologicalSort方法的。关于环
dm_vincent
·
2012-06-07 13:00
发布适合服务端C++程序的高效日志库
v=KM_eQ6uRYdU代码位于
muduo
Solstice
·
2012-06-06 21:00
C++
网络
中断上下文
中断上下文基于
源代码分析
Linux-2.4、2.6系统中断处理程序下半部王海花杨斌李东亮(西南交通大学信息科学与技术学院,四川成都610031)摘要:linux设备驱动中,中断处理程序由于本身的局限性,
linxiaowu66
·
2012-06-06 17:00
linux
工作
exception
struct
任务
linux内核
muduo
网络库使用心得
上个月看了朋友推荐的mudo网络库,下完代码得知是国内同行的开源作品,甚是敬佩。下了mudo使用手册和035版的代码看了下结构,感觉是一个比较成熟而且方便使用的网络库。本人手头也有自己的网络库,虽然不敢说是一个多强大的网络库,但毕竟在外网也稳定运营了几年,多组同时在线也跑过30w左右,单组服务器也能跑上w人。做游戏服务器几年的经验,感觉稳定性才是网游服务器最核心最重要的环节,效率还在其次,这也是目
皮皮猪头
·
2012-06-05 21:54
c++
muduo
网络库使用心得
上个月看了朋友推荐的mudo网络库,下完代码得知是国内同行的开源作品,甚是敬佩。下了mudo使用手册和035版的代码看了下结构,感觉是一个比较成熟而且方便使用的网络库。本人手头也有自己的网络库,虽然不敢说是一个多强大的网络库,但毕竟在外网也稳定运营了几年,多组同时在线也跑过30w左右,单组服务器也能跑上w人。做游戏服务器几年的经验,感觉稳定性才是网游服务器最核心最重要的环节,效率还在其次,这也是目
cyblueboy83
·
2012-06-05 21:00
游戏
tcp
网络
服务器
解密
网游
(莱昂氏unix
源代码分析
导读-17)系统初启(10)
小结本章的内容到此结束。由于我们跳过了一些专题,启动代码中仍有一些未解之谜,但它的神秘面纱已经揭开,这是一个好的开始。 最后,给出fuibyte(0)的分析结果:0814_fuibyte:0815_fubyte:0816mov2(sp),r1 /参数(输入地址)--->r10817bic$1,r1 /r1低位清0,即
cszhao1980
·
2012-06-05 11:00
unix
byte
代码分析
TestNG
源代码分析
--- 依赖管理的实现(一)
最近看了一些TestNG的源代码,觉得这个测试框架的功能其实满强大的,里面的功能点很多,以后有机会慢慢分析一下它们的实现方法,今天主要介绍一下它如何实现方法之间的依赖关系。 背景知识: 想必大家都知道拓扑排序吧,拓扑排序最经典的应用场景就是对于Jobs/Tasks的规划,即对于存在前后依赖关系的任务如何安排一个计划来执行它们。相关的资料,可以参考维基百科:http://en.wikipedia.o
dm_vincent
·
2012-06-04 19:00
object
正则表达式
Graph
dependencies
代码分析
sorting
(莱昂氏unix
源代码分析
导读-16)系统初启(9)
回到start 现在,继续#1进程之旅。main()1627if(newproc()){ 1628 expand(USIZE+1); /调整进程“私有空间”大小,暂不考虑换出情况的话程序/较简单,读者自行分析1629 estabur(0,1,0,0);
cszhao1980
·
2012-06-04 12:00
(莱昂氏unix
源代码分析
导读-15) 系统初启(8)
进程user态下的分段 User态中将进程空间分为text、data、stacksegment三部分。 estabur(nt,nd,ns,sep)根据各个segment的大小,为各段分配page,参数如下:(1)nt——textsegment的长度(block)(2)nd——datasegment的长度(block)(3)ns——stacksegment的长度(block) (4)sep——
cszhao1980
·
2012-06-01 12:00
unix
user
null
UP
代码分析
(莱昂氏unix
源代码分析
导读-14)系统初启(7)
#1进程 现在,是#1进程的天下了。回到main函数:1627if(newproc()){ /返回值为1,要执行以下的语句1628 expand(USIZE+1); /扩展进程私有空间,增大1个block 1629 estabur(0,1,0,0); 1630 copyout(icode,0,si
cszhao1980
·
2012-05-31 12:00
unix
struct
user
prototype
扩展
代码分析
(莱昂氏unix
源代码分析
导读-13)系统初启(6)
#0进程的switch 我们已经了解了进程的switch原理,接下来,我们继续跟踪#0进程,看发生了什么。 1940:sched()1941:{……1951:gotoloop;……1957:loop:1958: spl6();
cszhao1980
·
2012-05-30 12:00
unix
struct
null
search
Signal
代码分析
《LINUX3.0内核
源代码分析
》第一章:内存寻址
法律声明:《LINUX3.0内核
源代码分析
》系列文章由谢宝友(
[email protected]
)发表于http://xiebaoyou.blog.chinauni
ekenlinbing
·
2012-05-29 16:00
linux
struct
table
代码分析
optimization
linux内核
(莱昂氏unix
源代码分析
导读-12)系统初启(5)
进程switch现在让我们考虑一个问题,如何确定当前Active的进程是哪个呢?要知道,进程并不独享某段代码,我们不可能通过当前执行的代码来确定哪个进程处于Active状态。 显然,应该通过进程私有的东西来确定——而进程所私有的只有一样,即Kernelpage6(即ppda所在的Page)。我们通过KISA6来确定Active进程,即KISA6指向哪个进程的“私有空间”,则该进程就是Active进
cszhao1980
·
2012-05-29 12:00
unix
代码分析
(莱昂氏unix
源代码分析
导读-11)系统初启(4)
本章讨论进程复制,继续Main函数。 1625*/16261627if(newproc()){ …… 现在看newproc的代码。1826newproc()1827{ ......1840retry:1841 mpid++;
cszhao1980
·
2012-05-28 12:00
unix
user
null
UP
代码分析
Linux内核
源代码分析
5.28
主要是多处理器的时候SMP系统上的问题,不了解。恩。首先SMP系统每个CPU上面都会有一个idle进程。系统进行进程切换的时候必须关注每个CPU的变化。task_struct上有两个字段对此进行表明has_cpu//1表示在某个CPU运行,0表示无 processor并且会保存该任务运行的CPU的编号以及上次运行的CPU的编号。实际上,调度依据很多完成调度的函数是schedule。调度之前必须调用
kurama_sai
·
2012-05-28 11:00
(莱昂氏unix
源代码分析
导读-10)系统初启(3)
接下来我们将开始了解操作系统中最重要的概念——进程。正如书中所言,为进程给出一个确切的定义是十分困难的。我们会不断的通过代码去了解进程,直到对其有一个较清晰的认识。 首先,要解决生存还是毁灭的大问题。即进程存在的标志是什么——我们怎末确定一个进程是否存在?很简单,正如莱昂在书中强调的那样,每个进程都有其“私有的空间”——即PPDA所在的kernelpage(kernelpage#6)。当分配了一个
cszhao1980
·
2012-05-25 12:00
(莱昂氏unix
源代码分析
导读-9)系统初启(2)
2.2main现在,让我们看看main。C语言代码,我们的老朋友。1550main()1551{ ......15581559updlock=0;1560i=*ka6+USIZE; /i为PPDA之后的block的block号1561UISD->r[0]=077406; /077406,熟悉的数字4krw1562for(;;){
cszhao1980
·
2012-05-24 11:00
c
IO
unix
语言
代码分析
(莱昂氏unix
源代码分析
导读-8)系统初启(1)
现在,到了真正开始阅读unix源码的时候了。当然,要从系统启动开始。 PDP-11启动时,首先激活常驻在处理机中ROM里的引导程序。ROM中的引导装入程序装入一更大的装入程序(从系统盘的#0块),该程序查找并将称为“/unix”的文件装入到内存的低地址部分。然后,它将控制转移到已装入#0地址的指令。 我们的代码之旅,就从#0地址开始。502 br4 =200503 br5 =240504
cszhao1980
·
2012-05-23 11:00
unix
vector
struct
IO
user
代码分析
(莱昂氏unix
源代码分析
导读-7) c语言若干问题
Unix的开创者之一丹尼斯-里奇,同时也是C语言的老祖宗。他把c语言引入了unix,从而开辟了一个崭新的时代。C语言和unix的关系,真真称的上是鱼水情深,密不可分。毫不夸张的说,是c语言成就了unix,而同时也是unix成就了c语言。 大家对这门语言自然是十分熟悉,但在这里我还是要多说几句。 首先,我们所分析的代码写于70年代初中期,其时c语言也刚刚成型,其语法与现在的c语言稍有不同,比如:(
cszhao1980
·
2012-05-22 11:00
c
unix
struct
语言
csv
代码分析
(莱昂氏unix
源代码分析
导读-6) stack使用和进程的分段
1.Stack使用:PDP11使用倒置的栈,即栈底在高地址,栈向低地址生长,如下图所示:(1) 压栈示例:MOVR1,–(SP) 先移动SP,再放置R1(2) POP示例:MOV(SP)+,R1 先取栈内值,再移动栈指针释放该地址。 参数压栈规则:(1) 参数逆序压栈;(2)
cszhao1980
·
2012-05-21 11:00
Date
unix
byte
代码分析
subroutine
Linux下获得CPU利用率和内存使用情况(C实现)
本文中的代码是从top命令的
源代码分析
中获得,并做了部分修改,在FC6+GCC4.1调试通过。从这个工程中我也获得一些感悟。
pointfish
·
2012-05-21 09:00
读周爱民《javascript语言精髓与编程实践》有感
记得从很早以前学delphi的时候就是拜读周老师的书,从他的《delphi
源代码分析
》(好像是这个名字,记不太清楚了)学到了很多delphi的精髓,并解决了很多工作中的问题。
Frankie199
·
2012-05-20 00:00
JavaScript
nginx
源代码分析
Nginx可以开启多个进程,每个进程拥有最大上限128个子线程以及一定的可用连接数。如果你希望使用线程可以在配置文件中设置worker_threads这个参数,但这个参数在Nginx官方手册上没有。只有通过阅读源代码才看到。最大客户端连接数等于进程数与连接数的乘积,连接是在主进程中初始化的,一开始所有连接处于空闲状态。每一个客户端请求进来以后会通过事件处理机制,在Linux是Epoll,在Free
ab198604
·
2012-05-19 23:00
nginx
String
Module
command
null
events
hashmap底层原理1
HashMap
源代码分析
大家在项目中很频繁的用到了java.util.HashMap 类,但是你对其内部实现是否了解呢?最近我分析了一下该类的源码,抛砖引玉,和大家分享讨论一下。
y_static_y
·
2012-05-19 17:08
java
HashMap
Hashtable
(莱昂氏unix
源代码分析
导读-5) 中断与陷入初探
对于中断,大家应该都比较熟悉。莱昂氏书中的第9章对这部分也有精彩的讲解,一定要多读多看,确保深入理解。我在这里还是啰嗦几句。(1)中断由其他硬件(非CPU)产生的,带有优先级,如CPU当前优先级高于中断优先级,该中断不会被马上处理。 硬件产生的最高优先级中断为6。因此,将CPUpriority设置为7时,可屏蔽硬件中断。代码中有大量这样的设置, refertoPSre
cszhao1980
·
2012-05-18 11:00
unix
vector
System
代码分析
subroutine
(莱昂氏unix
源代码分析
导读-4)PDP11/40系统简介(下)
1 PageRegister 分为AddressRegister和DescriptionRegister,在“存管系统”起效后使用。Kernel和User态各有8组Register,分别完成8页的“物理---逻辑”地址映射。 比如,代码中对AddressRegister有如下的声明: Kernel User1
cszhao1980
·
2012-05-17 12:00
unix
user
代码分析
上一页
71
72
73
74
75
76
77
78
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他