Java
文章平均质量分 85
张兆坤的那些事
最近主要折腾kubernetes、istio、SpringCloud、可观测性这个四个方向,内容多且复杂,最重要是坚持!
展开
-
Idea调试热更新那些事
在IntelliJ IDEA中,只有当您手动点击Build -> Recompile '.java'或使用相应的快捷键来编译选定的Java文件时,IDE才会尝试使用HotSwap机制来加载这些新编译的类到正在运行的JVM中。这个过程允许您在调试时即时看到代码更改的效果。自动编译功能虽然也会更新target/classes目录下的类文件,但它不会自动触发HotSwap过程。自动编译主要是为了在开发过程中提供即时的编译错误反馈,而不是为了在运行时更新类定义。因此,如果想要在调试过程中实现代码的热替换(Hot原创 2024-04-08 17:33:46 · 1657 阅读 · 0 评论 -
Java类加载那些事
Java源文件(.java文件)被编译器编译后变为字节码形式的类文件(.class文件),Java类加载的过程就是JVM加载.class的二进制文件并且放到内存中,将数据放到方法区,并且在堆区构造一个java.lang.class对象,并且完成类的初始化的过程。原创 2023-11-23 23:11:08 · 530 阅读 · 0 评论 -
jmap的几个操作要慎用
最近中大招了,前一周开始偶尔在线上发现一些请求时长竟长达7秒,甚至在部分时段系统存在周期性的请求失败或者超时,各种招式都使用了还是不知道确定的原因,百思不得其解,头大的很!昨日晚上发现这个问题简直太严重了,必须要立刻马上处理掉,一会都耽误不得,遂持续奋斗到晚上一点多,早晨7掂掇又跑起来搞,用各种手段来找到问题的产生规律,一直到下午1点多,才终于发现症结所在了!应用服务上曾经出现过Load突转载 2015-01-31 20:30:00 · 19118 阅读 · 4 评论 -
服务化框架设计实现(重造轮子,借事修人)
最近一段时间没有工作,为此也有大把的时间,可以做一些平时没有时间做的事情,借事请来重建自己的知识体系,查漏补缺。决定要利用这一段时间来实现一个服务化框架,实现得七七八八的时候再在github上开源,该框架有如下几个特征:1、支持无状态2、支持热部署与fail over3、支持路径跟踪4、支持可配置的负载均衡5、序列化协议可配置(Java、Hessian、Google pro原创 2013-07-30 14:12:17 · 6434 阅读 · 3 评论 -
Kryo、msgpack、protobuf、Hessian、Avro、Thrift等序列化框架比较
最近一直在想如果让我自己来做一个服务化框架出来,该实现些什么功能,具体该怎么去做这样的问题,数据序列化是一个重要的模块,故此有意对常见的一些开源序列化框架做一个比较!我个人对Hessian、Java、protobuf、Thrift这几种序列化方式比较熟悉,但是对Kryo、msgpack就没有怎么涉及了,先把这篇文章开一个头,积累了足够的能量之后再来完善。原创 2013-08-01 17:55:34 · 14932 阅读 · 3 评论 -
Java 反射调用的一种优化
【原文】http://hi.baidu.com/hellolq/item/26493d1efe2b066a71d5e89d写一些Java框架的时候,经常需要通过反射get或者set某个bean的field,比较普通的做法是获取field后调用java.lang.reflect.Field.get(Object),但每次都这样调用,能否有优化的空间呢? 答案是有。转载 2013-08-01 17:06:41 · 1626 阅读 · 0 评论 -
为什么会有这样的结果?
Java很神秘,有一层纸没有被捅破的话真的有很多东西貌似是解释不通,仔细探究之后就真相大白了。这里收集几个典型的案例。(1)字符串的那些事public class StringTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated meth原创 2013-06-11 23:02:55 · 1463 阅读 · 0 评论 -
Runnable、Callable、Executor、Future、FutureTask关系解读
在再度温习Java5的并发编程的知识点时发现,首要的就是把Runnable、Callable、Executor、Future等的关系搞明白,遂有了下述小测试程序,通过这个例子上述三者的关系就一目了然了。在java5以后,一个可以调度执行的线程单元可以有三种方式定义:Thread、Runnable、Callable,其中Runnable实现的是void run()方法,Callable实现的原创 2011-07-18 22:36:31 · 21413 阅读 · 7 评论 -
Btrace那些事
BTrace系列之一:简介BTrace系列之二:简单示例BTrace系列之三:实际案例分析 BTrace使用简介BTrace User's Guide原创 2012-06-19 13:19:21 · 1285 阅读 · 0 评论 -
JAVA垃圾收集参数与日志格式
-XX:-PrintGC 默认不启用 开启GC 日志打印。 例如: [Full GC 131115K->7482K(1015808K), 0.1633180 secs] 该选项可通过 com.sun.management.HotSpotDiagnosticMXBean API 和 Jconsole 动态启用。 详见 http://java原创 2012-06-09 10:39:38 · 3139 阅读 · 0 评论 -
Netty启动分析
本文主要记录下我在学习Netty源代码过程中,以org.jboss.netty.example.echo.EchoServer为例,在启动Server端的时候,Netty是如何建立Boss与NIOWorker的,以及如何建立Selector、绑定服务器端口等过程的细节,借此来学习原创 2011-10-09 09:40:35 · 9331 阅读 · 3 评论 -
基于NIO的Client/Server程序实践
一个简单的基于Java的NIO来实现的客户端/服务器程序,相互之间发送和接收消息。原创 2011-07-17 22:10:25 · 11385 阅读 · 4 评论 -
Java线程同步与信号量的奥秘
有关Java的线程锁与entry set和wait set的关系,抑或是说这个图包含了Java线程的奥秘,不懂这个图或者是没有见过这个图的话,只能说明对于Java的线程锁还是一知半解的。原创 2011-05-05 08:19:00 · 5693 阅读 · 5 评论 -
ContextClassLoader的意义
Thread.currentThread().getContextClassLoader()的意义:父Classloader可以使用当前线程Thread.currentthread().getContextLoader()中指定的classloader中加载的类。颠覆了父ClassLoader不能使用子Classloader或者是其它没有直接父子关系的Classloader中加载的类这种情原创 2010-04-09 21:05:00 · 2677 阅读 · 3 评论 -
基于Java 2平台的引用类使用指南
Java 2 平台引入了 java.lang.ref 包,其中包括的类可以让您引用对象,而不将它们留在内存中。这些类还提供了与垃圾收集器(garbage collector)之间有限的交互。Peter Haggar 在本文中分析了 SoftReference 、 WeakReference 和 PhantomReference 类的功能和行为,并就这些类的使用给出了一些编程风格上的建议。转载 2009-12-26 22:28:00 · 1032 阅读 · 0 评论