- 博客(58)
- 资源 (3)
- 收藏
- 关注
原创 书单
1. 深入理解linux 内核;2.C++ Concurrency in Action3.c++ design & evoluatioon4.深入理解C++11 ;
2019-09-09 12:25:22
310
原创 ss
当从BGP邻居接收到Update报文时,路由器将会执行路径选择算法,来为每一条前缀确定最佳路径得出的最佳路径被存储到本地BGP路由表(local_RIB)中,然后被提交给本地IP路由表BGP的属性...
2019-08-27 13:59:56
393
原创 好文章
看完此文,题目不言自明。转自http://blog.chinaunix.net/uid-27105712-id-3270102.html在Linux开发中,有几个关系到性能的东西,技术人员非常关注:进程,CPU,MEM,网络IO,磁盘IO。本篇文件打算详细全面,深入浅出。剖析文件IO的细节。从多个角度探索如何提高IO性能。本文尽量用通俗易懂的视角去阐述。不copy内核代码。...
2019-08-18 14:38:10
203
原创 内存原理
【底层原理】用户进程缓冲区和内核缓冲区 常常听到有程序员会跟你讨论:“我们在读写文件的时候,系统是有缓存的”。但实际上有一部分人把用户进程缓存区和系统空间缓存区的概念混淆了,包括这两种缓冲区的用法和所要解决的问题,还有其它类似的概念。本文就来区分一下不同的缓冲区概念(主要针对类unix平台)。 用户进程和操作系统的关系,首先我用一张图来解释“用户进程和操作系统的关系 这...
2019-08-18 00:33:36
630
原创 内核缓冲区
随笔 - 953, 文章 - 0, 评论 - 14, 引用 - 0C 标准库IO缓冲区和内核缓冲区的区别1.C标准库的I/O缓冲区 UNIX的传统 是Everything is a file,键盘、显示器、串口、磁盘等设备在/dev 目录下都有一个特殊的设备文件与之对应,这些设备文件也可以像普通文件(保存在磁盘上的文件)一样打开、读、写和关闭,使用的函数接口是相同的。用户...
2019-08-17 23:57:25
797
原创 好闻要顶
mmap vs read先放个结论:内存映射通常比随机访问更快,尤其访问的对象是分离的和不可预测的. 内存映射会持续占用pages, 直到完成访问. 这意味当长时间重度使用一个文件很久之前, 然后你关闭了它, 然后再重新打开, 它会直接cache hit, 文件命中. 而Read方法, 这个文件已经早被flush走了. mmap 用完立马丢弃它, 它把文件映射到了内存上. Read读文...
2019-08-17 23:57:06
202
原创 虚拟内存
虚拟内存管理现代操作系统充分利用MMU提供的VA到PA的映射机制来做内存管理,以下称为虚拟内存管理(Virtual Memory Management)。首先看下面的例子:解析:进程的地址空间这是bash进程的虚拟地址空间,32位CPU的虚拟地址空间是4GB,也就是0x0000 0000-0xffff ffff,该进程占用的地址范围近似为0x0000 0000-0xbfff ff...
2019-08-02 11:22:50
436
原创 https://www.cnblogs.com/beiluowuzheng/p/9691148.html
https://www.cnblogs.com/beiluowuzheng/p/9691148.html进程通信好文
2019-08-01 16:19:06
6252
原创 glibc 的free 不怎么生效的情况
我注意到了>M_MXFAST 这个条件,这个条件的介绍为:1.M_MXFASTM_MXFAST用于设置fast bins中保存的chunk的最大大小,默认值为64B,fast bins中保存的chunk在一段时间内不会被合并,分配小对象时可以首先查找fast bins,如果fast bins找到了所需大小的chunk,就直接返回该chunk,大大提高小对象的分配速度,但这个...
2019-07-31 15:31:18
274
原创 https://www.cnblogs.com/hlxs/p/3737687.html 好文一篇
《STL系列》之vector原理及实现https://www.cnblogs.com/hlxs/p/3737687.html
2019-07-30 21:58:34
497
原创 真的是太牛逼了,哈哈哈哈哈哈
双十一今天是双十一,记得还在念书的时候,每次都会参加京东图书满200-100的活动,然后脑子一热屯一堆书。印象中人文类的书基本都会看,而电子信息类的可能就只看了一半,甚至买过哪些都忘了。究其原因,主要是人文类的通常都是自己想看的,而技术类的就跟风看哪个销量大买哪个,比如下面这本《UNIX 网络编程》如果现在让我给别人推荐学习网络编程的书,我一定不会推荐这本。为什么呢? 倒不是因为书中内容说...
2019-07-30 20:05:39
265
原创 协议报文 和 数据报文
协议报文即各种网络协议报文,此报文区别于用户数据报文。用户报文是用户使用各种应用的流量。如在路由器处理中,协议报文即各种路由协议传递,他的方向与用户报文的方向(我们正常流量的方向)相反。在聚合组中选择接口和备用接口都可以处理协议报文,但备用接口不转发用户报文...
2019-07-29 19:58:58
3206
原创 动态so
编写一个linux动态so,可使用的内存类型有:数据段(全局变量、静态变量),堆内存,栈内存(栈变量),以及线程局部内存。后两种内存不能在线程间共享,使用简单。前两种内存生命周期长,又可以跨线程访问,使用起来就复杂得多。堆内存的使用,相关讨论和文献最多,这里不细说。全局变量和静态变量,在动态so里使用需要小心。一个程序设计成动态so,使用场景当然是供多个进程调用。那么,动态so里的全局变量...
2019-07-29 15:41:18
383
原创 引用 和指针 ,简单, 一怔见血
从概念上讲。指针从 本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。而引用是一个别名, 它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量)。在C++中,指针和引用经常用于函数的参数传递,然而,指...
2019-07-29 10:03:23
174
原创 virtual memory。尔等膜拜
参考 : 4 ways to check size of physical memory (RAM) in Linuxhttps://kerneltalks.com/linux/4-ways-to-check-size-of-physical-memory-in-linux/ 深入理解虚拟内存机制https://www.jianshu.com/p/13e337312651 linux内存分配...
2019-07-24 16:47:46
255
原创 objdump
#!/bin/shif [[ $# -ne 2 ]]; then echo "Usage: JX_objdump microkernel main"; exit 0;fiarray=(`nm -n "$1" |grep -A 1 -F "$2" | awk '($2=="T" || $2=="t"){print "0x"$1}' |xargs`);if [...
2019-07-22 19:52:47
322
原创 strace
1.被跟踪程序示例//main.c#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int main( ){ int fd ; int i = 0 ; fd = open( “/tmp/foo”, O_RDONLY ) ; if ( fd < 0 ) ...
2019-07-22 17:45:32
238
原创 strace
http://xiaorui.cc/2018/06/23/strace%E5%88%86%E6%9E%90%E8%BF%BD%E8%B8%AAmalloc%E7%94%B3%E8%AF%B7%E5%86%85%E5%AD%98%E8%BF%87%E7%A8%8B/
2019-07-22 17:18:58
208
原创 多线程
set scheduler-locking off|on|step估计是实际使用过多线程调试的人都可以发现,在使用step或者continue命令调试当前被调试线程的时候,其他线程也是同时执行的,怎么只让被调试程序执行呢?通过这个命令就可以实现这个需求。off不锁定任何线程,也就是所有线程都执行,这是默认值。on只有当前被调试程序会执行。step在单步的时候,除了next过一...
2019-07-22 15:54:16
138
原创 进程状态
linux上进程有5种状态:1. 运行(正在运行或在运行队列中等待)2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行...
2019-07-17 15:44:42
267
原创 进程状态
ps 的手册里说D状态是uninterruptible sleep,Linux进程有两种睡眠状态,一种interruptible sleep,处在这种睡眠状态的进程是可以通过给它发信号来唤醒的,比如发HUP信号[kill -1 PID(进程号)]给进程可以让其重新加载配置文件而不需要重新启动进程;另外一种睡眠状态是uninterruptible sleep,处在这种状态的进程不接受外来的任何信号...
2019-07-17 15:33:20
178
原创 so 符号表, 可执行文件
Linux内核和许多其他自由软件以及开放源码应用程序都是用C语言编写并使用GCC编译的。1.编译单个源文件为了进行测试,你可以创建“Hello World”程序:[c]view plaincopy#include<stdio.h> #include<stdlib.h> intmain(intargc,char**ar...
2019-07-16 15:42:41
1237
原创 最好的makefile(3)
https://www.kancloud.cn/wizardforcel/gdb-tips-100/146758:linux 命令大全:http://man.linuxde.net/traphttps://codingstandards.iteye.com/blog/836588一、变量的基础变量在声明时需要给予初值,而在使用时,需要给在变量名前加上“$”符号,但最好用小括号“(...
2019-07-15 10:18:17
195
原创 最好的makefile(2)
四、文件搜寻在一些大的工程中,有大量的源文件,我们通常的做法是把这许多的源文件分类,并存放在不同的目录中。所以,当make需要去找寻文件的依赖关系时,你可以在文件前加上路径,但最好的方法是把一个路径告诉make,让make在自动去找。Makefile文件中的特殊变量“VPATH”就是完成这个功能的,如果没有指明这个变量,make只会在当前的目录中去找寻依赖文件和目标文件。如果定义了这个变量...
2019-07-15 10:17:47
229
原创 makefile 最好的文章(1)
概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和 professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解 HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写mak...
2019-07-15 10:16:57
141
原创 分享一下 哈希 luatable 索引值
https://www.xuebuyuan.com/2 原址:http://bbs.chinaunix.net/thread-3754752-1-1.html 分享一下对Lua的哈希表结构的研究。 一般哈希表处理冲突有两种方式,拉链法和开放定址法。拉链法就是哈希表的每个元 素都是一个链表,如果有冲突的键就放在链表里面。而开放定址法是如果遇到了冲突,就...
2019-07-12 16:40:18
614
原创 BGP
我们知道,在自治系统内部使用IGP路由协议;而在不同自治系统之间使用BGP路由协议(严格来讲,BGP不是路由协议)。BGP产生的原因是为了在不同自治系统(AS)之间进行路由转发,而其中又提出了EBGP和IBGP两种。EBGP用于在不同自治系统之间,但IBGP,书上说它是应用于自治系统内部,可是在自治系统内部我们是使用IGP。这就和"BGP是应用于不同自治系统之间"产生矛盾,那么IBGP存在的意义,...
2019-06-28 16:50:06
356
原创 const 真正理解
深入理解const char*p,char const*p,char *const p,const char **p,char const**p,char *const*p,char**const p一、可能的组合:(1)const char*p(2)char const*p(3)char *const p(4)const char **p(5)char const**p...
2019-06-25 20:04:33
259
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人