自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 IO多路复用之select复用详解

目录一、select API二、文件描述符就绪条件三、程序示例1、标准输入读取键盘2、改进多客户端并发访问服务器  IO多路复用技术使得程序运行时可同时监听多个文件描述符,对于现实中出现的实际情况有重要意义。多路复用通过三中不同的系统调用——select、poll、epoll来实现,通常来说以下情况需要使用多路复用:客户端同时处理多个客户端请求;客户端程序需要同时处理用户操作和网络连接;TCP服务器同时处理监听socket和连接socket;服务器同时处理UDP和TCP请求;服务器同时监听多个

2020-07-16 11:35:26 817

原创 Linux下串口编程流程介绍

目录一、串口编程中struct termios结构体二、串口配置流程1、tcgetattr() 与 tcsetattr()控制终端3、cfsetispeed() 与 cfsetospeed()设置波特率  串口接口简称串口,也称串行通信接口(通常为COM接口),串行接口(Serial Interface)是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线可实现双向通信,根据通信的方向可分为单工、半双工和全双工三种。在Linux 下标准的串口节点名为 /dev/ttyS* ,如果是USB转串口

2020-07-13 14:26:43 1191

原创 程序猿内功—系统内存管理

目录内存使用的演变物理内存的连续分配管理单一连续存储系统分区式存储管理物理内存的非连续分配管理段式存储管理页式存储管理段页式存储管理  首先操作系统的内存管理无非分为两个部分:物理内存管理(连续分配管理和非连续分配管理:分页、分段、段页式)和虚拟内存管理,下面的叙述也是围绕着这两个部分展开的。内存使用的演变  在早期的系统中,没有引入内存抽象时,程序访问的都是物理内存,其管理也较为简单,除去系统使用的内存,其他内存都可操作。但是这样就会出现两个明显的问题:当用户对内存可任意访问时,容易破化操作系统

2020-07-04 00:58:06 1475 2

原创 经典链表问题

目录输出单链表的倒数第K个节点删除单链表中间节点反转单链表递归实现输出单链表的倒数第K个节点  题目描述:在单链表中输出倒数第k个节点  要求:如果链表长为N,时间复杂度为O(N),额外空间复杂度达到O(1)  思路:当我们用num来表示链表中节点个数,当我们输出节点的时候会出现三种情况:不存在第k个节点,此时返回空(num<k);第k个节点就是第一个节点,操作较容易(num==k);第k个节点在链表中(num>k),此时输出倒数第k个节点相当于输出第(num-k+1)个节点;

2020-07-01 10:36:24 193

原创 AT指令集及常用指令

目录AT指令介绍AT指令介绍  AT(Attention)指令集是从终端设备(Terminal Equipment, TE)或数据终端设备(Data Terminal Equipment, DTE)向终端适配器(Terminal Adapter, TA)或数据电路终端设备 (Data Circuit Terminal Equipment,DCE)发送的,通过TA,TE发送的AT指令来控制移动台(Mobile Station,MS)的功能,与GSM 网络业务进行交互;用户可通过AT指令进行呼叫、短信、电话

2020-07-01 00:41:37 6653

原创 串口通信基础知识详解

目录通信基础知识STM32串口通信基础(UART)串口通信过程UART中设置的参数通信基础知识  首先两个设备间的通信方式可分为并行通信和串行通信两种他们区别如下:并行通信串行通信传输原理数据各个位同时传输数据按位顺序传输优点速度快占用引脚资源少缺点占用引脚资源多速度相对较慢  串行通信的分类单工:数据传输只支持数据在一个方向上传输;半双工:允许数据在两个方向上传输,但某一时刻只允许数据在一个方向上传输,实际上是一种切换方向的单工通信,不需要独

2020-06-28 15:57:24 10072 2

原创 MySQL数据库理论基础及范式浅析

目录MySQL数据库基础知识关系型数据库与非关系型数据库数据库范式设计范式的基本概念第一范式(1NF):每一列保持原子性第二范式(2NF):属性完全依赖主键第三范式(3NF):属性不依赖于其他属性巴德科斯范式(BCNF):每个表中只有一个候选键MySQL数据库基础知识  MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言——结构化查询语言(SQL)进行数据库管理,由于其速度、可靠性和适应性而备受关注,大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最

2020-06-21 00:55:26 559 1

原创 C++容器适配器——栈、队列

