自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (1)
  • 收藏
  • 关注

原创 树莓派+双麦克风扩展板实现snowboy热词唤醒(避坑排雷)

硬件准备:树莓派4b x1树莓派双麦克风扩展板(或者4mics 8mics都可以) x1任意一个支持树莓派的音频输出设备(3.5mm孔的 或者一些蓝牙设备)本文最终要实现的就是对着麦克说你的唤醒词,从耳机或者音响获得’叮’的一声反馈,并在树莓派的终端看到以下输出(日期时间是你自己的):INFO:snowboy:Keyword 1 detected at time: 2020-11-23 18:41:54注意事项:1.切记不要热插拔扩展板,就是不要在给树莓派上电的情况下插2.麦克风扩展

2020-11-23 20:03:20 1879 3

原创 树莓派+微信小程序实现实时监控(有短暂延迟)

前置:树莓派X1树莓派专用摄像头X1阿里云学生机X1企业认证微信号X1(没有的话没法推到微信小程序上,其他没影响)树莓派插好视频之后的操作打开设置,把摄像头设置成可用sudo raspi-config选择 interfacing options将Camera设置成enabled然后拍照并打开照片测试一下raspistill -o new.jpgxdg-open new.jpg出问题按照错误去找解决方案吧,我是多个系统重配了好几次没在这步遇到过问题确定摄像头没问题就可以开始

2020-09-12 18:52:58 2999

原创 【SpringCloudAlibaba系列--OpenFeign组件】OpenFeign的配置、使用与测试以及OpenFeign的负载均衡

consumer是服务的消费者,consumer会去调用provider提供的服务。provider是服务的提供者,由provider连接数据库。获取所有的可用实例,再根据。启动多个provider。

2024-02-23 17:31:17 927 1

原创 【SpringCloudAlibaba系列--nacos配置中心】

容器化部署Nacos:从环境准备到启动// nacos-config引入nacos做配置中心的原理是将你的yml配置上传到nacos服务器中,你的服务启动的时候会根据namspace-group-dataId的定位方式去找到你的配置这是微服务的yml中需要写的,下面有详细解释spring:cloud:nacos:config:config:import:上文中这一项是你的配置的名称,是你云端的DataId上文中的group也是你云端的group。

2024-02-23 17:29:37 747

原创 Server check fail, please check server xxx.xxx.xxx.xxx,port 9848 is available

错误:Server check fail, please check server xxx.xxx.xxx.xxx,port 9848 is available。之前的单例nacos测试没有问题,很奇怪,于是我把问题定位到9848端口和我的配置文件上,也就是说,官方示例的cluster-hostname.yaml中这个映射是错误的。这样修改之后服务就能注册到nacos了。

2023-12-11 16:22:40 1170

原创 使用docker部署nacos分布式集群

到nacos控制台检查运行情况,运行正确的话如图。这个链接有如何创建nacos数据库的内容。

2023-11-16 15:36:58 224

原创 容器化nacos部署并实现服务发现(gradle)

有任何问题欢迎私信我,或者添加我的联系方式,我会很乐于交流!配置application(更改数据库地址和账户密码即可)这些都完成之后就可以启动两个服务进行测试了。开放服务器8848、9848端口。创建empty project。选择jdk17、语言等级17。使用传统的三层架构就可以。

2023-11-14 12:28:06 515 2

原创 容器化部署Nacos:从环境准备到启动

本文介绍了如何在容器化环境中部署Nacos服务注册和配置中心。首先,我们探讨了环境准备的要求,包括64位操作系统、JDK和Maven的安装,以及MySQL数据库的容器化。接着,文章详细介绍了版本选择的重要性,并提供了相关资源链接以确定Spring Cloud、Spring Cloud Alibaba和Nacos之间的兼容版本。随后,文中展示了如何下载Nacos Docker配置,并修改MySQL相关设置。为确保Nacos能够连接到MySQL,文章还提供了一系列Docker网络配置步骤。

2023-11-10 16:14:48 398

原创 docker部署容器化mysql5.7

