自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL 有这一篇就够(MySQL数据库技术精讲:数据表管理、查询技巧与性能调优实战分享)

总结来说,外连接查询使得我们能够查看一个表中所有记录的同时,也能获取到另一个表中与之匹配的记录(如果有),并且包括那些没有匹配记录的信息。这种类型的连接通常在特定分析场景下使用,但在日常的数据库操作中并不常见,因为它可能会生成非常大的结果集,尤其是在表很大的情况下。ANY 和 SOME 是同义词,在比较表达式中,它们表明外部查询中的值需要与子查询返回的任意一行的相应值满足给定的比较条件。子句,将会删除表中的所有记录,但是一般不会立即执行,而是需要确认或者在严格模式下被阻止,以防止意外的数据丢失。

2024-04-09 22:47:16 907

原创 Spring Boot与Docker的完美融合:从开发到部署的实战

Spring Boot 是一个由Pivotal团队开发的用于简化新Spring应用初始搭建以及开发过程的框架。简化配置:Spring Boot采用约定优于配置的方式,减少了大量的XML配置工作,通过自动配置功能极大地加速了应用的初始化。独立运行:通过内嵌的Tomcat、Jetty或Undertow服务器,Spring Boot应用可以被打包成单一可执行的jar或war文件,只需java -jar命令即可启动应用。开箱即用。

2024-04-08 21:51:45 1038

原创 探索K-近邻算法(KNN):原理、实践应用与文本分类实战

在词袋模型的基础上,引入TF-IDF(Term Frequency-Inverse Document Frequency)权重,以突出那些在特定文档中频繁出现但在整体文档集合中不常见的词语,从而增强特征表示的区分度。在学术和工业界,针对KNN算法的优化和扩展一直是研究热点,不断涌现新的研究成果和技术解决方案,以适应大数据时代对算法性能的更高要求。:如科技新闻、体育新闻、财经新闻等多类别分类,KNN同样可以应用于此,通过计算文本向量间的距离,将新闻文章分配给最接近的类别。

2024-04-06 16:14:11 1093

原创 程序员必备开发工具(IDE)推荐

此时,你可以使用VS Code内置的Python插件,它允许你在IDE内直接运行Python脚本,你只需在你的Python文件里右键点击并选择"Run Python File in Terminal"就可以立即运行你的Python代码。这时,程序会在设置断点的地方暂停运行,你可以查看此时的变量值,或是单步执行接下来的代码。代码简介:VS Code是Microsoft出品的一款轻量级但功能强大的源代码编辑器,拥有丰富的插件库,支持语法高亮,智能代码补全,自定义热键,括号匹配等功能。支持多种编程和标记语言。

2024-04-06 12:27:27 896

原创 计算机视觉入门

另外,人类视觉有丰富的经验可以借鉴,反映到意识上,甚至可以在缺乏部分信息的基础上,完成对整体的理解和描绘,计算机视觉则需要依靠算法来完成这个过程。:随着计算机视觉技术的成熟,其在各行业的应用将进一步扩大,包括但不限于医疗的图像辅助诊断、零售的智能货架、农业的智能监测等。:边缘检测是图像处理中的重要手段,主要用于识别图片中的边缘信息,从而提取物体的形状特征。:Scikit-Image是基于Scipy构建的一个用于图像处理的库,提供了一系列的算法,如图像分割、几何转换、颜色空间转换、滤波、边缘检测等。

2024-04-06 00:03:56 794

原创 WebKit结构简介

WebKit是一款开源、轻量级的网页浏览器引擎。它提供了一种可以在各种应用中嵌入的Web内容的方式。包含HTML、CSS、JavaScript和其他网络内容。WebKit主要由苹果公司负责开发,是构成Safari浏览器的核心技术。

2024-04-05 23:27:03 889

原创 Spring Boot 集成 RabbitMQ(二)

Spring Boot的基本使用包括创建Spring Boot项目,配置Spring Boot属性,创建Controler、Service、Dao等类进行开发,运行Spring Boot项目等。Spring Boot集成RabbitMQ后,可以充分利用RabbitMQ的消息队列特性,实现异步处理、流量削峰、解耦等功能,可以有效地提升系统的延展性和稳定性。在创建好Spring Boot项目后,可以添加RabbitMQ相关的配置类,这个配置类给出了如何连接RabbitMQ,并定义了消息队列、交换器和绑定。

