自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 os相关岗位面试的部分知识整理

今年的互联网形势真的不太好,一直在找偏os的实习也没什么音序。于是打算留在学校搞搞课题,秋招卷国企吧。这里整理一些找实习面试过程中比较重要的知识点,部分跟简历息息相关。1. 程序中输入printf os会发生什么?(内容是ARM架构下的)在用户态下,该函数调用库函数中对应的系统调用函数,这个函数会将系统调用的参数配置在通用寄存器中,然后使用系统调用指令(arm:svc、x86:int ox80)陷入内核异常处理:CPU收到相关的指令后,会进行异常处理:(1). 将PSTATE相关的寄存器存入S.

2022-04-23 17:35:51 330

原创 c++信号量实现生产者消费者模型

#include <iostream>#include <thread>#include <condition_variable>#include <mutex>#include <semaphore.h>#include <vector>using namespace std;//int empty_slot = 5;//int filled_slot = 0;sem_t empty_slot;sem_t fil

2022-04-12 16:32:27 1152

原创 6.828设计总结---内核的加载

什么是微内核微内核主要用于解决宏内核操作系统在扩展性、可靠性等方面遇到的问题。区别于宏内核的左右系统功能都实现在内核中,微内核只在内核中保留必要的系统功能,比如基础的IPC、进程调度机制等,而其他诸如文件系统、网络IO等功能都在用户空间实现。现有的微内核:QNX、SEL家族(更新到seL4)什么是实模式与保护模式?实模式指的就是直接使用物理地址对内存进行访问的方式。早期CPU一般只有16位的运行环境,将整个物理内存进行分段,代码和数据保存在各个段中。普通程序在运行时,可能会修改与系统相关的内存段中

2022-03-20 16:51:48 3825

原创 centos7 kvm 设置桥接网卡br0

centos kvm 设置桥接网卡br0一、关于kvm的操作1. 查看CPU是否支持VTegrep '(vmx|svm)' --color=always /proc/cpuinfo2. 检查内核模块是否加载lsmod | grep kvm3. 查看Selinux状态sestatus如果是启动状态,需要将其关闭:# sudo vim /etc/sysconfig/selinux修改SELINUX=disabled ,然后重启reboot4. 安装KVMyum install k

2021-10-13 11:21:57 5753 1

转载 Leetcode——多线程编程——交替打印FooBar

提供的类:class FooBar { public void foo() { for (int i = 0; i < n; i++) { print("foo"); } } public void bar() { for (int i = 0; i < n; i++) { print("bar"); } }}两个不同的线程将会共用一个 FooBar 实例。其中一个线程将会调用 foo() 方法,另一个线程将.

2021-04-22 09:36:31 91

原创 小笔记——红黑树

红黑树是一种特殊的二叉查找树。红黑树每个节点上都有存储为表示节点的颜色,可以是红或黑特点每个节点是黑色或者是hongse根节点是黑色每个叶子节点(NIL or NULL)是黑色如果一个节点是红色的,则它的叶子节点必须是黑色的从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点红黑树的基本旋转1. 左旋伪代码:// 先考虑子节点,再考虑父结点,最后考虑两者相互的关系left-rotate(T, x)y = x->right // 原树x->right

2021-04-20 22:11:08 85

原创 小笔记——内存控制器

内存控制器what is memory controller?内存控制器是一个用于管理与规划从内存到CPU间传输速度的总线电路控制器。工作方式内存控制器控制着必要的逻辑读写DRAM,每隔一段时间刷新动态随机存取存储器(DRAM)的内容。进行读取和写入动作时,内存控制器会根据数据到DRAM中选择行和列,通过一个多路转换器将数据合并以减少操作所需的总线宽度,总线宽度是允许同时进行通信的存储单元数目。内存控制器的总线宽度范围为512位,通常被实现为数个64位内存控制器同时并行运行。(团体模式)。现在实

2021-04-19 17:05:52 2427

原创 ARM——LDXR&STXR&自旋锁

汇编语言——ARMgcc基本汇编规则“=r”:输出op“r”:输入op“+”:即输入又输出“&”:表示在汇编代码之前,对应的操作数会被输入部分修改“memory”:表示内存被修改了

2021-04-19 10:18:01 2620

原创 Leetcode——多线程编程——交替打印字符

