摘要:
栈是一个很重要的编程概念(编译课和程序设计课都讲过相关内容),与编译器和编程语言有紧密的联系。理解调用栈最重要的两点是:栈的结构,EBP寄 存器的作用。一个函数调用动作可分解为:零到多个PUSH指令(用于参数入栈),一个CALL指令。CALL指令内部其实还暗含了一个将返回地址(即 CALL指令下一条 阅读全文
摘要:
ubuntu apt-get update失败1.出现错误:E:Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)出现这个问题的原因可能是有另外一个程序正在运行,导致资源被锁... 阅读全文
摘要:
1. 互斥与同步的概念互斥和同步是两个紧密相关而又容易混淆的概念。 互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实 阅读全文
摘要:
操作系统需要对计算机系统中的各种外设进行管理,这就需要CPU和外设能够相互通信才行。一般外设的速度远慢于CPU的速度。如果让操作系统通过 CPU“主动关心”外设的事件,即采用通常的轮询(polling)机制,则太浪费CPU资源了。所以需要操作系统和CPU能够一起提供某种机制,让外设 在需要操作系统处 阅读全文
摘要:
参考资料: [1] 《C专家编程》 第3章 分析C语言的声明,p64-66 阅读全文
摘要:
数组转换成指针:在大多数用到数组的表达式中,数组自动转换成指向数组首元素的指针。比如: int ia[10]; int *p = ia; //ia转换成指向数组首元素的指针 以下情况上述转换不会发生: (1)当数组被用作decltype关键字的参数时; (2)作为取地址符(&)、sizeof以及ty 阅读全文
摘要:
参考下列书籍中的对应章节: 《Linux高级程序设计(第3版)》第3章Linux进程存储管理。相关视频:一、二。 《C专家编程》第6章 运动的诗章:运行时数据结构。 《UNIX环境高级编程(第2版)》第7章 进程环境 7.6 C程序的存储空间布局。 理解了上述知识就很容易明白,一个函数返回char 阅读全文
摘要:
Executor框架1.Task?Thread?很多人在学习多线程这部分知识的时候,容易搞混两个概念:任务(task)和线程(thread)。并发编程可以使我们的程序可以划分为多个分离的、独立运行的任务。而这些任务具体得由线程来驱动。Java中,Thread类自身不执行任何操作,它只是驱动赋予它的任... 阅读全文
摘要:
1.java线程状态Java中的线程可以处于下列状态之一:NEW: 至今尚未启动的线程处于这种状态。RUNNABLE: 正在 Java 虚拟机中执行的线程处于这种状态。BLOCKED: 受阻塞并等待某个监视器锁的线程处于这种状态。WAITING: 无限期地等待另一个线程来执行某一特定操作的线程处于这... 阅读全文
摘要:
I've seen and had lots of discussion about "package by layer" vs "package by feature" over the past couple of weeks. They both have their benefits but 阅读全文