自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(242)
  • 资源 (2)
  • 收藏
  • 关注

原创 MAT使用

Shallow Heap就是对象本身占用内存的大小。Retained Heap就是当前对象被GC后,从Heap上总共能释放掉的内存(表示如果一个对象被释放掉,那会因为该对象的释放而减少引用进而被释放的所有的对象(包括被递归释放的)所占用的heap大小)。

2024-07-23 18:45:26 1034

转载 如何给开源项目贡献代码

本文转载自:机智的小熊和我比较熟的朋友知道我前几天给prometheus贡献了代码,这是我第一次给一个比较大的开源项目贡献代码,后来一了解发现,我滴妈,好多人都不会发起PR请求来合并代码,这次我就好好写写,给大家一个参考。毕竟没有什么比给开源项目贡献过代码更好的经历了,简历上写上去肯定会获得更多的眼球和更多的关注,一起来吧!其中有三个新 名词 fork pr ci ,不要急,带着问题,我们慢慢来。fork第一步,找到你到贡献代码的项目,用Fork按钮,然后项目就会自动拷贝一份到你自己的githu

2020-06-28 16:27:04 1611

原创 获取Full GC的次数

1、Jstat方式2、收集器名称方式

2020-04-19 17:27:34 1211

原创 mybatis trim标签的使用

mybatis trim标签一般用于去除sql语句中多余的and关键字,逗号,或者给sql语句拼接where、set等前缀

2018-07-11 17:04:51 153297 38

原创 T& n、const T& n、T& const n

声明方式能否修改对象可绑定的对象类型是否合法典型用途T& n✅ 是非 const 左值合法需要修改传入参数const T& n❌ 否任何对象(包括临时值)合法只读访问,避免拷贝T& const n非法无意义,编译器报错。

2025-04-03 15:57:57 416

原创 safepoint时间过长问题

深入浅出解析JVM中的Safepoint记一次Safepoint导致长时间STW

2025-01-20 19:55:52 124

原创 了解/proc/{pid}/目录

在Linux系统中,每个运行中的进程在/proc/{pid}/目录下都有一些虚拟文件,用于提供进程的各种信息。

2025-01-20 14:08:17 585

原创 gpg: signing failed: Inappropriate ioctl for device 解决办法

原因是 gpg 在当前终端无法弹出密码输入页面。重新执行,发现会弹出一个密码输入界面。

2025-01-13 17:22:47 396

原创 IOMMU PT

IOMMU PT(Input/Output Memory Management Unit - Pass-Through)是一种技术,主要用于虚拟化环境中,特别是在使用直接设备分配(也称为设备直通)的情况下。这项技术允许虚拟机直接访问物理硬件,如网络适配器,不需要通过主机操作系统进行额外的数据传输层,从而提高性能并减少延迟。在没有IOMMU PT的情况下,当一个虚拟机尝试与外部设备通信时,数据通常需要先从虚拟机传递到宿主机的内存空间,然后由宿主机处理后再发送给目标设备。

2025-01-09 19:23:31 587

原创 DDR和HBM

DDR RAM能够在时钟信号的上升沿和下降沿都进行数据传输,因此相对于传统的SDRAM(同步动态随机存取存储器),它的传输速率更高。DDR RAM有多个版本,如DDR、DDR2、DDR3、DDR4和DDR5,随着版本的提升,性能和带宽也在不断提高,同时功耗通常下降。HBM是一种高带宽、低功耗的内存技术,特别适合于需要高速数据传输的应用。HBM有多个版本,包括HBM1、HBM2和HBM2E等,随着技术的发展,带宽和容量持续提升。RAM是一种临时存储器,用于存储当前正在运行的程序和数据。

2024-12-31 19:17:34 419

原创 java string和string拼接的优化

String对象实现的优化Java字符串拼接技术演进

2024-12-30 15:42:43 228

原创 golang运行某个类下所有的基准测试

标识是基准测试,该参数是正则匹配,如果想要运行某个类中的所有Benchmark测试方法,指定。,同时指定后面的测试类,即可。

