自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 基于Spring Boot的网页即时聊天系统

前端采用Vue2框架进行搭建,使用Element UI对整体页面进行构建,数据请求使用axios对后端进行请求访问,实时方面则通过WebSocket来建立长连接来随时响应数据。后端基于Spring Boot整合了Netty来完成消息推拉,通过Spring Security对身份权限进行校验,在POST请求中还添加了AES对称加密,提交数据安全性。最后,整体界面借鉴了QQ、微信、腾讯会议等通信软件进行整体设计和功能实现、相对于这些软件的优势在于不需要额外的下载APP,不需额外占用过多内存即可实现实时聊天。

2024-05-11 14:06:17 255

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

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

2024-02-17 17:51:09 2324

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

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

2024-02-07 21:16:41 878

原创 服务器和CDN推荐

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

2024-02-05 20:38:00 1133

原创 HashMap的put和get流程

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

2024-02-04 18:54:35 632

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

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

2024-02-03 09:00:00 1128 2

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

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

2024-02-02 21:29:40 2125 2

原创 使用ThreadLocal存储分页参数

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

2024-02-01 20:56:06 1060

原创 SpirngBoot使用拦截器

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

2024-01-31 10:00:00 407

原创 算法:手动实现LRUCache

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

2024-01-30 19:43:36 374

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

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

2024-01-29 22:15:53 1162

原创 @Autowired和@Resource区别

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

2024-01-28 21:04:09 948

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

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

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

原创 算法分享:链表反转

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

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

原创 MySQL 覆盖索引

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

2024-01-28 01:55:37 1525 2

原创 JDK8新特性(二)

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

2024-01-27 15:17:54 907

原创 JDK8新特性(一)

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

2024-01-27 10:00:00 1273

原创 滑动窗口(算法)

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

2024-01-26 23:06:52 531

原创 雪花算法的组成部分

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

2024-01-26 09:00:00 469

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

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

2024-01-25 18:56:27 834

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

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

2024-01-25 14:48:44 1004

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

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

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

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

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

2024-01-24 19:39:38 591

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

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

2024-01-24 13:09:22 753

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

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

2024-01-24 13:00:38 786

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

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

2024-01-24 10:00:00 751 1

原创 spring和springboot的区别

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

2024-01-23 22:29:26 1558

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

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

2024-01-23 18:26:29 627

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

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

2024-01-22 21:06:32 738

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

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

2024-01-22 09:45:00 1085

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

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

2024-01-21 12:50:09 1103

原创 SpringBoot自动装配原理

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

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

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

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

2024-01-20 21:52:00 334

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

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

2024-01-20 21:47:14 1484 3

原创 vue对axios进行二次封装

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

2024-01-20 18:29:24 943

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

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

2024-01-20 14:34:21 617

原创 SpringBoot使用AOP进行日志记录

*** 获取某些方法执行的method操作(参照包com.example.demo.constant.OptTypeConstant下的常量选择)*///执行声明操作。

2024-01-19 10:00:00 1207 1

原创 Vue从后端取数据,实现动态路由

Vue动态路由从后端获取数据,让页面内容更加丰富和动态。通过axios等库,Vue可以方便地发起HTTP请求,从后端获取数据。获取的数据可以存储在Vue组件的data对象中,也可以使用Vuex进行管理。数据获取后,可以使用v-for指令进行列表渲染,也可以使用v-if指令进行条件渲染。通过动态路由,我们可以实现更加灵活的页面展示和交互,提高用户体验。

2024-01-18 10:00:00 1099 1

原创 springboot如何创建全局线程池

bean,并设置了核心线程数、最大线程数、队列容量和线程名前缀。这个线程池将作为全局线程池,可以在你的应用中的任何地方使用。在Spring Boot中创建全局线程池,你可以通过配置一个。将这个线程池注入到需要它的类中。在这个例子中,我们创建了一个。

2024-01-17 19:00:00 626

原创 Vue的父子页面如何相互传值和调用方法

Vue父子页面传值主要通过props和事件实现。父页面将数据作为props传递给子组件,子组件在需要时触发事件,将更新的数据传递回父页面。父页面监听该事件,并在事件处理函数中更新数据。这种机制使得父子页面之间能够实现灵活的数据传递。

2024-01-17 13:23:58 1054

空空如也

空空如也

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

TA关注的人

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