- 博客(29)
- 收藏
- 关注
原创 wsl2上运行带有Isaac Gym的程序报错: GPU Pipeline: disabled
显示GPU Pipeline:disabled,查找相关文档发现是WSL2目前不支持Isaac Gym,时,想要在wsl2上运行,最后报错如下。
2025-03-17 16:21:03
127
原创 打不开Qtcreator(This application fail to start...........)
检查环境变量配置(我就是通过这个解决好的) 如果你安装了多个qt版本 那么qt环境变量路径则有可能混淆,检查是否混淆
2024-09-20 00:16:33
828
原创 网络学了点socket,写个聊天室,还得改进
我一开始是想着这个流程,因为一开始服务端只是接受客户端,服务端不会发消息给客户端,所以我想在原基础上,让两端都可以接受和发送,当时就有想可以多线程实行接受和发的任务,但是觉得上线程太麻烦就决定是服务端发->客户端收->客户端发->服务器收,这一条链路实行,但是问题是,我把收发是写在循环里,而 recvfrom是非阻塞等待的,所以双方实际上永远等不到对方信息所以实际上仍然是要让多线程实行接受和发的任务。
2024-06-09 15:13:40
661
1
原创 线程池以及日志类的实现
可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。va_start宏用于初始化一个va_list对象,使其指向可变参数列表的第一个参数。它需要两个参数:一个是va_list对象,另一个是紧接在可变参数列表之前的最后一个已知参数的名字。va_end宏用于清理由va_start初始化的va_list对象。在处理完可变参数后,必须调用va_end。是一种线程使用模式。va_list是一种类型,用于存储可变参数的状态。在代码中 我对可变参数进行了处理,以下是对可变参数的补充。
2024-05-25 15:32:36
665
原创 初识--Linux的虚拟地址空间
进程=内核数据结构(PCB)+自己的代码以及数据在Linux中,fork可以从当前进程创建一个新进程,创建的新进程为子进程,而当前当前进程就是子进程的父进程,而子进程会以父进程为模板,创建子进程头文件在#include 返回值:自进程中返回0,父进程返回子进程id,出错返回-1进程调用fork,当控制转移到内核中的fork代码后,内核做:1.分配新的内存块和内核数据结构给子进程2.将父进程部分数据结构内容拷贝至子进程3.添加子进程到系统进程列表当中。
2024-04-16 23:36:48
1866
原创 函数栈帧的创建与销毁(最详细的一集)上
具体来说,函数栈帧就是在函数调用过程中在程序的调用栈开辟的空间,而这些空间就用来存放:1.函数参数和函数的返回值2.临时变量(包括函数的非静态的局部变量一集编译器自动产生的其他临时变量)3.保存上下文信息(包括函数调用前后需要保持不变的寄存器)
2024-03-31 15:32:18
759
1
原创 C++11---右值引用(深度讲解)
左值是一个数据的表达式(例如变量或者解引用后的指针),我们可以对其进行取地址和修改赋值,左值可以出现在赋值符号的左边,而右值不能出现在赋值符号的左边,而左值引用就是对左值起别名,如图1. 左值引用只能引用左值,不能引用右值。2. 但是const左值引用既可引用左值,也可引用右值1. 右值引用只能右值,不能引用左值。2. 但是右值引用可以move以后的左值。
2024-03-31 15:30:30
2716
1
原创 C++迭代器与迭代器失效问题以及如何避免
迭代器失效其实就是底层迭代器指针指向的空间销毁了,变成了野指针,也就是使用了一块已经释放的空间,常见的一些容器的容量操作有可能就会导致迭代器失效问题。
2024-01-18 20:23:26
814
4
原创 排序决战!(1)插入排序与希尔排序
1. 希尔排序是对直接插入排序的优化。2. 当gap > 1时都是预排序,目的是让数组更接近于有序。当gap == 1时,数组已经接近有序的了,这样就 会很快。这样整体而言,可以达到优化的效果。我们实现后可以进行性能测试的对比。3. 希尔排序的时间复杂度不好计算,因为gap的取值方法很多,导致很难去计算,因此在好些树中给出的 希尔排序的时间复杂度都不固定4.希尔排序的gap有很多取法,例如最初Shell提出的,也有后面Knuth大佬提出的gap=[gap/3]+1。
2023-12-08 14:47:10
198
5
原创 Linux基础命令学习
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录, 则它会把前面指定的所有文件或目录复制到此目录中。“|”表示FIFOs;head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的 开头至标准输出中,而 tail 想当然尔就是看档案的结尾。2. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它 将所给的源文件或目录重命名为给定的目标文件名。
2023-11-25 23:35:36
929
6
原创 Linux的安装(云服务器)
在这个环节我们最重要的是得到三个信息: 1. 服务器的外网 IP2. 服务器的管理员账户 (固定为 root)3. 管理员账户密码。
2023-11-25 18:41:41
133
4
原创 链表——接口的实现(1)
上一期我们讲到了简单链表的实现,但是,简单链表不能满足我们在实际场景的各种运用,例如,对链表的删除,在指定区域插入信息或删除,学好链表既可以为我们接下来实现贪吃蛇打好基础。
2023-10-29 23:49:35
115
3
原创 结构体(1)
因为在一个结构体内包含一个相同的类型的结构体变量 结构体就会无穷的大 无穷的小,(我身体里面有我,我有我的身体,我的身体又有我.......)是对前面匿名结构体类型的重命名产生的,
2023-09-28 15:27:10
78
2
原创 数据在内存中的存储
对于整形来说 ,数据存放在内存中的其实是补码why?因为在计算机系统中 使用补码,可以将符号位和数值统一处理例:-3的补码 二进制是-> 反码->补码为符号位 数值也可以统一处理。
2023-09-24 21:15:16
132
2
原创 字符串函数的使用和自我实现
在c语言中,有一系列的函数是专门做字符分类的,而这些函数的使用就需要包括一个头文件 名叫ctype.h这个头文件包括了以下函数而这些函数的使用也十分相似 举例说明这个只需把转换的操作改成以下操作。
2023-09-21 23:43:49
71
1
原创 scanf if 语句的学习
如你可见 scanf函数后里放着两个占位符 这个占位符和后面的 a b按照顺序相对应。*&*它是取地址 也就是说当你上面取过&的时候 下面就不必在用的时候加上&了。学会了之后 可以干许多事情了 作业也写了很多。今天不是很想继续写博客了 就这样吧嘿嘿。我在其中犯的错误是是没有注意&的作用。我写作业的时候在这个点卡了一会(悲)
2023-07-23 17:24:36
178
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人