自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 C++11 委托构造函数(delegating constructor)

文章目录1. 委托构造函数2.3.4.1. 委托构造函数     委托构造函数(delegating constructor) 是C++11中新引入的一个新特性. 它是对C++98版本中的构造函数的一个改进. 所谓"委托构造函数", 就是使用它所归属类的其他构造函数来执行它自己的初始化操作. 换言之, 就是它把自身需要做的一些初始化操作任务交付给了其他的构造函数来完成.      为了让上述的描述更加通俗易懂, 不妨结合下图来理解C++11中的委托构造函数新特性的功能. 如图1, 班主任要求A、B、C

2020-07-21 17:34:31 73

原创 cJSON_Delete源码剖析

文章目录1. 释放cJSON结构体变量2.3.1. 释放cJSON结构体变量     见名知意, cJSON_Delete 函数用于释放一个cJSON结构体变量所申请的内存空间. 在阅读本章节内容之前, 我强烈推荐你先阅读 cJSON数据组装框架 章节, 这对你理解本节内容有很重要的帮助.      先附上cJSON_Delele函数的内部代码实现:void cJSON_Delete(cJSON *c){ cJSON *next; while (c) { next=c->ne

2020-07-17 10:22:10 110

原创 RapidJSON报错: The document root must not be followed by other values.

文章目录1. 问题陈述2. 问题排查3. 问题现象4. 解决方案5. 结论1. 问题陈述     首先, json报文语法格式是正确无误的, 使用json在线工具解析ok. 而且出现的问题现象是: 相同的报文格式, 有的解析成功; 而有的解析失败。比如报文:[ { "name": "lixiaogang5", "sex": "男", "address": "guizhousheng" }]     概率性的某些同格式的json解析失败。解析过程: docume

2020-05-12 10:54:21 677

原创 DNS域名系统详解

文章目录1. DNS概述2. DNS报文格式3. DNS应用场景4. DNS实战分析5. 总结1. DNS概述     当你想在某个浏览器中打开Chrome、Firefox、Bing等搜索引擎时,脑海里第一时间是想到输入:www.google.com(域名),还是输入ip地址:172.217.11.68. 习惯性地,都是输入域名地址,因为字符更容易被记住。比如,不用刻意,我们都能够轻易地记住淘...

2020-04-28 19:45:16 194

原创 TCP/IP之ARP详解

文章目录1. ARP概述2. ARP首部结构3. ARP工作原理3.1 ARP缓存3.24. ARP攻击5. 总结1. ARP概述                         2. ARP首部结构                         3. ARP工作原理3.1 ARP缓存     每一次的网络通信,应用层的数据都需要经过从应用层到物理层的封装步骤,即数...

2020-04-01 10:48:51 215

原创 TCP/IP之网络层详解

文章目录1. 概述2. Wireshark与TCP/IP协议族对应关系3. IP标头3.1 IP标头结构类型声明3.2 IP标头图表3.3 IP标头各字段含义3.1.1 版本(Version)3. 总结1. 概述     网络层(Network Layer)位于TCP/IP协议族的第三层,它主要作用是负责在网络上的设备之间传输数据信息。在传输数据时,它将一个包含目的主机IP和源主机IP地址的标...

2020-03-27 18:16:18 103

原创 TCP/IP之传输层详解

文章目录1. 传输层特征2. 传输层协议2.1 TCP协议2.2 UDP协议3.1. 传输层特征     传输层位于TCP/IP协议族中的第4层,负责在网络主机中创建虚拟传输控制协议TCP,或用户数据报协议UDP,也叫“Transport Layer”。此层向其主机上运行的应用程序发送和接收数据。传输层将端口号分配给在主机上的应用程序中运行的进程,并将TCP或UDP标头添加到从应用程序接收的消...

2020-03-25 15:16:43 215

原创 关于PostgreSQL数据库版本从9.2.24升级到PostgreSQL11.5的方案

文章目录一、 目的二、 风险评估三、 实施步骤四、 结果五、 注意一、 目的     当前设备中使用的PostgreSQL数据版本是9.2.24 。 而PostgreSQL官方最新的版本是12.2。 已经迭代了三个大版本,中间每个大版本又有若干个次版本的迭代更新。在每次的迭代过程中,都有许多的隐藏缺陷修复以及性能的提升,包括CPU、内存占用、磁盘读写、网络I/O、索引逻辑等等。为了提升设备中...

2020-03-25 10:23:54 335

原创 内存对齐(Memory alignment)

文章目录1. 眼见并非总是为实2. 何为「内存对齐」2.1 为何需要「内存对齐」3.1. 眼见并非总是为实     在 C语言之结构体 章节里,对struct的功能和使用进行了详细的说明。「内存对齐」章节作为struct的一个扩充知识。事实也证明,实际开发中,关注结构体内存布局特性的同事寥寥无几。甚至某些同事表示从未去留意过声明的结构体所占用内存空间大小,他们会感到诧异、惊讶,为何声明的是同一...

2020-03-11 17:36:29 172 4

原创 Mongoose-6.14源码剖析之绑定监听端口

文章目录1.2.3.1.2.3.                    

2020-02-25 13:57:25 166

原创 Draw.io-专业绘图工具

文章目录1. Draw.io介绍2. Draw.io使用2.1 进入Draw.io2.2 绘制图表3. 绘图样本1. Draw.io介绍     工欲善其事必先利其器。一款优秀而又强大的工具,能够给你的办公效率带来质的飞跃;如果碰巧你也正好是一名Linux爱好者且爱好写博客分享知识,那么这款Draw.io绘图工具将会是为你而量身打造。因为它是跨平台的,兼容Linux、Windows和macOS...

2020-02-24 17:58:05 1136

原创 C语言之结构体(struct)

文章目录1. 概述2. 结构体定义2.1 tag-nam、member-listt和variable-list必须同时存在两个2.2 结构体嵌套2.3 初始化结构体成员列表2.3.1 花括号“{}”的初始化列表2.3.2 指定初始化器2.3.3 初始化嵌套结构体2.3.4 结构体变量赋值结构体变量2.4 访问结构体成员2.4.1 成员运算符“.”2.4.2 箭头运算符“->”3. 结构体数组...

2020-02-21 22:21:31 263

原创 Mongoose-6.14源码剖析之创建管理句柄

文章目录1. 概述2. 初始化Mongoose句柄2.1 Mngoose 三个基本数据结构2.1.1 struct mg_mgr 拥有所有活动的事件管理器2.1.2 struct mg_connection 连接2.1.3 struct mbuf 数据缓冲区(接收/发送的数据)2.22.31. 概述     关于Mongoose的功能、编译方式、适用平台等特性已在《Mongoose-6.1...

2020-02-13 16:36:33 218

原创 HTTP协议之报文格式

文章目录1. HTTP概述2. HTTP报文格式2.1 HTTP请求报文格式2.2 HTTP响应报文格式3. HTTP报文之URL组成3.1 HTTP协议URL和URI区别4. 总结1. HTTP概述          2. HTTP报文格式          2.1 HTTP请求报文格式          2.2 HTTP响应报文格式      ...

2020-01-20 15:33:21 195

原创 Wireshark之抓包文件保存

文章目录1. 概述2. Wireshark查看版本号3. Wireshark查看各种系统文件夹4. Wireshark抓包文件保存4.1 保存完整的数据包4.2 保存部分数据包4.2.1 保存经“显示过滤器”过滤后的数据包4.2.2 保存“两个标记数据包区域”范围的数据包4.2.3 保存“指定编号范围内”的数据包4.2.4 保存“带标记”的数据包4.2.5 保存“已选中”的数据包1. 概述...

2019-11-28 16:42:47 1590

原创 Wireshark之抓包原理剖析

1. 网卡     网卡是局域网(LAN,全称是:Local Area NetWork)中连接计算机和传输介质的接口,它工作在物理层(L1)。它是处于主机箱内的一块网络接口板,因为它的存在,从而使得本机能够与外部局域网进行连接通信。任何一台计算机,想要进行上网、通信功能,就必须使用网卡。网卡的书面语是网络适配器/网络接口卡。如图1所示,为Inter I250网卡示意图。           ...

2019-11-22 13:04:59 874

原创 Mongoose-6.14源码剖析之基础篇

文章目录1 Mongoose介绍2 Mongoose1 Mongoose介绍     Mongoose 是一款嵌入式 web服务器。使用C语言编写,它可以很容易的嵌入到其他平台或是程序中,并为其提供了web接口,它具有很强的可移植性,而且对跨平台编译支持得非常出色。它是用于嵌入式网络编程的瑞士军刀。为客户端和服务器模式实现了用于TCP,UDP,HTTP,WebSocket,CoAP,MQTT的...

2019-10-26 10:25:09 509

原创 PostgreSQL11-5源码编译安装

文章目录1、PostgreSQL概述2、PostgreSQL发展历史3、PostgreSQL安装准备3.1 源码安装3.24、PostgreSQL5、PostgreSQL数据库蔟目录介绍1、PostgreSQL概述     PostgreSQL是一种先进的、流行的对象-关系型数据库管理系统(Object-relational database management system,简称 ORDB...

2019-10-23 15:21:45 343

原创 postgresql.conf配置文件详解

# -----------------------------# PostgreSQL configuration file# -----------------------------## 此文件由以下几行组成:## name = value# ("="是可选的.)可以使用空格.注释是在一行的任何地方用"#"开头.参数名和允许值的完整列表可以在PostgreSQL文档中找到.#...

2019-10-21 21:59:28 1966

原创 Zookeeper事务日志控制100M范围测试

一、概述     本文档主要用于记录“测试Zookeeper服务其事务日志大小控制在100M范围内”的数据。Zookeeper分布式服务中,其日志共有3种类型,分别是:log日志、快照和事务日志。Zookeeper 3.4.0版本中,可以通过在配置文件(conf/zoo.cfg)中添加对应的选项从而达到自动清理事务日志的效果。     使用zookeeper提供的客户端工具(共有3种方式连接z...

2019-10-15 17:16:01 105

原创 风雨兼程,一路有“你”

     一定是特别的缘分,才可以一路走来变成了一家人。每当听到张宇的这首《给你们》,内心都是百感交集,似乎有千言万语想要表述,却又欲言又止。因为我不知该从何说起,缘分这一道桥,这么近,却又总是那么远。从进入海康后端,到我现在写下这篇文章的时刻,若用“格林尼治时间”来计算,刚好是59137200秒,即684.5天。时间的沙漏,总是不经意间悄悄从指缝间溜走,不发出一点声响,也从未被察觉;这段时间里,...

2019-10-15 12:53:59 222 2

原创 cJSON源码剖析

1. 概述     cJSON源码非常简单,即使是最新版本的cJSON,其 cJSON.c文件也仅有 750 多行的代码, cJSON.h文件 200 行代码不到。其.h文件和.c文件总代码量不超过 1000 行,非常简洁,阅读也很轻松。本文着重分析其设计框架和原理。至于其使用的一些细节,可以 [参考JSON官网]。1. 概述1. 概述                       ...

2019-09-25 15:53:27 471

原创 cJSON组装与解析value为数组["a", "b", "c","d"]

1. 组装JSON中其value为数组的报文#include <stdio.h>#include <string.h>#include <stdlib.h>#include <assert.h>#include "util_cJSON.h"int main(){ char *serialBuf = NULL; cJSON *pRoo...

2019-09-12 21:38:30 244

原创 解决Zookeeper无法启动问题

1. 概述      首先,zookeeper的配置(conf/zoo.cfg)是ok的。但是启动Zookeeper服务的时候,不报错,也没有任何提示。然而服务就是起不来,端口(默认2181)也不在线。     使用lsof 或是 netstat -apn | grep 2181查看端口的时候,可以看到zookeeper服务是没有起来的。接着我看了zookeeper.log 日志,可以看到一...

2019-09-03 09:50:32 439

原创 c++11之静态断言(static_assert)

一、 断言概念     所谓“断言”,它是一种表现行为,亦是一种编程手段。它总是将需要“返回值为真的判别式”放到语句中,其所扮演的角色就是告知系统当程序的某个条件其值不为真的时候,退出程序,不再继续执行下去。需要知晓的是,断言并不是代码中必不可缺的部分,因为它是可替代的,比如用if(条件判断)、#error(预处理宏)来完成断言同样的效果。存在即合理,断言必然有它存在理由。它可以快速定位到程序出...

2019-08-19 15:05:23 1895

原创 数据类型在不同平台的存储字节大小总结

1. 概述     当用不同编译器编译的DLL交换数据时,以及在移植依赖于特定数据格式的C++代码时,数据表示的差异可能会导致程序间交换二进制数据文件时出现问题。表1 为显示不同对象用于不同编译器的存储字节数。                                                  表1 数据大小                     ...

2019-08-02 16:11:48 263

原创 操作系统、硬件平台、编译器预处理宏

    为了能够让写出的代码具有更强的移植性、跨平台等特性,我们需要在代码工程中加入大量的条件判断宏,以告知各平台下的编译器选择对应的分支宏代码进行(预处理、编译、汇编、链接)处理,并得到最终我们需要的成果物。不同的处理器、操作系统以及编译器都是有着其固定的宏,因此,我们所需做的在代码合适的地方添加对应的宏。     比如说,互斥锁在Linux平台与windows平台上面的定义、实现是不一样的,...

2019-08-01 22:08:22 505

原创 PostgreSQL报错:row number 0 is out of range 0..-1

一、PostgreSQL的C ++客户端中,若函数:GetResRow 获取的结果集为0,则其默认行为是:进程会直接宕掉,同时 stderr ,向终端打错误码,提示: row number 0 is out of range 0…-1。如下图所示: 。google一番,似乎该Bug在PG的9.1~9.3中都存在这样的问题。二、其API代码如下: int iType = HPR_Atoi32...

2019-04-08 20:28:10 725

原创 #if defined 宏定义常用“与”、“或”、“非”判断

1.“与”判断 (即判断多个宏是否同时定义) #if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) || \ defined(__HP_aCC) || defined(__BORLANDC__) || defined(__LCC__) || \ defined(__POCC__) || defined(__S...

2018-12-07 14:19:20 6119

原创 Zookeeper编译动态库 libzookeeper_mt.so

一、Zookeeper下载 Zookeeper官网地址是:https://www.apache.org/dyn/closer.cgi/zookeeper/ [点击进入下载页面] 。选择合适的稳定版本下载。 将下载的文件(比如:zookeeper-3.4.12.tar.gz)上传到Linux服务器的某一个目录下。解压 tar -zxvf zookeeper-3.4.12.tar.gz...

2018-11-23 17:14:02 2182

原创 scp -r 提示:"ARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!"

1. Linux上的SCP 功能是:用于Linux之间复制文件和目录。scp是 secure copy的缩写, 它是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。下午重做了个镜像,然后启动服务器,使用scp 复制文件时,无法复制,打印如下: 提示:远程主机识别已经改变。/etc/ssh/ssh_config line 52: Unsupported option "gssapiau...

2018-11-13 20:41:02 492

原创 Linux线程之一次性初始化(pthread_once)

1.一次性初始化 在 Linux函数列表 中描述了Linux线程中的常用函数,这里详细讲解 pthread_once 函数的功能和使用。(1)为何有“一次性初始化概念”出现? 其实在开发中,很多事情都仅仅需要做一次,不管是什么。在主函数中并且在调用任何其他依赖于初始化的事物之前初始化应用是最为容易的,特别是在创建任何线程之前初始化它需要的数据,如 互斥量、条件变量、线程特定数据键等。...

2018-09-09 12:14:28 1197

原创 tar 解压文件报错:tar: Error is not recoverable: exiting now

1. 使用tar 解压 Zookeeper官网下载的zookeeper-3.4.10.tar.gz 时候,出现错误提示: gzip: stdin: unexpected end of file zookeeper-3.4.10/src/java/test/org/apache/zookeeper/test/LETest.java zookeeper-3.4.10/src/java/test/...

2018-08-08 01:06:06 44479 2

原创 C++11新特性之 “=default” 、“=delete”

1、 =default 和=delete 概述 任何事物的出现都必然有着其出现的理由,伴随着每一个新的概念产生都会带来一系列的便利和价值。C++在不断的演变与发展,与此同时,伴随着许多新的特性和功能产生。=default、=delete 是C++11的新特性,分别为:显式缺省(告知编译器生成函数默认的缺省版本)和显式删除(告知编译器不生成函数默认的缺省版本)。C++11中引进这两种新特性的目的是...

2018-07-18 00:03:42 13768 5

原创 KafkaOffsetMonitorji监控工具的配置及使用

一、 KafkaOffsetMonitor简述 KafkaOffsetMonitor,它是由Kafka开源社区提供的一款Web管理界面,是Kafka的一款客户端消费监控工具,用来实时监控Kafka服务的Consumer以及它们所在的Partition中的Offset,通过KafkaOffsetMonitor,我们可以很直观的知道,每个Partition的Message是否消费掉,有没有阻塞等。...

2018-07-10 03:25:36 2489 11

原创 C++ STL编译报错:error: error passing 'const' as 'this' argument

用C++ STL(标准模板库)编写仿函数的时候,编译报错: error: passing 'const FindNameOrAddress' as 'this' argument of 'bool FindNameOrAddress::operator()(std::string, std::string)' discards qualifiers [-fpermissive] 其中:Find...

2018-07-05 01:02:37 6918

原创 C++11 之 lambda函数的详细使用

1. lambda 函数概述 lambda 表达式是一种匿名函数,即没有函数名的函数;该匿名函数是由数学中的λ演算而来的。通常情况下,lambda函数的语法定义为: [capture] (parameters) mutable ->return-type {statement} 其中: [capture] :捕捉列表。捕捉列表总是作为lambda的开始,即出现于lambda的...

2018-07-03 22:38:42 24694 10

原创 Qt Creator支持C++11

1.Qt开发中,经常会用到 C++11 的新特性,为了Qt支持C++11的新特性,需要在 xxxx.pro 文件添加: QMAKE_CXXFLAGS += -std=c++11 或 CONFIG += c++11

2018-06-23 14:08:50 4472 2

原创 Linux下unzip解压文件时报错并提示: End-of-central-directory signature not found.

1. 使用unzip解压从rapidjosn官网下载的zip格式文件时,解压不成功,并给出其错误提示为: Archive: rapidjson-master.zip End-of-central-directory signature not found. Either this file is not a zipfile, or it constitutes one disk ...

2018-06-18 13:56:06 34042 9

原创 C/C++中关键字extern详解

1.extern功能详解C/C++中关键字extern不外乎有下面几个作用,只要记住了这几个规则就可以在项目中运用自如。 ①扩展外部变量的作用域(在同一个文件范围内) ②将外部变量的作用域扩展到其他文件 ③将外部函数(函数名前面没有加static关键字)的作用域扩展到其他文件 现在来对上面列举的3个功能做详细的讲解: 我们知道,在用C/C++进行编程时候,所以的变量或函数都...

2018-05-10 01:41:15 2205 2

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