- 博客(31)
- 资源 (5)
- 收藏
- 关注
转载 C++虚函数表解析
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使用方法,我在这里不做过多
2009-04-30 19:32:00 1557
原创 一点点感受
哈哈,两年前开始学习linux内核的东东,当时觉得好难好难,硬着头皮看了两本,之后期间断断续续的学习了总之,印象中好难,好多数据结构 两年了,最近又看了一遍,突然觉得好清晰,突然觉得好多概念比脑海中之前的影像简单多了,好多内核的方法真的好巧妙,那帮子家伙太聪明了 ^_^,继续学习,虽然不做内核开发,但是对于平时的后台开发还是非常有好处的,一些算法思路也可以用到自己程序里;对底层
2009-04-27 22:53:00 1762 3
转载 Linux 内存管理 -- 高端内存的映射方式
高端内存是指物理地址大于 896M 的内存。对于这样的内存,无法在“内核直接映射空间”进行映射。为什么?因为“内核直接映射空间”最多只能从 3G 到 4G,只能直接映射 1G 物理内存,对于大于 1G 的物理内存,无能为力。实际上,“内核直接映射空间”也达不到 1G, 还得留点线性空间给“内核动态映射空间” 呢。因此,Linux 规定“内核直接映射空间” 最多映射 896M 物理内存。对 于高端内
2009-04-27 22:40:00 3165
转载 Linux 内存管理系统:初始化
作者:Joe Knapka臭翻:colyli内存管理系统的初始化处理流程分为三个基本阶段:激活页内存管理 在swapper_pg_dir中初始化内核的页表 初始化一系列和内存管理相关的内核数据 Turning On Paging (i386)启动分页机制(i386)Kernel 代码被加载到物理地址0x100000(1MB),在分页机制打开后被重新映射到PAGE_OFFSET + 0x10
2009-04-27 22:28:00 2228
转载 linux内存的使用与page buffer
可以将linux看作一个用来管理资源的程序,而其他应用程序跑在其上,linux管理应用程序的内存分配,回收,等等。为了管理,它首先需要给自己分配静态的内存空间:代码段空间,mem_map[]空间等等。然后它把剩余的其他RAM用buddy系统进行动态管理。linux内核的pagetable swapper_pg_dir将虚拟地址0xC0000000~0xC0000000+896M映射
2009-04-27 22:26:00 2266
转载 内核如何访问用户空间
内核得到用户传来的, void *p,需要访问它?copy_to_user的实现:copy_to_user__copy_to_user__copy_to_user_inatomic __put_user_size __put_user_asm/__copy_to_user_ll__copy_to_user_ll or __copy_user一般很少使用__
2009-04-27 22:14:00 3668
原创 glibc中malloc的详细解释
glibc中的malloc实现:The main properties of the algorithms are:* For large (>= 512 bytes) requests, it is a pure best-fit allocator, with ties normally decided via FIFO (i.e. least recently used).* Fo
2009-04-27 22:06:00 14702
转载 Linux 2.6 调度系统分析
级别: 初级杨沙洲 ([email protected]), 国防科技大学计算机学院, 2004 年 4 月2004 年 4 月 01 日本文从 Linux 2.4 调度系统的缺陷入手,详细分析了 Linux 2.6 调度系统的原理和实现细节,并对与调度系统相关的负载平衡、NUMA 结构以及实时性能进行了分析和评价。文末,作者从调度系统的发展和实现出发,对 Linux 的发展特点和方向提出了自己
2009-04-27 14:05:00 1711
原创 perl 解码和压码use Encode
use Encode;gbk->uft-8:$line = encode("utf-8",decode("gbk",$line));或$line = encode_utf8(decode("gbk",$line));utf-8->gbk:$line = encode("gbk", decode("utf8", $line));uft-8->gb2312:$line = encode("gb2312
2009-04-25 16:51:00 3010
原创 Perl: 向mysql数据库插入二进制字段, 并返回所插入记录的自动增长字段的值
#! c:/perl/bin/perl.exeuse strict;use warnings;use Digest::MD5;use DBI;use DBD::mysql; my $filePath = "D://malware//ixigua.exe";my $fileLen =
2009-04-25 16:47:00 2787
原创 iostat 输出解析
iostat 输出解析1. /proc/partitions对于kernel 2.4, iostat 的数据的主要来源是 /proc/partitions,而对于kernel 2.6, 数据主要来自/proc/diskstats或者/sys/block/[block-device-name]/stat。先看看 /proc/partitions 中有些什么。# cat /proc
2009-04-24 15:36:00 2427
原创 MYSQL官方提供的tuning-primer.sh
地址:http://www.day32.com/MySQL/ 运行时可以自动判断当前mysql的配置是否合理
2009-04-23 13:34:00 1808
原创 TCP/IP的多种连接情况
刚接触TCP/IP通信设计的人根据范例可以很快编出一个通信程 序,据此一些人可能会认为TCP/IP编程很简单。其实不然, TCP/IP编程具有较为丰富的内容。其编程的丰富性主要体现在 通信方式和报文格式的多样性上。一。通信方式主要有以下三大类:(一)SERVER/CLIENT方式1.一个Client方连接一个Server方,或称点对点(peer to peer): 2.多个Cl
2009-04-23 12:33:00 3403
转载 Linux下 /proc/maps 文件分析
From:http://blog.csdn.net/wenxy1/archive/2008/12/23/3591243.aspx /proc//maps查看进程的虚拟地址空间是如何使用的。该文件有6列,分别为:地址:库在进程里地址范围权限:虚拟内存的权限,r=读,w=写,x=,s=共享,p=私有;偏移量:库在进程里地址范围设备:映像文件的主设备号和次设备号;节点:映像文件的节点号;路径:
2009-04-23 11:40:00 18105
原创 关于linux内核中的"__attribute__ ((packed))"
来源: http://jimmy-lee.blog.hexun.com/8001013_d.html __attrubte__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐。 #define __u8 unsigned char #define __u16 unsigned short /* __attribute__ ((packed))
2009-04-23 10:49:00 4152
原创 内核重新计算时间片的技巧
每个cpu一个运行队列,每个队列有两个优先级数组,一个活跃的数组,一个过期的数组活跃数组内的进程还有时间片,过期数据内的进程时间片都耗光了 当一个进程的时间片用光时,会被移动到过期数组里,这个时候它的时间片又重新计算好了;当所有进程时间片都耗光了,只要让活跃数组和过期数组一交换,就完成了时间片的重新计算 适用场景:一组资源的状态会经常改变,每次改变都要重新计算
2009-04-21 14:18:00 2011
原创 LRU(最近最少使用页面置换算法)淘汰算法
什么是LRU算法? LRU是Least Recently Used的缩写,即最近最少使用页面置换算法,是为虚拟页式存储管理服务的。关于操作系统的内存管理,如何节省利用容量不大的内存为最多的进程提供资源,一直是研究的重要方向。而内存的虚拟存储管理,是现在最通用,最成功的方式——在内存有限的情况下,扩展一部分外存作为虚拟内存,真正的内存只存储当前运行时所用得到信息。这无疑极大地扩充了内存的功能,极
2009-04-21 14:17:00 8415
原创 新浪的ncache和memcachedb
http://code.google.com/p/ncache/浏览器--->ncache--->web端server(apache,nginx等)----> 逻辑server---->cache---->db访问量比较高时可以用上面的关系,ncache处于数据的缓冲层 http://code.google.com/p/memcachedb/上面的关系里,cache和db可以用
2009-04-20 17:41:00 1897
转载 Linux 异步IO机制
Linux的I/O机制经历了一下几个阶段的演进:1. 同步阻塞I/O: 用户进程进行I/O操作,一直阻塞到I/O操作完成为止。2. 同步非阻塞I/O: 用户程序可以通过设置文件描述符的属性O_NONBLOCK,I/O操作可以立即返回,但是并不保证I/O操作成功。3. 异步事件阻塞I/O: 用户进程可以对I/O事件进行阻塞,但是I/O操作并不阻塞。通过select/poll/epoll等函数调用来达
2009-04-20 17:28:00 10655 2
转载 内存地址的对齐
From:http://blog.csdn.net/cg05568256068/archive/2009/04/17/4086451.aspx内存地址的对齐主要考虑三个因素: 1:对于每个成员的起始地址是他本身所占的整数倍 2:整个所占的内存是成员中占的地址内存最多的整数倍 3:有#pragma pack(int)进行设置,如果结构体某成员的sizeo
2009-04-17 13:59:00 1715
原创 Linux中确定CPU的情况
一些操作系统的最新版本已经更新了 /proc/cpuinfo 文件,以支持多路平台。如果您的系统中的 /proc/cpuinfo 文件能够正确地反映出处理器信息,那么就不需要执行上述步骤。反之,可采用本文中的信息进行解释。/proc/cpuinfo 文件包含系统上每个处理器的数据段落。/proc/cpuinfo 描述中有 6 个条目适用于多内核和超线程(HT)技术检查:processor, v
2009-04-16 20:58:00 3376
转载 海量小文件存储
转自:http://chaoqun.17348.com/2009/04/deal-with-tons-of-small-files/ Web2.0网站,数据内容以几何级数增长,尤其是那些小文件,几K~几百K不等,数量巨多,传统的文件系统处理起来很是吃力,很多网站在scaling的过程中都遇到了这样的问题:磁盘IO过高;备份困难;单点问题,容量和读写无法水平扩展,还存在故障的可能。You
2009-04-16 13:55:00 3936
转载 qsort 与bsearch
兩個最重要的資料結構就是「搜尋」和「排序」了,所以看過資料結構的人,想必知道快速排序算是在排序中最好用的,而二元搜尋也是一樣,但是實做的過程往往很複雜,但是std的標準函式庫已有提供給我們使用了,以下就來討論如何使用qsort和bsearch。※qsort函式void qsort( void *buf, size_t num, size_t size, int (*compare)
2009-04-15 13:43:00 2372 2
原创 qsort快速排序的整理
最近用到了qsort,简单整理一下,方便以后的查找 qsort,包含在stdlib.h头文件里,函数一共四个参数,没返回值.一个典型的qsort的写法如下qsort(s,n,sizeof(s[0]),cmp);其中第一个参数是参与排序的数组名(或者也可以理解成开始排序的地址,因为可以写&s[i]这样的表达式,这个问题下面有说明); 第二个参数是参与排序的元素个数; 第三个三数是单个
2009-04-15 13:34:00 4003 2
转载 最快排序和搜索算法的最简代码实现
最快排序和搜索算法的最简代码实现 By 沈东良 http://blog.csdn.net/shendl/前言 算法的核心问题是排序和搜索。这2个领域应用最广,研究也最透。本文我将
2009-04-15 13:29:00 1932 1
转载 在x64位Linux上生成动态链接库必须使用编译选项-fPIC的问题
2008年09月26日 星期五 16:33在 Linux 下制作动态链接库,“标准” 的做法是编译成位置无关代码(Position Independent Code,PIC),然后链接成一个动态链接库。经常遇到的一个问题是 -fPIC 是不是必需,因为好像不加经常也能正常运行,只是创建 .so 的时候会有一个警告。搜索、试验了一下,答案似乎是这样:(1) 通常的建议是始终加上
2009-04-14 19:32:00 2535 1
转载 R_X86_64_32 & could not read symbols: Bad value
R_X86_64_32 & could not read symbols: Bad value编译在suse64位平台上,libx.a是一个静态库,可以编译成功,但另一动态库链接它时报如下错误:/usr/lib64/gcc/x86_64-suse-linux/4.1.0/../../../../x86_64-suse-linux/bin/ld: /usr/local/libx.
2009-04-14 19:16:00 9525 1
转载 利用 AWK 的数值计算功能提升工作效率
Awk 是一种优秀的文本样式扫描和处理工具。本文侧重介绍了 awk 在数值计算方面的运用,并通过几个实际工作中的例子,阐述了如何利用 awk 的计算功能来提高我们的工作效率。Awk 是一种优秀的文本样式扫描和处理工具。 Awk 与 sed 和 grep 有些相似, 但功能比后者强不少。 awk 提供的功能包括样式载入, 流控制,数学运算符,进程控制以及许多内置的变量和函数等。 借助于这些功
2009-04-11 10:19:00 1903
转载 Linux 内核中的 GCC 特性
Linux 内核中的 GCC 特性了解用于 C 语言的 GCC 扩展文档选项打印本页将此页作为电子邮件发送英文原文级别: 中
2009-04-11 09:32:00 1000
转载 揭开Linux操作系统的Swap交换区之谜
作者: cc, 出处:IT专家网论坛, 责任编辑: 罗丽艳, 2009-04-08 09:37 Swap,即交换区,除了安装Linux的时候,有多少人关心过它呢?其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。 Swap,即交换区,除了安装Linux的时候,有多少人关心过它呢?其实,S
2009-04-09 09:26:00 1217 1
转载 深入理解linux系统下proc文件系统内容
作者:佚名 来源:互联网内容摘要:Linux系统上的/proc目录是一种文件系统,即proc文件系统。 Linux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其
2009-04-01 18:11:00 4959
memcache1.2.8源码分析(源码有注释+ppt说明)
2009-06-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人