自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Qt 的网络通信(TCP)

基于TCP Qt的网络通信在标准 C++ 没有提供专门用于套接字通信的类,所以只能使用操作系统提供的基于 C 的 API 函数,基于这些 C 的 API 函数我们也可以封装自己的 C++ 类 , 但是Qt 提供了封装好的套接字通信类:QTcpServer:服务器类,用于监听客户端连接以及和客户端建立连接QTcpServer:服务器类,用于监听客户端连接以及和客户端建立连接这两个套接字通信类都属于网络模块 network ,使用前切记在项目的 .pro文件中添加 network 模块文章目录基于

2022-05-08 11:35:56 7998 26

原创 MySQL数据库之 DDL语句入门

MySQL 入门文章目录MySQL 入门1.SQL 语言概述2. DDL 数据定义语言2.1 DDL操作数据库2.1.1 创建数据库2.1.2 查看数据库2.1.3 修改数据库2.1.4 删除数据库2.1.5 使用数据库2.2 DDL 操作表==2.2.0 数据类型==2.2.0.1 整数类型2.2.0.2 近似数类型2.2.0.3 字符串类型2.2.0.3 日期和时间类型2.2.1 创建表2.2.2 查看表2.2.3 复制表结构2.2.4 修改表2.2.4.1 添加新列2.2.4.2 修改列类型2.2.

2022-05-02 10:49:18 655

原创 C++11 多线程的使用及线程同步

C++线程操作C++11 中提供的线程类 std::thread ,基于此类创建一个新的线程相对简单,只需要提供线程函数和线程对象即可;文章目录C++线程操作1.命名空间 this_thread1.1 get_id()1.2 sleep_for()1.3 sleep_until1.4 yield()2. C++ 线程类2.1构造函数2.2 公共成员函数2.2.1 get_id() 函数2.2.2 join() 函数2.2.3 detach() 函数2.2.4 joinable() 函数2.3 静态

2022-04-25 17:28:10 2412 1

原创 C/C++ 使用 MySQL API 操作 数据库 (API讲解 、案例分享)

C/C++ 对 MySQL API 的使用简介文章目录C/C++ 对 MySQL API 的使用简介1. C/C++ 使用 API介绍2. C/C++ 环境配置和操作示例代码2.1 Mysql环境配置2.2 mysql代码示例希望快速上手的码友可以直接翻到目录的 2.2. C/C++ 环境配置和操作示例代码MySQL 数据库是一个 C/S 结构(客服端 / 服务器),当我们安装好 MYSQL 服务器之后可以通过 客户端访问服务器端的数据 ;这里以 C 语言提供的 API 举例 实现对数据库

2022-04-22 19:29:54 10044 3

原创 两分钟快速了解 Json是什么

Json文章目录Json1.Json数组2.Json 对象3.注意事项JSON 是一种轻量级的数据交换格式。采用独立于编程语言的文本格式来存储和表示数据 。其简洁和清晰的层次结构使得 JSON 成为了理想的数据交换语言;其易于人阅读和编写,同时易于机器解析和生成,可以有效的提高网络传输效率。Json 是一种数据格式 ,和语言无关。基于此种数据格式,常用于:组织数据(数据序列化) ,用于网络传输 ;组织数据(数据序列化),写磁盘文件 实现数据的持久话存储(.json后缀);Json 中主要

2022-04-19 15:57:41 2115 1

原创 C++ 在VS 中使用 JsonCpp 操作 Json 文件

在VS 中使用 JsonCpp文章目录在VS 中使用 JsonCpp1、下载和编译1.1 下载 jsoncpp1.2 cmake工具下载1.3 使用 cmake 生成 VS 项目2、jsoncpp 的使用3、==VS项目案例==3.1、项目配置环境3.2 项目示例json 格式作为一种较为通用的数据存储格式 ,在实际应用中使用的非常频繁。直接操作对应的 json 文件又是一个耗时耗力的过程 ,可以使用其他大佬写的轮子 ,使用开源库方便我们操作 json 文件;在C++ 中使用json 可以使用一

