- 博客(29)
- 收藏
- 关注
原创 为什么往Github push提交不用输密码?
背景今早我一如既往的往着自己的Github仓库提交代码,在命令行中熟练地输入:git push很快我的本地提交就被同步到Github上了,忽然我感到一个严肃的问题:为什么我提交代码不用输我的帐号密码?难道我的Repo任何人都可以随意push代码吗?不寒而栗,于是我开始搜索github push 权限历程最开始找到的是如何在Github多人开发并管理权限的问题,例如:Gi...
2019-07-25 16:08:19
1001
3
原创 学习Dagger2笔记:【10】dagger中依赖关系与继承关系
目的通过前面几篇文章,我们了解到@Module代表着一个数据仓库,提供需要注入的依赖实例;而@Component代表着一个桥接类,桥接了被注入对象和其依赖的注入器/工厂类。打开这两个注解的源码,会发现原来还有新的世界等待着我们去探索:@Module.includes、@Module.subcomponents、@Component.dependencies,这些就是本系列压轴中要介绍的内容了@...
2019-05-17 17:45:59
947
原创 学习Dagger2笔记:【11】dagger.android
回顾我们回顾一下目前为止的代码,我们通过ApplicationModule数据仓库,提供应用名数据,而Activity和Computer为了拿到这个数据,是通过定义@Subcomponent,使其与ApplicationComponent称为类似内部类组合的关系,从而可以使用到ApplicationModule中的内容。在Android系统中,Activity、Fragment都是由系统创建的,...
2019-05-17 17:45:49
896
1
原创 学习Dagger2笔记:【9】Bind系列注解
目标本篇文章的目标是介绍dagger中Bind家族相关的注解,有@Binds、@BindsOptionalOf、@MultiBinds、@BindsInstance@Binds之前我们一直没有为CPU创建CPUMoudle,因为我们将@Inject注解到其构造函数上了,dagger就会自动生成CPU_Factory工厂类,当有其他对象需要依赖CPU时,直接调用此工厂类去创建而不用在@Comp...
2019-05-17 17:17:11
2039
原创 学习Dagger2笔记:【8】注入到Set和Map容器
目标我们知道,每台电脑中都有硬盘,并且可能不止一张,每个电脑也会连接很多外设,本文的目的就在于将这些东西用dagger注入到我们的Computer中@IntoSet & @ElementsIntoSet每张硬盘有着不同的类型(机械硬盘和固态硬盘),还有者不同的容量,在Computer中如果将每张硬盘都单独作为一个成员变量,未免扩展性太低了,因此我们用Set容器保存这些硬盘:clas...
2019-05-17 17:16:00
1063
1
原创 学习Dagger2笔记:【7】@Scope
目标:使用dagger注入“单例”通过我们之前对@Provides生成的工厂类、@Inject注解变量或方法生成的注入器以及@Component生成的桥接类的分析,我们发现dagger每次在注入依赖时,其实都会通过工厂类创建一个新的实例,所以在上一篇文章最后,我抛出了dagger中单例的问题,本篇也是围绕着此问题展开的Kotlin中的单例众所周知,在kotlin中通过object可以非常简单...
2019-05-17 17:14:16
708
原创 学习Dagger2笔记:【6】Provider & Lazy
再看@Component我们之前使用@Component都仅仅是在其注解的接口中添加一个inject方法,作为进行依赖注入的入口,但@Component的作用远不止如此新需求为了深入研究@Component,我们新增两个需求需求1在Activity显示Computer信息时,我们要求根据当前时间(System.currentTimeMillis())单双作为区别,如果单数就显示wind...
2019-05-17 17:12:54
866
原创 学习Dagger2笔记:【5】@Qualifier
dagger与抽象继承、封装和多态是面向对象的三大特征,这三大特征无一不是围绕着抽象这个词展开的,但在前几篇的例子中,我们的依赖都是具体的类型,比如Computer、CPU、Memory,严重违反了依赖倒置原则:模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的总之,我们接下来需要加上抽象的思想,看看dagger怎样处理新增需求现在我们将Co...
2019-05-17 17:10:45
769
原创 学习Dagger2笔记:【4】@Component
目标上一篇说到我们想要dagger自动生成出类似于我们手写的Bridge桥接类,本文就是对实现此功能的@Component做一个简介分析,来看看dagger中怎样使用@Component吧依赖图在介绍本篇主角@Component之前,我们先根据已有代码画一个依赖图:(个人认为使用dagger就必须要弄清楚自己的依赖图,无论是画在纸上还是在脑海中,一定要想清楚再编写dagger)如上图所示...
2019-05-17 17:08:30
1256
原创 学习Dagger2笔记:【3】@Module & @Provides
使用@Module和@Provides注解还记得上一节中添加的需求吗?要求显示Computer信息前,还要显示当前页面的生成时间为此,我们对Activity添加了如下成员变量:@set:Inject lateinit var timestamp: Date它是一个java.util.Date对象,自然我们是没法将@Inject注解添加到其构造函数上的,因此我们也就没有Date的工厂...
2019-05-17 17:05:11
2083
原创 学习Dagger2笔记:【2】@Inject
Kotlin中的注解在开始讲解注解之前,先看下kotlin中的注解有何不同我们知道以下kotlin代码:class Test(var temp: Int)转换为Java代码后是:public final class Test { private int temp; public final int getTemp() { return this.temp; ...
2019-05-17 16:59:51
2165
原创 学习Dagger2笔记:【1】依赖与注入
依赖与注入都说dagger2是一个依赖注入的框架,那么什么是依赖,什么又是注入呢?下面以显示一台电脑的信息来举例:每台电脑(Computer)有其操作系统(os)和定价(price)电脑内有处理器(CPU),处理器有着自己的序列号(ID)电脑内有内存(Memory),内存有着自己的容量(size)电脑执行(execute)时,会分别执行处理器和内存,它们在执行时都将自己信息以文本方式返...
2019-05-17 16:58:21
816
原创 学习Dagger2笔记:【0】前言
文章目的本系列为个人学习笔记,更多在于个人理解以及对源码的剖析,可能对于想快速上手的人不那么适合普遍认为dagger难以上手,但我认为一是因为官网引导不够详细和普适(用怎样制造咖啡为例着实不熟悉,各种不完整代码片段看得人一脸懵逼),二是大部分文章只说了一些基础用法,一旦涉及到高级用法就潦草带过,难以理解我试着从dagger的使用、设计模式、源码理解几个方面去分析,由浅入深本系列主要以ko...
2019-05-17 16:56:29
959
2
原创 记一个有趣的问题
题目的重点应该是原型与定时器,题目如下:function MyObject(myInfo) { this.info = myInfo;}MyObject.prototype.sayInfo = function() { console.log(this.info);};MyObject.prototype.repeatSay = function() { setInterval(
2016-07-22 11:43:29
677
原创 js各种模式的自定义对象
js中用的最多的肯定就是对象(Object)了,通过将某些属性和某些方法放到某个对象内进行封装,可以避免之后的各种繁琐工作
2016-07-22 11:04:38
606
原创 纯CSS制作简单几何图形
在网页中我们经常看到三角形、梯形、多角形等小巧精美的元素,这些简单的几何图形其实并不需要图片模拟,而直接通过纯CSS编写就可以得到
2016-07-12 11:01:34
1352
原创 flex弹性布局
2009年,W3C提出了一种新的方案——Flex布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持(IE10+)
2016-07-11 16:18:40
1469
原创 三栏式布局
通常来说,三栏式最基本要解决的是 左右两侧固定宽度,中间列自适应宽度,另外根据浏览器从上至下的渲染原理,通常中间栏才是最主要的内容,最好能在DOM结构上 将中间栏放在更前面
2016-07-08 18:14:10
1330
原创 HTML/CSS 快速编写必备 - emmet插件
Emmet的前身是大名鼎鼎的Zen coding,如果你从事Web前端开发的话,对该插件一定不会陌生。它使用仿CSS选择器的语法来生成代码,大大提高了HTML/CSS代码编写的速度
2016-07-08 10:56:26
1302
1
原创 CSS 高端进阶 - LESS
LESS 是一门 CSS 预处理语言,它并不是去取代CSS,而是去扩充CSS,给CSS于 变量、混合、函数、运算 等功能,让CSS的编写更加方便,结构上更为清晰
2016-07-05 15:28:56
1197
原创 正则表达式
在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码,最多的用途就是匹配带有一定规律的字符串
2016-07-05 15:05:22
2341
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人