- 博客(138)
- 问答 (1)
- 收藏
- 关注
原创 模板函数使用is_same的注意事项
它允许编译器在编译期评估条件表达式,并且只编译满足条件的分支。这可以避免不必要的代码路径被编译,从而防止类似错误的发生。1、如果是 C++17 ,则可以使用 if constexpr 来让编译器只编译那些在编译时确定为 true 的分支,在模板函数中使用is_same判断类型的话,编译器会实例化所有路径,即使某些路径在运行时不会被执行。例如如果存在从string转为int的路径,即便T为string时不会进入该路径,依旧会编译失败。这意味着编译器会检查所有的分支,确保它们都是有效的。
2024-12-09 09:32:11
212
原创 涉及sleep的QTimer无法触发超时
QThread::sleep会阻塞QTimer超时事件的触发,应该在sleep前调用下QCoreApplication::processEvents()主动处理事件。
2024-11-12 10:48:03
308
原创 C++/QT可用的websocket库
库说明优势劣势是否免费商用Qt WebSocketsQt框架中的WebSocket模块。不需要额外集成第三方库;支持异步处理,适合在Qt应用程序中处理并发WebSocket请求。性能较差付费libwebsockets轻量级的C库,用于开发WebSocket服务器和客户端。高性能,低内存占用,支持多种平台,包括SSL/TLS支持,适合对性能有高要求的场景。不是特别流行,文档支持较少是uWebSockets简单、高效且轻量级的WebSocket和HTTP实
2024-10-26 20:45:26
606
原创 axios delete请求如何发给springboot
但是delete只有两个参数:url和config,data在config中,所以需要写成。post和put有三个参数,url,data和config,所以在使用这两个时,可以写成。将data改为params即可,param里的参数会自动拼接在URL中。axios 的delete和post,put在传值上有点区别。需要有对应的类来接收请求体。
2024-03-01 16:39:12
588
原创 C++/CLI使用Office.Interop库创建excel,同时解决写入速度慢的问题
【代码】C++/CLI使用Office.Interop库创建excel,同时解决写入速度慢的问题。
2023-04-18 16:16:57
529
原创 腾讯综合测评打不开摄像头的原因
但腾讯的综合测评链接点进去没有摄像头请求。那么很可能是你禁用了麦克风的缘故。如果下面这个网站可以打开摄像头。
2023-03-05 11:12:24
2807
5
原创 C# listview 闪烁 短暂消失/清空
如果listview放在groupBox里,那么在更新box里的其他控件时,listview可能会闪烁。将groupBox删除后就不闪了。
2023-02-03 10:59:25
450
原创 c# EditedFormattedValue 没有set访问器
对于DataGridView里的行的checkbox的EditedFormattedValue不能直接修改,应该用类型转换后的指针对其进行操作。
2023-01-09 11:40:18
239
原创 C# DataGridView 禁用或灰显单元格 只读 清除单元格选择
C# DataGridView 禁用或灰显单元格 只读 清除单元格选择。
2022-11-08 13:45:39
1359
原创 科软 高级数据库期末考试 回忆
名词解释:可伸缩性、导出分段、2pc、动态授权问答:如何构造线性散列表、er图如何转联系、限定关系sj证明、锁的相容性矩阵、保守时间戳为什么能消除重启动大题:磁盘的各种时间、冲突可串...
2022-01-11 11:22:29
358
原创 剑指 Offer 06. 从尾到头打印链表 C++
先正序插入vector数组,再返回反转的数组vector<int> reversePrint(ListNode* head) { ListNode* newhead = NULL, *p = head; vector<int> res; while (p) { res.push_back(p->val); p = p->next; } return vector<int>(res
2021-12-27 09:06:42
314
原创 剑指 Offer 30. 包含 min 函数的栈 C++ 时间91%
用一个记录当前最小值的栈mins作为辅助,如果新入栈的数小于等于(因为可能有重复数值,所以取等号)mins.top或者mins是空的,则两个栈一起入栈。随后出栈时如果出的是当前最小值,则两个栈一起出栈。class MinStack {public: stack<int> s, mins;public: /** initialize your data structure here. */ MinStack() { } void push(int x) { s.pu
2021-12-26 10:25:12
389
原创 剑指 Offer 09. 用两个栈实现队列 C++ 时间99.87%
栈s1只进,栈s2只出。入队时统一加入到s1,此时出栈顺序刚好跟出队顺序是反的。出队时将s1的所有元素以此加入s2,此时s2的出栈顺序即为出队顺序,在s2里Pop即可。需要注意的是,只需要在s2为空时再搬运s1即可class CQueue { stack<int> s1, s2;public: CQueue() { } void appendTail(int value) { s1.push(value); } int deleteHead() { //
2021-12-26 09:44:58
427
原创 数据挖掘期末真题回忆
填空1、线性回归和线性分类的几何意义2、数据清理的4个方法3、闵可夫斯基距离公式4、g-margin距离公式;该距离为负且值很小时意味着什么5、卷积CNN中降维的方法大题1、联合概率分布模型和线性模型的区别2、4层神经网络训练的过程3、模式挖掘找关联规则4、(1)朴素贝叶斯模式下画因果图,写出联合概率XX公式(2)用EM算法(可用Kmeans)算聚类5、用误差不纯度构建决策树...
2021-12-20 21:55:29
230
原创 力扣190. 颠倒二进制位 C++
采用字符串的方式,每次检查n的最后一位并添加到字符串中,随后n右移1位,最后根据字符串的情况按位权累加class Solution {public: uint32_t reverseBits(uint32_t n) { string num = ""; uint32_t res = 0; while (n != 0) { // 移位前后不相等 说明最后一位是1 if (n >&g
2021-12-13 08:15:53
718
原创 力扣191. 位1的个数 C++ 100%时间
如果一个二进制串最后一位是1,那么它右移1位再左移1位就会丢掉这个1,对应的数值也就会小1,那么就可以通过判断移位前后数值是否不变,来判断当前是否丢掉了1个1,如果丢掉了,计数器就+1,然后n右移1位,否则就直接右移,直到n变为0。int hammingWeight(uint32_t n) { int count = 0; while (n != 0) { if (n >> 1 << 1 != n) ++count;
2021-12-03 15:57:39
167
原创 力扣204. 计数质数 C++ 埃氏筛
整体思路是埃氏筛 但外层循坏不必到n,而是到√n即可,内层循环则从i^2开始,每次递增i注:在初始化isprime数组时,如果用memset可能会出错int countPrimes(int n) { if (n <= 2) return 0; n--; int count = 0; bool *isprime = new bool[n+1]; for (int i=0; i<n+1; ++i) isprime[i] =
2021-12-02 09:33:47
408
原创 力扣198. 打家劫舍 动态规划 C++
第 1 步:状态定义dp[i]:偷到i号屋时 能偷到的最大金额第 2 步:推导状态转移方程dp[i] = nums[i] + maxdp_i_2其中 maxdp_i_2 = max(dp[i - 2], maxdp_i_2)因为偷东西不一定必须只隔一间屋子,隔两间也可以,如果只是按隔一间屋子计算,那么样例2 1 1 2就会出错,因为该例中隔2间屋子偷才能最大化。所以状态转移方程里的第二部分应该是从dp[0]到dp[i-2]里的最大值M,从M的那间屋子开始偷才是最大化金额第 3 步:思考初始化
2021-12-02 09:33:03
1064
原创 剑指 Offer 46. 把数字翻译成字符串 动态规划 c++
这题类似 70.爬楼梯,动态规划的思想第 1 步:状态定义dp[i] 表示长度为i时 有多少种翻译方法。第 2 步:推导状态转移方程dp[i]=dp[i−1]【+dp[i−2]】(1)长度为i-1时若有n种方法,则如果将第i个数字单独加入,就相当于给这n个解法的末尾加一个翻译,总数n不变,所以一开始是dp[i]=dp[i−1](2)但要注意,加dp[i−2]是有条件的,条件就是第i个数字和第i-1个数字构成的两位数不大于25,比如是‘23’(对应’x’),此时,相当于在dp[i-2]的n个方法后
2021-12-02 09:31:58
473
原创 力扣 495. 提莫攻击 C++
判断下一次中毒时间是否在持续时间内即可,如果在就只累加时间差timeSeries[i + 1] - timeSeries[i],否则就累加durationfor循环在len-1时结束即可,因为最后一次中毒一定会累加duration的时间,所以最后返回sum + durationint findPoisonedDuration(vector<int>& timeSeries, int duration) { int sum = 0; int len = timeSeries.si
2021-12-02 09:30:27
656
原创 力扣344.反转字符串 C++ 2行
左右双指针即可void reverseString(vector<char>& s) { for (int left = 0, right = s.size() - 1; left < right; ++left, --right) swap(s[left++], s[right--]);}
2021-12-02 09:29:07
514
原创 unity 多玩家计分 判断是谁发的子弹
子弹脚本里添加发射者信息public string shooterName;public string ShooterName { get; set; }玩家脚本Player.cs中,设置加分方法,以及在生成子弹时,设置发射者名字// 加分方法public int score;public int Score { get; set; }// 设置发射者bulletPrefab = Instantiate(子弹预制体, 生成位置, Quaternion.identity);bulletP
2021-11-30 15:42:59
2872
原创 二叉树 中序遍历非递归 同时输出层号 栈的应用
伪代码int MidSq(Bintree *t){ if (t == NULL) // 空树时直接退出程序 return 0; InitStack(stack); // 初始化栈 Bintree *p = t; // p指向头节点 int layer = -1; // 记录层号 while (p!=NULL || stack->top!=-1) { // 只要P不是空 就一直往左探测 /
2021-11-14 00:00:00
98
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人