自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 QT ui文件提升部件后出现无法包含头文件的错误

解决办法:头文件包含路径使用绝对路径

2021-10-27 20:58:04 579

原创 Linux QT 编译出现 file not recognized: File truncated解决办法

命令终端 切换至构建目录下执行 ccache -C

2021-10-18 13:54:10 844

原创 Linux服务器项目-共享单车

Linux服务器项目-共享单车一、应用层协议设计二、使用 protobuf 将如上协议结构化数据三、开发工具:Visual Studio 2019一、应用层协议设计通信双方交换数据的格式与顺序通信双方应该采取的动作使用 protobuf 序列化短信获取获取短信请求:mobile_resquest字段名类型属性描述mobilestringrequired手机号码,必须为大陆手机号。取11位数字获取短信响应:mobile_response字

2021-07-26 20:57:40 1426 1

原创 使用 Visual Studio 2019 开发 Linux 项目

使用 Visual Studio 2019 开发 Linux 项目一、VS2019 中安装Linux开发组件二、建立Linux项目三、连接到 Linux 系统四、添加测试文件五、添加第三方库一、VS2019 中安装Linux开发组件打开 Visual Studio Installer,点击Visual Studio 2019 的修改按钮选中其他工具集下的使用C++的Linux开发之后,点击下载时安装按钮二、建立Linux项目打开 VS2019,选择创建新项目选择平台为Linux,选

2021-07-16 18:05:36 4950

原创 谷歌protobuf(Protocol buffers)的使用

谷歌protobuf的使用一、概述二、安装一、概述Protocol buffers 是 Google 的语言中立、平台中立、可扩展的结构化数据序列化机制——想想 XML,但更小、更快、更简单。您可以定义一次数据的结构化方式,然后您可以使用特殊生成的源代码轻松地使用各种语言在各种数据流中写入和读取结构化数据。Photocol buffers 是一种比json和xml等序列化工具更加轻量和高效的结构化数据存储格式,性能比json和xml真的强很多。原理图:二、安装# 如果在解压或安装时出现

2021-07-14 10:39:32 1387

原创 Linux - IO的同步与异步以及五种网络IO模式(阻塞IO、非阻塞IO、IO多路复用、信号驱动IO和异步IO)

Linux - IO的同步与异步以及五种网络IO模式一、同步IO和异步IO1. 同步IO2. 异步IO二、五种网络IO模式1. 阻塞IO一、同步IO和异步IO1. 同步IO场景:小明去打开水,而开水塔此时没有水,小明在现场一直等待开水到来,或者不断的轮询查看是否有开水,直到有开水取到水为止,这是同步IO的一种案例!特点:同步IO是指用户进程触发I/O操作并等待或轮询的查看I/O操作是否就绪同步IO的执行者是IO操作的发起者同步IO需要发起者进行内核态到用户态的数据拷贝过程,所以这里必须

2021-07-11 19:43:54 477

原创 libevent框架的使用

一、概述1. LAMP - web服务器套件LAMP:它是一个缩写,指一组通常一起使用来运行动态网站或者服务器的自由软件。LAMP展开 缩写 展开 说明 L Linux 操作系统 A Apache 网页服务器 M MySQL 数据库管理系统(或数据库服务器) P PHP Perl或Python - 脚本语言 C10K:并发能力突破不了1万连接。2. libevent 框架libevent是一个轻量级

2021-07-11 18:42:06 615

原创 Linux - 实现高并发HTTP服务器(只处理GET请求)

Linux - 实现高并发HTTP服务器[只处理GET请求]HTTP协议请求格式客户端请求服务器响应项目中用到的响应代号项目实现HTTP协议请求格式客户端请求客户端发送一个HTTP请求到服务器的请求消息包括如下格式:请求行(request line)、请求头部(header)、空行和请求数据四部分组成服务器响应服务器响应客户端的HTTP响应数据也由以下几部分组成:状态行、信息报头和响应正文项目中用到的响应代号响应代号代号描述说明200OK服务器上存在请求的内容,并

2021-07-09 20:39:05 510

原创 Linux - Epoll的基础使用