2024-04-05 23:10:28 945

原创 Docker in Docker原理与实战

另外,由于Docker容器和宿主机共享一些系统资源,如CPU,内存和磁盘等,因此在Docker容器中运行的程序可能会对宿主机的性能产生影响。3、在Docker in Docker模式下,要在新的Docker容器内部运行Docker引擎,我们需要在Docker容器中安装Docker服务并启动它。然而,你需要注意的是,Docker in Docker模式下,一旦在内部Docker创建的容器与外部Docker创建的容器有相同的ID,它们的文件系统将会互相影响,这可能会带来意想不到的问题。

2024-04-05 19:32:01 1068

原创 RabbitMQ安装详细教程

例如,我们可以创建一个新的队列:点击左侧的"Queues",然后在右侧点击"Add a new queue",在弹出的窗口中输入队列的名字,然后点击"Add queue"。在用户的页面中,你可以看到一个"Update this user"的区域,在"Password"和"Verify password"的输入框中输入新的密码。点击左侧的"Queues"选项,然后在出现的队列列表中,选择你想要查看的队列,点击队列的名称。在列表中,点击消息的"Payload"部分,你可以看到消息的详细内容。

2024-04-04 12:12:42 1302

原创 node.js 常用命令

你需要把 "package_name" 替换为你要安装的npm包的名称。"-g"标志表示全局安装,这个npm包会被安装到你的系统上,可以在任何项目中使用。Node.js是一个开源的,跨平台的JavaScript运行环境,让开发者可以在服务器端也使用JavaScript。你需要把 "package_name" 替换为你要卸载的npm包的名称。你需要把 "package_name" 替换为你要安装的npm包的名称。跟上你要调试的文件名来启动调试器。此命令会列出你的项目中所安装的所有npm包,以及它们的版本。

2024-04-04 00:30:31 1231

原创 RabbitMQ在云原生环境中部署和应用实践

我们可以通过Kubernetes的Quality of Service(QoS)机制,以及资源限制(Resource Limit)和资源请求(Resource Request)的设置,动态地调整RabbitMQ的资源分配。在RabbitMQ中配置镜像队列,可以在RabbitMQ的配置文件(rabbitmq.config)中设置。在这个配置中,RabbitMQ Pod最少会请求到100m的CPU和200Mi的内存,最多可以使用500m的CPU和500Mi的内存。首先我们需要创建一个RabbitMQ的部署。

2024-04-04 00:21:35 968

原创 RabbitMQ集群管理和运维实践

在处理具有对顺序没有特别要求的任务时,可以适当提高预获取的数量,使得消费者能够提前获取更多的任务,避免空闲,从而提升处理的速度。队列与交换器是 RabbitMQ 中的核心概念,一个优化的策略是尽量避免在一个队列中堆积过多的消息,这样会导致性能下降,增加消息处理的延迟。每个 RabbitMQ 集群中的节点都能共享定义的 exchange 和 queue,但是消息只保存在发布的节点上,然后在需要的时候由其他节点拉取(例如,有消费者连接到该节点)。这将会创建一个集群,包含节点1,节点2和节点3。

2024-04-04 00:04:29 772

原创 RabbitMQ系统监控、问题排查和性能优化实践

在上面的代码中,setConcurrentConsumers(3)设置了并发消费者的初始值为3,setMaxConcurrentConsumers(5)设置了最大的并发消费者数为5,setAcknowledgeMode(AcknowledgeMode.AUTO)设置了消息确认消费的方式为自动确认。在上面的代码中,如果处理消息的逻辑抛出异常,我们需要调用 channel.basicNack 方法来拒绝消息,并设置 requeue 为 true,这样 RabbitMQ 会再次将这条消息推送给消费者。

2024-04-03 23:47:11 1120

原创 延时队列实现实战:如何利用 RabbitMQ 实现延时队列,以满足特定延迟处理需求

