自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(21)
  • 收藏
  • 关注

转载 彻底弄懂UTF-8、Unicode、宽字符、locale

目录 Unicode、UCS UTF8 结论 宽字符类型wchar_t locale 为什么需要宽字符类型 多字节字符串和宽字符串相互转换 最近使用到了wchar_t类型,所...

2019-07-08 12:40:00 569

转载 CPU使用率原理及计算方式

目录 CPU:Cores, and Hyper-Threading 超线程(Hyper-Threading) 多核(multi-cores) CPU使用率计算 CPU使用率测试 如何计算CPU使用率 实现CPU使用率统...

2019-07-03 16:24:00 1825

转载 TCP使用注意事项总结

目录 发送或者接受数据过程中对端可能发生的情况汇总 本端TCP发送数据时对端进程已经崩溃 本端TCP发送数据时对端主机已经崩溃 本端TCP发送数据时对端主机已经关机 某个连接长时间没有数据流动 TCP发送数据不全 TCP数...

2019-06-27 19:40:00 380

转载 STL-vector

目录 成员变量 迭代器 构造函数 插入操作 vector扩容过程中拷贝或者移动旧元素的次数 删除元素 erase的一个疑问 成员变量typedef T value_type...

2019-06-27 09:32:00 113

转载 STL-空间配置器、迭代器、traits编程技巧

目录 内存分配和释放 对象的构造和析构 traits要解决的问题 内嵌类别声明解决非指针迭代器的情况 使用模板特例化解决普通指针的情况 迭代器相应类别 内存分配和释放STL中有两个分配器,一级分配器和二级分...

2019-06-27 00:01:00 88

转载 cmake常用命令总结

最近研究了下cmake,总结了一些常用命令,方便以后快速查找。project(projectname [CXX] [C] [Java]):设置工程名。set(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]]):设置变量VAR为指定值。例子:set(CXX_FLAGS -g -Wall)。将变量CXX_FLAGS设置为"-g;-Wall...

2019-05-18 14:06:00 110

转载 CMU-15445 LAB3:事务隔离,two-phase locking,锁管理器

概述本lab将实现一个锁管理器,事务通过锁管理器获取锁,事务管理器根据情况决定是否授予锁,或是阻塞等待其它事务释放该锁。背景事务属性众所周知,事务具有如下属性:原子性:事务要么执行完成,要么就没有执行。一致性:事务执行完毕后,不会出现不一致的情况。隔离性:多个事务并发执行不会相互影响。持久性:事务执行成功后,所以状态将被持久化。一些定义将对数据对象Q的操作进行抽象...

2019-05-01 16:35:00 632

转载 CMU-15445 LAB2:实现一个支持并发操作的B+树

概述经过几天鏖战终于完成了lab2,本lab实现一个支持并发操作的B+树。简直B格满满。B+树为什么需要B+树B+树本质上是一个索引数据结构。比如我们要用某个给定的ID去检索某个student记录,如果没有索引的话,我们可能从第一条记录开始遍历每一个student记录,直到找到某个ID和我们给定的ID一致的记录。可想而知,这是非常耗时的。如果我们已经维护了一个以ID为KEY的索...

2019-05-01 10:34:00 2384

转载 CMU-15445 LAB1:Extendible Hash Table, LRU, BUFFER POOL MANAGER

概述最近又开了一个新坑,CMU的15445,这是一门介绍数据库的课程。我follow的是2018年的课程,因为2018年官方停止了对外开放实验源码,所以我用的2017年的实验,但是问题不大,内容基本没有变化。想要获取实验源码的同学可以上github搜,或者直接clone我的代码,找到最早的commit就ok了,仓库地址在文末。课程配套教材是《DatabaseSystemConce...

2019-03-28 10:20:00 1502

转载 MIT-6.824 Lab 3: Fault-tolerant Key/Value Service

概述lab2中实现了raft协议,本lab将在raft之上实现一个可容错的k/v存储服务,第一部分是实现一个不带日志压缩的版本,第二部分是实现日志压缩。时间原因我只完成了第一部分。设计思路如上图,lab2实现了raft协议,本lab将实现kvserver。每个raft都关联一个kvserver,Clerks发送Put(), Append(), Get() RPC给leader服务...

2019-03-22 20:22:00 195

转载 MIT-6.824 Raft协议

摘要raft是一种比paxos容易理解的一致性算法,实现起来比paxos简单许多。本文前部分描述算法的细节,后部分尝试探讨下该算法的原理。算法描述raft算法之所以简单的原因之一是它将问题分解成三个子问题,分别是:Leader选举Log复制安全性保证概述raft协议中每个server都要维护一些状态,并且对外提供两个RPC调用分别是RequestVote RPC和Ap...

2019-03-22 13:00:00 163

转载 MIT-6.824 lab1-MapReduce

