自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(123)
  • 资源 (5)
  • 收藏
  • 关注

原创 ICMP Fragmentation needed抓包实例

并且响应的报文最大字节是576,组成内容为 IP头部(20) + ICMP头部(8) + 不分片包的IP头部(20) + 不分片包的TCP头部(20) + 不分片包的剩余数据(508)IPv4 以太网最小MTU是576,故当包设置不分片并且超过交换机最大MTU时会响应ICMP Fragmentation needed报文。

2025-03-04 10:14:17 213

原创 PMTUD By UDP

【代码】PMTUD By UDP。

2025-02-13 10:58:04 404

原创 C++替代标识符

【代码】C++替代标识符。

2024-12-17 16:35:48 130

原创 IPhone 端口使用

https://support.apple.com/en-us/103229

2024-11-27 19:51:56 1241

原创 jemalloc替换标准库 malloc等函数的三种方式

这种做法是侵入式的,如果没有jemalloc库将无法启动程序,另外编译代码时需要设置。可以做到无侵入式替换,只需要在运行程序前设置。侵入式的,并且存在一定的不安全性。

2024-10-28 17:45:16 518

原创 TCP simultaneous open测试

流程梳理:客户端A (127.0.0.1:12999)、客户端B(127.0.0.1:13999)经过多次测试,延迟 5 - 20 微秒的概率会增大,如tcpdump的图,12999发送。公网环境存在传输时间,如果同时发送理论上能连接上的概率更大。状态,否则就会因为是客户端性质而收到RST信号。由于两个套接字是客户端性质,必须保证同时处于。状态,此时B在延迟1ms后发送。,间隔了 23 微秒。

2024-10-25 18:19:08 409

原创 golang 字符串浅析

a和b所指向的字符串的地址在只读段,故当放开21行尝试修改内存时,会触发。查看程序在linux的内存分布。信号,导致程序异常结束。

2024-09-12 16:51:59 587

转载 【CentOS 7更换为阿里云源】

【代码】【CentOS 7更换为阿里云源】

2024-08-30 14:59:34 832

原创 WSL迁移到其他盘

【代码】WSL迁移到其他盘。

2024-08-27 16:11:21 286

原创 Linux 调用std::call_once崩溃问题

判断是否支持多线程,弱引用意味着如果在链接时找不到 __pthread_key_create,这个引用不会导致链接错误,而是会被替换为 NULL 或者其他默认行为。但是使用-lpthread会发现它链接不上,-l只影响链接阶段,让其在pthread找到使用的符号文件,如果没有找到,则忽略-lpthread。其实问题就出现在有没有链接pthread库,gcc使用的pthread_once函数执行,故需要链接pthread库。没有链接编译时也不会报错,运行时异常描述也毫无作用,无法分析。

2024-08-13 12:01:55 380

原创 C++ enum class实现& | ^ ~等操作

【代码】C++ enum class实现& | ^ ~等操作。

2024-07-29 12:20:49 262

原创 全局静态变量、全局变量以及atexit回调的执行顺序

【代码】全局静态变量、全局变量以及atexit回调的执行顺序。

2024-06-30 16:28:05 229

原创 liburing和Linux io_uring源码阅读

此源文件内部调用liburing相关函数包含。篇幅过长,走不到的地方将会对其进行裁剪。以此为起点,阅读内核代码。

2024-06-27 18:23:39 666

原创 纤程与协程以及有栈协程和无栈协程的区别

无栈协程的做法靠的是C语言特性switch case嵌套do while,这一做法也被称作duff device(达夫设备),通过Switch跳转至上次运行的地方,当下程序的运行需要依赖寄存器,函数执行过程中如何跳转到其他函数,在没有协程的情况下可通过return,直接调用其他函数实现,但这中做法无法恢复执行原来的函数。2、协程是语言级别的,如go,rust,C#等提供的协程,c++如libco,libaco,boost::coroutine等等。,但是在概念上,两者是有区别的。已进行详细描述,不在赘述。

2024-06-22 10:21:17 498

原创 如何在没有头文件的情况下调用动态库的类的私有成员函数

所以需要使用dlsym获取到地址,但是g++在编译时会对函数名称进行修改,如上所示。故传递时需要传修改后的名字。然这么写在编译时确实没问题,但是动态加载的情况下又没有类的头文件,则无法这么写,因为无法确定函数的地址。注意:以上不涉及虚函数时可正常使用,当存在虚函数时,会存在虚函数表,无法确定被调用函数真正的地址。另一方面,类的成员函数即使在书写时无参,那么编译后其实也存在参数的,即类的this。普通函数的调用方式为直接调用,如createClass。所以在生命函数时将其声明为。调用也就和普通函数一致。

