自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 UDP畅聊系统

文章目录前言一、总体实现流程即及框架1.实现流程2.用户注册和登录3.聊天4.建立不同的实现模块5.实现各个模块之间的串联总结前言畅聊系统对我们来说已经不陌生了,我们在生活中大量使用的像QQ、微信等聊天程序,都是这种畅聊系统的升级。在学过网络编程、多线程这些知识点之后,已经可以实现服务器与客户端之间的通信,但是,畅聊系统是一种多对一的架构,往往会存在多个客户端,实现多个客户端之间进行信息的收发至关重要。实现一个畅聊系统,既可以对知识有所巩固,也能了解畅聊系统的实现过程。一、总体实现流程即及框架1.实

2022-03-21 20:54:39 2738

原创 网络编程:TCP的socket编程(Linux)

文章目录一、简单介绍TCP二、TCP编程流程1.编程流程2.TCP的发送/接收缓冲区三、编程接口1.监听(listen)2.客户端连接(connect)3.服务端接收连接(accept)4.发送数据(send)5.接收数据(recv)四、TCPsocket编程1.多线程编程2.多进程编程总结一、简单介绍TCP面向连接:TCP的客户端与服务端进行通信时,服务端需要先和客户端建立连接,确认双方都在线后,再进行发送数据可靠:保证数据是可靠有序到达对端的面向字节流:多次发送的数据在网络传输过程中是没有明

2021-08-28 21:12:33 954

原创 网络编程:UDP的socket编程(Linux)

文章目录前言一、UDP协议1.简单了解UDP协议2.网络字节序二、UDPsocket编程1.编程流程2.编程接口①创建套接字(socket)②绑定地址信息(bind)③发送数据(sendto)④接收数据(recvfrom)3.服务端测试3.客户端代码4.服务端代码5.连接测试6.缓冲区的概念前言本篇文章介绍UDP的socket编程流程,使用的接口都是Linux操作系统中的接口。这些编程接口可能与Windows操作系统中有些不同。文章中如果发现有错误的地方,可以一起讨论!!!一、UDP协议1.简单

2021-08-26 17:52:41 2513

原创 Linux:线程(2)

文章目录一、线程安全1.线程不安全的现象2.互斥锁原理3.互斥锁接口1.互斥锁初始化接口2.互斥锁加锁接口3.互斥锁的位置二、死锁1.模拟死锁现象2.死锁的解决方案一、线程安全线程安全的作用,就是保证当多个执行流(可以理解为线程)访问临界资源(多个线程都能访问到的资源)时,不会导致程序结果产生二义性。1.线程不安全的现象要理解线程安全,首先要理解线程不安全的原理,为什么线程会出现不安全现象?可以由下图来进一步理解:2.互斥锁原理既然多个执行流访问同一个临界资源时会产生二义性问题,那么,互

2021-08-20 12:11:08 127

原创 Linux:线程(1)

文章目录前言一、线程的概念二、线程控制1.线程创建2.线程终止3.线程分离前言从本篇文章开始,将开始Linux多线程的知识,是重点中的重点,概念可能不容易理解,比较难消化,但只要多复习,必定会拿下多线程。以下是本篇文章正文内容,下面案例可供参考一、线程的概念概念定义:在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”。在我个人理解:多线程,就是进程当中的多个执行流。比如一个程序的代码当中需要计算1加到100的值,我们可以把这一整个进程分成

2021-08-18 21:18:13 133

原创 基于哈夫曼编码的文件压缩

文章目录前言一、什么是文件压缩?二、为什么需要文件压缩三、怎样实现文件压缩四、创建哈夫曼树1.哈夫曼编码的方式2.构建一棵哈夫曼树五、压缩1.获取原文件中每个字节出现的次数2.根据字节出现的频次信息构建Huffman树3.获取Huffman编码4.使用Huffman编码来改写文件六、解压缩总结前言 文件压缩的概念在生活中已经屡见不鲜,在这个信息化的时代,我们每天的生活基本上离不开手机电脑,在手机或电脑上下载软件,应用,基本上都能接触到文件压缩。对于文件压缩来讲,有许多种不同的方式,每种方式也有各自

2021-08-17 20:04:46 8794 4

原创 Linux:进程信号

