Java&JVM
文章平均质量分 85
沈鸿斌
爱生活,爱Coding
展开
-
Java常见面试题(一)一些零碎的知识点
1.String是最基本的数据类型吗? 基本数据类型包括byte、int、char、long、float、double、boolean和short。 注意:java中没有bool ! java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类2、int 和 Integer原创 2015-04-17 10:14:17 · 1654 阅读 · 0 评论 -
[Thinking in JAVA] 接口和内部类
1.接口是public的,即使不声明,也默认是public。接口中的方法也必须是public。2.在无法修改想要使用的类时,可以使用适配器模式。适配器接受你所拥有的接口,并产生你所需要的接口。 Thinking in JAVA P177的例子。 有两个类,Processor和Apply, Apply中用到Processor对象。现在有一个类Filter,有跟Proces原创 2015-03-17 22:20:17 · 871 阅读 · 0 评论 -
[Thinking in JAVA] 异常
一、异常类图二、RuntimeExcetion与Errorjava.lang.RuntimeException:RuntimeException is the superclass of those exceptions that can be thrown during the normal operation of the Java原创 2015-03-19 20:11:51 · 864 阅读 · 0 评论 -
JVM知识点总览
转载自http://www.importnew.com/23792.html在江湖中要练就绝世武功必须内外兼备,精妙的招式和深厚的内功,武功的基础是内功。对于武功低(就像江南七怪)的人,招式更重要,因为他们不能靠内功直接去伤人,只能靠招式,利刃上优势来取胜了,但是练到高手之后,内功就更主要了。一个内功低的人招式在奇妙也打不过一个内功高的人。比如,你剑法再厉害,一剑刺过来,别人一转载 2015-08-22 22:47:59 · 3380 阅读 · 1 评论 -
JVM系列文章(二):垃圾回收机制
作为一个程序员,仅仅知道怎么用是远远不够的。起码,你需要知道为什么可以这么用,即我们所谓底层的东西。那到底什么是底层呢?我觉得这不能一概而论。以我现在的知识水平而言:对于Web开发者,TCP/IP、HTTP等等协议可能就是底层;对于C、C++程序员,内存、指针等等可能就是底层的东西。那对于Java开发者,你的Java代码运行所在的JVM可能就是你所需要去了解、理解的东西。我会在接下来的一段时间,和读者您一起去学习JVM,所有内容均参考自《深入理解Java虚拟机:JVM高级特性与最佳实践》(第二版),感谢原创 2015-06-22 14:22:55 · 5126 阅读 · 2 评论 -
《Java并发编程实战》读书笔记
自从写了大半点hibernate读书笔记被csdn的渣渣编辑器吞了之后,已经很多天没有再用博客来记录自己的学习了。这段时间深入学习了java并发这一块,收获良多,再次记录。原创 2015-10-11 23:20:55 · 1627 阅读 · 2 评论 -
Netty实战读书笔记一:Netty的组件和设计以及它的传输
工作中用到了GRPC, 而它又用到了Netty, 所以最近在学习Netty的相关内容。第三章 Netty的组件和设计Channel 接口基本的 I/O 操作(bind()、connect()、read()和 write())依赖于底层网络传输所提 供的原语。在基于 Java 的网络编程中,其基本的构造是 class Socket。Netty 的 Channel 接 口所提供的 API,大大地降低原创 2017-09-23 15:08:25 · 513 阅读 · 0 评论 -
Netty实战读书笔记二:ChannelHandler和ChannelPipeline
ChannelHandler家族Channel生命周期Interface Channel 定义了一组和 ChannelInboundHandler API 密切相关的简单但 功能强大的状态模型,表 6-1 列出了 Channel 的这 4 个状态。 Channel 的正常生命周期如图 6-1 所示。当这些状态发生改变时,将会生成对应的事件。 这些事件将会被转发给 ChannelPipeline 中原创 2017-09-24 16:41:20 · 610 阅读 · 0 评论 -
一次频繁Full GC的排查过程
问题描述最近公司的线上监控系统给我推送了一些kafka lag持续增长的消息,我上生产环境去看了相应的consumer的情况,发现几台机器虽然还在处理消息,但是速度明显慢了很多。问题猜测与验证我猜测是JVM频繁做Full GC,导致进程也跟着频繁卡顿,处理消息的速度自然就慢了。为了验证这个想法,先用jstat看看内存使用情况: jstat -gcutil 1 1000 #1是进程号结果如我所原创 2017-10-03 13:22:34 · 19369 阅读 · 3 评论 -
[Thinking in JAVA] 前N章的一些小知识
记录下自己之前不太清楚或者已经忘记的知识。1.boolean类型所占存储空间的大小没有明确指定,仅定义为能够取字面值true or false. JAVA中没有bool类型。 除此之外java中所有基本类型所占存储空间的大小是不变的,这种不变性是JAVA更高可移植性的原因之一。2.BigInteger支持任意精度的整数,可以准确表示任何大小的整数而不丢失任何原创 2015-03-15 10:35:59 · 743 阅读 · 0 评论 -
《maven实战》读书笔记
maven在实习之前没有用到过,实习期间用的比较多,感觉的确很不错。但是没有系统了解过maven,用起来总感觉不是特别顺手,于是买了《maven实战》,对maven比较陌生但是感兴趣的同学也可以参考这本书。这本书可能是看的第一本工具书,过程是边看边实践,顺便把一些之前疑问的点给勾了出来,在这里记录一下。第一章 maven简介maven主要服务于基于Java平台的项目构建、依赖管原创 2015-11-07 12:56:15 · 800 阅读 · 0 评论 -
[Thinking in JAVA] 多态和继承的这潭深水
1.父类中的private方法是不能被子类覆盖的,即隐藏了final关键字。如果子类中有和父类同名的方法,且父类的方法是private,那这两个方法只是名字相同,并没有任何关系。2.面向对象的三个特征:封装,继承,多态。3.Java中除了static方法和final方法(private方法属于final方法)之外,其他所有的方法都是后期绑定(即动态绑定)。 JAV原创 2015-03-16 22:13:18 · 882 阅读 · 0 评论 -
Java常见面试题(二)JAVA集合类
JAVA集合类图:1. hashmap原理,与hashtable区别Java中的HashMap是以键值对(key-value)的形式存储元素的。HashMap需要一个hash函数,它使用hashCode()和equals()方法来向集合/从集合添加和检索元素。当调用put()方法的时候,HashMap会计算key的hash值,然后把键值对存储在集合中合适的索引上。如果key原创 2015-04-21 14:34:51 · 4324 阅读 · 1 评论 -
Java多线程之内存可见性
一、JAVA内存模型简介JAVA Merory Model描述了JAVA程序中各种变量(线程共享变量)的访问规则,以及在JVM中将变量存储到内存和从内存中读取变量这样的底层细节。所有的变量都保存在主内存中,但是每个线程都有自己的独立工作内存,保存该线程使用到的变量的一个副本。两条规定1.线程对共享变量的操作只能在独立的工作内存中进行,不能在主内存中直接读写;2.不原创 2015-05-28 19:47:10 · 2636 阅读 · 0 评论 -
JVM系列文章(一):Java内存区域分析
作为一个程序员,仅仅知道怎么用是远远不够的。起码,你需要知道为什么可以这么用,即我们所谓底层的东西。那到底什么是底层呢?我觉得这不能一概而论。以我现在的知识水平而言:对于Web开发者,TCP/IP、HTTP等等协议可能就是底层;对于C、C++程序员,内存、指针等等可能就是底层的东西。那对于Java开发者,你的Java代码运行所在的JVM可能就是你所需要去了解、理解的东西。我会在接下来的一段时间,和读者您一起去学习JVM,所有内容均参考自《深入理解Java虚拟机:JVM高级特性与最佳实践》(第二版),感谢原创 2015-06-21 10:57:57 · 6774 阅读 · 2 评论 -
JVM系列文章(三):Class文件内容解析
作为一个程序员,仅仅知道怎么用是远远不够的。起码,你需要知道为什么可以这么用,即我们所谓底层的东西。那到底什么是底层呢?我觉得这不能一概而论。以我现在的知识水平而言:对于Web开发者,TCP/IP、HTTP等等协议可能就是底层;对于C、C++程序员,内存、指针等等可能就是底层的东西。那对于Java开发者,你的Java代码运行所在的JVM可能就是你所需要去了解、理解的东西。我会在接下原创 2015-06-25 10:32:55 · 5738 阅读 · 1 评论 -
JVM系列文章(五):Javac编译与JIT编译
本文转自:http://blog.csdn.net/ns_code/article/details/18009455编译过程 不论是物理机还是虚拟机,大部分的程序代码从开始编译到最终转化成物理机的目标代码或虚拟机能执行的指令集之前,都会按照如下图所示的各个步骤进行: 其中绿色的模块可以选择性实现。很容易看出转载 2015-07-16 19:35:27 · 2929 阅读 · 1 评论 -
JVM系列文章(四):类加载机制
作为一个程序员,仅仅知道怎么用是远远不够的。起码,你需要知道为什么可以这么用,即我们所谓底层的东西。那到底什么是底层呢?我觉得这不能一概而论。以我现在的知识水平而言:对于Web开发者,TCP/IP、HTTP等等协议可能就是底层;对于C、C++程序员,内存、指针等等可能就是底层的东西。那对于Java开发者,你的Java代码运行所在的JVM可能就是你所需要去了解、理解的东西。我会在接下原创 2015-06-26 12:22:30 · 5255 阅读 · 1 评论 -
[Thinking in JAVA] JAVA多线程的学习
1. Thread.yield方法声明把CPU让给其他具有相同优先级的线程去执行,不过这只是一个暗示,并没有保障机制2. Executor 执行器,管理Thread对象。 语法demo: ExecutorService exec=Executors.newCachedThreadPool(); for(int i=0;i原创 2015-03-14 15:16:25 · 1011 阅读 · 0 评论 -
JAVA基础知识
发现大公司的面试往往问的都是平常忽视的基础,以后看到一些自己不清楚的要常常记下来。1. &和&&: &还可以按位与运算 &不是短路与,就算前面的错了,后面的还会执行 |和||同理2. EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。EJB原创 2015-03-14 11:28:23 · 770 阅读 · 0 评论