本教程将指导您如何在Docker环境中部署MySQL数据库,并展示如何通过外部MySQL客户端与之交互。首先,我们需要在本地环境中创建必要的文件夹结构来存储MySQL的配置、日志和数据。由于容器内的网络服务默认与外部环境隔离,我们通过端口映射来实现外部访问。有任何问题欢迎私信我或者加我的联系方式,我会很乐于交流!确保配置文件中的路径和设置与您的环境相匹配。

2023-11-10 16:05:54 319

原创 一文理解Spring Integration的作用

Spring Integration专注于企业级应用集成(EAI),支持异步、事件驱动、消息驱动等模型。

2023-08-07 15:27:33 168

原创 一文全览Kotlin中的依赖注入解析!所有Kotlin注入方式示例!

延迟加载模式注入通常用于需要在运行时动态加载依赖对象的情况,以减少初始化时间和资源消耗。通过依赖注入,我们实现了对象之间的解耦,使得代码更加灵活、可测试和可维护。同时,也方便了代码的扩展和修改,因为我们只需修改配置文件或注解的配置,而不需要修改代码本身。以上就是依赖注入的基本概念以及在Kotlin和Spring中的应用。除了前面提到的构造函数注入、Setter方法注入和接口注入之外,还有其他一些更高级的依赖注入技术和模式。在这段代码中,我们使用了可空类型的变量来表示依赖对象。在Kotlin中,可以使用。

2023-07-22 15:58:36 991

原创 【Java多线程编程: 使用Thread类和Runnable接口实现基本的并发编程】

Java多线程编程是现代软件开发中不可或缺的一部分。在多核CPU和云计算时代,利用多线程并发执行任务可以提高程序的性能和响应能力,从而提升用户体验和系统的可用性。作为一名Java开发人员,了解Java多线程编程的基本概念和最佳实践是非常重要的。本文将介绍Java多线程编程的核心组件Thread类和Runnable接口,并提供一些有用的技巧和经验。Thread类和Runnable接口是Java多线程编程的核心组件。它们都可以用于创建和启动线程,但有一些区别和优缺点。

2023-07-22 10:33:09 141

原创 数据迁移时Mysql版本不一致遇到的问题

【代码】数据迁移时Mysql版本不一致遇到的问题。

2023-06-16 16:33:52 746

原创 使用Pycharm驱动ESP32一站式解决攻略

本人是用王铭东老师视频进行学习的,视频中以及网络上找到的部分python代码现在已经不适用了,具体可以自己去看micropython的各个模块的官方文档,比如老师视频中设置呼吸灯的machine包中的duty(value)函数已经不存在了,现在替换为duty_ns(value)和duty_u16(value)了。

2023-05-11 14:43:51 1968 2

原创 java中 == equals和hashcode总结(面试必问)

equals和==的区别重写equals为什么要重写hashcode()方法

2022-03-24 20:44:00 393

原创 插入排序与循环不变式(算法导论)

首先介绍插入排序插入排序的名字很形象,这个算法就是从数组的第二位开始(此时第一位只有一位,视为排好序的子数组)一直到数组的最后一位,一位一位地将数加入到已经排好序的子数组中。插入排序的初始状态,可以想象你手里有一张牌,这就是数组 0 位置的牌,从位置1到数组结束的所有数都是在桌子上放着的牌,你的目的就是把这些牌都拿到手里并排好序。伪代码: for j=2 to a.length key=a[j] i=j-1 while i>0 and a[i]>key a[i+1]=a

2021-02-18 23:51:58 512

原创 Hill密码(希尔密码)