2024-05-11 13:14:42 1119

原创 libiconv转码

【代码】libiconv转码。

2024-02-05 18:57:39 242

原创 malloc(0)

【代码】malloc(0)

2024-01-29 18:17:33 208

原创 c++和qml数据传递

【代码】c++和qml数据传递。

2024-01-24 11:37:41 513

原创 范围for循环依赖begin和end函数

无论标准库还是其他库,多余begin和end函数的处理都用于迭代器的实现,而迭代器又要求使用过程中不能修改原有结构。所以在范围for循环中,不能删除和插入数据。否则,极易产生崩溃问题。如果需要在循环过程中修改结构,可以自己使用迭代器进行遍历。修改begin和end函数名后再次编译,报出以下错误。

2024-01-18 10:46:26 522

原创 git常用命令总结

/ 使用以下命令(请将 <commit_hash> 替换为之前找到的SHA值, <directory_path> 替换为被删除的文件夹路径)// 将远程主机 origin 的 master 分支拉取过来,与本地的 branch 分支合并。// 将dev分支代码合并到当前所在分支,冲突后使用git status命令查看冲突。// 查看删除前的Git日志记录,找到删除该目录前的最后一次提交。// 如果远程分支是与当前分支合并,则冒号后面的部分可以省略。// 列出远程存在的分支。// 删除name分支。

2023-12-09 20:12:23 517

原创 安装其他版本gcc的办法

切换到国内的源是因为国内镜像下载速度快, 并一个原因是可能不存在想要的gcc版本。会看到各个版本的gcc, 选择自己想安装, 不存在则切换镜像源。通过以上指令可以查看有哪些gcc版本可供下载。从gcc.txt中搜索。在此我选择阿里云的源。

2023-12-09 19:44:17 343

原创 frp V0.52.3 搭建

的配置文件,以下12000、8500需要在云服务器中的防火墙中开放tcp。以下12300、12400需要在云服务器中的防火墙中开放tcp。此版本暂时没有windows的,想在windows使用请下载。客户端同样,只不过修改路径及配置文件即可。配置完后先在服务器启动,后启动客户端。以下是使用finalshell演示。随便使用一个ssh工具登录到。输入内网机子的用户名和密码即可。

2023-11-25 12:28:27 1071

原创 gcc标准库行为细则

有个16字节栈区空间,假如写入的字节数不超过15,是存放在栈上的,不会malloc内存。作用是修改当前字符串长度,会扩容但不会缩小空间,想要缩小空间可在resize后调用。需要注意的是join和detach都会抛出异常,并且都是线程不安全的,会对。函数会修改长度变量还会将首个字符初始化。初始化成某个值要看编译器的行为。未采用读时共享写时复制的思想。即会对原来的内存拷贝一份。用的posix线程库接口,pthread。方法做到可接受任意参数和返回值的函数。实际上不会减少空间,比如本来。返回错误,然后抛出异常。

2023-11-12 15:05:37 227

原创 C/C++不同编译器对数组为0和void的处理

但是在写代码时为了兼容各种编译器,会见到在数组末尾形如char array[1]的写法,这也是一种方法,不过这种方法会因为内存对齐,导致结构体实际占用更大的空间,如下代码,将0换成1后。将数组放在结构体末尾,可以用做变长数组,动态决定数组的实际大小,即使未使用,也不会占用结构体空间。

2023-09-14 15:37:42 337

原创 获取模板类型字符串

【代码】获取模板类型字符串。

2023-09-07 18:32:21 199

原创 Lambda表达式

Lambda表达式是一种匿名函数,它可以被用作变量或参数传递给其他函数。在C++中Lambda表达式是一个重载了括号运行符的类。

2023-09-02 09:22:50 239

原创 qml显示SVG图片

【代码】qml显示SVG图片。

2023-08-20 14:37:45 1043

原创 C++运行时反射rttr库简单实现

代码 https://github.com/TonyBeen/registration。

2023-08-09 13:38:12 269

原创 如何保存类的成员变量到其他类中

【代码】如何保存类的成员变量到其他类中。

2023-08-05 11:13:24 138

原创 MCS自旋锁

【代码】MCS自旋锁。

2023-07-24 16:00:43 251

原创 如何使用curl下载github代码

如图,有那个下载图标时表示不需要鉴权即可下载,一般仓库都会开放只读权限,所以很大概率都有。那么我就需要知道它在哪个IP中,按下F12打开网络,点击下载图标。crc32.c是文件在仓库中的相对路径。比如我想下载这个crc32.c文件。madler是GitHub用户名。zlib是存储源文件的仓库名称。master是分支名称。使用如下命令进行下载。

