- 博客(103)
- 资源 (3)
- 收藏
- 关注

原创 java虚拟机(JVM)以及各种参数详解
Java 虚拟机(JVM)提供了许多参数来调整其行为和性能,以便更好地适应不同的应用场景。理解和使用这些参数对于优化 Java 应用程序的性能非常重要。
2025-03-12 19:21:29
828

原创 java虚拟机各个模块说明
Java 虚拟机(JVM)是 Java 运行环境的核心组件,负责执行 Java 字节码并提供跨平台能力。这些模块共同协作,使得 JVM 可以高效地执行 Java 应用程序,并提供强大的内存管理和跨平台支持。了解 JVM 的内部机制对于优化 Java 应用程序的性能和解决复杂问题至关重要。文件到内存中,并将其转化为 JVM 可以使用的类对象。:自动管理内存,回收不再使用的对象,避免内存泄漏。
2025-03-12 19:20:11
855

原创 Mysql执行计划的返回结果解释
后,MySQL 会返回一张表格,每一行代表查询中的一个表,列则提供了关于该表的执行信息。的输出,可以识别出查询中潜在的性能瓶颈,从而进行针对性的优化,如添加适当的索引、重写查询语句等。语句用于分析 SQL 查询的执行计划,帮助开发者了解查询是如何执行的,从而进行优化。在 MySQL 中,
2025-03-12 17:40:29
384

原创 商品秒杀系统的设计
理解这些名词和概念是设计和实现高效可靠的秒杀系统的基础。秒杀系统需要处理高并发、库存管理、用户体验优化等多方面的挑战。设计一个商品秒杀系统是一项复杂的任务,需要考虑到高并发、数据一致性、用户体验等多个方面。通过以上设计,可以构建一个基本的秒杀系统。具体实现过程中可能需要根据业务需求和技术栈进行调整和优化。在订单秒杀场景中,有一些常用的名词和术语,这些术语帮助我们理解和设计秒杀系统。
2025-03-12 16:59:18
1010

原创 死锁的产生以及如何避免
策略适用场景优点缺点资源有序分配多锁交叉申请场景简单有效,预防循环等待需全局统一顺序,可能限制灵活性超时机制高并发、允许重试的场景避免无限等待,提升系统健壮性需处理超时重试逻辑无锁编程(CAS、原子类)低竞争、简单操作场景高性能,无死锁风险复杂逻辑实现困难事务回滚数据库、支持回滚的操作保证数据一致性实现成本高关键系统(如金融交易):优先使用资源有序分配和超时机制。高并发系统:减少锁粒度,采用无锁数据结构。复杂事务:结合事务管理和回滚机制。
2025-03-07 14:55:03
1381

原创 如何找出jvm内存飙升的原因
找出JVM内存飙升的原因是一个系统性的过程,通常涉及对JVM内存模型的理解、监控工具的使用以及代码层面的分析。综上所述,找出JVM内存飙升的原因需要综合运用监控工具、内存分析工具和代码层面的优化技术。通过持续监控和性能测试,可以及时发现并解决内存飙升问题,确保应用的稳定性和性能。
2025-03-07 14:39:53
413

原创 Kafka的各个组件说明
↑| (管理元数据)| ZooKeeper | 或 KRaft(内置Raft)通过上述组件协作,Kafka 实现了高吞吐、低延迟的消息传递,同时保障了数据的持久化、高可用与水平扩展能力。
2025-03-07 14:11:27
949

原创 分布式事务的理解和解决方案
分布式事务的需求源于确保分布式计算环境中多个独立系统或资源之间的数据一致性和可靠性的要求。在现代计算环境中,跨不同地理位置分离的资源需要维护数据完整性和一致性,而分布式事务正是解决这一问题的关键技术。综上所述,分布式事务是分布式系统中保证数据一致性和完整性的关键技术之一。在设计和实现分布式事务时,需要根据具体的业务场景和需求来选择合适的解决方案,并注意解决可能带来的问题和挑战。分布式事务是指一个事务跨越多个不同的数据库或服务节点,这些节点可能分布在不同的物理机器或多个不同的系统中。
2025-03-07 11:20:24
897

