自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Vue2 scss 预编译器默认已由 node-sass 更换为 dart-sass,如果您的代码使用了 dart-sass 不支持的旧语法,可能存在部分不兼容的问题

Vue2 scss 预编译器默认已由 node-sass 更换为 dart-sass,如果您的代码使用了 dart-sass 不支持的旧语法,可能存在部分不兼容的问题

2025-03-19 21:19:33 869

原创 Spring Boot + Vue 基于RSA+AES的混合加密

性能提升:AES加密大数据效率比RSA高1000倍以上前向安全性:每次请求使用不同AES密钥安全性增强:CBC模式+随机IV避免模式分析攻击使用HTTPS传输加密后的数据定期轮换RSA密钥对对敏感接口添加频率限制在网关层实现解密拦截器(而非应用层)

2025-03-13 16:57:32 478

原创 SpringCloud + Spring AI Alibaba 整合阿里云百炼大模型

记录一次自己使用微服务整合阿里云的百炼大模型,需要用到Redis来记录最近五条信息,已能够保证上下文的连通性,Ai和用户之间的对话是使用的MongoDB来进行存储。然后我这篇文章是介绍了两种请求方式,一种是通过Http请求,一种是通过WebSocket+Netty的方式,如果你还没有Redis可以先去安装对应环境或者可以将Redis改为通过使用List来对最近的消息进行存储。话不多说,开始。

2025-03-02 19:11:01 579 2

原创 记录SpringBoot对接大华摄像头并能够实时预览

