
Java
雨雨季
滴滴滴哒哒哒`
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java继承多态总结。及this,static,super的用法。
欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体...原创 2019-03-25 20:57:19 · 269 阅读 · 0 评论 -
Java虚拟机面试题
JVM内存模型?Java虚拟机的运行时区域分为:程序计数器、虚拟机栈、本地方法栈、堆、方法区。五个部分。其中堆和方法区是线程公有的,其他部分是线程私有的。GC机制和原理?首先需要判断对象是否死亡。可以通过两种方式:引用计数算法、可达性分析算法。引用计数算法就是给每个对象分配一个引用计数器,每当对象被引用了一次,引用计数器+1。当引用计数器的值为0时,则判定为对象死亡进行垃圾回收。...原创 2019-04-25 22:26:11 · 261 阅读 · 0 评论 -
调优案例分析与实战
一、案例分析高性能硬件上的程序部署策略64位的JDK,缺点:内存回收导致长时间停顿。性能低于32位JDK。内存消耗大,例如类型对齐补白。=====================对于CUP资源敏感度高的场景,选择"吞吐量优先"收集器。对于追求低停顿的场景,选择CMS收集器。集群间同步导致的内存溢出堆外内存导致的溢出错误当JVM运行时抛出OutOfMemoryError...原创 2019-04-13 21:04:00 · 159 阅读 · 0 评论 -
虚拟机类加载机制
一、类加载的时机类加载过程的第第一阶段:“加载” 对于 “加载” 的这个过程开始的情况虚拟机并没有进行约束,而是由虚拟机进行自由把握的。但是对于以下五种情况立即进行对类 "初始化” 的过程:使用new实例化对象,读取或调用静态对象,调用静态方法。使用Java.lang.reflect包下的方法对类进行反射调用初始化一个类时,先对其父类进行初始化虚拟机启动时先初始化主函数所在的类...原创 2019-04-16 20:37:40 · 155 阅读 · 0 评论 -
虚拟机性能监控与故障处理工具
写在前面:明白了虚拟机的内存划分,内存的分配回收,这些理论指导知识。实际开发中对于数据利用现在学的工具进行监控与孤战处理。这就是工具的作用。一、JDK命令行工具jps:虚拟机进程状况工具jps -l :输出主类名和LVMID;jstat:虚拟机统计信息监视工具jstat -gc 2764 250 20 :监视Java堆状况,GC时间等信息jinfo:Java配置信息工...原创 2019-04-13 14:08:52 · 138 阅读 · 0 评论 -
面试题 HashMap底层实现原理
用过HashMap吗? 什么是HashMap?HashMap实现了Map接口,Map接口对键值对进行映射。Map接口的两个基本实现是HashMap和TreeMap。TreeMap保证了对象的排列次序,而HashMap是无序的。HashMap的键和值可以赋值为null。HashMap是非synchronized的,可以通过Collections工具类的synchronizedMap方法使得Ha...原创 2019-04-20 17:30:04 · 4892 阅读 · 1 评论 -
Java基础复习—注解
一、注解注解根据是否有成员变量可分为两类:标签注解和元注解1.标签注解常用的基本Annotation:@Override限定重写父类标签,在对复杂父类重写时能进行限制提示;@Deprecated表示已过时,不可再调用否则将出错@SuppressWarnings抑制编译器警告@SafeVararag抑制堆污染警告,例如不同类型数据存入集合中产生的堆污染@Functiona...原创 2019-04-03 20:22:26 · 277 阅读 · 0 评论 -
垃圾收集器与内存分配策略
一、判断对象是否死亡1.引用计数算法:给对象中添加一个引用计数器。当对象实例每被引用一次计数器+1,每一个引用失效计数器-1;当计数器为0时,对象可被回收;缺点:对象相互引用时,计数器的值永不为0;2.可达性分析算法通过一系列的"GC Roots"对象作为起点,从这些节点开始向下搜索,所走过的路程称为引用链,当一个对象没有与任何引用链相连,则证明对象不可用;Java中可以作为GC Ro...原创 2019-04-12 20:19:08 · 164 阅读 · 0 评论 -
字符串常量池和intern()方法
一、Java中两种创建字符串对象的方式public static void main(String[] args) { //使用字面值创建s1对象,对象实例存放于常量池; String s1 = "1"; //使用new关键字创建s2对象,对象实例存放于堆中; String s2 = new String("1"); }...原创 2019-04-09 12:44:22 · 225 阅读 · 0 评论 -
Java基础复习—集合
一、Collection接口和Iterator1.boolean add(Object c) 添加操作,返回布尔值表示状态;2.void clear(); 清除集合里所有的元素,集合长度变为0;3.boolean contains(Object c); 查找集合里是否有指定元素c,返回布尔值;4.boolean remove(Object c); 删除数组里指定元素c,返回...原创 2019-03-28 22:20:32 · 144 阅读 · 0 评论 -
Java基础复习—异常处理
一、异常的处理机制1.使用try…catch捕获异常try { System.out.println(1/0); } catch (Exception e) { //打印异常的详细描述字符串 System.out.println(e.getMessage()); //打印异常的跟踪栈 ...原创 2019-04-01 23:38:25 · 185 阅读 · 0 评论 -
Java基础面试题 小记录
1. 浮点数精度丢失问题首先举例:下面的例子的输出值应当是0.9,但是实际输出是0.8999999……这和计算机的二进制工作原理相关,产生精度丢失;因为a + (-b) 时负数会转换成补码,小数位后面的补码导致精度丢失;//计算机进行的二进制运算,//在转换二进制时有些数字不能完全转换,只能接近double a = 2.0;double b = 1.1;System.out.pr...原创 2019-04-01 20:00:25 · 149 阅读 · 0 评论 -
Java基础复习—Arrays工具类
1.数组的复制//定义一个数组a;int[] a = new int[]{1,2,3,4};//新定义的数组b和a的内容相同;int[] b = Arrays.copyOf(a,4);2.数组的比较//数组的比较System.out.print(Arrays.equals(a, b));3.数组的查找//查找到数组自定义索引位置的值,输出为3System.out.print...原创 2019-03-27 21:47:58 · 143 阅读 · 0 评论 -
Java基本类库的复习
使用Scanner类读取文件public class ScannerFile{ public static void main(String[] args){ Scanner sc = new Scanner(new File("file.txt")) while(sc.hasNextLine()){ System.out.println(sc.next...原创 2019-03-27 17:33:36 · 139 阅读 · 0 评论 -
Java基础复习—多线程
一、线程的创建和启动原创 2019-04-05 20:29:26 · 398 阅读 · 2 评论 -
Java基础复习—泛型
一、泛型的概念及意义我对于泛型的理解就是在一种形式类型,可以类比于形式参数。它的作用是在我们不清楚具体的类型时,做的一种形式定义。并且在这种定义下可以进行多种类型的定义。二、泛型的作用域泛型可以作用于:1.类 2.接口 3.方法;1.泛型类泛型类中最经典的就是各种容器类:set、list、map;在这些类中提供了对不同类型的相同方法。泛型类是在实例化类的时候指定泛型的具体类...原创 2019-03-31 18:38:14 · 212 阅读 · 0 评论 -
Java基础复习—输入/输出
1.File类文件名相关的方法String getName() 返回File对象的文件名String getPath() 返回File对象的相对路径File getAbsoluteFile() 返回File对象的绝对路径String getParent() 返回上一级父类名文件检测相关的方法boolean exists() 判断File对象所对应的的文件是否存在boolean...原创 2019-04-04 12:54:09 · 168 阅读 · 0 评论 -
Java中基本类型的转换和String类型
基本类型转String类型利用String类型的重载方法; (注意这是属于String的方法)String a = String.valueOf(123);普通的连接方法;String a = “” + (123);利用包装类的toString方法 (注意这是属于包装类的方法)String a = Integer.toString(int a);String类...原创 2019-03-25 22:43:54 · 339 阅读 · 0 评论 -
Java多线程面试题
线程池的原理,为什么要创建线程池?将预先创建好的线程放入线程池当中。当有线程请求时,则从线程池中调用线程,调用结束之后归还线程。当出现需要创建大量线程的情况时,反复的创建线程会造成大量的性能损耗。使用线程池能降低损耗,提高响应的速度,方便管理线程。线程的生命周期,什么时候会出现僵死进程?线程的生命周期分为五个部分。新建、就绪、运行、阻塞、死亡。什么是线程安全,如何实现线程安全...原创 2019-04-25 16:30:31 · 173 阅读 · 0 评论