概述本lab将用go完成一个MapReduce框架,完成后将大大加深对MapReduce的理解。Part I: Map/Reduce input and output这部分需要我们实现common_map.go中的doMap()和common_reduce.go中的doReduce()两个函数。可以先从测试用例下手:func TestSequentialSingle(t *te...

2019-03-20 20:36:00 148

转载 MIT-6.824 MapReduce

概述MapReduce是由JeffreyDean提出的一种处理大数据的编程模型,用户定义map和reduce函数,map函数处理原始数据生成一系列键值对中间数据,reduce函数并合相同key的键值对。编程模型整个计算过程输入的是键值对,输出的也是键值对。用户只需要提供两个函数分别是Map和Reduce。比如要统计大数据文本中的词频,我们可以写出如下的Map和Reduce函数:...

2019-03-20 17:12:00 146

转载 MIT-6.828-JOS-lab6:Network Driver

MIT-6.828 Lab 6: Network Driver (default final project)tags: mit-6.828 os概述本lab是6.828默认的最后一个实验,围绕网络展开。主要就做了一件事情。从0实现网络驱动。还提到一些比较重要的概念:内存映射I/ODMA用户级线程实现原理The Network Server从0开始写协议栈是很困...

2018-12-06 23:15:00 244

转载 MIT-6.828-JOS-lab5:File system, Spawn and Shell

Lab 5: File system, Spawn and Shelltags: mit-6.828 os概述本lab将实现JOS的文件系统,只要包括如下四部分:引入一个文件系统进程(FS进程)的特殊进程,该进程提供文件操作的接口。建立RPC机制,客户端进程向FS进程发送请求,FS进程真正执行文件操作,并将数据返回给客户端进程。更高级的抽象,引入文件描述符。通过文件描述符...

2018-11-13 10:08:00 343

转载 MIT-6.828-JOS-lab4:Preemptive Multitasking

Lab 4: Preemptive Multitaskingtags: mit-6.828, os概述本文是lab4的实验报告,主要围绕进程相关概念进行介绍。主要将四个知识点:开启多处理器。现代处理器一般都是多核的,这样每个CPU能同时运行不同进程,实现并行。需要用锁解决多CPU的竞争。介绍了spin lock和sleep lock,并给出了spin lock的实现。实现进...

2018-11-08 17:53:00 539

转载 MIT-6.828-JOS-lab3:User Environments

Lab 3: User Environments实验报告tags:mit-6.828 os概述:本文是lab3的实验报告,主要介绍JOS中的进程,异常处理,系统调用。内容上分为三部分:用户环境建立,可以加载用户ELF文件并执行。(目前还没有文件系统,需要在内核代码硬编码需要加载的用户程序)建立异常处理机制,异常发生时能从用户态进入内核进行处理,然后返回用户态。借助异常处理...

2018-10-23 18:19:00 661

转载 MIT-6.828-JOS-lab2:Memory management

MIT-6.828 Lab 2: Memory Management实验报告tags:mit-6.828 os概述本文主要介绍lab2,讲的是操作系统内存管理,从内容上分为三部分:第一部分讲的是物理内存管理,要进行内存管理首先需要知道哪些物理内存是空闲的,哪些是被使用的。还需要实现一些函数对这些物理内存进行管理。第二部分讲的是虚拟内存。一个虚拟地址如何被映射到物理地址,将实...

2018-10-22 19:34:00 342

转载 MIT-6.828-JOS-lab1:C, Assembly, Tools, and Bootstrapping

Lab1:Booting a PC概述本文主要介绍lab1,从内容上分为三部分,part1简单介绍了汇编语言,物理内存地址空间,BIOS。part2介绍了BIOS从磁盘0号扇区读取boot loader到0000:7c00处,并将cs:ip设置成0000:7c00。boot loader主要做两件事:创建两个全局描述符表项(代码段和数据段),然后进入保护模式从磁盘加载kerne...

2018-10-09 11:11:00 324

转载 ELF文件格式

ELF文件(Executable Linkable Format)是一种文件存储格式。Linux下的目标文件和可执行文件都按照该格式进行存储,有必要做个总结。概要本文主要记录总结32位的Intel x86平台下的ELF文件结构。ELF文件以Section的形式进行存储。代码编译后的指令放在代码段(Code Section),全局变量和局部静态变量放到数据段(Data Section)...

2018-10-07 15:12:00 110

转载 MIT-6.828-JOS-环境搭建

MIT 6.828是操作系统中最经典的一门课程。完成所有的lab就相当于完成了一个迷你的操作系统。我跟的是2018年的课程,课程首页在6.828课程官网。当然所有资料都是英文的,所以难度也不低,这里推荐几本非常有用的参考书:《x86汇编语言-从实模式到保护模式》,《程序员的自我修养-链接、装载与库》,《深入理解计算机系统》,很多知识在这些书中都有提到,参考着看会有奇效。概述本文主要讲...

2018-10-05 22:52:00 416

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除