java面试题
文章平均质量分 69
福尔摩康
这个作者很懒,什么都没留下…
展开
-
29、CountDownLatch原理以及使用
CountDownLatch的概念CountDownLatch是一个同步工具类,用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时,表示所有的线程都已经...原创 2018-07-17 22:04:00 · 280 阅读 · 0 评论 -
Java设计模式六大原则
1.开闭原则(Open Close Principle)定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 开放-封闭原则的意思就是说,你设计的时候,时刻要考虑,尽量让这个类是足够好,写好了就不要去修改了,如果新需求来,我们增加一些类就完事了,原来的代码能不动则不动。这个原则有两个特性,一个是说“对于扩展是开放的”,另一个是说“对于更改是封闭的”。面对需求,对程...转载 2019-02-02 20:49:15 · 197 阅读 · 0 评论 -
java对象序列化和反序列化的概念
1)什么是对象序列化和反序列化 把对象转换为 字节序列的过程称为 对象的序列化。 把字节序列 恢复为对象的过程称为 对象的反序列化。 对象的序列化主要有两种用途: 1) 把对象的字节序列 永久地保存到硬盘上,通常存放在一个文件中; 2) 在网络上 传送对象的字节序列。2)具体使用场景 在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物...原创 2019-02-01 20:11:30 · 310 阅读 · 0 评论 -
31、为什么要使用多线程?
上几期讲了行程的五张状态,同步工具类,线程池等知识点?但是这些知识点在什么场景下使用呢?使用多线程的场景: 场景一、定时向大量的用户发送邮件。所有的定时任务都是多线程的实现。 场景二、用户注册时候需要短信或则邮件验证。短信和邮件接口比较耗时,前端UI感觉被卡住,这时候一个异步线程去发送邮件或则短信。用户体验会更好。 场景三、你要写一个电商网站,怎么实现双11抢购模型。...原创 2018-07-21 12:50:46 · 287 阅读 · 0 评论 -
27、java的类加载原理二
上一篇文章我们说了,类加载生命周期包括 加载-->验证-->准备-->解析-->初始化-->使用-->卸载 七个阶段我们也详细说明下了加载的过程,这期我们讲解下其他步骤: 验证 验证的目的是为了确保Class文件中的字节流包含的信息符合当前虚拟机的要求,而且不会危害虚拟机自身的安全。不同的虚拟机对类验证的实现可能会有所不同,但大致都会完成...转载 2018-07-14 21:02:33 · 212 阅读 · 0 评论 -
25、java反射面试题
1、java反射机制的作用 1)在运行时判断任意一个对象所属的类; 2)在运行时构造任意一个类的对象; 3)在运行时判断任意一个类所具有的成员变量和方法; 4)在运行时调用任意一个对象的方法;反射就是动态加载对象,并对对象进行剖析。在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法,这种动态获取信息以及动态调用对象方法的功能成为Java反...原创 2018-07-14 14:26:09 · 10886 阅读 · 0 评论 -
24、Java中如何实现一个定时任务
在实际开发中经常用到定时任务,如定时清理数据,备份数据,报表统计等。java中怎么实现定时任务呢?1、通过线程,定时睡眠方法执行定时任务 创建一个thread,然后让它在while循环里一直运行着,通过sleep方法来达到定时任务的效果; new Thread(new Runnable() { @Override public void run() { whil...原创 2018-07-14 10:20:04 · 1316 阅读 · 0 评论 -
26、java的类加载原理
1、编译阶段 Java编译器把 .java编译成 .class文件2、类加载过程 类加载的整个生命周期为从类被加载到虚拟机中开始,到卸载出内存为止,它的整个生命周期包括:加载-->验证-->准备-->解析-->初始化-->使用-->卸载 七个阶段 1)加载,第一个阶段,在加载阶段,虚拟机需要完成以下三件事情通过一个类的全限定名来获取其定义的二进制字节流...原创 2018-07-14 08:43:48 · 217 阅读 · 0 评论 -
30、CyclicBarrier的使用
在29课中我们说了 一个同步工具类CountDownLatch,他是一次性的,使用完毕后,它不能再次被使用。那么有没有可以重发使用的呢?有,这次我们就了解下可以重复使用的同步工具类CyclicBarrier。CyclicBarrier 字面意思是循环栅栏。意思就是一道又一道永远走不完的栅栏。可以这么理解。就是一道道满足一定人数才能放行的栅栏。CyclicBarrier的定义:是一个同步工具...原创 2018-07-19 21:15:24 · 182 阅读 · 0 评论 -
33、volatile
在实际项目使用并不多,但是容易出错。很多人感觉和synchronized差不多,实际上完全不一样。我们看一下两者的区别:volatile保证程序的可见性,这个和synchronize的区别就非常大,首先volatile他并不保证原子性。synchronized可以保证原子性,什么叫原子性呢? 就是多个线程同时操作一个数据或则方法时,他们没有办法同时操作,只有一个操作完毕,另一个才能操作。...原创 2018-07-23 20:54:36 · 177 阅读 · 0 评论 -
tomcat 修改项目发布路径
tomcat默认的而发布路径为 tomcat/webapps/,但是如果这个目录下有一些默认的项目,在tomcat启动的时候会跟着一起加载。如果不想删除这些项目,可以把tomcat发布的路径修改到其他地方。那么怎么修改呢? 找到conf/server.xml在里面找到<Host>标签<Server> <Service> ...原创 2019-03-02 23:59:51 · 2465 阅读 · 0 评论