原创 如何发现并处理mysql的慢sql
发现和处理MySQL中的慢SQL是优化数据库性能的重要步骤。通过以上步骤,可以系统化地定位和解决慢SQL问题,显著提升数据库性能。
2025-03-07 11:01:00
584

原创 Mybatis的缓存机制
虽然MyBatis不提供所谓的“三级缓存”,但可以通过集成第三方缓存框架(如Ehcache、Redis等)来实现更复杂的缓存策略。这类缓存机制通常在应用级别实现,可以在更大的范围内共享缓存数据。MyBatis的缓存机制主要包括一级缓存和二级缓存,它们用于减少数据库访问次数,提高应用性能。
2025-03-07 10:34:28
280

原创 Redis的CPU高达90%时如何处理
通过以上策略,可以有效地降低Redis的CPU使用率,提高系统的整体性能和稳定性。每个解决方案的适用性取决于具体的应用场景和Redis的使用模式,因此需要根据实际情况进行调整和优化。
2025-03-05 11:46:58
700

原创 多线程的常用包
在Java中,多线程编程是一个重要的主题,Java标准库提供了一些常用的包和类来支持多线程的开发。这些包和类提供了构建高效、多线程应用程序所需的基本工具。通过利用这些工具,你可以更容易地实现复杂的并发任务,确保线程安全和性能的优化。提供了一些原子变量类,这些类提供了一种以线程安全方式更新变量的方法,而无需使用锁。这是Java并发包,提供了更加强大和灵活的多线程支持。提供了锁和条件变量的框架。
2025-03-05 11:43:10
260

原创 订单已经重复支付如何处理?
处理已经发生的重复支付需要及时识别问题、快速响应用户需求,并通过自动化和人工审核相结合的方式进行处理。同时,系统改进和优化是防止未来重复支付问题的关键。通过建立完善的流程和机制,确保用户体验和系统的稳定性。
2025-03-05 11:36:48
628

原创 订单支付系统如何做到一致性
实现订单支付系统的一致性需要综合使用多种技术和策略,包括分布式事务、事件驱动架构、补偿事务、幂等性设计以及定期对账等。每种方法都有其适用的场景和限制,选择合适的方案需要根据具体的业务需求和系统架构来决定。
2025-03-05 10:59:48
528

原创 如何提高接口响应效率
通过以上策略和最佳实践,可以显著提高接口的响应速度,提升用户体验和系统性能。根据具体的应用场景和需求,选择合适的优化方法进行实施。
2025-02-07 16:50:20
711

原创 订单超时设计(1)--- 如何使用redis实现订单超时实时关闭功能
使用Redis实现订单超时实时关闭功能,可以利用Redis的延时队列(使用Sorted Set实现)和过期键(使用TTL和Keyspace Notifications)来实现。以下是一个示例说明如何实现这个功能。
2025-02-07 15:53:24
1008

原创 kafka怎么保证顺序消费?
kafka创建 topic 的时候没有指定分区数量,那么默认只会有一个分区。如果你想要创建一个具有多个分区的 topic,你可以在创建 topic 的命令中指定 --partitions 参数。Apache Kafka 在设计时考虑了顺序消费的需求,特别是在单个分区内的消息顺序。但是多个分区同时读取的时候就保证不了消息的顺序性了。在这个示例中,确保每个消费者只消费一个分区,并且手动提交偏移量,以保证消息的顺序性和一致性。:Kafka 提供了高可用性和容错机制,但需要正确配置以确保消息的顺序性和一致性。
2025-01-02 17:54:32
876

原创 Lombok中相关注解的基本使用
Lombok 是一个 Java 库,通过注解简化 Java 代码的编写,减少样板代码(boilerplate code)。Lombok 提供了一系列注解,可以自动生成常用的代码,如构造函数、getter 和 setter 方法、toString 方法、equals 和 hashCode 方法等。本文档将详细介绍 Lombok 的常用注解及其用法。Lombok 是一个强大的工具,可以显著减少 Java 代码中的样板代码,提高开发效率。
2024-12-27 14:46:46
599

