自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

红涛在反思的blog

关注音视频前后端,也会分享记录一些工作、财务、感情、生活方面的思考与成长...

原创 自己动手写HTTP框架:ThreadPool+Runnable+handler篇

既然异步任务有诸多问题,那么我们可以尝试使用ThreadPoolExecutor+Runnable+Handler来对网络底层进行封装。类图具体流程:首先构造一个请求Request,然后通过这个请求RequestManager可以构造一个NetWorkExecutor,然后从DefaultThre...

2016-06-30 22:23:05

阅读数 1456

评论数 3

原创 设计模式与架构的核心概念乃是抽象

最近一年来一直在学习设计模式,上周在公司内部听了一个分享,当时一位同事提出设计模式的核心是封装,我强烈不赞同,在我看来设计模式的核心乃是抽象。  君不见,各种开源框架开源项目遍地都是抽象类和接口,每每此时,你心中肯定一万个草泥马在奔腾:是不是有病呀,整这么多接口和抽象类,也不嫌累。其实不是这样的,...

2016-06-30 19:41:25

阅读数 1065

评论数 2

原创 重构系列:减少成员变量个数,降低变量的作用范围

这条规则是自己在开发一个小的需求时的感悟。这个需求其实非常简单,不过要基于旧有的代码去开发,在我看了旧代码的时候,我晕了,旧代码中把很多明明只是temp的变量都提取成为了成员变量,代码读起来非常的费解,之后我尝试去掉了不必要的成员变量,整体流程清晰多了。

2016-06-29 20:57:23

阅读数 840

评论数 0

原创 重构系列:概论

重构的目的是使软件更容易被理解和修改。你可以在软件内部做很多修改,但必须对软件可观察的外部行为只造成很小的变化,或甚至不造成变化。与之形成鲜明对比的是性能优化。和重构一样,性能优化通常不会改变组件的行为(除了执行速度),只会改变其内部结构。但是两者出发点不同:性能优化往往使得代码很难理解,但为了得...

2016-06-29 20:56:07

阅读数 654

评论数 0

转载 Android源码解析——LruCache

LRU  在读LruCache源码之前,我们先来了解一下这里的Lru是什么。LRU全称为Least Recently Used,即最近最少使用,是一种缓存置换算法。我们的缓存容量是有限的,它会面临一个问题:当有新的内容需要加入我们的缓存,但我们的缓存空闲的空间不足以放进新的内容时,如何舍弃原有的部...

2016-06-28 10:52:01

阅读数 602

评论数 0

原创 SimpleNet网络框架源码分析

项目介绍  SimpleNet是何红辉开源的一个http网络请求库。该库借鉴了volley的实现思路,但为了更易于理解,裁掉了一些模块。整体适合学习http网络框架原理使用,难易度恰到好处。在此基础上再去读volley源码,会体悟更深刻一些。特点支持httpclient、httpurlconnec...

2016-06-27 16:37:42

阅读数 1595

评论数 0

转载 编程语言学习知识体系

占位

2016-06-25 10:22:27

阅读数 1670

评论数 0

转载 面对对象原则:高内聚、低耦合

软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。划分摸块的一个准则就是高内聚低耦合。 这是软件工程中的概念,是判断设计好坏的标准,主要是面向OO的设计,主要是看类的内聚性是否高,偶合度是否低.每一个类完成特定的独立的功能,这个就是高内聚。耦合就是类之间的互相调用关系,如果耦合很强,互相牵...

2016-06-24 21:18:27

阅读数 3728

评论数 0

原创 客户端开发知识体系

今天在家里吃饭时,思考到一个结论:其实不论是android app开发,ios app开发,还是mac 应用开发,pc应用开发,等等的一切,都属于c/s模式的c端。他们的开发其实需要的知识是一模一样的,知识是可以迁移的。如果你认为自己是一位中级的android开发工程师,我觉得你只需要2个月就可以...

2016-06-24 19:52:30

阅读数 887

评论数 0

原创 【分享笔记】使用lint来改善你的代码

一.lint简介什么是静态代码分析静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性,找出代码隐藏的错误和缺陷,如参数不匹配,有歧义的嵌套语句,错误的递归,非法计算,可能出现的空指针引用等等。在软件开发过程中,静态代码分析往往先于动态测试之前进行,...

2016-06-22 22:22:04

阅读数 1436

评论数 0

原创 glide源码分析

