自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(124)
  • 收藏
  • 关注

原创 Linux常用命令

查看文件夹下文件数量。

2023-10-06 17:16:31 323

原创 缓存淘汰算法在钉钉机器人问答中的应用

当我们询问机器人消息的时候,如果机器人没有匹配到任何可以回复的消息,这个时候,我们把最近大家使用的最多5条数据从lru缓存中取出来,返回给用户,具体效果如下:

2024-04-20 08:48:45 195

原创 Redis中BitMap在钉钉机器人中的应用

数据库中有1000w用户,每个用户签到一次,对应两个字段 `连续签到多少次` 、`签到时间`。`签到时间字段占用10个字节`,`连续签到多少天` 占用5个字节(假设一个用户能活100年,每天都签到,一个用户最多签到36500天),用户一天签到3次,早中晚各一次。1000w用户一周签到占用的空间是 3byte * 1000w = 28 MB数据,有巨大的优势。在学校中,签到一般是以周为单位,假设一周需要签到21次,也就是3个byte。bitmap中的最小存储单位是字节,一个字节也就是8个二进制位。

2024-04-20 08:36:28 243

原创 钉钉事件订阅&前缀树算法&gin框架解析

当钉钉监测到发生一些事件,如下图此处举例三个事件user_add_org、user_change_org、user_leave_org,传统的做法是,我们写三个if条件,类似下图这样字符串匹配效率比较低,于是联想到gin框架中的路由匹配算法,可以借鉴模仿gin框架的实现方式。用实际需求驱动开发,掌握知识的同时还能应用知识,理解得会更加深入。

2024-04-03 10:57:25 545

原创 二叉树后续遍历权限控制算法

背景,我们想要做一个权限控制,父部门可以查看子部门的信息,子部门不能查看父部门的信息。部门之间的关系是一棵多叉树,我们此处把部门关系暂时当作二叉树进行处理。

2024-03-30 09:22:53 174

原创 钉钉检测文件状态实现周报自动化

平时组织架构给每个人都创建了一个文件夹,然后大家每周往这个文件夹里面添加一个文档,当作自己的周报。钉钉开放了检测钉盘文件状态的接口,我们可以通过这个接口,实现周报的自动化推送提醒,自动化筛选没有写周报的同学等等。

2024-02-20 11:22:35 246

原创 钉钉接入扫码登陆

问题二:为什么authCode需要在重定向的URL中获取?为什么不可以点击钉钉的登陆页面之后,直接把这个authCode发送到后端的一个url接口中,后端直接给前端token,然后前端自行重定向到想要去的地方呢?最近一直在开发钉钉机器人项目,项目的登陆时通过账号(手机号) + 密码来实现的,这些个人信息已经已经被导入到了数据库中。通过手机号 + 密码的登陆不太方便,于是就搞了一下钉钉的扫码登陆。参考本篇文章,第三步可以忽略,第四步骤,我们使用这个方式。步骤五忽略,不知道步骤五是在干什么。

2024-02-02 19:55:57 415

原创 Python单线程异步编程、多线程、多进程编程

whisper语音识别、说话人分离、性别年龄 三个方法并行,从而加快处理速度

2024-01-11 09:09:28 867

原创 linux终端快捷键&vim大全(持续更新)

光标移动到最前方、最后放:ctrl + A 、ctrl + E以空格为单位删除:ctrl + W删除整行内容(等于直接换行,放弃当前写的内容):ctrl + C。

2024-01-04 15:50:55 259

原创 Python处理音频

从video中抽取audio。

2024-01-04 15:33:12 532

原创 启动libfvad

自己在克隆下面的项目目录下面直接写一个文件testvad.c。不能使用ubuntu22.04 ,异常报错。使用20.04正常按照官网操作即可。然后终端编译,运行即可。

2023-11-23 15:32:52 243

原创 SpeechRecognition listen()源码解析

self.energy_threshold,这个参数代表能量阈值,如果麦克风识别到的声音的能量低于这个值,则忽略不再考虑self.dynamic_energy_threshold,是否动态调整能量阈值,如果是True,能量阈值会变动,以满足不同噪音背景下的能量阈值动态调整,后面会专门介绍调整细节。

2023-11-14 17:19:14 236

