自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 资源 (6)
  • 收藏
  • 关注

原创 Unix系统I/O多路复用技术—select、poll、epoll总结

什么是多I/O的多路复用?考虑一下这个问题,在一个程序中对两个fd进行阻塞读写,那么对任何一个fd进行阻塞读写,都会导致另一个fd没法处理,比如就算其已经有了数据也不能进行读;若采用非阻塞轮询方式进行处理,这种方法会导致cpu的负荷很大,cpu做了很多无用的轮询,若采用多进程、多线程方式开辟独立的线程分别操作一个fd,则进程、线程间的同步增加了代码的复杂性。I/O 多路复用机制,单个线程通...

2019-03-10 12:32:46 550

原创 Unix系统进程间通信(IPC)常用方法总结

目录一、管道(匿名管道)二、FIFO(命名管道)三、消息队列四、信号量五、共享内存Unix中的IPC(InterProcess Communication)是各种进程通信的统称,在Unix中有很多线程间通信方法,但是他们并不是兼容Unix的各种实现,下图列出了Linux系统不同实现所支持的不同形式的IPC。本文将介绍上诉表中比较经典的IPC:管道(匿名管道)、FIF...

2019-03-07 09:20:13 4488

原创 C++数据库编程-Mysql API封装

之前使用C++操作数据库非常麻烦,为了以后操作Mysql数据库可以方便点,专门花了一段时间再次研究Mysql 的官方C语言API,并使用C++封装成类,因为Mysql提供的C语言 API是跨平台的,所以本Mysql类也可以在Windows和Linux下同时使用,不过要使用对应平台的Mysql官方库(include目录和lib目录),欢迎交流和参考。官方手册:https://dev.mysql....

2019-03-06 14:26:06 2542 1

原创 Linux下GDB常用命令总结

一、GDB概述Linux下的GDB调试器,是一款GNU组织开发的UNIX/Linux下的程序调试工具,它没有图形化的友好界面,但功能强大。二、准备工作(a) 安装GDB: apt install gdb(b) 创建main.cpp文件vim使用技巧:在按esc进入命令模式下,在!后可直接输入命令行进行执行,还可以进行上下键查看历史命令。这样可以在不退出vim的情况下进行编译...

2018-12-30 16:41:50 4364

原创 GCC编译过程及基本命令总结

一、GCC简介GCC即GNU Compiler Collection,原本只是针对C语言的编译工具,现在已经变成了一个工具集,包含了C、C++、JAVA等语言的集合体。管理和维护:由GNU项目负责。二、GCC对C、C++的编译流程(1) 预处理(Preprocessing) --宏替换;--删除注释;--处理预处理指令,如#include,#ifdef,头文件都被展开,...

2018-12-30 16:17:14 8688 1

原创 五、【串匹配】KMP算法详解

串或者字符串属于线性结构,可以使用向量和列表等很方便地实现,其也具有很鲜明的特征:结构简单、规模庞大、元素重复率高。在涉及字符串的众多应用中,字符串匹配是最常使用也是最为重要的操作。字符串匹配算法大约有30多种,本文介绍最为著名的KMP算法,KMP算法的性能与常规的蛮力算法相比有巨大的性能提升,但由于其巧妙的算法思路和实现技巧,我在理解KMP算法上花费了好大的功夫,言归正传,下面进行详细介绍。...

2018-12-25 16:38:24 303

原创 十五、【优先级队列】左式堆(leftist heap)

一、左式堆存在的意义除了标准的插入和删除操作,堆结构在实际应用中的另一个常见的操作是合并,即将堆A和堆B重新组织成一个堆。若采用最基本的完全二叉堆数据结构,其最高效的实现策略是采用Floyd建堆算法将堆A和堆B直接重构成一个新堆,但是该算法的时间复杂度为O(n),这种性能在实际中不让人满意,而左式堆结构能保证在合并操作中只需要调整很少的点,所以能保证合并操作的时间复杂度低至O(logn)。而且...

2018-12-22 16:59:50 559

原创 四、【排序】堆排序(heapsort)

