自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(146)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 基础:TCP四次挥手做了什么,为什么要挥手?

报文段时,只是表示主机1已经没有数据要发送了,主机1告诉主机2, 它的数据已经全部发送完毕了;:主机2收到主机1信息后,回复报文给主机1,告诉主机1我也没有数据发送给你了,可以进行关闭连接。报文段时,这个时候就表示主机2也没有数据要发送,就会告诉主机1,我也没有数据要发送了。报文 段时,表示它已经知道主机1没有数据发送了,但是主机2还是可以发送数据到主机1。:主机1收到主机2的关闭请求后,回复确认关闭指令给主机2,关闭链接。端已正常关闭,那好,主机1也可以关闭连接了。报文段,请求关闭连接,同时主机2进入。

2024-03-19 11:36:46 845

原创 基础:TCP三次握手做了什么,为什么要握手?

但 server 收到此失效的连接请求报文段后,就误认为是 client 再次发出的一个新的连接请求。由于现在 client 并没有发出建立连接的请求,因此不会理睬 server 的确认,也不会向 server 发送数据(因为client现在是CLOSED状态)。“client 发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达 server。:客户端收到服务端的确认报文信息后,发送报文给服务端,表示确认收到服务器端同意连接的信号。

2024-03-18 17:06:26 881

原创 基础:TCP是什么?

这个字段占4bit(最多能 表示15个32bit的的字,即4*15=60个字节的首部长度),因此TCP最多有60字节的首部。:TCP首部中有6个标志比特,它们中的多个可同时被设置为1,主要是用于操控TCP的状态机的,依次 为URG,ACK,PSH,RST,SYN,FIN。:用来标识从TCP发端向TCP收端发送的数据字节流,它表示在这个报文段中的的第一个数据 字节在数据流中的序号;是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 [1]定义。:窗口大小,也就是有名的滑动窗口,

2024-03-15 16:20:03 878

原创 讨论:解决哈希冲突的几种方法

设有n个d位数,每一位可能有r种不同的符号,这r种不同的符号在各位上出现的频率不一定相同,可能在某些位上分布比较均匀,每种符号出现的机会均等,在某些位上分布不均匀只有某几种符号经常出现。: 按顺序决定值时,如果某数据的值已经存在,则在原来值的基础上先加1的平方个单位,若仍然存在则减1的平方个单位。随之是2的平方,3的平方等等。直至不发生哈希冲突。: 一旦发生哈希冲突,所有的冲突连在一起,容易产生数据“堆积”,即:不同关键码占据了可利用的空位置,使得寻找某关键码的位置需要许多次比较,导致搜索效率降低。

2024-03-07 11:39:06 885

原创 map和unorder_map的比较

红黑树每个节点都代表map的一个元素,对 map 的操作(查找、添加、删除)相当于是对红黑树的操作;内部实现了一个哈希表 (也叫散列表),排列无序,通过把关键码值映射都hash表中一个位置来访问记录。Hash最大的优点:是把数据的存储和查找消耗的时间大大降低,查找时间复杂度可达到O(1);:空间占用率高,因为内部实现了红黑树,每一个节点都需要额外保存父节点、子节点和红黑性质。:有序,运行效率高,可以做到在O(logn)时间内完成查找、插入和删除。优点是:可以保证最坏情况的运行也在预期之内。

2024-03-07 10:50:13 190

原创 积累:QComboBox样式实现带“图标+序号”切换

2.1 设置 QComboBox 样式。2.2 主要实现源码。

2024-02-29 09:10:33 179

原创 积累:使用QPushButton模拟开关按键

2.1 设置 QPushButton 默认样式。2.2 主要实现源码。

2024-02-28 17:07:12 126

原创 积累: QCheckBox 复选框勾选实现

2.1 设置 QCheckBox 样式。2.2 主要实现源码。

2024-02-27 17:08:54 250

原创 积累:如何提取 int 数据的高低字节