文章目录前言一、pandas是什么?二、使用步骤前言一、pandas是什么?二、使用步骤

2021-08-11 22:25:13 151

原创 Linux:进程通信(管道和共享内存)

文章目录前言一、C语言中的文件接口前言下面将介绍一些基础IO流的相关知识,主要涉及c语言的文件接口,系统调用的文件操作接口,文件描述符(重点),重定向。一、C语言中的文件接口

2021-08-08 18:01:42 364

原创 Linux:初识IO流

文章目录前言一、C语言中的文件接口二、进程终止三、进程等待四、进程程序替换1.进程程序替换原理2.进程替换函数:exec函数簇1.execl2.execlp3.execle4.execv5.execvp6.execve7.总结3.进程程序替换应用场景前言下面将介绍一些基础IO流的相关知识,主要涉及c语言的文件接口,文件描述符(重点)一、C语言中的文件接口这是对C语言中的常用文件接口进行简单复习,有利于更好的认识io流,也是为接下来的知识做铺垫。1.fopen函数参数分析:path表示待要

2021-08-06 16:38:58 236

原创 Linux:进程控制

文章目录前言一、写时拷贝二、进程终止三、进程等待四、进程程序替换1.进程程序替换原理2.进程替换函数:exec函数簇1.execl2.execlp3.execle4.execv5.execvp6.execve7.总结3.进程程序替换应用场景前言以下主要对进程的一些场景进行了简单的描述,主要包含写时拷贝,进程终止(退出),进程等待,进程替换。一、写时拷贝父进程在调用fork函数创建一个子进程之后,子进程是拷贝了父进程的PCB,因此子进程PCB与父进程的PCB是一样的。而PCB中有一个内存指针,它指

2021-08-05 18:30:37 196

原创 Linux:进程的基本概念

系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例

2021-08-04 12:38:53 98

原创 排序算法(2):希尔排序

希尔排序希尔排序又称为缩小增量法,也是直接插入排序的延申,排序的思想还是应用了直接插入排序,只是对直接插入排序进行了优化,具体优化方法是:1.先选定一个整数,如,选定整数gap=3。2.把待排序文件中所有记录分成几组,所有距离为gap的记录分在同一组内,并对每一组内的记录进行排序。3.重复上述分组和排序的工作。4.缩小gap的值,一般情况下,取序列的一半作为增量,然后依次减半,直到增量为1(也可自己设置)。5.当到达gap=1时,所有记录在统一组内排好序。希尔排序解决了直接插入排序只能在元素接

2021-08-02 11:35:54 201

原创 排序算法(1):直接插入排序

直接插入排序插入排序的思想(概念):把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。类似于打扑克牌时往手中的牌插入新摸的牌类似。概念看着不好理解,直接看图(这里按照升序进行排序)例如:使用插入排序之前,序列如下:在使用插入排序时有一个前提,就是元素必须插入到已经排好的有序序列中,但上图的序列并非有序序列。因此我们选择最左侧的元素6为标准,因为在只有一个元素的情况下,我们认为这一个元素相对于自己有序。这时我们一步一步进行插

2021-07-31 16:15:02 180

原创 Linux入门:编译及简单调试

文章目录前言一、gcc/g++编译器1.预处理:2.编译:3.汇编:4.链接:二、gdb调试器总结前言这里介绍了一些Linux系统中的基础命令,可以供大家参考和学习一、gcc/g++编译器在Linux中,gcc是对C语言进行编译的,g++是对C++进行编译的编译程序需要经历四个过程:1.预处理:预处理阶段编译器需要进行的过程:1.进行宏替换。2.将头文件展开。3.去注释。 4.条件编译。在Linux中,需要我们输入:gcc/g++ -E [file] -o [file].i预处理后生成

2021-07-08 10:09:19 319

原创 Linux入门:权限及vim

文章目录前言一、Linux权限1.Linux权限分类2.文件访问者的分类3.文件权限值的表达方式4.更改文件权限5.权限对文件或者文件夹的影响总结前言这里介绍了一些Linux系统中的基础命令,可以供大家参考和学习一、Linux权限1.Linux权限分类①可读(read):简写为r②可写(write):简写为w③可执行(execute):简写为x2.文件访问者的分类对文件的访问者分为三部分:①文件所有者(u)②文件所属组(g)③其他用户(o)3.文件权限值的表达方式①字符表示方