原创 从Hugging Face下载数据测试whisper、fast_whisper耗时

使用fast whisper。使用whisper测试。

2023-11-06 11:13:39 775

原创 Mac安装VMware

下载完成之后,打开直接闪退,参考这篇文章解决。去官网下载一下VMware。

2023-11-05 11:49:03 166

原创 解决ubunut22.04操作麦克风

方式一:通过PulseAudio,可视化窗口查看方式二:通过PulseAudio,命令行方式查看auto_null.monitor 中的monitor代表是一个监听设备,表示是一个麦蛾啃过s16le2ch44100Hz方式三:通过ALSA(Advanced Linux Sound Architecture),命令行查看补充:ALSA 和 PulseAudio 的区别?arecord -l。

2023-11-01 09:18:45 646

原创 Python单元测试

那单元测试的难点在于写测试用例呀,测试用例需要自己想,而且还不能出错了,那只能写一些比较简单的测试用例,用人脑可以简单看出来的。有个疑问是:算法比赛中的那些测试用例是怎么搞出来的?问题一:上面的单元测试中有四方测试,如果只测试其中的一个呢?但是这样每次都要输入这么长的命令,如果通过IDE直接选中这个函数进行调试呢?写单元测试的时候,不用考虑之前写的代码的逻辑,直接自己编写测试用例就行。单元测试的测试用例要覆盖常用的输入组合、边界条件和异常。我们先在python插件中设置一下。

2023-10-25 14:26:47 674

原创 Ros2中Action两个节点主动双向通信

在robot中的子线程中,不能使用rclpy.spin_until_future_complete(self, _send_goal_future),不然会提示ValueError: generator already executing。整个过程有两个action,过程一和过程四是一个action,过程二和过程三是一个action。在robot中有两个线程,在server中只有一个主线程。过程二:服务器处理音频后,再主动给机器人发送播放请求。过程三:机器人播放完成后,给服务器一个响应。

2023-10-24 15:37:16 245

原创 supervisor英文官方文档解读&实现掉线报警通知

Evetns 是被介绍的Supervisor3.0版本一个先进的特性。如果你只是想用Supervisor作为一个重启 意外关掉进程的 工具 或者是 作为一个控制手动控制进程状态的系统,那么不需要了解Events。如果你想要使用supervisor作为 process monitoring/notification framework 的一部分,那就需要了解了。supervisord程序可能会被发送信息,这个信息能导致supervisor做一些事情。你可以发送一些信息给supervisord进程id,

2023-10-16 11:15:10 147

原创 Supervisor监控Go程序

目的:线上服务有时候会由于一些bug导致painc,程序终止,这个时候需要自动重启项目,让项目能继续提供服务。

2023-10-16 10:52:57 305

原创 ros学习笔记(1)Mac本地安装虚拟机,安装Ros2环境

提取地址:https://www.yuque.com/songbaobaodaren/fctogg/lxtcwmui4yuads6n?链接: https://pan.baidu.com/s/1l40548WZAlY0kEWyx3n3fg 提取码: 58xy。有时候我们经常会听到ubunue的版本,众多版本中,有一些是长期维护版TLS,有一些是短期维护版。我们平时用的是Linux发行版,centos,ubuntu等等,机器人就用了ubunut。这个是foxy,是项目中在用的,还有其他的版本,不太了解。

2023-10-13 16:00:54 844

原创 Python中speech recognization库解析(一)

这个会被识别成两段,因为中间停顿超过了0.2秒,第一段在做这种处理的时候,第二段仍然会被麦克风采集到,然后加入延时队列,所以说,麦克风是一直都在工作。上面的代码,扬声器在播放的时候,麦克风压根就没有工作,所以不存在扬声器说的时候,麦克风会采集到声音。这是后台开启,如何关闭呢?然后创建虚拟环境,vscode会自动帮我们创建虚拟环境,手动激活虚拟环境。那为什么项目中的会遇到这个问题,是因为项目中的麦克风是一直采集数据。新建立一个文件夹,然后拖入vscode中。目标,在播放声音的时候,禁用掉麦克风。

2023-10-12 18:25:53 534

原创 ros学习笔记(二)Vscode中使用Romote远程开发调试Ros2环境&查看ros源代码

