计算机网络-概述
因特网 基于ISP的三层结构的因特网 因特网的组成 三种交换方式 电路交换 电话交换机 接通电话线的方式称为 电路交换 三个步骤: 建立连接 (分配通信资源) 通话 (一直占用通信资源) 释放连接 (归还通信资源) 传输计算机数据时效率很低 (因为计算机数据传输是 突发式的) 分组交换 通过路由器 传送 分组 三方: 发送方: 构造分组、发送分组 路由器: 缓存分组、转发分组 (存储转发) 接收方: 接收分组、还原报文 报文交换 没有限制报文大小的交换, 需要各个节点交换机有较大的缓存空间 优缺点 电路交换 优点: 通信时延小 有序传输 没有冲突 适用范围广 实时性强 控制简单 缺点: 建立连接时间长 线路独占、使用效率低 灵活性差 难以规格化 报文交换 优点: 无需建立连接 动态分配线路 提高线路可靠性 提高线路利用率 提供多目标服务 缺点: 引起了转发时延 需要较大存储缓存空间 需要传输额外的信息量 分组交换 优点: 无需建立连接 提高线路利用率 简化了存储管理 (分组大小固定) 加速传输(在转发分组时可 ...
DFS和BFS
DFS 回溯算法,其实就是dfs的过程,这里给出dfs的代码框架: 123456789101112void dfs(参数) { if (终止条件) { 存放结果; return; } for (选择:本节点所连接的其他节点) { 处理节点; dfs(图,选择的节点); // 递归 回溯,撤销处理结果 }} 深搜代码模板,该模板针对的是四方格的地图: 123456789101112int dir[4][2] = {0, 1, 1, 0, -1, 0, 0, -1}; // 四个方向void dfs(vector<vector<char>>& grid, vector<vector<bool>>& visited, int x, int y) { for (int i = 0; i < 4; i++) { in ...
C++-仿函数与函数指针
函数指针 指向函数存储内存地址的指针 12// 创建一个 无参返回值为int 的函数指针int (*funcPtr)(); 把函数赋值给函数指针 1234567891011int func1(){ return 1;}int func2(){ return 2;}void main(){ int (*funcPtr)() = func1; // C++会隐式得把func1 转换成 &func1, 无需加入& funcPtr = func2;} 通过函数指针调用函数 123456int func3(int x){ return x;}int (*funcPtr1)(int) = func3;(*funcPtr1)(5);funcPtr1(5); //也可以这么使用,在一些古老的编译器上可能不行 把函数作为参数传入另一个函数 12345678910111213int add(int a, int b){ return a+b;} ...
排序算法
参考博客 复杂度 稳定性: 指待排序的序列中有两元素相等,排序之后它们的先后顺序不变. 也可以理解为一切皆在掌握中,元素的位置处在你在控制中.而不稳定算法有时就有点碰运气,随机的成分. BubbleSort 123456789void BubbleSort(vector<int>& vec, int l, int r){ if(l < r){ for(int i=0; i<r; i++){ if(vec[i] > vec[i+1]) swap(vec[i], vec[i+1]); } } BubbleSort(vec, l, r-1);} SelectionSort 12345678910111213void SelectionSort(vector<int>& vec, int n){ while(n > 1){ ...
libevent
libevent 是一个轻量级、跨平台的事件通知库,专门用于高效管理大量并发 I/O 操作。它为基于事件驱动的应用程序提供了抽象层,使得程序可以统一使用不同平台上的 I/O 多路复用机制(如 epoll、kqueue、select 等),从而简化了开发工作,提升了可移植性。libevent 特别适合开发高性能的网络服务器、事件驱动的应用程序和实时系统。 libevent 的特点: 跨平台:支持 Linux、Windows、macOS 以及其他 Unix 系统。根据系统的特性,libevent 会自动选择最佳的 I/O 多路复用机制,如 epoll(Linux)、kqueue(BSD、macOS)、select(通用)等。 事件驱动:提供基于事件的异步处理方式,支持 I/O、信号、定时器等多种事件源。 高效的 I/O 多路复用:对于大量并发的 I/O 处理,libevent 能够利用高效的 I/O 多路复用机制,实现高效的事件分发。 支持定时器和信号事件:除了 I/O 事件,libevent 还支持定时器事件和信号处理,使得它适用于更多类型的事件驱动应用。 libevent 的事件类 ...
select和epoll
select select() 是用于实现多路复用(I/O 多路复用)的系统调用,广泛应用于网络编程中。它允许服务器同时监听多个文件描述符(如套接字、文件或管道),并在这些文件描述符之一变为可读、可写或有错误时作出响应。这样可以避免为每个连接创建一个线程或进程,提升服务器并发性能。 函数定义 123#include <sys/select.h>int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); 参数解析: nfds: 需要监听的文件描述符数量,即所有文件描述符中最大的值加 1。这个参数用于告诉内核需要监听的文件描述符范围。 readfds: 一个指向 fd_set 结构的指针,代表要检查是否有可读事件的文件描述符集合。如果没有需要检查的描述符,传递 NULL。 writefds: 一个指向 fd_set 结构的指针,代表要检查是否有可写事件的文件描述符集合。如果没有需要检查的描述符,传递 NULL。 ...
Unity-NGUI之基础及组合控件
基础控件 Sprite Sprite作用 NGUI中所有中小尺寸图片显示都用Sprite显示 使用它来显示图集中的单个图片资源 创建Sprite Scene窗口红框内右键 上方工具栏NGUI中创建 Sprite参数 略 代码设置图片 123456789//1.改变为当前图集中选择的图片sprite.spriteName = "bk";//2.改变为其它图集中的图片//先加载图集NGUIAtlas atlas = Resources.Load<NGUIAtlas>("Atlas/login");sprite.atlas = atlas;//再设置图片sprite.spriteName = "ui_DL_anniuxiao_01"; Label 文本(支持富文本) Texture 一般图片,不能放到atlas 中的图片 组合控件
OS-存储器管理
存储管理是指存储器资源(主要指内存并涉及外存)的管理。 存储器资源的组织(如内存的组织方式) 地址变换(逻辑地址与物理地址的对应关系维护) 虚拟存储的调度算法 存储管理的功能 主存分配和回收 分配和回收算法及相应的数据结构。 地址变换 可执行文件生成中的链接技术 程序加载(装入)时的重定位技术 进程运行时硬件和软件的地址变换技术和机构 存储共享和保护 代码和数据共享 地址空间访问权限(读、写、执行) 主存容量扩充(存储器的逻辑组织和物理组织) 由应用程序控制:覆盖; 由OS控制:交换(整个进程空间),虚拟存储的请求调入和预调入(部分进程空间) 提高主存利用率 程序的装入和链接 程序的装入(重定位)(地址映射) 重定位 重定位: 程序运行装入主存时,要将程序中的虚拟地址转换为主存中的物理地址,这个转化过程就是重定位。 程序成为进程前的准备工作: 编辑:形成源文件(符号地址) 编译:形成目标模块(模块内符号地址解析) 链接:由多个目标模块或程序库生成可执行文件(模块间符号地址解析) 装入:构造PCB,形成进程(使用物理地址) 重定位方法 可重定位装入(静 ...
OS-进程管理
进程的描述与控制 程序的顺序执行及其特征 程序顺序执行时的特征: 顺序性: 按照程序结构所指定的次序 封闭性: 运行时候独占处理机资源,运行结果不受外界影响 可再现性: 初始条件相同,结果相同 程序的并发执行及其特征 定义:程序的并发执行是指一组在逻辑上互相独立的程序或程序段在执行时间上客观上互相重叠,即一个程序或程序段的执行尚未结束,另一个程序(段)的执行已经开始的执行方式 程序并发执行时的特征: 间断性(相互制约性):- “走走停停”,一个程序可能走到中途停下来,失去原有的时序关系; 失去封闭性:多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变, 致使程序的运行已失去了封闭性。 不可再现性:程序在并发执行时,由于失去了封闭性,也将导致失去其可再现性 进程 进程的定义 简:进程是程序的一次执行; 详:一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程 进程是系统进行资源分配和调度的一个独立单位 进程的特征 动态性: 进程是程序产生的:创建->运行->消亡 进程在生命周期中在三种基本状态之间转换 独立性: 各进程的地址相互独立 ...
OS-概述
操作系统定义 操作系统:是管理计算机系统资源、控制程序执行、改善人机界面和为应用软件提供支持的一种系统软件。 多道程序设计: 现代操作系统一般都采用多道程序设计技术,其基本思想是在主存中同时存放多个用户的作业,使之同时处于运行状态而共享系统资源。 多道程序设计——多个程序同时进入主存并发执行。 操作系统的作用 OS作为用户与计算机硬件系统之间的接口 OS是一个系统软件,因而这种接口是软件接口。 OS作为计算机系统资源的管理者 OS的主要功能为: 处理机管理:用于分配和控制处理机; 存储器管理:主要负责内存的分配与回收; I/O设备管理:负责I/O设备的分配与操纵; 文件管理:负责文件的存取、共享和保护。可见,OS确是计算机系统资源的管理者。 OS实现了对计算机资源的抽象 通常把覆盖了软件的机器称为扩充机器或虚机器。 操作系统的基本特性 并发 并行性:指两个或多个事件在同一时刻发生 并发性:指两个或多个事件在同一时间间隔内发生 在多道程序环境下,并发性是指在一段时间内,宏观上有多个程序在同时运行,但在单处理机系统中,每一时刻却仅能有一道程序执行,故微观上这些程序只能是分时 ...