![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 87
「已注销」
这个作者很懒,什么都没留下…
展开
-
001java面试笔记——【java基础篇】面试总结的java面试题
第一章:Java基础篇1、谈谈你对java的认识 这个问题很大,很抽象,要回答好确实不容易。宏观上面来说,从C语言面向过程到C++面向对象到java语言纯面向对象这一发展过程都是为了提高公用性、重用性、可读性,降低耦合性。java程序是对象的集合,是一系列带有方法的对象组合,这些方法以其他对象为参数,并发送消息给其他对象。这样由于java中的对象是由状态、行为和标识组成。状原创 2016-08-20 10:56:59 · 1075 阅读 · 0 评论 -
动态代理proxy与CGLib的区别
昨天被人问及动态代理与CGlib的区别,赶紧回顾一下:什么是代理?静态代理与动态代理静态代理实例JDK动态代理实例CGLib 简介CGLib 与JDK动态代理的区别 代理模式是Java中常见的一种模式,英文名字叫走Proxy或者Surrogate,代理的本意是一个人代表另一个人,或者一个机构代表另一个机构,采取行动,因而,代理和现实生活中的中介有很大的类似,你原创 2016-08-20 08:31:13 · 2307 阅读 · 1 评论 -
Java动态代理的实现
动态代理作为代理模式的一种扩展形式,广泛应用于框架(尤其是基于AOP的框架)的设计与开发,本文将通过实例来讲解Java动态代理的实现过程。 友情提示:本文略有难度,读者需具备代理模式相关基础知识,。 通常情况下,代理模式中的每一个代理类在编译之后都会生成一个class文件,代理类所实现的接口和所代理的方法都被固定,这种代理被称之为静态代理(Sta原创 2016-08-20 08:23:03 · 557 阅读 · 0 评论 -
Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM)
class文件简介及加载 Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中,解析.class 文件内的信息,生成对应的 Class对象: class字节码文件是根据JVM虚拟机规范中规定的原创 2016-08-19 23:40:54 · 2425 阅读 · 4 评论 -
java动态代理(JDK和cglib)
JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 按照代理的创建时期,代理类可以分为原创 2016-08-19 23:19:42 · 405 阅读 · 0 评论 -
Java中原子类的实现
Java提供的原子类是靠sun基于CAS实现的,CAS是一种乐观锁。关于乐观锁与悲观锁。 原子变量类相当于一种泛化的volatile变量,能够支持原子的和有条件的读-改-写操作。AtomicInteger表示一个int类型的值,并提供了get和set方法,这些Volatile类型的int变量在读取和写入上有着相同的内存语义。它还提供了一个原子的compareAndSet方法(如果该方法成原创 2016-08-19 22:30:41 · 2366 阅读 · 0 评论 -
java中的原子操作类AtomicInteger及其实现原理
/** * 一,AtomicInteger 是如何实现原子操作的呢? * * 我们先来看一下getAndIncrement的源代码: * public final int getAndIncrement() { * for (;;) { *原创 2016-08-19 22:28:20 · 2937 阅读 · 0 评论 -
深入理解Arrays.sort()
Arrays.sort(T[], Comparator c) 方法用于对象数组按用户自定义规则排序.官方Java文档只是简要描述此方法的作用,并未进行详细的介绍,本文将深入解析此方法。1. 简单示例sort方法的使用非常的简单明了,下面的例子中,先定义一个比较Dog大小的Comparator,然后将其实例对象作为参数传给sort方法,通过此示例,你应该能够快速掌握Arrays.sor原创 2016-08-19 19:58:01 · 828 阅读 · 0 评论 -
java.util.Arrays
java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的。具有以下功能:² 给数组赋值:通过fill方法。² 对数组排序:通过sort方法,按升序。² 比较数组:通过equals方法比较数组中元素值是否相等。² 查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作。 import java.原创 2016-08-19 19:55:05 · 571 阅读 · 0 评论 -
java应届生面试考点收集
这些知识点来自于各大公司校招招聘的电话面试 未完待续 JavaSE面向对象封装、继承、多态(包括重载、重写) 常见区别String、StringBuffer、StringBuilder的区别:http://www.cnblogs.com/dolphin0520/p/3778589.htmlArrayList、L原创 2016-08-30 10:37:48 · 18209 阅读 · 3 评论 -
Java初始化顺序
1 无继承情况下的Java初始化顺序:class Sample{ Sample(String s) { System.out.println(s); } Sample() { System.out.println("Sample默认构造函数被调用");转载 2016-09-10 09:17:47 · 291 阅读 · 0 评论 -
HashMap的实现原理
1. HashMap概述:HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。2. HashMap的数据结构:在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMa转载 2016-07-24 21:11:49 · 295 阅读 · 0 评论 -
BIO,NIO,AIO
关于BIO | NIO | AIO的讨论一直存在,有时候也很容易让人混淆,就我的理解,给出一个解释:BIO | NIO | AIO,本身的描述都是在Java语言的基础上的。而描述IO,我们需要从两个层面:编程语言实现原理底层基础从编程语言层面BIO | NIO | AIO 以Java的角度,理解,linux c里也有AIO的概念(库),这些概念不知道什么原因被炒火起转载 2016-08-30 19:35:53 · 329 阅读 · 0 评论 -
java解惑——易错知识点归纳总结
一. Switch1.其能接受的数据类型有四个,char , byte, short, int2.Default 可放在switch中的任何一个地方,但只有给定的条件匹配不到时,才会执行3.Case,default语句如果执行完要跳出,必须用break, 没的话会向下继续执行(如果碰到case语句则直接进入执行)实例1:[java] view plain cop原创 2016-08-21 07:46:19 · 1727 阅读 · 0 评论 -
Object类
java.lang.Object java.lang包在使用的时候无需显示导入,编译时由编译器自动导入。 Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类。 Object类是Java中唯一没有父类的类。 其他所有的类,包括标准容器类,比如数组,都继承了Object类中的方法。 Object类中的方法 构造方法原创 2016-08-21 15:55:09 · 259 阅读 · 0 评论 -
Java 数组在内存中的结构
Java中的数组存储两类事物: 原始值(int,char,...),或者引用(对象指针).当一个对象通过 new 创建,那么将在堆内存中分配一段空间,并且返回其引用(指针).对于数组,也是同样的方式.1. 一维数组[java] view plain copyint arr[] = new int[3]; int[] arr 指向转载 2016-09-29 22:42:40 · 3445 阅读 · 0 评论 -
Java 8新特性
现在,是时候把所有Java 8的重要特性收集整理成一篇单独的文章了,希望这篇文章能给你带来阅读上的乐趣。开始吧!目录结构介绍Java语言的新特性2.1 Lambdas表达式与Functional接口2.2 接口的默认与静态方法2.3 方法引用2.4 重复注解2.5 更好的类型推测机制2.6 扩展注解的支持Java编译器的新特性转载 2016-09-25 14:19:33 · 466 阅读 · 0 评论 -
Arrays用法整理
本文将整理 java.util.Arrays 工具类比较常用的方法: 本文介绍的方法基于JDK 1.7 之上。 1. asList方法 @SafeVarargs public static T> ListT> asList(T... a) { return new ArrayList(a); } 使用该方法可以返回一个固定大小的List,如:转载 2016-09-25 14:05:25 · 14488 阅读 · 0 评论 -
java的反射机制浅谈
一、java的反射机制浅谈 最近研究java研究得很给力,主要以看博文为学习方式。以下是我对java的反射机制所产生的一些感悟,希望各位童鞋看到失误之处不吝指出。受到各位指教之处,如若让小生好好感动,说不定会请各位吃饭哦! 1.何谓反射机制 根据网文,java中的反射机制可以如此定义:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道转载 2016-09-25 13:31:46 · 323 阅读 · 0 评论 -
有return的情况下try catch finally的执行顺序
结论:1、不管有木有出现异常,finally块中代码都会执行;2、当try和catch中有return时,finally仍然会执行;3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;4、finally转载 2016-09-25 11:03:20 · 352 阅读 · 0 评论 -
NIO与传统IO的区别
传统的socket IO中,需要为每个连接创建一个线程,当并发的连接数量非常巨大时,线程所占用的栈内存和CPU线程切换的开销将非常巨大。使用NIO,不再需要为每个线程创建单独的线程,可以用一个含有限数量线程的线程池,甚至一个线程来为任意数量的连接服务。由于线程数量小于连接数量,所以每个线程进行IO操作时就不能阻塞,如果阻塞的话,有些连接就得不到处理,NIO提供了这种非阻塞的能力。转载 2016-09-02 19:47:11 · 243 阅读 · 0 评论 -
Hashcode的作用
关于Hashcode的作用 总的来说,Java中的集合(Collection)有两类,一类是List,再有一类是Set。前者集合内的元素是有序的,元素可以重复;后者元素无序,但元素不可重复。 要想保证元素不重复,可两个元素是否重复应该依据什么来判断呢?这就是Object.equals方法了。但是,如果每增加一个元素就检查一 次,那么当元素很多时,后添加到集合中的元素比较的转载 2016-09-01 16:08:20 · 245 阅读 · 0 评论 -
Object方法
Object是所有类的父类,任何类都默认继承Object。Object类到底实现了哪些方法?1.clone方法保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。主要是JAVA里除了8种基本类型传参数是值传递,其他的类对象传参数都是引用传递,我们有时候不希望在方法里讲参数改变,这是就原创 2016-09-01 16:00:19 · 256 阅读 · 0 评论 -
java5、java6、java7、java8的新特性
Java5:1、泛型 Generics: 引用泛型之后,允许指定集合里元素的类型,免去了强制类型转换,并且能在编译时刻进行类型检查的好处。 Parameterized Type作为参数和返回值,Generic是vararg、annotation、enumeration、collection的基石。 A、类型安全原创 2016-08-21 16:36:38 · 24857 阅读 · 4 评论 -
四种Java引用浅解
最近研究Java Cache实现,发现使用到了软引用(SoftReference),不太理解,查阅了JDK文档、代码以及几篇文章。做个小结,如有错误,欢迎指正。之所以想学习一下Java的几种引用类型,原因有两个:理解Java Cache实现、学习Java引用与Java垃圾回收机制的关系内存资源是有限的,需要合理的利用。Cache不是仅仅HashMap那么简单,Java引用与Ja原创 2016-08-21 16:06:53 · 608 阅读 · 0 评论 -
Java源码:ArrayList的实现原理
1. ArrayList概述: ArrayList是List接口的可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。 每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向ArrayList中不断添加元素,其容量原创 2016-07-28 22:22:11 · 457 阅读 · 0 评论 -
java源码:hashSet
1. HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。 2. HashSet的实现: 对于HashSet而言,它是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,因此HashSet原创 2016-07-28 22:40:49 · 287 阅读 · 0 评论 -
Mybatis缓存
MyBatis缓存分为一级缓存和二级缓存一级缓存MyBatis的一级缓存指的是在一个Session域内,session为关闭的时候执行的查询会根据SQL为key被缓存(跟mysql缓存一样,修改任何参数的值都会导致缓存失效)1)单独使用MyBatis而不继承Spring,使用原生的MyBatis的SqlSessionFactory来构造sqlSession查询,是可以使用以原创 2016-08-16 11:24:37 · 633 阅读 · 0 评论 -
Java异常分类
一、基本概念看java的异常结构图 Throwable是所有异常的根,java.lang.ThrowableError是错误,java.lang.ErrorException是异常,java.lang.Exception 二、Exception一般分为Checked异常和Runtime异常,所有RuntimeExce原创 2016-08-16 10:04:40 · 305 阅读 · 0 评论 -
java parseInt和valueOf区别
他们返回类型的不同是最大的原因: static int parseInt(String s) 将字符串参数作为有符号的十进制整数进行分析。 static Integer valueOf(int i) 返回一个表示指定的 int 值的 Integer 实例。 static Integer valueOf(String s)原创 2016-08-04 11:10:34 · 820 阅读 · 0 评论 -
search-a-2d-matrix
题目描述Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:Integers in each row are sorted from left to right.The fir原创 2016-07-19 11:09:24 · 273 阅读 · 0 评论 -
System.arrayCopy (java 数组复制) 深入解析
先看ArrayList源码中数组复制的代码:其实ArrayList 就是一个数组的形式存放数据的。没有高深的地方。他的性能在于他的索引能力,正因为他是数组形式,所以索引元素的时候他表现得非常的快速成,试想一下,只要知道这个元素的索引,E[2] 你看对像就出来了。这就是ArrayList 最突出的地方。让我们来看下ArrayList 内部数组是如何自我Copy的。原创 2016-07-28 22:16:12 · 1276 阅读 · 0 评论 -
Two Sum
题目描述Given an array of integers, find two numbers such that they add up to a specific target number.The function twoSum should return indices of the two numbers such that they add up to原创 2016-07-27 19:32:55 · 315 阅读 · 0 评论 -
word-break
题目:Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words.For example, givens ="leetcode",dict =["le原创 2016-07-27 08:50:59 · 353 阅读 · 0 评论 -
java面试汇总
一、Java基础1.String类为什么是final的。2.HashMap的源码,实现原理,底层结构。3.反射中,Class.forName和classloader的区别4.session和cookie的区别和联系,session的生命周期,多个服务部署时session管理。5.Java中的队列都有哪些,有什么区别。6.Java的内存模型以及GC算法7.Java7、Ja原创 2016-07-24 22:03:52 · 359 阅读 · 0 评论 -
java中String类为什么要设计成final
java中的String是一个非常有趣的类。java中String类被设计成是final的,这个问题也确实困扰我很久,当然到现在为止我还是搞不清楚为什么要设计成final,呵呵。在这里简单记录一下从网上看到的或自己个人理解的一些想法,记录这个并不是为了破译String类的设计意图,而是仅仅用来为讨论和以后进一步学习记录一些东西。下面的一些原因想法或者是从网上查询到的别人的一些观点,而我觉得还有一点原创 2016-07-24 22:00:16 · 918 阅读 · 0 评论 -
java架构师需要的知识
Java程序员进化为架构师掌握的知识一:Java知识1、进制转换2、Java基本数据类型面向对象相关知识3、类、接口、抽象类this关键字、static关键字、final关键字方法的参数传递机制Java垃圾回收机制四种内部类的实现方式方法重写(override)与重载(overload)的联系与区别通过多态实现程序代码的松耦合Java 异常体系详解(原创 2016-07-24 21:15:07 · 457 阅读 · 0 评论 -
开源框架:Apache的DBUtils框架
一、commons-dbutils简介 commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能。因此dbutils成为很多不喜欢hibernate的公司的首选。 commons-dbutilsAPI介绍:org.apa原创 2016-08-16 14:11:10 · 1623 阅读 · 0 评论 -
Java线程面试题 top 50
不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发、调试、优化经验,所以线程相关的问题在面试中经常会被提到。 在典型的Java面试中, 面试官会从线程的基本概念问起, 如:为什么你需要使用线程, 如何创建线程原创 2016-08-16 16:58:45 · 636 阅读 · 0 评论 -
Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权。因为生产者如果不释放对临界资源的占用权,那么消费者就无法消费队列中的商品,就不会让队列有空间,那么生产者就会一直无限等待下去。因此,一般情况下,当队列满时,会让生产者交出对临界原创 2016-08-16 17:01:03 · 582 阅读 · 0 评论