摘要:
为了能够复制粘贴到外面,需要下载gvim,可以自行下载。 我的插件管理是用vim-plug来管理的 下载命令 curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/v 阅读全文
摘要:
C++ membery primitives 分配 释放 类别 可否重载 malloc free C 函数 不可 new delete C++ 表达式 不可 ::operator new ::operator delete C++ 函数 可 allocator< T >::allocate allo 阅读全文
摘要:
通过位运算实现加减乘除取模 加法操作 对于每一位而言,在不考虑进位的情况下,可以得到 $$ 0+0 = 0\\ 0+1 = 1\\ 1+0 = 1\\ 1+1 = 0 $$ 显然,上面的情况符合 异或 操作且只有第四种情况发生了进位,进位情况符合 与 操作。在所有发生进位处,应该在更高的一位处加一, 阅读全文
摘要:
通过重载 $new/delete$ 来检测内存泄漏的简易实现 讲每次 $new$ 产生的内存记录,并在 $delete$ 的时候删去记录,那么最后剩下的就是发生内存泄漏的代码。 垃圾回收机制 之前使用过,但现在不再使用或者没有任何指针再指向的内存空间就称为 "垃圾"。而将这些 "垃圾" 收集起来以便 阅读全文
摘要:
如何控制一个类只能在堆或栈上创建对象 在 $C$++ 中创建对象的方法有两种,一种是静态建立,一个是动态建立。 静态建立由编译器为对象分配内存,通过调用构造函数实现。这种方法创建的对象会在栈上。 静态建立由用户为对象分配内存,通过 $new$ 来实现,间接调用构造函数。这种方法创建的对象会在堆上。 阅读全文
摘要:
数据库事务 数据库事务是向数据库进行访问或修改的一系列操作序列,要么全部执行,要么全部不执行,是不可分割的工作单位。 数据库事务有四大特性 $ACID$:原子性$(Atomicity)$、一致性$(Consistency)$、隔离性$(Isolation)$、持久性$(Durability)$。 原 阅读全文
摘要:
僵尸进程 1. 正常进程 正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。但子进程的结束和父进程的运行是一个异步过程,也就是说父进程无法预知子进程什么时候结束。一个进程完成他的工作后,它的父进程要调用 $wait/waitpid$ 函数来收集子进程的终止状态,并把他彻底销毁后返回,如果没 阅读全文
摘要:
死锁发生的条件以及如何解决死锁 死锁是指两个或者两个以上进程在执行过程中,因为争夺资源而造成相互等待的现象。 四个发生条件分别为: 1. 互斥条件。进程分配到的资源不允许其他进程同时访问。若其他进程想要访问该资源,只能等待到占用资源的进程使用完。 2. 请求和保持条件。进程获得一定资源后,又对其他资 阅读全文
摘要:
并发和并行 并发: 同一时刻只能运行一条指令。在宏观上看起来是多个程序同时运行,但微观上是多个程序的指令交替着运行的。并发不能提高计算机的性能,只能提高效率。 并行: 同一时刻可以运行多条指令。无论从宏观还是微观,都是一起执行的。比如多核 $cpu$,多个程序分别运行在不同的核上,互不影响。并行确实 阅读全文
摘要:
$TCP$ 粘包问题 粘包问题的本质在于接收方无法区分消息与消息之间的边界在哪里,可能把两个消息读成了一个消息。 解决方案有三种: 1. 定长发送:在数据发送的时候,无论数据多大或者多小,都拆分成固定长度 $LEN$ 来发送,随后一个包不足 $LEN$ 时通过空白字节来填充。但会造成带宽浪费。 2. 阅读全文
摘要:
计网学习资料 "计算机网络" [2019 王道考研 计算机网络 ](https://www.bilibili.com/video/av70228743?from=search&seid=15402005760429242828) 可以看看概论的 $OSI$ 参考模型,传输层,应用层部分。 $IP$ 阅读全文