![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java 小细节备忘
qinxue24
冠捷科技(AOC)、融云即时通讯(RongCloud)、滴滴出行、抖音
展开
-
bytesToHex 求哈希
bytesToHexbyte[] 转 Hax 字符串public class Util { private final static char[] hexArray = "0123456789ABCDEF".toCharArray(); //Original source: https://stackoverflow.com/a/9855338/1389357 pu...原创 2019-12-20 11:13:31 · 1934 阅读 · 0 评论 -
Android 线程安全(二)CAS
CASjava中CAS (Compare-and-Swap),比较替换,利用交换指令CMPXCHG来实现,能够保证操作的原子性public final boolean compareAndSet(int expect, int update)参数 (旧值,新值)旧值用于校验是否是期待的值,是就能替换成功,不是则失败,可以继续重试来更新。java中自旋锁就是通过循环替换markwork指向来...原创 2019-06-02 17:50:40 · 202 阅读 · 0 评论 -
Java 死锁
Java 死锁死锁代码Demo private void testDeadLock() { final Object lockA = new Object(); final Object lockB = new Object(); Thread thread1 = new Thread(new Runnable() { ...原创 2019-06-02 15:22:59 · 503 阅读 · 0 评论 -
Android 线程安全(二) synchronized
synchronized 关键字一、使用方式1、修饰普通方法,锁对象为类实例2、修饰静态方法,锁对象为类class实例3、修饰代码块,锁对象为括号里的对象 private synchronized void fun(){// 普通方法互斥 } public synchronized static void funStatic(){// 静态方法互斥 ...原创 2019-05-31 17:51:08 · 615 阅读 · 0 评论 -
Android 线程安全(一) volatile
目录线程安全关键字一、volatile1、可见性2、防止指令重排线程安全关键字一、volatile1、可见性前提:变量保存在主存,如果线程修改变量要先将主存拷贝到线程缓存修改,之后再同步到主存。可见性:是指只能满足一个线程写,多线程读的时候,值正确。原理:1、volatile 声明的变量假设B线程缓存了主存的变量并修改(原子修改不是++这种非原子操作),线程A来读取主存的变量,jv...原创 2019-05-31 13:47:01 · 495 阅读 · 0 评论 -
java深拷贝和浅拷贝
java 中的复制浅拷贝和深拷贝之前的区别浅拷贝只会将引用赋值,指向原来的对象地址,拷贝后内存中还是一个对象。深拷贝会复制引用的对象,拷贝后内存有两个对象。(原生clone方法只能复制第一层,如有嵌套对象,则浅拷贝,嵌套的对象,因此需要重写clone自己处理)测试代码javaBeanpublic class User implements Cloneable {...原创 2018-07-16 13:41:57 · 130 阅读 · 0 评论 -
java ++运算符
private void test() { for (int i = 0; i < 10; i++) { int a = 0; int b = a++; Log.i(TAG, "b = " + b); } }这里输出值都是0,与C不一是致的。C会返回自己增加后的值,java...转载 2018-05-06 15:48:17 · 306 阅读 · 0 评论 -
Java String和new String,Stringbuilder,StringBuffer
工作中遇到字符串相关的BUG,OOM了,所以去看了下崩溃的日志,在Array类中,数组的崩溃,于是详细的查阅了一下Java字符串中的工作原理,就是下面的这个图啦,转载自最后的链接博客。简单总结下:1)String str = "a"这种字符串,是在编译期作为一个常量保存在字符串常量池的,本质上是个Char[] 数组。如果又String str2 ="a" ,因为之前字符串常量池中有这个常量...转载 2018-03-29 15:19:40 · 982 阅读 · 0 评论 -
算法二
//快速排序 public void sort(int arr[], int low, int high) { int l = low; //游标处在的位置是不稳定的位置 即不能够确定此处与标记的比较 l-1 必小于标记 int h = high; //游标处在的位置是不稳定的位置 即不能够确定此处与标记的比较 h+1 必大于标记原创 2017-08-14 16:34:49 · 206 阅读 · 0 评论 -
Java 中 volatile关键字与字撕裂
Java 中 volatile关键字与字撕裂原创 2017-06-13 13:22:31 · 637 阅读 · 0 评论