2022-04-19 10:24:01 4314 5

原创 Linux快速入门之 线程同步(16) #重点知识点 ,迈向高手的第一步

线程同步文章目录线程同步1.1线程同步概念1.1.1 为什么需要线程同步1.1.2 同步方式1.2 互斥锁1.2.1 互斥锁函数1.2.2 互斥锁使用1.3 死锁1.4 读写锁1.4.1 读写锁函数1.4.2 读写锁使用1.5 条件变量1.5.1 条件变量函数1.5.2 生产者和消费者模型1.6 信号量1.6.1 信号量函数1.6.2 生产者和消费者1.6.3信号量使用1.1线程同步概念假设有 4 个线程 A、B、C、D,当前一个线程 A 对内存中的共享资源进行访问的时候,其他线程 B, C, D

2022-04-08 16:15:16 119

原创 Linux快速入门之 线程操作 (15) #重点知识点

线程操作1.1 线程概述文章目录线程操作1.1 线程概述1.2 创建线程1.2.1 线程函数1.2.2 创建线程1.3 线程退出1.4 线程回收1.4.1 线程函数1.4.2 回收子线程数据1.使用子线程栈2.使用全局变量3.使用主线程栈区1.5 线程分离1.6 其他线程函数1.6.1 线程取消1.6.2 线程ID比较线程是轻量化的进程,在Linux系统下线程的本质还是进程,进程为系统资源分配的最小单位 , 线程是操作系统调度的最小执行单位。简单了解线程和进程的区别:进程有自己独立的地址空间,

2022-04-01 15:36:26 1295

原创 Linux快速入门之 守护进程 (14)

守护进程文章目录守护进程1.1 进程组1.2 会话1.3 创建守护进程1.4 守护进程的应用守护进程(精灵进程),为Linux系统中的后台服务进程,其生存周期较长 。通常独立于控制终端并周期性执行某种任务或等待某些事件,一般以d为结尾;1.1 进程组多进程的集合就是进程组,该进程组 组长就是进程组中的第一个进程,组长以外的都是普通的成员,每个进程组都有唯一的组ID,进程组的ID和组长的PID是一样的;进程组中的成员是可以转移的,如果当前进程组的成员被转移到其他组或者该进程组中所有进程都退出了,那么

2022-04-01 15:07:47 739

原创 Linux快速入门之 信号(13)

信号文章目录信号1.1 信号概述1.1.1 信号编号1.1.2 查看信号信息1.1.3 信号的状态1.2 信号相关函数1.2.1 kill/raise/abort 函数1.2.2 定时器1.3 信号集1.3.1 阻塞 /未决信号集5.3.2 信号集函数1.4 信号捕捉1.4.1 signal 函数1.4.2 sigaction 函数1.5 SIGCHLD 信号1.1 信号概述Linux中的信号是一种信号机制,其本质是一个整数,不同的信号对应不同的值,由于信号的结构简单所以天生不能携带很多信息量;但是信

2022-03-25 15:27:45 2547

原创 Linux快速入门之 内存映射、共享内存(12)

内存映射 及 共享内存文章目录内存映射 及 共享内存1.内存映射(mmap)1.1 创建内存映射区1.2 进程间通信1.2.1 有血缘关系1.2.2 没有血缘关系1.3 拷贝文件2.共享内存2.1 创建/打开共享内存2.1.1 shmget 函数2.1.2 ftok 函数2.2 关联和解除关联2.2.1 shmat 函数2.2.2 shmdt 函数2.3 删除共享内存2.3.1 shmctl 函数2.3.2 相关shell命令2.3.3 共享内存状态2.4 进程间通信2.5 **shm 和mmap区别**

2022-03-19 15:27:29 1904

原创 Linux快速入门之 管道(11)

