自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 Linux----线程重点篇

线程是进程内部的一条执行路径,每个进程至少有一条线程,即主线程。就是main函数的函数体,在主线程中可以通过线程库创建其他线程(函数线程)。主线程和函数线程会同时向下运行(并行和并发)并行:同一时刻同时运行并发:同一时段交替执行线程的实现方式主要有三种:用户级、内核级、混合模式用户级线程是说线程的创建、销毁、管理都在用户空间完成,内核只会识别为一个进程,一条线程。优点:灵活性;...

2019-08-23 17:46:24 290 1

原创 C++----设计模式之观察者模式

观察者设计模式定义了对象间的一对多的依赖关系,一个对象的行为依赖于另一个对象的状态的情况下,当对象状态发生变化时,依赖它的对象会得到通知并自动刷新。观察者模式中主要有两种角色:观察者和监听者观察者主要是在事件到来时,通知对于该事件感兴趣的监听者来处理事件。所以它的职责也就显而易见了:①通知观察者;②注册事件。那么监听者当然就是来处理事件的了。接下来通过代码实现一个简单的观察者模式~...

2019-08-18 23:54:01 258

原创 Linux----select、poll、epoll

Linux下实现I/O复用的系统调用主要有select、poll、epoll。I/O复用使程序能同时监听多个文件描述符,能大大提高程序的性能。使用I/O复用技术的主要有以下情况:(I/O复用虽然能同时处理多个文件描述符,但是本身是阻塞的)客户端要同时处理多个socket 客户端要同时处理用户输入和网络连接 TCP服务器要同时处理监听socket和连接socket 服务器要同时处理TC...

2019-08-16 23:55:35 240

原创 C++----MySQL中常见的存储引擎

对于MySQL来说,它提供了很多种类型的存储引擎,我们可以根据对数据处理的需求,选择不同的存储引擎,从而最大限度的利用MySQL的功能。一般有MyISAM、InnoDB、MEMORY和ARCHIVE四种。MYSQL中可以通过“SHOW ENGINES”语句来查看。...

2019-08-14 21:47:46 252

原创 网络编程----拥塞控制、流量控制详解

