自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 资源 (1)
  • 收藏
  • 关注

原创 网络协议之TCPUDP对比

粘包TCP粘包在TCP的协议头中,没有如同UDP一样的报文长度这样的字段,但是有一个序号这样的字段但是在应用层,看到的只是一串字节数据,就不知道从那一段到那一段是一个完整的数据包解决对于定长的包,保证每次都按照固定大小读取即可对于变长的包,可以在包头的位置,约定一个包总长度的字段,从而就知道包尾位置还可以使用明确的分隔符间隔UDP不存在粘包对于UDP,如果还...

2019-08-19 16:52:34 317

原创 网络协议之HTTPUDP

网络协议HTTP协议 (超文本传输协议)URL (统一资源定位符)https://www.baidu.com/s?wd=url&rsv_spt=1#ch2​ | | | | | |协议名 服务器地址 文件路径 查询字符串 查询参数 片段标识符像 / ? : 等这样的字符,已经被url当做特殊意义理解了,因此这些字符不...

2019-08-19 16:52:04 367

原创 网络协议之TCP

TCP协议TCP协议段格式4位TCP报头长度:4位表示的最大10进制数为15,15*32/8= 60字节 所以报头最大长度为60字节6位标志位:URG:紧急指针是否有效ACK:确认号是否有效PSH:提示接受端应用程序立即从TCP缓存区把数据读走RST:对方要求重新建立连接;携带RST标识的报文段称为复位报文段SYN:请求建立连接;携带SYN标识的称为同步报文段FI...

2019-08-19 16:50:25 234

原创 网络协议之IP

IP协议主机:配有IP地址,但是不进行路由控制的设备路由器:配有IP地址,又能进行路由控制节点:主机和路由器的统称4位版本号:指定IP协议的版本,对于IPv4就是44位头部长度(header length):IP头部的长度是多少个32bit,也就是length*4的字节数,4bit表示最大的数字是15,因此IP头部最大长度是60字节;8位服务类型:3位优先权字段,4位TOS字段,和...

2019-08-19 16:48:48 333

原创 网络协议之链路层

数据链路层以太网帧格式类型有三种:IP、ARP、RARPMAC地址MAC地址用来识别数据链路层中连接的节点长度为48位,用16进制数中间间隔:来表示MAC地址在网卡出厂就确定,是唯一的。虚拟机中不一定MTUMTU最大传输单元,是对发送数据长度的规定,最大值1500,不同的网络类型有不同的MTU如果一个数据包从以太网路由到拨号链路上,数据包大于拨号链路的M...

2019-08-19 16:47:39 273

原创 Linux网络基础一

网络基础基础概念ip地址:在网络中唯一标识一台主机port端口:在一台主机上标识一个进程 (二个字节16位整数,一个端口号只能被一个进程占用,一个进程可以绑定多个端口号)ISO七层模型物理层 链路层 网络层 传输层 会话层 表示层 应用层表示层:图像、视频编解码、数据加密会话层:建立会话,如session认证、断点续传。TCP/IP五层模型物理层: 负责光电信号传...

2019-08-19 16:45:27 469

原创 c++多态原理

