技术 java
文章平均质量分 82
Rylan11
学而不思则罔,思而不学则殆。
学而知不足,思而得远虑
展开
-
基于服务端状态的负载均衡策略
服务状态数据的统计,指标包含:请求数总数,rt,异常数然后可以计算出 error_percent 和 avg_rt负载均衡策略思路都是减少问题机器的流量,当机器恢复时,恢复流量。并且要规避以下两个问题:抖动:分摊到各个机器的流量比例一直在变化,不确定的东西对系统来说是不好的。相对比较耗费cpu计算雪崩:减少问题机器的流量,导致其他机器因为流量过高而崩溃,进而导致集群崩溃。响应时间权重算法...原创 2021-02-25 11:06:49 · 366 阅读 · 0 评论 -
HybridDB数据库存在的价值
最近在考虑解决打点问题的数据库选型。希望阿里云上能提供一些TiDB类似的产品,同时支持OLTP和OLAP的,因此找到了HybridDB。分享一下下面文章 在大数据火遍 IT 界之前,大家对数据信息的挖掘通常聚焦在 BI(Business Intelligence)之上。BI 具有着明确的分析需求,清晰地知道需要处理哪些信...转载 2019-03-16 15:36:36 · 2382 阅读 · 0 评论 -
Java toString 性能优化方案比较
谁在关心toString的性能?没有人!除非当你有大量的数据在批量处理,使用toString产生了许多日志。然后,你去调查为何如此之慢,才意识到大部分的toString方法使用的是introspection,它其实是可以被优化的。不过,首先让我们一起看看Javadoc回忆下Object.toString应 当做什么:“返回该对象的字符串表示,该结果必须简明但表述详实易懂。建议所有子类重写该方法”...转载 2018-10-30 18:42:08 · 1148 阅读 · 0 评论 -
Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM)
一.class文件简介及加载 Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中,解析.class 文件内的信息,生成对应的Class对象: class字节码文件是根据JVM虚拟机规范中规定的字节码组织规则生成的、具体class文件是怎样组织...转载 2018-08-20 14:17:21 · 357 阅读 · 0 评论 -
jmap分析堆内存飙升频繁fullgc
处理问题: 1、对内存使用异常和频繁fullgcjmap用于打印共享对象的内存映射或堆内存的详细信息 语法格式如下: [option] [option] executable [option] [server-id@]remote-hostname-or-ip1、使用jmap -heap pid查看进程堆内存使用情况jmap -heap {pid}2、使用jm...原创 2018-08-16 14:00:45 · 4602 阅读 · 0 评论 -
JVM即时编译JIT
在部分的商用虚拟机中,Java 程序最初是通过解释器(Interpreter )进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁的时候,就会把这些代码认定为“热点代码”。为了提高热点代码的执行效率,在运行时,即时编译器(Just In Time Compiler )会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化。 1. 动态编译(...转载 2018-08-16 13:32:19 · 734 阅读 · 0 评论 -
Java工程师成神之路
一、基础篇 JVM JVM内存结构 堆、栈、方法区、直接内存、堆和栈区别Java内存模型 内存可见性、重排序、顺序一致性、volatile、锁、final垃圾回收 内存分配策略、垃圾收集器(G1)、GC算法、GC参数、对象存活的判定 JVM参数及调优 Java对象模型 oop-klass、对象头HotSpot 即时编译器、编译优化类加载机制 classLoad...转载 2018-08-16 12:20:31 · 265 阅读 · 1 评论 -
jstack分析系统cup使用飙升
处理问题:java 进程启动后系统cpu使用飙升jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码 1、查询java进程,获取进程id ps -ef | grep java 2、查看该进程内的线程使用情况 top -Hp {pid} 找到cpu使用排名前几的线程3、打印对应线程的十六进制(jstack 内部显示的是十六进制数据 例如:nid=x54ee) ...原创 2018-08-16 11:15:08 · 303 阅读 · 0 评论 -
java codeCache
1.问题随着系统不断变大,访问量不断增加,出现了启动后的负载很高的问题。关于启动后负载高的原因,网上很多文章都说是由于启动后随着代码的执行,jvm的jit编译器将部分热点代码编译为目标机器代码,由于编译线程占用了大量的cpu导致系统负载高。为了验证这个说法,在系统启动后使用jstack获取线程dump,并通过top –H –p查看当前进程中哪些线程在大量消耗cpu。结果发现,编译线程...转载 2018-08-12 14:16:11 · 1478 阅读 · 4 评论 -
spring mvc 处理Controller返回结果和HandlerMethodReturnValueHandler使用
spring mvc 处理Controller返回结果 我们总有这样的需求,例如想动态的处理controller(或是一部分)的返回结果,增加某些字段,或是格式化返回结果。这就让我们想到了拦截器HandlerInterceptorAdapter和AOPAspect。当时使用AOPAspect可以实现,并且方便简单。网络上一大堆的使用方式,在此不做详细解释了。下面我们来说使用MVC拦截器的方...原创 2018-03-03 21:41:00 · 6328 阅读 · 2 评论