
java进阶
专属_Smile
云想衣裳花想容 ^*^
展开
-
UTF-8转Unicode
public String utf8ToUnicode(String str) { str = (str == null ? "" : str); String tmp; StringBuffer sb = new StringBuffer(1000); char c; int i, j; for (i = 0; i < str.length(); i++) { c = str.charAt(i); sb.append("\\u"); //.原创 2020-09-15 10:37:59 · 767 阅读 · 0 评论 -
单例懒汉模式的并发问题
在平时的开发中,单例懒汉模式经常会用到。举个栗子:/** * @author: htc * @date: 2020/8/28 11:26 * @descr: */public class Cpu { private volatile static Cpu instance; private Cpu(){} public static Cpu getInstance(){ //第一次检测 if (instance==null){原创 2020-08-28 14:15:48 · 474 阅读 · 0 评论 -
【java8】浅析HashMap之get()方法
根据源码可知,HashMap的get方法流程不是特别复杂,其中真正执行取值的逻辑是在getNode()方法中,不多说直接上源码。这里再啰嗦一句:其中入参hash是调用了存值时的hash()方法,就是根据将key进行hash得到hash值,然后将hash值与Key进行异或操作(可以理解为加密),再进行无符号右移16位得到的。 /** * Implements Map.get an...原创 2020-01-15 16:42:21 · 1365 阅读 · 0 评论 -
Java移位运算符以及位运算
移位运算符:移位运算符是位操作运算符的一种。移位运算符可以在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:<<(左移)、>>(带符号右移)和>>>(无符号右移)。左移运算符(<<)按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。例如: 4<<3就是将4的二进制值...原创 2020-01-15 15:16:17 · 683 阅读 · 0 评论 -
MySQL数据库索引之 Hash、B-/+Tree
B-Tree索引 最常见的索引类型,基于B-Tree数据结构。B-Tree的基本思想是,所有值(被索引的列)都是排过序的,每个叶节点到跟节点距离相等。所以B-Tree适合用来查找某一范围内的数据,而且可以直接支持数据排序(ORDER BY)。但是当索引多列时,列的顺序特别重要,需要格外注意。InnoDB和MyISAM都支持B-Tree索引。InnoDB用的是一个变种B+Tree,...原创 2019-08-29 15:33:36 · 236 阅读 · 0 评论 -
【java8】浅析HashMap之put()方法
从《浅析java8中HashMap的结构》这篇文章我们可以得知,hashMap的数据结构是数组+单链表。接下来咱们通过解读HashMap的put(K key, V value)方法来了解他的数据存储机制。大致步骤如下图:至于详细的步骤,请结合上图参考部分源码和注释: static final int hash(Object key) { int h; ...原创 2018-11-01 16:57:45 · 1927 阅读 · 0 评论 -
Java关键字final、static使用总结【转】
转自:http://blog.51cto.com/lavasoft/18771final关键字 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。final类不能被继承,没有子类,final类中的方法默认是final的 final方法不能被子类的方法覆盖,但可以...转载 2018-11-01 11:07:38 · 165 阅读 · 0 评论 -
HashMap,LinkedHashMap,TreeMap的区别
HashMap HashMap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。遍历时,取得数据的顺序是完全随机的。 HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null。 HashMap不支持线程的同步(即任一时刻可以有多个线程同时写HashMap),可能会导致数据的不一致。如果需要...转载 2018-04-11 15:24:30 · 215 阅读 · 0 评论 -
StackOverflowError和OutOfMemoryError
对于堆内存溢出和栈内存溢出,在深入理解JVM虚拟机这本书中有相关的定义:在java虚拟机规范中,对于局部变量空间(这里的局部变量空间指的是java虚拟机中的“栈”或者说java虚拟机栈中局部变量表部分)规定了两种异常状态:如果线程请求的栈深度(栈深度指的是程序递归调用的次数)大于虚拟机所允许的深度,将抛出StackOverflowError;如果虚拟机栈可以动态扩展(当前大部分的java虚拟机都可...原创 2018-03-15 14:05:19 · 300 阅读 · 0 评论 -
jvm虚拟机工作机制【转】
1 概述 众所周知,Java支持平台无关性、安全性和网络移动性。而Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统一的编程接口,而不管下层操作系统是什么。正是得益于Java虚拟机,它号称的“一次编译,到处运行”才能有所保障。1.1 Java程序执行流程 Java程序的执行依赖于编译环境和运行环境。源码代码转变成可执行的机器代码,由下面的流程完成:转载 2017-12-15 14:49:12 · 450 阅读 · 0 评论 -
一看你就懂,超详细java中的ClassLoader详解【转】
转自:http://blog.youkuaiyun.com/briblue/article/details/54973413ClassLoader翻译过来就是类加载器,普通的java开发者其实用到的不多,但对于某些框架开发者来说却非常常见。理解ClassLoader的加载机制,也有利于我们编写出更高效的代码。ClassLoader的具体作用就是将class文件加载到jvm虚拟机中去,程序就可以正确运行了。...转载 2018-09-26 11:36:32 · 6204 阅读 · 2 评论 -
equals 、 ==的深度解析
如何理解equals和==之间的区别?对于刚开始工作的小白,在面试的时候可能经常会遇到下面的代码:String a= new String("abc");String b= new String("abc"); System.out.println(a==b);System.out.println(a.equals(b));输出结果如下:falsetrue那为什么两个输出结果不一原创 2017-12-15 18:02:46 · 262 阅读 · 0 评论 -
JAVA 对象引用&对象赋值
JAVA 对象引用,以及对象赋值 关键字: java对象 引用Java对象及其引用关于对象与引用之间的一些基本概念。 初学Java时,在很长一段时间里,总觉得基本概念很模糊。后来才知道,在许多Java书中,把对象和对象的引用混为一谈。可是,如果我分不清对象与对象引用, 那实在没法很好地理解下面的面向对象技术。把自己的一点认识写下来,或许能让初转载 2017-12-20 16:25:27 · 236 阅读 · 0 评论