除了.settings.json文件夹,安装Ros插件后,.vscode文件中会自动有一个c_cpp_properties.json文件,里面也是已经自动填充了内容。之所以能跳转ros环境的包,是因为我们项目文件夹下面的./vscode中settings.json中成功导入了ros环境的位置。在vscode中安装调试ros2所需要的插件,有Python、Pylance、C/C++、CMake Tools、ROS。首先,成功安装ros2环境,参考官方文档中的教程,能用运行出来此处的代码。

2023-10-11 10:48:56 914

原创 项目log日志mysql记录,熟悉python的orm框架

在.env中找到mysql的配置信息,这个是在NB服务器上运行的mysql,localhost需要变成NB服务器的ipv4地址。使用Mysql工具连接查看,连接的时候,选择ssh方式连接,用之前的公网ip连接的方式有点问题。直接在项目里面创建一个class,这个类对应着mysql里面的表。我们运行项目,可以自动建立表。

2023-10-10 15:26:34 165

原创 解决ubuntu20.04扬声器播放异常

在安装完ubuntu系统之后,准备看一段视频,但是扬声器就是不出声,插上耳机后能听到耳机的声音,但扬声器仍然发不出声音,在多次搜索百度无果,于是在Alsamixer中找到了解决方法。(这种问题可能多发于台式机,所以这个文章比较适合于台式机,因为不用扬声器的时候可以把扬声器的声音调低,原因是因为这么做后音响和耳机是同时响的。在这些情况下,ALSA 直接与音频硬件通信,绕过了 PulseAudio。PulseAudio 是默认的音频服务器和音频框架,因此大多数应用程序通过 PulseAudio 来处理音频。

2023-10-09 11:18:24 494

原创 YoloV8训练自己的模型 && Pycharm Remote Development

在本地的pycharm上面建立一个项目使用scp把代码传递到远程服务器有个问题是:如果我们直接这样传过去,那我们这个地方是空的如果不是空的,我们直接给原来的删掉,这个时候,pycharm会自动提示让你添加一个python解释题,然后添加即可。如果不这样做的话,好多package都会报红。

2023-10-06 17:51:28 227

原创 李宏毅机器学习第一课(结尾附作业模型详细分析)

机器学习就是让机器找一个函数f,这个函数f是通过计算机找出来的如果参数少的话,我们可以使用暴搜,但是如果参数特别多的话,我们就要使用Gradient DescentRegression (输出的是一个scalar数值)Classification (在设定好的选项,两个或者多个,中做出选择)Structured Learning (画一张图,写一段文字,让机器学会创造)机器人寻找一个函数式子有三个步骤。

2023-09-22 09:25:26 801 1

原创 本地连接服务器使用GPU训练模型

直接运行上面的文件,然后输入密码,这密码不是服务器的密码,但是可以直接连接到服务器上面,这个东西是什么?好厉害,居然可以跳过去服务器的账号密码。

2023-09-19 21:38:16 564

原创 启动YOLO进行图片物体识别

chatgpt解释:预训练模型是在大规模数据集上训练好的深度学习模型,然后将其权重和参数保存下来以供后续任务使用。这些模型通常是通过在大量数据上进行训练来学习表示数据的特征。一旦训练完成,这些模型可以被用于多种机器学习任务,包括目标检测、图像分类、文本生成等。迁移学习:预训练模型可以作为迁移学习的起点,用于解决具体任务。通过使用在大规模数据集上训练的模型,可以提供更好的初始权重和特征表示,从而在小规模任务上提高性能。节省计算资源:训练深度神经网络通常需要大量的计算资源和时间。

2023-09-15 16:06:42 1231 2

原创 Go把Map转成对象

问题是result是一个 map[string]string 类型,我们直接把map[string][string]给序列化成json字符串,是不符合我们预想的,因为map的值是string类型(为什么map的值不存int类型?当一个对象被存储在Redis的Hash里面的时候,如果原本是int类型,那存储到Hash的时候,是没有字符串的两个"",如果是string类型,是会有"" ,但是其实两个value本质都是string,我们正是通过这个关键点,把map给反序列化到结构体上了,并成功对应其各种类型。

2023-08-12 08:43:04 496

原创 Golang通过alibabaCanal订阅MySQLbinlog

最近在做redis和MySQL的缓存一致性,一个方式是订阅MySQL的BinLog文件,我们使用阿里巴巴的Canal的中间件来做。Canal是服务端和客户端两部分构成,我们需要先启动Canal的服务端,然后在Go程序里面连接Canal服务端,即可监听到MySQL的数据变化。

2023-08-11 08:59:29 864

原创 Gorm中的Raw不生效

我们必须有使用Scan函数,如果只是单纯的执行sql,并不想返回任何数据的话,我们在Scan里面填入nil即可。

2023-08-09 20:54:39 217

原创 Golang实现Redis分布式锁解决秒杀问题

登录是通过2个字段,一个是mobile,一个是password,生成了mobile从1到2000,密码默认是123456。我们使用有缓冲的通道和sync.WaitGroup信号量,来控制协程的数量在2000个以内。然后写一个单元测试,实现新注册的2000个用户登录,然后获取token。先写一个脚本sql,插入2000个用户。

2023-08-07 10:37:53 849

原创 Redis主从复制原理

持久化机制是在一台Redis主机上进行操作,如果这台机器出了问题,如果是持久化数据的硬盘出了问题,那数据就会丢失。主从复制就是为了解决单点故障的。同时,主从模式下采用的是读写分离来对外提供服务于是,将主服务器和从服务器之间的数据保持一致性就显得很重要了。

2023-08-05 20:16:07 200

原创 Redis持久化机制

当父子进程向这个内存发起写操作的时候,CPU会触发写保护中断,然后操作系统会在写保护中断函数里面进行物理内存的复制,更新页表,同时设置父子进程的读写权限是可读写,然后再会对这个内存进行读写。在发生写操作的时候,操作系统才会去复制物理内存。主进程修改了已经存在的key-value的时候,就会发生写时复制,这里只会复制主进程修改的物理内存数据,没修改的物理内存还是与子进程是共享的。RDB。

2023-08-05 11:18:31 145

原创 为什么要有虚拟内存?

操作系统是通过内存分段和内存分页的方式管理虚拟内存地址和物理内存地址之间的关系。

2023-07-28 20:35:50 749

原创 多线程冲突了怎么办?

操作系统为每一个进程创建巨大、私有的虚拟内存的假象,这种地址空间的抽象让每个程序觉得自己好像拥有自己的内存,但是实际上操作系统在背后让多个地址空间复用物理内存或者是磁盘。寄存器是CPU的上下文环境,线程1运行的时候,它将i的值从内存中加载到它的寄存器中,然后在寄存器中+1,如果多个线程竞争的是共享资源,如果不采取有效措施,会造成共享数据的混乱。我们做个小实验,创建两个线程,它们分别对共享变量。次,结果不是20000。

2023-07-27 14:39:19 168

原创 Gorm中Belong to 自引用

【代码】Gorm中Belong to 自引用。

2023-07-27 09:06:01 237

原创 进程、线程、协程

进程就是运行中的程序。单核cpu在某个时间,只能运行一个进程,但是在一秒钟期间,它可能会运行多个进程,这样就会产生并行的错觉,实际上这是并发。进程、程序、CPU、数据之间的关系:菜谱就是程序,买的菜就是程序需要的数据,炒菜的人就是cpu,做菜的过程就是进程。进程有运行-暂停-运行的活动规律。进程的状态变迁图:为了防止大量处于阻塞状态的进程占用物理存储空间,在虚拟内存管理的操作系统中,会把阻塞状态的进程的物理内存换成到硬盘,等再次需要运行的时候,再从硬盘换入到物理内存。

2023-07-26 16:47:43 85

原创 TCP三次握手与四次挥手

TCP四次挥手。

2023-07-25 21:20:55 214

原创 单点登录sso

发现本地没有token,使用csa来登录,登录成功之后,cas签发一个token,该token写在自己csa域名下面,然后同时作为参数给应用A一份,应用A拿到这个token之后,再来cas验证一下这个token,token有效,cas则会返回用户信息,然后系统A拿到用户信息。拿到用户信息之后,再把该信息调用自己登陆接口。然后使用自己系统的token。第二个系统,也直接去cas域名,可以直接拿到token,拿到token以后,调用cas系统进行验证,可以拿到自己的信息,然后自己调用登陆接口即可。

2023-07-21 08:16:10 127

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除