Java开发
AcceptedQWQ
一直在前进
展开
-
java 字符串截取的几种方式
众所周知,java提供了很多字符串截取的方式。下面就来看看大致有几种。 1.split()+正则表达式来进行截取。 将正则传入split()。返回的是一个字符串数组类型。不过通过这种方式截取会有很大的性能损耗,因为分析正则非常耗时。String str = "abc,12,3yy98,0";String[] strs=str.split(",");for(int i=0,len=转载 2017-11-18 16:18:03 · 303 阅读 · 0 评论 -
史上最详细的HashMap红黑树解析
HashMap红黑树解析 红黑树介绍 TreeNode结构 树化的过程 红黑树的左旋和右旋 TreeNode的左旋和右旋 红黑树的插入 TreeNode的插入 红黑树的删除 TreeNode的删除节点 本篇主要从以下几个方面介绍: 讲解红黑树的部分算是理论部分,讲解TreeNode的部分则是代码实践部分,配合服用效果更加。 保守估计,仔细食用本篇...转载 2019-08-01 11:10:12 · 1150 阅读 · 0 评论 -
Handler内存泄漏详解(包含Java内部类详解)
内部类详解传送门:https://blog.csdn.net/hacker_zhidian/article/details/82193100handler是我们在更新UI时经常使用到的类,但是不注意的话,很容易就导致内存泄露,最后导致OOM,故现在探究下handler导致内存泄露的原因及有哪些常用的解决办法。先看下面一段代码:可以看到这段代码编辑器为我们标出了黄色,并且提示如下:...转载 2019-08-01 10:15:36 · 243 阅读 · 0 评论 -
从concurrentHashMap看CAS的基础原理
原文地址:https://blog.csdn.net/weixin_42636552/article/details/82383272本篇的思路是先阐明无锁执行者CAS的核心算法原理然后分析Java执行CAS的实践者Unsafe类,该类中的方法都是native修饰的,因此我们会以说明方法作用为主介绍Unsafe类,最后再介绍并发包中的Atomic系统使用CAS原理实现的并发类。无锁的概念...转载 2019-07-26 16:15:46 · 585 阅读 · 0 评论 -
ReentrantLock重入锁最通俗易懂的讲解(故事说明)
通过一个故事理解可重入锁的机制1、听故事把知识掌握了在一个村子里面,有一口井水,水质非常的好,村民们都想打井里的水。这井只有一口,村里的人那么多,所以得出个打水的规则才行。村长绞尽脑汁,最终想出了一个比较合理的方案,咱们来仔细的看看聪明的村长大人的智慧。井边安排一个看井人,维护打水的秩序。打水时,以家庭为单位,哪个家庭任何人先到井边,就可以先打水,而且如果一个家庭占到了打水权,其家...转载 2019-07-24 15:29:25 · 514 阅读 · 0 评论 -
解决Hash冲突的方法总结
Hash碰撞冲突我们知道,对象Hash的前提是实现equals()和hashCode()两个方法,那么HashCode()的作用就是保证对象返回唯一hash值,但当两个对象计算值一样时,这就发生了碰撞冲突。如下将介绍如何处理冲突,当然其前提是一致性hash。1.开放地址法开放地执法有一个公式:Hi=(H(key)+di) MOD m i=1,2,…,k(k<=m-1)其中,m为哈希...转载 2019-07-24 11:10:57 · 704 阅读 · 0 评论 -
HashSet集合是如何保证元素的唯一性的?
HashSet集合的特点是元素无序和不重复。首先,HashSet的底层数据结构是哈希表。哈希表就是存储一系列哈希值的表,而哈希值是由对象的hashCode()方法生成的。确保元素唯一性的两个方法,hashCode()和equals()方法。当调用add()方法向集合中存入对象的时候,先比较此对象与原有对象的哈希值有没有一样的,如果都不一样就直接存入;如果有与之相同的哈希值,则要继续比...转载 2019-07-24 11:08:07 · 880 阅读 · 0 评论 -
java使用省略号代替多参数(参数类型... 参数名)
原文链接:https://www.cnblogs.com/fnlingnzb-learner/p/5952716.htmlJ2SE 1.5提供了“Varargs”机制。借助这一机制,可以定义能和多个实参相匹配的形参。从而,可以用一种更简单的方式,来传递个数可变的实参。本文介绍这一机制的使用方法,以及这一机制与数组、泛型、重载之间的相互作用时的若干问题。到J2SE 1.4为止,一直无法...转载 2019-07-08 10:49:35 · 612 阅读 · 0 评论 -
Java四种引用
1.强引用是指创建一个对象并把这个对象赋给一个引用变量。比如:Object object =newObject();String str ="hello word";强引用有引用变量指向时永远不会被垃圾回收,JVM宁愿抛出OutOfMemory错误也不会回收这种对象。2.软引用(SoftReference)如果一个对象具有软引用,内存空间足够,垃圾回收器就不会回收...原创 2019-03-11 19:26:37 · 206 阅读 · 0 评论 -
Java WeakReference学习和使用
前言: 看到篇帖子, 国外一个技术面试官在面试senior java developer的时候, 问到一个weak reference相关的问题. 他没有期望有人能够完整解释清楚weak reference是什么, 怎么用, 只是期望有人能够提到这个concept和java的GC相关. 很可惜的是, 20多个拥有5年以上java开发经验的面试者中, 只有两人知道weak reference的存在,...转载 2019-01-14 17:54:43 · 306 阅读 · 0 评论 -
Java关键字Synchronized
首先我们来看一下这个代码:public class Main implements Runnable { private static int count = 0; public static void main(String[] args) { for (int i = 0; i < 10; i++) { Thread thr...原创 2019-01-03 16:34:22 · 267 阅读 · 0 评论 -
Java中Volatile关键字详解
一、基本概念先补充一下概念:Java 内存模型中的可见性、原子性和有序性。可见性: 可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉。通常,我们无法确保执行读操作的线程能适时地看到其他线程写入的值,有时甚至是根本不可能的事情。为了确保多个线程之间对内存写入操作的可见性,必须使用同步机制。 可见性,是指线程之间的可见性,一个线程修改的状态对另一个线...转载 2018-12-02 17:01:32 · 176 阅读 · 0 评论 -
JAVA中final关键字
谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字。另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法。一、final关键字的基本用法在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。下面就从这三个方面来了解一下final关键字的基本用法。1、修饰转载 2018-01-23 16:20:34 · 167 阅读 · 0 评论 -
Java正则表达式详解
1匹配验证-验证Email是否正确Java | 复制1234567891011121314public static void main(String[] args) { // 要验证的字符串 Strin转载 2017-12-19 16:56:07 · 173 阅读 · 0 评论 -
为什么HashMap链表长度超过8会转成树结构
首先红黑树的插入、删除和遍历的最坏时间复杂度都是log(n),TreeNodes的大小是常规Nodes的两倍,所以只有桶中包含足够多的元素以供使用时,我们才会使用树。那为什么这个数字是8呢?进入HashMap源码我发现了这个权衡依据是以上情况符合泊松分布(一种统计与概率学里常见到的离散概率分布,适合于描述单位时间(或空间)内随机事件发生的次数),用0.75作为加载因子,每个碰撞位...原创 2019-08-01 14:01:06 · 1374 阅读 · 3 评论