No title
UE与STL智能指针
参考链接:C++ STL 四种智能指针浅析UE5中的智能指针源码(上)浅析UE5中的智能指针源码(下)
1. STL智能指针
C++ 标准模板库 STL一共给我们提供了四种智能指针:auto_ptr、unique_ptr、shared_ptr 和 weak_ptr,其中 auto_ptr 是 C++98 提出的,C++11 已将其摒弃,并提出了 unique_ptr 替代 auto_ptr。shared_ptr 和 weak_ptr 则是 C+11 从准标准库 Boost 中引入的两种智能指针,其中shared_ptr作为标准的共享所有权得智能指针最为常用。STL智能指针一般可以有效防止内存泄漏,但不是线程安全的
1.1 unique_ptrunique_ptr 是 C++11 新增的智能指针,它是一种独占式智能指针,它禁止其他智能指针与其共享同一对象,从而保证代码的安全性,如果出现了共享所有权的情况可能会编译出错。unique_ptr定义在头文件中,无法复制到其他的unique_ptr,无法通过值传递给函数,也无法用于需要副本得STL算法,但是可以通过s ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment
操作系统考研笔记
一. 操作系统引论二. 进程的描述和控制三. 处理机调度和死锁四. 存储器管理五. 虚拟存储器六. 输入输出系统七. 文件管理八. 磁盘存储器的管理九. 操作系统接口十. 多处理器操作系统
1. 操作系统引论1.1 操作系统的目标和作用
操作系统的目标:方便性,有效性,可扩充性,开放性
操作系统的作用:OS作为用户与计算机硬件系统之间的接口, 计算机资源的管理者, 实现了计算机资源的抽象
1.2 操作系统的发展过程
未配置操作系统的计算机系统
单道批处理系统
多道批处理系统:资源利用率高,系统吞吐量大,平均周转时间长,没有交互能力
分时系统:多路性,独立性,及时性,交互性
实时系统
1.3 操作系统的基本特征
并行和并发
并行
两个或多个事件在同一时刻发生
并发
两个或多个事件在同一时间间隔发生
引入进程
共享:互斥共享方式,同时访问方式
虚拟:时分复用与空分复用
异步
1.4 操作系统的基本功能
进程控制:为使作业并发执行,为其创建一个或多个进程,并为其分配必要的资源
进程同步:使多个进程相互协调,常用互斥与同步
进程通信:进程之间的 ...
计算机组成考研笔记
计算机组成原理
一. 计算机组成原理二. 计算机的发展和应用三. 系统总线四. 存储器五. 输入输出系统六. 计算机的运算方式七. 指令系统八. CPU结构及功能九. 控制单元的功能
1.计算机组成原理1.1 计算机系统简介
计算机软硬件
计算机软件通常可以分为系统软件和应用软件
计算机系统的层次结构
两级层次结构:汇编语言虚拟机器,机器语言实际机器三级层次结构:高级语言虚拟机器,汇编语言虚拟机器,机器语言实际机器机器语言可向下扩展微程序机器,向上扩展操作系统机器
1.2 计算机的基本组成
冯·诺伊曼计算机的特点
计算机由运算器,存储器,控制器和输入输出设备组成
指令和数据以同等地位存放于存储器中,并可按地址寻访
指令和地址均以二进制表示
指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数所在存储器中的位置
指令在存储器中按序存放,通常是顺序执行的
机器以运算器为中心,输入输出设备与存储器的数据传送通过运算器
典型的冯·诺伊曼计算机是以运算器为中心的,现代的计算机已转化为以存储器位中心
1.3 计算机硬件技术指标
机器 ...
计算机网络考研笔记
计算机网络考研笔记
一. 计算机网络体系结构二. 物理层三. 数据链路层四. 网络层五. 传输层六. 应用层
1. 计算机网络体系结构1.1. 计算机网络的概念, 组成和功能
计算机网络由若干节点和连结这些节点的链路组成这些节点可以是计算机, 集线器, 交换机或路由器
1.2. 计算机网络的分类
广域网, 城域网, 局域网, (个人局域网)广域网范围大约为几十到几千公里, 城域网作用距离5~50千米, 局域网的作用距离在1km左右按照使用者可以分为公用网和专用网
1.3. 计算机网络的性能
速率(比特率): 数据的传送速率, 单位为(b/s, kb/s)带宽: 某通道传送数据的能力, 单位为(bit/s)吞吐量: 单位时间内通过某个网络(信道, 接口)的实际的数据量.时延: 发送时延, 传播时延, 处理时延, 排队时延时延带宽积: 以比特为单位的链路长度往返时间RTT利用率U: D为当前网络时延,D0为空闲网络时延!
1.4. 计算机网络标准化以及相关组织
国际标准化组织ISO
1.5. 计算机网络结构分层概念
协议和划分层次
协议: 语法, 语义, 同步 ...
GO语言学习笔记
参考资料:effective GO
一.前言二.基本格式三.函数四.数据与初始化五.空白标识符六.内嵌七.并发八.错误
一. 前言Go语言是一门静态强类型,编译型语言;作为热门语言中较为罕见的近年来诞生的go语言,已经在行业内部有了较大规模的应用,应用于云计算,网站开发和并发处理等领域,尤其在国内热度较高,由于其较为特殊的语言性质,有一定的学习价值。
二. 基本格式
注释和分号
控制结构
1. 注释和分号GO语言提供了较为方便的官方代码格式化工具 gofmt ,从而方便不同代码习惯的开发者。GO的注释方式和C相同,但是与C语言不同的是,虽然go的分号同样意味着语句的终结,但词法分析器在扫描时会自动插入括号,因此控制结构中的大括号不能放在下一行。
2. 控制结构与python相似,GO语言的控制结构不需要括号,但是大括号是强制的。GO语言没有do和while,但是拥有功能更为强大的if,swith和for。
选择结构
if和switch支持在条件中接受初始化语句,可以在选择结构中创建结构变量,与for相似
1234if err := file.Chmod(06 ...
简易五流水线cpu实现
流水线 cpu 的简易实现github项目地址
一、整体思路1. 流水线 cpu
流水线 cpu 中一个指令执行的五个周期如上图所示。为了解决流水线同步问题,设计 cpu 中级间寄存器由上升沿触发,周期内器件由下降沿触发。
上图为书上的流水线 cpu 基本数据通路,本次实验主要在此基础上进行改进,且添加冲突处理模块,在实验过程中,我也发现了该图中很多不足的地方。
2.mips 指令集
mips 指令分为 R 型,I 型和 J 型,其中 R 型有三个操作数,I 型携带立即数,J 型为跳转指令。MIPS 指令
3. 冲突管理冲突管理是流水线 cpu 不得不面对的一个问题,解决方法主要为插入气泡来阻塞指令运行,已经增加新的数据回路使前指令的结果尽快回送到寄存器中。本次实验主要采取的是气泡插入法,结构较为简单但是降低了效率。
cpu 的冲突主要分为三种,结构冲突,数据冲突和控制冲突。结构冲突通过流水线 cpu 的结构设计可以避免,数据冲突主要是相距较近的指令所需数据地址相同产生的时间冲突,控制冲突主要针对跳转指令,本次实验中的冲突检测模块维护了一个队列用来检测冲突,从而解决数据冲突,对 ...