自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(86)
  • 资源 (2)
  • 收藏
  • 关注

原创 http、websocket与MQTT协议

1、HTTP2、WebSocket3、MQTT现代系统常结合多种协议以平衡性能与成本:truefalse。

2025-02-22 16:07:54 1153

原创 deepseek本地部署

deepseek本地部署

2025-02-08 10:56:33 375

原创 iperf

iperf3是一个主动测试网络带宽的工具,可以测试iTCP、UDP、SCTP等网络带宽;可以通过参数修改网络协议、缓冲区、测试时间、数据大小等,每个测试结果会得出吞吐量、带宽、重传数、丢包数等测试结果。

2025-01-21 13:38:33 1646

原创 DPDK入门

ARP欺骗:由于ARP的协议信任机制,恶意节点可以伪造ARP响应报文,谎报自己的MAC地址为其他设备的MAC地址,导致数据流向错误的设备,这个一种常见的网络安全威胁,这种攻击可以用于中间人攻击和拒接服务攻击;其基本功能是降网络层的逻辑地址(IP地址)转化为数据链路层的物理地址(MAC地址),保证网络设备间的正常通讯。在混杂模式下,端口将接收所有在网络上广播或发送给它所在子网上的所有数据包,而不仅仅是那些目的地址是端口自己 MAC 地址的数据包。NDP(邻居发现协议):在ipv6环境中。

2025-01-21 10:08:16 719

原创 linux内核性能分析:内核追踪工具bpftrace

以符号开头定义变量如符号开头定义变量 如符号开头定义变量如pic = 10;map变量 在内核和用户空间之间存储和检索数据,定义方式以@符号开始如:@hashmap[$key] = $valueBpftrace 默认在结束时会打印从内核接收到的 map 变量。

2025-01-13 19:18:08 777

原创 域套接字(Unix Domain Sockets)

域套接字(Unix Domain Sockets)

2024-11-12 16:11:18 853

原创 TCP的p2p网络模式

Peer-to-Peer,中文译为“对等网络”或“点对点技术”,是一种分布式应用架构,其中每个参与者(称为“节点”)都能够同时作为客户端和服务器,直接与其它节点进行数据交互,而不需要通过中央服务器中转。P2P网络的关键特征是去中心化和资源的分散共享,这使得网络更加健壮,更能适应大规模的数据交换和共享;3、其他状态转换过程。

2024-07-05 18:57:52 1089 1

原创 linux系统扩展磁盘容量

虽然逻辑卷的大小已经改变,但是文件系统可能还没有意识到这一变化,也就是说,文件系统还没有被扩展到填满新的逻辑卷空间。为了使文件系统能够使用新增加的空间,你还需要进一步执行文件系统的扩展操作。需要扩展的根目录文件系统名为:/dev/mapper/ubuntu–vg-ubuntu–lv。查看还有20G的空余未使用磁盘空间。逻辑卷名为ubuntu-vg。

2024-07-03 10:08:29 619

原创 DPDK环境配置

DPDK(Data Plane Development Kit)是一个开源的软件框架,最初由Intel开发,旨在提升数据包处理性能,尤其是在Intel架构的处理器上。它允许开发者在用户空间(user space)而不是传统的内核空间(kernel space)实现高速的数据包处理,从而绕过了Linux内核协议栈,减少了上下文切换和中断处理的开销。DPDK常应用于需要高性能数据处理的场景,如软件定义网络(SDN)、网络功能虚拟化(NFV)、高性能路由器、负载均衡器、数据包过滤和分析等领域。

2024-06-17 16:22:18 582

原创 缓冲区设置

在网络通讯中,用户态缓冲区和内核态缓冲区的大小设定对于优化网络性能和确保数据传输可靠性至关重要。

2024-06-14 10:45:29 2018

原创 内存池(Memory Pool)

内存池预先从操作系统申请一大块连续内存空间,并将其管理起来,当程序需要分配内存时,不再直接向操作系统请求,而是从内存池中快速分配一小块事先准备好的内存单元。当不再需要这些内存时,也不是直接归还给操作系统,而是归还给内存池,由内存池统一管理,适时或在程序结束时再归还给操作系统。内存池(Memory Pool)是一种内存管理技术,主要用于优化程序中动态内存分配和释放的效率,减少内存碎片,提高程序运行速度。: 释放内存时,不是直接还给系统,而是归还给内存池,可能需要进行合并相邻空闲块的操作以减少碎片。

2024-06-11 15:45:51 1790

原创 makefile入门

Makefile 是一个用于描述文件编译、链接等构建步骤的脚本文件,它通过一系列规则来控制编译流程。

2024-06-07 14:14:46 193

原创 MQTT服务