多态的原理虚函数表class base{public: virtual void func() { cout << "func" << endl; }private: int a_;};int main(){ base b; cout << sizeof(b) << endl; // 8 32位 return...

2019-07-14 14:16:08 131

原创 c++多态

多态同一行为,不同对象完成时产生的不同状态多态是在不同继承关系的类对象,去调用同一函数,产生了不同行为。形成条件必须通过基类的指针或者引用调用虚函数被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写虚函数被virtual修饰的类成员函数称为虚函数class Person{public: virtual void display();};虚...

2019-07-14 14:14:28 90

原创 c++多态

多态同一行为,不同对象完成时产生的不同状态多态是在不同继承关系的类对象,去调用同一函数,产生了不同行为。形成条件必须通过基类的指针或者引用调用虚函数被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写虚函数被virtual修饰的类成员函数称为虚函数class Person{public: virtual void display();};虚...

2019-07-12 22:52:53 120

原创 c++继承二

c++11继承二继承与友元友元关系不能继承,基类友元不能访问子类私有和保护成员class Student;class Person{public: friend void print(const Person&, const Student&);protected: string name_{"yker"}; }; clas...

2019-07-10 21:26:31 87

原创 c++继承一

c++继承一不同访问限定符的继承变化使用class时默认的继承方式是private,使用struct时默认的继承方式是public基类和派生类对象赋值转换派生类对象可以赋值给基类的对象/基类的指针/基类的引用,叫做切片基类对象不能赋值给派送类对象基类的指针可以通过强制类型转换赋值给派生类的指针这是c语言的锅。但是必须是基类的指针是指向派生类对象时才是安全的。如果基类是多态类...

2019-07-10 21:24:28 93

原创 c++模板一

模板编程函数模板函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型语法template <typename T1, typename T2, ..., typename Tn>template<typename T>void swap(T& lhs, T& rhs){ T temp...

2019-06-23 16:17:40 114

原创 c++异常

c++异常c++需要异常吗?在c语言中常见的错误处理方式分为返回值我们常用函数的返回值来标志成功或者失败,甚至是失败的原因。但是这种做法的最大问题是如果调用者不主动检查返回值也是可以被编译器接收的。这在c++中还导致另外一个问题,就是重载函数不能只有不同的返回值,而有相同的参数。如果需要不同返回值的来返回错误信息的话。(除非c++支持多值返回或者使用结构体返回或者使用输出型参数...

2019-06-22 22:56:37 870

原创 单例模式 Singleton

单例模式 Singleton饿汉模式class Singleton{public: static Singleton* GetInstance() { return &instance_; }private: Singleton(){} Singleton(const Singleton&) = delete; ...

2019-06-17 23:43:38 125

原创 c++内存管理

栈是非静态局部变量/函数参数/返回值等存储地方,栈向下增长内存映射段是高效I/O映射方式,用于装载共享的动态内存库,可以使用系统接口创建共享内存堆用于程序运行时动态内存分配,堆向上增长 通过brk指针操作数据段 存储全局数据和静态数据代码段 可执行的代码 / 常量内存分配函数区别malloc函数原型:void* malloc(unsigned size);函数功...

2019-06-17 23:04:52 97

原创 告别xshell,使用vscode远程linux开发

告别过去在vscode有了remote ssh之前,大多数Linux服务器开发者通常使用vs远程Linux,或者xshell配合vim的姿势,进行服务器开发,虽然vs很强大,调试很清晰,可是打开vs的时间和启动调试的时间是比较长的,xshell使用vim虽然也很方便,但是仍然会存在感官上的不足,我厌倦了打开多个tab来回切换,也厌倦了千篇一律的命令行界面, 所以我选择了vscode远程Linux...

2019-06-02 15:40:52 30413 19

原创 类与对象补充

构造函数在efftivec++中有一个准则是,在一个对象实例化之前应该对其所有成员变量初始化构造函数体中的语句只能将其称为赋初值,而不能称之为初始化。因为初始化只能一次,而构造函数体内可以多次赋值初始化列表特征:以一个冒号开始,接着是一个以逗号分隔的数据成员列表Date(int year, int month, int day):year_(year), month_(month),...

2019-05-31 11:46:48 141

原创 类与对象

类的定义​ class为定义类的关键字,ClassName为类的名字,{}; 中为类的主体​ 类中的元素称为类的成员,类中的数据称为成员变量或属性;类中的函数称为成员函数或者类的 方法类的两种定义方式声明和定义全部放在类体中 注意: 成员函数在类中定义, 默认内联声明放在.h文件中, 类的定义放在.cpp文件类的访问限定符及封装public修饰的成员在类外直接被访问p...

2019-05-31 11:46:32 117

原创 c++入门

c++语言的历史和标准化1979年4月,贝尔实验室的Bjarne Stroustrup(本贾尼·斯特劳斯特卢普)博士等人负责分析UNIX内核,但当时没有合适的工具能够有效地分析由于内核分布而造成的网络流量,将内核模块化,因此他们的工作进展缓慢。1979年10月,Bjarne Stroustrup为C语言增加了类似于Simula语言的类机制并设计开发了一个预处理器Cpre,来处理这些添加的元素和C...

2019-05-31 11:44:06 117

原创 Linux线程安全

Linux线程互斥临界资源多线程执行流共享的资源就叫做临界资源临界区每个线程内部,访问临界资源的代码块互斥任何时刻,互斥保证有且只有一个执行流进入临界区,访问临界资源,对临界资源起保护作用原子性不会被任何调度机制打断的操作,该操作只有两态,要么完成,要么未完成线程安全多个线程同时操作临界资源而不会出现数据二义性在线程中是否对临界资源进行了非原子...

2019-05-23 18:05:34 174

原创 Linux线程

线程概念在传统操作系统中,进程就是一个运行中程序的描述信息–PCB 控制程序的运行Linux系统并没有对线程设计一个TCB来控制线程的运行在Linux下,线程以进程PCB模拟实现,也就是说在Linux下PCB其实是一个线程在Linux下,线程其实是一个轻量级进程Linux进程实际是一个线程组 当中包含一个或者多个线程因为CPU调度程序运行时调度PCB,因此线程是CPU调度的最小单位...

2019-05-17 16:55:31 208

原创 Linux信号

进程信号基本认识:信号是进程之间事件异步通知的一种方式, 属于软中断信号种类kill -l 命令查看linux信号(需在root用户下才能看到全部信号)共62种信号, 分为非可靠信号和可靠信号非可靠信号为 1~32可靠信号为 34 ~ 64信号的生命周期信号产生 —》信号再进程中注册 —》信号再进程中注销 —》信号处理信号产生硬件:ctrl + c ctrl + | ctr...

2019-05-05 23:04:59 237

原创 Linux进程间通信

进程间通信进程的独立性–因为进程独立, 因此想要通信必须能够共同访问相同的媒介进程间通信目的(数据传输,数据共享,进程间的访问控制因为通信的目的不同,使用场景不同,因此操作系统提供了多种进程间通信方式:管道 (命名管道/匿名管道)数据传输共享内存 共享数据消息队列 传输数据信号量 进程间的访问控制管道进程间数据资源传输原理:内核中的一块缓冲区匿名...

2019-05-03 18:07:07 299 1

原创 Linux基础IO

Linux基础IO标准库接口fopen fclose fwrite fread fseekfopenr 只读方式打开文件r+ 读写方式打开文件w 只写方式打开文件, 文件不存在则创建, 存在则清空内容w+ 读写方式打开文件, 文件不存在则创建,每次写入数据都是写入文件末尾a 写追加方式打开文件, 文件不存在则创建,每次写入数据都是写入末尾a+ 可读, 写追加方式打开文件...

2019-05-01 21:48:30 253

原创 Linux进程控制

fork() 函数的使用​ fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值:1)在父进程中,fork返回新创建子进程的进程ID;2)在子进程中,fork返回0;3)如果出现错误,fork返回一个负值;​ 在fork函数执行完毕后,如果创建新进程成功,则出现两个进程,一个是子进程,一个是父进程。在子进程中,fork函数返回0,在父进程中...

2019-04-21 00:21:15 130

原创 Linux进程实例

fork() 函数的使用 ​fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值:1)在父进程中,fork返回新创建子进程的进程ID;2)在子进程中,fork返回0;3)如果出现错误,fork返回一个负值;​ 在fork函数执行完毕后,如果创建新进程成功,则出现两个进程,一个是子进程,一个是父进程。在子进程中,fork函数返回0,在父进程...