原创 MapStruct 技术基本使用
MapStruct 是一个代码生成器,用于简化 Java Bean 之间的映射操作。通过注解处理器,MapStruct 在编译时生成类型安全的映射代码,从而提高性能并减少样板代码。本文档将详细介绍 MapStruct 的基本用法、配置和高级特性。对于复杂的映射逻辑,可以定义自定义方法。@MapperMapStruct 是一个功能强大且高效的工具,可以显著减少 Java 应用程序中的样板代码。通过合理配置和使用 MapStruct,可以提高代码的可维护性和性能。
2024-12-27 14:23:44
951

原创 项目中使用es(二):使用RestHighLevelClient操作elasticsearch
RestHighLevelClient操作elasticsearch
2023-05-31 10:38:47
2797

原创 项目中使用es(一):使用springboot操作elasticsearch
ElasticsearchRepository操作es和ElasticsearchRestTemplate操作es
2023-05-30 18:32:12
3972
2
原创 Spring Boot 2开启懒加载模式
Spring Boot 2开启懒加载一般我们在搭建项目的时候是不会用到这个东西的,因为一些bean的创建默认都是在启动的时候创建,因为如果是在访问的时候创建,那首次请求量如果有很高的并发的话,系统性能会降低很多。所以一般不建议去开启这个配置。我这是因为有特殊的需求,所以才用到这个的。就是我需要Bean对象生成的时候去读取数据库的配置内容。具体配置如下:spring: main: lazy-initialization: truespring.main.lazy-initalizat
2021-12-05 14:56:39
1650
原创 Java8流式操作-根据集合的某个属性值取交集,差集
这里是使用一个自定义类的集合和一个Integer类的集合做的一次栗子,两个封装类的操作,或者两个基本类型的集合操作都是类似的。public class CollectionTest { public static void main(String[] args) { List<Customer> list = new ArrayList<>(); Customer customer = new Customer(); cus
2021-03-23 22:14:07
5171
2
原创 Docker学习笔记3-Docker下安装和配置jenkins
Docker下安装和配置jenkins安装Docker安装jenkins使用jenkins1.安装插件2.全局系统配置3.配置项目4.遇到的问题安装Docker首先安装Docker,可以参考下这个:https://blog.youkuaiyun.com/qq_19674263/article/details/114588339安装jenkins首先需要下载镜像:docker pull jenkins下载完成之后开始启动Jenkins首次启动时需要指定一些配置参数:docker run -d -p 88
2021-03-19 23:57:01
2352
9
原创 Docker学习笔记2--Docker下安装和配置Redis
Docker安装和配置Redis安装配置并启动安装直接在线安装最新版docker pull redis完成之后查看镜像docker images配置并启动首先需要找一个Redis的配置文件,可以去官网下载一个Redis的最新压缩包。解压后复制出来reids.conf备用。修改配置文件redis.conf:主要配置:bind 127.0.0.1 #注释掉这部分,使redis可以外部访问daemonize no#用守护线程的方式启动requirepass 你的密码#给redis设置
2021-03-11 14:34:41
247
原创 Docker学习笔记(一)--安装Docker
Docker学习安装Docker步骤:设置国内镜像源一般自己在安装测试环境的时候,需要部署很多的东西,比如说jdk,maven,jenkins,redis,mysql等很多的三方服务,这一套搞下来一天能搞定就很快了。所以在测试环境我们一般没必要很认真的去搞这些东西,所以就学习了下Docker,学习下来发现Docker还是很容易学的。网上找好安装步骤,一步一步来就行。网上找了一个比较全的:https://www.cnblogs.com/caoweixiong/p/12186736.html。安装Doc
2021-03-09 17:10:04
325
原创 通过nginx转发WebSocket
通过nginx请求wensocket的时候需要修改配置文件,对于websocket请求需要特殊处理一下,需要在conf配置文件中添加一些配置:server { listen 8080; server_name test.com; add_header 'Access-Control-Allow-Origin' '*' always; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'A
2020-10-31 20:13:16
4000
1
原创 Java实现WebSocket
Java实现WebSocket1.WebSocket2.基于Java实现WebSocket的开发1.config配置2.Server 的实现3.client的实现4.websocket鉴权配置类1.WebSocket平时开发的时候,对于一些平常的需求是不会使用基于WebSocket开发的需求。但是在一些特定场景,比如:主动推送,模拟聊天等等,因为WebSocket建立等实际上是一个长链接。2.基于Java实现WebSocket的开发代码方面很简单。1.config配置@Configuration
2020-10-31 20:05:09
11582
18
原创 Java获取double类型的数字,取消科学计数法显示
Java在获取Double类型的数字的时候如果位数长了就会自动转换成科学计数法显示,有时候不需要去显示科学计数法,这样我们就需要去手动转换一下:NumberFormat nf = NumberFormat.getInstance(); //设置保留多少位小数 nf.setMaximumFractionDigits(20); // 取消科学计数法 nf.setGroupingUsed(false);Strin
2020-08-18 11:18:10
4026
原创 Java中数组转List,一些你意想不到的坑
说起这个数组转List,马上就会想到Arrays.asList()。没错,这个是可以转成功的。看下这个小例子:// int[] arrs = new int[]{1,2,3,4,5,6,7,8}; Integer[] arrs = new Integer[]{1,2,3,4,5,6,7,8}; System.out.println("test1:"+arrs.length); List<Integer> list = Arrays
2020-07-11 22:51:31
695
原创 SpringBoot自己手写个starter------代码来了
拖了一周的总结。。。SpringBoot自定义starter1.需求2. 代码实现3. 用到的注解4.遇到的问题1.需求目前Java项目框架一般都是以SpringBoot作为脚手架来搭建的,具体什么原因就不用我在这里多说了吧。为了方便我们使用呢,它也封装了很多相关的starter组件,只要我们在项目中引入就行了。因为我们项目中用的是第三方插件Jongo来操作数据库MongoDB 的,所以这里我就尝试着吧Jongo封装成一个自定义starter。2. 代码实现1.首先我们需要创建一个mudule。我
2020-07-10 17:55:47
926
1
原创 SpringBoot自己手写个自定义starter
最近在看SpringBoot相关的视频,看到别人自定义starter写的那么6,自己也有些手痒,就琢磨着自己写个。最近一直在用MongoDB的操作工具类Jongo,虽然这个spring也有自己的操作工具类,但是架不住习惯啊。就是习惯了用Jongo。废话不多说。在写自定义starter之前,我们首先要了解下SpringBoot是如何加载starter的。最开始肯定是那个我们最熟悉的注解:@SpringBootApplication。进入实现发现了个这个注解:@EnableAutoConfiguratio
2020-07-03 20:57:15
824
1
原创 SpringBoot+MyBatis实现MVC项目开发
现在一般都是已SpringBoot搭建的项目了,在这小记一下SpringBoot中引入MyBatis。比较简单:1.引入maven配置<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version
2020-06-26 22:58:10
248
原创 Spring Boot 2.3.1.RELEASE 引入 Swagger2
Spring Boot 2.3.1.RELEASE 引入 Swagger21.首先引入Maven配置2.添加Swagger2的配置类SwaggerConfig3.遇到的问题最近在回顾SpringBoot的小知识,其实有些技术什么的早在之前就已经学过并且用过了,就是因为没有做好总结,又加上版本什么的更新的比较快,当我再次去看的时候发现很是生疏啊,所以一定要养成一个做笔记的好习惯。废话太多,上代码1.首先引入Maven配置版本使用SpringBoot2.3.1和swagger的2.9.1的相关版本&l
2020-06-25 22:59:43
3769
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人