服务通信、硬件开发,一般都会涉及到字节数据的解析、处理。无论是两个服务间的数据交互协议,还是硬件设备的通信协议,协议中涉及到的参数比较多,并且协议中每个参数占用的字节大小设定会因功能也不尽相同:简单点的参数占用一个字节,复杂点的参数占用两个字节、四个字节,数据长度不定的则长度不做限定等等。因业务需求的不同,字节方式带来的复杂性也会存在差异,我们这里只简单举例介绍如何提取 int 数据的高低字节。如果大家在开发过程中遇到类似业务时,希望本文的内容能够提供一种参考、一点帮助。1. 提取 int 高低字节数据。

2024-02-26 16:17:56 257

原创 积累:Qt 多种数据类型之间的转换方法

参数2默认情况下是十进制显示方式转换,也可以使用八进制、十六进制显示方式调用。如果基数为0,则使用C语言惯例:如果字符串以"0x"开头,则使用基数16;开发时经常涉及到数据类型的转换,为方便温故知新、提升开发效率,现将 Qt 开发部分常用的数据类型转换方式形成工具文档供查询、参考。参数1:返回的执行结果,如果ok不是nullptr,则将ok设置为false表示失败,将ok设置为true表示成功。参数3:如果参数2为浮点数为前提,参数3表示要保留小数位数。参数2:要转换的长度,默认为-1表示全部转换。

2024-02-26 14:52:12 632

原创 方法:Linux/Windows进程和端口如何相互求证

上述情况,有很多种方式来确认、解决。比如:第2点我们可以通过 telnet 指令来求证,也可以通过模拟客户端发送请求验证(例:http监听,通过 postman 模拟请求)。方式有很多,不做一一列举,相信大家比笔者更有经验,解决方案也许会更加巧妙、简洁。“ netstat -ano | findstr 进程PID ”“ netstat -ano | findstr 端口号 ”“ netstat -tnlp | grep 进程PID ”“ netstat -tnlp | grep 进程名 ”

2024-02-22 17:34:18 270

原创 服务绑定端口失败问题排查

从上图结果看到,1998 端口被进程ID为 66252 的进程在占用,并且建立的连接状态处于 ESTABLISHED。刚开始调试的时候都挺顺利,但是在一顿任意捣鼓各种非正常关闭程序之后,再次重新启动程序时,程序异常退出。从上图结果看到,这种情况排除,不存在开启多个 DataImport 进程的问题;从上图结果看到,并未找到 1998 端口被占用的信息;1.2 使用 netstat -tulpn 命令查看端口使用情况。1.3 使用 lsof 命令查看端口使用情况。,表示地址已经被使用,监听绑定失败。

2024-01-30 15:30:50 200

原创 tcpdump抓包技巧

它主要针对的是 HTTP 协议和 HTTPS 协议, 可以确认我们的网络数据包的一个状态, 通过分析请求和响应报文里面的内容, 分析出来请求数据和响应数据是否正确, 定位问题是前端问题还是后端问题。它不仅可以分析http/https的数据,它还可以分析网络2层以上都可以看到,比如tcp的三次握手等,但是如果你只是分析http协议,可以不用这么专业的工具,以免增加筛选请求成本和学习成本。-s 0则是设置为最大上限,即是262144字节,-s 0可防止截断包,抓到完整的数据包,但是相对应的,会增加处理时间。

2023-12-20 17:47:31 1529

原创 AdvancedInstaller打包程序