如果本文章对你有帮助帮忙点个关注或小赞赞哦。SpringBoot、Websocket、Flv.js框架、大华SDK代码(PC端,H5(uniapp的app可用页面嵌套方式),不兼容IOS(IOS目前版本不支持FLV流)

2025-01-23 12:16:29 879

原创 Seate分布式锁

在事务一执行业务SQL时,在提交事务前先获取全局锁,即将当前事务id和当前table(表)和当前行id进行记录,在执行完之后,事务二来修改,但在获取全局锁时发现已经有其他事务获取到了锁,所以会进行重试获取全局锁,此时如果事务一需要回滚,在获取数据库锁的时候就会失败,因为此时事务二占有数据库锁,但不会造成死锁,因为事务二在重试获取全局锁只有30次,并且每次10毫秒,所以当事务二获取全局锁失败后,就会进行事务回滚,此时事务一就占有了锁并进行回滚,所以此时回滚就不会照成脏写,因为事务二并没有成功更新。

2024-06-14 17:44:10 1232

原创 SpringBoot整合GateWay(详细配置)

整合Spring Cloud Gateway到Spring Boot项目中需要添加相关依赖、配置路由规则、过滤器以及其他相关设置。这个过程涉及到多个步骤和配置文件,需要仔细规划和配置。一旦配置完成,Spring Cloud Gateway将为你的微服务架构提供强大的路由、安全性和监控功能。

2024-02-17 17:51:09 4264

原创 Vue中的 v-if 与 v-show 的区别

v-if和v-show都是 Vue.js 中非常有用的指令,用于根据条件控制元素的显示与隐藏。然而,它们之间存在明显的差异,包括实现方式、性能影响和适用场景。因此,在选择使用哪个指令时,我们需要根据具体的需求和场景来做出决策。

2024-02-07 21:16:41 1009

原创 服务器和CDN推荐

陆云Roovps是一家成立于2021年的主机服务商,主要业务是销售美国服务器、香港服务器及国外湖北十堰高防服务器,还有相关CDN产品。

2024-02-05 20:38:00 1218

原创 HashMap的put和get流程

首先进行哈希值的扰动,获取一个新的哈希值。判断tab是否位空或者长度为0,如果是则进行扩容操作。1.根据哈希值计算下标,如果对应小标正好没有存放数据,则直接插入即可否则需要覆盖。2.判断tab[i]是否为树节点,否则向链表中插入数据,是则向树中插入节点。3.如果链表中插入节点的时候,链表长度大于等于8,则需要把链表转换为红黑树。4.最后所有元素处理完成后,判断是否超过阈值;threshold,超过则扩容。

2024-02-04 18:54:35 954

原创 Vue实现公告循环横向播报组件

当公告字数很少时会固定不动,当字数达到最大宽度时,则会循环播报。能够非常容易的上手,结合了vue+ElementUI来实现的作用一个循环公告

2024-02-03 09:00:00 3460 3

原创 SpringBoot+Vue使用AES进行接口加密

在当今信息化社会,数据安全的重要性不言而喻。为了应对这一挑战,我们采用了SpringBoot和Vue技术,结合AES对称加密,实现了接口请求的安全传输。AES加密算法以其高效性和安全性,被广泛应用于各类场景。通过在SpringBoot后端实现加密和解密逻辑,我们确保了数据在传输过程中的安全。而在Vue前端,我们同样利用相应的加密和解密方法,实现了与后端的无缝对接。这一方案不仅提高了系统的安全性,也增强了用户对数据安全的信心。

2024-02-02 21:29:40 3296 3

原创 使用ThreadLocal存储分页参数

避免多层级参数传递:在复杂的系统或框架中,分页参数可能需要跨越多个层级进行传递。使用ThreadLocal可以避免这种多层级传递,使代码更加简洁和易于维护。提高性能:ThreadLocal避免了使用线程同步机制(如锁)来保护共享数据,从而提高程序的并发性能。由于每个线程都拥有自己的数据副本,因此不会出现线程间的竞争和冲突,从而避免了锁竞争带来的性能损耗。便于管理线程特定的资源:在某些场景下,我们需要为每个线程分配一些特定的资源,并且在线程结束时进行清理工作。

2024-02-01 20:56:06 1253

原创 SpirngBoot使用拦截器

在Spring Boot中,拦截器是一种强大的工具,可以帮助我们处理请求和响应。通过使用拦截器,我们可以轻松地实现权限验证、日志记录、性能监控等功能,从而提高Web应用程序的性能和安全性。本文将介绍如何使用Spring Boot拦截器,包括拦截器的定义、配置和使用示例。通过这些内容,读者可以更好地了解拦截器在Spring Boot中的重要性和应用方式,从而更好地利用它来开发高性能的Web应用程序。

2024-01-31 10:00:00 457

原创 算法:手动实现LRUCache

【代码】算法:手动实现LRUCache。

2024-01-30 19:43:36 421

原创 Java的集合和字符串相互转换

如果你有一个集合,并且你想将它转换为字符串,你可以使用Java 8引入的方法。这是一个简单的示例:】

2024-01-29 22:15:53 2074

原创 @Autowired和@Resource区别

在Java的Spring框架中,依赖注入(Dependency Injection, DI)是一种核心的技术,它允许我们将所依赖的对象或属性以外部化的方式提供给一个对象,而不是在对象内部创建它们。这种技术降低了代码之间的耦合度,提高了代码的可测试性和可维护性。在Spring中,@Autowired和@Resource是两个常用的注解,它们都用于实现依赖注入,但它们在功能和使用上有一些微妙的差异。@Autowired。

2024-01-28 21:04:09 1000

原创 MVCC原理讲解(深入浅出)

从以上的描述中我们可以看出来,所谓的MVCC指的就是在使用READ COMMITTD、REPEATABLE READ这两种隔离级别的事务在执行普通的SEELCT操作时访问记录的版本链的过程,这样子可以使不同事务的读-写、写-读操作并发执行,从而提升系统性能。

2024-01-28 14:50:13 3601 5

原创 算法分享:链表反转

给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。

2024-01-28 10:00:00 462 1

原创 MySQL 覆盖索引

覆盖索引(covering index ,或称为索引覆盖)即从非主键索引中就能查到的记录,而不需要查询主键索引中的记录,避免了回表的产生减少了树的搜索次数,显著提升性能。覆盖索引避免了回表现象的产生,从而减少树的搜索次数,显著提升查询性能,所以使用覆盖索引是性能优化的一种手段,文章有不当之处,欢迎指正~

2024-01-28 01:55:37 1822 3

原创 JDK8新特性(二)

接着上一章,我们继续学习jdk8新特性。本文章讲解了Optional使用、函数式接口、方法引用、高级用法等内容,从代码方面去了解关于jdk8新特性的优雅使用方式

2024-01-27 15:17:54 987

原创 JDK8新特性(一)

JDK8引入了诸多令人兴奋的新特性,其中最引人注目的包括Lambda表达式、方法引用、默认方法、Stream API、新的日期和时间API以及Optional类等。这些新特性使得Java更加灵活和强大,简化了代码,提高了开发效率,并带来了真正的函数式编程风格。此外,JDK8还从JVM中移除了“永久代”,代之以元空间,使得内存管理更加高效。总之,JDK8为Java开发者带来了更多的可能性,使得Java焕发出了新的活力。

2024-01-27 10:00:00 1421

原创 滑动窗口(算法)

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

2024-01-26 23:06:52 565

原创 雪花算法的组成部分

雪花算法是一种用于生成全局唯一ID的分布式算法,由Twitter开源。该算法生成的ID是64位的long型数字,由四个部分组成:符号位、时间戳、工作机器ID和序列号。符号位:最高位为0,保证生成的ID为正数。时间戳:精确到毫秒级,用于标识ID生成的时间。工作机器ID:用于标识生成ID的机器,包括机房ID和机器ID。序列号:在同一时间戳、同一台机器上用于生成多个不同的ID,保证了在同一毫秒内可以生成多个ID。通过这样的设计,雪花算法可以保证在分布式环境下生成全局唯一、趋势递增的ID,同时也可以解析

2024-01-26 09:00:00 708

原创 Docker部署SpringBoot项目到云服务器

本文介绍了如何使用Docker将SpringBoot应用程序部署到云服务。首先,简要介绍了Docker和SpringBoot的基本概念。然后,阐述了部署的步骤,包括创建Docker镜像、构建Docker容器、配置云服务等。最后,通过实际案例展示了部署效果,并总结了使用Docker部署SpringBoot到云服务的优势和注意事项。

2024-01-25 18:56:27 965

原创 SpringBoot获取用户的ip地址信息

SpringBoot通过分析请求头中的"X-Forwarded-For"字段,可以快速获取用户的IP地址信息,这对于日志记录、流量分析以及安全审计等场景非常有用。同时,开发者需要考虑到用户可能通过代理服务器访问应用程序的情况,并结合其他因素来判断最接近客户端的真实IP地址。在获取IP地址时,应遵循相关法律法规和隐私政策,以保护用户隐私和安全。

2024-01-25 14:48:44 1406

原创 SpringBoot实现自定义异常+全局异常统一处理

在SpringBoot中,实现自定义异常和全局异常统一处理至关重要。通过定义自定义异常类,我们可以为应用程序中的特定错误提供更具描述性的错误信息。而全局异常统一处理机制,能够确保无论异常发生在何处,都会得到恰当的处理,避免异常的泄露和错误的传播。在代码示例中,我们定义了一个BusinessException类,然后在需要抛出自定义异常的控制器方法中抛出该异常。最后,我们实现了一个GlobalExceptionHandler类来捕获并处理该异常。这种方式能够提高应用程序的稳定性和用户体验

2024-01-24 19:55:46 971 1

原创 java中文乱码解决方案大全

【代码】java中文乱码解决方案大全。

2024-01-24 19:39:38 813

原创 Mybtisplus对时间字段进行自动填充

MyBatis-Plus是一款强大的持久层框架,用于简化Java应用与数据库之间的交互。其中一个独特的功能是它对时间字段的自动填充。在开发过程中,时间字段的自动填充能够极大地减少开发人员的工作量,避免因手动设置时间而产生的错误。MyBatis-Plus通过简单的注解配置即可实现这一功能,使用@TableField注解来指定需要自动填充的时间字段,并设置fillable属性为true。此外,还可以通过指定时间格式来满足特定需求。这使得开发人员能够更加专注于业务逻辑的实现,而不必在日期和时间处理上花费过多精力。

2024-01-24 13:09:22 891

原创 SpringBoot中Redis解决LocalDateTime序列化与反序列化不一致问题

本文主要介绍了在分布式系统中,使用Redis作为缓存时,LocalDateTime类型数据序列化和反序列化可能遇到的问题。针对这些问题,文章提出了一种解决方案,即将LocalDateTime序列化为时间戳(Long型),并使用Redis的键值对存储。这种方法可以避免时区转换的问题,确保数据的正确性和一致性。同时,文章还对其他可能的解决方案进行了分析和比较。

2024-01-24 13:00:38 1468 1

原创 SpringBoot整合QQ邮箱发送验证码

本文介绍了如何在SpringBoot应用中整合QQ邮箱服务,实现发送验证码功能。通过引入JavaMail依赖和简单配置,可以快速集成SMTP邮件发送。文章详细阐述了QQ邮箱SMTP服务的配置步骤,包括获取授权码、配置SpringBoot邮件发送属性等。此外,还提供了验证码生成与发送的示例代码,帮助开发者快速掌握验证码邮件发送技巧。整合QQ邮箱服务后,SpringBoot应用能够便捷地向用户发送验证码邮件,增强应用的安全性和用户体验。本文适合对SpringBoot和邮件发送感兴趣的开发者阅读。

2024-01-24 10:00:00 1912 2

原创 spring和springboot的区别

本文主要探讨了Spring和Spring Boot之间的主要区别。Spring是一个全面的应用程序框架,提供了一系列的服务和功能,适合需要全面控制和定制的应用程序。而Spring Boot是一个快速创建Spring应用程序的脚手架,通过自动配置和约定大于配置的原则简化了开发过程,适合快速开发、易于部署和易于维护的应用程序。文章还强调了选择使用哪一个框架时需要考虑项目需求和团队技能。通过插图和实例,文章深入浅出地解释了两者之间的区别,有助于读者更好地理解两者的应用场景和优势。

2024-01-23 22:29:26 1586

原创 SpringBoot使用Swagger2生成接口文档

本文详述了如何在SpringBoot项目中利用Swagger2生成RESTful API的接口文档。通过简单的配置和注解,开发人员可以快速创建出交互式的API文档,便于团队成员理解和测试API。文章还探讨了如何定制生成的文档,以满足项目的特定需求。掌握本文后,读者将能够轻松地将Swagger2集成至SpringBoot项目中,从而提高开发效率与维护便捷性。

2024-01-23 18:26:29 705

原创 SpringBoot连接mysql数据库相关配置(druid连接池)

SpringBoot连接MySQL数据库,使用Druid连接池可以提供高效、稳定的数据库连接管理。本文首先介绍了SpringBoot和MySQL的集成方式,然后重点阐述了如何配置Druid连接池,包括数据源配置、连接池参数设置以及性能监控等方面的内容。通过合理配置Druid连接池,可以提高数据库访问性能,减少资源浪费,同时方便对数据库性能进行监控和管理。在生产环境中,Druid连接池表现出了良好的稳定性和扩展性,是SpringBoot连接MySQL数据库的理想选择。

2024-01-22 21:06:32 969

原创 Vue2使用Echarts实现可视化(详细讲解)

全局挂载echarts 方便调用,也可以在某个组件里进行引用,这里我就不演示了。,数据是固定的,你们可以自己从后端获取数据后进行填充。

2024-01-22 09:45:00 4734 1

原创 SpringBoot的启动流程源码分析

带你走进springboot源码,剖析springboot如何启动容器,三级缓存的作用

2024-01-21 12:50:09 1148

原创 SpringBoot自动装配原理

自动装配简单来说就是自动去把第三方的组件bean加载到springIOC容器当中,不需要开发人员再去写bean相关的配置,springboot应用里面只需要把@SpringbootApplication注解加在启动类上边,就可完成自动配置的功能,而@SpringbootApplication是一个复合注解,真正完成自动配置功能的主要是这个注解里面的@EnableAutoConfiguration,自动装配主要依靠三个核心关键技术。

2024-01-21 12:44:14 374 1

原创 程序员必备的面试技巧

本文深入探讨了程序员在面试过程中必备的技巧。从了解公司背景和文化、准备常见问题、展示实际项目经验,到注重细节和表达能力、了解职位要求,每一点都为求职者提供了宝贵的指导。此外,保持良好的心态、提前准备技术测试以及熟悉面试流程和礼仪也是成功面试的关键。掌握这些技巧,将使您在激烈的竞争中脱颖而出,顺利获得心仪的职位。

2024-01-20 21:52:00 368

原创 ChatGPT 和文心一言哪个更好用?

ChatGPT和文心一言是两种备受关注的人工智能产品,它们都具有强大的自然语言处理能力。然而,在具体使用场景下,哪个更好用取决于用户需求。ChatGPT更适合用于智能对话和写作,能够模拟人类语言风格,使对话更自然流畅。而文心一言则适合用于生成高质量文本内容,如新闻、广告等,同时具备自动翻译和语音识别功能。总之,选择哪个产品取决于用户的实际需求和使用场景。

2024-01-20 21:47:14 1635 4

原创 vue对axios进行二次封装

在Vue中,对Axios进行二次封装可以提高代码的可重用性和可维护性。通过封装,我们可以将请求的配置、错误处理和拦截器等逻辑集中到一个地方,方便后续的修改和扩展。此外,封装Axios还可以简化代码,减少重复的请求配置,提高开发效率。因此,对Axios进行二次封装是Vue开发中一个非常实用的技巧。

2024-01-20 18:29:24 1265

原创 java创建线程的三种方式

这是最常用的方法,需要创建一个实现Runnable接口的类,并重写run()方法。然后,创建一个Thread对象并将这个实现Runnable接口的类的实例作为参数传递给Thread的构造函数。最后,调用Thread对象的start()方法来启动线程。这是第二种方法,需要创建一个继承Thread类的类,并重写run()方法。然后,创建一个这个新类的实例,并调用其start()方法来启动线程。

2024-01-20 14:34:21 655

空空如也

空空如也

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

TA关注的人

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