java基础
sunjiaminaini
三年android工作经验
就职于中国最大外卖平台-饿了么
熟练android,java开发。
展开
-
CGLib动态代理原理及实现
JDK实现动态代理需要实现类通过接口定义业务方法,对于没有接口的类,如何实现动态代理呢,这就需要CGLib了。CGLib采用了非常底层的字节码技术,其原理是通过字节码技术为一个类创建子类,并在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势织入横切逻辑。JDK动态代理与CGLib动态代理均是实现Spring AOP的基础。 简单的实现举例: 这是一个需要被代理的类,也就是父类,通过字节原创 2017-08-08 15:40:24 · 1244 阅读 · 0 评论 -
动态代理、多态原理
RESTful API 调用很多人都在用 Retrofit,说到 Retrofit 就不得不提动态代理,虽然这不是它唯一的亮点,而且也不是动态代理的典型使用场景,但大家就是爱问:说说动态代理是怎么回事吧?Retrofit 的解析请见 拆轮子系列:拆 Retrofit。 动态代理的原理 看过源码之后其实很简单,就是一句话:运行时生成实现类(代理类)的字节码,对其所有的方法调用都转发到 invoca原创 2017-08-08 15:42:36 · 1987 阅读 · 0 评论 -
Java中Array与ArrayList的主要区别
1)精辟阐述: 可以将 ArrayList想象成一种“会自动扩增容量的Array”。2)Array([]):最高效;但是其容量固定且无法动态改变; ArrayList: 容量可动态增长;但牺牲效率;3)建议: 基于效率和类型检验,应尽可能使用Array,无法确定数组大小时才使用ArrayList! 不过当你试着解决更一般化的问题时,Array的功能就可能过于受限。4)Java中一原创 2017-08-08 15:44:20 · 1167 阅读 · 0 评论 -
Java中ArrayList和LinkedList区别
一般大家都知道ArrayList和LinkedList的大致区别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 3.对于新增和删除操作add和remove,LinedList比较占优势,因为原创 2017-08-08 15:46:51 · 1399 阅读 · 0 评论 -
String a = "abc" 与String b = new String("abc")的区别
假如我们, String a = “abc”; “abc”存在字符串常量池中 String b = “abc”;if(a == b){} //这里 == 判断的是a b 是否指向”abc”这个字符内存池,在堆区里面的一块相同地址!——-假如我们这样做——- String a = “abc”; String b = “ab” + “c”;if(a == b){} //这里也是相等的,因为只有原创 2017-08-08 15:50:32 · 2919 阅读 · 0 评论 -
Java String面试题
试题一、String s = new String(“abc”)创建了几个对象? String s = new String(“abc”)实际上是”abc”本身就是字符串池中的一个对象,在运行 new String()时,把字符串池的字符串”abc”复制到堆中,并把这个对象的应用交给s,所以创建了两个String对象,一个在字符串池中,一个在堆中。(注:我们假设的是字符串池中默认是没有abc字符串转载 2017-08-11 10:21:51 · 1280 阅读 · 0 评论 -
Java的Executor框架和线程池实现原理
一 Java的Executor框架图1.Executor接口public interface Executor { /** * Executes the given command at some time in the future. The command * may execute in a new thread, in a pooled thread, or in原创 2017-09-04 14:18:45 · 265 阅读 · 0 评论 -
Maven 打包可执行jar
有点时候我们项目不是通过IDEA 向导生成的spring-boot项目文件,我们直接打出的jar包,通过java -jar xxxx.jar命令执行,报出xxx.jar中没有清单属性错误,这个时候我们需要指定jar的main入口和在jar包的MANIFEST.MF文件中生成Class-Path属性, 我们修改pom.xml文件:<build> <plugins>原创 2017-09-08 17:27:53 · 989 阅读 · 0 评论