摘要:
No1: 设置文件默认名是setting.gradle,放在根目录下,大多数作用都是为了配置子工程 No2: 一个Project包含很多个Task。Task就是一个操作,一个原子性的操作。其实它是Project对象的一个函数 No3: 结果 说明这两个任务是一样的 No4: 依赖:用于控制执行顺序
阅读全文
posted @ 2018-03-16 17:21
嘉禾世兴
阅读(207)
推荐(0)
摘要:
No1: Groovy中分号不是必须的 No2: Groovy中,单引号和双引号都可以定义一个字符串常量,不同的是单引号标记的是纯粹的字符串常量,而不是对字符串里的表达式做运算,但是双引号可以。 结果 No3: List 结果 No4: Map 结果 No5: 方法括号可省略 结果 No6: ret
阅读全文
posted @ 2018-03-16 15:58
嘉禾世兴
阅读(257)
推荐(0)
摘要:
No1: Window下搭建Gradle:添加GRADLE_HOME环境变量,然后把GRADLE_HOME\bin添加到PATH系统变量里保存即可。完成后打开CMD,运行gradle -v来验证 No2: 运行 No3: 生成Wrapper 生成文件 No4: 意思是配置Wrapper使用2.4版本
阅读全文
posted @ 2018-03-16 13:09
嘉禾世兴
阅读(296)
推荐(0)
摘要:
No1: Project的build.gradle文件添加 Module:app的build.gradle添加 No2: @Inject、@Component 调用 No3: @Module、@Provides 调用 No4: @Named、@Qualifier 调用 No5: @Singleton
阅读全文
posted @ 2018-03-14 17:02
嘉禾世兴
阅读(309)
推荐(0)
摘要:
No1: EventBus三要素: 1)Event:事件 2)Subscriber:事件订阅者 3)Publisher:事件发布者 No2: EventBus的4种ThreadMode(线程模型): 1)POSTING(默认):该事件是在哪个线程发布出来的,事件处理函数就会在哪个线程中运行 2)MA
阅读全文
posted @ 2018-03-14 17:02
嘉禾世兴
阅读(197)
推荐(0)
摘要:
No1: 标准注解: 1)@Override:覆写 2)@Deprecated:过时 3)@SuppressWarnings:取消警告 4)@SafeVarargs:申明使用了可变长度参数的方法 No2: 元注解:用来注解其他注解,从而创建新的注解 1)@Targe:注解所修饰的对象范围 2)@In
阅读全文
posted @ 2018-03-13 15:34
嘉禾世兴
阅读(308)
推荐(0)
摘要:
No1: 添加依赖库 Project的build.gradle文件添加 在Module:app的build.gradle文件添加 No2: 绑定控件id No3: 绑定资源 No4: 绑定监听 No5: 可选绑定 No6: ButterKnife注解处理器是ButterKnifeProcessor,
阅读全文
posted @ 2018-03-12 21:59
嘉禾世兴
阅读(209)
推荐(0)
摘要:
No1: RxJava使用 1)创建Observer(观察者) 或者 2)创建Observable(被观察者) 3)Subscribe(订阅) No2: RxJava的Subject 可以理解为Subject=Observal+Observer 1)PublishSubject:PublishSub
阅读全文
posted @ 2018-03-12 17:17
嘉禾世兴
阅读(214)
推荐(0)
摘要:
事件总线RxBus,替代EventBus和otto 1)创建RxBus 2)发送事件 3)接收事件 4)取消订阅事件
阅读全文
posted @ 2018-03-12 16:51
嘉禾世兴
阅读(288)
推荐(0)
摘要:
1)配置 2)修改请求网络接口 Retrofit请求接口返回Call。若结合RxJava,则需要把Call改为Observable 3)修改请求网络方法 4)请求返回数据格式封装 5)取消请求
阅读全文
posted @ 2018-03-12 14:29
嘉禾世兴
阅读(270)
推荐(0)
摘要:
No1: Lock接口 No2: 不要讲获取锁的过程写在try块中,因为如果在获取锁(自定义锁的实现)时发生了异常,异常抛出的同时,也会导致锁无故释放 No3: No4: 队列同步器(同步器)是用来构建锁或者其他同步组件的基础框架,它使用了一个int成员变量表示同步状态,通过内置的FIFO队列来完成
阅读全文
posted @ 2018-03-08 21:55
嘉禾世兴
阅读(510)
推荐(0)
摘要:
No1: Hybrid就是原生和Html5混合开发app No2: 插件化方法Altas或者DroidPlugin No3: 热修复技术可以把更新补丁上传到云端,此时APP就可以直接从云端下拉补丁直接应用生效 优势: 1)无需重新发版,实时高效热修复 2)用户无感知修复,无需下载新的应用,代价小 3
阅读全文
posted @ 2018-03-08 17:33
嘉禾世兴
阅读(219)
推荐(0)
摘要:
看阿里巴巴的《深入探索Android热修复》,里面的代码看不懂,一查才知道是Smali语法,百度了语法,转载如下 转载自smali 语言语法 1.smali apk文件通过apktool反编译出来的都有一个smali文件夹,里面都是以.smali结尾的文件。smali语言是Davlik的寄存器语言,
阅读全文
posted @ 2018-03-08 15:13
嘉禾世兴
阅读(667)
推荐(0)
摘要:
No1: Volley源码分析: Volley.newRequestQueue-> RequestQueue.start()-> CacheDispatcher.start()->CacheDispatcher.run()-> NetworkDispatcher.start()->NetworkDi
阅读全文
posted @ 2018-03-05 16:03
嘉禾世兴
阅读(394)
推荐(0)
摘要:
No1: 实现多线程的3中方法 1)继承Thread,重写run()方法 2)实现Runnable接口,并实现该接口的run()方法 3)实现Callable接口,重写call()方法 No2: 原子性: 对基本数据类型变量的读取和赋值是原子性操作,即这些操作是不可被中断的 只有语句1是原子性操作
阅读全文
posted @ 2018-03-04 21:20
嘉禾世兴
阅读(270)
推荐(0)
摘要:
No1: View的滑动 1)layout()方法的 2)offsetLeftAndRight()与offsetTopAndBottom() 对上面代码进行修改 3)LayoutParams(改变布局参数) 同样对上面代码进行修改 4)动画 5)scrollTo与scrollBy scrollTo(
阅读全文
posted @ 2018-03-04 20:29
嘉禾世兴
阅读(562)
推荐(1)
摘要:
接上篇《Android进阶之光》--Android新特性 No1: 组件: 1)底部工作条-Bottom Sheets 2)卡片-Cards 3)提示框-Dialogs 4)菜单-Menus 5)选择器 6)滑块控件-Sliders 7)进度和动态 8)Snackbar(底部可操作弹出框)与Toas
阅读全文
posted @ 2018-03-03 21:29
嘉禾世兴
阅读(1293)
推荐(0)
摘要:
Android 5.0新特性 1)全新的Material Design设计风格 2)支持多种设备 3)全新的通知中心设计--按照优先级显示 4)支持64位ART虚拟机 5)多任务视窗Overview 6)设备识别解锁--比如附近信任设备 7)Ok Google语音指令 8)Face unlock面部
阅读全文
posted @ 2018-03-03 18:22
嘉禾世兴
阅读(773)
推荐(0)
摘要:
非空校验一直是一个麻烦的问题,此模式可以稍微缓解 例: 增加一个NullAnimal 这样在Person类中就不需要“animal!=null”这句话了,疑问我们提供了一个实现接口的所有方法,不会再产生null对象。 animal对象可能由MVC框架映射产生,我们只要定义一个默认的映射对象是Null
阅读全文
posted @ 2018-02-14 11:00
嘉禾世兴
阅读(140)
推荐(0)
摘要:
No1: 单一职责原则提出了一个编写程序的标准,用“职责”或“变化原因”来衡量接口或类设计得是否优良,但是“职责”和“变化原因”都是不可度量的,因项目而异,因环境而异。 No2: 在类中调用其他类时务必要使用父类或接口,如果不能使用父类或接口,则说明类的设计已经违背了LSP原则 No3: 如果子类不
阅读全文
posted @ 2018-02-14 10:56
嘉禾世兴
阅读(174)
推荐(0)
摘要:
需求:设计一个MVC框架 (以下可能摘要不全,后期整理) 架构图: * 核心控制器:MVC框架入口,负责接收和反馈HTTP请求 * 过滤器:Servlet容器内的过滤器,实现对数据的过滤处理 * 拦截器:对进出模型的数据进行过滤,不依赖系统容器,只过滤MVC框架内的业务数据 * 模型管理器:提供一个
阅读全文
posted @ 2018-02-14 10:27
嘉禾世兴
阅读(452)
推荐(0)
摘要:
创建类模式包括工厂方法模式、建造者模式、抽象工厂模式、单例模式和原型模式。 其中单例模式要保持在内存中只有一个对象,原型模式是要求通过复制的方式产生一个新的对象。 【工厂方法(抽象工厂) VS 建造者模式】 共产方法模式关注的是一个产品整体,但在建造者模式中,一个具体产品的产生是依赖各个部件的产生以
阅读全文
posted @ 2018-02-14 09:38
嘉禾世兴
阅读(244)
推荐(0)
摘要:
接上篇《设计模式之禅》--备忘录扩展:clone方式的备忘录 需求:对象全状态备份方案 发起人 BeanUtils工具类 备忘录角色 调用 结果 初始化状态 state1=中国stat2=强盛state3=繁荣 修改后状态 state1=软件stat2=架构state3=优秀 恢复后状态 state
阅读全文
posted @ 2018-02-12 11:31
嘉禾世兴
阅读(194)
推荐(0)
摘要:
接上篇《设计模式之禅》--策略扩展:策略枚举 需求:使用clone方式实现备忘录模式 发起人角色 备忘录管理员角色 上面两项合并 调用 结果 初始状态是:初始状态...修改后状态是:修改后的状态...恢复后状态是:初始状态 注意: 使用Clone方式的备忘录模式,可以使用在比较简单的场景或者比较单一
阅读全文
posted @ 2018-02-12 11:20
嘉禾世兴
阅读(201)
推荐(0)
摘要:
接上篇《设计模式之禅》--代理扩展:动态代理 需求:加减法计算 调用 关键 Calculator.ADD.exec(a, b)
阅读全文
posted @ 2018-02-11 15:29
嘉禾世兴
阅读(180)
推荐(0)
摘要:
No1: 网络传输应用通常使用TCP、IP或UDP这三种协议实现数据传输。在传输数据的过程中,需要通过一个双向的通信连接实现数据的交互。在这个传输过程中,通常将这个双向链路的一端称为Socket,一个Socket通常由一个IP地址和一个端口号来确定。 No2: 在网络编程中有两个主要的问题,一个是如
阅读全文
posted @ 2018-02-09 17:10
嘉禾世兴
阅读(351)
推荐(0)
摘要:
接上篇《设计模式之禅》--代理扩展:强制代理 动态代理就是在实现阶段不用关心代理谁,而在运行阶段才指定代理哪一个对象。相对来说,自己写代理类的方式就是静态代理 面向切面编程(AOP)核心就是采用了动态代理机制 调用 结果 拓展: 调用
阅读全文
posted @ 2018-02-09 17:04
嘉禾世兴
阅读(186)
推荐(0)
摘要:
接上篇《设计模式之禅》--工厂方法扩展:实现单例 需求:就算你找到真实角色,也强制你使用指定代理 第一次尝试 结果 第二次尝试 结果 第三次尝试 结果
阅读全文
posted @ 2018-02-09 16:39
嘉禾世兴
阅读(204)
推荐(0)
摘要:
接上篇《设计模式之禅》--单例扩展:多例模式 需求:使用工厂方法模式实现单例模式 利用反射创建单例对象 还可以扩展单例构造器
阅读全文
posted @ 2018-02-09 14:50
嘉禾世兴
阅读(166)
推荐(0)
摘要:
需求:一个类只能产生两三个对象 运行结果如下
阅读全文
posted @ 2018-02-09 11:22
嘉禾世兴
阅读(187)
推荐(0)
摘要:
参考文档: 简明理解三次握手和四次挥手 TCP三次握手与四次挥手过程 No1: 为什么要三次握手? 答:三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收机能正常。 第一次握手:Client什么都不能确认;Server
阅读全文
posted @ 2018-02-08 15:20
嘉禾世兴
阅读(174)
推荐(0)
摘要:
No1: 客户端与服务器的交互流程: 1)客户端执行网络请求,从URL中解析出服务器的主机名 2)将服务器的主机名转换成服务器的IP地址 3)将端口号从URL中解析出来 4)建立一条从客户端与Web服务器的TCP连接 5)客户端通过输出流向服务器发送一条HTTP请求 6)服务器向客户端回送一条HTT
阅读全文
posted @ 2018-02-08 14:29
嘉禾世兴
阅读(229)
推荐(0)
摘要:
第一步: 第一层:Request--请求类型,JSON,字符串,文件 第二层:消息队列--维护了提交给网络框架的请求列表,并且根据响应的规则进行排序。默认情况下按照优先级和进入队列的顺序来执行,该队列使用的是线程安全的PriorityBlockingQueue<E>,因为我们的队列会被并发访问,因此
阅读全文
posted @ 2018-02-08 14:27
嘉禾世兴
阅读(304)
推荐(0)
摘要:
No1: 例如:http://www.*****.com/china/index.htm 1)http:// 代表超文本传送协议,通知*****.com服务器显示web页,通常不用输入 2)www 代表一个web(万维网)服务器 3)*****.com/ 这是装有网页的服务器的域名,或站点服务器的名
阅读全文
posted @ 2018-02-06 15:27
嘉禾世兴
阅读(413)
推荐(0)
摘要:
接上篇《计算机网络》读书笔记(一)--计算机网络体系结构 No1: 网络层与IP协议配套使用的还有四个协议: 1)地址解析协议ARP(Address Resolution Protocol) 2)逆地址解析协议RARP(Reverse Address Resolution Protocol) 3)网
阅读全文
posted @ 2018-02-06 09:50
嘉禾世兴
阅读(204)
推荐(0)
摘要:
最近翻出大学的教材《计算机网络(谢希仁版)》看一看,网络基础还是很重要的。 No1: OSI的七层协议体系结构的概念清除,理论也较完整,但它既复杂又不实用。 TCP/IP体系结构则不同,但它现在却得到了非常广泛的应用。TCP/IP是一个四层的体系结构,它包含应用层、运输层、网际层和网络接口层(用网际
阅读全文
posted @ 2018-02-05 15:18
嘉禾世兴
阅读(487)
推荐(0)
摘要:
插值器:就是一个函数,将时间t经过一个函数的变换映射到t',从而影响动画的运动轨迹和速度变化 如何实现一个插值器 使用
阅读全文
posted @ 2018-02-02 16:59
嘉禾世兴
阅读(234)
推荐(0)
摘要:
字体适配 软键盘适配 三星手机camera拍照的bug: 1)摄像头拍照后图片数据不一定能返回;onActivityResult的data为空 2)三星的camera强制切换到横屏,导致Activity重启声明周期(但是部分机型android:configChanges也不能阻止横竖屏切换) 3)A
阅读全文
posted @ 2018-02-02 15:51
嘉禾世兴
阅读(153)
推荐(0)
摘要:
适配相关术语: 分辨率:eg:480*800,1280*720。表示物理屏幕区域内像素点的总和(切记:跟屏幕适配没有任何关系)因为我们既可以把1280*720的分辨率做到4.0的手机上面。我也可以把1280*720的分辨率做到5.0英寸的手机上面,如果分辨率相同,手机屏幕越小越清晰 px(pix):
阅读全文
posted @ 2018-02-02 15:44
嘉禾世兴
阅读(365)
推荐(0)
摘要:
软键盘有时会导致页面布局体验差,解决方法之一是最外层嵌套ScrollView,马马虎虎,下面是最优解 原文地址软键盘适配 工具类 清单文件配置 activity调用
阅读全文
posted @ 2018-02-02 10:52
嘉禾世兴
阅读(301)
推荐(0)