编写一个可以从 1 到 n 输出代表这个数字的字符串的程序,但是:如果这个数字可以被 3 整除,输出 “fizz”。如果这个数字可以被 5 整除,输出 “buzz”。如果这个数字可以同时被 3 和 5 整除,输出 “fizzbuzz”。例如,当 n = 15,输出: 1, 2, fizz, 4, buzz, fizz, 7, 8, fizz, buzz, 11, fizz, 13, 14, fizzbuzz。假设有这么一个类:class FizzBuzz { public FizzBuz

2021-04-09 21:51:20 133

原创 volatile作用简介(C/C++)

volatile作用volatile能够保证单次的读写锁是原子的,但是不能保证i++这种操作的原子性,因为后者相当于读操作与写操作。作用防止重排序实现可见性(1)修改volatile变量时会强制将修改后的值刷新会主内存中(2)修改volatile变量后会导致其他线程工作内存中对应的变量值失效,再读取时,需要重新从主存里读取保证原子性ong和double两种数据类型操作分为高32位和低32位两部分,一般的这两种类型的读写可能不是原子字,可以将共享的long和double设置为volatile

2020-09-29 20:01:11 266

原创 《算法设计与分析基础》--- 最大公约数

gcd(m,n):代表能够整除m与n的最大正整数1. 欧几里得算法:Euclid(m,n)2. 使用中小学寻找最大公约数的方法2.1 埃拉托色尼筛选法(找质数)2.2 基于Sieve()实现最大公约数1. 欧几里得算法:Euclid(m,n)step1:若n=0,返回m,过程结束;否则进入step2step2:m除以n,将余数赋值给rstep3:将n的值给m,将r的值给n,返回step1代码实现如下:int Euclids(int m, int n){ while(n!=0){

2020-09-27 09:46:16 569

原创 Visual Studio Code (vscode) 配置 C / C++ 环境

预备:已安装vscode即将配置C/C++环境1. 在VScode中配置c/c++环境,首先需要下载MinGW-w64,点击Files并下滑,找到最新版"x86_64-posix-seh"并下载解压后移动到你想安装的位置2. 配置环境变量找到“系统属性”,点击【高级】->【环境变量】->【用户变量】,找到“Path”。点击【编辑】->【新建】,将bin的文件目录添加到里面去。3. 验证环境配置是否成功按下 win + R,输入cmd,回车键之后输入g++,在命令行输入 g

2020-09-22 20:34:45 178

原创 Go语言学习----《Go 语言之旅》之练习:Error

从之前的练习中复制 Sqrt 函数,修改它使其返回 error 值。Sqrt 接受到一个负数时,应当返回一个非 nil 的错误值。复数同样也不被支持。创建一个新的类型 type ErrNegativeSqrt float64 并为其实现 func (e ErrNegativeSqrt) Error() string 方法使其拥有 error 值,通过 ErrNegativeSqrt(-2).Error() 调用该方法应返回 “cannot Sqrt negative number: -2”。packa

2020-09-14 22:18:36 456

原创 Go语言学习----《Go 语言之旅》之练习:Stringer

练习:Stringer通过让 IPAddr 类型实现 fmt.Stringer 来打印点号分隔的地址。例如,IPAddr{1, 2, 3, 4} 应当打印为 “1.2.3.4”。import "fmt"import "strconv"type IPAddr [4]byte// TODO: 给 IPAddr 添加一个 "String() string" 方法func (dot IPAddr) String() string{ str := " " for _, s :=range d

2020-09-14 20:48:18 546 1

原创 Go语言学习----《Go 语言之旅》

练习:斐波纳契闭包实现一个 fibonacci 函数,它返回一个函数(闭包),该闭包返回一个斐波纳契数列 (0, 1, 1, 2, 3, 5, ...)。package mainimport "fmt"// 返回一个“返回int的函数”func fibonacci() func() int { a1 := 0 a2 := 1 return func()int{ tmp := a1 a1 = a2 a2 = tmp + a2 return tmp }}func ma

2020-09-02 17:46:13 146

原创 Go语言学习---《Go 语言之旅》之映射:练习

映射:练习实现 WordCount。它应当返回一个映射,其中包含字符串 s 中每个“单词”的个数。函数 wc.Test 会对此函数执行一系列测试用例,并输出成功还是失败。```gopackage mainimport ( "golang.org/x/tour/wc" "strings")func WordCount(s string) map[string]int { words := strings.Fields(s) wordcount :=make(map[string]in

2020-09-02 17:22:26 464

翻译 mit6.824 LEC 2: RPC and Threads

LEC 2: RPC and Threads官网地址

2020-09-02 10:56:44 118

原创 Ubuntu 安装go语言环境

Ubuntu 安装go语言环境官网下载你想要的go版本官网下载你想要的go版本链接: go官网进入你的下载目录,并在/usr/local目录下解压,例如:// 版本跟随你下载的版本改变sudo tar -C /usr/local -xzf go1.9.linux-amd64.tar.gz进入解压后的go文件中:cd /usr/local/go进入文档.bashrc中设置环境变量:gedit ~/.bashrc然后在文档末尾加入以下路径:export GORPATH=/

2020-08-21 11:42:19 215

空空如也

空空如也

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

TA关注的人

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