2024-11-04 12:09:30 308 1

原创 golang函数类型Function Types

函数类型(function types)是一种特殊的类型,它表示着所有拥有同样的入参类型和返回值类型的函数集合。一个函数只要满足这些特征,那么它就可以通过如下方式将该函数转换成 HandlerFunc类型。充当了一个适配器的作用,适配http中的。参考http的实现,定义了一个。在http的实现中,函数类型。

2024-11-04 11:19:58 351

原创 cmake build debug 和 cmake build release

编译器优化的目的是通过调整和改进生成的机器代码,来提高程序的运行效率和性能。在这些优化的情况下,最终生成的机器代码可能变得非常简化且高效。然而,虽然优化可以提升性能,但在调试时它可能导致代码行为和结构的变化,使得调试变得困难,因为优化可能导致代码行号不再准确匹配源代码,变量值可能被寄存器直接替代等。调试模式(Debug)下,这种做法是ok的,因为它保持了代码结构的简单性和可预测性,使得我们可以轻松设置断点和查看变量值。在没有编译器优化的情况下,编译器可能会直接生成相应的机器指令,逐步执行。

2024-11-01 18:24:31 651

原创 DAG和Steps

最难适配的是steps里面的choice,下一步其实不是确定的(在dag里面next都是同一层级,允许并行),check时,choice左边的steps不能依赖右边的节点结果?运行时,动态删除右边dag的出边及其子边?在这个框架中,steps和DAG被视为不同的任务执行模型,框架会根据定义的模型来调度和执行任务。也称作状态机,通常指的是按顺序执行的一系列步骤,每个步骤可以是一个单一的任务或者一组并行执行的任务。在这种模型中,工作流的执行顺序通常是线性的,每个步骤的开始通常依赖于前一个步骤的完成。

2024-10-23 14:44:55 219

原创 Seata序列化优化

我们细化到这个方法里面,发现是热点集中在异常初始化这里,跟进历史代码,发现是获取机制实现得有问题,先get request相关类,再response,resopnse类必然会走到异常的逻辑,在JAVA里面构造异常是一个耗时操作,所以导致整体吞吐的下降。同时这块存在NIO byteBuffer和netty的byteBuf混用的情况,也导致了比较多的无效拷贝,这块使用的地方比较多,后续也是一个优化的点。**优化效果:**优化完成后,通过上面的benchmark,seata反序列化的吞吐量提升7~10倍左右。

2024-10-19 19:50:39 469

原创 训练卡和推理卡

总的来说,GPU训练卡和推理卡根据深度学习的不同阶段进行了针对性的优化,前者更注重计算能力和精度,后者则在保证一定精度的基础上,更强调效率、低延迟和能效比。:这是NVIDIA专为数据中心设计的高性能计算GPU,如Tesla V100、A100等,它们拥有大量的CUDA核心和高带宽内存(HBM),非常适合大规模的深度学习模型训练。:AMD的竞争产品,如Radeon Instinct MI25、MI50等,同样针对数据中心的计算密集型应用,提供高速的计算性能和大内存容量,支持深度学习训练。

2024-08-28 16:09:53 2981 1

原创 Java定时任务缘起

定时任务是现代应用开发一个常见需求。Java提供了多种机制来处理定时任务,从早期的java.util.Timer到现代的ScheduledThreadPoolExecutor,再到时间轮算法。本文将探讨这些机制演进背后的逻辑,以及对应的使用场景。

2024-08-15 22:40:26 709

原创 G1 和 CMS

尽管CMS在很长一段时间内被广泛使用于对延迟敏感的服务,但随着G1垃圾收集器的发展和完善,CMS在JDK 9中已被废弃,并在JDK 14中完全移除,推荐使用G1或ZGC、Shenandoah等现代垃圾收集器作为替代。:除了基于IHOP的触发机制外,G1还会根据实际的内存分配速率和当前堆的使用情况动态调整,确保有足够的空闲空间来满足应用程序的内存需求,避免因为没有足够的空间分配对象而导致的Full GC。这意味着G1会定期检查堆的占用情况,一旦达到设定的阈值,就会触发一次收集以回收空间。

