- 博客(17)
- 资源 (5)
- 收藏
- 关注
原创 wsl -l -o 无法解析服务器的名称和地址
2、刷新dns:ipconfig /flushdns 注意一定要执行这一步,很多人说改dns没用估计是没刷新dns。1、将DNS更改为“114.114.114.114 8.8.8.8” 如下图所示,
2024-07-17 22:46:46 388
原创 写入文件自动加数据与应用程序无法正常启动(0xc000007b)
然后把几个qt库都放进去了,还是报错。最后看到这个程序引用了一个蓝牙动态库dll,怀疑是这个库跟我的应用不兼容。最后找到一个查看dll文件信息的工具dumpbin.exe,通过dumpbin.exe /headers xxx.dll 可以看到这个dll是32位。今天使用QDataStream,通过<<写入QByteArray时,会自动多4个字节,通过使用writeRawData解决。c语言使用fwrite写入文件时,需要注意如果写入了0x0A,那么会自动在前面加上0x0D,导致二进制数据多了一个字节。
2024-07-11 22:05:20 178
原创 jsoncpp库,Json::StreamWriterBuilder 和 Json::FastWriter对比
Json::StreamWriterBuilder 和 Json::FastWriter 都是 C++ JSON 库(例如,Jsoncpp)中用于序列化(即编码)JSON 数据的工具,但它们的设计目标和性能特点有所不同,这导致了 Json::FastWriter 通常在速度上占有优势。
2024-06-26 10:32:50 498
原创 可变参数宏 serverPanic
当你在代码中调用 serverPanic 并传入参数时,这些参数会被收集并传递给 _serverPanic 函数,同时 _serverPanic 函数还会接收当前文件名和行号信息,以便于调试和错误追踪。这是宏展开时调用的 _serverPanic 函数。因此,_serverPanic 函数会被调用并传递三个参数:当前文件名、当前行号以及 serverPanic 调用中提供的所有参数。这是另一个函数调用,通常在 Redis 代码中用于表示代码不应该到达此点,即这是一个不应该被执行的代码路径。
2024-06-25 12:05:55 304
原创 linux如何查看环境变量
如果你想查看另一个进程的环境变量,可能需要使用更高级的技术,比如读取/proc/<pid>/environ文件,其中<pid>是进程的 ID。有些环境变量可能被定义在系统级或用户级的配置文件中,例如/etc/environment或~/.profile,~/.bashrc,~/.bash_profile等。printenv命令也用于查看环境变量,它可以没有参数列出所有环境变量,也可以接受变量名作为参数来显示特定变量的值。在 Linux 系统中,你可以使用几种不同的命令来查看环境变量。
2024-06-25 11:05:51 3367
原创 malloc申请的内存,free时如何知道要释放多少内存
在x86_64架构下,glibc的ptmalloc通常在分配的内存块的头部附加了一个称为“前哨”(或“头信息”)的结构,这个结构包含了有关该内存块的信息,例如它的大小、是否被使用等。需要注意的是,malloc分配的内存块的前哨结构通常是不可见的,即当程序员通过malloc返回的指针访问内存时,他们不会直接看到这部分元数据。总之,malloc分配的内存块在内部可能包含额外的元数据(包含了前一块的大小,当前块的大小,标记位),但这部分通常对程序员是透明的,且其具体布局和大小取决于底层内存管理库的实现。
2024-06-19 14:27:27 234
原创 如何使用gdb调试死锁问题
3、选择一个futex_wait的线程,打印互斥量的详细信息, p *((pthread_mutex_t *)0x5634ec6081a0) ,owner表示当前拥有该互斥量的线程的LWP值。2、然后执行info threads,找到futex_wait的线程,会显示正在等待的互斥量mtx1和mtx2,和互斥量的地址。5、检查futex_wait线程的当前调用函数和owner的当前调用函数,检查一下是不是存在互相等待的情况,然后改进代码。4、然后进入owner对应的线程,查看一下堆栈,看看调用了什么函数。
2024-06-19 11:34:56 517
原创 atomic_flag实现自旋锁
std::atomic_flag是C++标准库中用于实现自旋锁的一种特殊类型的原子变量。它是一个轻量级的同步原语,专门设计用于实现自旋锁逻辑。std::atomic_flag只能存储一个单一的布尔值,但它保证了这个值的原子性和内存顺序一致性,使得它可以在线程间安全地共享。
2024-06-15 14:24:10 400
原创 c++线程detach
当进程终止时,内核遍历PCB中的资源列表,释放所有分配给该进程的资源。这包括关闭所有打开的文件描述符,释放内存页,清理信号量和定时器,以及终止所有线程。在main结束之前,对于没有detach的线程,需要用join等待线程结束,对于使用了detach的线程,可以通过一些同步机制,通知子线程结束,然后主线程再结束。// 主线程结束后,即使子线程还没结束,也会被操作系统回收。// 进程结束后,即使子线程还没结束,也会被操作系统回收。当进程退出时,这个后台线程会被pcb回收,不会报错。一旦线程被分离,原始的。
2024-06-14 10:34:50 855
原创 Linux Shell脚本获取函数返回值
echo "两个数字分别为 $num 和 $anothernum!# return $(($num+$anothernum)) # 返回数值。sum=$(expr $num + $anothernum) # 返回数值。# 使用通配符获取上一条指令的返回值。echo "输入的两个数字之和为 $result!echo "两个数字进行相加运算..."echo "获取字符串结果:$resutl"echo "输入第一个数字: "echo "输入第二个数字: "ubuntu23.04,输出结果如下。
2024-06-12 16:40:10 702
原创 cpp-httplib初次接触
线程池循环执行任务,实际调用的是process_and_close_socket这个函数,最终在dispatch_request里面执行get配置的实现方法。5、listen_internal函数是一个循环,把所有请求都封装为一个lambda,放到线程池的任务队列中。3、调用get其实就是把请求url与实现方法做一个绑定,并且保存到get_handlers_2、c++用这个库做http服务端很简单,只需要实现具体接口就行。6、线程池用到了一个友元类,和仿函数。
2024-06-11 22:25:28 364
原创 Ubuntu 22.04与win11通过samba共享文件
1、ubuntu安装samba2、安装完成后,修改配置文件/etc/samba/smb.conf,修改之前最好备份一下,末尾添加如下内容。[samba] # windows映射网络驱动器时,需要用到这个名字。
2024-06-11 17:01:14 575
转载 Oracle高级查询
Oracle高级查询介绍 - 恒生LIGHT云社区 (hs.net)Oracle高级查询高级查询在数据库的开发过程中应用广泛,从分组查询、多表查询和子查询三个方面介绍Oracle的高级查询。分组查询分组查询是按照一定的规则进行分组,分组以后数据会聚合,需要使用聚合函数,但是使用聚合函数不一定要分组,分组的关键字是group by。常用的聚合函数有:最大值max(),最小值min(),平均值avg(),总和sum(),统计个数count()count函数使用列名时会自动忽略空值..
2021-10-24 21:07:59 88
原创 QLabel 全英文字符串不支持换行
Qlabel,显示全英文字符串时,不支持换行。因为全英文字符串中间没有空格,Qlabel会把整个字符串当成一个单词,而一个单词不支持换行。如果要换行可以使用QTextBrowser
2016-11-18 23:14:52 2465
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人