Hill密码(希尔密码)希尔密码可以防止频率分析攻击(因为运用的是矩阵,可能密文中同一个字母翻译成明文是不一样的)希尔密码隐藏了单字母的频率字母和数字的对应可以修改成其他方案抵抗频率攻击易受已知明文的攻击希尔密码的加密过程:1.准备一个n*n的可逆矩阵 E(即密钥)2.将a-z 对应0-25编码3.将要加密的一串字母当作n维度向量,比如矩阵E的大小是3*3,那么abcde就可以分为 abc de 转为数字就是012 340(不足n位补0)4.密文(数字列向量)=(E*明

2020-12-18 15:30:50 5300 4

原创 仿射加密(java)

仿射加密的加密过程是一个线性变换:在仿射加密中,可设0-25对应 'a '-‘z’ 这26个字母。设y为密文,x为明文,则:y(x)=(k1x+k2) mod 26并且要求gcd(k1,26)=1;(即k1与26的最大公约数为1)要求k1和26互素,不然y(x)就不是一个单射函数在求解仿射解密函数时,需要求k1在Z26上的乘法逆元a-1∈Z26,这可由扩展欧几里得算法求解解密 x=( (k1-1)(y(x)-k2) )%26下面是仿射加密的java实现:(附有注释)KeyInput

2020-12-18 13:30:52 897

原创 进程调度简单模拟(先来先服务)

本文作者偷懒了 没有写cpu和io的输入输出~要求:输入:若干程序文件,例如 Prog1, Prog2,…, Progk。每个程序文件 Progi的格式如下(每一行表示一条指令):cpucpuiocpucpu…输出:第1列是时间,第2-6列是k=6个进程的状态(READY,RUN:io,RUN:cpu,WAITING,DONE),第 7 列是 cpu 的状态,第 8 列是 IO 设备状态额外:(1) 同时支持 cpu 和 io 指令,以及多个进程并发执行基本假设:⚫ 单处理机

2020-10-16 17:00:00 740

原创 四种队列解析总结

队列是一种特殊的线性表。只允许在表的前端进行删除操作,在表的后端进行插入操作。1.普通队列举例:import java.util.LinkedList;import java.util.Queue; public class Main { public static void main(String[] args) { //add()和remove()方法在失败的时候会抛出异常(不推荐) Queue<String&gt

2020-06-24 01:01:25 889

原创 链表(单/双/单循环/双循环)

文中链接附上java版代码1.单链表单链表是一种链式存储的数据结构,方便插入/删除数据元素,对比数组,在进行插入删除等操作时,更节省空间。单链表中每一个结点的构成都是由数据元素+指针构成的2.单循环链表单循环链表与单链表的区别就是,单循环链表的尾指针指向头结点,可以想象成一个环,首尾相连,这时候需要考虑两种情况:1.不带头结点2.带头节点不带头节点的情况:对比单链表,直接尾结点的指针指向头节点就好了带头节点的情况:尾结点指向头结点的下一个结点,头结点不保存数据。3.双链表:顾名思义,

2020-06-24 00:59:14 2955

原创 数据结构之哈希表(散列表)

本文附带部分leetcode的例题和伪代码哈希表哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度采用散列技术将记录存储在一块连续的存储空间中,这块连续存储空间称为散列表或哈希表(Hash table)哈希表hashtable(key,value) 就是把Key通过一个固定的算法函数(哈希函数)转换成一个整型数字,然后就将该数字对数组长度进行取余,取余结果就当作数组的下标,

2020-06-24 00:57:41 876

原创 springboot项目连接redis(云服务器配置redis)

云服务器配置redis给springboot项目使用请仔细阅读文章,常见错误都有罗列本文选择的是阿里云的轻量级学生机,搭载linux的Centos7系统本文使用的集成环境是IDEA,使用了阿里的仓库,(也科学上网来着,但是应该没啥必要)云服务器的连接可以选择在阿里云服务器的界面直接连接,也可以自己去找合适的工具本文有作者踩的大坑,希望看到的小伙伴不要再踩坑了云服务器的配置先获取管理员权限sudo su root然后查看当前文件夹内容,选择你要安卓的位置,这里选择在usr下的local

2020-06-08 17:18:59 2554

原创 插入排序以及分析(JAVA)

插入排序对于少量元素的排序,插入排序是一个有效的算法插入排序的基本思想:是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表附代码(用了单例模式,因为这个类是为了算法算法性能的内部分析的程序做的)代码分析了移动和比较次数时间复杂度:这个算法如果不在内部统计比较和移动的次数,当待排序数组是有序时,是最优的情况,只需当前数跟前一个数比较一下就可以了,这时一共需要比较N- 1次,时间复杂度为 O[N] 但是由于我们要在内部计数,实际上得到的时间复杂度还是O[N],

2020-06-08 15:51:48 123

原创 选择排序以及分析(JAVA)

选择排序基本思想:从左到右遍历数组,找出最小/大的放在左侧与left所标志的位置交换元素,即第一次将数组中最小(或者最大)的元素置顶(数组下标为0的位置);然后从此数组下标为0的位置向右找最小(或者最大)的元素与下标为1的位置交换,以此类推复杂度最差情况:进行比较操作的时间复杂度为O(n^2),进行移动操作的时间复杂度为O(n)选择排序是不稳定的排序算法代码:使用了单例模式,方便在程序内部比较不同算法的移动/比较次数,不需要的删掉就可以代码中in_order(List list, b

2020-06-08 15:47:21 96

原创 归并排序及分析(JAVA)

归并排序归并排序是递归的分治算法分治分治的思想是把一个复杂的问题分成两个或多个相同或相似的子问题,再把子问题分成更小的子问题直到最后子问题可以简单地直接求解;比如快排、归并排序 傅里叶变换等分治策略:对于一个规模为n的问题,若该问题可以容易的解决(比如规模n较小)则直接解决,否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解决这些子问题,然后将各个子问题的解合并得到原问题的解。复杂度由于归并排序每次划分时两个子序列的长度基本一样,所以归并排序最好、最差和平均时间

2020-06-08 15:40:45 111

原创 冒泡排序以及复杂度分析(JAVA)

冒泡排序(JAVA)冒泡排序算法的原理如下: [1]比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。冒泡排序是一种非常经典的算法,易于理解而且容易实现。复杂度:若文件的初始状态是正序的,一趟扫描即可完成排序。所需的关键字比较次数和记录移动次数均达到最小值(

2020-06-08 15:34:35 1439

原创 (Java)哈夫曼编码译码器-压缩/解压缩编码

哈夫曼编码译码器仅供学习和参考,这份代码的算法和文件操作都参考了许多文章。仅供学习和参考,这份代码的算法和文件操作都参考了许多文章。仅供学习和参考,这份代码的算法和文件操作都参考了许多文章。1. 选择需要进行编码的文件2.建立哈夫曼树3.建立密码本并对文件编码4.选择需要进行解码的文件并解码5.按位压缩方式对文件进行压缩6.解压压缩文件为编码文件一共三个类,Huffman类也是程序的入口下面的代码中注释将对代码有详细的讲解public class Node<T> {//第

2020-05-08 21:10:58 1219 2

原创 JAVA单循环链表和双循环链表简单操作

JAVA单循环链表和双循环链表简单操作1、删除单循环链表某结点的直接前驱点2、三个循环链表储存一个循环链表的不同类字符3、1、删除单循环链表某结点的直接前驱点问题描述:假设在长度大于 1 的单循环链表中,既无头结点也无头指针。s 为指向某 个结点的指针,试编写算法删除结点*s 的直接前驱结点。这里考虑的是:既然是删除某个节点的直接前驱,举个例子:假设现在我们有编号为 1 2 3 4 5 的5...

2020-04-10 18:44:15 482

原创 JAVA单链表的简单操作(递增单链表插入数据,链表逆置,链表逆序合成)

JAVA写一个单链表1、已知带头结点的动态单链表 L 中的结点是按整数值递增排序的,试写一 算法将值为 x 的结点插入到表 L 中,使 L 仍然有序。要求算法的时间复杂度为 O(n),空间复杂度为 O(1)。2、设计一算法,逆置带头结点的动态链表 L。要求利用原表的结点空间, 并要求用尽可能少的时间完成。3、假设有两个按元素值递增有序的线性表 A 和 B,均以单链表作存...

2020-03-23 13:47:04 1119 2

Misson6_bing.zip

本资源仅供学习使用,实现参考了多个文章内容 Java实现哈夫曼编码译码器(控制台实现,无可视化界面,需要的可以自己加) 共六个功能选项 1、选择需要进行编码的文件 2、建立哈夫曼树 3、建立密码本并对文件编码 4、选择需要进行解码的文件并解码 5、按位压缩方式对文件进行压缩(byte格式压缩) 6、解压缩

2020-05-08

空空如也

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

TA关注的人

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