自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(219)
  • 资源 (9)
  • 问答 (1)
  • 收藏
  • 关注

原创 Java内存布局

64位 JVM 不启用指针压缩时:Object Header 大小是16字节。64位 JVM 启用指针压缩时(默认):Object Header 大小是12字节。32位 JVM:Object Header 大小是8字节。JVM在默认情况下启用指针压缩,但如果堆内存超过32GB,就会禁用指针压缩。32GB是压缩指针的最大寻址范围。超过32GB的堆内存中,压缩指针带来的性能提升并不显著,而且需要解压指针反而可能增加开销。

2024-10-01 09:29:45 697

原创 Mysql主从不一致校验

依赖主从复制依赖于MySQL的复制机制,因此只能检测到复制层面的问题,而无法发现复制日志丢失或数据直接修改导致的不一致。数据一致性保证:工具可以通过设置等选项,确保只检测而不修改数据,也可以与结合使用来修复不一致的数据。通过这种方式,可以在不直接访问从库数据的情况下,有效地检测并报告主从数据不一致问题,为数据库管理员提供了强大的维护工具。

2024-09-27 21:12:38 723

原创 Maven版本号管理

Dependency Management的管理方式很好,代码层面解决不会遗漏,但是需要parent或者bom使用快照版本号打包时动态修改,可以避免生产出现快照包场景,但是需要在打包时确认具体的版本号,或者容易遗漏,例如打包时忘记指定某个版本号,当业务依赖包多的时候,mvn命令会很长很容易出现遗漏或修改错误问题。

2024-09-21 09:03:22 853

原创 Java泛型类型解析

是针对类的字段,返回字段的泛型类型或具体类型。是针对类或接口,返回定义在类或接口上的类型参数。如果你想获取一个类中字段的实际类型,是合适的方法。如果你想获取类本身定义的类型参数,是正确的方法。表示的是已经用实际类型参数化的泛型类型。例如,是一个。表示的是泛型类型参数本身。例如,T在中是一个。表示完整的参数化类型,而表示泛型类型参数。第一种方式直接通过获取类型,类型信息在运行时已经被擦除,无法获取到实际的泛型类型。最终得到的Type t只是一个原始的类型,没有泛型信息。第二种方式在。

2024-09-07 07:38:17 924

原创 RateLimiter超时

tryAcquire的超时参数,是在预期超时之前能够获取到令牌才会阻塞等待,否则会理解返回获取失败。

2024-08-30 23:02:44 507

原创 系统上下文切换分析

这是多任务操作系统的一个重要功能,但频繁的上下文切换可能会导致性能下降,因为每次上下文切换都涉及保存和恢复CPU状态,这会消耗CPU时间。在这种情况下,CPU的总使用率为6.9%(用户+系统),这表明CPU大部分时间是空闲的。在这种情况下,系统CPU使用率很高,特别是系统时间占比显著增加,同时上下文切换次数非常高,表明系统可能由于频繁的上下文切换导致性能瓶颈。在这种情况下,CPU使用率很低,表明系统大部分时间是空闲的,上下文切换次数虽然存在但并未对系统性能造成显著影响。表示上下文切换次数。

2024-08-24 09:19:58 724

原创 Grafana中的rate与irate以及histogram

le标签在 Prometheus 直方图中表示桶的最大延迟值,以 “less than or equal” 的方式来说明。这样设计可以更精确地反映数据分布,并方便进行数学计算和分析。

2024-08-17 08:31:39 1125

原创 Jvm G1与ZGC启动参数

�通过这些参数配置,你可以优化 ZGC 的性能,并获取详细的 GC 和内存分配日志,以便更好地监控和调优 JVM 的内存管理。设置 G1 堆区域的大小为 16M。这个值应该是 2 的幂次方,范围在 1M 到 32M 之间。启用垃圾回收日志文件轮转,最多保留 10 个日志文件,每个文件大小为 20M。这些参数是一个初始的优化建议,你可以根据实际应用的性能表现进行进一步的调整。启用详细的垃圾回收日志记录,并将日志输出到指定文件。内存不足时生成堆转储,并指定堆转储文件的路径。设置初始堆和最大堆大小为 4G。