实现延时队列,可以通过RabbitMQ的死信队列(Dead-letter queue)特性,“死信队列”是当消息过期,或者队列达到最大长度时,未消费的消息会被加入到死信队列。然后,我们可以对死信队列中的消息进行消费,完成类似“延时”的效果。当RabbitMQ检测到消费者(如一个TCP连接)异常断开,例如因为消费者主机崩溃或因为网络问题,它将关闭该消费者的连接,并将消费者未确认的任何消息重新放入队列。在RabbitMQ中,对消息的优先级的支持是通过队列来实现的。在声明队列的时候,可以通过。

2024-04-03 23:36:20 1232

原创 消息可靠投递实践:如何保证 RabbitMQ 的消息可靠投递

死信队列”其实就是一个普通的 RabbitMQ 队列,我们可以在创建一个队列的时候为它指定 x-dead-letter-exchange 和 x-dead-letter-routing-key 参数,这样当这个队列中的消息因为各种原因被拒绝,并且设置的是不重新入队,那么 RabbitMQ 就会自动地将这个消息重新发布到我们指定的 exchange,并且用我们指定的 routing key 进行路由,从而实现消息的“死信”处理。在每次消费者准备处理消息的时候,我们都检查 "retry_count" 的值。

2024-04-03 23:19:58 1150

原创 并发与限流实战:如何利用 RabbitMQ 在 SpringBoot 应用中实现并发控制与流量限制

在高并发场景下,如大促销、秒杀等,我们可以采用 RabbitMQ 配合 SpringBoot 来实现并发控制与流量限制。你可以将 RabbitMQ 作为一个缓冲区,暂存大量并发请求,然后消费者可以根据自身处理能力去处理这些请求。下面就以一个高并发订单处理的案例实现来说明。在高并发的环境中,订单请求会快速发送到 RabbitMQ,然后消费者可以按照自身处理能力慢慢的从队列中取出订单并处理,这样就实现了海量订单的并发处理和流量限制。

2024-04-03 23:05:47 909 1

原创 Spring Boot 集成 RabbitMQ(一)

它允许应用发送消息并不直接传递到目标对象,而是通过交换器,队列,绑定的方式进行处理和转发,从而实现应用的解耦,异步并且能够确保可靠性。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义模板化的配置,简化了开发流程。使用 Spring Boot 集成 RabbitMQ,我们可以轻易地创建出生产者和消费者,通过注解和配置的方式使用 RabbitMQ 的强大功能。通过自动配置、独立运行的方式,极大的简化了 Spring 应用的开发。这就像在您的系统中安装任何软件一样。下载安装包进行安装。

2024-04-03 23:01:49 1270 3

原创 SpringBoot获取access_token获取优化

然后在每次需要access_token时,先从Redis中获取,如果获取不到(等于null或者空字符串)就向微信接口请求新的access_token并把新的access_token存回Redis。例如,可以将用户的ID作为元素,用户的积分作为分数,存入一个ZSet,就可以实现一个积分排行榜。例如,将数据库查询的结果缓存到Redis中,在下一次需要这些数据时,先从Redis中获取,如果Redis中没有,再去数据库查询。计数器:Redis的String类型的值可直接进行加减操作,可以作为各种计数器使用。

2024-04-03 17:24:21 151 1

原创 发送短信、推送微信模板等耗时处理异步执行优化

注解,都可以将耗时的IO操作如发送短信和推送微信消息变为异步执行,从而提高程序的响应速度。想要将短信推送和微信消息推送的功能变为异步执行。方法,可以更好地控制线程的执行。你可以根据应用程序的需求,调整线程池的大小。注解,它可以使得方法异步地执行。方法将会在新的线程中执行传入的lambda表达式,而。注意:你需要在应用程序关闭或不再需要使用线程池时,调用。下面是如何定义一个固定大小的线程池以及如何在。标注的方法将会在另一个线程中执行。在这里,我们在类的字段中定义了一个。就会在我们的线程池中执行任务了。

2024-04-03 17:18:49 188 1

原创 RabbitMQ3.7.8集群分区(脑裂现象)模拟及恢复处置全场景测试

