JAVA核心知识
主要讲解一些在JAVASE方面的基础核心知识,因为我们总是会学习一些框架,但是真正能与人拉开差距的地方还是在JAVA基础知识中,所以,有扎实的基础知识也是相当重要的事情。
2NaCl
主攻Java后端开发与云计算Paas平台、离线大数据平台相关
展开
-
注解处理器入门
注解的原理这一块,在面试中也是经常会问到了,很是很精髓的,它是java5引入的,用来为类、方法、字段、参数等Java结构提供额外信息的机制。比如,Java核心类库,@Override注解是被用来声明某个实例方法重写了父类的同名同参数的类型的方法。@Override本身被两个注解所标注,其中,@Target用来限定目标注解所能标注的Java结构,@Override只能用来标注方法。Renten...原创 2019-08-04 00:12:26 · 175 阅读 · 0 评论 -
理解Java的字符串,String、StringBuffer、StringBuilder有什么区别?
今天会来说一下日常使用到的字符串,虽然在生活中会经常使用到,但是在编程语言中却是一个特殊的存在,今天的问题就是,String、StringBufer、StringBuilder有什么区别?初步了解简单说一下区别:String:Immutable类型,无法对于自身拼接,裁剪,加长,只能产生新的String对象,所以在使用效率上对于性能会有明显的影响。StringBuffer:解决了上面所说的...原创 2019-07-25 00:12:11 · 181 阅读 · 0 评论 -
AtomicInteger底层实现原理是什么?如何在自己的产品代码中应用CAS操作?
今天主要来围绕CAS技术来说一下,分析并发包的内部结构,看看内部结构、线程池,是基于哪一种原理去实现的。今天的问题主要是,AtomicInteger底层实现原理是什么?如何在自己的产品代码中应用CAS操作?概述AtomicInteger是对int类型的一个封装,提供原子性的访问和更新操作,原子性操作基于CAS(compare-and-swap)技术CAS(compare-and-swap)...原创 2019-07-19 19:52:48 · 275 阅读 · 0 评论 -
并发包中的ConcurrentLinkedQueue和LinkedBlockingQueue有什么区别?
我们之前写过关于concurrent包下的hashmap,分析过其原理性能以及和非这个包下的hashTable做过对比,这次就来介绍一下concurrent包下的两个类,ConcurrentLinkedQueue和LinkedBlockingQueue,两个线程安全队列的使用。概述有时候我们把并发包下的所有容器都习惯的称为并发容器,但是严格来讲,只有Concurrent*才是真的并发容器。关...原创 2019-07-17 17:56:43 · 1649 阅读 · 0 评论 -
JVM优化Java代码时都做了什么?
在之前的专栏中,我们了解到了一些jvm的内存模型,GC调优的思路,让我们对于java的底层有了一定的了解,那么我们采用这种思路去提高jvm的性能,减少jvm额外的消耗的同时,jvm究竟又做了什么,让我们的java代码得到了优化呢?今天主要会将一些关于java的生命周期与jvm运行时候的优化的方法进行一下讲述,让大家知道一下jvm优化的时候,究竟在java的运行中,jvm究竟做了什么。简述在j...原创 2019-07-16 14:20:31 · 155 阅读 · 0 评论 -
谈谈你的GC调优思路?
上一篇专栏简单的介绍了一下GC,让我们对于oracleJDK的gc有了一定的了解,有Serial GC这种古老简单的单线程计算模式,也有CMS并行计算收集机制,还有新型调优思路G1 GC。之后我们又介绍了单线程集中式的gc流程。简单来说,就是程序运行的过程中,对当前周期使用到的堆内部的对象实例,进行标记,其他进行清除,不断循环,并且在这个过程中进行一定的内存整理。最后成为老年代。而老年代的gc...原创 2019-07-15 22:54:18 · 567 阅读 · 0 评论 -
Java常见的GC有哪些?
之前就说,想在专栏中总结一下GC调优的相关思路和解决措施,但是准备在此篇专栏中对于GC有一个入门的概念,在明天的专栏中更进一步的去写GC调优的核心思路。Java的垃圾收集器机制是java的招牌能力,并且目前也在不断的演进,极大地提升了开发效率,专栏尽量会将面试的重点总结起来。那么,问题就是,java 的垃圾收集器,常见的都有哪几种?概述实际上,gc是与jvm紧密相关的,不同厂商IBM Or...原创 2019-07-15 00:02:57 · 4203 阅读 · 0 评论 -
请介绍类加载过程,什么是双亲委派模型?
截止上一篇专栏,已经介绍过很多关于jvm,线程方面的知识了,这些都是容易在社招中问到的,后面还会继续介绍类加载,连接池各种参数,GC调优,分布式事务,SQL锁,尽量在7月份之前全部总结完成,po主也是也是为了能早日蒙混进大厂啊,马上就要大三了,快没时间了,哈哈,希望大家还年轻的,可以好好努力,继续加油,多学点东西继续努力。这次就来介绍一下和上面提到的同样重要的类加载过程和双亲委派模型!简述...原创 2019-07-14 11:51:56 · 297 阅读 · 0 评论 -
谈谈JVM内存区域的划分,哪些区域可能发生OutOfMemoryError?
JVM这个话题是面试的时候经常会问到一个难点,今天将会从内存管理的角度来介绍一下jvm,垃圾收集机制为我们打理了很多繁琐的事情,但是也仍然不是万能的,了解jvm的内部内存结构,工作机制,是设计高扩展性应用和诊断运行时问题的基础。今天的问题是,从内存的角度来说,哪些区域会产生OutOfMemoryError概述通常会将JVM内存划分为几个方面:第一,程序计数器(PC)。在jvm中,每个线程都...原创 2019-07-13 12:33:15 · 635 阅读 · 0 评论 -
有哪些方法可以在运行时动态生成一个Java类?
在之前的专栏中,我们提到了动态代理,先举一个比较常见的应用场景,在JPA中,我们仅仅实现了JPA的两个接口,就自动生成了java类,帮助我们完成sql的基本操作,并且层层封装,从配置,驱动,到sql语句的写入都帮我们完成,换句话说,动态的生成了一个方法完成了操作,这也就是动态代理操作,但是上次的专栏,并没有很仔细的进行说明,所以在这篇文章中,更加深入的分析一下。概述我们从原始的java类来进行...原创 2019-07-12 10:17:59 · 868 阅读 · 0 评论 -
final,finally,finalize有什么区别
初步了解这是一道非常典型的面试题,而它也是有一系列的典型回答的:final可以用来修饰类、方法、变量,分别有不同的意义所在,final修饰的class代表不可继续扩展,final修饰的变量代表不可修改,final修饰的方法代表不可重写。 finally则是java保证某一段重点代码一定要被执行的修饰符,例如:我们需要用try块让JDBC保证连接,保证unlock锁等动作&nb...原创 2019-06-06 09:06:22 · 3068 阅读 · 0 评论 -
JavaIO流及NIO如何实现多路复用
初学Java的时候大家都会接触到各种各样的IO流,我们可以知道,IO流的扩展方式是多种多样的,这篇文章,就会主要的来介绍一下IO流。简介Java IO流方式多种多样,我们可以从IO抽象模型和交互方式,进行简单的划分。第一,传统的java.io包,完全基于流模型实现,提供了一些我们熟知的IO功能,比如File抽象、输入输出流等等。交互方式是同步、阻塞的方式,也就是说,在读取输入流或者写入输出流...原创 2019-07-07 22:10:17 · 3637 阅读 · 0 评论 -
HashMap源码分析
HashMap源码分析HashMap内部实现基本点分析容量(capcity)和负载系数(load factor树化HashMap内部可以看做是数组和链表结合的符合结构,数组以桶划分,通过哈希值决定了键值对在这个数组的寻址,哈希值相同的键值对,则以链表形式存储,如果链表大小超过阈值,就会被改造成树形结构,接下来附图(from 极客时间):从非拷贝函数的实现来看,这个数组似乎没有在最初...原创 2019-07-03 12:52:26 · 447 阅读 · 0 评论 -
对比Hashtable、HashMap、TreeMap有什么不同?
我们在不考虑线程安全使用的时候,HashMap居多,因为具有的api都很直接很方便,在面试的时候这些集合属性也是面试的焦点,但是也多半是问一下线程安全方面的问题,对比之间的不同,这篇文章不会主要去讲述线程安全,而是从基础的角度出发,对这三种集合属性进行一下介绍。简介这三者都是一些常见的集合属性的具体实现,以键值对的方式进行存储和数据的操作。HashTable是早期Java类库提供的一个哈希表...原创 2019-07-03 10:53:21 · 352 阅读 · 0 评论 -
对比Vector、ArrayList、LinkedList有何区别
我们在学习java基础的时候会接触到集合框架,并且集合框架应用范围也十分广,像我们做后台开发的时候就会经常用到,这篇文章主要讲述集合框架中的list的几种不同的实现方法的区别。那么问题就来了,Vector、ArrayList、LinkedList究竟有什么区别呢?首先,这三者都是通过List进行具体实现的,本质上,三者都可以做到对于列表中的某个元素进行增删改,具体功能,也都基本还差不多,但是具...原创 2019-06-30 02:29:16 · 271 阅读 · 0 评论 -
动态代理是基于什么原理?
这个问题第一次看见的时候,还是在上大二的时候去面试一份工作,人家问我JPA怎做到仅仅interface两个接口,就能做到省略大量sql实现业务的功能,我当时学的时候也没有了解过很多,就说是封装好的,后来查阅资料才知道是动态代理,那么动态代理到底是什么呢,于是我就查阅了一些资料,然后再这篇文章里进行了一下总结。动态代理简介动态代理是一种在构建project的时候构建代理,动态生成代理的过程,就...原创 2019-06-29 08:55:32 · 964 阅读 · 0 评论 -
结构性学习Java的设计模式
设计模式是人们为软件开发中相同表征的问题,抽象出的可重复利用的解决方案,设计模式上已经代表了一些特定情况的最佳实践,同时也起到了软件工程师之间沟通“行话”的作用。理解和掌握典型的设计模式,有利于我们提高沟通、设计的效率和质量。我们知道设计模式共23种,但是说实话恐怕大多数人会用的也就是单例,工厂,代理,建造,装饰,而且还是杂乱无章的看见别人的案例照猫画虎学会的,不过说实话好像就得这么学= =,总...原创 2019-08-31 11:29:00 · 172 阅读 · 0 评论 -
谈谈Spring Bean的生命周期和作用域?
在这篇专栏啊,切换一下思路,只想说,现在或许我们常用的spring框架都是SpringBoot了,因为确实是好用,但是不得不说,仅仅是使用的层次,10天就完全可以达到了,所以其实没什么可以骄傲的,spring是整个spring Collections的基础,所以,这篇专栏将主要围绕spring 的底层去讨论一下spring框架的设计细节。简述springBean的生命周期可以分为创建和销毁两个...原创 2019-09-06 17:28:18 · 445 阅读 · 0 评论 -
乐观锁与悲观锁
文章目录乐观锁乐观锁的实现方式1. 版本号机制2. CAS算法乐观锁的缺点1. ABA问题2.循环时间长,开销大3.只能保证一个共享变量的原子操作悲观锁悲观锁的使用方式乐观锁和悲观锁的区别首先先诠释一下,乐观锁和悲观锁的特点:乐观锁大多是基于CAS算法或者版本号机制实现,更多去应用于读,并且单纯的读不会加锁,而更新的时候防止别人读的时候脏读会加锁。悲观锁和乐观锁的情况是相对的,即使是读都假...原创 2019-10-10 00:34:50 · 149 阅读 · 0 评论