借助堆数据结构的相关算法实现高效的排序,称为堆排序(heapsort)。因为由堆构成的优先级队列可以支持在整个堆中取出优先级最高的元素,而且其操作算法非常高效,利用这个getMax()操作,可以很方便地实现排序操作。本文介绍基于完全二叉堆的堆排序算法。(完全二叉堆的介绍其实现可参考之前的博客https://blog.csdn.net/qq_18108083/article/details/8520...

2018-12-22 15:54:33 158

原创 十四、【优先级队列】完全二叉堆(complete binary heap)

在实际环境中,普通的FIFO的队列不能保证整体效率达到最高,如CPU的多任务调度,医院诊疗等,简单的“先入先出”原则并不是很好的方案,对大多数问题而言,应该根据事物特性的指定合适的优先级方案灵活的操作,而优先级队列很适合处理这样的问题。一、优先级队列此前的搜索树结构和词典结构,都支持覆盖数据全集的访问和操作,它们定义并维护显式或者隐式的全序关系(full order)。就对外接口的功能而言...

2018-12-22 13:30:17 682

原创 四、【排序】桶排序(bucketsort)

一、原理该算法借助一组桶单元实现对一组关键码的分拣,故称作桶排序(bucketsort)。其主要依赖于散列技术,首先借助散列函数将关键码映射到物理地址线性排列的桶单元中,这一个过程实际上完成了排序,然后遍历散列表中的非空桶将关键码读出即可。(散列表知识点:https://blog.csdn.net/qq_18108083/article/details/85134509)二、应用场合桶...

2018-12-21 10:35:49 657

原创 十三、【数据结构】散列表(hashtable)的详解及实现

散列在数据结构算法中占据独特而重要地位。此类方法以最基本的向量作为底层支撑结构,通过适当的散列函,在词条的关键码与向量单元的秩之间建立起映射关系,理论分析和实验统计均表明,只要散列散列函数以及冲突排解策略设计得当,散列技术可在期望的常数时间内实现词典的所有接口。尤为重要的是,散列技术完全摒弃了基于关键码大小比较式的设计思路,其算法性能不受CBA(compare based algothrim)...

2018-12-20 20:32:57 1540

原创 安装Windows+Ubuntu18.04双系统(双盘)及grub引导修复

之前一直在虚拟机上开发linux代码,感觉很不方便,所以决定在我的笔记本上(在固态上已经有windows10)安装ubuntu18.04。因为装固态,所以我的机械盘c盘闲置了,刚好用来装ubuntu,有80G也够用。事实上这是我第二次装windows+ubuntu双系统,上次是在台式机上,在一块C盘里面装了2个系统,没出任何问题。但是这次在两个盘上装双系统,却遇到了不少问题,不过还好我都解决了...

2018-12-18 19:46:34 16760

原创 十二、【数据结构】位图(bitmap)的详解与实现

一、定义     --概念部分参考http://www.iteblog.com/archives/148位图法就是bitmap的缩写。所谓bitmap,就是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况。通常是用来判断某个数据存不存在的。在STL中有一个bitset容器,其实就是位图法。引用bitset介绍:A bitset is a special contain...

2018-12-18 13:26:04 4681

原创 十一、【数据结构】红黑树(red-black tree )的详解与实现

一、红黑树的存在意义平衡二叉搜索树的形式多样,各具特色,如伸展树实现简便,不需要修改节点的数据结构即可使分摊复杂度降低到O(logn)的量级,但是在最坏情况下单次搜索操作需要Ω(n)的时间,因此其难以被使用在核电站、医院等对可靠性和稳定性要求极高的场合。而AVL树,虽然其可以保证在最坏情况下的单次操作速度,但是其需要在节点中嵌入平衡因子标识,而更加严重的是,其在单次删除操作之后可能导致Ω(lo...

2018-12-15 22:53:57 1545

原创 十、【数据结构】B-树(B-tree)的解析与实现

一、B-树的出发点任何一种数据结构的产生都不是毫无根据凭空想象出来的,一般而言它们都是为了解决某种问题才被设计。B-树的产生主要是解决数据库查找时候对外存的访问次数的。我们知道,第一台电脑只有一万多个电子管,而现在一个硬盘都能TB的存储量级,可以说到目前为止计算机的存储能力已经有了巨大的提升。但是实际上人们对存储空间需求的增长更加迅速,现在的大型数据库都需要以TB为单位来计量,而我们知道,在相...

2018-12-13 13:13:57 1334 2

原创 九、【数据结构】伸展树(splay tree )的解析与实现

和之前介绍的AVL树一样,伸展树也是平衡二叉树中的一种,但是它和AVL的原理不同,相比之下,伸展树的实现更加便捷。这里先回顾一下AVL树的特点。一、回顾AVL树的特点AVL树保证静态查找效率的关键技巧是添加约束条件,使在任意时刻(不包含瞬时状态)树的高度始终在一个很低的范围。具体的策略是引入平衡因子的概念,以及在树失衡时,使用AVL自己的一套等效旋转技巧使树恢复平衡。这种方案具有一定的...

2018-12-11 16:24:34 1102 1

原创 八、【数据结构】AVL树的解析与实现

一、平衡二叉搜索树上节介绍了二叉搜索树的概念及其意义,我们可以知道二叉搜索树旨在把有序向量的二分查找策略融入到树查找中从而提高二叉树的静态查找性能。但是search(),insert()和remove()等主要接口的运行时间,均线性正比于二叉搜索树的高度。而且在最坏情况下,二叉搜索树可能彻底退化成列表,此时的查找效率甚至会降至O(n)。因此,若不能有效地控制树高,则从实际的性能而言,二叉搜索树...

2018-12-10 16:51:19 523

原创 七、【数据结构】二叉搜索树(bst)的解析与实现

本文使用C++实现二叉搜索树(binary search tree,bst)数据结构。一、为什么要引入二叉搜索树通过对向量和列表这两类线性数据结构的原理分析,我们可以发现向量结构在对静态查询操作的支持比较好,有序向量的二分查找能做到在O(logn)的时间,但是对删除和插入操作在最坏情况下能达到O(n)的时间。而与向量相对立的列表结构能很好地支持动态操作,如删除和插入只需要O(1)的时间,但...

2018-12-09 14:24:07 453

原创 三、【图算法】PFS应用-最短路径(Dijkstra算法)

优先级搜索是个通用的框架,其可以把广度优先搜索和深度优先搜索都包含在内,只需改变优先级的更新策略即可把PFS应用到一个具体的问题中,这里介绍PFS的一个典型的应用--图的最小支撑树生成问题。若以带权图来表示真实的通讯,交通,物流或者社交网络,则各边的权重可能代表信道成本,交通费用或交往程度,对于这样的对象,往往需要解决的问题是节点A到节点B的最短通路有多长,以及由哪些边构成。策略:基本思想...

2018-12-07 16:23:02 862

原创 三、【图算法】PFS应用-最小支撑树(Prim算法)

上篇博客介绍到优先级搜索是个通用的框架,其可以把广度优先搜索和深度优先搜索都包含在内,只需改变优先级的更新策略即可把PFS应用到一个具体的问题中,这里介绍PFS的一个典型的应用--图的最小支撑树生成问题。最小支撑树:对于一个带权网络G,若G的某一无环连通子图能覆盖G中所有的顶点,且其各边的权重总和最低,则称此树为图G的最小支撑树。事实上,在实际生活中的网络架构设计,VLSI布线设计等诸多问...

2018-12-07 15:48:30 1877

原创 三、【图算法】优先级搜索(PFS)

最基本而典型的图搜索算法包括:广度优先搜索(BFS),深度优先搜索(DFS),优先级搜索等(PFS),本文主要介绍图的优先级搜索(priority-first search,DFS),本文使用的图数据结构参见之前博客https://blog.csdn.net/qq_18108083/article/details/84870399策略:从之前介绍的广度优先搜索和深度优先搜索中,可以发现这两种算...

2018-12-07 15:20:35 2064 1

原创 三、【图算法】DFS应用-拓扑排序

深度优先搜索(DFS)算法是最重要的图遍历算法,基于DFS框架,可以导出大量的图算法,图的拓扑排序即为其中一个很典型的例子。拓扑排序:给定一个有向图,如何在保证“每个顶点都不会通过边,指向其在此序列中的前驱顶点”这一前提下,将所有顶点排成一个线性序列。例如:在编写教材时,由于各个知识点之间具有一定的依赖关系,如何将这些知识点串联为一份教学计划,保证在整个授课进程中,每节课的基本知识点均...

2018-12-07 14:21:06 2275

原创 三、【图算法】深度优先搜索(DFS)

图算法是个庞大的家族,其中大部分成员的主体框架都可以归结于图的遍历。图的遍历需要访问所有顶点一次且仅 一次,此外,图遍历同时还要访问所有的边一次且仅一次。经过一次遍历,树边的顶点共同构成了原图的一颗遍历树。为防止对顶点的重复访问,在遍历的过程中,需要动态地设置各顶点的不同状态,并且随着遍历的进程不断地转换状态,直至最后的“访问完毕”,图的遍历更加强调对处于特定状态顶顶啊的甄别和查找,故也称作图...

2018-12-07 13:35:47 216

原创 三、【图算法】广度优先搜索(BFS)

图算法是个庞大的家族,其中大部分成员的主体框架都可以归结于图的遍历。图的遍历需要访问所有顶点一次且仅 一次,此外,图遍历同时还要访问所有的边一次且仅一次。经过一次遍历,树边的顶点共同构成了原图的一颗遍历树。为防止对顶点的重复访问,在遍历的过程中,需要动态地设置各顶点的不同状态,并且随着遍历的进程不断地转换状态,直至最后的“访问完毕”,图的遍历更加强调对处于特定状态顶顶啊的甄别和查找,故也称作图...

2018-12-07 12:55:01 291 1

原创 六、【数据结构】图-邻接矩阵(adjacency matrix)的实现

本文旨采用C++实现图数据结构,具体地以邻接矩阵的方式实现图数据结构。图结构可以描述一组对象之间的二元关系,例如在城市交通中,联接于各个公交车站之间的道侣,或者在互联网中个网络节点之间的路由都可以很方便地用图结构来表述,另外在之前介绍的树结构也属于图的一种,此类一般性的二元关系,属于图论。在将一些对象之间的关系用图结构表示后,那么我们就可以使用图算法方便地解决这些对象的某些问题,比如拓扑排序,...

2018-12-07 10:53:07 4789

原创 二、(4)二叉树的层次遍历

二叉树本来是分层结构,但若施加某种约束(如遍历),则可以转变成线性结构。二叉树的遍历方法主要有:前序遍历(DLR),中序遍历(LDR),后序遍历(LRD),层次遍历。本文主要介绍二叉树层次遍历方法。层次遍历:从根节点开始,向下逐层从左往右遍历。例如:上图所示的二叉树的层次遍历顺序为:0 1 2 3 4 5 6 7本文使用的二叉树数据结构参见之前博客:https://blog...

2018-12-03 09:56:33 154 2

原创 二、(3)二叉树的后序遍历(递归实现、迭代实现)

二叉树本来是分层结构,但若施加某种约束(如遍历),则可以转变成线性结构。二叉树的遍历方法主要有:前序遍历(DLR),中序遍历(LDR),后序遍历(LRD),层次遍历。本文主要介绍二叉树后序遍历方法,其中包括了递归和迭代两种实现方式。后序遍历:左子树->右子树->根节点(根节点在最后面)例如:                                   上...

2018-12-03 09:36:58 718

原创 二、(2)二叉树的中序遍历(递归实现、迭代实现)

二叉树本来是分层结构,但若施加某种约束(如遍历),则可以转变成线性结构。二叉树的遍历方法主要有:前序遍历(DLR),中序遍历(LDR),后序遍历(LRD),层次遍历。本文主要介绍二叉树中序遍历方法,其中包括了递归和迭代两种实现方式。中序遍历:左子树->根节点->右子树(根节点在中间)例如:上图所示的二叉树的中序遍历顺序为:6 3 1 4 0 2 7 5本文使用的...

2018-12-03 09:24:06 1234

原创 二、(1)二叉树的先序遍历(递归实现、迭代实现)

二叉树本来是分层结构,但若施加某种约束(如遍历),则可以转变成线性结构。二叉树的遍历方法主要有:前序遍历(DLR),中序遍历(LDR),后序遍历(LRD),层次遍历。本文主要介绍二叉树前序遍历方法,其中包括了递归和迭代两种实现方式。前序遍历:根节点->左子树->右子树(根节点在前面)例如:                                   上图...

2018-12-02 22:33:12 630

原创 五、【数据结构】二叉树(binary tree)的实现

本文使用C++实现二叉树数据结构,与之前实现的向量、列表、栈和队列不同,树是一种分层结构,虽然树是分层结构,但若附加某种约束,如遍历次序,则树结构也可以转变成线性次序,因此树属于半线性结构。树结构具有非常多的变种,在算法理论和实际应用中,各种树结构扮演着最为关键的角色。另外,任何有根有序的多叉树,都能转变成二叉树,因此二叉树数据结构具有非常重要的地位。两种特殊的二叉树:完全二叉树、满二叉树...

2018-12-02 21:28:53 2256

原创 C++中int *a; int &a; int & *a; int * &a

C++中指针和应用的不同混用方式往往具有截然不同的语义,所以这里详细地对几种指针和引用的混用方式进行区分,指针和引用的混用常见的如下面几种:int i;int *a = &i; //这里a是一个指针,它指向变量iint &b = i; //这里b是一个引用,它是变量i的引用(别名)int * &c = a; //这里c是一个引用,它是指针a的引用...

2018-12-01 22:10:06 29704 12

原创 四、【数据结构】队列(queue)的实现

本文使用C++实现队列数据结构,与栈一样,队列(queue)也是线性逻辑的数据结构,队列结构同样支持对象的插入和删除,但是两种操作的对象范围分别被限制于队尾和队头,并且这两种操作又分别被称为入队和出队。队列结构的特点:先进先出(First in first out,FIFO)一、队列数据结构的实现队列数据结构的实现可通过对vector或则list类封装得到,但是考虑到队列内元素的移动,...

2018-11-26 21:35:36 986

原创 一、试探回溯法(N皇后问题)

 一、试探回溯法概念在介绍试探回溯法的概念之前,先简要介绍一个简短的古希腊神话故事,邪恶的半人半牛藏身于一个复杂的迷宫,很难找到它并杀死它,就是能成功杀死它怎么回来也是个难事。不过,在公主阿里阿德涅的帮助下,英雄忒修斯还是想到办法并消灭了怪物,并轻轻松松地走出了迷宫,他是怎么做到的呢?其实,忒修斯使用的法宝很简单,就是一团普通的绳,他将绳子的一段系在迷宫的入口上,然后用手拿着另一端进入迷宫...

2018-11-26 16:17:23 8811 2

原创 三、【数据结构】栈(stack)的实现

本文使用C++实现栈数据结构,栈数据结构同之前实现的vector和list数据结构一样都属于线性序列结构,但是栈的数据操作范围仅限于逻辑上的特定顶端,即只能对栈顶进行操作。由于栈结构具有的简洁性和规范性,它既为构建更复杂、更高级数据结构的基础,也是算法设计的基本出发点。鉴于其的基础性及使用的频繁程度,其常常作为标准配置的基本数据结构以硬件直接实现。因此,栈结构无论就工程或是理论而言,其基础性地位都...

2018-11-26 15:19:57 457

原创 二、【数据结构】列表(list)的实现

本文使用c++实现list数据结构,list的接口函数采用高效的实现方式,这样一方面使我加深对数据结构的理解,另一方便可以让我再复习复习c++,通过前几天写的vector数据结构的底层实现,我确实又进一步地熟悉使用C++进行编程,,这次写list的实现过程中,我几乎没有怎么查看《c++prime》了哈哈,就是函数对象形式的遍历函数的声明格式怎么也想不起来,后来查书才明白函数的形参其实是个类的对象,...

2018-11-24 14:59:20 2417

原创 C++中的this指针的分析

作为面向对象的语言,C++程序通常涉及类的编写,而在类的编写中,this指针经常出现,本文旨在解释this指针的概念和用法。一、this指针的概念每个类成员函数都含有一个指向被调用对象的指针,这个指针被称为this,所以(a) this   即为指向调用对象的指针;(b) *this  即为指向调用对象的指针的解引用,即为本对象。二、this指针的用处this作用域是在类内...

2018-11-22 20:42:24 134

原创 C++中NULL和nullptr的区别

在编写C程序的时候只看到过NULL,而在C++的编程中,我们可以看到NULL和nullptr两种关键字,其实nullptr是C++11版本中新加入的,它的出现是为了解决NULL表示空指针在C++中具有二义性的问题,为了弄明白这个问题,我查找了一些资料,总结如下。一、C程序中的NULL在C语言中,NULL通常被定义为:#define NULL ((void *)0)所以说NULL实际上是...

2018-11-22 19:14:39 47806 19

原创 QT开发的串口通讯软件(基于qextserialport工具)

研一上了杨迎泽老师的一门《列车网络与通讯》课程,课程的最后老师给我们分配的小作业居然是写上位机控制一台程控电流源,我在查阅了这台程控电流源的手册后,发现它的通讯方式是串口,而且在串口通讯的基础上制定了一套详细的通讯协议,基于此,我花了小半天的时间做了一个上位机,完成了任务,这里主要分享一下基于QT开发串口助手的一些代码,具体是基于qextserialport的串口通讯开源类库实现的,上位机界面如下...

2018-11-21 15:33:01 1387

原创 C++开发的TCP网络通讯工具类(兼容window和linux)

前段时间做项目用到了网络通讯,自己造了TCP通讯的轮子,能同时在window和linux下运行,并且封装成类,方便以后使用,考虑到自己也一直在互联网上获取资源,现在也把我做的轮子也分享给大家,欢迎参考~完整代码附在下面,如果大家不想复制,可直接从这下载:https://download.csdn.net/download/qq_18108083/10798550(1) XTcp.h#...

2018-11-21 15:05:09 858

原创 C++开发的UDP网络通讯工具类(兼容window和linux)

前段时间做项目用到了网络通讯,自己造了UDP通讯的轮子,能同时在window和linux下运行,并且封装成类,方便以后使用,考虑到自己也一直在互联网上获取资源,现在也把我做的轮子也分享给大家,欢迎参考~完整代码附在下面,如果大家不想复制,可直接从这下载:https://download.csdn.net/download/qq_18108083/10798492(1)XUdp.h#i...

2018-11-21 14:53:37 1252

STL源码剖析(中文完整版带书签).pdf

本書假設你對STL 已有基本認識和某種程度的運用經驗。因此除了第㆒章略作介 紹之外,立刻深入STL 技術核心,並以STL 六大組件(components)為章節之進 行依據。以㆘是各章名稱,這樣的次序安排大抵可使每㆒章所剖析的主題能夠於 先前章節㆗獲得充份的基礎。當然,技術之間的關連錯綜複雜,不可能存在單純 的線性關係,這樣的安排也只能說是盡最大努力。 第1 章 STL 概論與實作版本簡介 第2 章 空間配置器(allocator) 第3 章 迭代器(iterators)概念與 traits 編程技法 第4 章 序列式容器(sequence containers) 第5 章 關聯式容器(associated containers) 第6 章 演算法(algorithms) 第7 章 仿函式or 函式物件(functors, or function objects) 第8 章 配接器(adapter)

2018-12-26

QT开发的串口通讯软件(基于qextserialport工具)

分享一下基于QT开发串口助手的一些代码,具体是基于qextserialport的串口通讯开源类库实现的

2018-11-21

C++TCP通讯类(兼容window和linux)

这是本人基于c++开发的TCP通讯的轮子,并且封装成类,兼容window和linux,方便使用,包含.cpp和.h两个文件,亲测可用,注释详细,欢迎参考

2018-11-21

C++UDP通讯类(兼容window和linux)

这是本人基于c++开发的UDP通讯的轮子,并且封装成类,兼容window和linux,方便使用,包含.cpp和.h两个文件,亲测可用,注释详细,欢迎参考

2018-11-21

基于QT开发的TCP即时通讯软件

这是本人在学习QT和计算机网络的时候自己开发的TCP网络通讯软件,包含服务端和客户端两个工程,亲测可用,我自己也经常用它们做网络的测试,注释详细,欢迎参考

2018-11-21

基于QT开发的UDP即时通讯软件

这是本人在学习QT和计算机网络的时候自己开发的UDP网络通讯软件,可收可发,可作为服务端也可以作为客户端,注释详细,欢迎参考。

2018-11-21

空空如也

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

TA关注的人

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