图片加载框架,相对于UniversalImageLoader,Picasso,它还支持video,Gif,SVG格式,支持缩略图请求,旨在打造更好的列表图片滑动体验。Glide有生命周期的概念(主要是对请求进行pause,resume,clear),而且其生命周期与Activity/Fragmen...

2016-06-21 20:07:55

阅读数 4765

评论数 1

原创 Picasso源码分析

Picasso是Square公司开源的一个Android平台上的图片加载框架,也是大名鼎鼎的JakeWharton的代表作品之一.

2016-06-21 20:07:26

阅读数 824

评论数 0

原创 universal imageloader源码分析

项目介绍  android中最让人头疼的莫过于从网络上获取图片、显示、回收,任何一个环节有问题都可能直接OOM。尤其是在列表页,会加载大量网络上的图片,每当快速滑动列表的时候,就会很卡,甚至会因为内存溢出而崩溃。   这个时候就轮到imageloader上场表演了。Imageloader的目的是...

2016-06-21 20:06:52

阅读数 663

评论数 0

原创 自己动手封装图片三级缓存网络请求框架(类似imageloader)

图片三级缓存原理   三级缓存指内存-文件-网络 三层cache机制,其中内存缓存包括强引用缓存和软引用缓存(SoftReference),其实网络不算cache,这里姑且也把它划到缓存的层次结构中。当根据url向网络拉取图片的时候,先从内存中找,如果内存中没有,再从缓存文件中查找,如果缓存文件中...

2016-06-21 20:06:08

阅读数 1384

评论数 0

原创 volley源码分析

项目介绍  在android开发早期,不像现在这样有各种第三方的网路框架,而网络请求又是app必须的功能,所以不同的公司都会采用自己封装框架的方式,其实主要目的就是可以实现http请求,然后得到想要的结果(json等等),然后还会加入一些扩展的功能:如支持上传下载进度回调、支持对错误的统一处理、支...

2016-06-21 20:05:18

阅读数 561

评论数 0

原创 自己动手写HTTP框架:异步任务篇

需求 2011年的某一天,你的公司初进移动开发领域,上司要求你实现一套http网络请求框架,要求易扩展。 2011年!!!volley、imageloader、fresco、glide…..都是啥????? 需求分析 支持http协议get、post、put、delete 异步请求 请求错误统一处...

2016-06-21 20:04:25

阅读数 1283

评论数 0

原创 【分享笔记】android6.0特性

Android 6.0中权限分为两种,普通权限和危险权限普通权限(Normal Permissions)如果你的应用manifest中只申明了普通权限(也就是说,这些权限对于用户隐私和设备操作不会造成太多危险,比如手机震动、访问网络等),系统会自动授予这些权限。 普通权限的覆盖区域是在你的app...

2016-06-17 14:49:46

阅读数 737

评论数 0

原创 PHP入门

今天下班没事做,就找一位做PHP开发的小伙伴聊了一会,他给我讲了一下公司的PHP项目,虽然自己之前一点PHP都没有看过,但是总体感觉还是能够听懂,主要得益于大学做过java web的相关项目,也自学过html,JavaScript等相关内容,所以理解起来并不是很吃力。他给我推荐了一个学习php语法...

2016-06-13 20:35:17

阅读数 631

评论数 0

原创 下一个五年你会在哪里,做着怎样的事

这一路你可曾被自己感动过

2016-06-13 14:13:47

阅读数 1555

评论数 5

原创 几种工厂模式对比

简单工厂模式: 简单工厂模式:定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态方法,因此简单工厂模式又被成为静态工厂方法模式,它属于类创建类模式。 简单工厂模式的要点在于:当你需要什么,只需要传入一个正确的参数...

2016-06-13 12:03:21

阅读数 1588

评论数 1

原创 《架构漫谈》笔记

《架构漫谈》笔记什么是架构根据要解决的问题,对目标系统的边界进行界定。 并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间。 并对这些切分出来的部分,设立沟通机制。 根据3,使得这些部分之间能够进行有机的联系,合并组装成...

2016-06-13 10:41:25

阅读数 3346

评论数 0

原创 充血模型和贫血模型

占位

2016-06-13 10:36:37

阅读数 4438

评论数 0

转载 架构师的基本素质

