计算机组成原理复习纲要
计算机系统概述 冯 诺依曼计算机 五大功能部件 基本要点 计算机由五大部件组成,采用二进制形式表示数据和指令。 采用存储程序方式。 输入设备 将程序和数据以机器所能识别和接受的信息形式输入到计算机内。 比如键盘、鼠标、扫描仪、语音输入设备、手写笔、触摸屏、数码摄像设备等。 输出设备 将计算机处理的结果以人们所能接受的信息形式或其它系统所要求的信息形式输出。 如显示器、打印机、绘图仪 、音箱等。 存储器 用于存放程序和数据。存储器是计算机存储信息的核心。 主存储器(主存,内存) CPU能直接访问,主存分为若干个存储单元,每个单元都有唯一的地址编码,通常是按字节或字节的整数倍编码。存储器总是按地址访问的, 辅助存储器(外存,辅存) CPU不能直接访问,辅存中的信息必须调入主存后,才能为CPU所使用。 辅存速度较慢,但容量大,用于存放CPU暂时不用的程序和数据。 比如软盘、硬盘、光盘、磁带机等。 运算器 用于对数据的加工处理,完成算术逻辑运算。 组成 核心是算术逻辑部件(Arithmetic and Logical Unit),简称为ALU。 还有若干寄存器,用于存放操作数、中间结...
从零开始分析C#所有常用集合类的设计(源码向)
前言 此些天来,武疫兴然,吾甚惧焉,居家不出,项目做完,游戏玩腻,根亦秃噜,百无聊赖,猛然惊醒,吾当面试,基础犹菜,从何下手,唯有C#,C#之何,集合为多,多而不晓,遂有此文。 环境 .Net Framework 4.8 前置知识 Hash Hash算法无论是在项目开发还是底层语言设计上都是非常常见的一个算法,既然如此常用,那么它的重要性自然不必多说,这也是把它放在第一位讲的原因。 Hash算法与Hash函数 Hash算法是一种数字摘要算法,它能将不定长度的二进制数据集给映射到一个较短的二进制长度数据集。常见的MD5算法就是一种Hash算法,通过MD5算法可对任何数据生成数字摘要。而实现了Hash算法的函数我们叫它Hash函数。Hash函数有以下几点特征。 相同的数据进行Hash运算,得到的结果一定相同。 不同的数据进行Hash运算,其结果也可能会相同。 Hash运算是不可逆的,不能由key获取原始的数据。 常见的Hash算法 直接寻址法:取keyword或keyword的某个线性函数值为散列地址。即H(key)=key或H(key) = a•key + b,当中a和b为常...
那些年我喜欢的主播——曾经的我长大了,他们却不在了
今天天气很好,但是昨天睡得很晚,第一节又有课,7:50就起床了,所以很困。 但是又不想午睡,把玩的时间浪费在睡觉上总有点不合适,那干什么呢? LOL?不想玩,太累了。 看直播吧,嗯小C不错,但是总感觉少了点什么,哦,不知道什么时候阿亮已经不在了,看了一会,除了那略显做作的大吼大叫,已经没什么节目效果了吧。带着略微烦躁的心情推出了直播间。 发了一会呆,突然想起,去看看曾经的那些主播吧。 最先想起的是猴哥,曾经和老王闹掰之后人气就再也回不来了了,直播间也尘封已久了。 老王其实现在也还行,在企鹅直播,当年可是龙珠LOL区霸主级别的主播,虽然现企鹅人气大不如前,不过相对于其他主播来说处境已经很好了。 城管希,曾经的观赏性极强的王者AP蛮王,也早就不在了,据说考上公务员之后就停播了。 马老C现在热度还行,靠着B站那几个传菜的互相反哺,经营的不错,不过这种情况还能维持多久呢? LOL区就这么多吧,接下来是从高中玩到大学的英魂之刃 首先想到的是LS小妖,当时的童年女神哦,其实在上高中的时候偶然瞥见了一次她的直播,没有了当年的清纯,浓妆艳抹的样子。现在在各个平台也找不到了,据说是擦边球违规被封了...
Unity Shader入门精要学习笔记:渲染流水线
前言 本系列博客记录学习《Unity Shader入门精要》(冯乐乐著)中的笔记和感悟。 渲染流水线 综述 渲染流水线的最终目的在于生成或者说是渲染一张二维纹理。 什么是渲染流水线 渲染流水线的任务在于:从一系列的的顶点数据,纹理等信息出发,把这些信息最终转换成一张人眼可以看到的图像。而这个工作通常是由CPU和GPU共同完成的。 渲染流程分为三个阶段: 应用阶段 主要提供渲染图元(点,线,三角面),以及渲染状态(顶点片元着色器,光源属性,材质等),我们开发者在这一阶段有绝对控制权。 几何阶段 处理所有和我们要绘制的几何相关的事情(例如应用阶段提供的渲染图元),决定需要绘制的图元,如何绘制图元,在哪里绘制图元。这一阶段在GPU进行。 一个重要任务是把顶点坐标变换到屏幕空间中,再交给光栅器进行处理。 这一阶段会输出屏幕空间的二维顶点坐标,每个顶点对应的深度值,着色等相关信息,并传递给下一个阶段。 光栅化阶段 使用几何阶段传递的数据来产生屏幕上的像素,并渲染出最后的图像。 这一阶段也是在GPU上运行。 光栅化的主要任务是决定每个渲染图元中的哪些像素应该被绘制在屏幕上,他需要对上一个阶段...
Unity Shader入门精要学习笔记:Unity Shader基础
Unity Shader概述 材质和Unity Shader 在Unity中需要配合使用材质和Unity Shader才能达到需要的效果 Unity Shader基础:ShaderLab 什么是ShaderLab Unity Shader是Unity为开发者提供的高层级的渲染抽象层。 在Unity中,所有的Unity Shader都是使用ShaderLab来编写的。 ShaderLab是Unity提供的编写Unity Shader的一种说明性语言。 Unity在背后会根据使用的平台来把这些结构编译成真正的代码和Shader文件,而开发者只需要和Unity Shader打交道即可。 Unity Shader的结构 12345678910111213141516171819202122232425262728Shader "Shader的名字,通过增加'/'来细分种类"{ Properties { //Name:属性的名字 //display name:显示在材质面板上的名字 //PropertyType:...
Socket学习笔记
源代码: https://gitee.com/NKG_admin/SocketTestDemo Socket 基础知识 https://blog.csdn.net/fighting_xa/article/details/50623571 http://liuliliujian.iteye.com/blog/898342 https://baike.baidu.com/item/socket/281150?fr=aladdin 看不懂没关系,因为我也看不懂。(旁白:滚!) 既然谈到Socket,就得牵扯到服务器端,什么是服务器端呢? 个人理解:服务器端就是自己的代码,让它跑在云主机(云服务器上,比如阿里云,亚马逊云这些)。而这些,其实就是在云端买了一个主机,它和你正在使用的电脑一样,有桌面,有系统,有蜘蛛纸牌。。。 不同的是,它有固定的公网IP,而我们电脑公网IP是变化的(所以如果要把自己电脑变成服务器的话需要用花生壳做内网穿透)。 所以我们要把代码里绑定IP和连接IP的地方改成服务器的公网IP就行了。然后只需要把你服务器代码生成的exe文件在上面打开。让它365天没日没夜开着...
软件工程重点知识整理
前言 。。。没啥好说的,真是太痛苦了 基础知识汇总 单句 一 从结构化的瀑布模型看,在它的生命周期中的各阶段中,需求分析阶段出错,对软件的影响最大。 螺旋模型将瀑布模型和演化模型相结合,并增加了风险分析。 结构化分析方法是一种预先严格定义需求的方法,它在实施时强调的是分析对象的数据流。 进行需求分析可以使用数据流图(DFD),判定表,数据字典。 在面向数据流的软件设计方法中,一般将信息流分为变换流和事务流。 PAD图的控制执行流程为自上而下,从左到右。 概要设计阶段产生的文档包括概要设计说明书,数据库设计说明书,用户手册。 与选择编程语言有关的因素是软件开发的方法,软件执行的环境,软件开发人员知识。 软件工程针对维护工作的主要目标是提高软件的可维护性,降低维护的代价。 开发软件工具的主要目的是为了提高软件生产率和改善软件质量。 在软件需求分析中,必须采用合理的步骤,才能准确地获取软件的需求,可归纳为4个步骤:需求获取,分析建模,文档编写,需求验证。 耦合衡量不同模块彼此间互相依赖(连接)的紧密程度,模块间的耦合性越高,其模块的独立性就越弱。 在面向对象的设计方法中,对象和传...
常用排序算法汇总
前言 记录并分析常用排序算法,方便自己日后查阅。 环境 语言:C# IDE:Rider 2019.3.3 冒泡排序 1234567891011121314151617181920212223/// <summary>/// 冒泡排序/// </summary>/// <param name="array">数组</param>/// <param name="count">数组元素个数</param>public static void BubbleSort(int[] array, int count){ //设置标识符,如果为false意为当前数组为有序,不需要再排序了 bool shouldSorted = true; for (int i = 0; i < count && shouldSorted; i++) { shouldSorted = false; for (...
NPBehave行为树架构
前提概要 为了避免歧义,我修改了Node.cs文件中一些函数命名 12DoStop->DoCancelStop->CancelWithoutReturnResult 我们都知道行为树中有三大组合节点,分别是 Selector:选择组合器,一遇到子结点返回成功则其本身返回成功,否则继续执行下一个子结点,全部失败则其本身返回失败 Sequence:序列组合器,一遇到子结点返回失败则其本身返回失败,否则继续执行下一个子结点。全部成功则其本身返回成功 Parallel:并行组合器,全部子节点执行成功则其本身成功,有一个子结点执行失败,则终止其余子结点执行,其本身返回失败 架构流程图 NPBehave本身就是通过Start,DoStart,Stop,DoStop以及Stopped来控制整个行为树运转的,但是有一些函数命名容易引起起义,所以我做了修改 与生命周期相关的函数基本就这几个,最重要的,也就是最开始提到的会影响我们三个组合器运行状态结果的,就是Stopped函数 示例 举个例子,就以Selector为例 开始执行时,会开始处理子节点 1234567891011121...
浅谈C++与C#泛型编程的区别与联系
前言 这阵子群友讨论了很多次C++模板元编程和C#泛型的区别,但是大家懂得,在QQ群讨论这种体量的论题,你一言我一语很难说清楚,尤其是大家对各种名词的理解和定义不一致的情况下,所以我决定今天整一篇文章,结合代码,浅谈一下C++和C#泛型编程的区别与联系。 个人水平有限,欢迎大家指正,补充。 名词定义 正如上面所说,每个人对于各种名词的认识之间可能存在着差别,所以在这里统一用我的方式定义一下以下名词 泛型:泛型是一种程序语言设计技术,具体体现为,我们事先写好一份泛型程序(这里叫模板更合适),其中有一些部分或者全部是运行时根据我们的写法确定的,然后生成这部分的新实例,最后执行的是这些运行时生成的新实例 C#泛型:C#2.0新增的泛型技术 C++泛型/模板/模板元:即与template关键字相关的泛型技术 正文 由于C++的泛型功能可以算是C#泛型的超集,所以下面就以C++各项泛型功能为基准对比这两个语言的泛型功能 泛型函数 C++ 123456789101112class Generic_A{public: //声明与定义 template<typen...