摘要:
author: lunar date: Mon 26 Oct 2020 09:04:32 PM CST location: Shanghai 内核同步介绍 用户空间之所以需要同步,是因为用户程序会被调度程序调度抢占和重新调度。由于用户进程可能在任何时刻被抢占,而调度程序完全可能选择另一个高优先级的进 阅读全文
摘要:
使用C++11实现一个轻量级AOP框架 代码和思想来自《深入应用C++11》,代码放在最后。 什么是AOP框架 AOP,即面向切面编程(Aspect Oriented Programming)。这是一种在面向对象的基础上进一步在代码之间解耦的编程思想。 书中以这样一个例子开头,对于每一个业务,都可以 阅读全文
摘要:
author: lunar date: Fri 23 Oct 2020 07:44:36 PM CST 自制Typora夜樱主题 本夜樱主题是根据Typora原生newsrint通过颜色修改而来。 效果如下: NightSakura.css文件如下: 修改颜色发现原来的那个代码的颜色很丑,于是修改一 阅读全文
摘要:
---author: lunardate: Wed 21 Oct 2020 04:41:06 PM CST---## 中断和中断处理任何操作系统的核心任务,都包含了对于连接到计算机上的硬件设备进行管理。所谓管理,即与这些设备进行通信。然而,CPU的处理速度与这些硬件的速度不在一个数量级上。这就导致CPU在进行一次通信后,往往要等待多个时钟周期后才会接到下一次通信。如果让CPU对这些设备进行轮询,将... 阅读全文
摘要:
---author: lunardate: Sun 18 Oct 2020 04:50:31 PM CST---## 进程调度进程可以被分为 I/O 密集型和处理器密集型。这里说的 I/O 是指任何类型的可阻塞资源,包括磁盘I/O,外设输入,网络 I/O等。多数用户图形界面程序都属于 I/O 密集型。Linux为了保证交互式应用和桌面系统的性能,所以对进程的响应做了优化,更倾向于优先调度 I/O ... 阅读全文
摘要:
### **堆排序**#### **堆的概念**堆作为一种数据结构,其特征为:* 堆是一棵完全二叉树。对堆的元素从0开始从上至下,从左往右进行编号可以对应数组中的元素。因此根节点总是对应数组第一个元素,最底层最右边的元素总是对应数组最后一个元素。 根据完全二叉树的结构,对于第i个元素,我们可以写出其父节点和子节点的下标为: * 父节点:(i - 1) / 2 * 左子节点:2 * i + 1... 阅读全文
摘要:
---title: 红黑树date: 2020-04-26mathjax: truetags:- DataStructure- BinaryTreecategories:- DataStructure---### **红黑树(R-B Tree)**> 本文属于半转载:是根据多篇介绍文章加上自己的理解写成。文章地址: https://www.cnblogs.com/skywang12345/p/... 阅读全文
摘要:
---author: lunardate: Sat 17 Oct 2020 09:18:24 PM CST---## 进程管理### 1. 进程进程是处于执行期的程序以及相关的资源的总称。进程通过fork调用进行创建,创建的方式是复制父进程,fork调用从内核返回两次,一次回到父进程,另一次回到新产生的子进程。通常,创建新的进程是为了立即执行新的、不同的程序,而接着调用exec()函数就可以创建新... 阅读全文
摘要:
---author: lunardate: Tue 13 Oct 2020 06:43:01 PM CST---## C++11 多线程开发C++11之前,C++对于并发编程并没有提供语言级别的支持。只能像C语言那样使用操作系统提供的POSIX提供的多线程库pthread。C++11之后,C++通过一系列语法支持使得多线程开发变得更容易。温馨提示:如果你是在命令行通过g++编译,需要添加-lpth... 阅读全文
摘要:
---author: lunardate: Mon 12 Oct 2020 10:03:32 AM CST---## 第二章 信息编码技术原理### 2.1 信源编码#### 2.1.1 信源编码器模型正规编码器:能够把信源发出的所有消息一一对应变换成相应代码組。這種編碼器不會損失信息量,編碼後的信源與編碼前的信源的熵相等。常見的幾種信源編碼:- 二進制代碼:代碼的每個碼元只有兩種量值可以取-... 阅读全文