2024-08-09 22:05:57 891

原创 Mysql大单表JSON优化

类型优点缺点TEXT兼容性高;无额外的 JSON 数据类型开销没有 JSON 数据类型的内置功能;查询性能较差JSON内置函数和操作符;数据验证;可以创建索引存储 JSON 数据时有额外开销;兼容性问题对于大 JSON 数据,推荐使用 JSON 类型,以利用 MySQL 的内置功能和优化。对于简单的文本存储,TEXT 类型也可以满足需求,但可能需要额外的处理步骤来管理 JSON 数据。

2024-08-04 06:21:22 1026

原创 应用卡顿排查

的合理性直接影响到 MySQL 的性能。一个合理的配置可以减少磁盘I/O,提高查询性能,优化数据库操作。以下是判断监控使用情况查看和相关状态变量。计算和配置按照内存总量的 70% 到 80% 来配置。调整基于实际监控数据和性能测试结果来调整。根据你的监控数据,当前的可能过小。虽然当前较高,但在高负载情况下可能会遇到性能瓶颈。建议增加并根据实际负载和数据量进行调整。同时,关注其他相关配置和硬件性能也很重要。

2024-07-28 08:37:12 440

原创 log4j2启动异步日志与动态修改日志级别

使用异步日志记录器可以全局地处理日志事件,使所有日志记录器异步地处理日志。使用异步追加器可以局部地将特定的追加器配置为异步。通过将日志事件放入队列中处理,异步日志记录可以显著提升应用程序的性能,特别是在高并发环境中。选择合适的方式来启用异步日志记录,并根据需要调整配置文件,以获得最佳性能和日志记录效果。通过以上方法,你可以在 Spring Boot 应用中动态修改日志级别,无论是通过 Actuator 提供的 HTTP 接口还是通过程序内的代码修改。

2024-07-21 06:22:31 937

原创 ForkJoinPool与ThreadPoolExecutor

