spadez一
码龄6年
关注
提问 私信
  • 博客:22,297
    22,297
    总访问量
  • 16
    原创
  • 2,362,083
    排名
  • 5
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:湖南省
  • 加入CSDN时间: 2018-09-09
博客简介:

spade_l的博客

查看详细资料
个人成就
  • 获得10次点赞
  • 内容获得2次评论
  • 获得68次收藏
  • 代码片获得1,027次分享
创作历程
  • 3篇
    2022年
  • 6篇
    2021年
  • 9篇
    2020年
成就勋章
TA的专栏
  • 面试
    1篇
  • 小知识
    3篇
  • 算法(c++)
    3篇
  • mit6.828
    1篇
  • 多线程编程
    2篇
  • 汇编
    1篇
  • Go
    4篇
  • mit6.824
    2篇
创作活动更多

2024 博客之星年度评选报名已开启

博主的专属年度盛宴,一年仅有一次!MAC mini、大疆无人机、华为手表等精美奖品等你来拿!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

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

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

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 ·
1254 阅读 ·
2 点赞 ·
0 评论 ·
11 收藏

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

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

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 ·
6655 阅读 ·
4 点赞 ·
1 评论 ·
31 收藏

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 ·
120 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

小笔记——红黑树

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

小笔记——内存控制器

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

ARM——LDXR&STXR&自旋锁

汇编语言——ARMgcc基本汇编规则“=r”:输出op“r”:输入op“+”:即输入又输出“&”:表示在汇编代码之前,对应的操作数会被输入部分修改“memory”:表示内存被修改了
原创
发布博客 2021.04.19 ·
2863 阅读 ·
0 点赞 ·
0 评论 ·
9 收藏

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 ·
173 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

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

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

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

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 ·
703 阅读 ·
1 点赞 ·
0 评论 ·
10 收藏

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 ·
224 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

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 ·
492 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

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 ·
628 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

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 ·
189 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

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 ·
514 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

mit6.824 LEC 2: RPC and Threads

LEC 2: RPC and Threads官网地址
翻译
发布博客 2020.09.02 ·
146 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

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 ·
296 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多