
面试
JACKPENG.
stay hungry,stay foolish!
展开
-
【一】类的生命周期
java类的生命周期就是指一个class文件(java源文件编译后的文件)从加载到卸载的全过程。目录1.加载2.连接(1)验证:(2)准备:(3)解析:3.初始化4.使用(1)对象实例化:(2)垃圾收集:(3)对象的终结:5.类卸载1.加载我们编写一个java的源文件,经过编译后生成一个后缀名为.class的文件,这结合四字节...原创 2019-02-27 16:47:18 · 1214 阅读 · 2 评论 -
【十八】常见排序算法
以下都是内部排序:public class Sort {public static void main(String[] args) {int []a = {2,3,1,4,7,8,6,5,0};int []b = {1,2,3,4};//directChooseSort(a);//bubbleS...原创 2019-03-01 20:49:48 · 245 阅读 · 0 评论 -
【十七】常用的设计模式
目录一、单例模式1、饿汉式:2、懒汉式:3、内部类的方式:4、为什么使用单例模式?二、代理模式1、静态代理2、动态代理①JDK动态代理②Cglib代理③动态代理的选用三、工厂模式1、简单(静态)工厂类2、使用反射的简单工厂3、多方法工厂(常用)4、普通工厂(非静态方法获取对象的实例)5、抽象工厂(在普通工厂的基础上添加多个产品)...原创 2019-03-01 20:45:36 · 226 阅读 · 0 评论 -
【十六】redis
什么是redis?Redis 是一个基于内存的高性能key-value数据库。一、启动方式:①前端启动 ./redis-server②后端启动 ./redis-server redis.conf关闭:./redis-cli shutdownredis自带客户端: ./redis-cli -h 127.0.0.1 -p 6379(默认不需要密码认证,如果需要认证,那么接...原创 2019-02-28 18:31:24 · 245 阅读 · 0 评论 -
【十五】Spring
目录一、IOC与DI二、AOPAspectJ的AOP与Spring的区别三、事务的传播行为四、Spring 声明式事务和编程式事务五、@Autowire和@Resource的区别一、IOC与DIIOC和DI是一个概念,依赖注入,即当某个角色需要另外一个角色协助的时候,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在spring中,创建被调用者的工作不再...原创 2019-02-28 18:24:11 · 197 阅读 · 0 评论 -
【十四】struts2与spring mvc的工作原理及区别
目录一、Struts2的工作原理二、Spring MVC的工作原理1)整体流程2)核心流程三、Struts2与Spring的区别一、Struts2的工作原理1、客户端(HttpServletRequest)发送请求2、请求经过过滤器((可选过滤器)-->StrutsPrepareAndExecuteFilter(核心过滤器,struts1的核心过滤器是Fi...原创 2019-02-28 18:10:47 · 366 阅读 · 0 评论 -
【十三】Java SE中的一些常见问题
目录一、异常处理二、comparable与comparator1、实现Comparable:2、实现Comparator接口:三、Java编译时与运行时四、hashCode()与equals()方法五、finalize方法六、面向对象、面向接口编程七、String、StringBuffer、StringBuilder一、异常处理Error是程序无...原创 2019-02-28 17:57:45 · 511 阅读 · 0 评论 -
【十二】NIO
目录一、NIO与IO的区别二、NIO的缓冲区1、缓冲区(Buffer):2、缓冲区存取数据的两个核心方法:3、缓冲区中的四个核心属性:4、直接缓冲区与非直接缓冲区:5、常用的一些方法:三、NIO的通道四、NIO的阻塞式与非阻塞式1、阻塞式:1)例1:2)例2:2、非阻塞式:五、总结一、NIO与IO的区别NIO面向缓冲区的、基于通道(...原创 2019-02-28 11:28:26 · 268 阅读 · 0 评论 -
【十一】常见容器
目录一、hashMap,hashTable,ConcurrentHashMap,hashSet1、HashTable2、HashMap3、ConcurrentHashMap4、hashSet二、TreeMap与TreeSet比较三、ArrayList LinkedList Vector的区别四、使用迭代器遍历ArrayList的时候修改List报Concurren...原创 2019-02-28 11:09:26 · 588 阅读 · 0 评论 -
【十】与线程相关的一些其他问题
一、创建执行线程的三种方法①继承Thread类并且重写run()方法②实现Runnable接口并且重写run()方法③实现Callable接口并且重写run()方法执行 Callable 方式,需要 FutureTask 实现类的支持,用于接收运算结果。FutureTask 是Future 接口的实现类eg:public class TestCallable {...原创 2019-02-28 10:53:19 · 199 阅读 · 0 评论 -
【九】线程副本ThreadLocal,及WeakHashMap
实现多线程安全的三种方法,1. 使用锁机制 synchronize、lock方式:为资源加锁,可参考我前面文章。2. 使用 java.util.concurrent 下面的类库:有JDK提供的线程安全的集合类:AtomicInteger、AtomicStampedReference、ConcurrentHashMap、CopyOnWriteArrayList、ReentrantLock,F...原创 2019-02-28 10:41:16 · 876 阅读 · 0 评论 -
【八】java.util.concurrent包下的一些类
一、同步锁lock、及其一些常用实现类同步锁lock,注意(与synchronized不同点):1)使用lock无论如何都要手动释放锁(否则会发生死锁),所以将其放在finally块中,而synchronized离开块后会自动释放锁,一般不会发生死锁2)Lock可以让等待锁的线程响应中断,在持有锁的线程长时间不释放锁时,可以中断等待锁的线程去干别的事(通过lock.lockInterr...原创 2019-02-28 10:25:50 · 333 阅读 · 0 评论 -
【七】线程及线程池
一、线程的生命周期:*start()开启一个新的线程,只能调用一次,run()方法不会开启一个新的线程,只是简单的调用方法。* currentThread()获取当前的线程* getName()获取线程的名称* setName()设置线程的名称* yield()调用此方法的线程释放当前的CPU执行权,注意:但是当前线程可能还会抢占到CPU资源* join()在A线...原创 2019-02-28 10:05:58 · 192 阅读 · 0 评论 -
【六】可见性及原子性
一、可见性问题:前一篇文章大概解释了JMM,此时若有两个线程A,B,A读取了变量x的值,同时线程B对主内存中的变量x进行修改,B需要先将其读入自己的工作内存,在自己的工作内存中对变量x进行修改之后,再写入到主内存中,若此时cpu一直处于占用状态,那么修改的x变量对于A是不可见的(每个线程有自己的工作内存),此时就出现了可见性问题。可以使用volatile关键字解决。volatile 关键字...原创 2019-02-27 18:16:51 · 249 阅读 · 0 评论 -
【五】Java内存模型(JMM)
Java Memory Model (JAVA 内存模型)描述线程之间如何通过内存(memory)来进行交互。 具体说来, JVM中存在一个主存区(Main Memory或Java Heap Memory),对于所有线程进行共享,而每个线程又有自己的工作内存(Working Memory),工作内存中保存的是主存中某些变量的拷贝,线程对所有变量的操作并非发生在主存区,而是发生在工作内存中,而线程之...原创 2019-02-27 17:21:13 · 241 阅读 · 0 评论 -
【四】Java运行时数据区
最近在看一些面试的相关问题,发现自己对java底层变量内存的分配理解不是很透彻,于是网上各种找资料,看了许多篇别人的博客,于是自己也整理了一下,下面分享给各位:堆中Java虚拟机的自动垃圾回收:引用变量是普通的变量,定义时在栈中分配,引用变量在程序运行到其作用域之外后被释放。而数组和对象本身在堆中分配,即使程序运行到使用 new 产生数组或者对象的语句所在的代码块之外,数组和对象...原创 2018-06-02 09:53:32 · 1655 阅读 · 0 评论 -
【三】JVM垃圾回收机制
目录一、触发对象回收的条件二、垃圾对象的判定:1、引用计数器算法2、根搜索算法三、引用类型1、强引用:2、软引用:3、弱引用(weak reference):4、虚引用(PhantomReference):四、垃圾回收算法:1、标记—清除算法:2、复制算法3、标记/整理算法:4、以上三种算法比较5、分代收集算法(大部分的回收都是针对...原创 2019-02-27 17:05:18 · 321 阅读 · 0 评论 -
【二】ClassLoader及双亲委托机制
1、Java语言系统自带有三个类加载器:- Bootstrap ClassLoader 最顶层的加载类,主要加载核心类库,%JRE_HOME%\lib下的rt.jar、resources.jar、charsets.jar和class等。另外需要注意的是可以通过启动jvm时指定-Xbootclasspath和路径来改变Bootstrap ClassLoader的加载目录。比如java -Xboo...原创 2019-02-27 16:53:51 · 271 阅读 · 0 评论 -
【十九】数据库-事务的特性及隔离级别
目录一、事务的四大特性⑴ 原子性(Atomicity)⑵ 一致性(Consistency)⑶ 隔离性(Isolation) ① Serializable (串行化): ② Repeatable read (可重复读): ③ Read committed (读已提交): ④ Read uncommitted (读未提交):⑷ 持久性(Durabili...原创 2019-03-04 21:15:25 · 260 阅读 · 0 评论