
Java基础
文章平均质量分 68
老王谈架构
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
BigDecimal源码解析
1.引言 借用《Effactive Java》这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。但是,商业计算往往要求结果精确,这时候BigDecimal就派上大用场啦。 2.BigD...原创 2018-07-28 13:53:22 · 3565 阅读 · 1 评论 -
LinkedList源码解析
转载:http://www.cnblogs.com/ITtangtang/p/3948610.html一、源码解析1、 LinkedList类定义。public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E...转载 2018-07-28 22:02:37 · 175 阅读 · 0 评论 -
ArrayList源码解析
转载:https://blog.youkuaiyun.com/zxt0601/article/details/77281231概要概括的说,ArrayList 是一个动态数组,它是线程不安全的,允许元素为null。 其底层数据结构依然是数组,它实现了List<E>, RandomAccess, Cloneable, java.io.Serializable接口,其中RandomAc...转载 2018-07-28 21:35:01 · 178 阅读 · 0 评论 -
URLClassLoader源码解析
转载:http://hbiao68.iteye.com/blog/1944132URLClassLoader源码关注我上篇关于classloader的源码讲解URLClassLoader是ClassLoader的子类,它用于从指向 JAR 文件和目录的 URL 的搜索路径加载类和资源。也就是说,通过URLClassLoader就可以加载指定jar中的class到内存中。Java代码 ...转载 2018-07-28 20:31:35 · 1311 阅读 · 0 评论 -
ClassLoader源码解析
转载:https://blog.youkuaiyun.com/briblue/article/details/54973413ClassLoader翻译过来就是类加载器,普通的java开发者其实用到的不多,但对于某些框架开发者来说却非常常见。理解ClassLoader的加载机制,也有利于我们编写出更高效的代码。ClassLoader的具体作用就是将class文件加载到jvm虚拟机中去,程序就可以正确运行了...转载 2018-07-28 20:25:12 · 1222 阅读 · 0 评论 -
ThreadLocal源码解析
转载:https://www.cnblogs.com/dennyzhangdd/p/7978455.html#_label0_0目录一、ThreadLocal1.1源码注释1.2 源码剖析散列算法-魔数0x61c88647set操作 get操作remove操作1.3 功能测试1.4 应用场景二、变量可继承的ThreadLocal==》Inheritabl...转载 2018-07-28 18:31:06 · 527 阅读 · 0 评论 -
static
转载:https://blog.youkuaiyun.com/jiuhanfengganlin/article/details/49077663Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一。下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列举了一些面试笔试中常见...转载 2018-07-29 12:55:14 · 213 阅读 · 0 评论 -
final
转载:https://www.cnblogs.com/xiaoxi/p/6392154.html谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字。另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法。一、final关键字的基本用法在Java中,final关键字可以用来修饰类、方法和变量(包括成...转载 2018-07-29 12:44:10 · 205 阅读 · 0 评论 -
synchronized
转载:https://blog.youkuaiyun.com/javazejian/article/details/72828483线程安全是并发编程中的重要关注点,应该注意到的是,造成线程安全问题的主要诱因有两点,一是存在共享数据(也称临界资源),二是存在多条线程共同操作共享数据。因此为了解决这个问题,我们可能需要这样一个方案,当存在多个线程操作共享数据时,需要保证同一时刻有且只有一个线程在操作共享数据...转载 2018-07-29 12:41:20 · 174 阅读 · 0 评论 -
volatile
转载:http://www.importnew.com/23520.htmlJava编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致地更新,线程应该确保通过排他锁单独获得这个变量。上面比较绕口,通俗点讲就是说一个变量如果用volatile修饰了,则Java可以确保所有线程看到这个变量的值是一致的,如果某个线程对volatile修饰的共享变量进行更新,那么其他线程可以立马看到...转载 2018-07-29 11:18:08 · 175 阅读 · 0 评论 -
instanceof
instanceof的作用是用来指出对象是特定类的实例用法: result = object instanceof class 参数: Result:布尔类型。 Object:必选项。任意对象表达式。 Class:必选项。任意已定义的对象类。 说明: 如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一...原创 2018-07-29 11:16:37 · 205 阅读 · 0 评论 -
transient
当我们需要序列化的时候,不想某些敏感字段序列化,因为如果默认实现Serilizable接口序列化,数据在网络传播的话,内容很容易被别人截获并且反序列化,导致信息不安全,这个时候,需要在不想序列化的字段上加transient关键字或者注解(自己百度下)。下面,就以简单的例子来演示该关键字的使用package com.guanjianzi;import java.io.S...原创 2018-07-29 11:08:27 · 206 阅读 · 0 评论 -
HashMap源码解析
转载:https://blog.youkuaiyun.com/u014026363/article/details/56342142一、HashMap概述 HashMap是常用的Java集合之一,是基于哈希表的Map接口的实现。与HashTable主要区别为不支持同步和允许null作为key和value。由于HashMap不是线程安全的,如果想要线程安全,可以使用ConcurrentHashMap代...转载 2018-07-28 23:13:27 · 183 阅读 · 0 评论 -
LinkedHashMap源码解析
转载:https://blog.youkuaiyun.com/zxt0601/article/details/774291501 概述在上文中,我们已经聊过了HashMap,本篇是基于上文的基础之上。所以如果没看过上文,请先阅读面试必备:HashMap源码解析(JDK8) 本文将从几个常用方法下手,来阅读LinkedHashMap的源码。 按照从构造方法->常用API(增、删、改、查)的顺序...转载 2018-07-29 10:59:41 · 164 阅读 · 0 评论 -
Enum源码解析
转载:https://blog.youkuaiyun.com/qiuchengjia/article/details/52910948Enum类是java.lang包中一个类,他是Java语言中所有枚举类型的公共基类定义public abstract class Enum<E extends Enum<E>> implements Comparable<E>...转载 2018-07-28 13:46:10 · 182 阅读 · 0 评论 -
Long源码解析
转载:https://www.cnblogs.com/aben-blog/p/8728995.html总体阅读了Long的源码,基本跟Integer类类似,所以特别全部贴出源码,直接注释进行理解。// final修饰符public final class Long extends Number implements Comparable<Long> { /** ...转载 2018-07-28 13:28:02 · 668 阅读 · 0 评论 -
Integer源码解析
转载:http://www.hollischuang.com/archives/1058Integer 类在对象中包装了一个基本类型 int 的值。Integer 类型的对象包含一个 int 类型的字段。此外,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法。类定义public final cla...转载 2018-07-28 11:58:56 · 449 阅读 · 0 评论 -
String源码解析
转载:http://www.hollischuang.com/archives/99#String.valueOf%E5%92%8CInteger.toString%E7%9A%84%E5%8C%BA%E5%88%AB String表示字符串,Java中所有字符串的字面值都是String类的实例,例如“ABC”。字符串是常量,在定义之后不能被改变,字符串缓冲区支持可变的字符串。因...转载 2018-07-27 17:26:52 · 811 阅读 · 0 评论 -
反射与工厂模式
转载:https://www.cnblogs.com/AaronCui/p/4915055.html工厂模式简介工厂模式是最常用的实例化对象模式。工厂模式的主要作用就是使用工厂方法代替new操作。为什么要使用工厂模式?直接new不好吗?直接new没有什么不好,只是工厂模式可以给系统带来更好的可扩展性和尽量少的修改量。分类工厂模式一般有两类,一类是工厂方法模式,另一类...转载 2018-07-29 20:46:50 · 609 阅读 · 0 评论 -
不同版本的JDK中HashMap的实现的区别以及原因
转载:http://blog.youkuaiyun.com/vking_wang/article/details/141665931. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表...转载 2018-07-29 17:32:59 · 2724 阅读 · 0 评论 -
apache commons常用工具类
1.有些情况下,Arrays满足不到你对数组的操作?不要紧,ArrayUtils帮你ArrayUtilspublic class TestMain { public static void main(String[] args) { int[] nums1 = { 1, 2, 3, 4, 5, 6 }; // 通过常量创建新数组 int[] nums2 = ArrayUt...转载 2018-07-29 17:25:27 · 1520 阅读 · 0 评论 -
Java 8中stream相关用法
jdk1.8新加了lambda表达式,可以帮助开发者更好的,更高效的实现一些通常复杂的代码实现1.list转换mapMap<Integer, String> mappedMovies = ghslist.stream().collect( Collectors.toMap(SaleStaticsGhsResp::getShop_saleman_id, (p) -> p....原创 2018-07-29 17:20:07 · 500 阅读 · 0 评论 -
TreeSet源码解析
转载:https://blog.youkuaiyun.com/u010176014/article/details/52096398TreeSet概述所有实现的接口:<span style="color:#000000"><code>Serializable, Cloneable, Iterable<<span style="color:#000088">...转载 2018-07-29 11:00:30 · 371 阅读 · 0 评论 -
LinkedHashSet源码解析
转载:https://blog.youkuaiyun.com/u011518120/article/details/53356076LinkedHashSet基本特性这里与HashSet不同使用了一个双端队列实现HashSet。从而实现了有序的排列。LinkedHashSet维护的是插入顺序,而且不受重复插入的影响,也就是仅仅以第一次插入操作为准。客户端的散列实没有特殊指定,通常使用HashS...转载 2018-07-29 11:00:26 · 293 阅读 · 0 评论 -
HashSet源码解析
转载:https://blog.youkuaiyun.com/canot/article/details/51240251前面我们花了一定的篇幅学习了HashMap的一些底层原理,以及简单了解了HashSet和HashMap两种集合的渊源,现在我们从HashSet源码入手,来学习HashSet更细节的地方。对于HashSet而言,它是基于HashMap实现的。HashSet底层采用HashMap来保存...转载 2018-07-29 11:00:20 · 202 阅读 · 0 评论 -
CouncurrentHashMap源码解析
转载:https://blog.youkuaiyun.com/u010723709/article/details/48007881注:本文源码是JDK8的版本,与之前的版本有较大差异jdk1.7的源码:https://www.cnblogs.com/chengxiao/p/6842045.htmlConcurrentHashMap是conccurrent家族中的一个类,由于它可以高效地支持并发操...转载 2018-07-29 10:59:56 · 1757 阅读 · 0 评论 -
TreeMap
转载:https://blog.youkuaiyun.com/qq_32166627/article/details/72773293前言TreeMap的基本概念: TreeMap集合是基于红黑树(Red-Black tree)的 NavigableMap实现。该集合最重要的特点就是可排序,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用...转载 2018-07-29 11:00:05 · 11690 阅读 · 3 评论 -
编码方式
1.解决乱码问题http://www.jb51.net/article/91870.htm2.常用编码方式https://www.cnblogs.com/yaya-yaya/p/5768616.html原创 2019-10-23 14:22:11 · 336 阅读 · 0 评论 -
自动拆装箱-Integer的缓存机制
Integer是有小数据缓存的机制的,那么第一个是否应该是true呢?回归下第一个:Integer num1 = new Integer(100);Integer num2 = new Integer(100);System.out.println(num1 == num2);言归正传,上篇提到说,这个的运行结果是false,原因在上篇文章中有解释,但是,对于Intege...转载 2018-07-29 11:06:11 · 267 阅读 · 0 评论 -
熟悉Java String的使用,熟悉String的各种函数,Java中各种变量类型
1.JDK 6和JDK 7中substring的原理及区别substring(int beginIndex, int endIndex)方法截取字符串并返回其[beginIndex,endIndex-1]范围内的内容。String x = "abcdef";x = x.substring(1,3);System.out.println(x);输出内容:bc调用subst...原创 2018-07-29 11:01:50 · 818 阅读 · 0 评论 -
编译与反编译
Java代码的编译与反编译一、什么是编译 1、利用编译程序从源语言编写的源程序产生目标程序的过程。 2、用编译程序产生目标程序的动作。 编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。 编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;语义检查和中间代码生成;代码优化;目标代码生成。主要是进行词法分析...原创 2018-07-27 16:23:09 · 1746 阅读 · 0 评论 -
虚拟机性能监控与故障处理工具
运用jvm自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我们来定位问题!虽然jvm调优成熟的工具已经有很多:jconsole、大名鼎鼎的VisualVM,IBM的Memory Analyzer等等,但是在生产环境出现问题的时候,一方面工具的使用会有所限制,另一方面喜欢装X的我们,总喜欢在出现问题的时候在终端输入一些命令来解决。所有的工具几乎都是依赖于jdk的接口和底层的这些命令,研究这些命...转载 2019-10-23 14:12:54 · 226 阅读 · 0 评论 -
HotSpot
转载:https://blog.youkuaiyun.com/ning0323/article/details/76908933在部分的商用虚拟机中,Java 程序最初是通过解释器( Interpreter )进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁的时候,就会把这些代码认定为“热点代码”。为了提高热点代码的执行效率,在运行时,即时编译器(Just In Time Compiler )会...转载 2018-07-27 14:14:06 · 3205 阅读 · 0 评论 -
java内存模型
1.java内存可见性如果一个线程的修改,对共享变量是可见的,那么就说明共享变量是线程可见的。如果一个变量在多个线程的工作内存中都存在副本,那么就说明这个变量是线程共享的。java内存模型描述了java程序中各种变量的访问规则,以及在jvm中将变量存储到内存和从主存中读取变量这样的底层细节。所有的变量都存储在主内存中,每个线程都有自己独立的工作内存,里面保存了该线程用到的变量副本,如下图所示...转载 2018-07-27 10:44:15 · 193 阅读 · 0 评论 -
Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
转载:http://blog.youkuaiyun.com/anxpp/article/details/51512200本文会从传统的BIO到NIO再到AIO自浅至深介绍,并附上完整的代码讲解。 下面代码中会使用这样一个例子:客户端发送一段算式的字符串到服务器,服务器计算后返回结果到客户端。 代码的所有说明,都直接作为注释,嵌入到代码中,看代码时就能更容易理解,代码中会用到一个计算结果...转载 2018-07-29 17:52:46 · 192 阅读 · 0 评论 -
枚举的用法、枚举与单例、Enum类
转载:https://www.cnblogs.com/hyl8218/p/5088287.htmlenum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性,存放在 java.lang 包中。下面是我在使用 enum 过程中的一些经验和总结,主要包括如下内容:原始的接口定义常量public interface IConstants { Strin...转载 2018-07-29 17:42:32 · 1119 阅读 · 0 评论 -
常用集合类的使用
集合类在日常的工作中经常被使用,选择一个合适的集合类,对程序的性能,健壮性都会有不小的提升,下面我们就常用的集合类给大家一一介绍简单画个图,说下组织架构List:List接口及其实现类是容量可变的列表,可按索引访问集合中的元素。 特点:集合中的元素有序、可重复; 列表在数据结构中分别表现为:数组和向量、链表、堆栈、队列。(1)ArrayList 数组结构...原创 2018-07-29 13:03:32 · 1074 阅读 · 2 评论 -
Java反射
转载:https://blog.youkuaiyun.com/sinat_38259539/article/details/71799078反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码))一、反射的概述JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一...转载 2018-07-29 18:00:17 · 202 阅读 · 0 评论 -
javassist
转载:https://www.cnblogs.com/sunfie/p/5154246.htmljavassist可以实现动态编程,即动态生成class文件,或者操作class文件,下面就详细介绍。1、读取和输出字节码 1 ClassPool pool = ClassPool.getDefault(); 2 //会从classpath中查询该类 3 CtClass cc = po...转载 2018-07-29 18:03:15 · 998 阅读 · 0 评论 -
异常处理方式
1.异常类型https://www.cnblogs.com/cvst/p/5822373.html2.正确处理异常https://www.cnblogs.com/hihtml5/p/6505994.html3.自定义异常https://www.cnblogs.com/AlanLee/p/6104492.html原创 2019-10-23 14:16:32 · 164 阅读 · 0 评论