构造函数、析构函数和虚函数是否应该声明为内联函数? 构造函数、析构函数和虚函数是否应该声明为内联函数?内联函数内联函数在编译阶段会被展开,这避免了函数压栈和弹栈带来的开销,从而提升性能。那么是否把所有的函数都声明为内联函数呢?答案是否定的,因为 1.内联声明只是给编译器的建议,具体是否内联由编译器自行决定 2.内联函数会展开,如果内联函数的函数体太大,会使得代码膨胀,增加编译结果的体积 一般体积超过10行的函数是不需要声明为内联 2021-11-30 C++ inline
Rust中的Copy和Clone Rust中的Copy和CloneRust 中有两个常见的 trait,Clone 和 Copy,许多初学者没有搞明白。今天我们来专门谈一谈这两个 trait。 Copy 的含义Copy 的全名是 std::marker::Copy。请大家注意 std::marker 这个模块里面的所有的 trait 都是特殊的 trait。目前稳定的有四个,它们是 Copy、Send、Sized、Sync。它们的 2020-11-28 Rust
高效的位运算 高效的位运算位运算是基于整数的二进制运算,由于计算机内以二进制存储数据,所以按位运算的速度是很快的。 按位运算主要有6种,按位与&、按位或|、按位异或^、按位取反~、按位左移<<、按位右移>>。 按位与static void Main(){ int a = 10;//1010 int b = 7; //0111 Console.Wr 2020-11-26 按位运算
如何遍历一棵二叉树? 如何遍历一棵二叉树?二叉树的遍历分为前序遍历、中序遍历、后序遍历和层次遍历。本文将详细梳理这四种二叉树的遍历方法。 我们给定一棵二叉树,结构如下: 先给出二叉树的数据结构: class TreeNode { public TreeNode(string value) { Value = value; } public string Value; pub 2020-11-20 二叉树 遍历
Rust所有权系统 Rust所有权系统引入所有权常见的编程语言对内存的管理可以分为两种情况,有GC(garbage collection)或无GC。其中以C#、Go、Java为代表的是有GC的语言,以C和C++为代表的为无GC的语言。 有GC的语言优点是随意申请内存,内存的释放有系统负责。缺点是GC停顿对一切实时性要求较高(如交易)的系统影响较大,GC停顿的时间点是无法精细控制的。 无GC语言的优点是内存的申请和释放 2020-11-16 Rust 所有权
什么是背压(Backpressure)? 什么是背压(Backpressure)?如果你认为你对 Backpressure 「有一定的理解,但不太能讲清楚」,那么你很可能其实并没有理解它,因为 Backpressure 其实是一个非常简单的概念。 首先,Backpressure 并不是响应式编程(Reactive Programming,或者有的人喜欢按字直译为「反应式编程」)独有的;其次,Backpressure 并不是一种「机制」,也 2020-11-12 Backpressure
Rust中使用thread:sleep和print导致的执行顺序问题 Rust中使用thread:sleep和print!宏引起的执行顺序问题探究以下是C#代码: static void Main(string[] args) { System.Console.Write("Hello "); System.Threading.Thread.Sleep(System.TimeSpan.FromSeconds(3)); System 2020-11-12 Rust
Linux内核设计与实现:进程管理 Linux内核设计与实现:进程管理进程 进程时处于执行期的程序。进程拥有其他资源,如打开的资源,挂起的信号内核内部数据,处理器状态,一个或多个具有内存映射的内存地址空间及一个或多个执行线程(thread of execution),存放全局数据量的数据段。 线程时进程中活动的对象。是内核调度的最小单位。内核调度的对象是线程,而不是的进程。线程拥有一个独立的程序计数器、进程栈和一组进程寄存器。 进程 2020-11-10 Linux内核设计与实现 进程 线程 僵尸进程 孤儿进程
Linux内核设计与实现:从内核出发 Linux内核设计与实现:从内核出发获取内核源码 登录Linux内核官网 http://www.kernel.org 获取当前Linux内核版本。 使用Git拉取最新Linux内核版本。 内核源码树 内核源码树由许多目录组成。 目录 描述 arch 特定体系结构的源码 block 块设备I/O层 crypto 加密API Documentation 内核源码文档 dr 2020-11-09 Linux内核设计与实现 内核源码 内核编译
Linux内核设计与实现:Linux内核简介 Linux内核设计与实现:Linux内核简介Unix历史 1969年,贝尔实验室的Dennis Ritchie和Ken Thompson在一台DPD-7型机器上实现了Unix这个全新的操作系统。 1971年,移植到DPD-11机型。1973年,使用C语言重写了Unix。 1977年,贝尔实验室推出Unix System 3,1983年AT&T推出Unix System 5。(商业) 伯克利 2020-11-08 Linux内核设计与实现 Linux内核 Unix