CPU使用率过高的问题 上次某公司面试官问了我一个实际生产问题,CPU使用率达到100%怎么办,如何排查和如何解决。 $CPU使用率=1-空闲时间/总CPU时间$,我们将空闲时间称为idle,而$CPU时间=用户态CPU时间+低优先级CPU时间+内核态CPU时间+等待I/O的CPU时间+处理硬中断的CPU时间+处理软中断的CPU时间+steal时间$。 首先,我们可以使用top命令获取CPU和内存的使用情况,定位到CPU 2022-07-09
记一次manjaro OS恢复 我的PC前段时间短路了,更换主板之后重新启动电脑没有manjaro OS和Windows的启动项选择界面了,而是直接进入Winows,查看BOIS之后发现只有一个Winows启动项,遂开始恢复。 首先我发现只有一个Winows启动项,于是直接在Winows下管理员cmd中输入如下命令增加启动项: 1$bcdedit /set "{bootmgr}" path 2022-05-29
CMU_15-445_PROJECT#3 TASK #1 - SYSTEM CATALOG在这个任务中,我们会修改rc/include/catalog/catalog.h以允许 DBMS 将新表添加到数据库并使用名称或内部对象标识符 ( table_oid_t) 检索它们。 我们在最新的BusTub中可以看到catalog的实现,但是这个版本只能实现通过6个测试, 先来看看TableInfo的结构体: 123456789101112131 2022-05-16 数据库 CMU_15-455
Golang与IO多路复用 selectGolang的select关键字,用到了多路复用的概念,当然不是IO多路复用,因为没有涉及到输入输出。先看看下面例子: 1234567891011121314151617181920212223package mainimport ( "fmt" "sync")func main() { c1:=make(chan int,1) var 2022-04-03
Golang_包解析 Go map底层实现Go语言的map的底层实现基于Hash散列,Hash散列是一种著名的广义上的算法,它能将任意长度的数据映射到有限的值域当中。在实际工程中输入数据范围是无限的,而输出值域范围是有限的,因此必然存在不同的输入数据经过映射后得到相同的输出值,这种现象称为hash冲突,go底层通过链表解决hash冲突。值得注意的是:==Java1.8中使用平衡树来优化局部链表过长的性能问题。== 使用 2022-03-20
Go runtime Go panic大多数编程语言都提供了异常处理机制,恰恰相反,Go延续了C语言的风格,并未提供异常处理机制。但在Go中,提供了panic异常,从某种意义上说,它也非常接近其他语言的异常处理。 Go语言在编译期间就能捕获大量异常,但是有些异常只能发生在运行期间,比如运行期间的除以0的异常,数组越界错误等。 除了程序本身的问题导致panic异常外,也可以直接在程序里调用panic函数引发panic异常 2022-03-12 Go语言 go map
MIT_6.s081_Lab6_Copy-on-Write Fork for xv6 早期的fork()实现较为“简单粗暴”,会将父进程的物理内存完整拷贝一份,并映射到子进程的内存空间中,这种方式在很多情况下是不必要的,一部分虚拟内存是只读的,对他们进行拷贝是一种浪费,其次,由于进程有时会在调用fork函数之后立即调用exec以载入新的可执行文件,重置地址空间,之前的内存拷贝就完全失去了意义。因此可以用写时拷贝技术来对fork的实现进行优化。对于本来就是只读的虚拟页,父进程和子进 2022-02-24 操作系统 MIT_s.081_Lab
MIT_6.s081_Lab5_lazy page allocation Eliminate allocation from sbrk()我们先来看看这个图: 代码段不必多说,唯一要注意的点就是fork()函数调用的时候不会去复制程序段,而是通过映射让父子进程共享。 我们现在要给用户空间分配内存就是说 我们知道,sbrk()分配物理内存并将其映射到进程的虚拟地址空间,内核为大型请求分配和映射内存可能需要很长时间。 本实验你的任务是修改 sys_sbrk()使得其只增加 2022-02-21 操作系统 MIT_s.081_Lab
CMU_15-445_PROJECT#2 这个实验2真的是折磨死我了。 Tree Index索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址,在数据十分庞大的时候,索引可以大大加快查询的速度,这是因为使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据。 hash table的时间复杂度是$O(1)$。在B+ Tree中,因为它是平衡的,所以它的时间复杂 2022-02-15 数据库 CMU_15-455
CMU_15-445_PROJECT#0&1 写在前面正如CMU 15-445的主讲教授所说,这门课并不会教你如何使用数据库去构建应用程序或网站,也不是教你如何去部署和管理数据库的课,这门课的核心课程是有关数据库管理系统的设计与实现。 PROJECT #0 - C++ PRIMER这个热身实验只是让我们把项目文件下载到本地,配置好相关的git,检验一下自己的C++能力,因此对其简要说明。 在这个项目中,您将实现三个类模板:Matrix、Row 2022-02-03 数据库 CMU_15-455