管道文章目录管道1.1 匿名管道1.1.1 创建匿名管道1.1.2 进程间通信1.2 有名管道1.2.1 创建有名管道2.2.2 进程间通信1.3.管道的读写行为管道是进程间通信的一种方式,管道的本质是在内核中的一块内存(也叫内核缓冲区),这块缓冲区中的数据存储在一个环形队列中,由于管道在内核区,我们不能直接对其操作;管道是通过队列维护,管道中数据具有以下特点:管道对应的内核缓冲区大小是固定的,默认4k;管道分为两部分:读端 和 写端(队列的两端),数据从写端进入管道,从读端流出管道

2022-03-19 15:15:47 1524

原创 linux快速入门之进程基础(10)

文章目录1.进程控制1.1 进程基础知识概述1.1.1 并发和并行1.1.2 PCB1.1.3 进程的状态1.1.4 进程命令1.2 进程创建1.2.1 函数1.2.2 fork() 详解1.3 父子进程1.3.1 父子进程执行位置1.3.2 循环创建多个子进程1.3.3 终端显示问题1.3.4 进程通信(错误尝试)1.4 exec 族函数1.4.1 execl() 函数1.4.2 execlp() 函数1.4.3 exec族函数使用1.5 进程控制1.5.1 结束进程1.5.2 孤儿进程1.5.3 僵

2022-03-12 11:52:04 1063

原创 QT 创建并调用 动态链接库Dll

QT操作动态链接库自定义目录QT操作动态链接库1.新建动态链接库2.调用动态链接库为了提高代码的复用性,实现模块化开发,需要对一些常用函数进行封装,可以通过调用共享库的方式实现;本教程以Qt Creater编译器为例,创建并调用动态库;如果没有导入库文件(.lib),而只有头文件(.h)与动态连接库(.dll)时,我们才须要显示调用,若是这三个文件都全的话,便可使用简单方便的隐式调用;1.新建动态链接库第一步: 新建项目:Library ,选择C++库类型选择:共享库选择 QtCore

2021-12-29 20:56:00 5891

原创 Linux快速入门之 GDB调试 (09)

9.GDB调试文章目录9.GDB调试9.1 调试前准备9.2 启动 推出 传参 gdb9.2.1 启动gdb9.2.2 命令行传参9.2.3 gdb 中启动 、退出9.3 查看代码9.3.1 当前文件夹9.3.2 切换文件9.3.2 修改默认查看行数9.4 断点操作9.4.1 设置断点9.4.2 查看断点9.4.3 删除断点9.4.4 设置断点状态9.5 调试命令9.5.1 手动打印变量信息9.5.2 自动打印信息9.6 单步调试gdb 是用来调试解决bug的工具 ,GDB是一套字符界面的程序集,可以

2021-12-04 22:04:15 1911

原创 Linux快速入门之 make命令及Makefile编写 (8)

8.Makefile文章目录8.Makefile8.1 makefile语法8.2 运行原理8.2.1 规则的执行顺序8.2.2文件的时间戳8.2.3 自动推导8.3 变量8.3.1 自定义变量8.3.2 预定义变量8.3.3 自动变量8.4 模式匹配8.5 函数8.5.1 wildcard 函数8.5.2 patsubst 函数首先需要先了解什么是make工具 , make命令工具是用来解释makefile文件的命令工具。当编译的项目中的文件过多时,如果使用GCC 编译一个个编译是十分繁琐的过程

2021-12-04 21:59:40 1561

原创 Linux快速入门之 静态库和动态库 (07)

文章目录7.静态库和动态库7.1 Linux下静态库7.1.1生成静态库7.1.2静态库使用7.2 Linux下动态库7.2.1 生成动态库7.2.2 制作动态库7.2.3 动态库的使用7.2.4 动态库无法加载问题7.静态库和动态库程序中调用的库分为: 静态库 、动态库 ,在Linux和Windows中虽然库文件的格式和后缀有所不同,但是其工作原理是一样的,(编译好的二进制格式的源文件)使用库文件时还需要这些库中提供的API函数的声明(头文件),添加到项目中便可以使用。使用库文件的目的:为了使

