面试宝典
_calm
踏实下来,越努力越幸运!
展开
-
通俗易懂的 “数据库范式(1NF 2NF 3NF BCNF)详解”
数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。范式说明 1.1 第一范式(1NF)无重复的列所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同转载 2017-03-17 17:20:50 · 845 阅读 · 0 评论 -
反射、枚举与单例
通常我们所使用的单例模式,我们都可以使用反射使它不再单例,如下饿汉式的。而枚举类构造的单例模式却无法通过反射构造新的对象。转载 2017-08-06 11:49:21 · 745 阅读 · 0 评论 -
Java HashMap工作原理及实现
简单地说,HashMap 在底层将 key-value 当成一个整体进行处理,这个整体就是一个 Entry 对象。HashMap 底层采用一个 Entry[] 数组来保存所有的 key-value 对,当需要存储一个 Entry 对象时,会根据hash算法来决定其在数组中的存储位置,在根据equals方法决定其在该数组位置上的链表中的存储位置;当需要取出一个Entry时,也会根据hash算法找到其在数组中的存储位置,转载 2017-08-05 15:00:29 · 436 阅读 · 0 评论 -
JAVA线程间通信的几种方式
今天在群里面看到一个很有意思的面试题:“编写两个线程,一个线程打印1~25,另一个线程打印字母A~Z,打印顺序为12A34B56C……5152Z,要求使用线程间的通信。”这是一道非常好的面试题,非常能彰显被面者关于多线程的功力,一下子就勾起了我的兴趣。这里抛砖引玉,给出7种想到的解法。通用代码:import java.util.concurrent.ExecutorService;转载 2017-08-12 21:55:12 · 43094 阅读 · 10 评论 -
Java的三种代理模式
代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法转载 2017-08-05 09:23:57 · 381 阅读 · 0 评论 -
简析TCP的三次握手与四次分手
TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的。转载 2017-08-04 10:49:35 · 341 阅读 · 0 评论 -
乐观锁的一种实现方式——CAS
在深入理解乐观锁与悲观锁一文中我们介绍过锁。本文在这篇文章的基础上,深入分析一下乐观锁的实现机制,介绍什么是CAS、CAS的应用以及CAS存在的问题等。转载 2017-08-08 12:55:56 · 6486 阅读 · 0 评论 -
JAVA 中BIO,NIO,AIO的理解
在高性能的IO体系设计中,有几个名词概念常常会使我们感到迷惑不解。具体如下: 序号问题1什么是同步?2什么是异步?3什么是阻塞?4什么是非阻塞?5什么是同步阻塞?6什么是同步非阻塞?7什么是异步阻塞?8什么是异步非阻塞?散仙转载 2017-03-17 19:44:13 · 349 阅读 · 0 评论 -
最简实例说明wait、notify、notifyAll的使用方法
wait()、notify()、notifyAll()是三个定义在Object类里的方法,可以用来控制线程的状态。转载 2017-03-19 19:13:14 · 566 阅读 · 0 评论 -
SQL的几种连接:内连接、外连接、交叉连接
SQL连接可以分为内连接、外连接、交叉连接。转载 2017-04-07 14:43:00 · 1092 阅读 · 0 评论 -
java递归实现最大公约数和最小公倍数
第一个最大公约数使用的2300年前被发明的欧几里得算法求得,大致原理为:如果有两个非负整数p、q,若q==0,则最大公约数为p;否则,p和q的最大公约数就是p除以q所得的余数和q的最大公约数。第二个最小公倍数更简单公式:最小公倍数=两整数的乘积÷最大公约数关键代码如下://最大公约数(Greatest Common Divisor)publ原创 2017-06-16 09:43:03 · 4273 阅读 · 1 评论 -
HashMap解决hash冲突的方法
在Java编程语言中,最基本的结构就是两种,一种是数组,一种是模拟指针(引用),所有的数据结构都可以用这两个基本结构构造,HashMap也一样。当程序试图将多个 key-value 放入 HashMap 中时,以如下代码片段为例:HashMap m=new HashMap(); m.put("a", "rrr1"); m.put("b", "tt9"); m.put("c", "tt转载 2017-03-16 18:55:33 · 727 阅读 · 0 评论 -
50个Java多线程面试题
注:出自牛客网 http://www.nowcoder.com/discuss/334不管你是新 程序员还是老手,你一定在面试中遇到过有关线程的问题。Java 语言一个重要的特点就是内置了对并发的支持,让 Java 大受企业和程序员的欢迎。大多数待遇丰厚的 Java 开发职位都要求开发者精通多线程技术并且有丰富的 Java 程序开发、调试、优化经验,所以线程相关的问题在面试中经常会被提到转载 2017-03-07 19:31:30 · 954 阅读 · 0 评论 -
Java面试题:如何对HashMap按键值排序
Java中HashMap是一种用于存储“键”和“值”信息对的数据结构。不同于LinkedHashMap,它不会维持插入元素的顺序。因此,在键或值的基础上排序HashMap是一个很难的面试问题,如果你不知道如何解决的话。下面让我们看看如何解决这个问题。1.创建一个简单的HashMap,并插入一些键和值。Map aMap = new HashMap(); //adding keys and原创 2017-03-10 17:57:25 · 7226 阅读 · 0 评论 -
Java锁类型
转载链接在每个锁类型后边线程锁类型1、自旋锁 ,自旋,jvm默认是10次吧,有jvm自己控制。for去争取锁锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。本系列文章将分析JAVA下常见的锁名称以及特性,为大家答疑解惑。转载 2017-03-07 14:00:43 · 6871 阅读 · 0 评论 -
对称加密与非对称加密
(一)对称加密(Symmetric Cryptography)对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。对称加密通常使用的是相对较小的密钥,一般小于256 bit。因为密钥越大,加密越强,但加密与解密的过程越转载 2017-03-10 15:10:05 · 357 阅读 · 0 评论 -
Java中的线程Thread方法之---suspend()和resume()
前篇说到了Thread中的join方法,这一篇我们就来介绍一下suspend()和resume()方法,从字面意义上可以了解到这两个方法是一对的,suspend()方法就是将一个线程挂起(暂停),resume()方法就是将一个挂起线程复活继续执行。首先看一个例子:package cn.edu.ahui;import java.util.Iterator; import java.util转载 2017-03-18 21:45:16 · 2314 阅读 · 0 评论 -
SSH三大框架面试知识点
Struts谈谈你对Struts的理解。答:1.struts是一个按MVC模式设计的Web层框架,其实它就是一个大大的servlet,这个Servlet名为ActionServlet,或是ActionServlet的子类。我们可以在web.xml文件中将符合某种特征的所有请求交给这个Servlet处理,这个Servlet再参照一个配置文件(通常为/WEB-INF/struts-conf转载 2017-03-05 15:09:21 · 34159 阅读 · 4 评论 -
Java 利用枚举实现单例模式
引言单例模式比较常见的实现方法有懒汉模式,DCL模式公有静态成员等,从Java 1.5版本起,单元素枚举实现单例模式成为最佳的方法。Java枚举基本用法枚举的用法比较多,本文主要旨在介绍利用枚举实现单例模式的原理,所以这里也主要介绍一些相关的基础内容。 首先,枚举类似类,一个枚举可以拥有成员变量,成员方法,构造方法。先来看枚举最基本的用法:enum Type{ A,B,C,D;}转载 2017-08-06 14:28:29 · 975 阅读 · 1 评论