自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 TCP/IP协议

TCP协议TCP协议段格式: TCP全称为“传输控制协议(Transmission Control Protocol) ”,就是对数据的传输进行一个详细的控制。 源/目的端口号:表示数据是从哪个进程来,到哪个进程去;4位TCP报头长度:表示该TCP头部有多少个32位bit(有多少个4字节);所以TCP头部最大长度是15*4=60;6位标志位: URG:紧急指针是否有效; AC...

2018-08-07 15:14:59 326

原创 UDP协议

传输层:端口号: 端口号(port)标识了一个主机上进行通信的不同的应用程序。 在TCP/IP协议中,用“源IP”,“源端口号”,“目的IP”,“目的端口号”,“协议号”这样一个五元组来标识一个通信。 端口号的划分:0 - 1023:知名端口号, HTTP, FTP, SSH等这些广为使用的应用层协议, 他们的端口号都是固定的;1024 - 65535: 操作系统动态分配的端口号...

2018-08-06 14:21:27 481

原创 HTTP协议

应用层:一般我们写的⼀个个解决我们实际问题,满⾜足我们⽇日常需求的网络程序,都是在应用层。HTTP协议: 1.认识URL: 平时我们俗称的“网址”,其实就是说的URL。 urlencode和urlecode  像 / ? :等这样的字符, 已经被url当做特殊意义理解了. 因此这些字符不能随意出现. 比如, 某个参数中需要带有这些特殊字符, 就必须先对特殊字符进行转义。  转...

2018-08-02 23:21:59 249

原创 C++ 引用

一引用的简介:引用不是定义一个新的变量,而是给一个已经定义的变量重新起一个别名。 定义的格式为: 类型 & 引用变量名 = 已定义过的变量名; 例如:int a = 10;int &b = a;//b是a的别名;引用的特点: - 一个变量可取多个别名; - 引用必须初始化; - 引用只能在初始化的时候引用一次,不能改变为再引用其他的变量; 注:&a...

2018-08-02 17:18:28 140

原创 简单的TCP网络程序

首先我们先来看一下用到的socket API,这些函数都在sys/socket.h中。 socket():int socket(int domain,int type,int protocol); - socket()打开一个网络通讯端口,如果成功的话,就像open()一样返回一个文件描述符; - 应用程序可以像读写文件一样用read/write在网络上收发数据; - 如果socke...

2018-07-19 15:14:00 1102

原创 简单的UDP网络程序

