技术笔记
工程实践、系统设计、编程语言和技术原理的长期笔记。
-
控制反转(IoC)与依赖注入(DI)
技术笔记前言 最近在学习Spring框架,它的核心就是IoC容器。要掌握Spring框架,就必须要理解控制反转的思想以及依赖注入的实现方式。下面,我们将围绕下面几个问题来探讨控制反转与依赖注入的关系以及在Spring中如何应用。 什么是控制反转? 什么是依赖注入? 它们之间有什么关系? 如何在Spring框...
-
Linux内存寻址之分页机制
技术笔记在上一篇文章[Linux内存寻址之分段机制][1]中,我们了解逻辑地址通过分段机制转换为线性地址的过程。下面,我们就来看看更加重要和复杂的分页机制。 分页机制在段机制之后进行,以完成线性—物理地址的转换过程。段机制把逻辑地址转换为线性地址,分页机制进一步把该线性地址再转换为物理地址。 硬件中的分页 ...
-
Linux内存寻址之分段机制
技术笔记前言 最近在学习Linux内核,读到《深入理解Linux内核》的内存寻址一章。原本以为自己对分段分页机制已经理解了,结果发现其实是一知半解。于是,查找了很多资料,最终理顺了内存寻址的知识。现在把我的理解记录下来,希望对内核学习者有一定帮助,也希望大家指出错误之处。 分段到底是怎么回事 相信学过操作系...
-
ucore实验之操作系统启动流程
技术笔记前言 本文基于 ucore 操作系统实验,简要分析操作系统的启动流程. ucore 操作系统是清华大学用于操作系统教学实验的OS,参考了 MIT 的 JOS,哈佛的 OS161 以及 Linux 系统。我们可以通过这个迷你操作系统在代码层面上理解操作系统的思想。 [ucore labs][1] wa...
-
Linux 平台下阅读源码的工具
技术笔记前言 看源代码是一个程序员必须经历的事情,也是可以提升能力的一个捷径.个人认为: 要完全掌握一个软件的方法只有阅读源码 在Windows下有sourceinsight这个源码阅读软件(虽然我没用过,但是网上评价还不错),由于我是个Linuxer,并不喜欢用Windows,所以自然是选择在Linux下...
-
spice源码分析之server(1)
技术笔记前言:本文是结合我自己阅读代码的心得总结而来,同时会忽略很多细节,只能作为阅读源码时的参考.如有错误,欢迎指正. Spice简介 Spice是一个开源的云计算解决方案,使客户端能显示远程虚拟主机的操作界面并且使用其设备,如键盘,鼠标,声音等。Spice给用户提供了一种如同操作本地机器一样的体验,同时...
-
理解链接之链接的基本概念
技术笔记前言 我们知道,开发程序的基本流程是:设计 代码编写 编译 链接 执行 每一个步骤展开都是一个很大的课题,链接是一个被人忽略的课题,因为它并不是很复杂,相对于编译来说它还是比较简单的,但是并不代表它不重要。 现在编译链接的环节基本上由IDE帮助我们完成了,于是我们很少关注编译链接。虽然说不懂编译链接...
-
桌面虚拟化传输协议之android spice
技术笔记背景 云计算是目前计算机领域的一个热门领域,桌面虚拟化是其中的一个重要应用,即把桌面系统在服务器端虚拟化,然后通过传输协议传输数据到客户端来实现桌面虚拟化,这样的好处就在于不管用什么设备,只要通过客户端都可以访问到云端的系统,随时随地都可以在一个系统上工作。 目前有两大标准的桌面传输协议,分别是RB...
-
算法学习之减治法(decrease and conquer)
技术笔记什么是分治法 减治技术利用了一个问题给定实例的解和同样问题较小实例的解之间的某种关系。一旦建立了这种关系,就可以从顶至下递归的来用该关系,也可以从底至上非递归的来运用该关系: 1. 减去一个常量 2. 减去一个常量因子 3. 减去的规模是可变的 分治法例子 减去一个常量 拓扑排序 定义 定义:将有向...
-
算法学习之分治法(divide and conquer)
技术笔记什么是分治法 字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。 解决问题的流程 分治法适用情况 分治法所能解决的问题一般具有以下几个特征: 1. 该问题的规模缩小到一定的程度就可以容易地解决 2. 该...