本文使用的是解压版,这里选择x86版本,操作步骤(s1/s2/s3…1. AdvancedInstaller 下载。2. AdvancedInstaller 启动。1. AdvancedInstaller 下载。2. AdvancedInstaller 启动。7. 设置安装完成后启动程序。7. 设置安装完成后启动程序。4. 配置安装包详细信息。4. 配置安装包详细信息。6. 添加要打包的文件。6. 添加要打包的文件。

2023-08-02 17:39:42 311

原创 借用jQuery发送Http请求的实现(内附源码)

于是决定自己动手写个简单的http客户端工具,一开始想到使用Qt+curl开发个简单的界面工具,之所以要带界面主要是考虑现场人员操作的便利性。最后,经过考量,使用....jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。

2023-06-22 10:33:01 860

原创 借助KafkaTool在海量Kafka数据快速精准定位/查询目标数据

如何在海量的Kafka数据定位/查询精准到秒级的数据?

2023-05-29 10:54:27 2280

原创 区块链赋能的6G零信任车联网可信接入方案

区块链赋能的6G零信任车联网可信接入方案

2022-12-08 17:54:31 2094 1

原创 借助实例轻松掌握 Makefile --开花结果

通过一个相对较复杂的项目来实践加深 Makefile 的应用,我们暂且将该项目命名为 huge(大块头);

2022-09-29 14:47:14 412

原创 借助实例轻松掌握 Makefile -- 茁壮成长

通过一个复杂的项目来实践更多关于 Makefile 的知识点,我们暂且将该项目命名为 playground(游乐场);该项目对 Makefile 的基本需求有:将所有的目标文件放入源程序所在目录的 objs 子目录中;将所有最终生成的可执行程序放入源程序所在目录的 exes 子目录中;将引入用户头文件来模拟复杂项目的情形。

2022-09-23 10:15:22 420

原创 借助实例轻松掌握 Makefile -- 萌芽破土

通过几十个简单实用的例子,循循渐进,轻松理解、掌握 Makefile

2022-09-21 19:12:40 500

原创 关于gdb调试: 你的问题可能会在这里找到答案

又叫数据断点,这样的断点其实就是前面课程中介绍的用 watch 命令添加的部分断点(watch 添加的断点有部分是通过软中断实现的,不属于硬件断点)。命令是一个强大的命令,它可以用来监视一个变量或者一段内存,当这个变量或者该内存处的值发生变化时,GDB 就会中断下来。我们需要查看地址,因为目的是要看某内存地址上的数据是怎样变化的。多个线程都调用同一个函数,当我们进入函数后进行逐行调试时,原本期望执行完第10行后往下11行执行,而此时系统有可能会切换到另外一个线程,而跳转到函数的第5行源码,造成混淆。

2022-09-14 20:30:57 2412

原创 Qt中文字符串按照拼音排序

简单实现中文字符按照拼音排序

2022-09-07 17:11:57 885 1

原创 QtCreator无法启动问题

简单、有效解决QtCreater无法启动问题

2022-09-07 15:17:00 3228

原创 自动驾驶与车路协同

谷歌和特斯拉不同自动驾驶路线技术特点,自动驾驶与车路协同面对的机遇和挑战。

2022-07-28 16:40:02 2171

原创 FFmpeg音视频播放器实现

FFmpeg音视频播放器实现主体流程

2022-06-23 11:29:45 882

原创 从简单实例来看 left join 如何去重

从简单实例来看left join如何去重

2022-06-17 18:13:19 4030

原创 SQL存储过程编程笔记

1、引言最近写了一个存储过程用于统计数据。由于好长时间没有写存储过程,重新捡起来还是花费了一点时间。这里做个笔记,将此次存储过程用到的一些基础知识点做个简单的小结。(注意:这里数据库用的是postgresql)2、背景表1:第三方服务每10分钟会写一次数据到表1,每次写入都是在表中插入一条新的数据,因此一个设备一天在表中有多条数据。CREATE TABLE tb_check ( id serial NOT NULL, --自增ID devicecode text NULL, ..

2022-05-09 20:15:26 267

原创 熔断机制:预防一个服务故障导致整个系统崩掉

一、引言一个系统通常包含多个服务,服务之间的数据顺利交互,是整个系统能够正常工作的基本要求。但实际应用中,不少人会经常遇到某个服务异常工作后,整个系统随之崩掉的情况,这种情况我们应该如何预防和处理呢?本章节的内容希望能够给你带来些启发。二、场景介绍2.1 接口简述一个新零售架构系统中 ,有一个通用用户服务,很多页面都会使用,它包含两个接口。第一个接口:用户态接口接口功能:返回用户车辆所在位置。使用业务:在用户信息展示页面会使用到,比如客服系统中的用户信息页面。数据来源:对接第三方系统,

2022-04-03 13:43:07 1838

原创 Elasticsearch: 这些坑你踩了吗?

一、引言本文罗列多数人使用Elasticsearch时可能会遇到的一些坑点,供大家参考、讨论、补充。二、坑1:ES是准实时的?为了验证这个坑是否是真坑,大家可以自己手动测试一下:当更到数据到ES并且返回提示成功这一瞬间,立马通过ES查询,查看返回的数据是不是最新的。思考:若查询到的数据是最新的,这个坑不算坑,可以填土了;而如果不是最新的数据,那么背后的原因是什么?如果你还没有做验证,不要紧,我们一起来看下ES数据索引的整个过程,也许你从中也会找到蛛丝马迹。|| 数据索引整个过程数据

2022-03-18 16:47:33 2788

原创 Elasticsearch: 如何设计表结构

一、 引言全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 Elastic)是目前全文搜索引擎的首选。它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github 都采用它。Elastic 的底层是开源库 Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elastic 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。Elasticsearch 在分布式开源搜索和分析引擎中处于领先地位,能在短

2022-03-17 15:32:09 6076

原创 读缓存:如何减少数据库读操作压力

一、引言一个电商系统,存放了10万多条商品数据,每次用户浏览商品详情页时,需要先从数据库读取数据,再进行数据拼装和计算,,耗费的时间有时长达1s。从而导致页面打开速度慢。面对这种问题,我们应该如何解决?二、本地缓存关于缓存问题,最简单的实现方法是使用本地缓存。在Google Guava中有一个cache内存缓存模型,它把所有商品的ID与商品详情信息一对一缓存在JVM内存中,用户获取商品详情数据时,系统会根据商品ID直接从缓存中读取数据,大大提升了用户界面访问速度。咋一看,实现流程似乎简单、实用

2022-03-15 17:08:54 2405

原创 分库分表:如何解决数据量大读写缓慢

一、 引言一个系统,目前订单数据量已达上亿,并且每日以百万级别的速度增长,甚至之后还可能是千万级。面对如此庞大的数据量,那么一旦数据量疯狂增长,必然造成读写缓慢。那么,为了使系统能够抗住千万级数据量的压力,都有哪些解决方案呢?二、 分表分库当数据库表读写缓慢的时候,我们第一时间考虑到的是优化程序读写模块,调整软件架构;不过,对于单库单表而言,一旦数据量疯狂增长,无论是IO还是会CPU都会扛不住,单单从软件上来解决优化效果有限。我们这里要介绍的解决方案是:分表分库,即先将表进行拆分,再进行分布

2022-03-15 14:56:23 6826 2

原创 点击QPushButton上方弹出QMenu菜单源码实现

一、效果图二、源码1、菜单列表void InitMenuAction(void){ m_pSetMenu=new QMenu(this); // ui->otherToolBarBtn->setStyleSheet("QPushButton::menu-indicator{image:none}"); //去掉按键箭头 QAction *pActLight = new QAction(QStringLiteral(" 灯光"), this); ..

2021-11-08 11:22:02 1873

原创 简单易懂!手把手:从安装部署VMWare&Ubuntu,到编写、编译、运行、调试程序

一、安装VMWareVMWare下载网址:https://www.vmware.com/cn/products/workstation-pro.html本文VMware采用的版本是10.0.7 bulid-2844087序列号:1Z0G9-67285-FZG78-ZL3Q2-234JG虚拟机的安装比较简单,按照安装向导依次点击下一步安装就可以了,这里不再做详细介绍。二、安装UbuntuUbuntu镜像下载网址:http://www.ubuntu.com1)打开VMWare,然后点击“..

2021-09-30 17:21:56 2822

原创 如何在VMWare虚拟机里把DPDK跑起来?

一、环境准备VMware + Ubuntu 16.04 Server版本二、DPDK环境搭建2.1 vmware 添加两块网卡要把DPDK运行起来,需要两块网卡,因此我们需要查看我们的虚拟机是否已经有了两块网卡,如果没有则添加;添加网卡的时候建议把网卡网络连接设置为“桥接模式(B)”。桥接网卡作为 DPDK运行的网卡。NAT网卡作为ssh连接的网卡。2.2 修改网卡配置信息1)找到我们虚拟机上的.vmx文件,并打开文件;2)把ethernet0.virtualDev由e1..

