计算机网络重点知识整理
计算机网络概述 计算机网络的概念 定义 一些互连的、独立自治的计算机集合。最重要的功能是连通性和资源共享 分类 从网络的作用范围进行分类 广域网 WAN (Wide Area Network) 局域网 LAN (Local Area Network) 城域网 MAN (Metropolitan Area Network) 个人区域网 PAN (Personal Area Network) 从网络的使用者进行分类 公用网 (public network) 专用网 (private network) 接入网 AN (Access Network) 计算机网络的性能指标 基础前置知识 比特(bit)意思是一个二进制数字(0或1)。 B为字节(Byte),b为比特(bit),一字节为8比特,即1B = 8b。 网络技术中的数率指的是数据的传送速率,当数据率较高时,常常在bit/s前面加上字母,比如k = 10310^3103,M = 10610^6106,G = 10910^9109,T = 101210^{12}1012等。 注意区分网络传输和文件系统中的数据后缀字母。比如一个100M...
计算机操作系统复习纲要
操作系统引论 操作系统基础知识 定义:操作系统(Operating System,OS)是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。 设计目标:在计算机系统上配置操作系统,,其主要目标是方便性,有效性,可扩充性和开放性。 作用:可以从用户,资源管理以及资源抽象等多个不同角度来分析讨论。 OS作为用户与计算机硬件系统之间的接口 OS作为计算机系统资源的管理者 OS实现了对计算机资源的抽象 操作系统的发展过程 未配置操作系统的计算机系统——单道批处理系统——多道批处理系统——分时系统——实时系统——微机操作系统的发展 单道批处理和多道批处理系统的原理,优缺点 单道批处理系统 原理 计算机系统自动的一个作业紧接一个作业地进行处理,直至磁带上所有作业全部完成。虽然系统对作业的处理是成批的,但在内存中始终只保持一道作业。 优缺点 主要缺点是系统中的资源得不到充分利用。优点是一定程度上提高了系统资源利用率。 多道批处理系统 原理 用户所提交的作业先存放在外存上,并排成一个队列,然后作业调度程序按照一定的算法,从队列选择若干个作业调入内存,使他们共享CPU和系统中的各种资源。...
C#对于非托管资源的释放原理探究
前言 我们都知道CLR有一个使用根的可达性算法的垃圾回收机制来回收托管内存,那么对于那些本机资源(非托管内存)他又是怎么清理的呢? 正文 要看他怎么清理资源,首先要知道这个资源是怎么来的,这里我们用FileStream这一经典类来探讨这些问题。 首先是它的构造函数 12345678910111213141516171819202122[SecuritySafeCritical]public FileStream(string path, FileMode mode) : this(path, mode, mode == FileMode.Append ? FileAccess.Write : FileAccess.ReadWrite, FileShare.Read, 4096, FileOptions.None, Path.GetFileName(path), false){}[SecurityCritical]internal FileStream( string path, FileMode mode, FileAccess access, Fi...
数字图像处理复习纲要
第一章 1.数字图像的概念: 数字图像:数字图像是对连续图像数字化或离 散化的结果,也称离散图像 2.广义的图像处理(图像工程)包含的三个层次 3.像素的概念 一幅图像可分解为许多个单元。每个基本单元叫做图像元素,简称像素 4.灰度图像存储容量的计算 空间分辨率:图像的尺寸(M∗NM*NM∗N),在成像时采了MN个样,图像包含了MN个像素。 幅度分辨率:在成像时量化成了G(G=2kG = 2^kG=2k)个灰度级,存储一幅图像所需的位数b(b=M∗N∗kb = M * N * kb=M∗N∗k)(单位是bit) 第二章 1.像素的邻域 2.像素间距离,三种距离公式 像素间距离 : 欧氏距离(也是范数为2的距离):DE(p,q) = [(x − s)2 + (y − t)2]12D_E(p,q)\;=\;\lbrack{(x\;-\;s)}^2\;+\;{(y\;-\;t)}^2\rbrack^{\frac12}DE(p,q)=[(x−s)2+(y−t)2]21 城区距离(也是范数为1的距离): D4(p,q) = ∣x − s∣ + ∣y − ...
数据结构篇:邻接表
每一个顶点后面就是一条链表,每个顶点都存在数组里。 以这张图为例 结构如下 运行截图 结构体定义 12345678910111213141516171819202122 //边表结点typedef struct EdgeNode { //顶点对应的下标 int adjvex; //指向下一个邻接点 struct EdgeNode *next;} edgeNode;//顶点表结点typedef struct VertexNode { //顶点数据 char data; //边表头指针 edgeNode *firstedge;} VertexNode, AdjList[100];//集合typedef struct { AdjList adjList; //顶点数和边数 int numVertexes, numEdges;} GraphAdjList; 完整程序 1234567891011121314151617181920212223242526272...
接入Recastnavigation寻路到ET5.0
前言 因为Unity版本的更新迭代,老版本的A*插件在新版本Unity已经无法正常使用,包括一些运行时代码也已经过时,重新接入要花费很多时间,干脆接入一个新的寻路方案吧。 这里选择的是久负盛名的https://github.com/recastnavigation/recastnavigation,但因为他是基于C++的,所以我们要使用C#的P/Invoke来调用它的dll来实现寻路。 由于篇幅与操作复杂的原因,本文会更加注重大体的工作流程,而不会有太多细节上的图片,但是会有一个配套的详细教学视频供大家学习,视频链接:https://www.bilibili.com/video/bv1uK4y1E7CV。 C++/C#的桥接源码也会以在码云开源的形式分享给大家,完整的示例可以在我的Moba项目 https://gitee.com/NKG_admin/NKGMobaBasedOnET 中看到。 通过本文和配套视频你将能学习到recastnavigation的大体设计思路,使用方式,Unity/服务器接入recastnavigation的完整流程。 感谢@footman大佬在我学习过...
DFS和BFS
深度优先遍历 (DFS) 深度优先遍历,也称作深度优先搜索,缩写为DFS 深度优先遍历从某个顶点出发,访问此顶点,然后从v的未被访问的邻接点触发深度优先便利图,直至所有和v有路径想通的顶点都被访问到。 这样我们一定就访问到所有结点了吗,没有,可能还有的分支我们没有访问到,所以需要回溯(一般情况下都设置一个数组,来记录顶点是否访问到,如果访问到就不执行DFS算法,如果未被访问过就执行DFS算法) 以这张图为例 我们约定,在没有碰到重复顶点的情况下,优先选择右手边 那么按深度优先遍历就是:A B C D E F G H(此时这条线路已经走到尽头,可是还有一个I顶点没有遍历,所以回到G,发现G的邻接点都遍历过了,再回到F,发现F的邻接点也都遍历过了。。。直到D顶点,发现I这个顶点没有遍历,所以把I再遍历,继续回溯,最终回到起点A) I 落实到代码就是 123 //访问标志的数组,为1表示访问过,为0表示未被访问int visted[100]; 1234567891011121314151617 //邻接表的深度优先遍历算法void AdjacencyList::DFS(GraphAd...
数据结构篇:校园最短路径导航
地图数据的配置以及图的建立[toc] 首先去找一张学校的地图,并且自己配置好数据和路线** 在代码里面写好数据 123456 //地点信息char _mapName[32][50] = {"行政楼","实验楼D", "教学楼A", "篮球场", "足球场", "A4", "实验楼C", "教学楼B", "A2", "A6", "计算机系", "苏果超市", "果曼优品", "实验楼A", "教学楼C", "图书馆", "一食堂", "D2", "D8", "C4", "中国联通", "羽毛球场&q...
数据结构篇:单链表
本程序以类似应用程序的对话框形式进行单链表的操作。希望对大家的学习有所帮助。 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881...
数据结构篇:二叉树
二叉树的创建,递归遍历及其他基础知识 二叉树的相关概念 结点的度。结点所拥有的子树的个数称为该结点的度。例如右图B结点度数为2 叶结点。度为0的结点称为叶结点,或者称为终端结点。例如右图的F,D,C结点 分枝结点。度不为0的结点称为分支结点,或者称为非终端结点。一棵树的结点除叶结点外,其余的都是分支结点。例如右图的A,B,E,左图的A,B 结点的层数。规定树的根结点的层数为1,其余结点的层数等于它的双亲结点的层数加1。例如右图的F结点层数为4 树的深度(高度)。树中所有结点的最大层数称为树的深度。例如右图深度为4 树的度。树中各结点度的最大值称为该树的度。一般情况下,二叉树的度都为2 先给出结构 12345 struct BiTree { char data; BiTree *lchild,*rchild;}; 二叉树的创建 只能用先序法创建,单独的中序或后序都无法进行创建,原因和解决办法我会在以后博客进行完成 12345678910111213141516171819202122232425 BiTree * Tree :: PreCrea...











