go-内置数据结构的实现原理
管道切片每个切片都指向一个底层数组
数据结构123456// src/runtime/slice.go:slicetype slice struct { array unsafe.Pointer len int cap int }
操作使用数组创建slice使用数组创建slice时,slice将与原数组共用一部分内存。
扩容扩容的本质:重新分配内存(len > cap时),拷贝数据,追加数据。
cap < 1024, cap = 2 * cap
cap > 1024, cap = 1.25 cap
MapGo语言的map基于Hash表实现。
特性初始化12345678910// make初始化func MapInitByMake() { m := make(map[string]int, 100) m["apple"] = 1 m["banana"] = 2 for k, v := range m { ...
B-Test-Environment
前言由于学校要求的软件版本与较新版本的Win10, Win11有冲突,导致在配置环境过程中可能会出很多问题,eNSP模拟器的AR201路由器无法正常工作,下文尽量给出了解决方案
Windows硬件虚拟化技术开启硬件虚拟化解释:启动硬件虚拟化使得VirtualBox可以模拟硬件
参考文章:具体过程如下:
1、电脑开机时,按F1,F2或F12或DEL或ESC等键进入BIOS,不同电脑进入BIOS的按键有一定不同。
2、进入BIOS后,找到Configuration选项并打开。
3、选择Intel Virtual Technology并回车。
4、将光标移至Enabled,然后再回车。
5、按F10保存并退出即可。
关闭Hyper-V解释:Hyper-V是微软提供的虚拟化技术,可能与VirtualBox的方案冲突。
参考文章具体过程如下:
Win+X, 点击以管理员权限启动Windows PowerShell,输入命令:
1bcdedit /set hypervisorlaunchtype off
从而关闭Hyper-V支持。
软件下载参考文章
有些文件的版本号与参考文章不同
WinPca ...
bustub总结帖
Buffer ManagerLRU-KB+Tree
B+Tree nodebase page
leaf page
internal page
xv6总结帖
XV6是怎么运行的在真实的物理环境中。涉及到从硬件加电或重置到操作系统完全接管控制的过程。
这个过程大概分为以下几个步骤:
引导加载程序。 BIOS初始化硬件,找到设备,执行硬盘引导扇区的初始化代码。
引导加载程序加载内核。 引导加载程序读取磁盘上的内核映像到内存中,并跳转到内核的入口点开始执行。
内核初始化。设置中断描述符表,建立虚拟内存。在xv6中,这部分逻辑开始于main函数,该函数定义在kernel/main.c中。
启动进程。 创世纪进程init
kernel/main.c12345678910111213141516171819202122232425262728293031323334353637// start() jumps here in supervisor mode on all CPUs.voidmain(){ if(cpuid() == 0){ // 这个条件判断确保只有一个CPU(通常是CPU 0)执行以下的初始化任务,因为在多核系统中,所有的CPU核心几乎同时启动,但系统初始化只需执行一次。 consoleini ...
Java框架
Spring Framework系统架构
核心概念IoC控制反转为了解决耦合度偏高的问题,在使用对象时,程序中不要主动使用new产生对象,转换成由外部提供对象。
DI 依赖注入注解AOP面向切面编程作用:在不惊动原始设计的基础上为其进行功能增强
Spring思想:无侵入式编程
Spring事务SpringMVC