2021-11-28 14:07:11 670 2

原创 linux快速入门之工具使用:Vim 、Gcc (05 、06)

文章目录Linux 工具使用:Vim 、 GCC5.vim使用5.1vim的模式5.2 命令模式操作5.3 末行模式操作6.gcc6.1 gcc运行流程6.2 gcc 常用参数6.3 多文件编译Linux 工具使用:Vim 、 GCC5.vim使用vim是Linux系统里的一款文本编辑器,当然也可以选择vscode配置编程环境 ,或者使用vs2019使用ssh技术在windows下编程,发送到Linux下编译。这里简单介绍纯粹的vim编辑器的使用方法#Ubuntu 中安装 vim$sud

2021-11-28 13:58:24 1695 1

原创 Opencv - python快速入门

Opencv - python1. 图像的IO操作1.1 读取图像1.APIcv.imread()参数:要读取的图像读取方式的标志cv.IMREAD*COLOR:以彩色模式加载图像,任何图像的透明度都将被忽略。这是默认参数。cv.IMREAD*GRAYSCALE:以灰度模式加载图像cv.IMREAD_UNCHANGED:包括alpha通道的加载图像模式。可以使用1、0或者-1来替代上面三个标志参考代码import numpy as npimport

2021-11-23 14:43:55 2847

原创 Linux快速入门之压缩命令(04)

文章目录4.压缩命令4.1 tar命令4.2 zip压缩命令4.3 rar 命令4.4 xz命令4.压缩命令对于数据压缩和解压在windows系统使用解压软件十分方便,在Linux中 Ubuntu等发行版也可通过图形化操作(提升)进行压缩/解压缩。但在某些发行版中没有对应图形化操作,需要使用命令行直接操作文件。Linux常见的压缩格式有 : .tar.gz 、 .tgz 、 .tar.bz2 、.zip 、.tar.xz4.1 tar命令在Linux系统中自带两个压缩工具 gzip 、bzip2

2021-11-21 16:47:17 984

原创 Linux快速入门之查找命令(03)

文章目录3.查找命令3.1 find 查找(常用)3.1.1文件名(- name)查找3.1.2文件类型(- type)查找3.1.3文件大小(- size)查找3.1.4目录层级3.1.5 同时执行多个操作(find高级操作)3.2 grep 查找3.3 locate3.查找命令使用Linux系统时时常需要查找文件 ,但是我们往往不能记住文件的确切路径,为了方便查找,Linux系统提供了用于搜索的命令对于简单查找 可以使用 locate 、 which 命令对于复杂查找 可以使用 find 、gr

2021-11-21 16:41:52 645

原创 Linux快速入门之用户管理(02)

文章目录用户管理命令2.1切换用户2.2 添加 / 删除 用户2.3添加 / 删除 用户组2.4 修改密码用户管理命令给普通用户默认是没有使用管理员权限( 添加 sudo) ,普通用户使用管理员权限是很危险的,实际使用中小心使用#给普通用户 添加 管理员权限$ sudo 各种命令2.1切换用户Linux系统可以同时登录多个用户,允许多用户之间切换 ,使用su 或 su - 命令su 命令 : 只切换用户 ,当前目录不改变su - 命令 : 切换用户 ,且会自动切换为当前家目录exi

2021-11-21 16:34:49 533

原创 Linux快速入门之文件操作(01)

Linux 小白快速入门 01文章目录Linux 小白快速入门 011.文件管理命令1.1.cd命令1.2 ls命令1.3 用户类型 、文件权限1.4 创建/删除目录1.5 拷贝 / 移动 命令1.6 软/硬链接1.文件管理命令Linux 目录 :万物皆文件,linux系统只有文件概念\ 命令严格区分大小写在 linux 中根目录的子目录结构相对是固定的 (名字固定), 不同的目录功能是也是固定的bin: binary, 二进制文件目录,存储了可执行程序boot: 存储了开机相关的设置d