网络传输过程,某段时间传输量过大会给网络造成很大的压力。有没有很好奇是怎么解决的呢?拥塞控制和流量控制即将到达现场。先讲两个概念~拥塞就是说到达网络中的某一部分分组数量过多,使得网络来不及处理,导致这部分甚至整个网络性能下降。流量控制的实现方式:滑动窗口 流量控制出现的现象:丢包滑动窗口用来通知发送端可以发送数据的大小或是窗口标记了接收端缓冲区的大小(TCP首部的16位窗口...

2019-08-13 19:54:23 718

原创 网络编程---TCP/UDP协议重点详解(3)

之前博客讲了TCP协议的重点,今天来看看UDP协议吧!UDP是无连接、不可靠的、数据报服务UDP协议不需要建立连接,只要使用UDP协议的程序执行起来,两端可以通过ip和端口号直接进行交互。自然也就没有TCP协议中的listen、accept函数。UDP服务器编程流程:UDP客户端编程流程:UDP数据报服务sendto发送数据和recvfrom接收数据的次数相等。re...

2019-08-12 23:51:15 365

原创 网络编程----TCP/UDP协议重点详解(2)

TCP连接建立以后,是怎么保证数据传输的可靠性的呢?往下看就OK了...主要是依靠超时重传、应答确认、滑动窗口和拥塞控制机制实现的。这些机制与TCP头部有紧密联系~来看看TCP头部的构造!不难发现TCP头部的各种字段为管理TCP连接和控制数据流提供了足够的信息。结合上图来看看这些机制:确认应答:在三次握手、四次挥手和数据传输过程中,一端收到来自对端的信号时通过回复A...

2019-08-10 23:14:15 216

原创 Linux上git的安装及基本命令

Git是为了帮助管理 Linux 内核开发而开发的一个开源的分布式版本控制系统,可以有效、高速的进行项目版本管理。Linux上git的安装:挂载光盘配置yum源验证yum repolist安装git安装完成并验证(下图显示git版本信息表示安装成功)Linux上git的常用命令:git里主要分三个区:工作区、暂存区、版本库(仓库)安装完成后...

2019-08-09 20:32:00 732

原创 网络编程----TCP/UDP协议重点详解(1)

TCP、UDP协议是TCP/IP协议族中很重要的传输层协议。和IP协议相比,TCP、UDP更靠近应用层,可操作性更强。TCP协议本身的可靠性也为网络中的传输提供了一定的保障。相比于TCP协议,UDP协议传输和编程更简单。TCP的特点:面向连接的,可靠的,字节流服务TCP协议支持的是端对端的通信,使用TCP通信的双方必须先建立连接,才能开始数据的读写(基于广播和多播的应用程序不能使用TCP服...

2019-08-04 21:30:51 377

原创 网络编程-----网络传输协议及端口号

在了解了网络各层的职责和基本协议之后,对常见协议及对应端口号做个总结吧~协议名称 端口号 基于TCP/UDP HTTP(超文本传输协议) 80 UDP HTTPS(在HTTP的基础上添加SSL协议,可以数据加密和身份认证) 443 TCP DNS(域名解析协议) 23 既可基于UDP,又可以基于TCP,但大都是基于TCP协议 ...

2019-08-02 11:00:53 490

原创 网络编程-----OSI七层模型、TCP/IP模型

OSI网络七层模型以国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系为参考模型,不仅包括一系列抽象的术语或概念,也包括具体的协议。每一层实现各自的功能和协议,并完成与相邻层的接口通信。先来说说两个简单的概念:网络:把独立的计算机连接起来就构成了网络;互联网:把各个网络连接起来就构成了互联网。一起来看看网络分层吧~计算机网络中,实际应用的网络协议是...

2019-07-31 23:49:25 362

原创 C和指针-----指针运算(指针加法、指针减法)

指针 + 数字:需要调整,调整的权重为 sizeof(指针去掉一个*) 指针 + 1 即指针 + +; 指针 - 数字:需要调整,调整的权重为 sizeof(指针去掉一个*) 指针- 1 即指针 - -; 指针 + 指针:非法 指针 - 指针 :表示两指针之间间隔的单元格个数,需要调整,调整的权重为sizeof(指针去掉一个*),计算方法如下:①计算间...

2019-07-31 10:55:01 430

原创 C语言-----实现字符串拷贝及优化

如何不调用库函数自己手动实现字符串的拷贝呢?我们一起来看看吧~首先我们回忆一下字符串的特征,看看下面哪些是字符串呢?int main() //字符串:用""描述的字符集合,一定有'\0'结尾 只有以'\0'结尾的字符集合才能称为字符串{ char arr[10] = {'a','b','c','d'}; //是字符串 char brr[] = {'a'...

2019-07-30 16:14:21 2501

原创 Linux---系统调用函数、库函数、两者区别

系统调用函数是系统内核抛出来给用户空间调用的接口,系统调用函数由用户态调用,在内核态执行。库函数在函数库文件中实现,执行时只需要在用户态执行就可以了。简单来说,库函数一般在库文件里实现,系统调用函数在内核中实现,在编写代码时就实现了该功能。库函数有可能也需要转调系统调用函数,如fopen、printf等。也有可能不需要转调系调用函数,如:strlen、strcpy等。常见的库函数:fo...

2019-07-28 23:59:27 378

原创 Linux-----文件层次结构及Linux常用命令

Linux文件层次结构 Linux系统中一切皆文件,并使用不同的字符来加以区分不同的文件类型,以树状形式目录存储。Linux传统的文件格式为ext2。文件目录 目录名 存储内容 /bin 存放可执行文件(用户惯用指令) /etc 存放系统的主要配置文件 /boot 存放系统开机所需要的核心文件和配置文件 /root 系统管理员的家目录...

2019-07-26 21:46:01 409

原创 C++-----函数堆栈调用(调用过程、内存开辟、调用约定)

在前2篇博客中总结了函数的编译链接运行过程和虚拟空间地址分布,是不是还不能将它们联系起来呢?通过函数调用堆栈就可以把它们串起来了,那么我们来看看它们到底是怎么回事吧~其实程序的运行可以看作是连续的函数调用,我们以几个问题开始分析函数调用过程:函数实参怎么传给形参?形参调用有没有开辟内存?如果开辟内存,在哪里开辟的? 函数的返回值怎么返回到调用方函数? 函数返回后怎么知道从哪条语句开始继...

2019-07-23 21:21:40 1345 1

原创 C++-----内联函数(inline)的使用

inline是C++的一个关键字,用来修饰函数。内联函数是C++中的一种特殊函数,它可以像普通函数一样被调用,但是在调用时并不通过普通函数调用的机制而是通过将函数体直接插入到调用处来实现,内联函数和普通函数相比可以加快程序运行的速度,因为不需要中断调用,可以减少由函数调用带来的开销。(以空间换时间)inline函数在编译阶段进行处理,会在函数的调用点直接将代码展开(会导致函数只在本文件中可见)...

2019-07-23 19:24:43 618

原创 C++-----虚拟地址空间分布

操作系统(32位)会为每个进程分配4G(2的32次方计算得到)的虚拟地址空间,由用户空间和内核空间两部分构成。虚拟内存是内存的一种管理方式,实现对于逻辑上对于内存容量的扩展,使用硬盘(文件)来模拟的内存空间。Windows系统下,用户空间和内核空间以2:2比例划分,Linux系统下用户空间和内核空间以3:1划分。内核空间所有进程共享,用户空间各自独立。 虚拟地址空间分布如下图所示: (***64位...

2019-07-21 00:04:59 739

原创 C++-----程序编译链接运行原理

计算机不能识别高级语言,导致我们写好的程序不能直接运行,所以需要通过以下阶段将高级语言翻译成机器语言。预编译阶段:(.i) (gcc -E main.c -o main.i)删除“#define”并文本替换 处理所有条件项预编译指令(“#if”、“#endif”、“#ifdef”) 递归展开“#define” 删除注释 添加行号和文件标识(以便编译器产生...

2019-07-20 09:48:02 277

原创 网络编程----http与https协议的区别

http协议是以明文的方式传递信息,不提供任何方式的数据加密,因此使用http协议传输隐私信息(密码、卡号等)非常不安全。 https(安全套接字层超文本传输协议)是在http协议的基础上加入了SSL协议。https协议 = “SSL协议” + “http协议”构建的可进行加密传输、身份验证的网络协议。 SSL协议(Secure Socket Layer,安全套接层)是...

2019-07-10 10:08:39 345

原创 网络编程----http常见的状态码

http状态码是用户在浏览网页时,浏览器会返回一个http状态码,用来指示是否完成特定请求。状态码是3位十进制数据,第一个数字指定了状态码的类型,后两位没有分类作用。主要分5类:1xx(信息):服务器收到请求,继续执行下一步操作。 2xx(成功):操作被成功接收并处理。 3xx(重定向):需要进一步请求以完成请求。(一般由于域名到期或域名未续费,将资源转移到其他网站上) 4xx(...

2019-07-10 00:04:49 222

原创 网络编程-----简述http/1.0与http/1.1

http协议(应用层协议):无状态协议,协议本身不保存用户的任何信息,每次请求都是独立的。 http/1.0 缺点:短连接,每次请求都需要2个RTT的开销(每次都需要通过三次握手建立连接) (RTT:请求往返所需要的时间,从请求开始发送到接收到接收端的确认信息为止) 独立的请求可以减小服务器的压力,服务器负担重,但浏览器可以同时并行多个tcp...

2019-07-08 12:42:17 497

原创 网络编程-----http协议的请求方法

http协议(超文本传输协议)是客户端和服务器段请求和应答的标准,基于tcp/ip通信协议来传递数据,用于从www服务器传输超文本到本地浏览器。 http协议有以下9种常见请求方法,使用最多的是get方法、post方法。其中head、get、options、trace是安全的方法,他们只从服务器上获取资源或信息,不会对服务器进行任何修改,而post、put、delete、patc...

2019-07-06 13:40:56 213

原创 Linux-----VMware虚拟机中vi的常见命令

1、放大终端,"ctrl" + "shift" + "+"(有的电脑"ctrl" + "+"就可以)2、切换目录,cd ~ (切换到个人家目录)3、pwd 查看当前目录4、ls 查看当前目录的文件和子目录 ls -a 显示所有文件,包括隐藏文件5、清屏,clear,或者ctr+l6、新建文件夹(目录),mkdir 文件夹名(目录名) ,如 mkdir src7、编辑文件...

2018-10-16 22:42:32 11255

原创 动态内存申请和释放

在我们使用很多函数要申请变量空间时,比如像筛选素数,根据题目筛选范围的不同,变量数不同,这是我们如果通过以下方法都会有错误:void SiftPrime(){ int arr[n];//错误,数组长度不能为变量 int arr[100];//错误,如果筛选范围为1000,会越界,空间大小不合适}这些办法都不行,所以我们要申请动态内存来解决未知变量个数申请空间的问题,动...

2018-05-02 10:17:56 624

原创 C语言中const的用法

const是c语言中的关键字,用来定义常变量。1、在使用const时有以下规则:①const将变量变为只读。只有读权限,没有写权限;②数据类型对const无影响。如以下两种定义无区别:int const a = 10; //不管const是在int前或后,都无影响。const int a = 10; //都对整形变量a赋值为10,且将a设为只读。③const修饰它的...

2018-04-20 23:50:59 371

原创 如何根据等式判断系统采用几进制

用以下例题介绍一下:⑴(选择)如果在某系统中,等式15*4=112成立,则系统采用的是几进制?解题过程:设系统采用n进制由题可得(1*n+5)*4=1*n^2+1*n+2 ①①式两边同时对n取余,得20%n=2 ②①式两边先整除n再取余,得(4+20/n)%n=1 ③联立②③式可解得n=6通过这种方法可解出n值,对此过程反思可以发现:用两个乘数的个...

2018-04-12 15:37:39 1728

原创 C和指针----指针基础2

指针变量的引用⑴直接访问:直接按变量名访问的方式; 间接访访问:通过另一变量找到原变量的地址从而访问原变量的方式。⑵*为指针运算符或“间接访问”运算符,*p表示指针变量p指向的对象。⑶在指针变量的引用过程中,容易出现很多错误,以交换两变量的值为例,如下:void swap1(int a,int b){ int temp; //定义一个整形变量,未传指针,不能...

2018-04-11 09:30:53 252

原创 C和指针----指针基础

指针:指针是一种数据类型,变量在内存中所对应单元的地址。即指针=地址; 每种指针应该指向同类型的数据的地址; 指针变量:指针变量是一个存放其他类型数据地址的变量,指针变量的值为地址; 定义指针变量:类型名*指针变量名 如:int *p float *p char *p …可以在定义指针变量的同时对它初始化,如:int *p=&a ,指针变量定义及初始化代码如下:...

2018-04-08 18:07:53 224

原创 “求给出的高位正整数的位数”,“如何按顺序输出其各个位”,“如何按逆序数输出其各个位”

1.求出一个不多于五位数的正整数的位数 首先我们会想到判断到底这个正整数是几位数,if...else或者if...else if 进行判断,但这样写出来程序太麻烦,现在我们使用简便一点的方法: 通过让给定的正整数整除10,且每整除一次让统计位数的变量自增一这样一个循环来达到求位数的目的。代码如下:int GetFigures(int n) //定义一个正整数n { int ...

2018-04-08 17:02:13 572

空空如也

空空如也

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

TA关注的人

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