自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (1)
  • 收藏
  • 关注

原创 server.max-http-header-size与OOM不得不说的故事

一开始我以为这会是个很简单的事情,毕竟很多人已经从1.x升级到2.x了,但当运维把测试环境的nacos升级到2.x后没多会涌现了一堆告警,全都是找不到dubbo的服务提供者,我这边立马登到nacos容器中查看,整个nacos的堆已经到了32G,且在一直不停地fullgc过了一会更是健康检查失败被k8s重启了,确认了是堆满了以后这边也是立马dump了一份堆快照到持久卷。看的出来是直接原因是有大量5M的byte数组,然后分析引用发现是tomcat的nio请求对象的消息头,难不成是因为请求的消息头非常大?

2024-03-10 16:19:07 984 1

原创 2024最新Java性能优化建议 应用 数据库 机器 网络

反射缓存高效随机数高效字符串操作

2024-01-25 15:45:05 753

原创 过早优化是万恶之源——聊聊FastThreadLocal的Cache line padding

故事今天就是围绕这一行展开的,众所周知基于时间局部性和空间局部性原理所以当处理器需要加载内存中的数据时,它会加载整个缓存行,而不仅仅是请求的特定数据,缓存行的大小通常是2的幂,例如64字节。而很明显上面的代码就属于第二种,试图通过行填充解决伪共享,看上去好像没什么问题,netty使用各种小技巧的地方也非常多,但这一行在https://github.com/raidyue/netty/commit/ef540815a98dac50769e38b39e5107dc5a313b47 中被改为了。

2024-01-15 16:49:48 1018

原创 “傻傻”的JAVA编译器

第二反应是计算结果溢出了int值所以导致了这个差异,于是我掏出JMH这个利器准备开始一轮验证,为了避免干扰,构造了不同的测试用例集用于纵向和横向的比较。Java的JIT是个非常有价值的东西,但有的时候它也可能“犯傻”,我们在平时写代码的过程中对于这些点倒也无需刻意去记忆,这本该是编译器自己要做的事情,祝愿Java的编译器越来越好吧。的顺序不一致所有字节码都是相同的,那么这个顺序为什么会有如此大的区别呢?在这里,由于需要保留更多的中间结果,我们观察到更多的“溢出”和对堆栈的更多访问。可以看到字节码上除了。

2024-01-03 23:50:11 410

原创 2024最新Java反射性能优化进阶

反射性能详解

2023-12-23 15:42:49 910

原创 Prometheus agent jmx-exporter配置http接口和数据库连接池监控

Prometheus agent jmx-exporter配置http接口和数据库连接池监控

2023-03-03 11:29:32 1074

原创 约瑟环问题 Java解法

约瑟环问题:17世纪的法国数学家加斯帕在《数目的游戏问题》中讲的一个故事,15个教徒和15个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法,30个人围成一个圆圈,从第一个人开始依次报数,每数到第九个人,就将他扔入大海,如此循环进行,直到仅剩余15个人为止。问怎样排法,才能使每次投入大海的都是非教徒解析:投海条件: 第九个人, 已投海不计入计算结束条件: 15人人的状态:已投海和未投海看到两种状态就应该想到可以使用一个boolean数组记录状态, .

2020-05-22 17:19:08 379

原创 消失的数据——带你真正了解Spring的事务原理

事情的起因是我最近写了一个多数据源的工具模块, 本来很愉快的运行着但当我把@Transactional这个大家耳熟能详的家伙放在我的方法上时灾难发生了,我的数据源切换失效了。这可急煞老夫了,迅速查看源码找到了罪魁祸首—DataSourceTransactionManager,它是Spring的默认事务管理器,在有事务时它的doBegin方法会把数据库连接缓存下来, 下次直接使用该连接, 而不是重新...

2020-04-10 17:10:53 256

原创 二叉树可视化

#! /usr/bin/env python# -*- coding: utf-8 -*-'''画二叉树'''from tree import ergodic_calculateimport turtleclass TreeNode: def __init__(self, val, left=None, right=None): self.val ...

2020-03-23 14:08:27 1288 2

原创 根据任意两种遍历(前序、中序、后序)构造完整二叉树

#! /usr/bin/env python# -*- coding: utf-8 -*-'''遍历推算根据前序+中序/前序+后序/中序+后序重建二叉树'''import operatorpre_list_result = []inorder_list_result = []postorder_list_result = []class Node: def ...

2020-03-23 13:50:33 537

原创 Mybatis批量插入实测

众所周知,在jdbc中的批量插入默认情况下仍是以单条数据循环操作数据库的,而非真正意义上的批量操作,只有在设置rewriteBatchedStatements=true的情况下才会进行真实的批量操作,那么问题就来了,mybatis是对jdbc的二次封装,那么它的批量插入又是怎么样的呢?笔者对其进行了性能上的简单测试,大致进行四种情况的实验:1.默认情况;2.开启了rewriteBatched...

2019-08-30 16:13:53 335

原创 编程浅谈-以一个初出茅庐的Java程序员视角

编者是一个从事Java开发的普通软件攻城狮,迄今为止,粗粗算来不过刚刚进入编程的世界不过两年,但在这两年的光阴里,每当我抬头仰望星空(苦命加班)时脑海里总有这样一个疑问——“什么是编程”?对于这个问题百度百科是这么说的,编程,是编定程序的中文简称,就是让计算机代为解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程。为了使计算机能够理解人的意图...

2019-06-25 16:43:57 694

原创 10进制数转换为负进制数(Python实现)

最近加Python群的时候看到一个验证——群号用负7进制如何表示,我看了一愣,忽然想起来进制确实也可以是负的只不过我们的工作学习中很少涉及,故此写了个程序计算负进制数的转换,值得一提的是python语法的设计上与传统的C/Java/C++不同,整除的时候所求得的商 C/C++/Java 是向零取整(负数向上、正数向下取整),Python 是下取整,详细代码见如下:#! /usr/bin...

2019-05-14 14:30:16 793

原创 百万富翁问题实现

Web 前端密码加密是否有意义?​www.zhihu.com在这个温柔问题下看到了@w2014的一些密码学有趣的定理,感觉很有意思,例如零知识证明、盲签名、百万富翁问题,进而看到了知道了这个方法,两个人不需要裁判就能玩暗军棋​daily.zhihu.com这篇文章里关于百万富翁问题姚期智院士所给出的解法本者刨根问底的好奇心,本人自己将该过程实现了一遍代码如下:#!...

2019-05-13 13:39:49 3976

原创 线程池和消息队列的一些理解

1.两者内部都使用了队列,如阻塞队列、优先级队列;2.使用线程池时应用服务器既充当生产者又充当消费者,也是消息队列中间件的实现者,使用消息队列时中间件、生产者、消费者可以部署在不同的应用机器上(当然也可以部署在一台服务器上但很少有人这么用);3.出于第2点线程池更适合非分布式的系统,但在分布式架构下消息队列明显是更优项;4.使用消息队列会带来额外的网络开销;5.消息队列的耦合性更低,可扩展...

2019-05-08 10:22:49 3913

原创 java解析SVG图片并进行几何操作

java解析SVG图片需要用到apache的batik的jar包(1.7或1.8皆可)getSVGDocument();方法是从当前的JSVGCanvas中获取SVG文档getRootElement();获取当前文档的根元素其它元素可通过childNodes()、parent()以及getElementById()、getElementByTagName()等方法获得。程序源码

2017-05-03 12:36:43 8977 3

Java多数据源源码

Java多数据源源码

2020-03-24

空空如也

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

TA关注的人

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