即使节点已经停止运行或者从网络上移除,你仍然需要在集群中的一个运行的节点上执行此命令,来从集群元数据中删除该节点。pause_minority:这个设置会在网络分区发生时,检测哪个分区的节点最多,然后暂停节点较少的分区。注意: 即使你移除的节点已经停止运行或者与网络断开连接,你仍需要运行 rabbitmqctl forget_cluster_node 命令来清除集群中的元数据。如果无该配置,需要手动进行恢复。上面的命令中, [email protected] 应被替换为你的集群中任意一个运行的节点。

2024-04-02 23:21:44 1101 1

原创 uniapp-image-compress 图片压缩

在上述代码中,我们首先调用uni.chooseImage选择图片(仅选择一张),然后将选取的图片路径传入uniImageCompress.compress方法进行压缩。方法的第二个参数(0.6)指定了压缩的质量,1表示原质量,0表示最低质量。compress方法返回的是包含压缩后的图片路径的Promise对象。压缩质量是一个介于0和1之间的数字,用于设置压缩后的图片质量。这个值越低,压缩后的图片文件就越小,但图片质量也会越低。是压缩质量参数,表示压缩后的图片质量为原图的60%。

2024-04-02 21:25:39 590 1

原创 SpringBoot MVEL 表达式

在动态规则执行和条件匹配方面,MVEL 是一个出色的选择,因为它允许你在运行时定义和修改规则,并立即处理这些规则。这样做的好处是,你可以在运行时根据需要更改或增加规则,而无需修改并重新编译源代码。这些规则不是在代码中硬编码的,而是可以在运行时更改的,这给了你更大的灵活性。对于更复杂的情况,您可以将一些自定义的函数或其他复杂对象添加到变量映射中,然后在 MVEL 表达式中使用它们。以上假设你的 表达式是正确的,如果它没有匹配到,可能是因为你的表达式格式不正确,或你的flight 对象没有正确地设置。

2024-04-02 01:11:08 769 1

原创 RabbitMQ脑裂问题

RabbitMQ的节点之间可能失去连接,每个节点都认为其他节点已经失败,会导致所谓的"脑裂"现象。每个节点都会试图独立运行,占用对方的资源,并试图启动。例如,两个集群节点A和B失去通信,都以为对方已经宕机,结果就可能出现共享数据损坏或者无法恢复/启动的情况。

2024-03-31 21:01:38 968 1

原创 nodejs版本切换工具 NVM 使用记录

NVM(Node Version Manager)是一款开源的Node.js版本管理工具。它允许你在同一台设备上安装和管理多个版本的Node.js和npm,让你可以非常方便地切换Node.js的版本,对开发和测试不同项目非常有帮助。例如,如果你想安装Node.js 14.15.3,你可以输入例如,你可以输入来切换到14.15.3版本的Node.js。例如,你可以输入来卸载已经安装的14.15.3版本的Node.js。

2024-03-31 20:11:45 256 1

原创 微信服务号开发

springboot 开发微信服务号

2024-03-30 21:10:38 1146 1

原创 项目常用工具

在Javascript中,可以使用正则表达式来验证中国的车牌号。中国车牌号主要由1位省份简称(汉字),1个字母,接着是5位数字或字母组成。,也就是要验证的车牌号。然后使用正则表达式测试这个车牌号是否符合格式,返回结果是一个布尔值。使用JavaScript编写的两个日期差的函数如下,将毫秒转换为天、小时、分钟和秒的函数。函数接收一个日期,计算出相对应的天、小时、分钟和秒,然后拼接成字符串返回。函数可以将多个字符串值连接成一个字符串,并以特定的分隔符分隔。在 PostgreSQL 中使用。

2024-03-30 20:49:17 132 1

原创 spring boot 根据坐标查询逆向地址

替换为你的高德地图API Key,并根据高德地图API返回的JSON数据编写解析函数,提取你需要的地址信息。在Spring Boot中,你也可以通过调用高德地图API实现逆向地理编码查询。

2024-03-30 20:41:14 427 1

原创 JAVA实践记录

