- 博客(76)
- 收藏
- 关注
原创 ArrayList和LinkedList的区别
ArrayList 适用于查找频繁、插入和删除不太频繁的场景。LinkedList 适用于插入和删除频繁的场景,尤其是在链表的头部或尾部进行操作时。选择哪一个主要取决于你的应用场景和性能要求。
2025-04-13 01:07:25
445
原创 Java中常见的设计模式
定义:抽象工厂模式提供一个接口,用来创建一系列相关或相互依赖的对象,而无需指定具体的类。应用场景:需要创建一系列相关的对象,而无需指定具体类。用于产品族的创建,确保一系列相关的对象符合某种约定。示例代码:// 1. 定义抽象产品接口:ProductA// 2. 具体产品A1// 3. 具体产品A2// 4. 定义抽象产品接口:ProductB// 5. 具体产品B1// 6. 具体产品B2// 7. 定义抽象工厂接口// 8. 具体工厂A1。
2025-04-11 23:01:51
767
原创 Java中工厂模式和抽象工厂模式的区别
定义:抽象工厂模式提供一个接口,用于创建一系列相关或依赖的对象,而不需要指定具体的类。它比工厂模式更为复杂,通常用于创建一组相关的对象。特点:提供多个方法来创建一组相关产品。客户端通过抽象工厂来创建多个相关产品,而不关心具体的类。适用于创建多个产品系列的场景。工厂模式:用于创建一个单一对象。抽象工厂模式:用于创建一组相关或依赖的对象,通常是多个产品。在这个例子中,ChairFactory 和 SofaFactory 是单独的工厂,每个工厂负责创建一个具体的家具对象。
2025-04-11 19:58:22
381
原创 JVM调优
JVM 调优是一个综合性的问题,涉及多个方面,包括内存管理、垃圾回收、线程管理、JIT 编译等。调优时通常需要先通过监控工具了解瓶颈所在,然后有针对性地进行调整。调优时要根据应用的具体需求来设置不同的参数,比如对低延迟要求高的应用选择适合的垃圾回收器,或者根据硬件配置调整堆内存大小。
2025-04-08 21:58:16
791
原创 JVM内存模型
总结来说,JVM 内存模型通过合理的内存分配和回收机制,为 Java 程序提供高效的运行环境,并确保多线程并发执行时的内存一致性。
2025-04-08 21:57:47
712
原创 Kafka的简单介绍
Kafka 是一个分布式流处理平台,主要用于处理大规模、高吞吐量的消息流。最初由 LinkedIn 开发,并由 Apache 开源。Kafka 主要用于消息队列的管理和流数据的处理,支持分布式、可扩展、高容错的特性,广泛应用于日志收集、实时数据处理、流式处理等场景。Kafka 是一个高效、可靠的分布式流数据平台,广泛应用于高吞吐量的消息传递、日志收集、流式处理和事件驱动的架构。通过生产者发布消息,消费者订阅消费,可以实现系统间的解耦和异步处理,提供了一个强大的流数据处理基础设施。
2025-04-08 14:51:47
957
原创 Kafka和RocketMQ相比有什么区别?那个更好用?
Kafka 更适合需要高吞吐量、低延迟的场景,如大数据流、日志处理、事件流处理等。如果你的应用主要关注性能和大规模分布式系统,Kafka 是不错的选择。RocketMQ 更适合需要保证消息顺序、事务性和高可靠性的场景,如金融系统、订单系统等。如果你的系统需要强大的事务支持和消息顺序控制,RocketMQ 更加适合。因此,没有绝对的“更好”,而是要根据实际的业务需求来选择最合适的消息队列系统。
2025-04-08 14:36:45
895
原创 Java RPC 框架是什么
Java RPC 框架提供了一种便捷的方式来实现跨进程、跨服务器的远程服务调用。在微服务架构和分布式系统中,RPC 框架是服务间通信的重要工具,它隐藏了网络通信的复杂性,并提供了高效的服务治理机制,帮助开发者构建可靠的分布式应用。
2025-04-08 14:27:21
925
原创 Dubbo的简单介绍
Dubbo 是一个高性能的 Java RPC 框架,最初由阿里巴巴开发,用于构建分布式服务。它主要用于提供服务间的通信,支持高效的远程调用和服务治理,常用于大规模分布式系统中。Dubbo 是一个成熟、可靠的分布式服务框架,特别适用于微服务架构中的服务间通信,能够帮助企业构建高性能、可扩展的分布式系统。
2025-04-08 14:25:49
514
原创 Spring的简单介绍
Spring 是一个开源的 Java 企业级应用开发框架,旨在简化企业应用的开发过程。它通过提供全面的基础设施支持,帮助开发人员构建可靠的、高效的、可扩展的企业级应用程序。Spring 提供了多种功能模块,支持开发不同类型的应用程序,包括 Web 应用、分布式系统、消息驱动应用等。Spring 是一个功能强大的框架,提供了广泛的功能和模块,适用于从小型 Web 应用到大型企业级系统的开发。通过依赖注入、面向切面编程、事务管理等核心特性,Spring 大大提高了开发效率,并促进了松耦合、高可维护性的代码结构。
2025-04-07 20:28:07
610
原创 Spring、Spring Boot和 Spring Cloud 的关系
Spring 提供了广泛的企业级应用功能。Spring Boot 让使用 Spring 更简单、快速,适合构建和启动 Spring 应用。Spring Cloud 提供了微服务架构的支持,帮助开发分布式系统。
2025-04-07 20:27:29
722
原创 SpringCloud的简单介绍
Spring Cloud 是一个为开发分布式系统和微服务架构提供支持的框架,它构建在 Spring Framework 和 Spring Boot 之上,提供了很多常用的分布式系统的解决方案。Spring Cloud 通过一系列的工具和组件,使得开发、部署和管理微服务架构变得更加容易和高效。Spring Cloud 是一个强大的微服务框架,提供了许多常见的功能和解决方案,使得开发和管理微服务应用变得更加简单。
2025-04-07 20:14:35
950
原创 SpringBoot的简单介绍
Spring Boot 是一个开源的 Java 框架,用于简化 Spring 应用程序的开发。它基于 Spring Framework,提供了许多开箱即用的功能,旨在帮助开发人员快速构建和部署应用程序,尤其是微服务架构中的应用程序。Spring Boot 是一个让 Java 开发变得更加轻松和高效的框架,尤其适用于微服务和现代 Web 应用的构建。通过自动配置、内嵌服务器、快速部署等功能,Spring Boot 提供了一种快速开发、简化配置的开发体验。
2025-04-07 20:08:49
1062
原创 SpringMVC的简单介绍
SpringMVC 是一个基于 Java 的 Web 框架,是 Spring Framework 中用于构建 Web 应用的一个核心模块。它采用了 模型-视图-控制器 (MVC) 设计模式,能够帮助开发者更加清晰地分离业务逻辑、用户界面和请求处理,从而提高应用的可维护性和扩展性。SpringMVC 是一个功能强大的 Web 开发框架,采用 MVC 设计模式,提供了灵活的请求处理和视图解析机制,可以帮助开发者更好地构建和维护 Web 应用。
2025-04-07 17:56:46
841
原创 依赖注入 (DI)\控制反转(IoC)和面向切面编程 (AOP)详解及通俗例子解释
依赖注入 (DI):通过将对象的依赖交给容器管理,降低了对象之间的耦合,提高了系统的可维护性和可测试性。控制反转 (IoC):控制反转是 DI 的基础,IoC 容器负责管理对象的生命周期和依赖关系,自动将依赖注入到对象中。面向切面编程 (AOP):通过引入切面,将横切关注点(如日志、事务)从核心业务逻辑中抽离出来,从而提高了代码的模块化、可读性和可维护性。通过 DI 和 AOP,Spring 提供了一种更高效、更灵活的开发方式,帮助开发人员减少复杂的代码和重复工作,提升开发效率和系统的可扩展性。
2025-04-07 17:43:20
1082
原创 如何给数据库表字段添加索引(索引添加建议)
经常用于 WHERE 子句中的字段。用作连接条件的字段(例如外键)。经常用于 ORDER BY 和 GROUP BY 操作的字段。用于范围查询的字段。主键和唯一约束字段。tips: 添加索引时要注意,索引会加速查询,但也会增加存储开销和写入操作的成本。不要为所有字段都添加索引,应根据查询模式和业务需求进行选择。
2025-04-07 15:08:01
450
原创 如何进行SQL调优
SQL 调优是一个复杂而系统的过程,涉及查询语句的优化、数据库设计、索引使用、数据库参数调整等方面。常见的优化策略包括:选择合适的索引、减少全表扫描、避免不必要的计算和 JOIN、分析执行计划等。通过这些优化措施,您可以提高数据库的查询性能,确保应用在高并发和大数据量环境下的响应速度。
2025-04-07 14:57:00
1018
原创 Token+JWT+Redis 实现鉴权机制
Token:通常是一个唯一的字符串,可以用来标识用户的身份。JWT (JSON Web Token):是一种自包含的、轻量级的认证方式。它由三个部分组成:Header:包含算法信息(如 HMAC SHA256 或 RSA)和 Token 类型。Payload:包含声明信息(如用户 ID、过期时间等)。Signature:用于验证 Token 是否被篡改。通过结合 Token、JWT 和 Redis,我们可以实现一个高效且可扩展的鉴权机制,支持无状态认证、Token 过期控制、强制登出等功能。
2025-04-07 14:45:39
817
原创 Powerdesigner(数据库建表的简单应用)
2、主键ID,需要自增不为空且唯一,一般使用bigint类型,mysql8.0后可以不用写长度bigint(0)这样,因为从8.0.17版本开始,TINYINT, SMALLINT, MEDIUMINT, INT, and BIGINT类型的显示宽度将失效。6、状态,需要与其他的表字段设置同步,大家都是0否1是,使用的类型是tinyint一般情况下布尔类型的值或者枚举类型的使用的都是这个类型用以节省空间。D:是否在模型中显示。4、图片、外链等,存储url链接的一般用varchar(255)就够用了。
2025-04-02 04:00:03
221
原创 简单记录一下在java的Mybatis-plus中用一个SQL语句查询一个嵌套的实体类(实体类中有List,List中还有List)
也就是KpCourseInfoClientDetailVO课程详情类中含有List courseChapterList章节列表,然后章节列表中含有List lessonList课时列表,通过一个SQL查询得到结果。因为是在实体类中List嵌套List,所以外部的List直接用collection 标签来写,然后再给其内部嵌套的List标签写个resultMap 来对应参数,最后通过接口调用就能拿到想要的参数结构了。然后在KpCourseInfoMapper.xml中实现。得到下列结果,说明SQL没有问题。
2024-07-15 15:48:46
663
1
原创 mq的使用方法
Value(“${mq.signup-topic:saas-signup}”)从nacos中取如果没有默认用saas-signup。注意:每个环境的名称最好不要一样不然会消费到其他环境中,
2023-10-26 17:31:35
193
原创 单点登录(SSO)
由于 OIDC 协议基于 OAuth 2.0 协议实现,两者很多支持的模式是互通的。而对于全总的接入中心,我们是采用了Oauth2.0中的授权码模式对外开放openApi来让各个地方服务平台进行接入;Authorization Code 模式,被授权方是用户,应用通过授权码模式,可获取三方系统身份信息,并以该身份进行登录。指用户仅需一次登录,即可访问全部应用的实现,在历史中根据应用变化,SSO 也有多种实现形态。打war包时 将自己外部的jar包打到war里面 注意:打jar使用上面注释掉的那些。
2023-03-30 15:21:45
536
原创 {dataSource-1} init error和Could not autowire.No beans of ‘xxx‘ type found
我在写代码时springBoot的自动扫描是扫描其当前包及其子包下自然是无法扫描到,因此在我写下代码和引用后就看到定义的属性报错:@Autowired:Could not autowire.No beans of ‘xxx‘ type found。在我纠结了好久后才想明白,其实只是因为我配的时候只配了我想要扫描的哪个文件,没有带上本来默认扫描的所以报错,在加上后就好了。看到这个自然我也就想着去启动类中加入扫描rescources下面的lib的配置,加上后定义的属性确实不飘红了。
2023-02-28 16:47:36
1031
原创 IDEA合并分支(从开发分支到测试分支)
将“beijing-20230130(你的本地分支)”合并到“测试(目标分支)”中,这个不推荐用,因为他会把你这个分支所有的东西合并到目标分支中。Show Diff看自己的代码改了什么地方,有没有冲突,可以在代码里面直接把右侧你(本地的分支)代码给覆盖到左侧来。与当前分支(test)比较,这个比较回弹出个窗口告诉你,你的分支里面有什么,合并的分支里面有什么。1、先在当前分支拉去最新的代码且提交自己的修改到远程分支上。2、切换到目标分支(你要合并到的分支上),test测试分支。
2023-02-10 14:13:49
5004
原创 java实现给图片添加水印(文字水印或图片水印)
以下代码是为了实现,在上传图片时对其进行压缩,加文字或图片水印,最后再将处理好的图片url返回给前端,话不多少直接上源码。原文是这位作者的,调理清晰且很好用!
2022-11-04 19:31:48
5896
原创 入职开发环境配置
还有一点下载图形化插件的地址中原先的https//github.com/apache/rocketmq-externals或者https//gitee.com/mirrors/RocketMQ-Externals都已经不再有rocket-console了,新创建了一个独立的仓库并命名为RocketMQDashboard。需要注意的是配置Path系统变量时,如果我们在之前安装修改了jdk的存放位置,我们就需要把。因为Idea是2020的版本,所以和Maven不兼容,这里还需要。...
2022-07-18 23:41:07
662
1
原创 Vue在启动时卡住了,启动不了的问题
npm run serve比如一个template下面只能有一个子元素,你可能写了两个;也有可能自己在 import 的时候,多引入了空的东西;当然最有可能的是和我一样不知道什么时候碰到了键盘,在template中间敲了个字母,导致编译无法通过,还不知道在哪儿执行 npm install 命令,重新下载依赖,npm会下载缺失的依赖项。然后我们再运行npm run serve即可......
2022-07-01 22:39:08
11583
2
原创 有关于AfterReturning通知中的JoinPoint异议与不解(希望有人留言告知)
通过代码可以知道我这里通过joinPoint.getArgs()[0];是获得了UmsUserController下add方法中的第一个参数UmsUserController中add方法代码然而这两个参数最后输出时明显不一样,通过joinPoint.getArgs()[0];获得的参数是已经在add方法中执行完,各种属性添加完之后的对象...
2022-06-18 18:44:40
898
原创 如何在IDEA上配置使用Git
如何在IDEA上配置使用Git一、IDEA对于Git&GitHub的支持1、IDEA对GitHub和Git的基本配置案例演示首先建立一个演示项目(web项目即可),然后建立一个User类,里面写上初始测试内容打开settings --> Version Control --> GitHub填写GitHub网址,账号,密码,然后点击Test测试上述测试成功后,配置Git打开settings --> Version Control --> Git第一栏文本框
2022-01-06 17:47:17
26139
原创 JAVA开发过程
JAVA开发过程1、安装软件如何安装IDEAIDEA小设置IDEA快捷键2、拉取代码从SVN上拉取代码从GIT上拉取代码3、启动程序从新建Maven管理下的Web项目到启动Tomcat4、定位问题灵活运用搜索定位问题5、解决问题通过Debug解决问题补充:多线程debug调试通过互联网解决问题6、提交代码将代码更新提交到SVN上将代码提交的GIT远程仓库...
2021-12-30 15:57:34
309
原创 JAVA开发过程中如何通过互联网解决问题
JAVA开发过程中如何通过互联网解决问题一般在开发过程中遇到问题后都是先自我排查和解决,但是作为初学者总是会遇到很多稀奇古怪的问题,或者说是没有头绪不知道如何完成任务要求。1、直接百度俗话说的好,百度是程序员进步的阶梯(我瞎编的),百度一般能提供很多种解决方法,但是正因为解决方法多所以才显得很杂乱,甚至很多回答牛头不对马嘴,因此要善于筛选。2、优快云和博客园等这类专业开发者社区的信息在搜索后专业性都很强,能有效解决大部分问题,只是有些方法可能未得到验证,需要你耗费大量时间去尝试,而且一般没有项目
2021-12-30 14:54:49
350
原创 Git的基本使用命令
Git的基本使用方法什么是Git? Git是版本控制工具,它的作用是帮助我们的开发者管理代码的工具,说明白一些就是对文件及文件夹的管理 管理:对文件的增删改查进行控制 之前我们写的代码,如果大家协作开发,没有学习版本控制之前,需要将代码进行拷贝/粘贴到文件夹中,大家使用U盘相互传递对大家的要求:使用,熟练掌握即可. 基本操作没问题,平时应用也没有问题.我们所学习的Git:以命令行的方式进行git的管理 Git命令行方式在公司中,是一些老程序员所必备的技能大家将资料下载一下,将Gi
2021-12-30 14:52:29
830
原创 IDEA小设置
1、改变IDEA风格2、改变IDEA任务栏字体样式和大小3、改变IDEA字体样式和大小4、怎么在创建包的时候自动把包分开5、显示当前文件夹在我的电脑中的位置6、设置顶部页面多行显示7、显示谁提交的代码8、设置service放在下方窗口栏9、在Git的update和commit旁边加上一个push按钮10、显示Commit11、自动去掉无效引用
2021-12-28 17:00:34
11854
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人