目录stack容器queue容器priority_queue容器  容器适配器是一个封装了序列容器的类模板,STL中的容器适配器由stack、queue、priority_queue三种,他们可通过适配器现有的接口提供不同的功能,三种适配器功能如下:stack< T >:是一个封装了 deque< T > 容器的适配器类模板,其可实现后入先出(Last-In-Firs...

2020-04-30 13:20:41 504

原创 计网——传输层TCP、UDP协议重点

目录传输层基本概念面向连接和无连接端口和套接字多路复用和多路分解TCP协议TCP报文格式TCP连接控制机制TCP建立连接:三次握手TCP断开连接:四次挥手TCP连接同时打开和同时关闭TCP流量控制机制滑动窗口机制TCP拥塞控制TCP计时器UDP协议UDP报文格式TCP和UDP区别传输层基本概念  位于OSI协议栈的第四层——传输层,是唯一负责总体数据传输和数据控制的一层,传输层提供端到端的交换...

2020-04-30 01:24:59 1009

原创 计网——网络层IP、ICMP协议重点

目录IP地址的格式和分类  在网络层中有两个较为重要的协议:IP协议和ICMP协议,其中IP协议是TCP/IP协议族的核心,也是构成互联网的基础,IP位于TCP/IP的网络层,对上可载送传输层各种协议的信息,(TCP、UDP),对下可将IP信息包放到链路层,通过以太网等技术传送。  在了解IP协议前要先了解IP地址:IP地址(Internet Protocol Address),他是IP协议提...

2020-04-29 00:57:31 1453 2

原创 计网——链路层要点笔记

目录以太网数据帧格式MTU最大传输单元ARP地址解析协议ARP报文格式RARP逆地址解析协议以太网数据帧格式  以太网链路传输的数据包称为以太帧,或者以太网数据帧。以太帧的工作机制:  当以太网软件从网络层接收到数据报后需要完成下面的操作:根据需要把网际层的数据分解为较小的块,以符合以太网帧数据段要求,一般系统以太网帧的整体大小需要在64~1518字节之间(不含前导码);把数据块打包...

2020-04-25 00:49:21 495

原创 C++序列式容器(数据线性排列)

目录序列式容器介绍array数组容器vector向量容器deque双向队列list双向链表forward_list单向链表序列式容器介绍  所谓的序列容器就是以线性排列(类似于数组的存储方式)来存储某一指定类型的数据(int、double···),该类容器不会自动对存储的元素按照值得大小进行排序。  序列式容器大致包含下面几类:array< T,N >(数组容器):表示可存储...

2020-04-23 16:44:52 360

原创 C++字符串string类库

目录string库简介string类成员函数string类构造函数和析构函数string类获取字符串长度string类获取字符串元素string类比较字符串string类字符串内容修改string类字符串查找string库简介  我们最初在c语言的学习中了解到字符串这个概念,他是多个字符按照一定的顺序排列组合称为字符串,其以 ’\0‘ 字符标志结尾,在C语言中我们也接触到一些处理字符串的函数:...

2020-04-22 22:19:01 582

原创 C++算法利器STL模板库

目录STL概念及组件介绍STL基本结构STL使用实例STL概念及组件介绍  究其根本,STL是一些容器的集合,这些容器有list、vector、set、map等,其也是算法和其他组件的集合,就是厉害的人将一些常用的算法封装成函数库,供人们使用,这些模板类和函数可实现多种流行和常用的算法和数据结构。C++标准模板库核心包括以下三个组件:组件描述容器(Containers)...

2020-04-22 15:23:48 227

原创 内存池、进程池、线程池——池基本概念

目录池的概念内存池进程池&&线程池池的概念  对于服务器端的软件开发种,我们为了解决多个客户端同时访问服务器即并发访问的问题,我们引入了多进程和多线程机制,通过主进程(主线程)创建其子进程(子线程)完成客户端的请求,但是这样的机制也带来了一些需要考虑的问题:进程(线程)间的切换消耗了较大的CPU时间,影响到提供服务的效率;由于系统限制,可创建的进程(线程)数量有限;在多...

2020-04-21 22:02:39 612

原创 嵌入式开发--Makefile学习笔记

目录什么是makefile什么是makefile  如果您是一个Linux环境下开发的程序猿,那么使用GNU meke来管理自己的项目工程显得尤为重要。在Linex(Unix)环境下使用 GUN 的make工具可以较容易地构建一个自己的工程,而该工程的编译可以通过一个命令就可完成项目的编译、连接直到最后的执行,但这需要投入一定的时间去完成一个或多个Makefile文件的编写。makefile带...

2020-04-21 04:51:05 338

原创 浅析Linux下gcc编译过程

目录1. gcc简介及基本用法2. gcc编译过程3. 静态链接和动态链接4. 静态库和动态库4.1 静态库的制作和使用4.2 动态库的制作和使用1. gcc简介及基本用法  GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器。GNU编译器套件包括C、C++、 Objective-C、 Fortran、Java、Ada和Go语言前端,也包括了...

2020-04-02 23:29:55 827

原创 sql数据库基本操作

目录1、SQLite简介2、SQLite安装及常用命令3、SQLite数据类型4、SQLite常用语句1、SQLite简介  SQLite是一款轻型数据库,它能够实现自给自足、无服务器、零配置、事务性的SQL数据库引擎。它的设计目标是嵌入式的,因为它的占用资源非常低,在嵌入式设备中可能仅需几百kK内存,且支持Unix/Linux/Windows系统和多种类型语言。2、SQLite安装及常用命...

2020-03-31 23:24:40 256

原创 进程间通信机制(IPC)--共享内存

目录共享内存原理介绍共享内存API介绍ftok()获取关键字shmget()创建或获取共享标识符shmat()映射共享空间shmctl()共享空间管理shmdt断开共享连接示例代码  回忆一下前面所介绍的几种进程间通信方式的特点:信号相当于软中断,当系统发送某个被设置的信号时就会立刻去执行该信号所对应的程序块,以信号标志的方式完成进程间的通信,不能够发送数据。管道在发送数据方面起到了很好的...

2020-03-28 20:19:32 259

原创 进程间通信机制(IPC)--消息队列

目录消息队列原理消息队列API介绍ftok()获取关键字msgget()创建或访问消息队列msgsnd()添加到消息队列消息队列原理  首先消息队列(Message Queue)通过这个词首先能了解到的是队列这个先进先出数据结构,该方式可以从一个进程向另一个进程发送数据块,且每个数据块都被认为含有一个数据类型,所接受的进程可独立地接受不同数据类型的数据,可通过发送消息来避免管道的同步和阻塞问题...

2020-03-28 13:51:45 251

原创 进程间通信机制(IPC)--信号量

目录信号量原理介绍信号量API介绍ftok()获取关键字semget()创建或获取信号量semctl()控制操作信号量集semop()完成信号量PV操作示例代码信号量原理介绍  在前面的几篇文章中有介绍到信号、管道、和命名socket,其中可以传送数据的通信方式是管道和命名socket,而信号和信号量虽然实现方式不同,但是他们都是不能够传递数据,通过信号的方式来执行指定操作。在进程间通信中我们...

2020-03-26 23:51:09 386

原创 TCP/IP协议体系结构

目录1、TCP/IP网络协议栈1.1、链路层1.2、网络层1.3、传输层1.4、应用层1、TCP/IP网络协议栈  TCP/IP协议包括两部分:传输控制协议和网际协议,TCP/IP协议栈有五个相对独立的层次组成:应用层、传输层、互联网层(对应OSI的网络层)、网络接口层和物理层(其中网络接口层和物理层常被统称为链路层)。其与OSI 7层模型对应关系如下图:  其中OSI参考模型注重的是通信...

2020-03-26 11:44:25 4427

原创 进程间通信机制(IPC)--命名socket

目录socket套接字TCP/IP协议集  在前面所介绍的几种进程间通信(信号、管道)中所通信的进程都需要在一台计算机上,而socket域进行的通信方式,不仅可以在一台计算机,而且可以是通过网络所连接的不同计算机,这种方式称为命名socket或者UNIX域socket,这也是一种进程间通信的方式,UNIX域数据报服务是可靠的,不会传递出错也不会丢失信息。其提供两类套接字:字节流套接字(strea...

2020-03-24 20:14:24 474

原创 进程间通信机制(IPC)--管道(pipe、fifo)

目录无名管道(pipe)命名管道(fifo)  进程间通信的概念及目的在上一篇文章:进程间通信机制(IPC)–信号。  本文介绍的是用来实现进程间相互发送非常短小的,频率很高的的消息方法:管道(pipe)和命名管道(fifo),主要适用于两个进程间的通信。还是要提一下为什么要有进程间通信,因为每个进程各自有不同的地址空间,其数据段、代码段、堆栈段相互独立,因此进程间要交换数据需要借助内核,在内...

2020-03-18 00:23:49 458

原创 进程间通信机制(IPC)--信号

目录进程通信的概念及目的信号(Signal)信号API介绍信号的安装进程通信的概念及目的  进程间通信就是在不同进程间传播或交换信息,在linux下的系统编程中,父进程可以通过fork()系统调用来创建一个子进程,之后他们将运行各自的程序代码。一般而言进程的用户空间相互独立,不能互相访问,可如果多个进程间需要协同处理某个任务时这就需要操作系统进程间的同步和数据交流。  进程间通信的目的:...

2020-03-15 23:27:07 433

原创 wireshark基本操作、抓包详细图文教程

目录Wireshark软件安装抓包示例及基本操作TCP三次握手  抓包(packet capture):就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。  而我们所使用的wirshark软件是应用最广泛的网络数据包分析软件之一,功能十分强大。它可以实时捕获并详细显示各种类型数据包,可以通过多种方式过滤数据包,还可以进行多种统...

2020-03-13 20:34:48 6999

原创 网络编程I/O多路复用select、poll、epoll总结

目录I/O多路复用概念相关API介绍1、select多路复用2、poll多路复用2、epoll多路复用  首先通过一个形象的例子来更好的了解处理网络编程的多种机制:  假如你是一个老师,让20名同学取做一道题,然后检查完学生做的结果才能下课,对于这个过程你可以有下面几个方式:按照顺序逐个检查,先检查甲同学,再检查乙同学,然后丙、丁···,如果中间的同学要思考很久那么就会影响下课的时间。也就...

2020-03-13 11:23:20 353

原创 Linux如何处理僵尸进程

目录(一)什么是僵尸进程(二)僵尸进程目的(三)僵尸进程的处理1、wait()函数2、waitpid()函数3、wait与waitpid区别(四)僵尸进程的避免(一)什么是僵尸进程  在一个程序调用了exit系统调用时内核会释放该进程的存储区,打开的文件等,但内核回味每个终止的子程序保存一定的信息量其中包含该进程的进程ID,进程的终止状态,以及该进程使用的CPU时间,这类信息父进程可通过wai...

2020-03-11 14:51:54 5476

原创 Linux下写时拷贝技术(copy-on-write)

目录(一)cow概述(二)cow详述1、fork()2、写时拷贝3、vfork()(一)cow概述  在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后会调用exec系统调用,出于效率考虑,linux引用的写时拷贝技术,也就是只有进程空间的各段内容要发生变化时才会将父进程的内容复制一份给子进程(关于fork()函数在https://blog.csdn.net/...

2020-03-11 11:23:38 333

原创 数据结构——B树、B+树、B*树

目录(一)B树(B-树)1、二叉搜索树2、B树的基本概念3、m阶B树的性质4、B树和二叉树的操作比较(二)B+树1、B+树的基本概念2、B+树的特征3、B+的优势(三)B*树1、B*树的基本概念2、B*树特点(一)B树(B-树)1、二叉搜索树  二叉搜索树有如下特点:所有非叶子结点至多拥有两个孩子(Left和Right)所有结点存储一个关键字非叶子节点的左指针指向小于其关键字的子树,...

2020-03-10 21:57:07 1564

原创 数据结构学习笔记——图(一)

目录(一) 图的定义(二) 图的基本操作(三) 图的存储结构1. 邻接矩阵存储2. 邻接表存储3. 十字链表4. 邻接多重表5. 边集数组(四) 图的遍历1. 深度优先遍历2. 广度优先遍历(五) 最小生成树1.普里姆(Prim)算法2.克鲁斯卡尔( Kruskal )算法ps:此文章只是为了总结学习数据结构笔记,便于以后忘记查阅,因此部分图片会借用书上的图片,望理解。  在前面的总结中线性表...

2020-03-08 23:36:35 590

原创 多线程中死锁的产生和避免

目录(一)死锁的概念(二)产生死锁的条件(三)如何避免死锁(一)死锁的概念  死锁是指两个或两个以上的线程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞现象,若无外力作用,他们将无法推进下去。此时系统处于死锁状态或系统产生了死锁,这些互相等待的进程称为死锁进程。  假如在你的电脑上只有一台打印机和一台输入设备,进程A正在使用输入设备,并且上了锁,同时又提出想要使用打印机的请求,此...

2020-03-07 23:14:04 314

原创 数据结构学习笔记——树(二)

目录(一)二叉树的定义1、二叉树的特点2、特殊二叉树(一)二叉树的性质(三)二叉树的存储结构1、二叉树的顺序存储结构2、二叉链表(四)二叉树的遍历及实现(五)二叉树的建立(六)搜索二叉树(七)树、森林与二叉树的转换ps:此文章只是为了总结学习数据结构笔记,便于以后忘记查阅,因此部分图片会借用书上的图片,望理解。(一)二叉树的定义  **二叉树(Binary Tree)是 n (n ≥ 0)个...

2020-03-07 15:58:52 381

原创 数据结构学习笔记——树(一)

目录(一)树的定义1、结点的分类2、节点间关系3、树的其他相关概念4、树与线性表的不同(二)树的基本操作(三)树的存储结构1、双亲表示法2、孩子表示法2、孩子兄弟表示法ps:此文章只是为了总结学习数据结构笔记,便于以后忘记查阅,因此部分图片会借用书上的图片,望理解。(一)树的定义  树( Tree )是 n (n>=O) 个结点的有限集。n=0 时称为空树。 在任意一棵非空树中:有...

2020-03-07 01:01:43 458

原创 数据结构学习笔记——串

目录(一)串的定义(二)串的基本操作(三)串的存储结构(1)串的顺序存储结构(1)串的链式存储结构ps:此文章只是为了总结学习数据结构笔记,便于以后忘记查阅,因此部分图片会借用书上的图片,望理解。(一)串的定义  串( string )是由零个或多个字符组成的有限序列,又名叫字符串。  零个字符的串称为空串(null string),他的长度为0 。  空格串,只是包含空格的串,其内容是...

2020-03-06 18:54:47 472

原创 数据结构学习笔记——栈和队列

目录(一)栈的定义(二)栈的基本操作(三)栈的顺序存储结构及实现1、栈的顺序存储结构——进栈操作2、栈的顺序存储结构——出栈操作(四)两栈共享空间(五)栈的链式存储结构及实现1、栈的链式存储结构——进栈操作2、栈的链式存储结构——出栈操作(六)队列的定义(七)队列的基本操作(八)循环队列1、顺序队列的不足2、顺序队列定义及操作(九)队列的链式存储及实现ps:此文章只是为了总结学习数据结构笔记,便...

2020-03-06 14:59:29 557

原创 数据结构学习笔记——线性表

目录(一)线性表的定义(二)线性表的基本操作(三)线性表的顺序存储结构(数组)1、顺序存储结构的插入与删除实现2、顺序存储结构的时间复杂度及优缺点(四)线性表的链式存储结构(链表)1、单链表的读取、插入与删除实现1、单链表的创建与删除(三)静态链表(用数组描述的链表)(四)循环链表(五)双向链表ps:此文章只是为了总结学习数据结构笔记,便于以后忘记查阅,因此部分图片会借用书上的图片,望理解。(...

2020-03-06 01:36:22 556

原创 主机序和网络序及其转换函数

目录主机字节序网络字节序  在物联网或者网络通信的过程中难免会发生数据的交换,因为每台主机不同,其存储数据方式可能为大端存储(Big endian)和小端存储(Little endian),因此在数据传输的过程中是以网络字节序为标准顺序,考虑与协议的一致性,在程序发送数据包的过程中,将主机字节序转为网络字节序,收到数据包的主机再将网络字节序转为该主机的主机字节序,从而完成两台主机的通信。因此掌握...

2020-03-05 14:40:26 1218

原创 简述五种网络I/O模型

目录同步与异步阻塞与非阻塞(一)阻塞IO模型(Blocking I/O)(二)非阻塞IO模型(Non-blocking I/O)(三)IO多路复用模型(IO muitiplexing)(四)信号驱动IO模型(Asynchronous IO)(五)异步IO模型(Asynchronous IO)  在介绍五种模型之前我们先来了解几个概念:同步与异步  同步与异步的概念描述是用户线程与内核的交互方...

2020-03-05 02:22:46 721

原创 c++实现的排序算法总结(二)

目录(五)归并排序  动画演示:  示例代码:  性能:  优化--非递归实现:(六)快速排序  动画演示:  示例代码:  性能分析:  优化--三数取中法:(七)各种排序算法指标总结  有关冒泡排序,选择排序,插入排序,堆排序的总结都在上一篇文章中有介绍:   https://blog.csdn.net/weixin_42647166/article/details/104610010(...

2020-03-03 16:27:26 458

空空如也

空空如也

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

TA关注的人

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