Android 三种方式实现三角形气泡效果、自定义View、shape、点9图

背景 这期需求中,项目需要这样一个情况 乍一看,用个图片就可以解决,一个线性布局、垂直摆下去,所以一开始我是这样尝试的,后来发现美工给我切的图很不合适,不同手机显示效果也不一样,所以后来放弃了。以下是解决方案 使用.9图 这个就不用说了,继续找美工小姐姐切一个.9图,即可,但因为之前麻...

2018-08-28 19:41:39

阅读数 2889

评论数 0

如何给女朋友解释清楚Synchronized的三种应用方式

事情的起因是这样的,女友面试的时候被面试官问到了一个问题就是关于synchronized的几种应用方式,她没理解,于是我决定给他理一理,就有了这篇博客。 synchronized的三种应用方式 修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁 修饰静态方法,作用于当前类对象...

2018-08-10 18:00:38

阅读数 160

评论数 1

结合源码理解RecyclerView的四级缓存机制

很多人提起RecycleView和ListView的时候必定会提起两者的差异,都说RecycleView好,多布局,多缓存,等等。今天我们结合下源码理清一下RecycleView的多级缓存机制,我研究代码喜欢先从宏观了解下整体,然后再分个进入。所以等会先介绍下管理RecycleView的缓存类,然...

2018-08-07 17:44:58

阅读数 628

评论数 0

Volatile 以DCL失效谈内存屏障用来禁止指令重排序的原理

引言 大家都知道volatile关键字具有两重语义即: 1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。 2)禁止进行指令重排序。 第一个好理解,也就是说每次修改都立即更新到主内存,那么禁止重排序这个在网上更多的解释是说使用了...

2018-06-16 16:45:22

阅读数 469

评论数 3

你真的了解Java引入异常机制的作用么?

前两天腾讯面试官问了我这样一个问题,为什么java要引入异常处理机制,让程序崩溃不是很不友好么?我之前也没思考过这个问题,临场发挥,想了想给出了这么一个回答:“发生了异常,说明程序已经发生错误了,如果不及时处理异常,错误将会方法,发生不可预期的损失,最好就是在源头掐灭它,而让程序崩溃也是无可奈何的...

2018-06-07 17:39:18

阅读数 735

评论数 0

利用Synchronized、wait和notify简单实现生产者消费者模型

什么是生产者消费者模型 生产者和消费者之间通过一个容器解决耦合,两者之间不直接通讯,每当消费者消费,都直接从容器中取,相当于找了个代理一样,每当生产者生产完不用等待消费者消费,消费者消费完也不用等待生产者生产,直接挂起即可。解决了消费与生产直接的不平衡,高效利用了资源。 有哪些应用? 比如j...

2018-05-30 15:41:24

阅读数 616

评论数 1

图解数字签名过程

数字签名,它的作用跟手写签名其实是一样的,用来证明某个消息或者文件是本人发出/认同的,利用公钥加密系统保证不可伪造和不可抵赖两个特性 使用的签名算法有: RSA,基于大整数分解问题 DSA,基于离散对数问题 ECDSA,属于DSA的一个变种,基于椭圆曲线上的离散对数问题 我们以RSA做简单分...

2018-05-27 20:58:13

阅读数 819

评论数 0

Android8.0 对重复代码行的处理

