关于Java
文章平均质量分 85
zj_daydayup
这个作者很懒,什么都没留下…
展开
-
eclipse使用细节
1、在一个java类中,如果没有run as application,可能原因之一是main()有错,没有按照规范的main()方法来写。规范的main()是:public static void main(String args[]){//方法体}...原创 2018-07-23 16:16:40 · 146 阅读 · 0 评论 -
线程创建方式的区别
通常情况下,线程创建方式有如下2种,它们的区别如下:线程创建方式的区别 继承Thread类 实现Runable接口 用this直接指代当前线程对象 必须使用Thread.currentThread()去获取当前线程对象 创建的Thread子类对象即可代表线程对象,例如:new FirstThread().start() 创建的Runnable对象即只能作为线程对象的...原创 2018-08-03 20:06:30 · 199 阅读 · 0 评论 -
【总结】互斥同步(实现线程安全的方法之一)中Synchronized与ReentrantLock的区别
看了许多资料,其实总结起来就5个方面的不同:原创 2018-08-09 09:31:15 · 195 阅读 · 0 评论 -
JVM学习之路(一)——java程序执行流程
JVM这个庞然大物,平时用不到,也就不愿意去学。现在面试经常被问到,不得不厚着脸皮去学。那由表及里,慢慢学吧。一、java程序执行流程本来画图更清晰的,但时间紧迫,先在这里占个坑,后面补图。①编写.java源文件②用java编译器将源文件编译为.class的字节码文件③通过“java 类名”的方式执行,在执行过程中会进行后续流程(④⑤⑥⑦)④根据系统版本去找到对应的JVM配...原创 2018-07-28 11:02:49 · 834 阅读 · 2 评论 -
JVM学习之路(二)——JVM的内部结构
JVM学习之路(一)——java程序执行流程二、JVM的内部结构在第一部分中,介绍了一个java程序执行的流程,但是最后一部分就只说了初始化jvm后,利用JNI接口去找到硬盘上的.class字节码文件并加载进内存,然后再找到main()方法,执行即可。有没有发现这部分说的很笼统,具体细节依然没有说清楚。那具体执行细节是怎样的呢?具体实现细节要依赖JVM的内部结构!!那JVM的内部结...原创 2018-07-28 11:30:00 · 689 阅读 · 0 评论 -
JVM学习之路(三)——JVM内部结构详细介绍及其相互作用
JVM学习之路(一)——java程序执行流程JVM学习之路(二)——JVM的内部结构三、JVM内部结构详细介绍及其相互作用前面2部分分别介绍了java程序的执行流程和JVM的内部结构,但内部结构的详细信息及其之间的相互作用并未介绍,也不知道JVM怎么调配的,就让各个模块把一个java程序执行了。本部分解决的就是这个问题。1、JVM内存空间包括4部分:方法区、java堆、java栈、...原创 2018-07-28 12:03:20 · 1073 阅读 · 1 评论 -
【总结】abstract class抽象类与interface之间的区别
面试的时候被问到这个问题,当时回答得很混乱,后来查了资料,现总结在这里。原创 2018-08-10 14:48:40 · 242 阅读 · 0 评论 -
POJO与Javabean的区别
这里转一篇大牛写的资料:https://www.cnblogs.com/weiyi1314/p/6672278.html这一篇还顺带解释了PO:https://www.cnblogs.com/DiDi516/p/5860773.html转载 2018-08-01 21:29:13 · 535 阅读 · 0 评论 -
【资料整理】高性能IO体系学习
1、从零开始认识:https://blog.csdn.net/u013851082/article/details/53942947/2、有图解和代码,更清晰:https://www.cnblogs.com/zedosu/p/6666984.html原创 2018-08-11 15:02:22 · 218 阅读 · 0 评论 -
【学习总结】关于java 反射机制
1、入门篇:https://blog.csdn.net/sinat_38259539/article/details/717990782、入门篇,示例代码写得超级优雅:https://blog.csdn.net/liushuijinger/article/details/142234593、Java语言为什么提供反射特性,绝对干货:https://blog.csdn.net/coder_x...原创 2018-08-11 20:54:25 · 143 阅读 · 0 评论 -
Java的反射机制
Java 1.3之后一个重要特征是反射(reflection),它允许程序在运行的时候动态地生成对象、执行对象的方法、改变对象的属性。通俗来讲,就是根据给出的类名(字符串方式)来动态地生成对象。这种编程方式可以让对象在生成时才决定到底是哪一种对象。spring就是通过反射来实现依赖注入(DI)的。这一点如何体现?IOC容器spring根据配置文件中给出的类名来生成相应的对象。反射的应用...原创 2018-07-22 15:14:35 · 98 阅读 · 0 评论 -
JVM学习之路(十三)——java代码编写过程中的“内存优化”技巧
十三、java代码编写过程中的“内存优化”技巧众所周知,Java是从C++的基础上发展而来的,而C++程序的很大的一个问题就是内存泄露难以解决,尽管Java的JVM有一套自己的垃圾回收机制来回收内存,在许多情况下并不需要java开发人员操太多的心,但也存在内存泄露问题的,只是比C++小一点。举个很简单的例子,程序中存在被引用但无用的对象:程序引用了该对象,但后续不会或者不能再使用它,那么它占用...原创 2018-07-29 21:57:54 · 1710 阅读 · 0 评论 -
JVM学习之路(十二)——java堆区三部分简介
十二、java堆区三部分简介(一)新生代1、新生代是类的诞生、成长、消亡的区域,一个类在这里产生,应用,最后被垃圾回收器收集,结束生命。2、新生区又分为两部分:伊甸区(Eden space)和幸存者区(Survivor pace),所有类的对象都是在伊甸区被new出来的。3、幸存区有2个:0区(Survivor 0 space)和1区(Survivor 1 space)。4、当...原创 2018-07-29 21:04:07 · 916 阅读 · 0 评论 -
JVM学习之路(四)——内存模型(java多线程通信)
JVM学习之路(一)——java程序执行流程JVM学习之路(二)——JVM的内部结构JVM学习之路(三)——JVM内部结构详细介绍及其相互作用四、内存模型(java多线程通信)第三部分介绍了单个java程序是如何在JVM内部各个模块的协调配合下执行的,那么多个java程序呢?多个java线程之间的通信是怎么进行的呢?本部分解决的是这个问题。一、首先明白2个概念:主内存:就是...原创 2018-07-28 16:07:38 · 429 阅读 · 0 评论 -
JVM学习之路(五)——如何保证可见性
JVM学习之路(一)——java程序执行流程JVM学习之路(二)——JVM的内部结构JVM学习之路(三)——JVM内部结构详细介绍及其相互作用JVM学习之路(四)——内存模型(java多线程通信)五、如何保证可见性一、第四部分说明了java线程之间通信的流程,以及各自的工作内存和共享的主内存在JMM(Java 内存模型)的管理下的工作流程。在这个工作流程中,发现了一个比较严重的...原创 2018-07-28 16:30:41 · 1538 阅读 · 1 评论 -
用java代码实现各种经典排序算法
1、交换类排序:冒泡排序 ,时间复杂度O(n2,n的2次方),稳定型排序。package SoreAlgorithm;public class SortAlgorithm { public static void main(String args[]) { int[] arr = {4,2,5,6,1,7}; System.out.print("排序前的数组为:"); fo...原创 2018-07-25 18:54:23 · 318 阅读 · 0 评论 -
JVM学习之路(六)——指令重排序
JVM学习之路(一)——java程序执行流程JVM学习之路(二)——JVM的内部结构JVM学习之路(三)——JVM内部结构详细介绍及其相互作用JVM学习之路(四)——内存模型(java多线程通信)JVM学习之路(五)——如何保证可见性六、指令重排序根据以往学习多线程的经验,往往就会碰到这样一些例子:明明代码是按照想要的逻辑写的,但是一旦程序执行完后,就出现了一些意想不到的情...原创 2018-07-28 17:26:44 · 1013 阅读 · 0 评论 -
JVM学习之路(七)——JVM配置参数
七、JVM配置参数一、jvm配置参数分为3大类:1、跟踪参数:跟踪、监控JVM状态,用于程序员JVM调优及故障排查2、堆分配参数:分配堆内存3、栈分配参数:分配栈内存二、各类配置参数常用参数:1、常用跟踪监控参数:①打印gc简要信息第一个:-XX:+PrintGC第二个:-verbose:gc这2个参数效果一样,都是在发生gc时,打印gc简要信息的。以1...原创 2018-07-28 21:22:31 · 36573 阅读 · 4 评论 -
JVM学习之路(八)——垃圾回收算法
Java语言与C语言最大的区别就是内存自动回收,那么JVM是怎么控制内存回收的,这里将介绍JVM垃圾回收的几种算法,从而了解JVM内存回收的基本原理。八、垃圾回收算法(一)、stop the worldstop the world会在执行某一个垃圾回收算法的时候产生。JVM为了执行垃圾回收,会暂停java应用程序的执行,等垃圾回收完成后,再继续运行。使用JMeter测试过java程序的...原创 2018-07-29 11:35:30 · 235 阅读 · 0 评论 -
JVM学习之路(九)——垃圾回收器
九、垃圾回收器JVM的垃圾回收只收集那些由new关键字创建的对象。所以,如果不是用new创建的对象,可以使用finalize()函数来执行清理。(一)GC什么时候回收? 对象没有引用 作用域发生未捕获异常 程序在作用域正常执行完毕 程序执行了System.exit() 程序发生意外终止(被杀进程等)(二)如何减少GC开销?1、不要显式调用System.gc()。此...原创 2018-07-29 14:46:06 · 249 阅读 · 0 评论 -
JVM学习之路(十)——类加载器原理
十、类加载器原理我们自己编写的.java的源文件,经过编译器编译成.class的字节码文件,再把字节码文件装载到JVM中,映射到各个内存区域中,我们的程序就可以在内存中运行了。那么字节码文件是怎样装载到JVM中的呢?中间经过了哪些步骤?常说的双亲委派模式又是怎么回事?(一)、类装载流程(3大步+5小步)一个Java类的生命周期:加载->链接(验证+准备+解析)->初始化...原创 2018-07-29 16:26:09 · 226 阅读 · 0 评论 -
JVM学习之路(十一)——性能监控工具
十一、性能监控工具1、这里找到一个特别好的帖子,介绍了Linux与Windows下的性能监控工具:性能监控工具及其使用方法2、使用VisualVM(这个工具就在jdk的bin文件夹下)来监视它自己的GC进程:http://www.importnew.com/13838.html3、非常好的系列:https://blog.csdn.net/lifetragedy/article/deta...转载 2018-07-29 17:22:40 · 254 阅读 · 0 评论 -
java collection知识点总结
之前对于java的collection接口里面的东西了解得不全面,知识点都是片面的,现在整体上有一个把握了。感谢以下这些博客:https://blog.csdn.net/zhouxinyu1cp/article/details/72857677,其实还有很多这样优秀的博客。 ...转载 2018-08-07 20:30:33 · 213 阅读 · 0 评论