LocalDate和是Java 8中引入的日期和时间类,用于处理日期和时间相关的操作。它们提供了简洁、易读和线程安全的方法来处理日期和时间。LocalDate表示日期,包含年、月、日。它没有时区和时间信息。LocalDategetYear()plusDays()isBefore()isAfter()format()表示日期和时间,包含年、月、日、时、分、秒。它也没有时区信息。getYear()getHour()plusDays()isBefore()isAfter()format()下面是使用。

2023-09-27 16:30:21 124 1

原创 MyBatis 应用和最佳实践举例

批量插入数据:通过foreach标签,可以循环遍历一个集合或数组,将集合或数组中的元素作为参数传递给SQL语句中的VALUES子句,实现批量插入数据的功能。批量更新数据:通过foreach标签,可以循环遍历一个集合或数组,将集合或数组中的元素作为参数传递给SQL语句中的WHERE子句,实现批量更新数据的功能。批量删除数据:通过foreach标签,可以循环遍历一个集合或数组,将集合或数组中的元素作为参数传递给SQL语句中的WHERE子句,实现批量删除数据的功能。

2023-09-22 22:49:01 142 1

原创 基于规则引擎实现规则可配置的机场地勤人员排班系统

规则类型:任务分配规则 规则的条件和动作:当某个航班到达机场时,根据机场停车场、航站楼、机位等信息,以及地勤人员的技能情况,将适合该任务的地勤人员分配到该航班的对接任务中。规则优先级:高 参考数据:机场设施信息、航班信息、人员信息。数据输入功能:包括数据源的接口设计、数据采集、数据存储、数据整理、数据计算等,能够自动或手动地输入各类数据,包括人员、工作信息、航班信息、机场设施等。规则制定功能:对规则库中的各项规则进行制定、修改、删除、查询、审核等,包括规则的名称、描述、策略、优先级、参考数据等信息。

2023-05-06 22:35:38 459 1

原创 spring boot rabbitmq 如何保持顺序消费

在消费消息时,先从消息中提取出消息 ID,然后根据分片规则计算出当前消费者线程负责的分片编号,如果当前线程负责的分片与消息所在分片相同,则处理该消息。要保证消息的顺序,需要在分片规则上做额外的处理,确保分片规则是有序的,然后让每个消费者只消费自己所负责分片的消息。单线程消费:使用一个线程消费消息,因为 RabbitMQ 的队列是有序的,所以保证单线程的消费能够保证消息的顺序。有序分片消费:将消息队列按照一定的规则进行分割,每个分片使用一个线程消费,这样可以减少单线程消费的性能影响。如果实现有序分片消费?

2023-05-06 22:18:35 2260

原创 编写高质量代码的实践方法

1.代码可读性 要确保代码便于其他开发人员理解,这样可以促进团队合作,确保代码的可维护性和可扩展性。提供适当的注释和文档保持代码风格一致使用有意义的变量名和函数名避免冗长的代码块和复杂的逻辑2.代码可靠性 要确保代码可以正常执行并具有正确的行为。编写单元测试以验证代码的功能考虑异常处理遵循 SOLID 原则避免硬编码,确保任何变化只需更改一次3.代码性能和可扩展性 要确保代码在未来可以方便地扩展和维护,并且能够处理大型数据集和高并发。

2023-05-06 22:02:56 101

原创 从量子计算的应用、挑战到未来发展趋势和影响的全面分析

本文探讨了量子计算在未来可能成为一个风口的原因,并阐述了其在科学研究、商业等领域的应用情况。同时,文章指出了量子计算面临的挑战,如技术、经济和安全等方面。最后,预测了量子计算的未来发展趋势,主要包括商用化、量子通信、算法解决难题和高性能计算与仿真等。

2023-05-06 21:46:56 595

原创 git应用

1.add 添加新增文件夹2.commit 提交到本地仓库3.pull 先从服务器上拉回最新的 ,然后合并冲突4.push 推送最新代码到服务器上

2018-07-12 21:09:43 146

原创 java架构设计及代码codereview 清单

java 代码codeview1.日志按业务分类记录2.日志重点为:输入,输出,异常日志,外部接口日志3.是否有单元测试用例

2018-07-12 21:01:55 924

基础平台oauth2认证配置.pdf

基础平台oauth2认证配置,主要是oauth2规则的接口设计

2018-07-14

空空如也

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

TA关注的人

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