自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

芒种、的博客

种一棵树最好的时间是十年前,其次是现在

  • 博客(217)
  • 资源 (6)
  • 收藏
  • 关注

原创 Qt容器类

用来存储其他的类或者数据。存储基础的int,float类型,也可以是QString,QDate类型。Qt的容器类比STL(标准模板库)中的容器类更轻巧、安全和易于使用。Qt的容器类分为(sequential containers)和:通过元素在容器中的存储和访问。。:通过和读取元素。。

2024-01-29 21:53:40 609

原创 Qt全局定义

这个宏展开为数值形式 0xMMNNPP (MM = major, NN = minor, PP = patch) 表示 Qt 编译器版本,例如 Qt 编译器版本为 Qt 5.9.1,则 QT_VERSION 为 0x050901。这个宏常用于条件编译设置,根据 Qt 版本不同,编译不同的代码段。和在使用和设计共享库时,用于导入导出库的内容。debuginfowarningcritical和while(1)类似,其底层使用for(;;

2023-11-05 19:13:26 482

原创 详解floor函数、ceil函数和round函数

即就是如果数是2.2 ,那向下取整的结果就为2.000000。即就是如果数是2.2 ,那向上取整的结果就为3.000000。成功:返回一个double类型的数,此数默认有6位小数。成功:返回一个double类型的数,此数默认有6位小数。原型:double floor(doube x);原型:double round(doube x);原型:double ceil(doube x);即就是如果数是2.2 ,那四舍五入的结果就为2。功能:把一个小数向下取整。功能:把一个小数向上取整。功能:把一个小数四舍五入。

2023-01-12 15:38:55 3020 1

转载 protobuf的编译和使用【Windows平台】

一、简介protocol buffers 是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。二、优点Protocol Buffers 是一种灵活,高效,自动化机制的结构数据序列化方法-可类比 XML,但是比 XML 更小(3 ~ 10倍)、更快(20 ~ 100倍)、更为简单。你可以定义数据的结构,然后使用特殊生成的源代码轻松的在各种数据流中使用各种语言进行编写和读取结构数据。你甚至可以更新数据结构,而不破坏由旧数据结构编译的已部署程序。三、前期

2022-03-11 11:04:27 1738

转载 C++ 用逗号分割字符串

一,用逗号分割字符串#include <iostream>using namespace std;int main(){ std::stringstream ss(inputStr); std::string str; while (getline(ss, str, ',')) { //do something }}

2021-07-12 14:44:55 5313

原创 Kafka:01---消息队列Kafka简介

一、定义Kafka 是一个分布式的基于发布/订阅的消息队列(Message Queue),主要用于大数据实时处理。二、消息队列1. 同步处理

2021-05-09 13:31:50 268 2

原创 Socket网络通讯简单使用

一、五层网络模型OSI层功能TCP/IP协议应用层文件传输、电子邮件、文件服务HTTP、FTP、SMTP、DNS、Telnet等传输层提供端对端的接口TCP、UDP网络层为数据包选择路由IP、ICMP等数据链路层传输有地址的帧、错误检测功能ARP等物理层物理媒体1000BASE-SX等...

2021-04-24 11:41:52 180

转载 MongoDB C Driver使用教程

一、安装有关特定的平台上安装MongoDB C驱动程序的详细说明,请参官方文档:http://mongoc.org/.MongoDB C 驱动程序的安装、编译:http://www.cnblogs.com/oloroso/p/5740431.html二、启动MongoDB要运行本教程中的例子,MongoDB 必须安装运行在本地主机(localhost),且使用默认端口27017。要检查MongoDB是否启动并运行,使用MongoDB Shell连接就知道了。$ mongo --ho

2021-04-13 22:20:32 549

转载 C++解析Json---Json-cpp使用

一、Json简介JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,和xml类似,详情可参考:https://blog.csdn.net/weixin_38739598/article/details/115218762本文主要对VS2008中使用Jsoncpp解析json的方法做一下记录。二、Json-cpp下载Json-cpp是个跨平台的开源库,下载地址:http://sourceforge.net/projects/jsoncpp/。三、使用

2021-04-13 16:08:33 2421

转载 ZeroMQ:04---ZeroMQ上下文详解

一、上下文的创建与退出ZeroMQ应用程序总是从创建一个上下文开始,然后使用它来创建套接字。上下文是指:在单个进程中所有套接字的容器,并充当inproc套接字的传输工具,这是在一个进程中连接线程的最快办法。单个进程中可以有多个上下文,不会出错,它们彼此之间都是独立的ZeroMQ实例,因此你需要自己做好处理。但是一般使用规则为:在你的主代码开始处执行一个zmq_ctx_new()、在代码最后执行一个zmq_ctx_destroy()。父子进程之间的上下文:父子进程之间一般都要拥有自己的上下文。

2021-04-12 22:01:28 403 1

转载 ZeroMQ:04---ZeroMQ对字符串处理

一、ZeroMQ对字符串的理解除了字符串的大小之外,ZeroMQ对你发送以及接收的数据一无所知,其只负责发送和接收。因此字符串格式化的责任就交给程序编写者。二、字符串格式处理需要达成一致1. 演示说明在C/C++中,字符串是用空字节来终止的,发送时可以使用额外的空字节来发送字符串。例如,下面发送一个6个字节的“Hello”字符串,因为其尾部默认含有一个空字节。zmq_msg_init_data(&request, "Hello", 6, NULL, NULL);在Pytho

2021-04-12 21:05:58 282

转载 ZeroMQ:03---ZeroMQ的版本变更、zmq_version()函数

一、ZeroMQ的版本截止到目前为止(2020-05-08),ZeroMQ的最新版本为4.1.7。1. 版本变更下面介绍的是ZeroMQ从v2.2升级到v3.2的过程,因为是读书笔记,所以可能比较过时。在2012年初,ZeroMQ v3.2变得足够稳定,下面是v3.2相对于v2.2的一些变化:①发布-订阅过滤如今发生在发布方,而不是在订阅方完成。这在许多发布-订阅用例中显著提高了性能。②大部分的API都是向下兼容的,只有一小部分进入v3.0的变化没有考虑到破坏现有代码的成本。zmq_se

2021-04-12 19:20:46 465

原创 MongoDB:05---MongoDB索引

一、索引概述索引支持在MongoDB中高效的执行查询。如果没有索引,MongoDB必须执行全集合扫描,即扫描集合中的每个文档,以选择与查询语句匹配的文档。这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可能要花费几十秒深圳几十分钟,这对网站的性能是非常致命的。如果查询存在适当的索引,MongoDB可以使用该索引限制必须检查的文档数。索引是特殊的数据结构,它以易于遍历的形式存储集合数据集的一小部分。索引存储特定字段或一组字段的值,按字段值排序。MongoDB索引使用B树数据结构二

2021-04-11 22:58:03 86

原创 MongoDB:04---MongoDB统计查询、分页查询、排序查询、比较查询、条件查询

一、文档的查询1. 统计查询统计查询使用count()方法,语法如下:db.collection.count(query, options)参数类型说明querydocument查询选择条件optionsdocumnet可选。用于计数的额外选项例如: 查询所有记录数db.collection.count()例如:按条件统计记录数,统计userid为1003的记录条数db.collection.count({userid:"1003"})提

2021-04-11 19:47:00 1194

原创 MongoDB:03---MongoDB数据库创建、集合操作、文档操作

一、基本命令1.创建数据库如果数据库不存在则创建use 数据库名称2. 查看有权限查看的所有的数据库show dbs 或 show databases注意:在MongoDB中,集合只有在内容插入后才会创建!也就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。3. 查看当前正在使用的数据库MongoDB中默认的数据库为test,如果你没有选择数据库,集合将存放在test数据库中。db数据库名可以是满足以下条件的任意UTF-8字符串。不能是空字符串("")

2021-04-11 11:29:23 1209

原创 MongoDB:02---MongoDB安装、启动

一、MongoDB官网下载MongoDB提供了可用于32位和64位系统的预编译二进制包,你可以从MongoDB官网下载安装:https://www.mongodb.com/try/download/community根据上图所示:温馨提示:版本的选择MongoDB的版本命名规范如:x.y.zy为奇数时表示当前版本为开发版,如:4.3.12y为偶数时表示当前版本为稳定版,如:4.4.5z是修正版本号,数字越大越好。二、MongoDB安装下载 .msi 文件,下载后双击该文件

2021-04-10 15:48:39 522

原创 MongoDB:01---MongoDB简介

一、MongoDB简介MongoDB是一个开源、高性能、无模式的文档型数据库,当初的设计就是用于简化开发和方便扩展,是NoSQL数据库产品的一种,是最像关系型数据库(MySQL)的非关系型数据库。它支持的数据结构非常松散,是一种类似于Json的格式叫BSON,所以他既可以存储比较复杂的数据类型,又相当的灵活。MongoDB中的记录是一个文档,它是由字段和值对组成的数据结构。MongoDB文档类似于Json对象。即一个文档就是一个对象。字段的数据类型是是字符型,它的值除了使用基本的一些类型外,还可以包

2021-04-08 21:43:54 158

转载 VS2015远程调试

在PayPal支付时,PayPal回调函数一直报错,本地没有外网IP,没有办法在本地调试,需要远程调试:1.找到远程调试的文件夹:找到对应的服务器的型号:64位还是32位的,我们服务器是64位的,把文件夹复制到服务器:2.在服务器中运行:msvsmon.exe选择 工具-》选项,修改成 无身份验证,允许任何用户进行调试,(这样有安全隐患,所以调试完成后一定要及时关掉)确定后显示如下:此时服务器已经可以远程调试了。服务器的代码版本必须是Debug版的,必须要有.p

2021-04-08 11:25:38 915

原创 Json简单使用

一、Json是什么Json ,全称是 JavaScript Object Notation, 即JavaScript 对象标记法Json 是一种轻量级、基于文本的、可读的格式。Json无论对于人,还是对于机器来说,都是十分便于阅读和书写,而且相对于XML(另一种常见的数据交换格式),文件更小,因此迅速成为网络上十分流行的交换格式。Json格式具有长时间的稳定性,10年前写的文件,10后也能用,没有任何的兼容性问题。二、Json语法规则Json 的语法规则十分简单,总结起来有:数组(Arr

2021-03-25 21:58:03 252

转载 ZeroMQ:02---Linux下ZeroMQ的编译安装与运行(Ubuntu为例)

一、安装ZeroMQ前的准备1. 安装必须的库安装ZeroMQ之前先安装下面的库sudo apt-get install libtoolsudo apt-get install pkg-configsudo apt-get install build-essentialsudo apt-get install autoconfsudo apt-get install automake2. 安装Sodium加密库(可选的)Sodium是一个流行、易于使用的软件库。主要用于加密、解密、

2021-03-24 22:45:11 1657

转载 ZeroMQ:01---消息队列ZeroMQ简介

一、ZeroMQ概述ZeroMQ(又名ØMQ,MQ,或zmq)看起来像一个可嵌入的网络库,但其作用就像一个并发框架ZeroMQ类似于标准Berkeley套接字,其提供了各种传输工具,如进程内、进程间、TCP和组播中进行原子消息传送的套接字你可以使用各种模式实现N对N的套接字连接,这些模式包括:扇出、发布-订阅、任务分配、请求-应答ZeroMQ的速度足够快,因此可充当集群产品的结构ZeroMQ的异步I/O模型提供了可扩展的多核应用程序,用异步消息来处理任务ZeroMQ核心由C语言编写,支持C、

2021-03-24 22:19:25 347

转载 我终于搞懂了TCP的三次握手和四次挥手(图片案例详解)

一.TCP简介TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的通信协议,数据在传输前要建立连接,传输完毕后还要断开连接。客户端在收发数据前要使用 connect() 函数和服务器建立连接。建立连接的目的是保证IP地址、端口、物理链路等正确无误,为数据的传输开辟通道。TCP建立连接时要传输三个数据包,俗称三次握手(Three-way Handshaking)二.TCP数据报结构①序号:Seq(Sequence Numb

2021-03-15 16:44:10 332

转载 Redis主从复制

一、概述  我通过持久化功能,Redis保证了即使在服务器重启的情况下也不会丢失(或少量丢失)数据,但是由于数据是存储在一台服务器上的,如果这台服务器出现故障,比如硬盘坏了,也会导致数据丢失。  为了避免单点故障,我们需要将数据复制多份部署在多台不同的服务器上,即使有一台服务器出现故障其他服务器依然可以继续提供服务。  这就要求当一台服务器上的数据更新后,自动将更新的数据同步到其他服务器上,这时候就用到了Redis的主从复制。  Redis提供了复制(replication)功能来自动实现多台re

2021-03-04 17:23:51 82 1

转载 Redis的发布订阅

一、概述Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。Redis 客户端可以订阅任意数量的频道。二、关系图下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:三、实例以下实例演示了发布订阅是如何工作的,需要开启两个

2021-03-04 11:05:44 76 1

转载 Redis 事务

一、事务的概念可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序的串行化执行而不会被其它命令插入,不许加塞。二、事务的作用一个队列中,一次性、顺序性、排他性的执行一系列命令。...

2021-03-03 16:02:45 76

转载 Redis 持久化 - AOF

Redis提供两种持久化方式,RDB和AOF;与RDB不同,AOF可以完整的记录整个数据库,而不像RDB只是数据库某一时刻的快照;那么AOF模式为什么可以完整的记录整个数据库呢?一、原理原理 :在AOF模式下,Redis会把执行过的每一条更新命令记录下来,保存到AOF文件中;当Redis需要恢复数据库数据时,只需要从之前保存的AOF文件中依次读取命令,执行即可 eg.二、Aof保存的是appendonly.aof文件三、配置位置四、AOF启动/修复/恢复1、正常恢复启动:设置Yes修

2021-02-26 16:08:40 66

转载 Redis持久化-RDB(二)

Redis是什么?redis是一个开源的key-value存储系统,和memcached类似,它支持存储的value类型相对更多 。包括String list set zset hash,这些数据类型都支持push/pop add/remove及取交集并集和差集及更丰富的操作这些操作都是原子性的,并且,redis支持各种不同方式的排序,与memcached一样,为了保证效率,数据都是存储在内存中的,区别就是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件并且在此基础上实现mas

2021-02-25 16:27:51 69

转载 Redis 持久化 - RDB(一)

Redis 中的数据持久化策略(RDB)Redis 是一个内存数据库,所有的数据都直接保存在内存中,那么,一旦 Redis 进程异常退出,或服务器本身异常宕机,我们存储在 Redis 中的数据就凭空消失,再也找不到了。Redis 作为一个优秀的数据中间件,必定是拥有自己的持久化数据备份机制的,redis 中主要有两种持久化策略,用于将存储在内存中的数据备份到磁盘上,并且在服务器重启时进行备份文件重载。RDB 和 AOF 是 Redis 内部的两种数据持久化策略,这是两种不同的持久化策略,一种是基于内存

2021-02-25 16:26:22 214

原创 Redis配置文件的介绍

参考博客:Redis详解(二)------ redis的配置文件介绍

2021-02-25 09:50:09 65

转载 Linux 查看文件内容的5种方式

1. more指令 —— 分页显示文件内容more指令会以一页一页的形式显示文件内容,按空白键(space)显示下一页内容,按Enter键会显示下一行内容,按 b 键就会往回(back)一页显示,其基本用法如下:more file1 查看文件file1的文件内容;more -num file2 查看文件file2的内容,一次显示num行;more +num file3 查看文件file3的内容,从第num行开始显示;2. less指令 ——

2021-02-24 22:20:20 8873 2

原创 Redis 数据类型

一、Redis 键(key)Redis 键命令用于管理 redis 的键。在redis里面,除了"\n"和空格 不能作为名字的组成内容外,其他内容都可以作为key的名字部分。名字长度不做要求。1. kyes键操作命令描述EXISTS key测试指定 key 是否存在DEL key1 key2 …keyN删除指定的keyTYPE key返回给定的value 类型KEYS pattern返回匹配指定模式的所有key 列:KEYS n*,匹配所有以n开始的ke

2021-02-24 16:11:35 182

原创 C++服务框架

一、服务框架初步1. 目录结构规划(make编译)注意:不管是目录还是文件,文件名一律不要带空格和用中文,最好的方式:字母、数字、下划线规定项目的主目录,例如:nginxinclude目录:专门存放各种头文件app目录:放主应用程序.c(main()函数所在的文件)以及一些比较核心的文件。2.1 link_obj:临时目录,会存放临时的.o文件,这个目录不手动创建,后续makefile脚本来创建。2.2 dep:临时目录,会存放临时的.d开头的依赖文件,依赖文件能够告知系统哪些相关的文件

2021-02-05 20:56:38 1733

原创 守护进程详解

一、普通进程运行观察代码示例:#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <signal.h>int main(int argc, char *const *argv){ printf("进程开始执行!\n"); while (1) { sleep(1); //休眠1秒 //printf("休息1秒,

2021-02-01 22:37:07 5001

原创 fork()函数详解

一、fork()函数简单认识作用:用来创建进程。进程的概念:一个可执行程序,执行起来就是一个进程,再执行起来一次,它就又是一个进程(多个进程可以共享同一个可执行文件)。程序执行的一个实例。在一个进程(程序)中,可以用fork()创建一个子进程,当该子进程创建时,它从fork()指令的下一条(或者说从fork()的返回处)开始执行与父进程相同的代码。fork()函数产生了一个和当前进程完全一样的新进程 ,并和当前进程一样从fork()函数里返回。原来一条执行通路(父进程),现在变成两条(父进程 +

2021-01-31 20:51:58 20114 1

原创 Unix-Linux体系结构、信号编程初步

一、Unix/Linux操作系统体系结构1. 两种状态类Unix操作系统体系结构分为两个状态 :1. 用户态,2. 内核态操作系统/内核:用来控制计算机硬件资源,提供应用程序运行的环境;我们写的程序,他要么运行在用户态,要么运行在内核态。一般来讲运行在用户态;当程序要执行 一些特殊代码的时候,程序就可能切换到内核态,这种切换由操作系统控制,不需要人为介入;换种角度理解:用户态:最外圈应用程序的活动空间;系统调用:就是一些函数(系统函数),你只需要调用这些函数;shell: bash(born

2021-01-30 22:00:08 102

原创 信号的概念,认识,处理动作

一、信号的基本概念1. 概念信号 :通知(事情通知),用来通知某个进程发生了某一个事情;事情,信号都是突发事件, 信号是异步发生的,信号也被称呼为“软件中断”信号名字,都是以SIG开头,上节课SIGHUP(终端断开信号);UNIX以及类(类似)UNIX操作系统(linux,freebsd,solaris);支持的信号数量各不相同。10-60多个之间;信号既有名字,其实也都是一些数字,信号是一些正整数常量;信号就是宏定义(数字,从1开始)#include <signal.h>find

2021-01-30 21:15:43 2049

原创 VMWare安装和配置固定IP

一、VMWare安装虚拟机安装地址:VMware虚拟机下载及安装教程二、虚拟机安装Ubuntu安装参考:VMware虚拟机快速安装Ubuntu教程三、VmTools的安装和使用1. 功能可以直接粘贴命令在windows 和 linux系统之间可以设置windows和linux的共享文件夹...

2021-01-28 08:37:51 219

原创 Nginx整体结构、进程模型

一、Nginx整体结构1. master进程和worker进程概览(父子进程关系)第一列第二例第三列UID,进程所属用户ID进程ID(PID),进程唯一标识父进程ID (PPID)2. nginx进程模型1个master进程和1 到 多个worker 进程这种工作机制来对外服务的;这种工作机制保证了 nginx能够稳定、灵活的运行。master进程责任:监控进程,不处理具体业务,专门用来管理和监控 worker进程。worker进程责任:主要用来干活的,和用户进

2021-01-21 23:02:08 130

原创 Nginx简介、安装和使用

一、Nginx简介Nginx是由C语言开发(不是C++),并且开源。Nginx号称百万级别的TCP连接,非常稳定,热部署(运行的时候能升级),高度模块化设计,自由许可证。高并发:Linux epoll技术,Windows IOCP(完成端口)技术参考博客:Nginx简介参考博客:Nginx详细介绍二、Apache和Nginx比较参考博客:Apache和Nginx比较...

2021-01-20 22:59:53 194

原创 C++ 日志模块打印

日志模块头文件#pragma once#define LOG_PRINT(printLev, format, ...) LogPrinter::LogPrint(printLev, __FILE__, __LINE__, format, __VA_ARGS__);#define LOG_PRINT_INFO(format, ...) LogPrinter::LogPrint(PRINT_LEV_INFO, __FILE__, __LINE__, format, __VA_ARGS__);#def

2021-01-15 10:23:23 955 4

AutoUpdate.zip

Qt框架编写,实现软件版本与服务器端版本库比较,如果有新版本则自动更新。压缩包包括服务器端示例。

2021-02-26

Wireshark-win64-3.0.2.zip

Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。

2020-07-06

C++中文帮助文档.zip

API手册、可以帮助你快速查阅你要使用的函数、里边还有函数的用法及介绍 、还有一些别人的经典例子供你参考

2020-07-06

C++BOOST中文帮助文档.zip

Boost库是为C++语言标准库提供扩展的一些C++程序库的总称,由Boost社区组织开发、维护。Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能。

2020-07-06

Dbgview.zip

Debugview是Sysinternals公司出版的系列调试工具。运用debugview 可以程序可以轻松定位到源文件的某一行,工具用户VC调试代码十分有用,操作简单,能更加方便地查找处错误原因。

2020-07-06

空空如也

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

TA关注的人

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