- 博客(361)
- 收藏
- 关注
原创 MySQL(配置)——MariaDB使用
MariaDB 和 MySQL 作为两个流行的关系型数据库管理系统,它们的区别可以从多个角度来探讨。尽管 MariaDB 最初是 MySQL 的一个分支,但随着时间的推移,它们逐渐在功能、性能和开发方向上有所不同。是 MySQL 的一个分支,侧重于开源、社区驱动、性能优化和更多的存储引擎支持。由 Oracle 控制,主要用于企业级应用,支持商业许可证,并且它的开发更多由商业公司主导。如果你正在使用 MySQL,MariaDB 是一个相对安全的替代品,特别是对于那些关心开源和社区支持的开发者和组织。
2025-07-29 20:29:43
124
原创 vi编辑器的使用
本文详细介绍了vi编译器的命令行模式、插入模式和底行模式,包括切换命令、编辑操作、光标移动、查找替换以及复制剪切功能。vi编辑器的使用-CSDN博客。
2025-07-29 17:39:33
252
原创 小智源码分析——音频部分(二)
上周从上图的getaudiocode()方法进去感受了一下底层小智的构造如何实现。所以用一个codec来接收我们所构造的音频对象。下来是用构造好的音频对象来调用音频初始化服务Initialize,因为启动函数Application函数的类中有audio_servicez_所以可以进行调用。这段初始化代码的核心作用是:1绑定并启动音频编解码器2配置音频数据流的格式和处理流程3按需初始化音频处理器和唤醒词检测模块4设置好各类回调,保证音频事件能及时通知到主程序5创建定时器,自动管理音频硬件电源。
2025-07-28 18:05:00
577
原创 AI小智源码分析——音频部分(一)
Write:16位音频数据 → 音量缩放 → 转32位 → 写入I2S(播放)。Read:从I2S读32位数据 → 右移还原16位 → 裁剪 → 输出(录音)。这两个函数实现了音频数据与I2S硬件之间的格式转换和音量控制,是AI小智音频输入输出的核心桥梁。来回裁剪是为了在不同的数据格式(16位/32位)、不同的处理需求(音量缩放、I2S对齐)之间安全、准确地转换数据。这样既能保证音频质量,又能兼容硬件和软件的不同要求。
2025-07-25 17:35:37
1012
原创 网络协议(四)网络层 路由协议
由于路由器的隔离,IP网络中无法通过广播MAC地址来完成跨网络的寻址,因此在网络层中只能使用IP地址来完成寻址。寻址的过程也是先寻找对应的IP,到达目标网络后,改为在目标LAN中通过数据链路层的MAC地址以广播方式寻址。要明确的是:一个路由器连接了多少个网络,就得有多少个网卡,每一块网卡都能获取一个对应所在网络的IP地址,他的路由表中就会有多少条路由信息。每次进行路由跳转的时候总是选择跳数最少的路径。,所以一个路由表中不止是只有自己本网络范围内的路由信息,还有其他与自身相连路由表的信息。
2025-07-21 22:14:15
205
原创 网络协议(三)网络层 IPv4、CIDR(使用子网掩码进行网络划分)、NAT在私网划分中的应用
确定这条数据中的源端为本地ip的9000端口,目的端为24.24.24.8888端口,首先,从主机a发送至路由器,路由器通过mask掩码与ip进行匹配,发现与本路由器网络号一致, 进行数据转发。数据发送到互联网中,经过层层转发,每条路由器拿到这条数据都会进行掩码匹配,看是否是属于24.24.24.0这个网络号,是的话就进行接收,从而找到这个云端服务器。ip协议里面就有源端地址和目的端地址,发送端就利用这来进行数据的返回,但是,有一个很严重的问题,如果每条数据每台主机都有一个这样的ip地址,
2025-07-21 20:24:58
227
原创 小智流程时序图
ESP32本地监听唤醒词(如“你好小智”),用户说出唤醒词,麦克风采集音频,ESP32检测到后通过功放播放提示音,并与服务端建立WebSocket连接。ESP32初始化硬件(麦克风、功放、LED等),连接WiFi和服务端。1. 核心交互流程总结。
2025-07-21 15:30:18
157
原创 基于python和neo4j构建知识图谱医药问答系统
1.安装包::安装名为的第三方库👉 这个库是一个的 Python 实现,常用于高效的多关键词搜索。:指定 pip 使用,下载会更快、更稳定,尤其是在国内网络环境下。2.介绍✅是 Python 的一个第三方库,实现了(自动机算法)。👉 简单理解:如果你有,想要在里,用普通的for循环挨个匹配会很慢,而算法可以用的时间(接近线性时间)搞定,非常高效。
2025-07-17 12:05:14
227
原创 分别使用Cypher与python构建neo4j图谱
python与neo4j结合处理excel中的数据创建图谱。语法上有点类似 SQL,但面向。是 Neo4j 图数据库的。、查询图、更新或删除数据。查操作太多啦,直接参考。上一篇博客中的demo。(节点、边、属性)。
2025-07-17 09:49:15
343
原创 网络协议(二)传输层(UDP、TCP)
1、FIN请求只能表示主动关闭方不再发送数据,不代表不再接收数据,因此,被动关闭方收到FIN并进行确认后,还有可能会继续发送数据等待上层不再发送数据了,也要关闭套接字了才会发送FIN包,
2025-07-12 11:53:20
680
原创 Pycharm测试连接neoj4
本文介绍了使用py2neo连接Neo4j数据库并处理数据的完整流程。首先通过pip安装py2neo库,建立数据库连接并测试节点和关系的创建。然后演示如何处理Excel数据:使用pandas读取数据,提取购买方、销售方等节点信息,并建立它们之间的交易关系。最后通过自定义的DataToNeo4j类将处理好的节点和关系数据批量导入Neo4j数据库。文中还提到了Neo4j密码重置的方法,为开发者提供了完整的图数据库操作指南。
2025-07-11 18:34:44
144
原创 C++——类型转换
标准C++为了加强类型转换的可视性,引入了四种命名的强制类型转换操作符:static_cast、reinterpret_cast、const_cast、dynamic_cast
2025-06-18 11:07:53
393
原创 C++——Windows下的线程库
利用俩个线程分别处理俩个任务,分别执行对sum的++,但是结果发现最终的sum并不为200000.原因就是在线程进行运行的时候没有保证原子性。再进行资源共享的临界区前后进行加锁处理,利用mutex头文件中的锁来执行。使用atomic_int 定义出来的sum就在线程中自带原子性。thread(Fn,...Args) 创建线程执行Fn相关方法。,因此:即使线程参数为引用类型,在。线程中修改后也不能修改外部实参,因为。thread()创建线程。
2025-06-17 15:08:20
269
原创 C++——异常
看下面这个代码,首先main函数中try f3,进入f3主体内部,f3中又调用f2,又进入f2中,f2中又调用f1,进入f1中,然后再f1中触发越界访问,跳出f1,返回到f2中看是否有catch接收,又退回到f3中看是否有catch接收,最终在main中发现有catch接收out_of_range异常。如果有一个块抛出一个异常,捕获异常的方法会使用 try 和 catch 关键字。catch: 在您想要处理问题的地方,通过异常处理程序捕获异常.catch 关键字用于捕获异常,可以有多个catch进行捕获。
2025-05-27 22:01:26
671
原创 Spring_Boot(一)Hello spring boot!
再main方法中调用 SpringApplication.run(HelloApplication.class,args);通过HelloController控制器调用@RequestMapping来进行http请求。新建项目加入 spring_web 依赖,生成如下 pom.xml文件,即为代码配置。RequestMapping方法需要在主函数中进行run调用,才可以执行。方法就可以直接在main函数中打印 hello world。再main方法中直接使用。
2025-05-19 23:35:00
295
原创 Java(基础)day02 输入、输出、数组、重载、递归
(5) (C++11起)std::string to_string(long double value);
2025-05-19 11:22:19
1056
原创 Java(基础) day01 初识Java
不同于 C 或 C++,Java 是一种强类型静态语言,并且它的基本数据类型具有固定的尺寸,不受底层操作系统的干扰。因此,在 Java 中,无论是在何种平台上执行,通常情况下,在现代 32 位或 64 位系统上,,此时JVM会将字节码转换成平台能够理解的形式来运行。是由字节码组成的平台无关、面向JVM的文件。Java中的int不管在什么环境下都是四个字节。float 类型在 Java 中占四个字节。double在任何系统下都占8个字节。short在任何系统下都占2个字节。long在任何环境下都是八个字节。
2025-05-16 16:01:51
399
原创 C++——哈希表
另外,最初的错误想法是让新桶直接将旧桶中的vector进行一次拷贝,把每个链表的第一个节点指针拷入就行,最后发现肯定不能这样,因为后续对桶进行扩容,取模的值也会发生改变,所以旧桶中的元素在新的模值下就会映射到新的结点中。开散列法又叫链地址法(开链法),首先对关键码集合用散列函数计算散列地址,具有相同地址的关键码归于同一子集合,每一个子集合称为一个桶,各个桶中的元素通过一个单链表链接起来,各链表的头结点存储在哈希表中。设有n个d位数,每一位可能有r种不同的符号,这r种不同的符号在各位上出现的频率不一定。
2025-04-28 17:50:39
974
原创 c++ unordered_map和map的区别
unordered中文翻译即 “无序的” ,自然地,unordered_map也就是不排序的map的意思。unordered_set与set和unordered_map与map是可以类比的,它们的区别大致是一样的。unordered_map在c++11加入的标准模板库,c++11以前是无法使用unordered_map、unordered_set、auto、stoi等标准模板的。unordered_map包含在unordered_map头文件中,即如果想要使用时,引入下面代码即可。
2025-04-24 11:01:41
273
原创 哈希(九)350. 两个数组的交集 II
请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。定义俩个map字典来进行计数操作,遍历dict1,在dict2中找到和它重复出现的交集元素,并捕获他们之间的较小值count,将该交集元素插入k次放入结果数组中。
2025-04-23 15:45:11
274
原创 哈希(八)349. 两个数组的交集 用unordered_set 替换 set
使用了set进行去重,然后利用俩个迭代器遍历俩个set,寻找重复的元素。也可以利用find接口来进行俩个set的求交集操作。输出结果中的每个元素一定是。[4,9] 也是可通过的。
2025-04-23 11:45:47
166
原创 哈希(七)961. 在长度 2N 的数组中找出重复 N 次的元素 简单
【代码】哈希(七)961. 在长度 2N 的数组中找出重复 N 次的元素 简单。
2025-04-23 11:34:46
185
原创 加法模拟 66. 加一
你可以假设除了整数 0 之外,这个整数不会以零开头。最高位数字存放在数组的首位, 数组中每个元素只存储。数组所表示的非负整数,在该数的基础上加一。加 1 得到了 9 + 1 = 10。因此,结果应该是 [1,0]。输入数组表示数字 4321。输入数组表示数字 123。输入数组表示数字 9。
2025-04-19 11:07:32
174
原创 dfs(二十五)22. 括号生成
代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且。使用左右俩个全局变量也可以传参数作为括号是否合法的匹配标准。
2025-03-22 12:28:04
345
原创 dfs(二十四)47. 全排列 II
使用二维数组保存所有的全排列次序,并使用set容器来去重。给定一个可包含重复数字的序列。返回所有不重复的全排列。
2025-03-20 23:36:27
270
原创 dfs(二十三)1863. 找出所有子集的异或总和再求和
[5,1,6] 的异或总和为 5 XOR 1 XOR 6 = 2。- [1,3] 的异或总和为 1 XOR 3 = 2。- [5,1] 的异或总和为 5 XOR 1 = 4。- [5,6] 的异或总和为 5 XOR 6 = 3。- [1,6] 的异或总和为 1 XOR 6 = 7。每个子集的全部异或总和值之和为 480。- [1] 的异或总和为 1。- [3] 的异或总和为 3。- [5] 的异或总和为 5。- [1] 的异或总和为 1。- [6] 的异或总和为 6。
2025-03-20 22:46:57
521
操作系统-银行家算法-银行家算法是操作系统的经典算法之一
2023-01-26
《二叉树及应用》 数据结构中二叉树使用
2023-01-26
数据结构课程设计-最短路径
2023-01-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人