2019-04-16 22:51:23 1503

原创 Linux工具

Linux 开发工具gccGCC 编译器是 Linux 下默认的 C/C++ 编译器,大部分 Linux 发行版中都是默认安装的。GCC 编译器通常以 Linux 命令的形式在终端(Shell)中使用查看是否安装gcc安装gccyum install gcc // 换源速度更快编译将源文件编译成目标文件需要使用-c选项,例如:gcc -c main.c...

2019-04-16 11:55:37 153

原创 Linux缓冲区

Linux 缓冲区含义缓冲区是内存的一部分空间,用缓冲输入输出的数据。缓冲区又分为输入缓冲区和输出缓冲区。缓冲区又被称为缓存.意义主要的意义就是为了提高cpu的效率。输入端。假如没有缓冲区,我们要从磁盘中读取数据,有几个字符,CPU就要读写几次,CPU是高速率的,而读取是低速率的,这样做会降低CPU的效率。相反如果将数据都存在缓冲区里面,等要读取的时候就可以一次性读取多数的数据。...

2019-04-15 23:30:49 467

原创 Linux扩展命令

du 命令格式:du [选项] [文件]功能:显示每个文件和目录的磁盘使用空间。-a 显示目录中个别文件的大小。-b 显示目录或文件大小时,以byte为单位。-c 除了显示个别目录或文件的大小外,同时也显示所有的目录或文件的总和。-s 仅显示总计,只列出最后加的值。-h 以K、M、G为单位,提高信息的可读性。df 命令格式:df [选项] [文件]功能:可显示目前所有文件系...

2019-04-15 23:29:40 706

原创 Linux权限

Linux的权限系统在Linux中每个用户都属于一个组,Linux中每个文件都具有所有者、所有组、其他组root用户具有所有权限,是用户权限级别最高的一类用户文件的权限​ 如上图所示,目录文件和普通文件都具有所有者 所有组 其他组的权限​ example: text.txt 具有所有者的读写权限 所有组的读写权限 其他组的读权限​ 使用 ls -l 可以查看文件权限 r...

2019-04-15 23:27:57 272

原创 Llinux进程相关

