Java基础详解
Kevin照墨
这个作者很懒,什么都没留下…
展开
-
深入理解代理模式及其实现
这里主要是分析如下3种:静态代理、JDK动态代理、CGLIB动态代理1.静态代理按照代理创建的时期,可以分为动态代理和静态代理:静态代理:由程序员或者自动生成工具生成代理类,然后进行代理类的编译和运行。在代理类、委托类运行之前,代理类已经以.class的格式存在。动态代理:在程序运行时,由反射机制动态创建而成。下面举个例子:新建一个接口,UserService.java, 只有一个...原创 2020-02-20 16:36:13 · 290 阅读 · 0 评论 -
线程池
1.定义线程池是一种多线程处理形式,处理过程中将任务提交到线程池,任务的执行交由线程池来管理。如果每个请求都创建一个线程去处理,那么服务器的资源很快就会被耗尽,使用线程池可以减少创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。作用:能够极大地减少某些线程的频繁创建和销毁带来的时间开销比如说项目中使用到了thrift,client会向server发起大量并发请求,如果每次...原创 2020-02-07 16:18:44 · 171 阅读 · 0 评论 -
Java并发——阻塞队列的实现
1.使用场景阻塞的应用场景,比如 生产-消费模式,限流统计等等。什么 ArrayBlockingQueue、LinkedBlockingQueue、DelayQueue 等等,都是阻塞队列的实现。但是我们发现其使用目的和消息队列类似,实际上是的,只是阻塞队列是用于单个系统的消息传递,生产者消费者模式,而消息队列一般是分布式系统间的生产者消费者模式,但无论是哪种形式,其实现都离不开基本的多线程同...原创 2020-02-07 11:12:31 · 282 阅读 · 0 评论 -
Java基础—— ==与equals、equals和hashcode
一、==与equals:==比较的是栈中存放的值(对于非基本类型存的是对象所在的堆地址,因此非基本类型不能使用==进行比较)equals是专门为非基本类型(对象)设计的,用于比较堆中对象的内容是否相同,但是Object类默认只是比较栈中存放的值,因此需要自己进行重写。二、equals与hashcode:两对象内容相等,一定有hashcode相等,反之不成立。为什么反之不成立呢,这是因...原创 2020-02-04 15:43:10 · 144 阅读 · 0 评论 -
Java并发——synchronized
synchronized便是java的锁(本地锁),只能作用于一个共享实例对象,若被加锁的对象,存在多个实例的可能,仍然会造成并发安全性问题,若想要解决这种多实例并发的问题,可以采取分布式锁或者信号量机制。synchronized的三种应用方式,Java中每一个对象都可以作为锁,这是synchronized实现同步的基础:普通同步方法(实例方法),锁是当前实例对象 ,进入同步代码前要获得当前...原创 2019-12-28 17:47:52 · 161 阅读 · 0 评论 -
Java并发——条件变量
1.定义在操作系统——多线程同步互斥一文中已详细介绍过了条件变量及其使用注意事项。条件变量,是为了解决等待同步需求,实现线程间协作通信的一种机制。条件变量用来自动阻塞一个线程,直到某特殊情况发生唤醒该线程为止。通常条件变量和锁机制同时使用。2.Java中的条件变量2.1 synchronized + wait()、notify()、notifyAll()线程A(消费者):synchron...原创 2019-12-25 17:56:01 · 1174 阅读 · 0 评论 -
并发下的容器(ArrayList、HashMap)安全问题
最近在做项目的是后遇到了并发安全问题,当多个线程操作ArrayList、HashMap等数据结构时造成了数据不一致,或者莫名其妙的异常,最后查阅资料发现是本身这些数据结构的并发安全问题导致的。1.ArrayList我们知道ArrayList底层仍是数组模拟:add操作实际上是数组赋值,然后指针++操作另外当容量超过初始容量时会自动进行容量扩展,底层实现即通过copy方式将现在的数组cop...原创 2019-10-22 11:46:45 · 326 阅读 · 0 评论 -
Queue类数据结构浅析
1.定义很简单,Queue就是FIFO类型的一种数据结构。2.分类DeQueue:双向队列,队首队尾可互换PriorityQueue:优先队列,并不是按照进出顺序进行排序,而是按照指定的某种排序规则进行队列排序3.实现链表实现:这也是最简单的一种方式,只需要队首队尾各维护一个指针即可,从上面的图中,我们可看出,LinkedList采取了这种实现方式数组模拟实现:这稍微复杂一点...原创 2019-07-10 18:03:09 · 548 阅读 · 0 评论 -
Map类数据结构浅析
简单来讲,map就是一个元素为(key,value)的容器,map最常用的就是用来做相关数据的统计。在Java中有如下几种Map的实现,以及其具体使用场景。map+hash =HashMap(异步,key\value可为null)HashTable(同步,key\value不能为null)时间复杂度:增删改查-O(1) ,无序使用场景:快速定位map+LinkList = Li...原创 2019-06-03 16:23:17 · 1574 阅读 · 0 评论 -
Java注解
1.何为注解简单来说,注解就是元数据,何为元数据,元数据就是对数据(这里所说的数据也可以说是对象)的一种描述数据。但是只描述数据并没有什么意思,对于此类描述性数据做出相应的操作才是我们真正想要的。所以下面我们了解一下注解的具体工作形式。2.注解工作流程定义 注解类相当于定义了注解的数据结构,这只是相当于定义了对某个类附加的元数据(描述),并没有任何实际的操作,具体操作需要在注解处理...原创 2019-05-23 22:55:29 · 97 阅读 · 0 评论 -
Java垃圾回收和JIT技术浅析
1.垃圾回收垃圾回收机制有很多种,比如引用计数,标记-清扫,停止-复制,分代回收等。下面一一说明。1.1 引用计数即每当一个对象增加一个引用时,其引用计数就加一,当引用离开其作用域,该对象的引用计数标志就减一,直到该标志位0时,就清理。从上面我们可看出如下几个问题:1.这种垃圾回收程序会一直运行在程序中遍历监听堆里面对象列表的引用计数变化情况,无疑这会造成极大的开销。2.最为关键的是它无法...原创 2019-05-18 15:53:40 · 305 阅读 · 0 评论 -
Java类型浅析、自动拆箱、享元模式
在Java中,万物皆对象,但是仍可以分为基本类型和非基本类型。因为对于int 这些数据对象,并不需要多大的空间,为了提高效率,就将这些int、double、float、bool等基本类型直接按值存放在栈中。而非基本类型的实际值则是存放在堆中。下面我们结合上面提到的数据类型再讨论一下==和equals的问题。我们知道Java中都是以引用方式来操作实际对象的,而引用则是存在于栈中。而对于基本类型...原创 2019-05-18 12:36:04 · 136 阅读 · 0 评论 -
Java多态与泛型、静态绑定与动态绑定
多态1.概念简单理解就是,一个对象(抽象)可以表现出多种状态。而它是如何实现这种表现出多种状态功能的呢。从Java语法上来讲有如下两种方式:使用继承:将父对象(更抽象的对象/或者说基类)设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。class Aninal{ void sound(发出声音);}//sound是动物的...原创 2019-05-17 15:39:01 · 671 阅读 · 0 评论 -
Spring学习笔记——IOC、依赖注入DI和Spring作用浅析
1.依赖注入DI1.1 什么是DI简单来说,就是在如果在一个对象主体中要使用另一个对象,为了实现松耦合,通过传递被使用对象的引用到该对象主体,来实现对该对象的使用。举个简单的例子:代码1.1.1class Engine{ public void start(){}}class Car{ public void run(Engine engine){engine.start()}...原创 2019-05-21 17:28:03 · 321 阅读 · 0 评论 -
Java复用类浅析
在某种程度上来讲,Java实现复用类就只有如下两种方式:组合、继承组合:在导出类中的功能需要通过子类的引用来完成一些该子类的功能,但并不在导出类中暴露子类的接口(调用方法),这里说的子类并不是指继承意义上的子类,而是该导出类是由多种其他类(子类)组合而成的。class Engine{ public void start(){} public void end(){}}class...原创 2019-05-20 17:35:50 · 257 阅读 · 0 评论 -
Java单例模式小记
所谓单例模式,即使类所产生的对象始终保持唯一性。下面说一下单例模式的作用。控制资源的使用,通过线程同步来控制资源的并发访问。比如文件管理器操作系统是一个典型的多进程多线程系统,那么在创建或者删除某个文件的时候,就不可避免地出现多个进程或线程同时操作一个文件的现象。采用单例模式设计的文件管理器就可以完美的解决这个问题,所有的文件操作都必须通过唯一的实例进行,这样就不会产生混乱的现象。...原创 2019-05-20 11:10:18 · 127 阅读 · 0 评论