自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

奋斗&努力

努力,奋斗,为了更好的明天

  • 博客(49)
  • 资源 (8)
  • 收藏
  • 关注

原创 第三方开源库OKHttp-整体架构和源码分析

1. HTTP状态码:1xx: Infomational (信息状态码) ,接收的请求正在处理 2xx: Succeed(成功),请求正常处理完毕,如 200 3xx: Redirection(重定向),需要进行附加操作,一般是没有响应数据返回的,如 304(Not,modified)307 (重定向) 4xx: Client Error (客户端的错误),服务器无法处理请求,如 ...

2018-03-31 13:20:52 697

原创 Java网络编程基础

1.TCP/IP协议家族 OSI七层协议:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层 TCP三次握手(建立连接)和四次挥手(断开连接)2.Http请求:他们之间通信是以报文的形式 客户端请求(Request):请求报文 = 请求头 + 空行 + 请求数据 Accept: 客户端可以处理的数据格式 Cookie:服务端的之前给我们的Cookie服务端响应(Respo...

2018-03-31 00:11:50 351

原创 EventBus的手写

在上一篇文章我讲了EventBus源码,现在我们来手写一下EventBus使用MainActiviitypublic class MainActivity extends AppCompatActivity { private TextView mTv; @Override protected void onCreate(Bundle savedIn...

2018-03-30 20:34:13 391

原创 EventBus源码分析

使用MainActiviitypublic class MainActivity extends AppCompatActivity { private TextView mTv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(sav...

2018-03-30 19:30:06 186

原创 享元和命令组合设计模式

1.享元设计模式:定义:使共享对象可有效的支持大量的细粒度的对象,核心其实就是对象复用 使用:Message,LayoutInflater,EventBus (PendingPost)火车票public class Ticket { String from; String to; public Ticket(String from, String to) {...

2018-03-30 09:52:39 206

原创 责任链模式和外观模式

1.责任链设计模式 使多个对象都有机会处理请求,将这些对象连成一条链,并沿着这条链处理该请求,只道有对象处理他为止。2.门面设计模式 要求一个子系统的外部与其内部通信必须通过一个统一的对象进行,又称之为外观模式,提供一个高层次的接口,使得子系统更易于使用。 说白了就是方法封装。还是以百度云盘登录有qq和微信两个系统为例userInfo用户信息public class ...

2018-03-29 16:29:13 490

原创 迭代器设计模式之构建通用底部的BottomTabNavigationBar

1.模式定义:提供一种方法顺序访问一个容器中的各个元素,而又不需要暴露该对象的内部显示(如List,Objcet数组,set)。首先看下简单的使用一般写法:比如百度网盘登录可以用微信和qq,假设qq使用的是List保存数据,和微信使用的是数组保存数据用户信息public class UserInfo { public String userName; pub...

2018-03-29 14:30:54 466

原创 原型设计模式

定义:(拷贝) 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 通过拷贝复制出一个新的对象。(拷贝)最简单的设计模式。又分为浅拷贝和深拷贝浅拷贝: 浅拷贝,就是类的类对象实例,是没有被拷贝的,他们还是公用一份user代码public class User implements Cloneable { public String userName...

2018-03-28 12:31:41 541

原创 代理设计模式

1.代理设计模式 - 定义为其他对象提供一种代理,以控制对这个对象的访问,分为静态代理和动态代理。2.静态代理银行办卡 - 角色划分 2.1. 目标接口 2.2. 代理对象 - 银行的工作人员 2.3. 被代理的对象 - 我目标接口public interface IBank { /** * 申请办卡 */ public void...

2018-03-27 17:06:09 295 1

原创 观察者设计模式之观察数据的插入

观察者设计模式之推拉模式推模式:如:用户关注微信号微信公众号: 多个人去订阅我们的公众public class WXPublicObservable { private List<IWXUser> mUsers; public WXPublicObservable(){ mUsers=new ArrayList<>(); ...

2018-03-27 12:20:39 437

原创 adapter设计模式

适配器模式就是将某一些对象转成我们需要的适配的对象。分为两种一种是类适配器,还有一种是对象适配器举个例子:以前公司只支持人民币付钱,后来走向国际化支持美元一般写法public class RMBAdapter { private float mRmb; public RMBAdapter(float rmb) { this.mRmb = rmb;...

2018-03-22 16:15:34 415

原创 策略设计模式

模式定义 策略模式定义了一系列算法,并将每一个算法封装起来,而且是他们之间可以相互切换。不同理财工具理财率不一样,一般写法public class FinaceManager { public enum Finace{ ZHI_FU_BAO,PEAKMAIN } private float zhifubaoFinace(int month,in...

2018-03-22 13:42:00 214

原创 线程池介绍

1.线程执行的时间: T=T1(线程创建的时间)+T2(run方法执行的时间)+T3(线程销毁的时间)2.线程池执行解决的问题: 解决线程反复的创建和销毁,做到线程可以复用3.线程测试public class ThreadPoolTest { static ThreadPoolExecutor threadPoolExecutor; private static f...

2018-03-21 23:26:05 195

原创 工厂设计模式之数据存储

第一个版本简单使用onCreate方法 mTextView = (TextView) findViewById(R.id.test_tv); // 用户的登录信息或者其他信息保存 sp 数据库 等等 SharedPreferences preferences = getSharedPreferences("cache", MODE_PRIVATE);...

2018-03-21 13:53:57 384

原创 builder设计模式之NavigationBar

INavigation接口public interface INavigation { /** * 设置布局 */ void createNavigationBar(); /** * 添加到头部 */ void attachParent(View navigationBar, ViewGroup parent);...

2018-03-21 00:02:44 280

原创 单例模式之强大的activity的管理

public class ActivityManager { //增加删除操作多,栈是先进后出 public Stack<Activity> mActivities; private ActivityManager() { mActivities = new Stack<>(); } //双重校验锁 pri...

2018-03-20 09:57:38 1541

原创 单例设计模式补充-volatile 关键字

之前写过单例模式23种设计模式之单例模式volatile关键字防止重排序 如图:多线程的时候,可能会导致开辟内存之后直接将给变量复制了,导致重排序线程可见性 - 某一个线程改了公用对象(变量),短时间内另一个线程可能是不可见的,因为每一个线程都有自己的缓存区(线程工作区) 如案例 public static void main(String[] args) {...

2018-03-20 08:19:26 382

原创 Handler源码分析

测试代码 new Thread(new Runnable() { @Override public void run() { /* Message message1 = Message.obtain(); message1.obj = "Handler源码分析"; ...

2018-03-19 14:45:35 165

原创 注解绕过微信支付和分享的局限

首先看下系统演变 版本1版本2版本3 分析版本3,新增一个功能支付,但是不能再APP中添加功能和代码,这时候我们可以这样,我们单独做一个支付功能,然后APP去调用支付的主Activity即可,但是需要在APP的mainifest中声明activity我们将分为三个module:compiler和annotation,pay首先compiler中添加注解:包括包名和类...

2018-03-18 23:15:53 2043

原创 编译时注解 - ButterKnife手源码分析和手写

参考butterknife源码进行手写,首先分model:butterknife,compiler和annomation首先butterknife源码分析:使用butterknife之后会自动生成这个类package com.peakmain.butterkinfe;public class MainActivity_ViewBinding implements Unbin...

2018-03-18 22:53:26 542

原创 图的介绍及简单使用

图 图是由顶点的有穷非空集合和顶点之间边的的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合.图的特征线性表中我们把数据元素叫元素,树中将数据元素叫结点,在图中数据元 素,我们则称之为顶点(Vertex)。线性表中可以没有数据元素,称为空表。树中可以没有结点,叫做空树。线性表中,相邻的数据元素之间具有线性关系,树结构中,相邻两层的结 ...

2018-03-16 15:04:28 305

原创 二叉树

通过前序遍历二维数组生成二叉树ublic class BinaryTree { private TreeNode root = null;//根结点 public BinaryTree() { root = new TreeNode(1, "A"); } /** * 构建二叉树 * A * B C...

2018-03-16 08:30:37 268

原创 树的简单介绍

结点的度 结点拥有的子树数称为结点的度。度为0的结点称为叶子结点或终端结点(如上图的GHIJ),度不为0的结点称为非终端结点或分支结点(如ABC等)。除根结点以外,分支结点也称为内部结点。树的度是树内各结点的度的最大值。(如此时B结点的度是1,D结点的度是3)层次与深度 结点的层次从根开始定义起,根为第一层,根的孩子是第二层。若某节点在第k层,则其子树的根就在k+1层。其双亲在同一层的...

2018-03-15 11:58:48 644

原创 LinkedHashMap和LruCache源码解析

首先了解一下LinkedHashMap两个排序:插入排序和访问排序插入排序和访问排序:队列方式,最新插入的放在尾部,最开始进来的放在头部;出栈出的是头部访问排序:最新的访问放在尾部,出栈出的是头部LinkedHashMap源码分析参数详情 //头部节点 transient LinkedEntry<K, V> header; //如果true代表访问排序,f...

2018-03-14 17:15:52 196

原创 HashMap源码解析

参数解析 //默认最小容量为4 private static final int MINIMUM_CAPACITY = 4; //最大容量 private static final int MAXIMUM_CAPACITY = 1 << 30; //默认是0.75即当加载超过0.75就进行扩容 static final float DEFAULT_LOAD_...

2018-03-14 13:45:31 185

原创 队列Queue源码分析

定义:队列是 只允许在一端进行插入操作,而在另一端进行删除操作的线性表插入的一端称为队尾,删除的一端称为对头缺点:出栈复杂度高,容易造成假溢出:可能对头有很多空位置,此时插入放到了队尾,就可能造成溢出,此时叫做假溢出解决办法:循环队列-把头尾相接的循序存储结构称为循环队列(可以解决假溢出) ...

2018-03-14 10:27:02 563

原创 stack栈源码分析

返回栈顶的元素,且不删除 public synchronized E peek() { try { //elementData数据元素的集合 elementCount元素集合的数量 栈是先进后出的 return (E) elementData[elementCount - 1]; } catch (I...

2018-03-13 17:03:00 336

原创 链式存储方式线性表之LinkedList源码解析

线性表:顺序存储结构和链式存储结构 链式存储结构的优缺点: - 优点:删除插入效率高 - 缺点:查询效率高 循环列表:将单链表中终端结点的指针端由空指针改为指向头结点,就使整个单链表形成一个环,这种头尾相连的单链表称为单循环链表,简称循环链表 双向循环列表:双向循环链表是单向循环链表的每个结点中,再设置一个指向其前驱结点的指针域 对于空的双向循环列表 双向循环列表...

2018-03-13 17:01:20 296

原创 ArrayList源码分析

构造函数源码有参构造函数传入一个int public ArrayList(int capacity) { //判断传入的值是否小于0 if (capacity < 0) { throw new IllegalArgumentException("capacity < 0: " + capacity);

2018-03-13 16:59:21 153 1

原创 Rxjava源码分析

1.Rxjava基本使用1.Rxjava基本概念进行耗时任务Rxjava本质是一个异步操作库2.传统的观察者模式,举例RNG VS SKT首先定义粉丝,就是观察者//首先每个粉丝都会时时收到最新消息,所以提取公共接口public interface Observer { public void update(int edition, float cost...

2018-03-12 17:14:25 210

原创 EventBus源码分析

EventBus简单使用EventBus简单介绍1.Androd 事件发布/订阅框架2.事件传递即可适用于Android四大组件间通讯3.EventBus的有点是代码简洁,使用简单,并将事件发布和订阅充分讲解 Handler的使用 private Handler handler; @Override protected void onCreate(@...

2018-03-12 10:38:19 717

原创 Leakcanary内存框架源码解析

1.LeakCanary一些准备知识1.1LeakCanart简单介绍由Square开源的一款轻量第三方内存泄漏检测工具原理:watch一个即将销毁的对象1.2内存栈:基本对象的应用堆:用来存放new的对象方法区:也称为静态区1.3内存泄漏会导致什么问题OOM1.4android常见内存泄漏 1.4.1.单例造成的内存泄漏public class...

2018-03-10 14:54:00 412

原创 Glide源码分析

简单使用1.github官网:https://github.com/bumptech/glide2.几个重要概念 Model(可以是url,本地资源)->(ModelLoader获得原始数据)Data->(Decoder解码)Resource->(Transform裁剪等)TransformdResource->(Transcode转码操作等)TranscodeR...

2018-03-10 11:02:29 459

原创 retrofit源码分析

简单使用1.github官网:https://square.github.io/retrofit/ 2.介绍:App应用程序通过Retorfit请求网络,实际上是使用Retrofit接口封装请求参数,之后由OKHttp完成后续的请求操作在服务端返回数据之后,OKHttp将原始的结果交给Retrofit,retrofit根据用户的需求对结果进行解析3.添加依赖和添加网络请求权限:...

2018-03-09 15:19:04 207

原创 OKHttp框架源码分析(二)

上一篇: OKHttp网络框架源码解析(一)okHttp框架同步异步请求流程和源码分析http://blog.csdn.net/qq_24675479/article/details/79483193OKHttp拦截器官网:拦截器是OKHttp上提供一种强大的机制,它可以实现网络监听,请求,以及响应重写、请求失败重试等功能1.拦截器链:直接看execute方法 @Overr...

2018-03-09 10:01:49 214

原创 OKHttp网络框架源码解析(一)okHttp框架同步异步请求流程和源码分析

首先看下简单使用1.github官网:https://square.github.io/okhttp/ 2.添加依赖:compile ‘com.squareup.okhttp3:okhttp:3.10.0’ 3.同步请求 OkHttpClient okHttpClient=new OkHttpClient.Builder().readTimeout(5000, TimeUnit.S...

2018-03-08 15:52:29 310

原创 invalidate源码分析

public void invalidate() { invalidate(true); } void invalidate(boolean invalidateCache) { invalidateInternal(0, 0, mRight - mLeft, mBottom - mTop, invalidateCache, true); ...

2018-03-08 13:13:53 729

原创 自定义view-仿支付宝淘宝自定义密码

自定义键盘布局<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height=...

2018-03-08 11:03:42 277

原创 从源码的角度分析Fragment

1.我们最常用的有:①ViewPager + Fragment;②ViewGroup + Fragment ;③TabHost+Fragment 2.今天主要讲ViewGroup+Fragment2.1Fragment的添加 // 加载第一个Fragment 兼容11以下的版本 FragmentManager fragmentManager = get...

2018-03-07 15:28:51 305

原创 自定义view-视察动画之雅虎新闻摘要加载

首先布局<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:t...

2018-03-06 15:36:59 590

smail2java

这是一个反编译工具,使用非常简单,直接打开软件后选择文件打开然后选择自己的apk就可以了

2018-01-02

apk反编译工具类

apk反编译的三个工具类,XMLPRINTER2.jar,dex2jar,jd-gui反编译jar

2017-11-09

recyclerview-v7-24..1.1

RecyclerView是support.v7包中的控件,可以说是ListView和GridView的增强升级版。 官方对RecyclerView的描述是: A flexible view for providing a limited window into a large data set.

2017-09-27

java连接mysql数据库jar包

在程序中不需要直接去访问实现了 Driver 接口的类,而是由驱动程序管理器类(java.sql.DriverManager)去调用这些Driver实现

2017-09-25

gson解析数据

gson是一个用来将JAVA对象转换成JSON串的JAVA库,它也可以用来将JSON字符串转换为Java对象。 gson可以对任意的java对象转换,包括预先存在的没有源代码java对象。

2017-09-16

android连接sqlserver数据库

jTDS是一个开放源代码的100%纯Java实现的JDBC3.0驱动,它用于连接 Microsoft SQL Server(6.5,7,2000,2005,2008 和 2012)和Sybase(10 ,11 ,12 ,15)。jTDS是基于freeTDS的,并且是目前最快的可企业级应用的SQL Server和Sybase的JDBC驱动程序。 jTDS完全与JDBC3.0兼容,支持只向前和可滚动/可更新的结果集(ResultSets),并且支持完全独立的并行Statements,而且实现了所有的数据库元数据(Database MetaData)和结果集元数据(ResultSet MetaData)方法。

2017-09-15

xutils工具

xutils工具类

2017-07-25

glide软件框架

glide一个图片加载库

2017-07-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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