进程概念冯洛依曼体系冯洛伊曼体系结构 --奠定了现代计算机的硬件体系结构现代计算机的五大硬件单元:输入设备:键盘输出设备:显示器存储器:内存运算器: cpu控制器操作系统目的:是计算机更人性化,人机交互能够更加友好功能:统筹管理计算机上的软硬件资源管理方式:库函数和系统调用接口的关系上下级的调用关系,库函数就是对系统调用接口的一层封装操作系...

2019-04-02 21:43:50 188

原创 Linux系统相关命令

Linux系统相关命令linux基本操作:命令格式: ls cd mkdir rm echo mv cat touch cp命令名 [选项参数] [操作对象]目录相关命令ls 列出当前目录下的内容一个终端打开之后,直接就会处于一个目录下目录:文件夹​ -a 浏览所有文件,包含隐藏文件​ -l 浏览文件的详细信息​ -t 对...

2019-04-02 21:38:08 95

原创 从零开始,构建前后端分离的博客系统三(jwt认证协议与RBAC用户角色权限的实践)

因为期末考试加上种种原因,没有及时更新博客,趁着假期时间,将欠下的债补上。在之前的博客系统代码中前端路由控制是通过登陆请求,成功返回uuid给前端,然后前端通过验证是否有uuid来实现前端路由的权限控制。在之后设计中,我意识到两个重要的问题问题一: 当api获取方式只有我一个人知道的时候,这种api访问无控制问题或许无关紧要,但是当有其他人知道,并借此来攻击我的服务器,那么我的服务器就只能...

2019-01-24 21:42:54 858

原创 从零开始,构建前后端分离的博客系统二

后端开发历程项目环境搭建我选择pycharm作为IDE,原因是自带virtual开发环境,可视化的包管理器,最重要的一点好看。项目主要由 api组件和models.py组成, manage.py实现项目启动及部署,config.py实现项目配置。蓝图及其配置 可参考Blueprint。数据库建立(使用sqlalchemy orm)其中关系建立请参考这篇文章models.p...

2018-12-22 12:48:40 1052

原创 c语言打卡

题目一 调整数组使奇数全部都位于偶数前面。题目:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。分析对数组中元素进行奇偶排序思路使用冒泡排序的方式,将是奇数的放在当前遍历元素前实现void oddByEven(int arr[], int size) { for (int first = 0; fir...

2018-12-02 13:12:19 497 1

原创 c语言打卡

题目一 unsigned int reverse_bit(unsigned int value); 这个函数的返回值value的二进制位模式从左到右翻转后的值。如:在32位机器上25这个值包含下列各位:00000000000000000000000000011001翻转后:(2550136832)10011000000000000000000000000000程序结果返回:25501...

2018-11-28 15:33:01 393

原创 c语言操作符

c语言操作符操作符对于一个程序员来说,是最熟悉不过的了,其数目繁多,单个容易理解,但是组合起来就不太容易让人理解 了,操作符对于计算机世界来说,十分有必要,可以更加便于计算机运算。算术操作符作为最让我们熟悉的莫过于加减乘除了,它们都属于算术操作符+ - * \除了%操作符之外,其他的几个操作符可以作用于整数和浮点数。对于/操作符如果两个操作数都为整数,执行整数除法。而只要有浮点...

2018-11-25 22:59:55 131

原创 c语言打卡

题目一 写一个函数返回参数二进制中 1 的个数 比如: 15 0000 1111 4 个 1 程序原型: int count_one_bits(unsigned int value) { // 返回 1的位数 }分析题目可以看出,我们需要先将十进制数转化为二进制一位一位与1比较思路通常我们使用while循环,将十进制转换为二进制,然后判断其位数是否为1,为1则count++不过如果遇...

2018-11-24 20:54:13 279

原创 c语言打卡

题目一 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果A选手说:B第二,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二;D选手说:C最后,我第三;E选手说:我第四,A第一;比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。分析根据题目,在不筛选的情况下每个人都有五种可能,所以第一步先展现出这五种可能,常用for循环所有可能情况列出后,就要对这些情况进行筛选,...

2018-11-21 21:33:27 223

原创 c语言实现扫雷游戏

分析玩法扫雷就是要把所有非地雷的格子揭开即胜利;踩到地雷格子就算失败。游戏主区域由很多个方格组成。使用鼠标左键随机点击一个方格,方格即被打开并显示出方格中的数字;方格中数字则表示其周围的8个方格隐藏了几颗雷;如果点开的格子为空白格,即其周围有0颗雷,则其周围格子自动打开;如果其周围还有空白格,则会引发连锁反应;在你认为有雷的格子上,点击右键即可标记雷;如果一个已打开格子周围所有的雷已经正...

2018-11-18 15:25:37 424

贪吃蛇源码

这是国外的一个用pygame实现的贪吃蛇源码,运用了pygame的sprite模块进行动画的实现

2018-02-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除