sockaddr结构:struct sockaddr{ _SOCKADDR_COMMON(sa_); //Common data:address family and length. char sa_data[14];//Address data.};sockaddr_in结构://Structure describing an Internet socke...

2018-07-14 00:35:22 151

原创 C++入门

C&C++的起源历史C语言是一种通用的程式语言,广泛用于系统软件与应用软件的开发。于1969年至1973年间,为了移植与开发UNIX作业系统,由丹尼斯·里奇与肯·汤普逊,以B语言为基础,在贝尔实验室设计、开发出来。 贝尔实验室的比雅尼·斯特劳斯特鲁普博士在20实际80年代发明并实现了C++。期初,这种语言被称作“C with Class”(包含类别的C语言),作为C语言的增强版出现。...

2018-07-06 10:04:53 153

原创 网络编程套接字

认识IP地址IP协议有两个版本, IPv4和IPv6,一般没有特殊说明的,默认为IPv4;IP地址是在IP协议中, ⽤用来标识⺴⽹网络中不同主机的地址;对于IPv4来说, IP地址是⼀一个4字节, 32位的整数;通常使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每⼀一个数字表 示一个字节, 范围是 0 -255。认识端口号 端口...

2018-06-26 21:45:15 226

原创 网络基础1

网络协议初识OSI七层模型: OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是⼀个逻辑上的定义和规范 ; 把网络从逻辑上分为了 7层.每⼀层都有相关、相对应的物理设备,⽐如路由器,交换机 ; OSI七层模型是⼀种框架性的设计⽅法,其最主要的功能使就是帮助不同类型的主机实现数据传输; 它的最⼤优点是将服务、接⼝...

2018-05-12 18:39:00 192

原创 进程间关系和守护进程

1、进程组   每个进程除了有一个进程ID之外,还属于一个进程组。进程组是一个或多个进程的集合。通常,它们与同一作业相关联,可以接收来自同一终端的各种信号。每个进程组有一个唯一的进程组ID。每个进程组都可以有一个组长进程。组长进程的标识是,其进程组ID等于其进程ID。组长进程可以创建一个进程组,创建该组中的进程,然后终止。只要在某个进程组中一个进程存在,则改进程组就存在,这与其组长进程是否终止无...

2018-05-12 16:57:26 172

原创 顺序栈的基本操作

完成顺序栈的 1.初始化 2.销毁 3.入栈 4.出栈 5.取栈顶元素方法的实现seqstack.h#pragma once#include<stddef.h>typedef char SeqStackType;typedef struct SeqStack{ SeqStackType* data; size_t size; size_t capaci

2018-05-04 18:00:25 246

原创 单链表的基本操作

单向不带环不带头结点的链表 实现功能: 1、初始化 2、销毁 3、尾插 4、尾删 5、头插 6、头删 7、在pos之后插入新结点 8、在pos之前插入新结点 9、删除指定位置的结点 10、查找结点的位置代码实现:linklist.h//单向不带环不带头结点的链表#pragma oncetypedef char LinkNodeType;typedef struct LinkN

2018-05-03 17:48:38 110

原创 多线程

进程ID和线程ID   在Linux中,⺫前的线程实现是 Native POSIX Thread Libaray,简称NPTL。在这种实现下,线程⼜被称为轻量级进程(Light Weighted Process),每⼀个⽤户态的线程,在内核中都对应⼀个调度实体,也拥有⾃⼰的进程描述符 (task_struct结构体)。   没有线程之前,⼀个进程对应内核⾥的⼀个进程描述符,对应⼀个进程 I

2018-04-22 18:42:00 126

原创 线程

线程概念在⼀个程序⾥的⼀个执⾏路线就叫做线程( thread)。更准确的定义是:线程是⼀个进程内部的控制序列。 ⼀切进程⾄少都有⼀个执⾏线程。 在Linux中,目前的线程实现是 Native POSIX Thread Libaray,简称NPTL。在这种实现下,线程⼜被称为轻量级进程(Light Weighted Process),每⼀个⽤户态的线程,在内核中都对应⼀个调度实体,也拥有⾃⼰的

2018-04-22 16:46:22 131

原创 进程信号

信号的基本概念 1. ⽤户输⼊命令,在Shell下启动⼀个前台进程。 2. ⽤户按下Ctrl-C,这个键盘输⼊产⽣⼀个硬件中断。 3. 如果CPU当前正在执⾏这个进程的代码 ,则该进程的⽤户空间代码暂停执⾏ ,CPU从⽤户态 切换到内 核态处理硬件中断。 4. 终端驱动程序将Ctrl-C解释成⼀个SIGINT信号,记在该进程的PCB中(也可以说发送了⼀ 个SIGINT 信号给该进程)。

2018-04-19 22:01:33 234

原创 进程间通信

进程间通信目的 1.数据传输:一个进程需要将它的数据发送给另一个进程; 2.资源共享:多个进程之间共享同样的资源; 3.通知事件:一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件; 4.进程控制:有些进程希望完全控制另一个进程的执行(如Debuge进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够既是知道它的状态改变。 进程间通信发展 1.管道 2.Sy...

2018-04-17 21:35:10 136

原创 静态数组顺序表

实现基于静态数组的顺序表的以下基本操作: 初始化 尾插 尾删 头插 头删 读任意位置元素 修改任意位置元素 查找指定元素值的下标 在任意位置插入元素seqlist.h #pragma once //防止头文件重复包含 #include&lt;stdlib.h&gt; ...

2018-04-07 13:07:03 121

原创 基础IO

系统IO 先来看一段代码: hello.c写文件 #include&lt;stdio.h&gt; #include&lt;sys/types.h&gt; #include&lt;sys/stat.h&gt; #include&lt;fcntl.h&gt; #include&lt;unistd.h&gt; #include&lt;string.h&gt; int main (...

2018-03-30 00:51:11 197

原创 进程的创建, 等待, 替换和终止

进程创建fork函数 在Linux中fork函数是非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。 #include&lt;unistd.h&gt; pid_t fork(void);返回值:子进程中返回0,父进程返回子进程id,出错返回-1。 写时拷贝 fork之后,父进程与子进程共享代码,父子不在写入时,数据也是共享的,当任意一方试图...

2018-03-27 23:22:07 424

原创 进程总结

1.进程概念 课本概念:进程就是程序的一次执行过程。 内核观点:担当分配系统资源(CPU,内存)的实体。 2.进程的描述 PCB(process control block),在Linux操作系统下的PCB是task_struct。 task_struct结构包含以下信息: (1)进程状态; (2)调度信息; (3)标志符; (4)内部进程通信; (5)链接信息; (6)时间和

2018-03-25 12:06:58 328

原创 Linux基本命令总结

一、Linux权限的概念 Linux下有两种用户:普通用户和超级用户()。 普通用户:在linux下做有限的事情; 超级用户:可以在linux系统下做任何事情,不受限制。 普通用户的提示符是“$”,超级用户的命令提示符是“#”。 命令: su [用户名] 功能:切换用户 Linux权限管理 1.文件访问者的分类(人) 文件和文件目录的所有者...

2018-03-09 00:10:46 62187 7

原创 可变参数列表解析

一、main函数的参数解析 我们平常使用main函数是直接调用的,但是如果我们仔细观察的话,就会发现main函数其实也是有参数的,下面我们先看看main函数的原型:int main (int argc, char *argv[ ], char *envp[ ]){ program - statements}我们可以看见,main函数是有三个参数的: 第一个参数:argc是一个整型变量

2017-12-12 14:51:26 301

原创 C语言中的函数调用(栈帧)

1.什么是栈帧? 我们知道每一次函数调⽤用都是一个过程。 这个过程我们通⻓长称之为:函数的调⽤用过程。 这个过程要为函数开辟栈空间,⽤用于本次函数的调⽤用中临时变量量的保存、现场保护。这块栈空间 我们称之为函数栈帧。 2.函数调用的过程 我们先来看一段代码:#include <stdio.h> int myadd(int x, int y) { int z = x+y;

2017-12-07 15:51:59 425

原创 数组的简单总结

一维数组的创建和初始化。 数组的创建:数组是一组相同类型元素的集合。 数组的创建方式:type_t arr_name [const_n]//type_t 是指数组的元素类型; //const_n是一个常量表达式,用来指定数组的大小。 数组创建实例:int arr[10];char arr [8];float arr[5];double arr[15];创建数组,[ ]中必须为常量,

2017-11-20 23:33:47 167

原创 C语言操作符总结

在C语言中,操作符分为以下几类:算术操作符,位移操作符,位操作符,赋值操作符,单目操作符,关系操作符,逻辑操作符,条件操作符,逗号表达式,下标引用、函数调用和结构成员。 算术操作符: + , - , * , / , % 1. 除了%操作符之外,其他的几个操作符可以作用于整数和浮点数。 2. 对于/操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就 是浮点数除法。

2017-11-16 23:50:28 159

原创 给定两个整形变量的值,将两个值的内容进行交换。

给定两个整形变量的值,将两个值的内容进行交换。 这道题通常的做法是创建一个临时变量tmp,先将a的值赋给tmp,然后将b的值赋给a,最后再把tmp的值赋给a,这样就实现了交换。代码如下:#include <stdio.h>int main(){ int a = 3; int b = 6; int tmp = 0; printf("a = %d b = %d\n

2017-11-14 00:00:03 235

空空如也

空空如也

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

TA关注的人

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