2021-09-17 21:53:33 3377

原创 C++内存池设计

一、什么是内存池?为什么要使用内存池?一次性分配好,使用的时候直接调用,对外提供的是API接口,应用软件直接调用API接口就可以获取到需要的内存空间。在做服务端开发的时候都可以使用内存池。频繁的对内存进行malloc/free,会产生内存碎片。不断的malloc和free也会影响性能,因为内存操作需要在用户态和内核态之间不断切换。内存数据也可以用,为什么还要使用内存池?如果是通过消息队列,把数据push到另外一个线程处理业务的时候,定义的数组是用不了的。此时我们就可以使用内存池传递指针过去。..

2021-09-16 11:38:44 688

原创 Mongo 文档操作详谈

一、MongoDB 插入文档文档的数据结构和JSON 基本一样。 所有存储在集合中的数据都是 BSON 格式。 BSON 是一种类似 JSON 的二进制形式的存储格式, 是 Binary JSON 的简称。1.1 MongoDB 使用 insert() 或 save() 方法向集合中插入文档db.COLLECTION_NAME.insert(document)以下文档可以存储在MongoDB的test数据库中的col集合中:> db.col.insert({title:'Mongo..

2021-09-15 16:05:19 190

原创 MySQL Explain关键字分析性能瓶颈

1、Explain关键字作用Explain关键字:使用Explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理SQL语句的,分析查询语句或是表结构的性能瓶颈。2、Explain使用方式用explain命令查看SQL语句的执行计划,查看SQL语句有没有使用索引,有没有作全表扫描。-- 实际 SQL, 查找用户名为 milo 的员工select * from mytest3 where id = 1;-- 查看 SQL 是否使用索引, 前面加上 explain 即可..

2021-09-14 14:46:53 194

原创 MySQL乱码解决方案

1、问题引出客户端应用程序查询数据库数据,显示乱码,如何解决?2、解决方案一般来说,可以下面几个方面进行排查:1)首先要明确客户端使用何种编码格式,这是最重要的(IE6一般使用utf8,命令行一般是gbk,程序一般时gb2312)。2)确保你的数据库使用utf8格式,所有编码通吃。3)一定要保证connection字符集大于等于client字符集,不然就会信息丢失。比如:latin1 < gb2312 < gbk < utf8;若设置set character_s..

2021-09-14 12:10:17 138

原创 MySQL 中 UTF8和UTF8mb4的区别

1、我们先来看一个问题在utf8字符集中插入数据:mysql> insert into `user` values (4,'a楞', 0);ERROR 1366 (HY000): Incorrect string value: '\xE6\xA5\x9E' for column 'name' at row 1可以看到上诉的插入语句执行失败。思考下,这是什么原因导致的?2、UTF8和UTF8mb41)在MySQL 5.5.3之后,增加了UTF8mb4的编码mb4就是most by..

2021-09-14 11:28:25 264

GAT 1049.1-2013 公安交通集成指挥平台通信协议 总则&交通信号控制系统.pdf

包含了公安交通集成指挥平台通信协议-第1部分总则,第2部分 交通信号控制系统。可供信号控制应用平台接入支持国标协议的各信号机厂家设备做对接协议参考。

2020-12-09

Google C++编程规范

现在编程风格在开发过程显得越来越重要,良好的编程规范不仅使得代码的可读可维护性变得更简单,也是编码人员自我修养的一种体现。《Google C++编程规范》一书详细阐述了C++开发过程中各种规范,值得借鉴、参考。

2017-08-16

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

TA关注的人

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