2021-11-14 21:32:33 1282 5

原创 网络通信Socket(Linux)

网络通信之套接字Socket预备知识根据自身基础选择性查看文章目录网络通信之套接字Socket预备知识:IP 及 端口网络模型字节序IP地址转换虚拟地址空间文件描述符sockaddr结构体 / sockaddr_insocket 编程TCP通信流程socket常用函数详解服务器端代码实现客户端代码实现预备知识:IP 及 端口IP: 本质为一个整型数,表示计算机在网络中的地址,IP协议有两个:IPv4 和 IPv6​ IPv4协议:(目前用的最多)32位整型数表示,4个字节 ,也可使用点分十进..

2021-11-12 16:29:36 3517 3

原创 05 线程及线程模型

线程、多线程模型1.什么是线程?为什么引入线程?答:有的进程需要 ”同时“ 做很多事,而传统的进程只能串行的执行一系列程序,一个进程可分细为多个线程为此,引入 ”线程“,来增加并发度。,引入线程后,线程成为了程序执行流的最小单位2.引入线程机制后有什么变化?3.线程由那些重要的属性?线程的属性:线程是处理机调度的单位多CPU计算机中,各个线程可占用不同的CPU每个线程都有一个线程ID 、线程控制块(TCB)线程也有就绪、阻塞、运行三种基本状态线程几乎不拥有系统资源由于共享内存地址,

2021-11-07 20:52:08 93

原创 04操作系统--进程通信

进程通信什么是进程通信?进程通信指的进程之间的信息交换,进程是分配资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间互相独立。为了保证安全,一个进程不能直接访问另一个进程的地址空间 但是进程之间的通信有是必须的,因此提供了三种方式:共享存储消息传递管道通信共享存储两个进程对共享空间的访问必须是互斥的(互斥访问通过操作系统提供的工具实现)管道通信“管道” 是指用于连接读写进程的一个共享文件,又叫 pipe文件(内存中开辟一个大小固定的缓冲区)管道只能采用***半双工

2021-11-07 20:38:58 135

原创 03 操作系统之 进程

