![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JavaSummary
闲咸鱼
虚怀若谷 负重前行
展开
-
Java 集合
HashMap 和 HashTable 源码学习和面试总结 HashMap基于散列表(数组)+链表实现的,时间复杂度平均能达到O(1)。无序的。适用于在Map中插入、删除和定位元素。实现了Serializable 和 Cloneable接口 1.扩容哈希表中的条目数超出了加载因子与当前容量的乘积时,则要对该哈希表提前进行resize 操作(即扩容),每次扩容为之前大小的2倍。加载因子越大,对空间...原创 2018-05-11 16:54:36 · 114 阅读 · 0 评论 -
Java四种线程池的使用
Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。newSingl...转载 2018-05-15 13:09:19 · 147 阅读 · 0 评论 -
Java Virtual Machine
JVM内存模型以及分区1.方法区:线程共享的区域,存储已经被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据不需要连续的内存和可以选择固定大小或者可扩展,可以选择不实现垃圾收集当方法区无法满足内存分配需求时,将抛出OutOfMemoryErroy异常方法区包含一个运行时常量池 存放class中各种符号引用及翻译出来的直接引用运行期间也可以将新的常量放入池中 例如String类的in...原创 2018-05-14 09:48:40 · 883 阅读 · 0 评论 -
面向对象三大特性,五大原则
以前一直认为程序中的类有使用到封装继承多态就是面向对象设计,其实不然封装,继承,多态只是面向对象的三大特性,但是在设计程序的时候并不是说类的结构使用到了(或是体现出了)这三个特性就是面向对象,其实真正的面向对象设计是要符合下面的五大原则,面向对象的五大基本原则单一职责原则(SRP)开放封闭原则(OCP) 里氏替换原则(LSP) 依赖倒置原则(DIP) 接口隔离原则(ISP)单一职责原则(SRP)•...原创 2018-05-13 22:32:20 · 222 阅读 · 0 评论 -
Java 强引用 软引用 弱引用 虚引用
Java中的强引用,软引用,弱引用,虚引用有什么用?强引用是使用最普遍的引用:Object o=new Object();特点:不会被GC将对象的引用显式地置为null, 帮助垃圾收集器回收此对象软引用SoftReference用来描述一些还有用但是并非必须的对象,在Java中用java.lang.ref.SoftReference类来表示。对于软引用关联着的对象,只有在内存不足的时候JVM才会回...原创 2018-05-13 22:29:45 · 144 阅读 · 0 评论 -
网络
TCP UDP 区别TCP和UDP是OSI模型中的运输层中的协议。TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输。1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付3、TCP面向字节流,实...原创 2018-05-13 22:28:52 · 115 阅读 · 0 评论 -
Java 深拷贝 浅拷贝 clone
深浅拷贝区别在于是否对引用对象实体实现了复制 默认的clone()为浅拷贝完全深拷贝需要让类实现 Cloneable 接口并重写clone()调用父类的clone()方法类中所有引用对象都要按实现上述两项 才可以做到对 类内引用对象的完全深拷贝object中的clone方法为protected的 重写需改成public才能在外部调用只要在克隆中含有没有实现Cloneable的对象 object的c...原创 2018-05-13 22:26:58 · 91 阅读 · 0 评论 -
JAVA 多线程
JAVA 多线程 多线程的四种方式继承Thread类、实现Runnable接口、实现Callable接口通过FutureTask包装器来创建Thread线程、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,后两种是带返回值的。1、继承Thread类创建线程2、实现Runnable接口创建线程Java12345678p...原创 2018-05-13 22:25:29 · 87 阅读 · 0 评论 -
Java注解
深入浅出Java注解注解的作用格式检查:告诉编译器信息,比如被@Override标记的方法如果不是父类的某个方法,IDE会报错;减少配置:运行时动态处理,得到注解信息,实现代替配置文件的功能;减少重复工作:比如第三方框架xUtils,通过注解@ViewInject减少对findViewById的调用,类似的还有(JUnit、ActiveAndroid等);使用场合:动态配置信息;代为实现程序逻辑(...原创 2018-05-13 22:21:22 · 119 阅读 · 0 评论 -
关键字
volatileJava的内存模型,线程执行时会将变量从主内存加载到线程工作内存,建立一个副本,在某个时刻写回。valatile修饰的变量每次都读取主内存的值,有更新则立即写回主内存。“volatile保证了线程之间的可见性”:线程看到volatile变量会去读取主内存最新的值,修改也会直接写到主内存中,所以保证了valatile变量在各个线程间的可见性。valatile保证了其他线程取当前变量中...原创 2018-05-12 14:16:02 · 132 阅读 · 0 评论 -
Java中的BIO、NIO、AIO(NIO2)
在高性能的IO体系设计中,有几个名词概念常常会使我们感到迷惑不解。具体如下: 序号问题1什么是同步?2什么是异步?3什么是阻塞?4什么是非阻塞?5什么是同步阻塞?6什么是同步非阻塞?7什么是异步阻塞?8什么是异步非阻塞?散仙不才,在查了一部分资料后,愿试着以通俗易懂的方式解释下这几个名词。如有不足之处,还望告知。 在弄清楚上面的几个问题之前,我们首先得明白什么是同步,异步,阻塞,非阻塞,只有这几个...转载 2018-06-15 12:21:00 · 233 阅读 · 0 评论