- 博客(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
原创 @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
原创 雪花算法的组成部分
雪花算法是一种用于生成全局唯一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
原创 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自动装配原理
自动装配简单来说就是自动去把第三方的组件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关注的人