自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ChenYang1998的博客

技术学习之路

  • 博客(15)
  • 收藏
  • 关注

原创 网络编程之【TCP服务器】

TCP服务器基于上一篇文章,我们利用socket编写了一个UDP服务器,链接如下:UDP服务器 今天我们来实现一个TCP服务器并且对这个TCP服务器进行优化。TCP协议的特点有连接的面向字节流的可靠的传输 -TCP服务器需要用到的接口 TCP服务器和UDP服务器相同,都是利用SOCKET API接口来实现的,那么创建socket,和绑定bind和UDP是一摸一...

2018-04-30 16:16:04 262

原创 网络编程之【UDP服务器】

一、SOCKET网络套接字 在网络中,要进行两台主机之间的通信,我们需要借助SOCKET网络套接字,那么什么是套接字呢,我们先来认识以下两个概念IP地址和端口号。1.IP地址        IP协议位于网络层,IP协议有两个版本,一个是IPV4,另外一个是IPV6,这里我们讨论的是IPV4协议,IP地址又叫软件地址,是在全世界内标识唯一一台主机的地址,对应IPV4来说,IP地址是占4个字节的,例如...

2018-04-28 19:17:03 601

原创 计算机网络基础知识

计算机网络分层OSI网络七层结构OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型 ,是一个逻辑上的定义,一个规范,它把网络从逻辑上分为了7层。每一层都有相关、相对应的物理设备,比如路由器,交换机。OSI 七层模型是一种框架性的设计方法 ,建立七层模型的主要目的是为解决异种网络互连时所遇到的兼容性问题,其最主要的功能使就是帮助不同类...

2018-04-26 12:03:00 1237 1

原创 排序【5】基数排序和计数排序

前面介绍的几种排序方式都是比较式的排序,今天,我们来介绍两种非比较排序。计数排序和基数排序。一、计数排序1.基本思想:遍历待排数组,找到数组中最大的元素,然后开辟一个比这个最大元素大1的新数组,以新数组的下标表示待排元素,统计原数组中所有元素出现的个数放在新数组相应的位置,然后把新数组中除过0次出现的其余元素,按顺序拷贝回原数组即可。2.思想流图:

2018-04-24 17:15:45 256

原创 MySQL数据库的基本操作

一.MySQL数据库1.什么是数据库?为什么要有数据库?数据用文件存储就可以了,为什么要用数据库保存呢。是因为文件存储数据有以下几点缺点:    (1)文件的安全性得不到保障,谁都可以通过文件查看数据。  (2)文件不利于数据的查询,和对数据的管理。(3)文件无法存放海量数据。  (4)我们在很多情况下需要通过程序访问数据,文件在程序中不利于控制。为了解决这些问题,开发

2018-04-21 21:15:48 285

原创 排序【4】归并排序

归并排序1.基本思想:   将待排序的元素分为两个长度相等的子序列,为每一个子序列排序,然后将他们合并成一个序列。合并两个子序列的过程叫做两路归并。2.具体步骤:  (1)按照类似于快速排序的道理,我们把待排序区间划分成两个长度想等的子区间。  (2)递归其子区间,直到区间里面的元素只剩下一个,我们认为这个子区间已经有序。  (3)当区间只剩下一个元素时候,每次将相邻两个区

2018-04-19 20:17:38 249

原创 排序【3】交换排序

冒泡排序基本思想:为什么叫冒泡排序呢,,是因为每一次排序就像是鱼儿吐泡泡,一个个泡泡从水底到水面会变得越来越大,泡泡就像元素,随着算法的进行,较大的元素就会到后面去。如果升序排列,那么就会对相邻两个元素进行比较,如果前者大于后者,那么就交换这了两个元素,直到最大的元素被排到最后一个位置,第一趟冒泡完成,进行第二趟冒泡,把次大的元素排到倒数第二的位置,重复这个过程。直到所有的元素都被冒泡到合适的...

2018-04-18 22:09:34 285

原创 排序【2】选择排序

选择排序算法思想:以升序为例,在整个区间中找出排序码最小的元素,如果这个元素不是这组序列中的第一个元素,那么将它和第一个元素进行交换,使得最小的元素就在第一个位置,然后缩小区间,循环执行上述操作,只到区间中只剩下一个元素。 具体步骤(升序):在区间中找到关键码最小的元素。如果不是待排序区间的第一个元素,则和带排序区间第一个元素交换。缩小待排序区间。 代码实现:void ...