2024-07-08 22:06:00 612

原创 深度优先搜索和广度优先搜索 使用场景

深度优先搜索(Depth-First Search, DFS)和广度优先搜索(Breadth-First Search, BFS)是图和树结构中常用的遍历算法。两者适用于不同的场景。

2024-07-08 21:32:52 899

原创 NIO的ByteBuffer和Netty的ByteBuf的性能

在讨论Java NIO的ByteBuffer与Netty的ByteBuf的性能时,需要考虑几个主要的因素,因为性能表现并不是绝对的,而是依赖于具体的使用场景。Netty的ByteBuf设计更加现代,针对网络编程的需求进行了优化,包含了许多ByteBuffer不具备的特性,这些特性在许多情况下能提供更高的性能和更好的使用体验。

2024-05-23 19:25:11 497

原创 HBase到底是列式存储还是行式存储?

在行存储的数据库系统中,一行中的所有字段值都是连续存储的;在基于行存储的表中,即使只需要读取指定列时,也需要先将对应行的数据读取到内存,再过滤目标列,这样会导致过多的磁盘IO、内存和时间开销,所以行式存储比较适用于每次需要访问完整行的场景。基于列的存储,是将列数据连续存储在一起。因为是将相同类型的数据存储在了一起,列存储通常能提供更好的压缩率,因为同一列的数据类型相同,数据特征更加相似。加速查询性能,特别对于只需要少量列的分析计算(如SUM、AVG、MIN、MAX)在列存储中非常高效。

2024-05-23 12:20:22 783

原创 神经网络激活函数

在神经网络的上下文中,如果我们没有使用任何激活函数(也称为线性激活函数),则每个神经元的输出只是其输入的加权和,这是一个线性方程。如果不使用激活函数,无论我们的神经网络有多少层,所有层输出的仍然只能是输入的线性组合,这样的网络叫做线性模型,其表达能力非常有限。总结一下,乐高积木中的连接点(激活函数)是构建复杂模型的关键成分,正如神经网络中的激活函数是进行复杂任务的核心组件。允许反向传播:通过激活函数的导数,误差可以从网络的输出层反向传播到输入层,这对于基于梯度下降算法的网络训练是必要的。

2024-05-14 15:17:08 1091 1

原创 Column ‘xxx‘ not found.

本次遇到上面的报错,一开始排查方向都是db层面,但最后确认原因是:mybaits sql返回的字段没有xxx,但是resultMap有xxx,这个原因导致的;上面的报错,是目标库表没有该字段,一般是访问错库表或者的确没有对应的字段,又或者是一些分布式数据库的从库schema缓存没来得及更新;这个和DB报错相似的问题在mybaits这块可以解决,那边有sql字段和resultMap,做下判断,从报错上区分下,

2024-05-11 12:10:04 433

原创 Arthas诊断工具获取类属性、实例属性值

如果类被多个claasloader所加载,使用sc指定claasloader是一个好的习惯,否则执行的时候可能会报类解析/找不到的异常。,注:在某些公司,因为安全原因会禁用ognl表达式的功能,这种情况下可以选择其他的方式。可以看到获取类实例的时候同样会将类对应的属性值打印出来。除了根据类实例获取属性值的方法外,我们还可以根据。来观察类实例的属性值。

2024-04-24 23:26:44 3832

原创 为什么cpu profile火焰图部分时间是在Thread.wait方法上

如果你在火焰图上看到 Thread.wait() 方法占用了相当比例的时间,需要进一步分析上下文信息和线程状态,这可能涉及到查看线程栈的更多详情,考虑采样频率和时间,以及使用其他工具(如锁分析器、IO监控工具)进行交叉验证。如果你在火焰图上看到 Thread.wait() 方法占用了相当比例的时间,需要进一步分析上下文信息和线程状态,这可能涉及到查看线程栈的更多详情,考虑采样频率和时间,以及使用其他工具(如锁分析器、IO监控工具)进行交叉验证。在等待状态下,线程不会执行任何操作,

