- 博客(71)
- 收藏
- 关注
原创 【项目复盘】基于可变参模版实现的线程池
用户写完任务执行函数返回值的类型不可知,在主线程里用户调用Result获取返回值时,如果任务线程未执行完需要阻塞住。消费者循环消费,只要有粮食就会抢锁,进入等待状态释放锁等待生产队召唤,消费完一份后会通知同伴们也来拿,并且召唤生产队你该生产了。当基类指针指向派生类的时候,若基类析构函数不声明为虚函数,在析构时,只会调用基类而不会调用派生类的析构函数,从而导致内存泄露。fixed模式注意初始化与线程数量有关的变量,这些变量应该都是原子的,这样在多线程执行里会保证变量的正确性。注意基类的析构要实现成虚函数;
2024-12-09 11:14:35
522
原创 【项目复盘】CUDA编程——Reduce sum cuda核函数优化
众所周知shared memory的读写要千万注意sync,这是为了保证一个block里所有线程的数据都正确写入后再做后续的计算。那其实这个层面是为了同步不同warp的,在同一个warp是不需要sync,因为并行是以一个warp为单位,如下图,绿色框是指warp里所有线程都是在同一时间内执行相同的指令。所以很简单的想法是当迭代到工作线程tid<32时,就可以不做__syncthreads()了。
2024-12-08 21:42:20
1033
原创 【开发】内网穿透ztncui搭建私有节点
前面搭建moon节点转发的确会降低延迟,但是总有出现moon节点解析不成功的例子,于是疯狂寻找答案是为什么?终于在知乎上找到这样一个答案。
2024-06-22 10:20:46
807
1
原创 【开发】利用SSH端口转发通过阿里云服务器访问实验室设备
最近实验室搬家,导致无法访问内网,之前搭建的zerotier组网成功利用手机热点访问,但是无奈zerotier的不稳定导致开发效率低,但是这个时候我发现linux上的公网服务器(ubuntu)和实验室服务器(ubuntu)之间的连通性很好,延迟基本很低,这时候有个想法就是将公网服务器当做跳板机,经过chatgpt可以找到方法:SSH隧道转发。
2024-06-21 16:06:55
379
原创 【刷题】代码随想录算法训练营第四十三天|518、零钱兑换II,377、组合总和IV
如果求组合数就是外层for循环遍历物品,内层for遍历背包。如果求排列数就是外层for遍历背包,内层for循环遍历物品。
2024-05-19 16:29:00
283
原创 【刷题】代码随想录算法训练营第四十二天|1049、最后一块石头的重量II,494、目标和,474、一和零
dp一维不是很熟,继续多过几遍。i++){j--){
2024-05-17 20:32:11
231
原创 【刷题】代码随想录算法训练营第四十一天|01、背包问题二维,01、背包问题一维,416、分割等和子集
dp[i-1][j]和dp[i - 1][j - weight[i]] 都在dp[i][j]的左上角方向(包括正上方向)。这句话不是说正上方和左边,而是一个方向,剩余背包容量一定是在左上方去取。转换成背包问题,即物品的重量等于物品的价值,最后背包里刚好装满。
2024-05-16 19:32:30
315
原创 【开发】模型部署笔记
对称量化的浮点值和 8 位定点值的映射关系如下图,从图中可以看出,对称量化就是将一个tensor中的[-max(|x|), max(|x|)]内的FP32值分别映射到8bit数据的[-128, 127]的范围内,中间值按照线性关系进行映射,称这种映射关系是对称量化。可以看出,对称量化的浮点值和量化值范围都是相对于0对称。在线量化,即在模型训练时加入伪量化节点,用于模拟模型量化时引起的误差。根据偏移量Z是否为0,可以将浮点数的线性量化分为两类:对称量化和非对称量化。5、对称量化和非对称量化。
2024-05-15 20:40:37
750
原创 【刷题】代码随想录算法训练营第四十天|343、整数拆分,96、不同的二叉搜索树
【代码】【刷题】代码随想录算法训练营第四十天|343、整数拆分,96、不同的二叉搜索树。
2024-05-15 10:49:23
212
原创 【刷题】代码随想录算法训练营第三十九天|62、不同路径,63、不同路径II
动态规划经典,不过注意这里的初始化,第一行和第一列都是1,因为只能向右和向下走,因此第一行和第一列所有格点都只有一种方案抵达。
2024-05-14 10:01:31
183
原创 【刷题】代码随想录算法训练营第三十八天|509、斐波那契数,70、爬楼梯,746、使用最小花费爬楼梯
动规是由前一个状态推导出来的,而贪心是局部直接选最优的,对于刷题来说就够用了。
2024-05-13 10:43:03
352
2
原创 【刷题】代码随想录算法训练营第三十六天|738、单调递增的数字,968、监控二叉树
【代码】【刷题】代码随想录算法训练营第三十六天|738、单调递增的数字,968、监控二叉树。
2024-05-11 12:12:04
271
原创 【刷题】代码随想录算法训练营第三十五天|435、无重叠区间,763、划分字母区间 ,56、合并区间
左边界和有边界排序,注意sort的排序规则函数编写。建立hash索引,找到分割点。
2024-05-10 12:07:55
366
原创 【刷题】代码随想录算法训练营第三十四天|860、柠檬水找零,406、根据身高重建队列,452、用最少数量的箭引爆气球
【代码】【刷题】代码随想录算法训练营第三十四天|860、柠檬水找零,406、根据身高重建队列,452、用最少数量的箭引爆气球。
2024-05-09 10:31:21
208
原创 【刷题】代码随想录算法训练营第三十三天|1005、K次取反后最大化的数组和,134、加油站,135、分发糖果
从前到后 和 从后到钱 两遍贪心遍历。
2024-05-08 10:46:57
199
原创 【刷题】代码随想录算法训练营第三十二天|122、买卖股票的最佳时机II,55、跳跃游戏,45、跳跃游戏II
【代码】【刷题】代码随想录算法训练营第三十二天|122、买卖股票的最佳时机II,55、跳跃游戏,45、跳跃游戏II。
2024-05-07 17:06:13
162
原创 【刷题】代码随想录算法训练营第三十一天|455、分发饼干,376、摆动序列,53、最大子序和
【代码】【刷题】代码随想录算法训练营第三十一天|455、分发饼干,376、摆动序列,53、最大子序和。
2024-05-07 10:47:46
170
原创 【刷题】代码随想录算法训练营第二十九天|491、递增子序列,46、全排列,47、全排列II
【代码】【刷题】代码随想录算法训练营第二十九天|491、递增子序列,46、全排列,47、全排列II。
2024-05-06 10:25:56
242
原创 【刷题】代码随想录算法训练营第二十七天|39、组合总和,40、组合总和II,131、分割回文串
【代码】【刷题】代码随想录算法训练营第二十七天|39、组合总和,40、组合总和II,131、分割回文串。
2024-05-05 15:26:16
270
原创 【刷题】代码随想录算法训练营第二十三天|669、修剪二叉搜索树,108、将有序数组转换为二叉搜索树,538、把二叉搜索树转换为累加树
【代码】【刷题】代码随想录算法训练营第二十三天|669、修剪二叉搜索树,108、将有序数组转换为二叉搜索树,538、把二叉搜索树转换为累加树。
2024-04-25 11:09:05
216
原创 【刷题】代码随想录算法训练营第二十二天|235、二叉搜索树的最近公共祖先,701、二叉搜索树中的插入操作,450、删除二叉搜索树中的节点
不停向尾部插入节点,当遍历到空节点时就是叶子节点,这时候申请一个新节点存放插入值。理解一下此题的动画过程,第五种情况。回忆一下递归的三部曲,以这题为例。同理右边搜索也是一样。3、确定单层递归逻辑。
2024-04-24 22:19:46
372
原创 【刷题】代码随想录算法训练营第二十一天|530、二叉搜索树的最小绝对差,501、二叉搜索树种的众数,236、二叉树的最近公共祖先
二叉搜索树是有序的,中序遍历变成一个有序数组,然后在有序数组上求最值。没懂,第二天早上再看看,今天有点累。
2024-04-23 20:38:06
272
原创 【刷题】代码随想录算法训练营第二十天|654、最大二叉树,617、合并二叉树,700、二叉搜索树中的搜索,98、验证二叉搜索树
二叉搜索树是一种常用的数据结构,也称为二叉查找树。它是一种有序的树结构,每个节点最多有两个子节点,左子节点的值小于父节点的值,右子节点的值大于父节点的值。这种特性使得在二叉搜索树中可以进行高效的查找、插入和删除操作。最正常的思路可能就是迭代法层序遍历过去了,不过这题前序中序后序都很简单,注意递归逻辑。递归中序遍历将二叉搜索树转变成一个有序数组。
2024-04-22 16:01:31
414
原创 【刷题】代码随想录算法训练营第十八天|513、找树左下角的值,112、路径总和,113、路径总和II,106、从中序与后序遍历序列构造二叉树,105、从前序与中序遍历序列构造二叉树
层序遍历直到最后一层,然后每次记录每一层的第一个值就可以找到最后一行最左边的值。找深度最大的叶子节点,然后优先左边搜索,就可以记录最后一行最左边的值。递归函数什么时候需要返回值?什么时候不需要返回值?
2024-04-20 13:59:21
363
原创 【科研】YOLOv8中anchor_points可视化(更新中)
感叹一下:如果GPT能在我刚上大学的时候出来,也许我能学的比现在好太多,毕竟大学有一个比自己优秀太多的人引导着是多么地捷径。
2024-04-19 23:00:25
1346
原创 【刷题】代码随想录算法训练营第十七天|110、平衡二叉树,257、二叉树的所有路径,404、左叶子之和
分别求出其左右子树的高度,然后如果差值小于等于1,则返回当前二叉树的高度,否则返回-1,表示已经不是二叉平衡树了。如何判断以当前传入节点为根节点的二叉树是否是平衡二叉树呢?当然是其左子树高度和其右子树高度的差值。如果当前传入节点为根节点的二叉树已经不是二叉平衡树了,还返回高度的话就没有意义了。递归的过程中依然是遇到空节点了为终止,返回0,表示当前节点为根节点的树高度为0。所以如果已经不是二叉平衡树了,可以返回-1 来标记已经不符合平衡树的规则了。返回值:以当前传入节点为根节点的树的高度。
2024-04-19 11:11:41
249
原创 【训练营】DateWhale——动手学大模型应用开发(更新中)
大模型时代从GPT爆发开始到现在已有一年多了,深度学习发展之快无法想象,一味感叹技术发展速度超越个人学习速度是没用的,倒不如花点时间参加一些活动,比如思考大模型时代下如何训练小模型呢?毫无例外,openai的GPT系列是我们值得了解的一个重要模型,不过很可惜其并未开源,现在我们常用的GPT是3.5-turbo,可以执行各种任务,包括代码编写、数学问题求解、写作建议等。其余模型见datawhale的开源学习文档。
2024-04-17 15:39:39
1060
1
原创 【刷题】代码随想录算法训练营第十五天|层序遍历,226、翻转二叉树(优先掌握递归),101、对称二叉树(优先掌握递归)
注意children中是一个vector,看题解方式以后也多用auto和迭代器的写法吧。注意三个if的关系,并不是if、else的非此即彼的关系。注意这题返回的应该是root节点,不要死记模版!广度优先遍历,一层一层的遍历输出。层序遍历每一次,保留最后一个节点。
2024-04-17 14:07:06
434
1
原创 【刷题】代码随想录算法训练营第十四天|二叉树:递归遍历,迭代遍历,统一迭代
中序遍历是左中右,先访问的是二叉树顶部的节点,然后一层一层向下访问,直到到达树左面的最底部,再开始处理节点(也就是在把节点的数值放进result数组中),这就造成了处理顺序和访问顺序是不一致的。前序遍历是中左右,每次先处理的是中间节点,那么先将根节点放入栈中,然后将右孩子加入栈,再加入左孩子。不是将前序改一下顺序就可以,因为前序访问的元素和要处理元素顺序是一致的,都是中间节点为先。后序遍历巧妙利用反转解决。暂时还不太理解 看讲解吧。
2024-04-16 10:49:45
361
原创 【刷题】代码随想录算法训练营第十三天|239、滑动窗口最大值,347、前K个高频元素,总结
使用单调队列。在代码随想录里好好理解一下单调队列处理这道滑动窗口最大值的问题,理解设计的MyQueue中的pop、push和front。347、前K个高频元素小项堆。
2024-04-16 09:13:52
316
原创 【刷题】代码随想录算法训练营第十一天|20、有效的括号,1047、删除字符中的所有相邻重复项,150、逆波兰表达式求值
经典栈解决问题:一遍循环,查看栈顶是否和当前循环元素相等,若相等栈顶出栈,否则入栈。三种不匹配:第一种是缺少匹配项,第二种是错误匹配项,第三种事多余匹配项。遇到运算符则取出栈顶两个数字进行计算,并将结果压入栈中。括号匹配是使用栈解决的经典问题。
2024-04-13 20:02:09
271
原创 【刷题】代码随想录算法训练营第十天|232、用栈实现队列,225、用队列实现栈
具体看讲解中如何用栈模拟队列的出和入。注意两个队列和一个队列模拟栈的想法。
2024-04-12 16:45:32
236
原创 【刷题】代码随想录算法训练营第九天|28、实现strStr(),459、重复的子字符串,字符串总结,双指针回顾
KMP 先跳过KMP 先跳过建议如果题目关键的部分直接用库函数就可以解决,建议不要使用库函数。如果库函数仅仅是 解题过程中的一小部分,并且你已经很清楚这个库函数的内部实现原理的话,可以考虑使用库函数。
2024-04-12 11:21:46
247
原创 【刷题】代码随想录算法训练营第八天|344、反转字符串,541、反转字符串II,卡玛网:54、替换数字,151、翻转字符串里的单词,卡玛网:55、右旋转字符串
坚持不易,继续加油!
2024-04-10 11:10:59
194
原创 【刷题】代码随想录算法训练营第七天|454、四数相加II,383、赎金信,15、三数之和,18、四数之和,总结
四数之和的双指针解法是两层for循环nums[k] + nums[i]为确定值,依然是循环内有left和right下标作为双指针,找出nums[k] + nums[i] + nums[left] + nums[right] == target的情况,三数之和的时间复杂度是O(n。一些同学可能想,用数组干啥,都用map完事了,其实在本题的情况下,使用map的空间消耗要比数组大一些的,因为map要维护红黑树或者哈希表,而且还要做哈希函数,是费时的!这道题利用哈希法去重逻辑复杂,使用双指针法比哈希法高效。
2024-04-09 13:48:39
434
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人