周星驰有个片子《喜剧之王》,剧中的尹天仇整天揣着本《演员的自我修养》,一个好演员不仅需要天赋,也需要一定的理论指导,无师自通的人毕竟是少数。架构师的成长过程也是这样。从普通程序员到高级程序员,再到架构师,是一个经验积累和思想升华的过程。经验积累是一个方面,素质培养是另一个方面,两者相辅相成,所以我...

2016-06-12 20:22:57

阅读数 1283

评论数 0

转载 反射实现AOP动态代理模式(SpringAOP的实现原理)

AOP

2016-06-12 14:44:51

阅读数 776

评论数 0

原创 动态代理

引入:静态代理和动态代理 静态代理:不隐藏创建代理类的过程。由程序员创建或特定工具自动生成源代码在对其编译。在程序运行前代理类的.class文件就已经存在 动态代理:隐藏创建代理类的过程。在程序运行时运用反射机制动态创建而成 所以他们两个的区别就是在程序运行之前,.class文件是否已经存在。我们...

2016-06-12 14:44:22

阅读数 570

评论数 0

原创 设计模式系列:总结

区分及如何使用 占位

2016-06-10 15:47:56

阅读数 534

评论数 0

原创 设计模式系列:设计原则一句话总结

1.单一职责原则 一句话总结:一个方法、接口或类尽量只做一件事情。这样会有一个非常大的优点:便于类和方法的重用(因为粒度越小的反而越利于复用)。但是因为单一职责原则提出了一个编写程序的标准,用”职责“或”变化原因“来衡量接口或类设计是否优良,而”职责“和”变化原因“都是不可度量的,因项目、环境...

2016-06-10 15:45:13

阅读数 694

评论数 0

转载 对面向接口编程的理解

什么是面向接口编程

2016-06-10 11:59:20

阅读数 1902

评论数 0

原创 对依赖注入的理解

依赖注入的理解

2016-06-10 11:58:49

阅读数 1254

评论数 0

原创 对控制反转的理解

控制反转

2016-06-10 11:58:21

阅读数 819

评论数 0

原创 设计模式系列:合成复用原则

合成复用原则

2016-06-10 11:42:14

阅读数 550

评论数 0

原创 设计模式系列:迪米特法则

迪米特法则

2016-06-10 11:41:34

阅读数 572

评论数 0

原创 设计模式系列:接口隔离原则

问题由来问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。 解决方案:将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。定义在讲解接口隔离原则之前,先明...

2016-06-10 11:41:02

阅读数 834

评论数 0

原创 设计模式系列:依赖倒置原则

依赖倒置原则

2016-06-10 11:40:33

阅读数 613

评论数 0

原创 设计模式系列:里氏替换原则

里氏替换原则

2016-06-10 11:39:52

阅读数 903

评论数 0

原创 设计模式系列:开闭原则

只有依赖于抽象。实现开放封闭的核心思想就是对抽象编程,而不对具体编程,因为抽象相对稳定。让类依赖于固定的抽象,所以对修改就是封闭的;而通过面向对象的继承和对多态机制,可以实现对抽象体的继承,通过覆写其方法来改变固有行为,实现新的扩展方法,所以对于扩展就是开放的。这是实施开放封闭原则的基本思路,同时...

2016-06-10 11:39:16

阅读数 1577

评论数 0

原创 设计模式系列:单一职责原则

问题由来  问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。  解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2...

2016-06-10 11:38:33

阅读数 1444

评论数 0

原创 2016年技术源码&书籍阅读总结

时间 书名 总结   android编程入门指南     android群英传     android开发艺术探索     深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)     程序员的自我修养-链接,装载与库     设计模式之禅     设计模式...

2016-06-09 10:35:21

阅读数 2054

评论数 3

原创 技术之路如何成长而不迷茫

1.投入时间,投入时间,投入时间把你可以压榨的时间都投入到你的目标上,你的周末时间,你的下班时间。2.立即去做,立即去做,立即去做,并且不要停止3.实践再实践4.趋势眼光5.跟随跟随一位前辈,多向前辈问。 大部分人,都是浑浑噩噩的。环境把他们塑造成什么样子,他们就变成什么样子。就算发现理想和现...

2016-06-08 19:59:04

阅读数 1404

评论数 0

原创 zaker splash页面实现

一.效果二.代码PullDoorView/** * Created by niehongtao on 16/6/8. * zaker自定义效果页面 */ public class PullDoorView extends RelativeLayout { private Scrolle...

2016-06-08 17:21:28

阅读数 659

评论数 0

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