
java基础
胡云台
愿你能昂扬前行
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
枚举深入,包括序列化安全/反射安全
开始前关于枚举的一些问题1.枚举允许继承类吗?2.枚举允许实现接口吗?3.枚举可以用等号比较吗?4.可以继承枚举吗?5.枚举可以实现单例模式吗?6.当使用compareTo()比较枚举时,比较的是什么?7.当使用equals()比较枚举的时候,比较的是什么?枚举是什么?枚举是JDK1.5新增的一种数据类型枚举类是一种特殊的类,它和普通的类一样,有自己的成员变量、成员方法、构...原创 2019-11-08 16:53:20 · 322 阅读 · 0 评论 -
spring注解
注解 Annotation注解,也叫元数据。一种代码级别的说明。它是jdk1.5以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明、注释。简单来说注解就是代码中的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相对应的处理。注解 编程思想注解就是个接口,可以放在包、类、字段、方法、局部变量、方...原创 2019-04-22 20:43:50 · 154 阅读 · 0 评论 -
BeanFactory和FactoryBean以及ApplicationContext的区别
BeanFactoryBeanFactory是IOC最基本的容器,负责生产和管理bean,它在为其他具体的IOC容器提供了最基本的规范,例如XmlBeanFactory、ApplicationContext等具体的挺起都实现了BeanFactory,再在其基础上附加了其他功能BeanFactory源码package org.springframework.beans.factory; ...原创 2019-04-15 15:34:19 · 997 阅读 · 0 评论 -
Spring-bean的循环依赖以及解决方式
什么是循环依赖循环依赖就是循环引用,每个类中嵌套引用,在spring中表现为两个或多个bean相互之间持有对方,比如A引用B,B引用C,C又引用A,最终反映出来形成一个环。循环调用时无法解决的,一定要有终止条件才可以,否则就是死循环,最终的结果就是内存溢出。spring中的循环依赖场景构造器的循环依赖field属性的循环依赖构造器循环依赖通过构造器注入构成的循环依赖,此依赖是无法...原创 2019-04-22 22:10:32 · 423 阅读 · 0 评论 -
spring事务
spring支持两种类型的事务管理:编程式事务管理:写在代码里PlatformTransactionManagerTransactionTemplate声明式事务管理:将事务管理从业务代码中分离。<tx:advice>标签@Transactional事务的类型数据库分为本地事务跟全局事务本地事务:普通事务,独立一个数据库,能保证在该数据库上操作的A...原创 2019-05-06 09:27:46 · 325 阅读 · 0 评论 -
HashMap线程安全问题
以下参考jdk1.7扩容resize就是重新计算容量,向HashMap中不停的添加元素,而HashMap内部的数组无法装载时,就需要扩大数组长度。而数组无法自动扩容,那么HashMap采用的是用一个新的数组代替已有的容量小的数组。首先看一下扩容resize的源码void resize(int newCapacity) { //传入新的容量 Entry[] oldTable = t...原创 2019-05-11 13:43:33 · 1718 阅读 · 0 评论 -
Mybatis整理以及Sql执行流程
Mybatis是支持定制化sql、存储过程及高级映射的优秀的持久层框架,其主要就完成了2件事情:封装JDBC操作利用反射打通Java类与Sql语句之间的相互转换MyBatis的主要设计目的就是让我们对执行SQL语句时对输入输出的数据管理更加方便,所以方便地写出SQL和方便地获取SQL的执行结果才是MyBatis的核心竞争力与原生JDBC的对比原生JDBC的缺点:原生的JDBC操作...原创 2019-05-21 23:30:32 · 1714 阅读 · 6 评论 -
插入排序->{直接插入排序,二分插入排序,希尔插入排序}
插入排序->{直接插入排序,二分插入排序,希尔插入排序}直接插入排序原理:设有一组关键字{K1, K2,…, Kn};排序开始就认为 K1 是一个有序序列;让 K2 插入上述表长为 1 的有序序列,使之成为一个表长为 2 的有序序列;然后让 K3 插入上述表长为 2 的有序序列,使之成为一个表长为 3 的有序序列;依次类推,最后让 Kn 插入上述表长为 n-1 的有序序列,得一个表长为 ...原创 2019-05-24 11:02:52 · 270 阅读 · 0 评论 -
Java ArrayList 为什么要实现 RandomAccess 接口?
在我们的开发中,List接口是最常见不过,而且我们几乎每天都在用ArrayList或者LinkedList,但是细心的同学有没有发现,ArrayList中实现了RandomAccess接口,而LinkedList却没有实现RandomAccess接口,这是为什么呢?public class ArrayList<E> extends AbstractList<E> ...转载 2019-07-26 09:58:00 · 269 阅读 · 0 评论 -
AOP思想、五大通知及执行顺序、多个Aspect情况
AOP Aspect-OrientedProgramming 面向切面编程可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程主要目的:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指...原创 2019-04-17 14:58:38 · 5566 阅读 · 7 评论 -
spring中的IOC与DI
文章目录IOC控制反转 Inversion Of ControlIOC原理IOC的好处DI Dependency Injection 依赖注入DI的三种实现方式IOC自动化装配IOC控制反转 Inversion Of Control所谓IOD对于spring框架来说,就是由spring来负责控制对象的生命周期和对详见的关系。就比如找对象,原本我们需要了解对象的一些信息,然后new一个(或者从J...原创 2019-04-13 16:26:24 · 442 阅读 · 0 评论 -
静态代理、JDK动态代理、CgLib动态代理
代理模式:静态代理动态代理jdk动态代理cgLib动态代理使用目的:解决在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面对对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问,直接访问会给使用者或者系统结构带来很多麻烦每一个动态代理类中都必须实现Invocation接口,实现其中的invoke方法JDK的...原创 2019-04-10 20:39:59 · 220 阅读 · 0 评论 -
Java-OOP-细散知识点整理笔记
堆可以动态的分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈的存取速度的比堆要快,仅次于直接位于CPU中的寄存器。堆由于要在运行时动态分配内存,存取速度较慢------------------------------------------------------------------...原创 2018-01-09 15:09:18 · 428 阅读 · 0 评论 -
HashMap底层及源码整理
关于Map接口的延伸关系:下面针对各个实现类的特点做一些说明:1.HashMap:根据hashCode值存储数据,大多数情况下可以直接定位到他的值,因而具有很快的访问顺序,但遍历顺序确实不确定的。HashMap最多只允许一条记录的键为null,允许多条值为null,HashMap非线程安全,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致。如果需要满足线程安全,可以...原创 2019-03-14 00:31:21 · 230 阅读 · 0 评论 -
JVM、GC
1.程序计数器Program Counter Register:每个线程都有自己的程序计数器,若执行的是JVM的方法,则存多少是当前执行指令的地址,若执行的是native的方法,则为空2.虚拟机栈VM Stacks:线程私有,生命周期与线程一致,随线程创建而创建,随线程退出而回收。内部保存一个个的栈帧,调用方法时压栈,方法结束出栈异常可能性: 线程请求的栈深度大于栈所允许的深度,...原创 2019-03-20 18:20:17 · 210 阅读 · 0 评论 -
工厂模式
工厂模式的分类简单工厂模式JDK类库,如工具类java.text.DateFormatjava加密技术spring-BeanFactory工厂方法模式JDBCspring-FactoryBean抽象工厂模式为什么要用工厂模式解耦:把对象的创建和使用的过程分开降低代码重复:如果创建某个对象的过程很复杂,而且使用率很高,那么就会有很多重复代码降低维护成本:由于...原创 2019-04-11 22:55:10 · 140 阅读 · 0 评论 -
类加载器
文章目录定义作用默认的类加载器双亲委派机制委托机制的具体含义委托机制的意义——防止内存中出现多份同样代码(维护系统代码??)面试例题定义类加载器的作用是获取字节码.class文件里面的内容,简单来货,类加载器就是加载类的工具。当出现一个类,用到此类的时候,java虚拟机首先将类字节码加载进内存,通常字节码的原始信息放在硬盘上的classpath指定的目录下。作用将.class文件中的内容...原创 2019-04-16 10:12:15 · 331 阅读 · 0 评论 -
HashMap底层及源码整理*
之前用富文本编辑器效果不是很好,还是用Markdown舒服。。。关于Map接口的延伸关系:下面针对各个实现类的特点做一些说明:HashMap:根据hashCode值存储数据,大多数情况下可以直接定位到他的值,因而具有很快的访问顺序,但遍历顺序确实不确定的。HashMap最多只允许一条记录的键为null,允许多条值为null,HashMap非线程安全,即任一时刻可以有多个线程同时写HashM...原创 2019-04-16 14:07:21 · 173 阅读 · 0 评论 -
Dependency Injection三种方式
DI的三种实现方式设置注入—Setter Injection构造方法注入—Constructor Injection接口注入—Interface Injectionpublic class Person{ private Dog dog; private Ingteger age; private String name; //setter /...原创 2019-04-13 15:24:57 · 1518 阅读 · 0 评论 -
反射
Reflection耦合:模块之间产生了强烈的依赖性的时候,就产生了耦合解耦:降低模块之间的依赖性(为了模块化开发,便于后续维护)通过配置文件来动态配置和加载类。就是把类的字节码看做对象定义简单来说,就是动态加载对象,并对对象进行剖析。在java中的反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法对于任意一个对象,都能调用它的任意一个方法,这种动态获取信息...原创 2019-04-13 15:32:46 · 189 阅读 · 0 评论 -
java内存模型JMM
文章目录内存模型抽象结构哪些是共享变量JMM抽象结构模型重排序数据依赖性as-if-serialhappens-beforeas-if-serial和happens-before的区别内存模型抽象结构线程间协作通信可以类比人与人之间的协作的方式,在现实生活中,之前网上有个流行语“你妈喊你回家吃饭了”,就以这个生活场景为例,小明在外面玩耍,小明妈妈在家里做饭,做晚饭后准备叫小明回家吃饭,那么就存...原创 2019-03-31 21:58:34 · 209 阅读 · 0 评论