MQTT(Message Queuing Telemetry Transport)是一种轻量级的、基于发布/订阅模式的消息传输协议,专为低带宽、高延迟或不可靠的网络环境设计,特别适用于物联网(IoT)场景中的设备间通信。MQTT的核心组件包括客户端和服务器(也称为代理或经纪人Broker);主要由客户端、服务器、主提、服务质量组成;客户端(Client):可以是发布者、订阅者或同时具备两种角色的设备或应用程序。服务器(Broker)

2024-06-06 16:58:20 803

原创 Linux CPU火焰图

火焰图(Flame Graph)是一种强大的性的性能分析工具,专门用于可视化cpu时间消耗咋各个函数栈上的情况,可以很快帮助开发这识别程序中的性能瓶颈和热点函数,从而有效的进行程序优化;火焰图通常以SVG格式提供,可以在现在浏览器中直接打开并进行交互,用户可以通过点击感兴趣的区域来查看函数名称、源码行等详细信息;火焰图每一层代表一个函数调用,宽度对应该函数占用CPU的时间比例,越宽的火焰图代表函数及其子函数消耗的CPU时间越多,直观的展现了哪些函数占用了大部分CPU计算资源;

2024-04-17 19:37:53 1849 1

原创 iperf3 网络性能测试

iperf3是一个主动测试网络带宽的工具,可以测试iTCP、UDP、SCTP等网络带宽;可以通过参数修改网络协议、缓冲区、测试时间、数据大小等,每个测试结果会得出吞吐量、带宽、重传数、丢包数等测试结果。

2024-04-12 15:07:02 7494

原创 c++ 原子操作

原子操作是被保证以单独一个事务被执行的操作,其他线程可以看到执行前的系统状态、或者看到原子操作执行结束后的系统状态,但是看不到原子执行中的系统执行状态;memory_order_release是写操作store函数,表示该操作之前的任何写操作都不能放到该操作之后,即写语句不能调到本语句之后;对于同一个原子变量,release操作之前的写操作,一定对随后的acquire操作后的读可见,这两种内存序一般需要配对使用。默认内存序选项,是最严格的内存顺序,前面的语句不能挑到后面,后面的语句不能调到前面。

2024-04-10 10:14:35 1950

原创 c++内存分配器

c++内存分配器相关说明

2024-04-08 13:23:51 1191

原创 c++ 死锁检测与内存泄露

通过hook函数从写malloc/free函数,每次malloc都回创建一个.mem文件,free会将申请内存时创建的文件删除,当mem文件夹下存在文件时,说明会有内存泄露,查看文件中内存可以查询到具体在哪里发生内存泄露。valgrind是一款内存错误检测工具,而helgrind是valgrind工具集成的一款工具,用于检测多线程程序中的竞争条件和死锁;helgrind通过获取模拟死锁的获取和释放来检测线程之间是否存在非法的资源访问序列,从而查找可能出现死锁的编程错误。超时后释放已经获取的资;

2024-04-02 15:26:30 1705

原创 FIO磁盘读写压力测试

FIO是一款强大的I/O基准测试工具,用来对磁盘的读写能力进行压力测试,它支持十多种I/O引擎,提供了丰富的参数来模拟复杂的I/O负载场景。

2024-03-13 10:37:36 1225

原创 网络编程 io_uring

io_uring高性能网络I/O处理

2024-03-01 09:58:47 1362

原创 c++类型推导

c++类型推导。

2024-02-22 16:04:10 559 1

原创 网络异步编程

网络异步编程

2024-02-01 14:36:57 1085

原创 socket通讯客户端,http

http

2023-11-10 16:29:50 755

转载 Reactor与Rroactor网络模型

Reactor与Proactor网络模型

2023-03-27 20:39:47 440

原创 C++内存分析工具

c++ 内存分析工具

2023-02-28 10:29:36 3747 1

原创 跳表简单实现

跳表的简单实现

2023-02-28 10:28:29 182 1

原创 c++ 守护进程

C++守护进程

2023-02-28 10:26:38 356

原创 LRU算法

LRU

2023-02-28 09:41:23 79

原创 C++ 内存模型

c++ 内存模型

2022-12-17 14:25:33 1178 1

原创 C++ 面向对象

c++面向对象的内存管理

2022-12-17 14:24:41 259

原创 奇异递归模板(CRTP)

奇异递归模板

2022-07-11 20:35:14 392

原创 C++的策略模式简单实现

现代c++策略模式

2022-06-25 16:40:43 248

原创 cmake

cmakecmake_minimum_required 指定cmake的最小版本要求#CMake最小版本要求2.8.2cmake_minimum_required(VERSION 2.8.2)project 定义工程名称,并指定工程支持的编译语言#指定工程名字和版本号,并指定编译语言project(HELLOWORLD VERSION 1.0.0 LANGUAGES C CXX)显示定义变量#定义src变量,其值为main.cpp hello.cppset(SRC main

