Java基础
Java 学习
DJH2717
努力从来都不会白费!
要学会发现问题,揣摩问题,思考问题,最后再解决问题!!
展开
-
关于java中父类和子类转型的问题java.lang.ClassCastException
我们都知道,java是面向对象的语言,继承是其一个很重要的特性,看下面这段代码:package my.java.test;class FatherClass { int fatherField; void fatherMethod() { System.out.println("这是父类的方法"); }}package my.java.test;...原创 2018-07-12 23:10:05 · 2328 阅读 · 0 评论 -
Cglib 代理的简单使用
在学习 Spring 的 Aop 时, 了解到 Spring 的 Aop 实现方式有 JDK 的动态代理和 基于 Cglib 的字节码动态修改的代理, 下面介绍简单使用.Cglib 的代理的主要原理是: 动态的给目标类生成一个子类, 然后采用方法拦截技术拦截对父类方法的调用, 顺势织入切面逻辑./** * @author djh on 2019/4/17 20:00 * @E-Ma...原创 2019-04-30 14:16:15 · 183 阅读 · 0 评论 -
Java8 CompleteFuture简单使用
Java8 中的 completeFuture 是对 Future 的扩展实现, 主要是为了弥补 Future 没有相应的回调机制的缺陷. 我们先看看 Java8 之前的 Future 的使用:package demos;import java.util.concurrent.ExecutionException;import java.util.concurrent.Execu...原创 2019-05-02 12:50:31 · 39115 阅读 · 0 评论 -
java 日期格式化
java 中日期格式化主要有三种方式:使用 DateFormate.getXXX 使用 SimpleDateFormate 配合关键字自定义格式化. 使用 Calendar 类. 方式一:style 有 short, media, long, full 四种. System.out.println(DateFormat.getDateInstance().format(ne...原创 2018-10-29 09:52:31 · 674 阅读 · 0 评论 -
浅析Java 线程池 实现原理
线程池是 JDK 1.5 出来的一个有关线程的新类库. 因此, 自 JDK 1.5 之后, 官方不推荐在使用线程的时候显示的新建一个线程, 而是要使用线程池. 本文主要从如下几个方面去探索线程池的大致实现原理:"线程池" 中的这个 "池" 到底是什么, 它是什么数据结构? 线程池的大致的执行流程是什么? 线程池是如何实现线程的复用, 如何管理线程, 又是如何销毁一个线程...原创 2018-09-15 14:43:42 · 265 阅读 · 1 评论 -
Java 为什么不能创建泛型数组?
泛型是 JDK 1.5 中引入的新特性, 首先我们来思考下 java 为什么要引入泛型, 我们看如下代码: List list = new ArrayList(); list.add(55); list.add("dd"); System.out.println(((Integer) list.get(1)) - 5);这段代...原创 2018-09-23 20:53:03 · 1681 阅读 · 2 评论 -
HashMap为什么这么快? ---深入理解HashMap的散列机制
在通过上篇博客了解了 Map 的维持内部的 键-值 对的基本方式之后,----不了解的看这篇(Java集合的基本概括), 我们便会思考, 在 HashMap 内部是如何组织和排列这些封装了的 ...原创 2018-08-12 16:29:49 · 2304 阅读 · 0 评论 -
JVM垃圾回收机制
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围城的 "高墙" ,墙外的人想进去,墙里面的人却想出来. ---<深入理解JVM> 在jvm运行时的五大内存区域, 其中 程序计数器,虚拟机栈,本地方法栈,随线程而生,随线程而灭. 栈中的 栈贞随着方法的调用和执行结束也有条不絮的入栈和出栈,而每一个方法所需要的栈贞的大小在编译期就已经确定,因此除堆以外的内存空间的分配和...原创 2018-07-25 22:18:32 · 202 阅读 · 0 评论 -
java的匿名内部类只能访问局部final变量
无意间发现匿名内部类访问局部变量必须为final,而成员变量不需要,思考后理解,在此记录: * 访问局部变量必须为final的原因是因为局部变量的生命周期的原因,(如果在一个线程类访问一个方法的 * 局部变量,那么当该方法结束之后,局部变量就不存在了,而此时线程还没结束,那么还得继续访问这个局部变量 * 如何解决? java采用的是值的复制来解决,在匿名内部类中,把局部变量复制一份并...原创 2018-07-13 12:47:51 · 223 阅读 · 0 评论 -
ReentrantLock的Condition使用总结
对于ReentrantLock创建公平锁的情况,可能并不会一直公平,本人测试的过程中就遇到过一次不公平的现象.还有就是对Condition的使用的理解: 1.condition是和ReentrantLock配合使用的,condition要和某一个ReentrantLock绑定.2.当在一个线程调用了condition.await()方法后,会使释放与condition关联的对象锁,此...原创 2018-07-13 12:11:55 · 2452 阅读 · 0 评论 -
关于java中参数传递和内存分配问题
首先我们来看一段代码:package my.java.test;public class Parameter { static class Year { private int year; public int getYear() { return year; } public void set...原创 2018-07-12 23:43:49 · 451 阅读 · 0 评论