读书笔记-android进阶
文章平均质量分 68
疯狂Max
https://github.com/cxMax
展开
-
《Android源代码系统情景分析》读书笔记 (1) Activity组件启动过程
前言换公司后将近2个月没有更新过博客呢,很大一部分原因是因为平时下班都太晚了.回来看会英语都12点了,实在没法像以前在成都每晚回来又那么充裕的时间写东西.最近,在新公司学习了一些性能代码优化的小技巧,例如traceview,MAT,systrace等的使用,这些在网上都有很多资料可以查询,这里就不赘述了.最近利用周末时间撸了两个库,虽然都是重复造轮子,但收获还是蛮大的.最近打算整理下,写出来.原创 2016-06-14 01:26:42 · 689 阅读 · 0 评论 -
effect java 学习摘要(6) - 方法
检查参数的有效性可以使用android注解,例如 : public <T> void register(@NonNull Class<? extends T> clazz) {}必要时进行保护性拷贝对于构造器的每个可变参数进行保护性拷贝是必要的public class Period { private final Date start; private final Date en原创 2017-08-10 23:47:01 · 295 阅读 · 0 评论 -
effect java 学习摘要(3) - 类和接口
使类和成员可访问最小化信息隐藏 & 封装 : 模块之间通过API进行通信 尽可能地使每个类或者成员不被外界访问 . private or public在公有类中使用访问方法而非公有域如果类可以在它所在的包的外部进行访问,就提供访问方法. 亦就是get,set函数.公有类永远都不应该暴露可变的域.使可变性最小化不要提供任何会修改对象状态的方法保证类不会被拓展, 也就是防止子类化, 常原创 2017-08-02 23:57:23 · 433 阅读 · 0 评论 -
effect java 学习摘要(4) - 泛型
请不要在代码中使用原生形态泛型优势 : 泛型在安全性和表述性方面都有所有优势.无限制通配符 “?”private Set<?> set;消除非受检警告unchecked conversion : 一旦出现, 就表示该条语句可能在运行时会抛出ClassCastException异常优点 : 消除了所有警告可以确保代码是类型安全的 , 意味着不会再运行时出现ClassCastException异原创 2017-08-06 23:51:03 · 271 阅读 · 0 评论 -
effect java 学习摘要(9) - 序列化
Serializable接口将一个对象编码成一个字节流 , 称为对象序列化.Serializable接口 实现的代价 : 一旦一个类被发布, 就大大降低了”改变这个类的实现”的灵活性 ; 序列化类的唯一标识符 是 序列版本 UID .它增加了出现bug和安全漏洞的可能性随着类发行新的版本 , 相关的测试负担也增加了要点 :为了继承而设计的类应该尽可能少地去实现Serializable.对原创 2017-08-22 00:48:27 · 276 阅读 · 0 评论 -
effect java 学习摘要(7) - 通用程序设计 和 异常
将局部变量的作用域最小化在第一次声明的地方, 使局部变量的作用域最小化集合的遍历for-each优先于传统for循环foreach 优势 :代码简洁性预防bugfor 循环使用场景 :过滤元素转换元素平行迭代了解和使用类库Random类库去随机数的调用, 以及java标准类库精确答案, 避免使用float和double货币的计算 : 正确的使用 : BigDecimal,原创 2017-08-15 23:44:02 · 306 阅读 · 0 评论 -
计算机网络 学习摘要(1) - 概述
概述计算机网络性能指标 : 速率 : 传送数据的速率 ; 单位 b/s 比特每秒 比特 - 计算机中数据量的单位带宽 : 信号具有的频带宽度 ; 带宽用来表示网络的通信线路传送数据的能力 ; 即表示能通过的最高速率 一条通信链路的带宽越宽,表示其传输的最高速率也越高吞吐量 : 在单位时间内通过某个网络(或信道 \ 接口)的数据量.时延 : 网络链路的一端传送原创 2017-10-17 00:44:57 · 1572 阅读 · 0 评论 -
计算机网络 学习摘要(2) - 物理层
物理层主要与通信相关,作为相关知识了解吧基本概念传输方式 : 数据在计算机中多采用并行传输方式. 但在通信路线上的传输方式一般是串行传输数据通信系统的模型 : 源点 : 源站或信源发送器 : 调制器接收器 : 解调器终点 : 目的站, 或 信宿通信目的是发送消息(语音,文字,图像,视频).数据是运送消息的实体.信号则是数据的电气或电磁表现.信道 : 单向信道 : 只有一个方向的通信原创 2017-10-19 00:17:19 · 349 阅读 · 0 评论 -
计算机网络 学习摘要(8) - 音视频服务/IPv6协议
概述音视频常用的协议 : 实时流RTSP协议 , 实时运输协议RTP , 实时传送控制协议RTCP , H.323 以及会话发起协议SIP . 声音采用的是PCM编码 , 不同的是数据率影响音质互联网本身是非等时的 , 音视频传输需要时间间隔等时互联网提供的音频/视频服务 : 流式存储音频/视频流式实况音频/视频交互式音频/视频 , 流媒体媒体服务器 , 流式服务器, 支持流式音频和原创 2017-11-08 23:14:47 · 429 阅读 · 0 评论 -
计算机网络 学习摘要(4) - 网络层
网络层网络层向上只提供简单灵活的,无连接的,尽量大努力交付的数据报服务.网络层不提供数据质量的承诺. 所传送的分组可能出错,丢失,重复和失序.网际协议IP网际协议IP是TCP/IP体系中两个最主要的协议之一.与IP协议配套使用的还有三个协议 : ARP : 地址解析协议ICMP : 网际控制报文协议IGMP : 网际组管理协议转发器 : 物理层使用的中间设备网桥 或 桥接器 : 数据原创 2017-10-31 00:05:45 · 389 阅读 · 0 评论 -
计算机网络 学习摘要(5) - 运输层
运输层运输层向它上面的应用层提供通信服务 . 运输层提供应用进程间的逻辑通信 , 从应用层来看 , 只要把应用层报文交给下面的运输层 就可以把这报文传送到对方的运输层.网络层是为主机之间提供逻辑通信 , 而运输层为应用进程之间提供端到端的逻辑通信 . 运输层有两种不同的运输协议 , 即面向连接的TCP协议 , 无连接的UDP协议.UDP TCP协议UDP : 用户数据报协议 , 则提供面原创 2017-10-31 22:48:02 · 369 阅读 · 0 评论 -
计算机网络 学习摘要(3) - 数据链路层
数据链路层一些知识点的回顾.数据链路层属于计算机网络的底层点与点信道 : 一对一点对点的通信方式广播信道 : 一对多的广播通信方式链路 : 一个结点到相邻结点的一段物理线路 , 而中间没有其他的交换结点数据链路 : 一些必要的通信协议来控制这些数据的传输 . 现在最常用的方式是网络适配器.帧 : 数据链路层的协议数据单元. 数据报\分组\包 : 网络协议层数据单元就是IP数据报点对原创 2017-10-25 00:57:38 · 343 阅读 · 0 评论 -
计算机网络 学习摘要(6) - 应用层
万维网的应用层协议是HTTP(超文本传输协议).基于客户-服务器方式.域名系统DNS概念 : 是因特网使用的命名系统 , 用来把便于人们使用的机器名字转换为IP地址.因特网的域名系统DNS被设计成为一个联机分布式数据库系统 . DNS大多数名字都是在本地进行解析.域名到IP地址的解析是由分部在因特网上的许多域名服务器程序共同完成的.域名 → IP地址的解析过程 : 应用进程调用解析程序原创 2017-11-03 00:21:19 · 466 阅读 · 0 评论 -
计算机网络 学习摘要(7) - 网络安全
网络安全该诉被动攻击 : 截获数据, 监听他人的内容 . 主动攻击 : 篡改 : 篡改网络上传送的报文恶意程序 : 计算机病毒 :计算机蠕虫 : 从一个结点发送到另一个结点, 并自动启动运行的程序木马 : 逻辑炸弹 : 当运行环境满足特定条件而执行其他特殊功能的程序拒绝服务 : Dos ,DDos ,网络带宽攻击密码体制对称密钥密码体制 : 加密密钥 和 解密密钥 是相同原创 2017-11-04 00:07:51 · 1142 阅读 · 0 评论 -
effect java 学习摘要(8) - 并发
同步访问共享的可变数据synchronized : 可以保证在同一时刻,只有一个线程可以执行某一个方法, 或者某一个代码块.多线程访问, 可能会导致同一对象状态发生变化. 同步 可以使多线程看到由同一个锁保护的之前所有的修改效果.非long或double类型的变量, 读写操作一个变量是原子的在线程之间进行可靠的通信, 也为了互斥访问, 同步是必要的.不要使用 Thread.stop()原创 2017-08-17 23:54:00 · 246 阅读 · 0 评论 -
effect java 学习摘要(5) - 枚举和注解
enum枚举类型代替int常量枚举enum示例 : public enum Apple{ FUJI(1), PIPPIN(2), GRANNY_SMITH(3); private int category; Apple(int category) { this.category = category; }}public enum Or原创 2017-08-08 22:56:43 · 265 阅读 · 0 评论 -
effect java 学习摘要(2) - object通用的方法
equals()equals() 通常不需要重写,因为大多数的超类已经覆盖了这个函数.什么时候重写 equals() ? 判断比较引用对象,在逻辑上是否相等,而非是否指向同一个对象.原创 2017-07-31 23:46:52 · 312 阅读 · 0 评论 -
<React Native> 学习日记(1) 成功运行、编译RN-android的爬坑记录
前言从15年下半年开始,不断的在网络上看见各路大神推荐React Native是如何神通广大,但对于初识Android的我来说并不理解这到底是个什么东西。最近团队打算用这个技术实现我们客户端App的首页(会不定期发布活动),这对于我来说又是一次自我的提升和学习机会。定义什么是React Native? 这个也是我当初第一次接触到这个概念的疑问,不过纵观网上各路帖子,但一直以来都很模糊。Rea原创 2016-08-03 00:23:18 · 2200 阅读 · 0 评论 -
《Picasso源码学习》
前言俗话说男儿有泪不轻弹,都26了,因为工作上的原因,有委屈,有压力,有不足,有外因,前几天自己在回家的路上,还是没忍住,人生最难过的事,莫过于别人对你失去信任。纸上得来终觉浅, 绝知此事要躬行。Picasso, Glide , Fresco 都使用过, 那我就会了吗 。源码解析,也看过很多写的很好的博客, 那我就深刻理解了吗? no , 这次教训太深刻了。哎, 不提了。 这次项目虽然有一定诸原创 2016-10-28 02:30:54 · 369 阅读 · 0 评论 -
《gradle学习小记(1)》
前言Gradle简介: gradle是项目自动化建构工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置gralde特点: 1.声明式构建和合约构建 2.基于依赖的编程语言 3.让构建结构化 4.API深化 5.Gradle 扩展 6.多项目构建 7.多种方式来管理你的依赖 8.Gradle 是第一个构建整合工具 9.易于迁移原创 2016-12-12 00:32:45 · 347 阅读 · 0 评论 -
《glide源码学习》
前言最近要把一直用的Picasso替换成glide,因此笔者网上搜索了一下相关资源,顺带连源码也一块儿下下来看看。先记录一些我浏览过觉得还挺不错的关于glide使用介绍和技巧的帖子吧。Glide的with(context)的选择 http://stackoverflow.com/questions/31964737/glide-image-loading-with-application-c原创 2016-12-13 00:46:55 · 419 阅读 · 0 评论 -
<android-apt学习笔记>
参考文章https://joyrun.github.io/2016/07/18/java-annotation/ https://joyrun.github.io/2016/07/19/AptHelloWorld/正文注解: 1.@Target : 规定Annotation所修饰的对象范围 ElementType.TYPE:类、接口 ElementType.CONSTRUCTOR:构造器声原创 2017-01-18 01:01:40 · 354 阅读 · 0 评论 -
RxJava由浅入深的学习(1)--学习路线 && Rxjava操作符的熟悉
前言如果你跟我一样,是从来没有在实际项目中运用rxjava开发的初学者,我自己列了一个学习步骤,大家可以参考一下。1.在看官方wiki之前,我建议完全初学者可以阅读下这篇博主的文章,到目前谢了9篇,通俗易懂的很形象的讲解了rxjava的部分操作符,主要是理解rxjava。[http://www.jianshu.com/p/464fa025229e](http://www.jianshu.com/原创 2017-02-12 22:40:21 · 652 阅读 · 0 评论 -
android简洁代码封装 -- RecyclerView.Adapter之MultiTypeAdapter封装
前言RecyclerView在实际业务中,会有很多场景以及需求会使用到。常见的例如:Header&Footer,Refresh,LoadMore,Pinned Header等等。这些场景你是否都会根据具体的需求,单独维护一套RecyclerView和Adapter,例如XXRefreshRecyclerView,XXXPinedHeaderRecyclerView….对于如此运用,笔者想说维护成本原创 2017-03-29 23:03:49 · 4252 阅读 · 0 评论 -
解决Android内存泄漏--MAT\android studio使用方法实例
前言作为一名android客户端开发人员,肯定会遇到过ANR或者OOM的案例, 少部分案例除了部分业务上面的代码同步或者死锁的原因导致的外,绝大多数都是因为我们缺乏良好的代码质量导致内存泄漏或者说app内存优化的经验.我想在实际上庞大的android项目里从java代码层面解决掉内存泄漏是令每一个初级android开发人员头疼的事.是否你对测试提过来的ANR或者OOM的大篇log表示束手无策呢~原创 2017-05-14 15:11:40 · 612 阅读 · 0 评论 -
<数据结构>-树
正文二叉树 定义 : 其中每个几点都不能有多余两个的儿子public class BinaryNode<AnyType> { public BinaryNode(AnyType element) { this(element, null, null); } public BinaryNode(AnyType element, BinaryNode left,原创 2017-06-01 00:19:34 · 233 阅读 · 0 评论 -
C++学习摘要记录(2)
正文自定义数据结构在函数内部自定义数据结构 : struct Sales_data { std::string bookNo; unsigned units_sold = 0; double revenue = 0.0;};void testSales_data() { Sales_data data1, datda2; double price = 0;原创 2017-06-28 01:23:10 · 314 阅读 · 0 评论 -
C++学习摘要记录(3)
正文动态内存 : a. c++程序 -> 静态内存 、 栈内存 和 内存池(也称为自由空间 或 堆内存). 程序用 堆内存 来存储动态分配的对象.b. 动态内存 通过 new -> 初始化 , delete -> 销毁;智能指针 : 1. shared_ptr : 允许多个指针指向同个对象. 2. unique_ptr : “独占”所指向的对象. 3.原创 2017-07-11 00:23:54 · 262 阅读 · 0 评论 -
C++学习摘要记录(1)
正文类 输入运算符 (>>) , 输出运算符 (<<)std是一个类(输入输出标准)using namespace std; //要么这么使用std::cout ; std::cin ; //要么这么使用术语表 参数 argument赋值 assignment程序块 block缓冲区 buffer内置类型 built-in typeCerr 一个ostream对象字符串字面原创 2017-06-23 01:23:45 · 415 阅读 · 1 评论 -
effect java 学习摘要(1) - 创建和销毁对象
静态工厂方法替代构造器内容优点 : 1. 返回的对象, 客户端生成对象的代码更容易被阅读. 常用构造器的参数本身没有确切地描述正被返回的对象. 2. 不必在每次调用的时候都创建一个新的对象. 如果程序经常请求创建相同的对象 , 那这种方式极易提升性能. 3. 返回原返回类型的任何子类型的对象. 4. 创建参数类型实例的时候,使代码变得更加简洁.缺点 :原创 2017-07-30 23:39:48 · 378 阅读 · 0 评论 -
数据结构与算法 学习摘要
时间复杂度比较O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3)线性表栈(stack) : 后进先出 队列(queue) : 先进先出 链表(linkedlist) : 单链表, 双链表 https://github.com/cxMax/LeetCode/tree/master/datastructs_and_algorithm/Linear图原创 2017-11-22 00:12:23 · 902 阅读 · 0 评论