DataBinding是可以用来实现MVVM的一种很合适的方案,可以极大的精简Activity的逻辑代码。他能够在xml中引入简单的逻辑代码,也能够非常灵活的利用View自带的属性进行设置,同时也支持数据的双向绑定或者是单纯的View绑定。
more >>DataBinding是可以用来实现MVVM的一种很合适的方案,可以极大的精简Activity的逻辑代码。他能够在xml中引入简单的逻辑代码,也能够非常灵活的利用View自带的属性进行设置,同时也支持数据的双向绑定或者是单纯的View绑定。
more >>最近打算写一个系列分析Jatpack的源码,所以先看一下有那些。Jetpack是由多个库组成的套件,用于减少模板代码并编写在各种Android版本和设备中一致允运行的代码。
他包含以下常用套件
内容主要包括Dart的变量声明,基础类型,基本操作符,方法声明和使用,类声明和使用,抽象与继承,泛型和枚举。在Dar中,一切都是对象,包括数字,null,函数等。
在变量只是声明没有被赋值的情况下,那么他的默认值是null,不论是数字还是bool还是字符串等其他。
dart是强类型语言,与Java一样。他可以使用var
关键字声明变量,使用var
声明的变量假如已经初始化了,那么他就会推断出对应初始化的类型,假如没有初始化,那么他是属于dynamic
类型的。
对于使用dynamic
关键字声明的,他的值类型是可以一直修改的。例子如下:
1 | dynamic a = 10; |
本文基于java8的代码,是分析他的数据结构,插入,查询等功能。他既实现了List,也实现了Deque,所以它既可以当做动态数组,也可以像队列那样子去使用。
他的成本变量有以下几个:
1 | // 长度,也就是元素个数 |
Node类的声明如下:
1 | private static class Node<E> { |
从数据结构上我们就可以看得出LinkedList他的数据结构是以链表的形式存在,有点是插入,删除效率高,确定是无法快速通过下标进行直接查询。
more >>源码版本是java1.8。主要是分析他的增删查改,扩容机制,迭代器使用等。他基本复写了AbstractList
和AbstractCollection
中有所实现的方法。
toArray()
方法转换成当前ArrayList可以装下的列表。1 | ArrayList() |
原型模式:使用原型实例指定待创建对象的类型,并且通过复制这个原型类创建新的对象。
原型模式也是用于创建对象的设计模式,它与工厂模式不太一样,一般原型模式是通过实现Cloneable
接口,然后端上实现Object的clone()
,也可以不通过Cloneable
,自己通过原有对象去创建新的对象。
使用Cloneable
的方式,即通过调用clone()
方法(最终调用Object
的clone
方法),会有两种情况
clone()
方法调用,另外一种是通过序列化的方式,通过这种方式避免多层克隆的问题参考文章:
我们在编写复杂页面的时候,一般使用RL控件。现在我们可以尽量使用ConstraintLayout进行替换,效率高,更加方便布局,性能也更好。而且相对于RelativeLayout,他更加灵活,比如RL的子控件假如是layout_centerHorizontal
或者是类似的定义了之后,他们其他子控件参照与该控件的那些toXXXOf
就会失效,有些居中操作也不好处理。他的不好地方可能是一开始不适应,而且会相对复杂,编写代码较多,但是适应之后就变得比较舒服与合适。
代理模式是java常见设计模式中的一种,他的主要作用是提供一个代理给外部访问,真实执行的对象通过代理间距去执行。比如:
1 | fun main() { |
该模式主要是应用在一个类对另外一个类的代理操作,他的缺点是当有多个类(比较多不同类,不同层级等)需要代理的时候,需要编写较多代理类,这时候我们就可以引入动态代理了。
more >>
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true