ThreadPoolExecutor不多介绍,重点介绍ForkJoinPool,以及二者的区别ForkJoinPool 是 Java 7 引入的一种用于并行计算的框架,特别适合处理递归任务。它是 java.util.concurrent 包的一部分,基于工作窃取算法,可以充分利用多核处理器的并行能力。以下是 ForkJoinPool 的基本用法介绍。ForkJoinPool 基于两个核心操作:我们来实现一个简单的斐波那契数列计算例子。b. 合并排序下面是一个使用 ForkJoinPool 实现合并排序(

2024-06-29 10:49:51 851

原创 Reactor Mono应用

在微服务架构中,调用远程服务(如REST API或gRPC)时,通常会返回一个单一的结果。这是Mono的一个典型应用场景。使用Mono可以优雅地处理异步操作中的错误。例如,如果某个操作可能会失败,可以返回一个错误的Mono并在订阅时处理错误。Mono可以用来表示和处理异步计算的结果。例如,当你需要从一个异步操作中获取一个值时,可以使用Mono。例如,将一个值转换为另一个类型的值。Mono可以用于在异步操作中管理资源,如文件或连接的打开和关闭。Mono可以用于组合多个异步操作,构建复杂的异步数据流。

2024-06-22 06:30:02 507

原创 EventBus之Reactor实战

Flux.merge: 消费者会接收到先产生消息的生产者的所有消息,然后接收到后产生消息的生产者的消息。消息是按时间顺序发射的。Flux.zip: 消费者只有在两个生产者都有消息时,才会接收到配对好的消息。在第二个生产者开始生成消息之前,消费者不会收到任何消息。选择哪种操作符取决于你的具体需求和希望如何处理消息流的合并。

2024-06-15 07:56:05 918

原创 Spring Cloud、Spring Cloud LoadBalancer、Nacos 和 OpenFeign整合

版本。

2024-06-08 06:35:02 505

原创 mysql undolog管理

在MySQL中,Undo Log(撤销日志)用于支持事务的回滚和MVCC(多版本并发控制)。为了避免Undo Log不断增长,影响系统性能,需要进行合理的清理。MySQL的Undo Log清理策略主要依赖于系统的配置参数和后台线程的操作。

2024-06-07 22:11:51 1168

原创 spring-boot整合Micrometer+Prometheus

Micrometer可以整合Prometheus也可以整合influxDB等时序数据库,主要作用就是桥接,类似于Slf4j与log4j,logback的关系。提供一个通用的打点能力,并将打点数据对接到相应的时序数据库,用户只需要关心何时打点即可。桥接包中的io.micrometer.prometheus.PrometheusMeterRegistry,将打点数据桥接至io.prometheus.client.CollectorRegistry。

2024-05-18 07:28:37 1951 1

原创 java性能分析async-profiler

项目地址。

2024-05-12 10:41:45 415

原创 Java线程亲和实战

环境:Linux version 5.4.0-1084-aws (buildd@lcy02-amd64-044) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #91~18.04.1-Ubuntu SMP Sun Aug 14 01:24:43 UTC 2022。

2024-04-06 23:13:12 1004

原创 图说Linux cpuinfo

即为所有物理CPU上的core的总数,实际数量可能

2024-03-30 10:59:20 865

原创 Disruptor概览

一文简短的文章帮助你掌握Disruptor设计原理

2024-03-23 10:54:47 676

原创 spring-cloud-loadbalancer-3.1.1版本bug踩点记录

问题复现后基本原因也很明确了,问题出现在第2147483462次递增,也就是num=185+2147483462=2147483647,那么此时2147483647递增后结果为-2147483648。abs对-2147483648求值结果为2147483648。对整形熟悉的朋友都知道,整形的范围是:-2147483648 至 2147483647。查看abs源码如下。代码很简单,如果是负数直接取-a。也就是说绝对值2147483648对于整形发生了越界,即得到结果是一个负数:-2147483648。

2024-02-24 09:43:56 1257

原创 Mysql锁实战

基于唯一索引更新,行锁基于非唯一索引更新,next-key-lock,行锁+gap锁,锁范围前后均为闭区间,以user_age索引字段为例:between 18 and 40, 锁范围:[18,40]19,锁范围:[19,+∞]

2023-08-13 15:14:47 363

原创 ES索引Json格式字段设计

properties嵌套对象,基本满足的大部分需求,并且实现简单properties嵌套索引,查询用法会有些差异,如果子properties对于数组json的检索场景要求对象字段之间匹配关系是与运算关系(and关系),则需要使用该类型子properties的字段可以动态添加,如果dynamic=false新增的字段不能用于检索,新增字段想要用于检索需要reindex,如果dynamic=true新增的字段可以用于检索,例如:下面案例,新增itemId字段可以直接用检索,dynamic=true时。

2023-07-16 11:01:18 2848

原创 JQuery select支持模糊搜索

模态框select2下拉框不能搜索,使用模态框,一般都会自动带上一个属性, tabindex=“-1” ,因为这个属性的存在,导致select2的搜索框无法输入,去掉这个属性即可解决。html中tabindex属性可以设置键盘中的TAB键在控件中的移动顺序,即焦点顺序。模态框中的select2下拉框很窄,增加宽度属性。增加js,在页面加载完成时重写select。引入:select2。

2023-07-02 10:35:40 1069

原创 httpclient连接泄漏实战-_-

连接泄漏的原因小结客户端没有主动释放连接服务端长轮询定时任务刚好是30S与Tomcat的异步请求超时时间30S吻合在数据没有准备好时,服务端定时任务(ScheduledThreadPoolExecutor�)30S到时调度任务期间,个别任务还未被调度唤醒时,Tomcat异步请求超时,提前响应了客户端,客户端收到异常请求时没有主动关闭连接,导致连接发生泄漏解决方法主动释放连接客户端超时时间设置低于30S超时监控:起一个定时任务,定期检查连接是否已超时,超时则主动释放。

2023-05-27 21:01:16 1356

原创 ES reindex 实战

文档量:54851887文档大小:15.4GBES节点:单个耗时:55-60分钟负载:cpu=50%左右,内存=70%左右。

2023-05-21 16:35:51 842

原创 RocketMQ的延迟队列实现

例如Slot案例中写入的三条数据对应的两条延迟消息(均为延迟时间:2023-04-16 20:00:00)之间,夹杂着一条更晚触发的延迟消息(2023-04-16 20:05:00)老版本延迟队列仅支持几个延迟时间,而不是任意延迟时间,新版本进行了升级,可以支持任意版本。

2023-04-16 21:54:22 3210

翻译 从Amazon OpenSearch Service迁移(以前的Amazon Elasticsearch Service)

这是一份相当技术性的指南,用于从 Amazon OpenSearch Service(以前称为 Amazon Elasticsearch Service、Amazon ES 或 AWS ES)迁移到 Elastic Cloud 上的 Elasticsearch Service。这些步骤可能需要一些编程经验。Amazon OpenSearch Service集群通常配置到一个具有私有IP地址的私有云(VPC)中。他们也可以位于一个面向公域的端点上。

2023-03-25 16:38:35 460

原创 Tomcat and Jetty

Jetty服务架构更加简洁,且可插拔特性很适合定制一些个性化功能Tomcat服务架构相对复杂些,且容器的组件之间存在强依赖。Tomcat的架构中可以看到它支持配置多个host端口,Jetty是不支持的,需要启动多个JettyWebServer支持Jetty的Handler设计略复杂,scope抽象的应用场景没有很明显的优势,甚至有些与handle混淆,有些Handler仅实现了scope抽象,handle抽象用不到直接传递至下一个节点。整个handler链有点像是层高为2的跳跃表。

2023-03-18 17:12:32 918

原创 JMeter压测

软件:jetty:jetty-io-9.4.22.v20191022.jar,spring-boot-2.2.1.RELEASE.jar,mysql:Ver 8.0.29硬件:mac:内存16G,磁盘HD 1T,cpu:Apple M1 Pro,核总数: 10(8性能和2能效),网络:电信100M下载地址:https://jmeter.apache.org/download_jmeter.cgi例如mac/linux可以选择:https://dlcdn.apache.org//jmeter/bina

2023-03-12 11:13:58 1806

原创 Could not extract response: no suitable HttpMessageConverter

版本:spring-cloud-openfeign-core-2.1.1.RELEASE.jar,spring-webmvc-5.1.14.RELEASE.jar,jetty-server-9.4.41.v20210516.jar,tomcat-embed-core-9.0.48.jar。

2023-02-26 15:35:08 13985

原创 mysql索引字段设计

基于索引选择性创建联合索引,字段设计可以根据实际业务场景来评估例如:字段1(基数=10W),字段2(基数=10W),字段3(基数=20)虽然字段1,2独立的选择性更高,但是如果字段1与字段2基本1:1,而字段1与字段3基本1:5。那么字段1+字段3无疑是更佳的选择。

2023-01-15 22:10:13 818

原创 GC中的一些设计

个人认为还有一个前提是使用了标记-整理算法,不存在内存碎片,新对象不会被分配至碎片内存中。标记过程中修改了引用关系,B.C=null,A.D=D,此时如果不做特殊处理的话,那么D会被误杀,因为A已经为黑色标记完成,不会再尝试去标记它的子节点D。CMS解决方法是针对条件1:新增黑色节点对白色节点引用时会将新引用关系的引用者(黑色节点)标记为灰色。G1/ZGC解决方法是针对条件2:删除灰色节点对白色节点引用时会将老引用关系的被引用者标记为灰色。通常有两种方法记录引用关系:Point In/Point Out。

2023-01-07 14:55:20 741

原创 Elasticsearch学习

每个shard向cooridinating节点返回足够的信息,以允许它合并与重排序shard级别的结果至一个全局排序的结果集,结果集最大长度为请求需求的size。与"Query Then Fetch"相似,区别是初始分发阶段,它会去计算分布式TF值,以获取更准确的评分。与query_then_fetch区别在于,只有一个阶段,第一阶段就返回文档内容,即将两个阶段合二为一了。查询Segment缓存中的数据,因此ES是一个近实时数据,默认写入的数据1S内进入Segment。hot数据迁移至warm节点。

2023-01-01 22:20:19 712

原创 Es客户端学习

版本:opensearch-rest-high-level-client-2.3.0.jar,httpcore-nio-4.4.11.jar,httpasyncclient-4.1.4.jar。

2022-12-25 12:09:46 2175

原创 apollo分布式配置优先级学习

apollo/properties配置spring读取配置阿波罗在spring上下文刷新前加载配置至Environment环境配置的第一优先级位置:com.ctrip.framework.apollo.spring.boot.ApolloApplicationContextInitializer#initialize(org.springframework.context.ConfigurableApplicationContext)

2022-11-13 13:41:22 2670

原创 踩点记录-_-!!!

为什么要用jdk17?检查Mapper响应类型没问题,那么就是缓存问题,查看userSwitch缓存配置为Boolean类型-.-!原因:如果缓存的key是常量,需要使用单引号将常量包起来。新增缓存并配置匹配的序列化类型。原因:lombok版本过低。解决方法:修改配置如下。

2022-10-29 21:26:14 513

原创 mongodb脚本

【代码】mongodb脚本。

2022-08-20 09:15:06 884

原创 聊聊接口设计

Java语言开发,API中不能使用枚举类型,否则服务端新增枚举会影响客户端批量请求的接口特点是高吞吐单个请求的接口特点是高并发就单个接口而言,吞吐与并发是互斥的,设计过程中可以基于实际的业务进行设计。就像jvm的Parallel GC与CMS GC的选择。...............

2022-08-20 09:12:44 510

hsdis-amd64.dylib

打印Java字节码插件 mac版

2021-02-18

数据结构与算法分析Java语言描述

数据结构与算法分析Java语言描述,很棒的图书,由浅入深,经典之作

2018-06-05

DbVisualizer破解版

数据库链接工具,已破解,查看数据库元数据,导入导出数据等等,功能强大

2018-06-05

Sybase PowerDesigner16.5破解文件

相关的源文件下载: 官网:http://www.powerdesigner.de/ 国内:http://rj.baidu.com/soft/detail/16619.html?ald 上面的文件直接安装,之后下载该破解文件 放到安装目录的D:\Program Files (x86)\Sybase\PowerDesigner Viewer 16 文件夹下,进行文件覆盖就可以了(要选择自己安装目录) 亲自测试可用,与大家分享,希望对大家有用…………

2017-08-18

Java_HotSpotTM虚拟机内存管理

Java HotSpotTM虚拟机内存管理 gc 垃圾回收 内存管理

2017-06-12

jprofiler.linux.windws.64.bit.part2.破解版

jprofiler.6.2.4,亲测,可用,第一部分为windows,第二部分为linux

2016-07-08

jprofiler.linux.windws.64.bit.part1.破解版

破解版,jprofiler.6.2.4,亲测,可用,第一部分为windows,第二部分为linux

2016-07-08

jprofiler.linux.windws.64.bit.part2

jprofiler.6.2.4,亲测,可用,第一部分为windows,第二部分为linux

2016-07-08

jprofiler.linux.windws.64.bit.part1

jprofiler.6.2.4,亲测,可用,第一部分为windows,第二部分为linux

2016-07-08

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

TA关注的人

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