JavaSE
JacobGo
一只热爱健身的程序猿。
展开
-
OOP和AOP的区别于联系
面向对象的编程(OOP)方法是在面向过程的编程方法基础上进行的改进,而面向方面编程(AOP)方法又是在面向对象编程(OOP)方法的基础上进行改进而来的一种创新的软件开发方法。1、区别:面向领域不同 AOP和OOP是面向不同领域的两种设计思想。 OOP(面向对象编程)针对问题领域中以及业务处理过程中存在的实体及其属性和操作进行抽象和封装,面向对象的核心概念是纵向结构的,其...转载 2018-03-28 09:28:22 · 920 阅读 · 0 评论 -
深入理解Java并发之synchronized实现原理
本文转载自:http://blog.csdn.net/javazejian/article/details/72828483 出自【zejian的博客】关联文章:深入理解Java类型信息(Class对象)与反射机制深入理解Java枚举类型(enum)深入理解Java注解类型(@Annotation)深入理解Java类加载器(ClassLoad转载 2017-11-09 20:03:46 · 375 阅读 · 0 评论 -
为什么HashMap是线程不安全类?
本文转载自:http://blog.csdn.net/mydreamongo/article/details/8960667一直以来只是知道HashMap是线程不安全的,但是到底HashMap为什么线程不安全,多线程并发的时候在什么情况下可能出现问题?HashMap底层是一个Entry数组,当发生hash冲突的时候,hashmap是采用链表的方式来解决的,在对应的数组位置存放链转载 2017-11-06 21:44:40 · 535 阅读 · 0 评论 -
【Java面试题】如何回答GC相关问题
这里借用知乎网友@郭无心 的回答。侵删作者:郭无心链接:https://www.zhihu.com/question/35164211/answer/68265045来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。一个面试官对面试问题的分析这个帖子的背景是今晚看到je上这张贴:大家都来说说自己最讨厌的面试题目吧。,心血来潮写原创 2017-10-28 15:56:18 · 5171 阅读 · 0 评论 -
【Java面试题】之内存泄漏
本文转载自:http://blog.csdn.net/anxpp/article/details/51325838Java的一个重要特性就是通过垃圾收集器(GC)自动管理内存的回收,而不需要程序员自己来释放内存。理论上Java中所有不会再被利用的对象所占用的内存,都可以被GC回收,但是Java也存在内存泄露,但它的表现与C++不同。 JAVA 中的内存管转载 2017-10-28 15:51:10 · 2953 阅读 · 1 评论 -
【Java面试题】之类加载:从面试题分析Java类加载机制
本文内容转载自:http://www.cnblogs.com/javaee6/p/3714716.html1 开门见山class SingleTon { private static SingleTon singleTon = new SingleTon(); public static int count1; public static转载 2017-10-28 15:24:51 · 4738 阅读 · 2 评论 -
【Java面试题】之泛型相关
本文转载自:http://www.cnblogs.com/huajiezh/p/6411123.html1、泛型基本概念1.1、由来泛型是JDK 1.5的一项新特性,在Java语言处于还没有出现泛型的版本时,只能通过Object是所有类型的父类和类型强制转换两个特点的配合来实现类型泛化。例如在哈希表的存取中,JDK 1.5之前使用HashMap的get()方转载 2017-10-28 14:53:21 · 505 阅读 · 0 评论 -
【面试题】Java三大特性封装继承多态总结
本文内容总结于多篇博客,参考到的地方在文中都会一一列出http://www.cnblogs.com/ibalintha/p/3897821.html1.封装封装的定义:首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系为什么需要封装:封装符合面向对象设计原则的第一条:单一性原则,一转载 2017-10-18 22:15:34 · 13955 阅读 · 3 评论 -
Java 理论与实践——处理 InterruptedException
先来看看Thread中三个方法的APIinterruptpublic void interrupt()中断线程。如果当前线程没有中断它自己(这在任何情况下都是允许的),则该线程的 checkAccess 方法就会被调用,这可能抛出 SecurityException。如果线程在调用 Object 类的 wait()、wait(long) 或 wait(long,转载 2017-09-22 15:08:13 · 491 阅读 · 0 评论 -
Collection.unmodefiableMap()方法
public static SortedMap unmodifiableSortedMap(SortedMap m)返回指定有序映射的不可修改视图。此方法允许模块为用户提供对内部有序映射的“只读”访问。在返回的有序映射上执行的查询操作将“读完”指定的有序映射。试图修改返回的有序映射(无论是直接修改、通过其 collection 视图修改,还是通过其 subMap、 headMap 或 tai原创 2017-09-21 15:46:11 · 799 阅读 · 0 评论 -
深入理解Java的final关键字
本文转载自:http://www.cnblogs.com/dolphin0520/p/3736238.html谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字。另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法。下面是本文的目录大纲: 一.final关键字的基本用法转载 2017-09-21 15:04:17 · 455 阅读 · 0 评论 -
Java中守护线程的总结
本文转载自:http://blog.csdn.net/shimiso/article/details/8964414在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 用个比较通俗的比如,任何一个守护线程都是整个JVM中所有非守护线程的保姆:只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;转载 2017-10-24 16:59:36 · 372 阅读 · 0 评论 -
【Java面试题】之Object类中方法详解
之前看到有人分享的面经,面试官先问Object中有什么方法,然后再要求解释每一次方法的作用。先看看Object中有什么方法Object类是Java中所有类的基类。位于java.lang包中,一共有13个方法方法一 Object() 即Object的构造方法大部分情况下,Java中通过形如 new A(args..)形式创建一个属于该类型的对象。其原创 2017-10-25 15:12:30 · 5910 阅读 · 1 评论 -
Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
第一段内容转载自:http://blog.51cto.com/stevex/1284437先来个例子理解一下概念,以银行取款为例:同步 : 自己亲自出马持银行卡到银行取钱(使用同步IO时,Java自己处理IO读写)。异步 : 委托一小弟拿银行卡到银行取钱,然后给你(使用异步IO时,Java将IO读写委托给OS处理,需要将数据缓冲区地址和大小传转载 2018-01-09 14:46:45 · 737 阅读 · 1 评论 -
UTF-8编码规则解析
在将多个(UTF-8)字节数组转换为字符串的时候,可能会发生乱码,这不是因为编码问题。UTF-8是一种变长字节编码方式。对于某一个字符的UTF-8编码,如果只有一个字节则其最高二进制位为0;如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的位数,其余各字节均以10开头。UTF-8最多可用到6个字节。所以,如果一个字符编码成3个字节,但是一个字节数组的结尾可原创 2017-12-28 10:23:06 · 5230 阅读 · 0 评论 -
Java读取大文件的方式比较
最近实习在做数据库导入导出的功能,在导入数据的时候,就要考虑数据文件较大的情况,这种情况下直接将整个文件读入内存是不可取的。本文采用的三种方式:1.缓冲字节流;2.文件通道FileChannel;3.内存文件映射既然不能直接全部读取大文件到内存中,那么就应该把文件分成多个子区域分多次读取。这就会有多种方法可以使用。(1) 文件字节流对文件建立 java.io转载 2017-12-15 16:28:00 · 3031 阅读 · 0 评论 -
Java输入输出流的重定向
最近实习,在做DDB(分布式数据库)的导入导出功能需要对导出的文件从控制台重定向到文件中,所以来复习一下流的重定向功能、package go.jacob.day1207;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.InputStream;import原创 2017-12-07 11:18:12 · 698 阅读 · 0 评论 -
一句话让你了解NIO和IO的异同
下面的解析摘自网友的回答:Channel 通道Buffer 缓冲区Selector 选择器其中Channel对应以前的流,Buffer不是什么新东西,Selector是因为nio可以使用异步的非堵塞模式才加入的东西。以前的流总是堵塞的,一个线程只要对它进行操作,其它操作就会被堵塞,也就相当于水管没有阀门,你伸手接水的时候,不管水到了没有,你就原创 2017-12-24 14:31:57 · 518 阅读 · 0 评论 -
解决NIO读写文件乱码问题
源代码见:https://gist.github.com/ksharpdabu/b66b54569e2c3bd9f7df31d4dc0537be乱码原因后续补充,代码如下:package go.jacob.day1215.randomaccess;import java.io.FileNotFoundException;import java.io.IOExcepti原创 2017-12-15 11:14:11 · 2291 阅读 · 1 评论 -
Java中枚举类Enum详解
本文转载自:http://www.cnblogs.com/happyPawpaw/archive/2013/04/09/3009553.html用法一:常量在JDK1.5 之前,我们定义常量都是: public static fianl.... 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。public enum C转载 2017-12-14 10:30:42 · 499 阅读 · 0 评论 -
Java中IO流详解
最近实习一直接触IO流相关的知识,特此复习一下。本文转载自:https://www.cnblogs.com/pepcod/archive/2013/01/20/2913435.html一、流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部转载 2017-12-12 10:54:41 · 414 阅读 · 0 评论 -
【Java面试题】HashMap中插入null key的过程
本文转载自:http://blog.csdn.net/glory1234work2115/article/details/50825503在HashMap中添加key==null的Entry时会调用putForNullKey方法下面是HashMap的put方法:[java] view plain copyp转载 2017-11-06 18:27:54 · 1871 阅读 · 0 评论 -
深入理解java异常处理机制(目前最好的讲解异常的博文)
本文转载自:http://blog.csdn.net/hguisu/article/details/61556361. 引子 try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单、听话。不信?那你看看下面的代码,“猜猜”它执行后的结果会转载 2017-10-26 22:15:04 · 419 阅读 · 0 评论 -
【Java面试题】之CAS原理深度分析
本文转载自:http://blog.csdn.net/hsuxu/article/details/9467651看了一堆文章,终于把JAVA CAS的原理深入分析清楚了。感谢GOOGLE强大的搜索,借此挖苦下百度,依靠百度什么都学习不到! 参考文档:http://www.blogjava.net/xylz/archive/2010转载 2017-10-25 14:35:34 · 978 阅读 · 0 评论 -
模二运算
计算机网络的数据链路层中的CRC校验需要用到模二运算,对于我这种没有学过计算机组成原理的人来说,一开始还是一头雾水模2除法举例:被除数:10110010000除数:11001 10110 010000 前四位摸2除 111001------------01111 前四结果 11110 10000 移位后再除 111001-----原创 2017-09-03 09:30:13 · 1836 阅读 · 0 评论 -
POJO和JavaBean的区别
1.什么是POJO?按照Martin Fowler的解释是“Plain Old JavaObject”,从字面上翻译为“纯洁老式的Java对象”,但大家都使用“简单java对象”来称呼它。POJO的内在含义是指那些没有从任何类继承、也没有实现任何接口,更没有被其它框架侵入的java对象。POJO不应该是:1.扩展预定的类,如 public class Foo原创 2017-06-29 15:16:40 · 337 阅读 · 0 评论 -
Java中getGenericSuperclass()方法详解
先看以下代码:定义一个带泛型的父类package go.jacob.day518;public class Person {}让Student继承Person类public class Student extends Person {}测试类public class App { public static void main(String[] args)原创 2017-05-18 22:16:43 · 3286 阅读 · 2 评论 -
HashMap详解
本文转载自:http://www.cnblogs.com/chenssy/p/3521565.htmlHashMap也是我们使用非常多的Collection,它是基于哈希表的 Map 接口的实现,以key-value的形式存在。在HashMap中,key-value总是会当做一个整体来处理,系统会根据hash算法来来计算key-value的存储位置,我们总是可以通过key快速地转载 2017-05-09 22:29:25 · 391 阅读 · 0 评论 -
Java中long数据类型转化为float疑问解答
最为一个常识,我们都知道浮点型在内存中占用的是4个字节的空间,而long型占用的是8个字节的空间。可是为什么4个字节的float型的最大值会大于long型的最大值呢? 我们都知道,float类型的范围是:一3.403E38~3.403E38。而long类型的范围是:-2^63~2^63-1(大概是9*10^18)。 我以前也是简单的记住就算完事了,对于它为什么会这样却没有考虑过。原创 2017-04-19 11:23:32 · 3575 阅读 · 0 评论 -
Java 泛型数组
本文转载自:http://blog.csdn.net/orzlzro/article/details/7017435Java 不支持泛型数组。也就是说,[java] view plain copyList[] ls = new ArrayList[10]; 是不支持的,而转载 2017-04-05 18:33:17 · 485 阅读 · 0 评论 -
再探Java中的hashcode方法
哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率。在Java的Object类中有一个方法:1public native int hashCode(); 根据这个方法的声明可知,该方法返回一个int类型的数值,并且是本地方法,因此在Object类中并没有给出具体的转载 2017-04-18 11:10:36 · 428 阅读 · 0 评论 -
Java中==,equals和hashCode的区别
本文转载自:http://blog.csdn.net/tiantiandjava/article/details/46988461在Java中:==是运算符,用于比较两个变量是否相等。equals,是Objec类的方法,用于比较两个对象是否相等,默认Object类的equals方法是比较两个对象的地址,跟==的结果一样。Object的equals方法如下:转载 2017-04-01 10:34:42 · 347 阅读 · 0 评论 -
Java中equals()与hashCode()方法详解
本文转载自:http://www.cnblogs.com/Qian123/p/5703507.html阅读目录equals()方法详解hashcode() 方法详解Hashset、Hashmap、Hashtable与hashcode()和equals()的密切关系java.lang.Object类中有两个非常重要的方法:转载 2017-04-01 10:04:48 · 467 阅读 · 0 评论 -
java中nextLine()和next()的区别
首先,next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。简单地说,next()查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息。所以next方法不能得到带空格的字原创 2017-03-28 09:52:47 · 355 阅读 · 0 评论 -
ArrayList、LinkedList和Vector的区别
1. List概述List,就如图名字所示一样,是元素的有序列表。当我们讨论List时,将其与Set作对比是一个很好的办法,Set集合中的元素是无序且唯一的。下图是Collection的类继承图,从图中你可以对本文所讨论的知识有大致的了解.图12. ArrayList、LinkedList与Vector的对比从图中可以看出,这三者都实现了List 接口.所有使用方式原创 2017-02-20 16:05:08 · 387 阅读 · 0 评论 -
IO流之对象的输入输出流
1.对象输入输出流ObjectOutputStream和ObjectInputStream可以用来实现对象序列化和反序列化操作。一般操作对象时,对象是存在内存中的,如果希望将对象保存在硬盘上,或者在网络间传输,这是需要将一个对象序列化为字节序列,这个过程就叫做对象的序列化操作。相应的,如果需要将该字节序列再转换为对应的对象,这个过程就是反序列化。Java序列化时会保存类的所有信息,包括属性转载 2017-03-01 10:14:07 · 485 阅读 · 0 评论 -
计算机的原码、反码和补码详解
从大一学习计算机基础开始就已经接触了补码的概念。直到刚刚刷Java面试题,遇到补码的题居然做错了。忏愧。研一了还是没有真正弄懂其中的原理所在。所以转载这篇博客帮助自己加深了解。本文转载自:http://www.cnblogs.com/zhangziqiu/注:之前查找了关于原码、反码、补码的相关资料,张子秋的博客:原码, 反码, 补码 详解讲的比较透转载 2017-07-02 18:47:39 · 1008 阅读 · 0 评论 -
深刻理解计算机补码的含义
本文转载自:https://www.douban.com/note/223507364/刚刚转载的文章介绍了补码的介绍,但感觉对补码的理解还不是特别深刻,所以转载了此篇文章关于补码,看过一些书籍和网文,基本都是在“求反加一”的方法、步骤上反复强调,而对于补码的本质和定义,讨论的不足。这就对初学者的造成了误导,使得很多人都纠结在-128的补码求取过程中。关于反码和原码,大家都是在转载 2017-07-02 19:48:19 · 833 阅读 · 0 评论 -
彻底理解ThreadLocal
本文转载自:http://blog.csdn.net/lufeng20/article/details/24314381/ThreadLocal是什么 早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 当使用Thr转载 2017-09-19 14:57:17 · 354 阅读 · 0 评论 -
深入理解Java中为什么内部类可以访问外部类的成员
本文转载自:http://blog.csdn.net/zhangjg_blog/article/details/20000769内部类简介虽然Java是一门相对比较简单的编程语言,但是对于初学者, 还是有很多东西感觉云里雾里, 理解的不是很清晰。内部类就是一个经常让初学者感到迷惑的特性。 即使现在我自认为Java学的不错了, 但是依然不是很清楚。其中一个转载 2017-09-19 13:59:48 · 487 阅读 · 0 评论