2023-12-12 21:56:34 673

原创 Java动态编译

个人目前从事分库分表中间件的开发,用户期望在中间件控制台提前去测试验证逻辑表的拆分路由情况:逻辑表的拆分规则配置支持groovy方式,那么部分业务会通过groovy引用到“业务系统”代码里面的某个类#方法。但“中间件控制台系统”里面是没有“业务系统”的代码。针对此种情况,我们需要有一种手段,让控制台系统能够动态加载到业务系统的类#方法,方便分库分表中间件加载到对应类,继而执行拆分规则。

2023-12-09 13:38:12 671

原创 Fork项目新分支如何同步

一、添加Fork仓库的源仓库。

2023-11-19 14:47:01 516

原创 提取项目依赖包的licenses

工具可以快速提取出licenses。

2023-09-27 13:47:10 244

原创 minikube mac 启动

另外v1.31.2版本如果不指定kubernetes-version的版本,默认使用的是v1.27.4,这个版本我本地kubeadm的checksum文件下载不下来,报404错误,换成较低版本的v1.23.2,可以run。有两种解决方案,第一种是docker tag的方式,在我的本地这样不生效,故而采取第二种方式,升级minikube版本到v1.31.2。系统MAC OS [intel],最开始使用的minikube是1.22.0版本。原因:镜像名称和tag不一致,coredns在阿里云镜像是。

2023-08-30 00:01:33 673

原创 idea 新窗口打开工程不生效

【代码】idea 新窗口打开工程不生效。

2023-04-10 09:56:01 1769

原创 Mybatis SelectKey赋值未生效

SelectKey未成功赋值

2023-02-02 16:38:01 1468

原创 CPU调度指标统计

CPU调度指标统计

2023-01-11 20:17:10 552

原创 JDK8中的@sun.misc.Contended在java11中被移除了?

关于JDK11 中 sun.misc包被移除的问题?

2022-11-19 10:52:30 766

原创 绝对值和hashCode神奇的化学反应

绝对值和HashCode的神奇反应

2022-11-10 22:02:22 361

原创 类方法调用导致事务失效

类方法调用导致事务失效

2022-06-29 21:46:01 559

原创 Spring BeanPostProcessor 不生效的场景

Spring BeanPostProcessor不生效

2022-06-12 23:39:48 770 1

原创 Sharingsphere 模块

目录模块划分模块依赖关系模块划分基于版本5.1.1SPI:可插拔架构设计,SPI机制SQL Parser:SQL语法、方言解析ANTLRMode:分布式治理设计MemoryStandloneCluster:etcd,zkInfra:基础组件Binder:SQL语法树和SQL表结构绑定和识别Route:SQL路由Rewrite:SQL改写,加密或者分片改写Executor:执行器,AP or TPMerge:结果集合并Federation:跨库SQLKer

2022-05-28 14:36:15 231

原创 Spring-mybatis PlaceHolder变量未替换

Spring集成mybatis,如下配置,DataSource中的占位符未替换。<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframewor

2022-05-02 11:44:50 899

原创 JPA OneToMany删除子项须知

OneToMany,在One的Many集合里面移除某项时,DB不会删除对应项例如:user -> orderList,在orderList中移除一项order时,DB层面不会删除对应order记录。详细参考:JPA OneToMany not deleted child那么如何实现该功能呢? 使用:orphanRemoval具体参考:how to delete child on OneToMany...

2022-03-28 21:32:35 1052

Lesson1.pdf

HotSpot JVM Memory Management

2021-05-13

Understanding_Java_Garbage_Collection_v4.pdf

Understanding_Java_Garbage_Collection_v4.pdf 理解 java 垃圾收集 PDF

2020-04-24

空空如也

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

TA关注的人

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