java基础
绿色藤蔓
java攻城狮
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java基础之枚举的使用
在JDK5中新引入的枚举完美地解决了之前通过常量来表示离散量所带来的问题,大大加强了程序的可读性、易用性和可维护性,并且在此基础之上又进行了扩展,使之可以像类一样去使用,更是为Java对离散量的表示上升了一个台阶。因此,如果在Java中需要表示诸如颜色、方式、类别、状态等等数目有限、形式离散、表达又极为明确的量,应当尽量舍弃常量表示的做法,而将枚举作为首要的选择。public enum App原创 2017-09-27 15:48:02 · 219 阅读 · 0 评论 -
java手动实现双向链表LinkedList
一、LinkedList原理介绍LinkedList是java中重要的List集合,其内部是一个双向链的数据结构。插入和删除的效率比ArrayList高,之前手动实现的ArrayList,因为插入和删除没有数组的复制工作,如果想在下标为index位置插入元素则通过从头部或者尾部开始查找,找到index原始位置的元素,则修改原始位置index元素的Node中的上一个元素,以及元素index元素前原创 2018-01-12 15:22:29 · 995 阅读 · 0 评论 -
java实现单例模式的几种方式
我们知道实现单例模式的方式有很多种,如:懒汉式加载、饿汉式、双检锁的方式实现单例,今天主要介绍一下静态内部类、枚举、cas方式实现单例静态内部类的方式实现单例package test;/** * 静态内部类实现单例 * @author lenovo * */public class InnerClassSingle { private InnerClassSin原创 2017-11-26 10:04:06 · 375 阅读 · 0 评论 -
简单实现java中ArrayList
ArrayList实现了一个可变长度数组,ArrayList这个对象包含一个数组,以及当前数组添加的元素个数,以及添加元素个数和数组长度一样的时候将原数组复制到新数组。代码如下。package test;import java.util.Iterator;import java.util.NoSuchElementException;/** * 实现自己的ArrayList *原创 2017-12-09 21:39:32 · 670 阅读 · 0 评论 -
Java内存模型
Java内存模型即Java Memory Model,简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型,所以JMM是隶属于JVM的。如果我们要想深入了解Java并发编程,就要先理解好Java内存模型。Java内存模型定义了多线程之间共享变量的可见性以及如何在需要的时候对共享变量进行同步。原始的Java内存模型效率并不是很理想,转载 2017-11-21 09:36:15 · 1655 阅读 · 0 评论 -
Java中HashMap底层实现原理(JDK1.8)源码分析
这几天学习了HashMap的底层实现,但是发现好几个版本的,代码不一,而且看了Android包的HashMap和JDK中的HashMap的也不是一样,原来他们没有指定JDK版本,很多文章都是旧版本JDK1.6.JDK1.7的。现在我来分析一哈最新的JDK1.8的HashMap及性能优化。在JDK1.6,JDK1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一h转载 2017-11-19 17:19:18 · 1215 阅读 · 1 评论 -
hashmap底层实现原理以及常见的面试问题
hashmap算法优劣标准1.分布均匀2.尽量避免冲突关于hashMap的几个问题1、hashing的概念这个是一个hash算法,将Key对象通过hashing的到需要存储值对象的位置bucket。2、HashMap中解决碰撞的方法根据key的hashcode得到存储位置bucket,有可能不同的key得到的位置一样这样就出现了hash碰撞。这样就引入了每一个bucke原创 2017-11-19 10:53:54 · 2716 阅读 · 0 评论 -
一个看似简单的数字交换问题
package test;import java.lang.reflect.Field;/** * 交换两个数字的相关知识点 * 1、Integer a = 1;编译后可以看到装箱操作Integer.valueOf(1); * 2、Integer.valueOf(1) 从缓存数组[-128,127]里取出下标为129的值1; * 3、如果调field.setAccessible(t原创 2017-11-13 23:25:47 · 346 阅读 · 0 评论 -
java之ThreadLocal
1、概述ThreadLocal类用来提供线程内部的局部变量。这些变量在多线程环境下访问(通过get或set方法访问)时能保证各个线程里的变量相对独立于其他线程内的变量,ThreadLocal实例通常来说都是private static类型。 总结:ThreadLocal不是为了解决多线程访问共享变量,而是为每个线程创建一个单独的变量副本,提供了保持对象的方法和避免参数传递的复杂原创 2017-10-12 14:35:25 · 277 阅读 · 0 评论 -
java动态代理
spring中最重要的两个特性,1)IOC 2)AOP,而AOP最核心的技术就是java动态代理。动态代理原理:JVM在内存中生成字节码文件(如下图),然后通过类加载器加载这个class文件在JVM方法区生成Class对象。其中类加载器加载class文件有两种方式。1)new 对象的时候隐式方式加载 2)通过Class.forName方式。通过持久化动态代理类发现,生成的动态代理类有三原创 2017-10-08 21:41:45 · 216 阅读 · 0 评论 -
java之静态代理
接口类package proxy;public interface People { public void study();}代理类和被代理类package proxy;/** * 被代理的类 * @author lenovo * */public class Student implements People{ @Override public void原创 2017-10-08 21:08:12 · 240 阅读 · 0 评论 -
java枚举实现命名空间层级限定
实现思路:通过递归调用实现枚举限定命名空间枚举类:Typepublic enum Type { China(null, "中国"), Chongqing(China, "重庆"), Yuzhongqu(Chongqing, "渝中区"); private Type parent; private String area; private Type(Type parent, Str原创 2017-09-27 17:15:22 · 1472 阅读 · 0 评论 -
五种IO模型详解
在《Unix网络编程》一书中提到了五种IO模型,分别是:阻塞IO、非阻塞IO、多路复用IO、信号驱动IO以及异步IO。下面就分别来介绍一下这5种IO模型的异同。1.阻塞IO模型 最传统的一种IO模型,即在读写数据过程中会发生阻塞现象。 当用户线程发出IO请求之后,内核会去查看数据是否就绪,如果没有就绪就会等待数据就绪,而用户线程就会处于阻塞状态,用户线程交出CPU。当数据就绪之后,内核会将数据...转载 2018-03-20 11:26:52 · 46094 阅读 · 3 评论
分享