2018-04-17 16:14:44 223

原创 排序【1】插入排序

常见排序在实际生活中,排序的运用很多,排序就是将一组杂乱无章的数据升序或者降序排成有序的序列。常见的排序算法有。 不同的排序算法适用于不同的场景下,衡量一个排序算法的标准不仅有空间复杂度,空间复杂度,还有稳定性。一个稳定的排序算法,相同的排序码在排序前后相对位置是不会发生变化的。 当然,排序也会根据数据量的情况,分为: 1.内部排序:数据可以加载到内存中进行排序。 2.外部排序:数据元...

2018-04-17 11:26:35 450

原创 Linux下的进程间关系

进程组 在linux中,每一个进程还属于一个进程组,一个进程组有多个进程组成,通常,他们联合起来作业,可以接受从同一个终端下的各种信号。并且每一个进程组都有一个进程组ID。在Linux中叫做PGID,一个进程组由多个进程组成,进程组中有一个组长进程,组长进程的标识是他的进程ID和组ID相同。一般一个进程组中第一个创建的进程就是组长进程。一个进程组中只要还有一个进程存在,那么这个进程组就存在。 ...

2018-04-16 10:07:00 1415

原创 搜索结构之AVL树

AVL树概念 搜索二叉树虽然降低了查找的效率,但是如果数据有序或者接近有序,那么搜索二叉树就会退化成单枝树,搜索的时间复杂度就会变成O(n),极大的降低了效率,因此我们引入了AVL树,在向树中插入元素的时候,能保证每一个节点的左右子树的高度不会相差1,从而降低了树的高度,提高了查找的效率。 2.我们把具有一下性质的树称之为AVL树:1. 首先它是二叉搜索树。 2. 二叉树每个节点的...

2018-04-14 18:43:16 223

原创 基于链表和环形队列的生产者消费者模型

生产者,消费者模型在学习系统编程当中,有一种很重要的模型,那就是生产者消费者模型,在编写多线程代码时候,一个个线程就扮演着生产者,消费者的角色。举一个例子,在生活中,我们去商店买东西,那么我们相当于消费者,而货物生成厂家就是生产者,商店扮演着交易场所。我们总结为:三中关系,生产者与生产者,生产者与消费者,消费者与消费者。两种角色,生产者和消费者。一个交易场所生产者和生产者 ...

2018-04-13 21:12:52 301

原创 Linux下的线程操作

线程线程的概念 我们在前面讲过,进程的概念,了解1了系统中的进程控制块PCB,虚拟地址空间,页表映射,今天,我们就来看看在linux下的线程。我们把在一个程序中的一个执行流程路线就叫做一个“线程”,一个程序中的执行流线最少要有一个才可以。 进程和线程的区别进程是系统分配资源的基本单位,线程是程序执行的最小单位。cpu在调度时,实际调度的是线程。进程之间的资源一般不共享,线程共享...

2018-04-13 19:00:44 461

原创 Linux下的进程信号

信号什么是信号? 在生活中,我们可以看到交通信号,火警信号,急救信号,这些都是信号,通知我们做出相应的反映,在操作系统中,我们也有信号这一个机制,来确保进程的合理运行,当一个程序运行起来的时候,我们在键盘上按一个ctrl+c,进程就会停下来,这实际上就是给进程发了一个信号,cpu从用户态切入内核态,来处理这个硬件中断,把它理解成一个SIGINT的信号记录在当前pcb下,然后当某个时候需...

2018-04-03 17:57:40 261

原创 Linux下基础I/O

Lin9ux下的基础I/OC语言阶段在学习C语言的时候,我们要实现程序的I/O操作,需要调用fopen()和fclose来打开和关闭文件,fopen()成功返回FILE*的文件指针,利用fread和fwrite函数来进行文件的读写操作。当然我们还学过fseek重置文件指针,ftell,rewind等函数我们还知道,C会默认打开流,stdin,stdout,stderr,并且这三个...

2018-04-02 21:46:43 201

空空如也

空空如也

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

TA关注的人

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