- 博客(32)
- 收藏
- 关注
原创 网络编程03
多路复用: 使用一个进程(且只有一个主线程)同时监控若干个socket文件描述符的读写,这种读写模式叫做多路复用 多用于TCP服务端,用于监控若干个客户端的连接和数据的接收 优点:不需要频繁地创建进程、销毁进程、从而达到节约内存资源、时间资源,也能避免进程之间的竞争、等待 缺点:单个客户端的任务不能耗时太长,否则其它客户端就会感知到 适合并发量高、任务量短小的情景,例如:Web服务器select: fd_set 是文件描述符的集合,是要通过以下函数进行操作...
2021-11-05 19:57:15 133
原创 网络编程02
网络通信 底层遵循TCP/IP协议,在系统中以socket接口方式呈现基于TCP协议的网络通信模型: 服务端 客户端 创建socket对象 创建socket对象 准备通信地址(本机ip)+端口号 准备通信地址(目标公网ip)+端口号 绑定socket和通信地址 ... 设置监听和排队数量 ...
2021-11-01 21:23:25 137
原创 网络编程01
一、Socket进程间通信 基本特点: socket是一种接口技术,被抽象成一个文件来操作,可以让同一台计算机的进程之间通信,也可以让不同计算机的进程间通信(网络) 同一台计算机的进程间通信: 底层需要借助socket文件,进行同一计算机下的进程间通信 int socket(int domain, int type, int protocol); 功能:创建socket对象 domain: AF_UNIX/AF_LO...
2021-10-27 12:44:04 221
原创 Linux环境编程08
进程间通信基本概念: 什么是进程间通信: 是指两个或多个进程之间交互数据的过程,是因为进程之间是相互独立的,为了协同工作的需要必须要交互数据 进程间通信的分类: 简单的进程间通信:信号、文件、环境变量、命令行参数 传统的进程间通信:管道文件 XSI进程间通信:共享内存、消息队列、信号量 网络进程间通信:套接字Socket传统进程间通信-管道(FIFO): 管道是UNIX系统中最古老的进程间通信方式,...
2021-10-23 10:07:46 112
原创 Linux环境编程07
进程的正常退出: 1、在main函数中执行 return n,该返回值值可以被父进程接收到的,在main函数中与exit几乎等价的 2、进程调用了exit函数,该函数是标准库函数 void exit(int status); 功能:在任何时候调用此函数都可以结束进程 status:结束状态码 EXIT_SUCCESS EXIT_FAILURE 效果与...
2021-09-15 09:25:32 59
原创 Linux环境编程06
进程的基本概念: 1、程序与进程 程序就是存储在磁盘上的可执行文件,当程序被加载到内存中开始运行时就叫做进程。 一个程序可以被多次加载生成多个进程,进程就是处于活动状态的计算机程序 2、进程的分类 进程一般分为三种类型:交互进程、批处理进程、守护进程 守护进程一般都处于活跃状态,运行在后台,由操作系统在开机时通过启动脚本自动的创建 3、查看进程 简单形式:ps 显示当前用户的有终端控制的进程...
2021-09-10 18:06:01 78
原创 Linux环境编程05
七、目录操作 int mkdir(const char *pathname, mode_t mode); 功能:创建目录 mode:目录的权限,注意必须要有执行权限,否则无法进入 int rmdir(const char *pathname); 功能:删除空目录 int chdir(const char *path); 功能:进入某个目录,相当于cd命令 char *getcwd(char *buf, size_t size); ...
2021-09-08 16:27:04 68
原创 Linux环境编程04
一、文件同步: 1、在写入数据时内存与磁盘之间也一个缓冲区,这种机制降低了磁盘的读写次数,提高了读写的效率 2、这种机制带来的后果就是磁盘中的数据与实际写入的数据不匹配,操作系统提供了三个函数可以让缓冲区中的数据立即写入到磁盘上 void sync(void); 功能:把缓冲区中的数据立即同步到磁盘上 注意:并不会等待数据全部同步完,而是把缓冲区的数据加入写入队列后,立即返回 int fsync(int fd); 功能:把指定文件的内容从缓冲区同步...
2021-09-07 18:33:46 99
原创 Linux环境编程03
内存管理总结: 1、mmap/munmap 底层是不维护任何东西,只返回一个映射后的内存首地址,所映射的内存位于堆中 2、brk/sbrk 底层维护一个指针,记录了所映射的内存结尾下一位,所映射的内存也是位于堆中,底层调用了mmap/munmap 3、malloc/free底层维护一个双向链表和必要的维护信息,所映射的内存也是位于堆中,底层调用了brk/sbrk 4、每个进程都有4G(32位操作系统)的虚拟内存空间,虚拟内存只是个数字,必须与物理内存建立映射关系才能使用...
2021-09-06 18:41:58 80
原创 Linux环境编程02
一、内存管理 用户层 STL 自动分配/释放内存 调用C++ C++ new/delete 调用C C malloc/free 调用POSIX POSIX brk/sbrk 调用Linux系统函数 Linux mmap/munmap 调用内核 kernel 系统层 内核 kma...
2021-09-06 08:47:21 100
原创 Linux环境编程01
程序员必备技能: 一门编程语言:C语言、C++ 数据结构与算法:表、树、图、查找、排序、STL 操作系统:UNIX/Linux系统 网络编程:TCP/IP(Socket技术、TCP、UDP、FTP协议) 数据库:MySQL 界面设计:Qt课程介绍: 环境介绍 内存管理 文件管理 信号处理 进程管理 进程通信 线程管理 线程同步 网络编程UNIX系统介绍: BCPL-&g...
2021-09-04 08:57:39 109
原创 数据结构与算法2
功能受限的表: 栈:只有一个进出的出入口的表结构,先进后出,FILO 顺序栈: 数据项: 存储元素的内存首地址 栈的容量 栈顶位置 运算: 创建、销毁、入栈、出栈、栈满、栈空、栈顶 注意: 栈顶指向顶部的第一个数据,称为满增栈 栈...
2021-08-23 20:23:45 97
原创 数据结构与算法1
一、什么是数据结构 1、数据结构的起源 1968年,美国高德纳教授,《计算机程序设计艺术》的第一卷《基本算法》的出版,开创了数据结构和算法的先河。 数据结构是一门研究数据之间关系和操作的学科,而非计算方法。 数据结构+算法=程序,沃斯凭借这个观点写的论文,获得图灵奖,这句话展示了程序的本质。 2、数据结构的基本概念 数据:所有能够输入到计算机中,能够被程序处理的描述客观事物的符号。 数据项:有独立含义的最小单位,...
2021-08-11 18:31:59 60
原创 标准C语言基础知识14(终篇)
复习:结构: 结构是一种由程序员自己设计的数据类型,用于描述一个事物的各项数据,由若干个基础的数据类型组成 设计: struct 结构体名 { 类型 成员名; ... }; 定义结构变量: struct 结构体名 结构体变量 注意:也可以在设计结构体时直接定义结构体变量 访问成员: 结构体变量.成员名 结构体指针->成员名 初始化: ...
2021-08-02 18:30:10 128
原创 标准C语言基础知识13
结构: 结构是一种由程序员自己设计的数据类型,用于描述一个事物的各项数据,由若干个不同的基础类型组成。 设计: struct 结构体名 { 类型1 成员名1; 类型2 成员名2; ... }; 定义结构变量: struct 结构体名 变量名; 注意:在定义结构变量时,struct不能省略 结构体变量初始化: struct 结构体名 变量...
2021-07-31 16:04:06 83
原创 标准C语言基础知识12
复习:1、文件包含 #include 把一个头文件导入到当前文件中 #include <> #include "" 系统是通过环境变量指定头文件的加载路径 还可以通过编译参数 -I /path 指定头文件的加载路径2、宏常量 #define 宏名 字面值数据 如果在代码中使用了宏,在预处理时会把所有的宏替换为宏名后面的字面值数据 优点:提高代码可读性、提高可扩展性、提高安全性、还可以与case配合...
2021-07-30 19:05:22 148
原创 标准C语言基础知识11
复习:1、输出缓冲区 程序输出的数据并没有立即写入到"文件",而是先存储到了缓冲区中,当满足一定条件时才会写入到文件中 1、遇到\n 2、遇到输入语句 3、缓冲区满4k 4、程序结束 5、手动刷新fflush2、输入缓冲区 在终端输入的数据此时由终端保管,当按下回车后,数据由终端写入到程序的输入缓冲区,scanf函数再从缓冲区中读取数据到给变量赋值 1、当想要输入的是整形、浮点型数据,而缓冲区中的数据是字符或符号时,此时类型不匹配读取失败,...
2021-07-29 20:03:39 132
原创 标准C语言基础知识10
复习:字符串: 由字符组成的串型结构,'\0'是它的结束标志 存在形式: 字符数组:栈内存 可以修改 要为'\0'预留位置 字符串字面值:代码段 只读 修改就会产生段错误 末尾隐藏一个'\0' 地址 const char* str = "hehe"; sizeof("hehe") 结果是5 末尾有'\0' sizeof(str) 结果是4 str是指针 一般...
2021-07-28 18:49:50 104
原创 标准C语言基础知识9
复习:指针数组与数组指针:指针数组:成员是指针的数组int* arr[10];数组指针:专门用于指向数组的指针int(*arr)[10];指针与数组名区别:数组名就是数组的首地址,数组名与数组的内存之间是映射关系,相当于一个特殊的指针,是常量,是不能修改的数组作为函数的参数时蜕变成了指针,所以长度才丢失,因此需要额外传递长度参数所以数组名可以解引用,如果指针指向数组,指针可以使用中括号来使用,也就是指针也可以当数组使用数组名与内存是映射关系,指针与内存是指向关系int arr[] &l
2021-07-22 21:38:08 204
原创 标准C语言基础知识8
什么是指针: 指针是一种特殊的数据类型,使用它可以定义指针变量,指针变量中存储的是整形数据,代表了内存的编号, 通过这个编号可以访问对应的内存为什么要用使用指针: 1、函数之间相互独立,但有时候需要共享变量 传参是单向值传递 全局变量容易命名冲突 使用数组还需要传递长度 命名空间是独立的,但是地址空间是同一个,所以指针可以解决这个问题 2、由于函数之间传参是值传递(内存拷贝),对于字节数较多的变量,值传递效率...
2021-07-21 18:59:52 116
原创 标准C语言基础知识7
复习:自定义函数: 1、函数声明 告诉编译器函数的格式,方便它检查调用者的参数、返回值 2、隐式函数 当调用函数时如果没有函数声明、定义,编译器会猜测函数的格式,函数的参数按照 调用者提供的实参猜测,返回值默认猜测为int类型 C89:完成猜对,没有警告 C99:完全猜对,也会警告 3、函数定义 函数的定义出现在调用之前,可以省略声明 4、函数传参 值传递: ...
2021-07-19 19:29:24 60
原创 标准C语言基础知识6
复习: 进制转换: 十进制转二进制: 求余,直到商为0为止,过程中产生的余数就是二进制(逆序) 二进制转十进制: 2^(n-1)每位相加 二进制转八进制: 每三位二进制位对应一位八进制 二进制转十六进制: 每四位二进制位对应一位十六进制 超过10用ABCDEF表示 代码中0开头的是八进制数据,0x/0X...
2021-07-17 15:48:40 65
原创 标准C语言基础知识5
进制转换: 为什么要使用二进制,八进制,十六进制? 因为现在的CPU只能识别高低两种电流,只能对二进制数据进行计算 二进制数据虽然可以直接被CPU识别计算,但是不方便书写、记录,所以把二进制数据转换成八进制是为了方便记录到文档中 随着CPU的不断发展位数不停增加,由早期的8位 发展到现在的64位,因此八进制不再能满足需求, 所以发展出了十六进制,由于历史原因八进制还不能完成 地退出历史舞台。 十进制转二进制:(转其他进制)...
2021-07-16 18:21:38 364
原创 标准C语言基础知识4
最后还有两个程序题,运用一下前面学到的知识!二维数组 一维数组相当于把变量排成一排,通过编号访问 二维数组相当于把变量排成矩阵,通过行号和列号访问 定义: 类型 数组名[行数][列数]; int arr[3][5]; [0,0][0,1][0,2][0,3][0,4] [1,0][1,1][1,2][1,3][1,4] [2,0][2,1][2,2][2,3][2,4] ...
2021-07-15 18:24:52 66
原创 标准C语言基础知识3
复习:1、C代码变成可执行程序的过程 预处理: 查看宏函数的替换结果,检查宏函数 gcc -E 编译: 理解C代码的底层原理,函数重载 gcc -s 汇编: 生成代码库,静态库、共享库 gcc -C 链接: 是多文件编程的基础 gcc a.o b.O c.o...2、gcc编译器常用参数 -E -S -C -std=gnu99 -O -I -l库名 -Wall -Werror -D(命令行定义宏).
2021-07-12 22:27:11 38
原创 标准C语言基础知识2
满满的干货,想学C语言又不知道从何入手的朋友们,关注我吧,每天分享C语言知识或者代码,跟我一起学习起来吧!一、常量 什么是常量:程序运行期间数据不能变化的叫常量 100 默认int 100u unsigned int 100lu unsigned long 100llu unsigned long long 100l long 100ll long long ...
2021-07-09 19:52:46 157
原创 标准C语言基础知识1
C语言简介: BCPL->newB->C语言->UNIX->Minix->Linux->gcc C语言诞生于1970-1973年,在肯.汤姆逊和丹尼斯.里奇的主导编写下完成,归属于美国的贝尔实验室。 C语言专门为了编写操作系统而诞生的语音,所以天生适合硬件编程,以运行速度快著称,也非常适合实现数据结构与算法。 由于出现的时间过早,C语音是存在非常多的缺陷,也没想到普通人也能使用C语音编程,因此就存在陷阱,但是前辈们总结了一些避免的经验《C语...
2021-07-08 19:26:57 78
原创 Linux命令介绍及思维导图
学习工具、网站、方法 分享代码的平台:GitHub、码云(每个大的项目) 总结知识点平台:CSDN、博客园(写博客至少每周一篇) 笔试面试题:牛客网【专项练习、剑指office】、力扣【算法】(刷题)、PAT考试 问答网站:思否、知乎、抖音、今日头条 思维导图:总结归纳知识点 (xmind) makedown: typora 文本编辑器:VS code 视频播放器:potplayer(倍速)开发环境: vir...
2021-07-07 18:57:56 541
原创 Linux基础知识及思维导图
学习工具、网站、方法 分享代码的平台:GitHub、码云 总结知识点平台:CSDN、博客园 笔试面试题:牛客网、力扣(刷题)、PAT考试 问答网站:思否、知乎、抖音、今日头条 思维导图:总结归纳知识点 (xmind) makedown: typora 文本编辑器:VS code 视频播放器:potplayer(倍速)开发环境: virtualBox 虚拟工具 免费开源 Ubuntu 14.04 LTS...
2021-07-06 19:57:14 394
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人