
Java
文章平均质量分 82
brycegao321
Android/iOS/后台/H5全栈
展开
-
Java注解-手把手教你
使用demo带你理解注解是什么鬼原创 2016-09-09 11:29:50 · 3188 阅读 · 0 评论 -
Java CAS(Compare And Swap)的一点理解
CAS: Compare And Swap, 即比较和替换。思想: CAS的比较、替换操作是非阻塞操作, 它有3个参数分别为内存值、预期值和更新值。 当内存值和预期值匹配时则更新, 不匹配时直接返回。PS: CAS比synchronized效率要好, 因为CAS是c语言实现的cpu锁机制, synchronized是Java锁。 简单的说CAS提供了一种实现原子操作的方法, 都封装...原创 2018-01-18 19:32:52 · 1607 阅读 · 0 评论 -
Dubbo基础---RPC是如何实现的
Java RPC通讯的实现方式, 介绍了Java对象和字节流互相转换的方法原创 2018-02-09 11:22:37 · 9884 阅读 · 1 评论 -
深入浅出ReentrantLock
图文并茂讲述ReentrantLock的原理原创 2018-02-26 15:38:03 · 578 阅读 · 0 评论 -
LruCache为什么要用LinkedHashMap?
LruCache原理和LinkedHashMap的使用, 双向链表header是“哨兵结点”原创 2017-08-19 19:06:18 · 1694 阅读 · 0 评论 -
Java对象到底多大?
深入介绍Java内存模型原创 2016-10-31 23:08:23 · 2480 阅读 · 1 评论 -
sychronized原理
每个Java程序员都知道synchroniezd关键字, 用在多线程并发时解决共享冲突的问题。 但它的实现原理是什么呢? 其实跟Java CAS原理类似, 就是计数0变1或1变0的过程。 synchronized的应用场景:1、用在实例方法, 其实就是对当前实例加锁;2、用在代码块, 括号里就是加锁对象;3、用在静态方法, 其实就是对类对象加锁;字节码说明: http...原创 2018-03-15 14:18:19 · 565 阅读 · 0 评论 -
Dubbo基础---Java SPI
Java SPI原创 2018-02-23 16:45:09 · 342 阅读 · 0 评论 -
HashMap源码分析(JDK1.8)- 你该知道的都在这里了
深入浅出的介绍HashMap原理原创 2016-09-13 16:40:50 · 9907 阅读 · 15 评论 -
Java/Swift 单例模式的多种写法
单例模式特点:1、 一个进程只能有一个实例;2、不能有派生类;3、对于插件化app, 单例模式有坑。 不同插件可能都实例化出一个单例对象, 因为classloader不同。 依据Java语言特性, 要防止反序列化和反射创建多个实例的漏洞。 设计模式的书本上一般是这样写: public final class SingleTo...原创 2016-07-01 15:20:40 · 1268 阅读 · 0 评论 -
为什么推荐使用注解代替枚举?
在做内存优化时, 推荐使用注解代替枚举, 因为枚举占用的内存更高。 这是为什么呢?编写一个最简单的枚举类, 请问问什么枚举是静态的单例? 脑子有点懵~~~public enum Numbers { One, Two, Three;}javac编译Numbers后生成字节码, 我们想看看到底Numbers.class到底有什么。 因为字节码比较晦涩难懂, ...原创 2018-04-10 15:12:41 · 4933 阅读 · 0 评论 -
红黑树TreeMap总结
红黑树是自平衡的二叉查找树,又称二叉B树。它可以在O(logN)时间复杂度内完成查找、增加、删除操作。红黑树是在二叉查找树基础上增加了着色和左右旋转使得红黑树相对平衡, 与AVL树相比,红黑树并不追求所有子树的高度差不超过1,而是保证从根节点到叶子节点的最长路径不超过最短路径的2倍。红黑树通过如下性质实现了自平衡:1. 节点必须是黑色或红色;2.根节点必须是黑色;3.所有NIL节...原创 2018-12-30 16:07:16 · 575 阅读 · 0 评论 -
自定义lint规则解决开发中的问题
一、背景在发贝壳2.1.1版本第一次灰度时遇到了一个崩溃(崩溃在租房),第二次灰度版本时发生了相同原因的崩溃(崩在了二手)。 当时的做法是发现一处解决一处, 但没发现的隐藏问题是个定时炸弹。日志:java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = ...原创 2019-01-08 19:30:22 · 1690 阅读 · 1 评论 -
Arrays.asList的坑
问题:直接原因: public void add(int index, E element) { throw new UnsupportedOperationException(); }举个例子:下面2种方式有什么区别?第一种第二种第二种运行时会崩溃!!!/** * Returns a fixed-size list backed by the...原创 2019-03-13 21:19:43 · 297 阅读 · 0 评论 -
HashMap和LinkedHashMap的区别
无序其实是HashMap按照桶下标输出,有序是LinkedListHashMap按照链表输出。原创 2017-12-27 17:27:59 · 5669 阅读 · 0 评论 -
理解Java内部类
外部类和内部类相互访问是如何实现的?原创 2016-07-06 15:41:31 · 1488 阅读 · 0 评论 -
Java并发---synchronized、Lock、Condition的区别
讲述Java并发锁的区别和使用方法原创 2017-12-12 18:16:33 · 2693 阅读 · 0 评论 -
对java中static关键字的理解
static可以声明静态变量、静态方法、静态类、代码块。 静态变量: 当我们需要一个可以全局访问的对象时, 我们首先想起静态变量/对象, 因为它是当前进程中的唯一引用, 但不一定是唯一对象(看看多线程时的单例模式就明白了)。 代码很简单: public static int value或Object obj。 静态方法: 就是在原创 2016-07-01 15:44:44 · 1256 阅读 · 0 评论 -
fresco源码分析-内存回收
我觉得内存管理是三方图库最重要的点, 而且该知识点能够应用到项目里, 所以着重看了一下fresco是如何回收内存的。 fresco内存释放分为2种方式: 1、按照LruCach的方式释放引用计数为0对象, fresco内部逻辑实现; 2、应用退到后台、手机低内存等场景下主动释放fresco的内存, 包括引用计数不为0的对象, 需要传事件给fresco。 参考: ht...原创 2016-09-05 15:31:11 · 5205 阅读 · 4 评论 -
fresco源码分析-软引用的黑科技
fresco 软引用原创 2016-09-03 09:24:14 · 6059 阅读 · 0 评论 -
Fresco源码分析-SimpleDraweeView在ListView里怎么释放内存的?
在ListView/GridView中使用SimpleDraweeView, 为什么不会OOM? 图片是在哪里释放的?原创 2016-09-23 17:37:42 · 2679 阅读 · 0 评论 -
深入理解Java内存模型
Java虚拟机的运行时内存按照类型可分为5部分:Java方法区、Java栈、Native方法区、Java堆和程序计数器。 其中栈和程序计数器不能跨线程访问。程序计数器:是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。每条线程都需要有一个独立的程序计数器,各条线程之间计数器互不影响,独立存储,而且永远不会发生Out of Memory问题,其它四种内存区域都可能出现OOM现原创 2016-10-21 23:17:35 · 1800 阅读 · 2 评论 -
RSA非对称加密的坑
RSA加解密的Java实现原创 2016-09-20 09:03:44 · 2730 阅读 · 0 评论 -
用Swift3.0和Java编写生产者消费者模式
iOS10 Swift3.0 实现生产者消费者模式原创 2016-12-27 23:41:56 · 1172 阅读 · 0 评论 -
详解快速排序
摘自百度百科: 快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 一趟快速排序的算法是:1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;2)以第一个数组...原创 2017-03-17 15:51:20 · 402 阅读 · 0 评论 -
如何反射出对象的所有属性?
对比JS、Java和Swift实现反射的区别原创 2017-03-16 14:56:40 · 949 阅读 · 0 评论 -
阿里巴巴Java开发手册v1.2.0读后感
Java规范 HashSet、ArrayList分析原创 2017-07-05 10:04:54 · 702 阅读 · 0 评论 -
初识AOP面向切面编程
AspectJ 动态代理原创 2017-06-15 17:23:17 · 355 阅读 · 0 评论 -
JavaScript如何实现跨域访问(CORS)?
JavaScript跨域下载另一个服务器的文件, 以及HTTP访问控制(CORS)的相关知识;最终需要设置SpringMVC的配置文件。原创 2016-10-17 21:01:04 · 4575 阅读 · 0 评论 -
篡改Java final参数
final参数有初值时不可改, final参数无初值时可以改。原创 2017-11-09 14:34:25 · 365 阅读 · 0 评论 -
阿里p3c是CheckStyle、FindBugs的补充
阿里的checkstyle即p3c,是检查Java代码规范的必备利器。原创 2017-10-16 09:37:13 · 10274 阅读 · 0 评论 -
代码重构-常量相关
使用内部类重构key/value等参数, 解开调用方和被调用方的耦合原创 2017-11-24 11:25:42 · 455 阅读 · 0 评论 -
Java和Kotlin编译基础知识
Java和Kotlin都是跨平台语言, 归功于在编译时生成的字节码与平台无关, jvm在装载字节码后即可运行。JavaKotlin编译javackotlinc运行javakotlinJava语言使用javac编译为字节码, Kotlin使用kotlinc编译为字节码;在Android Studio的安装目录下保存着Kotlin插件, Kotlin目...原创 2019-05-27 15:47:52 · 1435 阅读 · 0 评论