2023-07-20 09:48:45 1924

原创 std常用的模板元编程

在这个示例中,我们使用 std::is_same 分别对四组类型进行判断。第三组是 std::string 和 const char*,它们虽然有一些相似之处,但它们并不是同一种类型,所以 is_same3 的值为 false;最后一组是 std::string 和 std::string,它们的类型完全相同,所以 is_same4 的值为 true。在这个模板类中,我们使用了 std::conditional_t 宏,如果 UseFloat 为 true,则选择 float 类型,否则选择原始类型 T。

2023-07-15 08:04:15 536

原创 QML实时加载图片的方式

这种方式需要和qml的Image配置使用,它是通过改变Image的source达到实时改变图片的效果。效果就是点击一次切换一次图片,图片随机显示。

2023-06-11 13:34:40 800

原创 c++类型注册到QML中

截止到我写这篇博客时,我所知道的注册到QML有两种方式,一种是,另一种是通过注册。两种方式各有优缺点。下面分次介绍,并综合对比。

2023-05-20 11:04:45 1581 1

原创 C++创建QML对象

通过C++创建qml需要使用两个类QQmlEngine和QQmlComponent。

2023-05-19 16:52:59 340

原创 QML插件的创建及调用

1、可以将qml文件放在qmldir中进行声明。大家可以看下QT提供的qml文件,也是这样放置的。此种方式需要将qml文件和qmldir放在一起。比如qml是存放各种插件的,其中有个插件叫。2、在main.qml导入module。那一行的名字,版本是由QT默认生成的。此种方式只需要携带qmldir即可。1、在main函数添加导入路径。路径需要是qml文件上两层目录。将qml这层的路径添加即可。module是qmldir的。那么qml必须有个文件夹是。

2023-05-13 08:34:08 877

原创 linux下coredump文件产生及分析

cordump是程序崩溃时产生的包含一些堆栈,寄存器信息的文件。windows下如何捕获并分析已做说明,在此只做linux下的说明。

2023-03-15 12:03:48 1972

原创 如何获取虚函数表及内存分析

虚函数表对于学习C++的没个人来说都不陌生,面试中也经常问到,但是虚函数表具体是什么东西呢?

2023-03-09 15:52:48 498

原创 模板静态成员变量需要使用才会构造

今天在写单例模式时,计划使用隐藏类的析构来释放内存,之前一直采用的注册方式(atexit)。但是在使用valgrind检测内存泄露时发现出现了error,之前使用注册方式从未出现。于是在隐藏类的析构加了printf,发现未输出,于是在构造又加了printf,发现也未输出。可想这个类没有发生构造,但是相比于其他静态变量,其他静态变量都是正常的,唯一的不同点在于这个隐藏类变量从未使用过。

2023-03-06 16:56:09 161

原创 c++11特性与c++17特性

作用类似union,但是比union更加方便。std::variant只包含模板参数中的一个类型的值,当转换为其他值时会抛出异常。std::string_view对指向的内容是只读的,其操作是对指针的偏移,所以性能比std::string高。编译期如果满足条件,则只对if的内容进行编译,省去else的编译,反之只编译else内容。std::variant是一个变参模板类,可以存放更多的类类型,而不仅限于基础类型。

2023-02-21 10:46:51 7329

sqlite源代码及编译好的动态库

sqlite源代码及编译好的动态库,debug,release,32位,64位都有,还有安装tcl的可执行程序 版本是3.38

2023-01-20

MinGW_920.zip

最新版的Mingw,里面附带自助下载器和已下载好的gcc和g++

2021-03-07

install.zip

本资源所使用的的opencv版本为3.4.1+opencv_contrib-3.4.1,使用cmake和vs2017编译而成.解压后无需编译,放置环境变量,vs2017引入lib文件即可使用.不知在其他vs平台可否使用.亲测vs2017可以

2020-04-10

pthreads.zip

里面包含需要的pthread有关函数,还有配置,需要的话可以下载,我看网上说的配置有些不太全,那个路径是你们安装vs的路径,可能与我的不太一样,但include大都在tools下,找到这个就应该找到了

2019-10-10

02Skin 动态库及静态库版本的使用含教学视频.7z

从网上搜到的Skin++的静态库与动态库,还有一些皮肤文件,其中包括详细的说明书和视频,希望有所帮助。

2019-09-22

MinGw-win64

前段时间一直在找这个工具,因为我的vs code要使用,后来安装了vs2013,就不再需要了,下面把它分享给大家,以供参考使用。第一次上传,还请多多包涵。

2019-05-05

空空如也

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

TA关注的人

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