
Java篇
Tony-老师
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java篇 - 锁机制与应用场景全集3 (阻塞队列, 死锁, CountdownLatch, CyclicBarrier)
今天更新java中的锁机制:第三章(大纲9-12)。终于要把java锁这块收尾了,不容易。下个博文的主题是:Java并发容器类源码分析和性能对比,这章我本来想放在锁机制里的,但是感觉并发容器可以单独抽出一篇,主要分析源码及性能对比。大纲:1. 并发的特性 2. 锁的分类 3. synchronized 4. volatile 5. Lock 6. ThreadLocal 7...原创 2018-12-27 18:16:17 · 1098 阅读 · 2 评论 -
Java篇 - WeakHashMap的弱键回收机制
昨天刚刚讲解了Java中的引用和引用队列,今天就趁热打铁,讲讲WeakHashMap的弱键回收机制。 目录:WeakHashMap介绍 WeakHashMap例子 WeakHashMap的使用场景 WeakHashMap的数据结构 WeakHashMap的弱键回收 1. WeakHashMap介绍WeakHashMap继承AbstractMap,实现了Map...原创 2019-01-17 16:22:16 · 5899 阅读 · 0 评论 -
Java篇 - Collections的使用和实现
上一篇讲解了Arrays的使用和实现,Arrays是对数组做处理的,Java中还有一个对集合做处理的工具类:Collections。这篇文章将对Collections做一个分析。 目录:Collections的sort Collections的search Collections的reverse Collections的shuffle Collections的swap...原创 2019-01-11 19:29:02 · 576 阅读 · 0 评论 -
Java篇 - 随机数的原理、伪随机和优化
这篇来说说Java中的随机数,以及为什么说随机数是伪随机。 目录:Math.random() Random类 伪随机 如何优化随机 封装的一个随机处理工具类 1. Math.random() 1.1 介绍通过Math.random()可以获取随机数,它返回的是一个[0.0, 1.0)之间的double值。 private static vo...原创 2019-01-17 18:56:25 · 11971 阅读 · 15 评论 -
Java篇 - Java8中Optional和StringJoiner的使用与实现
Java9都发布了,现在讲java8有点落伍了,不过我觉得java8相对来说是Java的一个大的分水岭。Java8有许多好用的新特性,如Lambda,接口方法默认实现,Stream等,但这些都不是本章的重点。本章的重点是两个工具类:Optional和StringJoiner。 1. Optional 1.1 简介Optional类是一个可以为null的容器对象。如果值存在...原创 2019-01-12 20:18:19 · 1753 阅读 · 0 评论 -
Java篇 - 最全BigInteger和BigDecimal实战
最近公司在做一款区块链钱包,区块链上传输的数值都是很大的,大到几十位。用Java的基本类型是处理不了的,int占32位,long、double占64位,如果用这些基本数据类型运算的话,第一是存储不了这么大的数,第二会出现精度丢失以及科学计数法等问题。一般处理商业计算,如钱包,交易所等业务,都离不开这两个类。 目录:BigInteger BigDecimal 实战演练 ...原创 2019-01-18 17:56:26 · 1727 阅读 · 0 评论 -
Java篇 - 反射机制分析(附面试中的坑)
反射的运用很广泛,很多库都运用了反射,如Junit,EventBus,Gson,Retrofit,Spring等。动态代理,Android的Hook技术也离不开反射的身影。 目录:反射的概念 反射的使用 反射的优缺点 如何提高反射效率 面试中的反射问题 1. 反射的概念在Java运行时环境中,对于任意一个类,可以知道这个类有哪些属性和方法。对于任意一个对象,可以调...原创 2019-01-14 00:56:04 · 7181 阅读 · 0 评论 -
Java篇 - 让你不再害怕正则表达式
这章是《Java篇》的最后一章, 以正则表达式结尾。 目录:关于正则表达式 捕获组 正则表达式语法 Matcher类的方法 1. 关于正则表达式 1.1 概念正则表达式可以用来处理,搜索和匹配字符串,一个字符串就是一个正则表达式,至少可以匹配它本身:// 输出 trueSystem.out.println(Pattern.matches("cod...原创 2019-01-20 10:38:36 · 595 阅读 · 0 评论 -
Java篇 - 泛型的真谛
目录:什么是泛型 泛型类 泛型接口 泛型通配符 泛型方法 泛型通配符的上下边界 泛型数组 泛型的类型擦除 1. 什么是泛型 1.1 泛型的概念泛型是JDK 1.5的一项新特性,它的本质是参数化类型(Parameterized Type)的应用,也就是说所操作的数据类型被指定为一个参数,在用到的时候在指定具体的类型。这种参数类型可以用在类、接口和方法的创建...原创 2019-01-14 19:23:47 · 678 阅读 · 0 评论 -
Java篇 - 聊聊Serializable (常见问题集锦)
接着来聊聊Serializable,Serializable的意思是序列化。 1. 序列化的概念序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。 2. 序列化的使用场景当你想把内存中的对象状态保存到一个文件中...原创 2019-01-09 20:16:22 · 1540 阅读 · 0 评论 -
Java篇 - 聊聊cloneable
今天来说说cloneable,java中创建对象除了使用new关键字,反射,还有一种方式就是clone。有一个设计模式叫原型模式,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象,简单的说就是clone一个对象实例,使得clone出来的对象和原有的对象一模一样,两个对象相互不影响。什么时候使用clone呢,clone又存在哪些问题? 1. clone的使用场景...原创 2019-01-09 18:01:59 · 761 阅读 · 0 评论 -
Java篇 - 深入了解注解
注解在我们平时的开发中到处可见,无论是Javaee还是android开发,如JUnit,ButterKnife,Dagger2,Retrofit,EventBus,android.support.annotation。今天我来带大家整理一下注解,做到知其然更知其所以然。 目录:注解的概述 Java预置的注解 元注解 注解的属性 注解与反射(android permiss...原创 2019-01-15 23:39:58 · 2790 阅读 · 14 评论 -
Java篇 - 代理模式和动态代理实现原理
设计模式中有一种模式叫代理模式,Spring框架离不开动态代理技术,Android hook技术用到了反射 + 动态代理,Framework中我们也经常看到各种proxy,如ApplicationThreadProxy, ActivityManagerProxy。那么,今天就来说下Java中的代理模式和动态代理。 目录:代理模式 静态代理 动态代理 代理模式的优缺点...原创 2019-01-16 16:51:40 · 1776 阅读 · 1 评论 -
Java篇 - Arrays的使用和实现
有没有发现一些变化,哈哈哈~技术博客本身是很枯燥无味的,我以后将在每篇博客上加上一个banner,给技术博客增加一些生动色。我前期的更博重心还是在技术实现和理解上,后面会抛出一些问题和项目实战技巧,详细的可以看我的更新计划:https://blog.youkuaiyun.com/u014294681/article/details/85333095 Arrays是JDK1.2开始提供的一个...原创 2019-01-11 16:28:25 · 535 阅读 · 0 评论 -
Java篇 - TreeMap源码分析
上一章讲解了TreeMap的使用,这一章我来带大家分析下TreeMap的源码实现。 1. 准备知识 - 红黑树学过数据结构与算法的同学对树一定不陌生。二叉树:二叉树是每个结点最多有两个子树的树结构。 二叉查找树:二叉查找树是具有下列性质的二叉树:若左子树不空,则左子树上所有结点的值均小于它的根结点的值。 若右子树不空,则右子树上所有结点的值均大于它的根结点的值。...原创 2019-01-10 23:47:24 · 532 阅读 · 0 评论 -
Java篇 - 从内到外剖析String类以及使用String时的性能优化
前两天终于把JVM, GC给收尾了,今天又继续更博啦~ 今天的主角是:String。说到String,在Java里,真的是无处不在,只要是你看到的文字,背后就有它工作的身影。String也常出现在各大厂,各论坛的经典面试题中,熟练掌握它,已经成为一个高级技师的必备技能。 1. 从源码角度认识String.看过很多文章,一上来就说String是不可变类,我不喜欢背书式的学东西,学...原创 2018-12-22 00:47:58 · 779 阅读 · 3 评论 -
Java篇 - 并发容器之Hashtable源码分析
嗨,又更博了。前几天连续更新锁相关的内容,已原创 2018-12-27 20:29:12 · 535 阅读 · 0 评论 -
Java篇 - 进制与位运算应用实例
为什么要写这章呢?阅读过JDK源代码的同学都知道,JDK里充斥着大量的位运算,位运算比一般的运算操作符在效率上快很多,而位运算与进制有着紧密的联系。使用位运算不仅能提高运算效率,还能实现一些奇yin巧技。看看JDK里的一些位运算的代码:// java.util.Arrayspublic static void parallelSort(char[] a) { in...原创 2018-12-23 21:53:47 · 598 阅读 · 0 评论 -
Java篇 - 并发容器之Vector源码分析和注意事项
今天继续来讲Java的并发容器类,这篇的主角是Vector。 1. Vector简介数组的容量是固定的,不能动态扩展容量。在Java中提供了几个动态数组:ArrayList,Vector。两个的区别是ArrayList是非线程安全的,而Vector是线程安全的,这边说的线程安全是它自身的操作,如add,remove,clear。另外Vector是从JDK1.0开始推出的。 2...原创 2018-12-28 19:03:06 · 483 阅读 · 0 评论 -
Java篇 - 并发容器之ConcurrentHashMap为何如此优秀? (基于JDK1.8)
Java并发容器类之ConcurrentHashMap为什么如此优秀?HashMap是非线程同步的散列表,实现原理和HashTable类似,具体可以看我的这篇文章:《Java篇 - 并发容器类之Hashtable源码分析》https://blog.youkuaiyun.com/u014294681/article/details/85298342 HashTable不允许空key和空value,但是Ha...原创 2018-12-28 23:47:28 · 374 阅读 · 0 评论 -
Java篇 - 线程总结(总有你想知道的)
今天来分析下Java中的线程。大纲如下:1. 线程的概念。 2. Java创建线程的方式。 3. 线程的常用方法。 4. 线程的状态切换。 5. 如何终止一个线程? 6. 线程的优先级。 7. 线程间的协作。 1. 线程的概念进程是操作系统中进行保护和资源分配的基本单位,操作系统分配资源以进程为基本单位。而线程是进程的组成部分,线程共享着所属进程的内存地址,所以线程间...原创 2018-12-24 21:54:31 · 538 阅读 · 0 评论 -
Java篇 - 并发容器之CopyOnWriteArrayList的偷天换日
嗨,又和大家见面了,今天来讲讲java中的并发容器的最后一个:CopyOnWriteArrayList。 1. CopyOnWriteArrayList介绍CopyOnWriteArrayList是List的一种线程安全的实现,它使用的思路是"CopyOnWrite",目前的实现类有CopyOnWriteArrayList和CopyOnWriteArraySet。所有的写操作,包括:...原创 2018-12-29 18:45:17 · 489 阅读 · 0 评论 -
Java篇 - 锁机制与应用场景全集1 (synchronized, volatile)
今天更新的主题是java中的锁机制:第一章(大纲1-4)。由于Java锁的东西比较多,我准备分三章来讲解。很多人都只知道锁的一些概念,也能讲出来一二三四,但是我在面试别人的时候,一问:讲讲java中的同步,可能就只能回答出来synchronized,单例场景等。为了避免这种尴尬,今天我将通过例子,带大家逐步认识Java中的锁与应用场景。只要认真读完,我相信对各位不管是工作还是面试,都会有比...原创 2018-12-25 22:48:31 · 2472 阅读 · 7 评论 -
Java篇 - hashCode和equals姐妹花
hashCode和equals属于Object的方法。Object中的equals方法的实现:public boolean equals(Object obj) { return (this == obj);}Object中的hashCode方法是native的,实现和本地机器相关,当然你也可以重写它: public native int hashCode(); ...原创 2018-12-30 23:02:58 · 856 阅读 · 0 评论 -
Java篇 - 线程池的原理及重点问题解答
目录:1. 为什么要使用线程池? 2. 线程池的运行原理。 3. 自己实现一个线程池。 4. 几种常见的线程池。 5. 线程池的源码分析。 1. 为什么要使用线程池?前面的文章我有讲过Java中的线程知识:《Java篇 - 线程总结(总有你想知道的)》https://blog.youkuaiyun.com/u014294681/article/details/85231356那为...原创 2019-01-08 00:08:03 · 613 阅读 · 2 评论 -
Java篇 - 锁机制与应用场景全集2 (Lock, ThreadLocal, Atmoic, Semaphore)
今天更新的主题是依然是java中的锁机制:第二章(大纲5-8)。 大纲:1. 并发的特性 2. 锁的分类 3. synchronized 4. volatile 5. Lock 6. ThreadLocal 7. Atmoic 8. Semaphore 9. 阻塞队列 10. 死锁 11. CountdownLatch 12.CyclicBarrier ...原创 2018-12-27 00:20:52 · 855 阅读 · 0 评论 -
Java篇 - 一招教你使用TreeMap
今天来讲下TreeMap的源码实现,在这之前,先来简单了解下Java中的几种Map。 1. HashMapHashMap 是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。遍历时,取得数据的顺序是完全随机的。HashMap最多只允许一条记录的键为null,允许多条记录的值为 null。 HashMap不支持线程的同步,可能会...原创 2019-01-10 19:22:43 · 2348 阅读 · 0 评论 -
Java篇 - 四种引用(Reference)实战
Java的垃圾回收(GC)是虚拟机自动管理的,前面我有篇文章专门讲GC:《JVM篇 - GC给你整明白》Java内存管理分为内存分配和内存回收,都不需要程序员负责,垃圾回收的机制主要是看对象是否有引用指向该对象。Java对象的引用包括:强引用,软引用,弱引用,虚引用,Java中提供这四种引用类型主要有两个目的:可以让程序员通过代码的方式决定某些对象的生命周期。 有利于JVM...原创 2019-01-16 18:49:35 · 17173 阅读 · 2 评论