Java面试总结
文章平均质量分 74
SCU阳光
在校学生
展开
-
java单例模式singleton方法总结
Java中的单例模式的几种实现方法一.什么是单例模式?二. 单例模式的特点三. 单例模式VS静态类四. 单例模式的5种实现方式五.解决反射暴力破解单例模式问题原创 2017-10-26 21:23:13 · 1204 阅读 · 1 评论 -
Java内存模型之——重排序
重排序 重排序是编译器和处理器为了优化性能而对执行执行的顺序进行的重排序。现在大多数的处理器都会采用将指令乱序执行的方法。重排序的好处(在条件允许的情况下):直接运行当前能够立即执行的后续指令,避开获取下一条指令所需数据时造成的等待,提高处理器执行的效率。 在上面提到的“条件允许”是所涉及到的数据依赖性。数据依赖性如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作...原创 2018-03-03 16:18:04 · 328 阅读 · 0 评论 -
java可重入锁(ReentrantLock)的实现原理
转载自:http://blog.csdn.net/yanyan19880509/article/details/52345422因为这个博主写得太好了。太佩服了。前言相信学过java的人都知道 synchronized 这个关键词,也知道它用于控制多线程对并发资源的安全访问,兴许,你还用过Lock相关的功能,但你可能从来没有想过java中的锁底层的机制是怎么实现的。如果真是这样,而且你有兴趣了解,...转载 2018-03-03 16:55:55 · 1780 阅读 · 0 评论 -
一张表里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把mysql重启,再insert一条记录,这条记录的ID是18还是15 ?
一般情况下,我们创建的表的类型是InnoDB,如果新增一条记录(不重启mysql的情况下),这条记录的id是18;但是如果重启(文中提到的)MySQL的话,这条记录的ID是15。因为InnoDB表只把自增主键的最大ID记录到内存中,所以重启数据库或者对表OPTIMIZE操作,都会使最大ID丢失。 但是,如果我们使用表的类型是MylSAM,那么这条记录的ID就是18。因为MylSAM...原创 2018-03-06 15:13:05 · 10551 阅读 · 2 评论 -
mysql里记录货币用什么字段类型好?
在java的开发中,货币在数据库中MySQL常用Decimal和Numric类型表示,这两种类型被MySQL实现为同样的类型。他们被用于保存值,该值的准确精度是极其重要的值,例如与金钱有关的数据。当声明一个类是这些类型之一时,精度和规模的能被(并且通常是)指定;例如:salary DECIMAL(9,2)在这个例子中,9(precision)代表将被用于存储值的总的小数位数,而2(scale)代表...原创 2018-03-06 16:42:45 · 66532 阅读 · 1 评论 -
什么是进程?什么是线程?进程与线程的区别?
目录什么是进程?什么是线程?为什么要有线程?进程与线程的区别?进程与线程的选择取决条件?什么是进程?什么是线程?进程:进程是并发执行程序在执行过程中资源分配和管理的基本单位(资源分配的最小单位)。进程可以理解为一个应用程序的执行过程,应用程序一旦执行,就是一个进程。每个进程都有自己独立的地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据...原创 2018-07-20 10:03:57 · 12941 阅读 · 0 评论 -
线程的生命周期及五种基本状态
关于Java中线程的生命周期,首先看一下下面这张较为经典的图: 上图中基本上囊括了Java中多线程各重要知识点。掌握了上图中的各知识点,Java中的多线程也就基本上掌握了。主要包括:Java线程具有五中基本状态新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread();就绪状态(Runnable):当调用线程对象的sta...原创 2018-07-20 10:17:59 · 1297 阅读 · 0 评论 -
Thread类中的方法:join()、sleep()、yield()之间的区别
目录1. Thread类中的常用方法简介2. Join()方法3. Sleep() 方法:不会释放锁4. Yield()方法:线程让步 不会释放锁1. Thread类中的常用方法简介首先,先看一下Thread类中的常见方法:最主要的是区分其中join()、sleep()、yield()的用法区别 2. Join()方法Thread的非静态方法join(...原创 2018-07-20 11:47:28 · 24193 阅读 · 5 评论 -
Java中如何安全终止一个线程?
在最初的JDK版本中,Thread类提供了一个线程终止的方法stop()方法,但是现在在JDK源码中发现,stop()方法已经被废弃。主要原因是:stop()方法太过暴力。强制终止一个正在执行的线程。这样的话会造成一些数据不一致的问题。 现在常用的是线程中断的方法:严格的讲,线程中断不会使线程立即退出,而是给线程发送一个通知,告诉目标线程,有人需要你退出啦!至于目标线程接到通知后如果处理,...原创 2018-07-20 16:37:16 · 12359 阅读 · 4 评论 -
Java基础之字符串创建于存储的机制
今天在牛客网上做题,基础题部分竟然做的很差。其中有一道题就是字符串的创建和存储机制。然后查阅了相关资料,将知识点做一个整理。先看一下博客上的题目:然后我就写了一个测试程序代码:程序中定义了两个字符串常量,字符串对象实例,以及字符数组,。将使用 == 和 equals()对这两个对象进行比较。结果如下: 下面就说一下原理:在java中字符串的声明与初始化有如下几种...原创 2018-07-26 12:50:50 · 316 阅读 · 0 评论 -
Java集合---ConcurrentHashMap原理分析
一、背景:线程不安全的HashMap 因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。 效率低下的HashTable容器 HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下HashTable的效率非常低下。因为当一个线程访问HashTable的同步方法时,其他...转载 2018-02-28 17:23:34 · 146 阅读 · 0 评论 -
TCP三次握手与四次挥手过程解析
TCP三次握手和四次挥手的全过程 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种表示:SYN(synchronous建立连接)ACK(acknowledgement 表示响应、确认)PSH(push表示有DATA数据传输)FIN(finish关闭连接)RST(reset表示连接重置)URG(urgent紧急指针字段值有效)三...原创 2018-02-28 15:37:26 · 614 阅读 · 0 评论 -
Java多线程:notify/notifyAll/wait/sleep在多线程中的区别于使用
java多线程,java并发编程,wait()和sleep()的区别,notify()和notifyAll的区别原创 2017-11-20 16:35:24 · 679 阅读 · 0 评论 -
基础类型(Primitives)与封装类型(Wrappers)的区别
一、传递方式不同封装类是引用类型。基本类型(原始数据类型)在传递参数时都是按值传递,而封装类型是按引用传递的(其实“引用也是按值传递的”,传递的是对象的地址)。由于包装类型都是不可变量,因此没有提供改变它值的方法,增加了对“按引用传递”的理解难度。int是基本类型,直接存放数值;Integer是类,产生对象时用一个引用指向这个对象。二、封装类可以有方法和属性封装类可以有方法和属性,利用这原创 2018-01-11 20:32:21 · 5706 阅读 · 0 评论 -
Java中递归与迭代的区别
Java中递归与迭代的区别 在找工作面试的过程中,遇到这样一个问题:递归与迭代的区别?当时感觉这个基础的问题回答的很差,值回答了简单的层面意思。所以,回来就查阅资料总结了一下。参考博客:http://blog.csdn.net/laoyang360/article/details/78558601. 基本概念 递归:在程序中,一个函数调用自身的编程方法称为递归。【函数自己调用自己】原创 2018-01-31 11:19:33 · 2271 阅读 · 1 评论 -
Java集合类解析
出自:https://www.cnblogs.com/leeplogs/p/5891861.html一、集合与数组数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用。集合(只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用。二、层次关系如图所示:图中,实线边框的是实现类,折线边框的转载 2018-02-01 16:39:43 · 247 阅读 · 0 评论 -
HashMap原理深度解析
HashMap的基本原理:HashMap是基于哈希算法,然后调用get()和put()方法进行数据的读取和存入。首先看一下HashMap的存储形式:数据的存储put()方法: 1. 当我们将键值对传递给HashMap的put()方法时,它就会调用对象的hashCode()方法计算对应的hashCode值,根据hashCode值找到对应的bucket位置来进行存储对象。原创 2018-01-25 19:53:10 · 724 阅读 · 4 评论 -
HashMap与HashTable的区别
HashMap与HashTable有什么区别?在面试中经常会问到这样的问题。于是,通过查阅一些资料,总结一下写下这篇博客。区别1:两者诞生的时间 不同。 HashTable产生于JDK1.1,而HashMap产生于JDK1.2。从时间上来说,HashMap要比HashTable出现得晚一些。区别2:类的继承体系不同可以看一下下面两幅图(HashMap和HashTable的类继承图)原创 2018-01-25 22:01:37 · 379 阅读 · 0 评论 -
List、set、Map的底层实现原理
本文主要是参考了网上一些对java集合讲解的比较详细博客进行归纳总结,下面对java集合中几个比较常用的类归纳分析。ArrayList实现原理要点概括参考文献: http://zhangshixi.iteye.com/blog/674856l https://www.cnblogs.com/leesf456/p/5308358.htmlArrayList原创 2018-02-04 10:02:49 · 56028 阅读 · 4 评论 -
java中的栈、堆以及两者的区别
Java中的栈、堆、堆栈的区别Java内存分为栈内存和堆内存,都是java用来在Ram中存放数据的地方。与C++不同,java自动管理栈和堆,程序员不能直接的设置栈和堆。 1. 栈Java中的数据类型有两种,前面我已经讲过。基本数据类型的定义是通过如: 诸如这种形式的定义,称为自动变量。值得注意的是,自动变量存储的是字面的值,不是类的实例(即不是类的引用),这里并没有类的存原创 2018-01-29 15:55:14 · 296 阅读 · 0 评论 -
java中文件的读取实现,以及用到哪些类?
Java中读文件的代码实现,以及用到哪些类?在java代码中进行文件的读操作,一般使用FileReader,InputStreamReader和BufferedReader类进行操作。其中最重要的类似InputStreamReader,它是字节转化为字符的桥梁。比如读取文件——按照字节格式读取 比如读取文件——按照字符读取 比如文件读取——按照行读取 具体详细原创 2018-01-29 21:31:12 · 1234 阅读 · 0 评论 -
并发工具类:CountDownLatch(倒计时器)
CountDownLatch含义CountDownLatch: 从字面以上的意思是“门闩到计数”。也就是让一个线程或者多个线程等待其他线程结束后再继续自己的操作,类似加强版join(). 通过一个简单的应用场景来说明一下上面一句话的意思: 比如火箭发射,为了保证火箭发射万无一失,必须在火箭发射之间进行各项的检查初始化工作。假设在火箭发射之间进行100项的初始化检查工作(此...原创 2018-07-22 11:52:34 · 505 阅读 · 0 评论