问题 public class MainActivity extends AppCompatActivity { public static String TAG ="TAG"; @Override protected vo...

2018-05-25 14:19:59

阅读数 263

评论数 2

设计模式之代理模式总结

代理模式目前我已知的实现有三种:静态代理、动态代理、Cglib代理,只对常用的前两种做一个总结,后面那种了解下,用的不多。 定义 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即...

2018-05-21 10:55:20

阅读数 62

评论数 0

Android 事件总线 EventBus入门及使用

何为事件总线? 是对发布-订阅模式的一种实现。 它是一种集中式事件处理机制,允许不同的组件之间进行彼此通信而又不需要相互依赖,达到一种解耦的目的。学习它之前最好先了解下观察者模式 说白了就是不同组件间通信的一种标准也可以用于异步线程与主线程通信,相比于传统的Handler、BroadcastR...

2018-05-14 21:30:21

阅读数 100

评论数 0

Java Observer与Observable源码解析

前言 Observer与Observable是JDK中内置的类型,是实现观察者模式重要的两个类,学习设计模式的时候只是简单的知晓这两个类中的一些方法使用,并不知道具体是咋样的,所以特地研究了一下其源码实现,如果需要知道怎么使用,请移步 设计模式总结 Observer 先来看下源码 //...

2018-05-14 16:14:49

阅读数 83

评论数 0

设计模式之观察者模式总结

快速引入 观察者模式又名订阅模式,使用率非常高,以至于JDK都内置了实现观察模式所用到的Observer和Observable,这个模式中有两个角色,一个是观察者,一个是被观察者。拿学校中的广播来说,广播发送者是被观察者,而你是观察者,发送一条广播,所有观察者都会知道。 实现 就拿上面的学校...

2018-05-14 14:18:15

阅读数 65

评论数 0

设计模式之命令模式总结

快速切入 命令模式,顾名思义是对命令的封装,其实也就是一个个行为,同属于行为模式中你的一种,我们平时处理一个命令是这样的,将各种命令写入一个类中,然后客户端直接调用即可。这样的话其实一个类就职责不明,干了很多事,代码也非常多,维护困难。如果用命令模式的话会被分解成这样:请求者(调用命令执行操作)...

2018-05-13 17:10:40

阅读数 61

评论数 0

设计模式之责任链模式总结

快速引入 责任链模式,首先肯定是一条链,然后链上每个节点都有他的责任,任务在链上传递,假设从第一个开始传递,传递到下一个时候如果他有责任处理这个事情就处理,没责任,或者不能处理就传递下去,依次这样。直到传到最后一个或者事情被处理完。这个非常好理解,跟日常公司中报销一样,如果你要报销5w,如果你的...

2018-05-13 13:49:21

阅读数 231

评论数 2

设计模式之状态模式总结

快速解释 定义是这么写的,当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。仔细揣摩这段定义,可以得出这么些细节,能使用状态模式的首先得有状态,有行为,而且状态不同,行为也不同,状态是可以改变的。老方法,我们举例说明,比如我们人,有生病和健康两种状态,在生病状态的时候我们除...

2018-05-12 18:28:36

阅读数 68

评论数 0

设计模式之策略模式总结

快速引入 在做项目中经常会遇到,实现某一个功能有多种算法或者策略,我们可以根据应用场景的不同选择不同的算法或者策略来完成该功能。比如我对一个数组排序,有时候想用冒泡排,有时候想用快排排序,那么这个排序功能就有多种算法和策略。如果没学习此设计模式之前我们可能会这么实现,把所有的算法写进一个类中,然...

2018-05-12 15:05:24

阅读数 93

评论数 0

设计模式之工厂方法模式总结

名词快速解释 如果我们做某件事,把他交给另外一个人做完,而我只要得到答案即可,并不想知道过程,而且有可能这些事的细节不同,但是总归是一类事,你都得给我完成。就好像你是个土豪,去买车,我今年想要定制版的林肯加长,你造车厂给我造好就行了,明年又想要兰博基尼,你工厂又给我弄好就行了,我也不想知道你怎么...

2018-05-11 21:31:00

阅读数 57

评论数 0

Java -克隆实现方式 深克隆与浅克隆

我们平时复制一个值类型数据直接复制就好了,但是复制一个引用类型比如对象的时候就无从下手了,因为赋值只能赋引用,而如果手动操作把里面的值取出赋给新对象又太麻烦耗时了,有没有好办法?java提供了clone。克隆类型在Java语言中,数据类型分为值类型(基本数据类型)和引用类型,值类型包括int、do...

2018-05-10 16:43:43

阅读数 1321

评论数 0

设计模式之原型模式总结

其实原型模式说白了就是克隆,用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。为什么能保证性能?是因为,原型模式是在内存中的二进制流的拷贝要比直接new好,特别是要在一个很大的循环体中...

2018-05-10 16:08:24

阅读数 79

评论数 0

设计模式之Builder模式总结

大家在没有接触builder模式之前,简单总结,超易入门理解

2018-05-09 18:14:31

阅读数 66

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