操作系统之进程文章目录操作系统之进程进程的基础进程的状态及转换进程控制进程的基础进程传统的定义:进程是程序的一次执行过程进程是一个程序及其数据在处理机上顺序执行时所发生的活动进程是具有独立功能的程序在数据集合上运行的过程,他是系统进行资源分配和调用的独立单位进程是进程实体的运行过程(进程是动态的,进程实体静态),是系统进行资源分配和调度`的一个独立单位,进程 强调 动态性进程的组成PCB:进程的管理层(操作系统)所需的数据都在PCB数据段:程序本身的运行所需的数据进程的组织进程

2021-11-07 19:45:05 145

原创 C++ 中 const 和 static 关键字(定义,用途)

C++ 中 const 和 static 关键字(定义,用途)文章目录C++ 中 const 和 static 关键字(定义,用途)1、static 定义及用途1、修饰局部变量:2、修饰全局变量:3、修饰函数:4、修饰类 :2、const 定义及用途1、const修饰基础数据类型2、修饰指针变量 和 引用变量3、const 修饰普通函数const修饰函数参数const 修饰函数返回值4、const 在类中的用法1、static 定义及用途static 作用: 控制变量的存储方式 和 可见性1、修饰局

2021-11-05 15:32:30 459

原创 define、const、typedef、inline 使用方法

define、const、typedef、inline 使用方法1. const 和 #define 的区别#define Max 100const int Max = 100;#define 宏在预处理阶段起作用,简单的文本替换 ,没有类型检查。 而const 有数据类型,需要进行判断,可以避免一些低级错误,在编译、链接中起作用;#define 预处理后,占用代码段空间,const 占用数据段空间;#define 可以通过 #undef 取消某个符号的定义,经行重定义,co

2021-11-04 21:41:33 295

原创 02操作系统的运行机制和体系

操作系统的运行机制和体系预备知识1. 什么是指令?答: “指令” 就是处理器能识别、执行的最基本命令​ 例: C语言 -> 机器语言指令 , 一个高级语言代码翻译可能会对应多条指令指令分为: 特权指令(内存清零) 、非特权指令(普通运算指令)2.CPU 如何判断当前是否可执行特权指令?答: CPU两种状态:用户态 (目态), 核心态 (管态)​ 当CPU为用户态,只能执行非特权指令 , CPU核心态执行 特权指令、非特权指令。CPU状态由程序状态寄存器(P

2021-11-04 19:18:39 283

原创 01操作系统简介

操作系统什么是操作系统?是计算机硬件和应用之间的一层软件​ 方便我们使用,如使用显存​ 高效的使用硬件,如多开终端(窗口)操作系统的特征: 并发、共享、虚拟、异步并发: 指两个或多个事件在同一时间间隔内发生,这些事件宏观上是同时发生的,但是微观上是交替发生的​ **并行: ** 指两个或多个事件在同一时刻同时发生。操作系统的并发性 指计算机系统中同时存在多个运行着的程序。共享: 及资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用​ 两种

2021-11-04 17:19:18 112

原创 Socket 套接字通信(及TCP介绍)

Socket 套接字通信全员干货~,知识点相对底层!文章目录Socket 套接字通信1.TCP/IP 基础知识1.1TCP的三次握手 (面试重点)1.2 TCP的四次挥手(面试重点)网络通信基础TCP服器端通信流程客户端的通信流程1.TCP/IP 基础知识TCP(传输控制协议) 是一种面向连接的、可靠的、基于字节流的通信协议,数据在传输前要建立连接,传输完毕后还要断开连接。客户端在收发数据前要使用 connect() 函数和服务器建立连接。建立连接的目的是保证IP地址、端口、物理链路等正确无误

2021-10-27 19:58:07 2659 2

原创 c++ 智能指针

C++ 智能指针为什么需要智能指针?智能指针是什么?智能指针其作⽤是管理⼀个指针,避免咋们程序员申请的空间,在函数结束时忘记释放,造成内存泄漏这种情况滴发⽣。(避免new 后 忘记 delete 导致内存泄漏)然后使⽤智能指针可以很⼤程度上的避免这个问题,因为智能指针就是⼀个类,当超出了类的作⽤域是,类会⾃动调⽤析构函数,析构函数会⾃动释放资源。所以智能指针的作⽤原理就是在函数结束时⾃动释放内存空间,不需要⼿动释放内存空间。#define _CRTDBG_MAP_ALLOC

2021-10-25 12:37:42 142

原创 Qt 多线程案例:方式一

文章目录Qt 多线程案例:方式一多线程使用:方式一案例分享Qt 多线程案例:方式一多线程使用:方式一1.创建一个线程类的子对象,继承QThread:class MyThrad:public QThread{ ......}2.重写父类的run()方法(虚函数),在该函数内部编写子线程要处理的具体业务流程class MyThread:public QThread{ protected: void run() { .........; }}3.在主线程中创建子线程对象,n

2021-10-16 11:23:06 335

原创 Qt 多线程基础及线程使用方式

文章目录Qt 多线程操作2.线程类QThread3.多线程使用:方式一4.多线程使用:方式二5.Qt 线程池的使用Qt 多线程操作应用程序在某些情况下需要处理比较复杂的逻辑, 如果只有一个线程去处理,就会导致窗口卡顿,无法处理用户的相关操作。这种情况下就需要使用多线程,其中一个线程处理窗口事件,其他线程进行逻辑运算,多个线程各司其职,不仅可以提高用户体验还可以提升程序的执行效率。Qt中使用多线程需要注意:Qt的默认线程为窗口线程(主线程):负责窗口事件处理或窗口控件数据的更新;子线程负责后台的业

2021-10-15 21:31:36 29430 8

空空如也

空空如也

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

TA关注的人

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