2022-04-16 17:42:31 784

转载 c++ 多线程锁的应用

c++ 多线程锁的应用在多线程编程中数据的同步尤为重要,锁的使用可以很好的实现数据的同步;常用的有互斥锁,还有其他锁,包括自旋锁、读写锁、和乐观锁等,在不同的场景可以挑选使用不同的锁;一、互斥锁和自旋锁互斥锁和自旋锁时最底层的两种锁,其他高级锁都是基于他们实现的;互斥锁和自旋锁都可以保证在同一时间,只有一个线程可以访问;当有一个线程加锁后,其他线程加锁就会失败;互斥锁和自旋锁在加锁失败后的处理方式不同:互斥锁:加锁失败后,线程会释放CPU,给其他线程使用;自旋锁:加锁失败后,线程会忙等待,不停

2021-12-27 16:34:03 1201

原创 正则表达式

正则表达式请添加图片描述. 匹配除“\n”之外的任何单个字符,要匹配包括 ‘\n’ 在内的任何字符,请使用 ‘[.\n]’ 的模式?匹配一次或者0次单个字符,另外所用是非贪婪模式+匹配1次或者多次,等价于{1,}`;*匹配0次或者多次,等价于{0,}`;\b 匹配一个长度为0的字串;\btring\b 匹配以tring为边界的字符串\d 匹配一个数字字符,等价与[0-9]\D 匹配一个非数字字符,等价与[·^0-9]\w 匹配包括下划线在内的任何单词符号,等价与[a-zA-Z0-9]\

2021-12-12 15:31:10 243

转载 SQL优化小技巧

SQL优化小技巧一、避免使用 select *​ 使用select * 会一次查询表中所有的列数据,但是再实际场景中我们只需要其中几列数据,浪费了数据库库的很多资源,像内存和CPU等;​ 此外查询的数量通过万网络IO传输过程也会增加数据传输时间;select * 不会走覆盖索引,会出先大量的回表操作,导致SQL性能很低;​ 因此SQL语句尽量避免查询多余的列;二、使用union all代替union​ union:会对查询结果进行并集操作,去重,同进行默认的规则排序;但是这些操作需要遍历

2021-11-28 16:51:48 263

原创 Linux进程间通信

Linux进程间通信管道、消息队列、共享内存、套接字、信号量共享内存共享内存是操作系统将进程之间共享的数据内存安排为同一块物理内存段,需要使用锁保证数据的一致性创建/获取共享内存(shmget)将共享内存链接到当前进程的地址空间(shmat)通过指针范文共享内训将共享内存从当前进程中分离(shmdt)删除共享内存(shmctl)kill 相关命令[cxl@localhost ~]$ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGIL

2021-11-25 22:44:19 148

原创 一个简单的单例模板

命名空间的定义头文件mynamespace.h#ifndef _MY_NAME_SPACE_H_#define _MY_NAME_SPACE_H_//定义命名空间#define _MY_NAME_SPACE_START namespace mynamespace{#define _MY_NAME_SPACE_END }#endif单例#ifndef _INSTANCE_H_#define _INSTANCE_H_#pragma once#include <mutex>

2021-09-11 16:45:03 129

原创 一个简单的线程池

C++线程池ThreadPool.h#pragma once#include <thread>#include <mutex>#include <memory>#include <vector>#include <list>#include <iostream>#include <condition_variable>using namespace std;class Task{public:

2021-08-29 21:15:23 213 1

转载 c++中前置声明和#include

c++中前置声明和#include能用前置声明的尽量用前置声明,尽可能的避免用#include头文件尽量在cpp文件中包含头文件,而非在头文件中头文件相关若.h文件和cpp文件不在解决方案里:位于其文件中,单独的引用到.h文件会报“error LNK2019:无法解析外部符号”的错误,但是单独引用.cpp文件就可以,include是吧对应的代码直接拷贝过去当.h文件和.cpp文件没有在工程的解决方案里时,#include就是纯粹的拷贝和复制文件源码编译过程:远程序->预处理->

2021-08-29 17:24:05 1272

deepseek本地部署

deepseek本地部署

2025-02-08

c++ 使用mysql简单用例

c++ 使用mysql简单用例

2024-05-16

plc程序简单demo

plc程序简单demo

2023-11-15

测试程序,简单的mqtt通讯程序

测试程序,简单的mqtt通讯程序

2023-05-18

c++ linux 守护进程

c++ linux 守护进程

2022-11-25

OpenPose笔记PPT

openpose动作检测笔记,详细解释openpose检测的各个细节,图文并茂。

2018-08-15

空空如也

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

TA关注的人

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