- 博客(30)
- 资源 (1)
- 收藏
- 关注
转载 QEMU内在:整体架构和线程模型
原文地址:http://blog.vmsplice.net/2011/03/qemu-internals-overall-architecture-and.html一篇很不错的文章,所以翻译过来和大家分享,因为本人英语并不太好,所以有错误的地方敬请谅解指正。=======================分割线==========================
2015-08-19 10:36:11
560
转载 emacs最简单入门,只要10分钟--总结的不错,清晰明了
emacs最简单入门,只要10分钟 windwiny @2013 无聊的时候又看到鼓吹emacs的文章,以前也有几次想尝试,结果都是玩不到10分钟就退出删除了。这次硬着头皮,打开几篇文章都看完一遍,再动手操作。这次好像有些进展 最大的发现,emacs里所有操作都是LISP指令,包括上下左右移动光标,这意味着什么? “emacs是一个伪装成编辑器的操作系统”这句话应该就是
2015-01-30 17:01:03
788
转载 heap and stack
简单的可以理解为: heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。 stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。 预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据
2015-01-08 21:41:16
417
转载 Linux多线程中使用信号-2
注:本文转自 http://blog.youkuaiyun.com/qq276592716/article/details/7325264Linux 多线程应用中如何编写安全的信号处理函数转自:http://www.ibm.com/developerworks/cn/linux/l-cn-signalsec/index.html?ca=drs-cn-0618周
2014-12-25 11:21:05
379
转载 Linux多线程中使用信号-1
注:本文转自 http://blog.youkuaiyun.com/qq276592716/article/details/7325250在Linux的多线程中使用信号机制,与在进程中使用信号机制有着根本的区别,可以说是完全不同。在进程环境中,对信号的处理是,先注册信号处理函数,当信号异步发生时,调用处理函数来处理信号。它完全是异步的(我们完全不知到信号会在进程的那个执行点到来!)。
2014-12-25 11:17:52
414
转载 Linux信号(signal) 机制分析
【摘要】本文分析了Linux内核对于信号的实现机制和应用层的相关处理。首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理。接着分析了内核对于信号的处理流程包括信号的触发/注册/执行及注销等。最后介绍了应用层的相关处理,主要包括信号处理函数的安装、信号的发送、屏蔽阻塞等,最后给了几个简单的应用实例。 【关键字】软中断信号,signal,sigaction,kil
2014-12-25 09:34:22
389
转载 c++符号优先级以及理解方法(很不错)-----转自leukotrichia的博客
C++操作符的优先级操作符及其结合性功能用法L L L:: :: ::全局作用域 类作用域 名字空间作用域::name class::name namespace::nameL L L L L . -> []
2014-10-23 15:41:49
2728
原创 变量初始化规则 ----from c++primer
当定义没有初始化的变量时,系统有时会帮我们初始化变量.这时,系统提供什么样的值取决于变量的类型,也取决于变量定义的位置.内置类型变量是否自动初始化取决于变量定义的位置。在函数体外定义的变量都初始化成0,在函数体里定义的内置类型变量不进行自动初始化。除了用作赋值操作符的左操作数,未初始化变量用作任何其他用途都是没有定义的。未初始化变量引起的错误难于发现。所以,永远不要依赖未定义行为.未初始化
2014-10-15 08:35:49
373
转载 c/c++优先级列表
C优先级列表PrecedenceOperatorDescriptionExampleAssociativity1()[]->.::++--Grouping operatorArray accessMember access from a pointerMember acces
2014-10-10 19:50:24
615
转载 C语言中可变参数的宏定义
printf()和fprintf()这些输出函数的参数是可变的,在调试程序时,你可能希望定义自己的参数可变的输出函数,那么可变参数宏会是一个选择。C99中规定宏可以像函数一样带有可变参数,比如#define LOG(format, ...) fprintf(stdout, format, __VA_ARGS__)其中,...表示参数可变,__VA_ARGS__在预处理中
2014-09-24 11:29:13
821
原创 API & ABI
API:Application Programming InterfaceABI:Application Binary Interface实际上
2014-09-24 09:30:45
1249
转载 关于#ifdef,#else,#endif,#if
预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作。说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译。这样做的好处是,经过处理后的代码,将会变的很精短。关于预处理命令中的文件包含(#include),宏定义(#define),书上已经有了详细的说明,在这里就不详述了。这里主要是对条件编译(#ifdef,#else,#endif,#if等)进行说明。以
2014-09-18 11:23:00
375
转载 马屁股决定航天飞机 --路径依赖
现代铁路两条铁轨之间的标准距离是4.85英尺,大约1.435米,可相当多的人并不知道,为什么要采用这个标准?原来,早期的铁路是由造电车的人设计的,而四英尺又八点五英寸正是电车所用标准。那么,电车的标准又是从哪里来的呢?最先造电车的人以前是造马车的,所以电车的标准沿用了马车的轮距标准。那么马车为什么要用这样的一个轮距标准呢?英国马路辙迹的宽度是四英尺又八点五英寸,所以,如果马
2014-09-17 21:32:25
1797
转载 dlopen参数总结
void * dlopen(const char *pathname, int mode); 返回一个void *类型的handle,否则返回NULL。 pathname就是所要打开的动态库,如果这个库声明链接了其它库,即对其它库有依赖关系,那么所有相关有依赖关系的库都会被打开,这些打开的库称之为组(group)。 mode是打开方式,其值有多个,不同操
2014-09-16 15:34:15
2105
原创 程序员的自我修养---笔记---第一部分 温故而知新
第一部分温故而知新1、 计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决。Any problem in computer science can be solved by another layer ofindirection.2、 层间接口:interface。每个中间层都是对他下面的那层的包装和扩展。3、 层4、 Multiprogramming 多道程序/Time
2014-09-15 19:09:12
436
原创 《编写可读性代码的艺术》读书笔记 第四部分 精选话题
第四部分 精选话题第十四章 测试与可读性1、 测试代码应当具有可读性,以便其他程序员可以舒服的改变或者增加测试2、 使测试更可读。每个测试的最高一层应该越简单越好。a) 对使用者隐去不重要的细节,以便更重要的细节会凸显。b) 创建最小的测试声明。大多数测试的基本内容都能精炼成“对于这样的输入/情形,期望有这样的行为/输出”。并且很多时候,这个目的可以用一行
2014-09-12 15:07:51
389
原创 《编写可读性代码的艺术》读书笔记 第三部分 重新组织代码
第三部分 重新组织代码第十章抽取不相关的子问题建议:积极的发现并抽取出不相关的子逻辑。通过建立一大堆库和辅助桉树来解决一般问题,剩下的就是让你的程序与众不同的核心部分。1、 纯工具代码。2、 创建大量通用代码。3、 项目专有的功能。4、 简化已有的接口。你永远都不要安于使用不理想的接口。你总可以创建自己的包装函数来隐藏接口的粗陋细节,让它不再成为你的障碍。5、 按需重塑
2014-09-12 09:10:28
422
转载 【leetcode】binary tree maximum path sum
以下思路:1. 对于每一个节点, 返回其所在子树所能提供的最大值, 且该最大值必须是单支的, WA 过2. max(0, max(lf, rt))+root->val, 可以仅返回根节点, WA 过3. 需要维护一个全局最优解 ans, WA 过代码:12345678
2014-09-11 20:13:19
305
原创 《编写可读性代码的艺术》读书笔记 第二部分 简化循环和逻辑
第二部分:简化循环和逻辑第七章把控制流变得易读把条件、循环以及其他对控制流的改变做的越“自然”越好,运用一种方式使读者不用停下来重读你的代码。1、 条件语言中参数的顺序。【比较的左侧:“被询问的”表达式,它的值更倾向于不断变化;比较的右侧:用来做比较的表达式,它的值更倾向于常量】2、 If/else语句块的顺序a) 首先处理正逻辑而不是负逻辑。If(debug)而不是
2014-09-11 17:22:50
602
原创 《编写可读性代码的艺术》读书笔记 第一部分 表面层次的改进
第一部分:表面层次的改进代码应当易于理解代码的写法应当使别人理解它所需的时间最小化。 第二章 把信息装进名字中:① 选择专业的词,并且避免使用“空洞”的词② 避免像tmp和retval这样泛泛的名字,用描述该变量的值的名字来代替。tmp这个名字只应用于短期存在且临时性为其主要存在因素的变量。for(int i=0;i③ 在给变量、函数等元素命名时,要把他描述的更
2014-09-11 15:51:26
514
原创 gcc生成静态链接库、动态链接库以及动态链接库包含静态链接库--笔记
搞了一天,没整明白啥玩意,赶不上大牛的一小会儿指导,做个详细的笔记吧:三个.c文件,main.c,stub.c,soo.c,内容如下:soo.c:
2014-09-04 19:17:21
481
翻译 linux kernel style摘记
第一章:缩进制表符是8个字符。3级以上的缩进是有问题的,需要修改程序。在switch语句中消除多级缩进:让switch和从属它的case标签对齐。不要把多个语句放一行,除非想隐藏什么东西。不要用空格来缩进,不要再行尾留空格。第二章:长的行和字符串的分拆每行限长80列。第三章:括号和空格的放置所有非函数语句块,起始大括号放行尾,结束大括号放行首。不过,命名函数例外,起
2014-09-02 12:56:48
446
原创 Git命令速览----git笔记
版本控制系统(VCS),在 Git 中的绝大多数操作都只需要访问本地文件和资源,不用连网。但如果用 CVCS 的话,差不多所有操作都需要连接网络。因为 Git 在本地磁盘上就保存着所有当前项目的历史更新,所以处理起来速度飞快。对于任何一个文件,在 Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)。已提交表示该文件已经被安全地保存在本
2014-08-19 11:53:34
349
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人