首页
Search
1
FydeOS - 适合国内用户使用的Chrome OS系统
108 阅读
2
给Markdown编辑器加了一个Mermaid支持(
70 阅读
3
欣小逸食用指北
58 阅读
4
整合包食用说明
42 阅读
5
【阅读笔记】A Unified Multi-Task Semantic Communication System for Multimodal Data
36 阅读
默认分类
笔记
工作总结
论文阅读笔记
思考
技术
登录
Search
标签搜索
笔记
日常
代码
欣小逸
bot
FydeOS
Electron
sqlite3
自动控制原理
拾雨
累计撰写
23
篇文章
累计收到
22
条评论
首页
栏目
默认分类
笔记
工作总结
论文阅读笔记
思考
技术
页面
搜索到
3
篇与
的结果
2026-06-23
直播心率助手——给你的直播添加心率显示吧!
在直播游戏、进行互动或者做奇怪的 play 的时候,可能会想要把自己的实时心率显示在直播画面中,所以做了这么一款插件可以用来获取智能手环的实时心率视频教程视频教程前期准备需要支持心率广播的手环或者心率计下载并解压心率插件点我下载操作步骤1. 打开手环的心率广播功能在手环的设置->心率广播中开启不同品牌的手环开启心率广播的方式可能不同,且有些型号的手环不支持开启心率广播功能2. 在软件中连接手环打开软件后,会自动搜索附近的蓝牙设备,并按照心率设备的相似度进行排序,可以重点观察名称,包含 Band,Xiaomi,Huawei 等字样的为手环设备的概率更高,选中后点击 连接并记录 即可 连接至手环,此时下方将显示实时的心率数据3. 配置输出文件在软件的右侧可以设置输出文件的位置以及输出格式可以根据自己的喜好增加心率的前缀和后缀比如设置前缀为 心率 后缀为 喵则会显示 心率66喵 的文案,输出预览部分可以看到当前的实时输出文案输出文件设置的是心率数据的保存位置,可以选择一个好找的地方进行保存,后续在直播姬或者 OBS 中添加心率的时候需要用到这个文件4. 添加心率到直播姬设置好输出文件后,我们就可以在直播姬里添加心率数据在直播姬里选择添加素材,然后点击文字在文本内容 的右侧有一个从文件读,在这里选择我们刚刚设置的心率保存文件,然后在下方可以自行调整字体的颜色字号描边等设置,设置完成后点击添加即可添加到直播画面中4. OBS 添加心率OBS 同样的是添加素材,选择文本(GDI+)选择从文件读取 ,选中刚刚设置的心率文件,然后自行设置字体,颜色,描边等
2026年06月23日
12 阅读
0 评论
0 点赞
2022-03-16
引用、友元、重载
引用定义格式type & 名称int a; int &b=a;b和a表示同一个对象注意事项可以使用任何合法的变量名需要立即初始化,不能先定义后赋值不能重新赋值引用作为函数的参数时,传递的是参数本身而不是副本,使用引用传递函数的参数可能会导致形参变化用引用返回值友元允许外面的类和函数访问另一个类的私有成员声明为友元的可以是另一个类的成员函数,也可以是一般函数,也可以是一整个类声明部分在目标类的定义中特性不对称:A是B的友元,B不一定是A的友元不传递:A是B的友元,B是C的友元,A不一定是C的友元不继承:基类的友元不能被派生类继承慎用友元不必要情况下无需使用友元,因为是对封装性的破坏
2022年03月16日
35 阅读
0 评论
0 点赞
2022-03-13
走迷宫
我们需要做的事情:从(1,1)走到(m,n)把这个问题进行分解可以看成,①从(1,1)往八个方向走一步②再从这个点走到(m,n),我们发现,②也是在重复从(1,1)走到(m,n)的过程,直到我们走到(m,n)的位置,然后结束这个过程,告诉前面的点找到(m,n)了(return 1)。因此我们可以使用递归函数,假设函数名是solve(int x,int y),表示从(x,y)走到(m,n),那么我们的函数就可以写成int solve(int x,int y){ if(x==m&&y==n){ return 1; } if(puzzle[x-1][y-1]==0){//左上 if(solve(x-1,y-1)){ return 1; } } if(puzzle[x][y-1]==0){//上方 if(solve(x,y-1)){ return 1; } } if(puzzle[x+1][y-1]==0){//右上 if(solve(x+1,y-1)){ return 1; } } if(puzzle[x+1][y]==0){//右 if(solve(x+1,y)){ return 1; } } if(puzzle[x+1][y+1]==0){//右下 if(solve(x+1,y+1)){ return 1; } } if(puzzle[x][y+1]==0){//下 if(solve(x,y+1)){ return 1; } } if(puzzle[x-1][y+1]==0){//左下 if(solve(x-1,y+1)){ return 1; } } if(puzzle[x-1][y]==0){//左边 if(solve(x-1,y)){ return 1; } } return 0;//如果八个方向都没有找到,说明这个点到不了(m,n) }然而如果我们使用这个函数,我们会发现它陷入了死循环,因为假设我们从(1,1)递归执行solve(2,2),在执行solve(2,2)的过程中,我们又会走到(1,1),然后一直重复在(1,1)和(2,2)之间来回走的过程,陷入死循环,因此,我们需要进行限制,让已经走过的路不再纳入考虑范围里,于是我们可以使用一个visit数组,来表示在这个过程中这个点有没有走过,如果八个方向都不能走,函数会到末尾结束,返回上一个点,相当于后退了一步,所以我们需要把visit标记清除int solve(int x,int y){ visit[x][y]=1;//标记这个点,表示这个点我们已经走过了,之后走的时候不走它 if(x==m&&y==n){ return 1; } if(puzzle[x-1][y-1]==0&&visit[x-1][y-1]==0){//左上,检验可不可以走的时候同时检验这个点有没有走过 if(solve(x-1,y-1)){ return 1; } } if(puzzle[x][y-1]==0&&visit[x][y-1]==0){//上方 if(solve(x,y-1)){ return 1; } } if(puzzle[x+1][y-1]==0&&visit[x+1][y-1]==0){//右上 if(solve(x+1,y-1)){ return 1; } } if(puzzle[x+1][y]==0&&visit[x+1][y]==0){//右 if(solve(x+1,y)){ return 1; } } if(puzzle[x+1][y+1]==0&&visit[x+1][y+1]==0){//右下 if(solve(x+1,y+1)){ return 1; } } if(puzzle[x][y+1]==0&&visit[x][y+1]==0){//下 if(solve(x,y+1)){ return 1; } } if(puzzle[x-1][y+1]==0&&visit[x-1][y+1]==0){//左下 if(solve(x+1,y+1)){ return 1; } } if(puzzle[x-1][y]==0&&visit[x-1][y]==0){//左边 if(solve(x-1,y)){ return 1; } } visit[x][y]=0;//八个点都走不过去,我们退回到上一个点,在这之前,因为我们是往后退了,所以这个点重新标记成我们没有来过 return 0;//如果八个方向都没有找到,说明这个点到不了(m,n) }找路的部分已经写好了,那么我们如何把路径输出呢,我们想到,我们找到(m,n)的时候,return 了 1,之后回到(m,n)的前一个点,在if(solve(x+1,y)){ return 1; }这个语句中又向上一个点返回了1,也就是按照原路一直return 1,所以我们可以在return 1之前加一个输出,输出这个时候的(x,y),就可以把路径输出int solve(int x,int y){ visit[x][y]=1;//标记这个点,表示这个点我们已经走过了,之后走的时候不走它 if(x==m&&y==n){ printf("(%d,%d)\n",x,y); return 1; } if(puzzle[x-1][y-1]==0&&visit[x-1][y-1]==0){//左上,检验可不可以走的时候同时检验这个点有没有走过 if(solve(x+1,y)){ printf("(%d,%d)\n",x,y); return 1; } } if(puzzle[x][y-1]==0&&visit[x][y-1]==0){//上方 if(solve(x+1,y)){ printf("(%d,%d)\n",x,y); return 1; } } if(puzzle[x+1][y-1]==0&&visit[x+1][y-1]==0){//右上 if(solve(x+1,y)){ printf("(%d,%d)\n",x,y); return 1; } } if(puzzle[x+1][y]==0&&visit[x+1][y]==0){//右 if(solve(x+1,y)){ printf("(%d,%d)\n",x,y); return 1; } } if(puzzle[x+1][y+1]==0&&visit[x+1][y+1]==0){//右下 if(solve(x+1,y)){ printf("(%d,%d)\n",x,y); return 1; } } if(puzzle[x][y+1]==0&&visit[x][y+1]==0){//下 if(solve(x+1,y)){ printf("(%d,%d)\n",x,y); return 1; } } if(puzzle[x-1][y+1]==0&&visit[x-1][y+1]==0){//左下 if(solve(x+1,y)){ printf("(%d,%d)\n",x,y); return 1; } } if(puzzle[x-1][y]==0&&visit[x-1][y]==0){//左边 if(solve(x+1,y)){ printf("(%d,%d)\n",x,y); return 1; } } visit[x][y]=0;//八个点都走不过去,我们退回到上一个点,在这之前,因为我们是往后退了,所以这个点重新标记成我们没有来过 return 0;//如果八个方向都没有找到,说明这个点到不了(m,n) }
2022年03月13日
19 阅读
1 评论
0 点赞