Epoll 事件驱动流程![事件驱动流程](https://img-blog.csdnimg.cn/20210623200921622.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTQ5MTcyOA==,size_16,color_FFFFFF,t_70)- Reactor设计模式> - Epoll 使用此设计模

2021-06-26 10:27:49 632

原创 网络编程 - OSI和TCP/IP协议模型及TCP、UDP协议

网络编程一、OSI七层协议模型及TCP/IP协议模型1. OSI七层协议模型2. TCP/IP四层协议模型3. 协议封装二、TCP/IP协议1. TCP协议头部一、OSI七层协议模型及TCP/IP协议模型1. OSI七层协议模型层级作用应用层为应用数据提供服务表示层数据格式化,数据加密会话层建立、维护和管理会话传输层建立、维护和管理端到端的连接,控制数据传输的方式网络层数据传输线路选择,IP地址及路由选择数据链路层物理通路的发送和数据包的

2021-06-17 11:02:53 308

原创 Linux - 线程

Linux - 线程一、概念1. 为什么要使用线程2. 什么是线程3. 线程的优缺点4. 线程的应用场合二、线程的使用1. 常用函数2. 使用到线程的代码编译3. 示例代码一、概念1. 为什么要使用线程使用fork函数创建进程以执行新的任务的方式的代价很高多个进程间不会之间共享内存线程是进程的基本执行单元,一个进程的所有任务都在线程中执行,进程要想执行任务,必须要有线程。进程至少有一条线程,程序启动会默认开启一条线程,这条线程被称为主线程或UI线程2. 什么是线程线程,是进程内部的一个控

2021-05-31 19:59:50 184

原创 Linux - 进程

进程一、进程与程序二、线程的创建三、进程的销毁多进程高并发设计一、进程与程序实际上是一堆指令和数据的集合,这个集合反映了一个静态可执行文件和相关的配置文件等。操作系统可以运行多个程序,那他是如何运行的?实际上,CPU的执行是很快的,而待运行的程序很多,那么为了让操作系统运行多个程序,CPU会把它的执行时间划分成很多段,比如每一段是0.1秒,那么就可以这样A程序运行0.1秒,然后B程序运行0.1,然后C程序运行0.2秒,因为这个切换很快,所以我们感觉程序是同时运行的。从操作系统上看上面提到的运行程序就

2021-05-27 19:49:21 197

原创 进程间通信之共享内存

进程间通信之共享内存一、共享内存机制概述二、两种常见的共享内存方式1、System V版本的共享内存2、文件映射三、IPC通信System V 版本的共享内存 shm一、原理二、相关函数一、共享内存机制概述共享内存机制是允许两个或多个进程(不相关或有亲缘关系)访问同一个逻辑内存的机制。它是共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。二、两种常见的共享内存方式1、System V版本的共享内存多个进程直接共享内存2、文件映射文件进行频繁读写,将一个

2021-05-27 19:47:02 803

原创 Linux - 进程间通信之信号量

Linux - 进程间通信之信号量一、信号量及使用场景1、信号量2、应用场景3、信号量的使用一、信号量及使用场景1、信号量信号量:是一种特殊的变量。只能对信号量执行P操作和V操作。P操作:如果信号量的值大于0,则把该信号量减1。如果信号量的值等于0,则挂起该进程。V操作:如果有进程因该信号量而被挂起,则恢复该进程运行。如果没有进程因该信号量而挂起,则把该信号量减1。注意:P操作和V操作都是原子操作,即在执行时不会被中断。此处的"信号量"指的是 System V IPC的信号量,与线程所使用

2021-05-24 10:52:55 216

原创 Linux - 进程间通信方式之管道

Linux - 进程间通信方式之管道概述单进程中的管道一、管道的创建二、管道的使用1、单进程使用管道通信2、多进程使用管道通信3、子进程使用exec启动新程序时管道的使用4、关闭管道的读端/写端概述进程间通信(IPC)有多种方式,管道是进程间通信最基本的方式。管道是"半双工"的,即单向的。管道是先进先出(FIFO)的。单进程中的管道int fd[2];使用文件描述符fd[1],向管道写数据使用文件描述符fd[0],从管道读数据注:单进程中的管道无实际用处。管道用于多进程通信。一、管

2021-05-21 20:50:03 351

原创 Linux - 进程间通信方式之信号

Linux - 进程间通信一、进程间通信方式 - 信号信号的处理信号的捕获一、进程间通信方式 - 信号信号定义信号是给程序提供一种可以处理异步事件的方法,它利用软件中断来实现。不能自定义信号,所有的信号都是系统预定义的。信号的产生(1) 由shell终端根据当前发生的错误(段错误、非法指令等)和Ctrl+C而产生的信号。例如:socket通信或管道通信,如果读端已经关闭,执行写操作(或发送数据)将导致执行写操作的进程收到SIGPIPE(表示管道破裂,该信号的默认行为是终止该进程)信号。(2)

2021-05-20 10:51:50 159

原创 Linux - gtest测试框架的使用

gtest 单元测试框架的使用一、gtest的优点二、gtest开发框架的搭建三、示例程序gtest是Google的一套用于编写C++测试的框架,可以运行在很多平台上(包括Linux、Mac OS X、Windows、Cygwin等等)。基于xUnit架构。支持很多好用的特性,包括自动识别测试、丰富的断言、断言自定义、死亡测试、非终止的失败、生成XML报告等等。一、gtest的优点测试应该是独立的、可重复的。一个测试的结果不应该作为另一个测试的前提。GTest中每个测试运行在独立的对象中。如果某个测

2021-05-15 19:52:15 2645

原创 Linux - 输出重定向及log4cpp第三方库的使用

1

2021-05-15 10:36:13 290

原创 Linux - 使用iniparser处理ini文件

使用iniparser吃力ini文件此文档使用的示例项目目录结构如下ini文件格式iniparser的下载和编译iniparser的的使用示例在程序中很多使用到的参数是不固定的,其处理方式可以是通过main函数的参数传递,也可以通过其他方式获取;配置文件就是其中之一。一个成熟和架构完善的系统,一般都可以做到自动配置、自动部署,因此有些系统内会有一个单独的配置服务,每个其他服务的配置信息从配置服务内获取,这样运维人员就可以通过界面把配置信息下发给配置中心服务,其他服务再从配置中心获取变更信息。此文档使用

2021-05-13 20:52:04 553

原创 Linux 文件锁

Linux 文件锁函数原型:int fcntl(int fd, int cmd, … /* arg */ );参数说明:参数说明fd文件描述符cmd取值(仅说明文件锁相关):F_GETLK, F_SETLK, F_SETLKW 分别表示 获取锁、设置锁和同步设置锁arg可变长参数struck flock 结构体说明struct flock { short l_type; /*F_RDLCK, F_WRLCK, or F_UNLCK */ off_t l

2021-04-23 19:44:04 124

原创 [MySQL数据库(1)]数据库的操作_新建、查看、选择和删除

MySQL数据库的操作_新建、查看、选择和删除1、关系模型2、新建数据库3、查看数据库4、选择数据库5、删除数据库6、数据库命名规范

2020-08-22 19:55:51 233

原创 Qt标准对话框[QFileDialog、QColorDialog、QFontDialog、QInputDialog、QMessageBox]

Qt标准对话框[QFileDialog(文件对话框)、QColorDialog(颜色对话框)、QFontDialog(字体对话框)、QInputDialog(输入对话框)、QMessageBox(消息框)]

2020-07-03 10:56:06 381

原创 Qt共用体类[QVariant]

Qt共用体类型

2020-06-30 11:11:43 826

原创 Qt常用容器汇总[QStringList | QList | QLinkedList | QVector | QMap | QHash]

Qt容器

2020-06-30 11:01:34 1952

原创 Qt字符串类[QString]及字符串链表类[QStringList]

QStrting类+QStringList类

2020-06-27 18:40:35 1717

原创 C++引用

C++引用&相关

2020-06-26 11:05:29 94

原创 C/C++指针的使用

指针为什么要使用指针函数的值传递,无法通过调用函数,来修改函数的实参;被调用的函数需要返回更多的“返回值”给调用函数;减少值传递带来的额外开销,提高代码执行效率。

2020-06-25 19:05:13 306

空空如也

空空如也

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

TA关注的人

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