2021-07-07 00:10:30 656

原创 Linux入门:一些基础命令详解(2)

文章目录前言一、基础命令1.touch,mkdir,rm,man命令2.echo+(重定向),cat命令3.cp,mv命令3.more,less,head,tail命令总结前言这里介绍了一些Linux系统中的基础命令,可以供大家参考和学习一、基础命令1.touch,mkdir,rm,man命令touch : 创建一个文件。touch [文件名称]mkdir:创建一个文件夹。mkdir[文件夹名称]rm:删除一个文件。rm[文件名称]rm -r:递归删除文件夹的内容。递归删除:将文件夹中的

2021-06-02 17:17:45 463

原创 Linux入门:一些基础命令详解(1)

Linux的一些基础命令详解文章目录Linux的一些基础命令详解前言一、root用户以及创建普通用户二、基础命令1.ls命令2.读入数据3.读入数据总结学习目标:学习内容:学习时间:学习产出:前言这里介绍了一些Linux系统中的基础命令,可以供大家参考和学习以下是本篇文章正文内容,下面案例可供参考一、root用户以及创建普通用户root用户在Linux操作系统当中是管理员的身份,拥有着至高无上的权利,即想干什么就干什么。输入命令:useradd + [用户名称] 即为创建

2021-05-27 16:10:54 156

原创 C语言中部分字符串函数的模拟实现

前言:对常用的几个字符串strlen,strcpy,strcat,strcmp,strstr进行模拟实现一. strlen函数(求字符串的长度):#include<stdio.h>#include<assert.h>//使用递归方法实现size_t my_strlen(const char *string)// 自己定义的函数{ assert(string != NULL); //参数的有效性检查 (断言字符串不能为空) if (*string == '\0')

2021-05-12 12:02:08 66

原创 指向函数指针数组的指针&回调函数

前言:对指向函数指针数组的指针进行进行解释,以及典型回调函数的使用方式。一. 指向函数指针数组的指针:例:void (*(ppfunArr)[10])(const char)当听到指向函数指针数组的指针时,心里可能都有一些懵,因为这句话中既包含了数组,又包含指针和函数。这些嵌套的使用需要自己去对概念进行理解,才能完全搞懂。其实,指向函数指针数组的指针,它的大前提就是一个指针。任何指针都有两个值,一个自身的值,一个指向的值。因此可以先把指向两个字去掉方便理解。然后这个指针它指向了一个数组,数组的元素

2021-05-11 19:18:06 640 1

原创 打印0~100000中的水仙花数

打印水仙花数:求出0~100000之间的所有“水仙花数”并输出。“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=13+53+3^3,则153是一个“水仙花数”。代码如下(示例):#include<stdio.h>#include<math.h> /*pow函数原型:double pow (double base, double exponent); base相当于n^k中的n,exponent相当于n^k中的k*/int Cou

2021-04-21 22:41:16 854 1

原创 C语言中的操作符

C语言中的各类操作符前言下面将介绍算术操作符,移位操作符,位操作符,赋值操作符,单目操作符,关系操作符逻辑操作符,条件操作符,逗号表达式,下标引用、函数调用和结构成员一、算数操作符+ - * / %最简单的加,减,乘,除和取余除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。% 操作符的两个操作数必须为整数。返回的是整除之后的余数。如8%3就相当于8除以3,商2余2那么8%3

2021-04-14 09:24:17 130

原创 新的开始,立个志向

自我介绍目前已经是一名本科大三的网络工程专业学生了。这也是我的第一篇个人博客,平时有什么专业问题都是在CSDN这个大家庭中向大家请教,但是从今天开始我也会分享我在学习中的一些经验,与大家一起讨论。自己对于计算机专业还是十分感兴趣的,希望自己能朝着这个方向继续努力,越走越远,加油!个人目标:自己也有一些编程基础,但一切从头开始,从C语言基础开始,再到c++方面,学好算法数据结构,网络编程,数据库等等。不断练习敲代码,只有不断熟练,才能掌握。代码不是光看就能看会的,重要在于自己实践,自己练习。还有一个

2021-04-01 11:59:31 138 3

空空如也

空空如也

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

TA关注的人

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