- 博客(37)
- 资源 (1)
- 收藏
- 关注
原创 Http权威指南笔记(十四)-内容协商与转码
现在很多国际化的一些Web服务都会根据不同地区使用的语言不同,返回不同语言的页面内容展示给用户。而这里面就涉及到本篇介绍的内容——内容协商与转码。1 内容协商的技术目前的内容协商技术主要有3种——客户端驱动协商、服务器驱动协商和透明协商(也就是中间代理商进行选择和判断)。这三类大致归纳如下:技 术工作原理优 点缺 点客户端驱动客户端发起请求,服务器发送可选项的...
2019-06-30 13:45:58 227
原创 Http权威指南笔记(十三)-国际化
HTTP报文可以承载任何语言表示的内容的。因为对HTTP来说,实体主体真实二进制信息的容器而已。在HTTP中为了支持国际性,服务器返回内容的同时需要告知客户端文档是用的什么字母表和语言等信息,这样客户端才能正确的解析出信息并显示字符。服务器可以通过Content-Type中的charset参数和Content-Language首部告知客户端字母表和语言信息。同时,客户端并不是所有的字母表和语言...
2019-05-29 07:45:07 320
原创 Http权威指南笔记(十二)——实体与编码
本章会对HTTP实体和编码进行学习。这里的实体是指HTTP中真正需要传输的实体内容(比如一张图片,一份文档)。这里的编码主要是指内容编码和传输编码。1 报文与实体如果将HTTP对内容的传输比喻成实际生活中一些货物的运输的化。那HTTP报文就相当于是用于运输货物的“箱子”,而实体内容则是我们真正需要运输的“货物”。所以实体也就是被封装在了报文当中。现实货物运输中,一般箱子上也会有一些描述信息,...
2019-05-26 16:50:26 369
原创 Http权威指南笔记(十一)——安全HTTP(HTTPS)
上一篇中我们介绍了一些HTTP的认证机制,但是其安全性相对都不甚理想。本篇文章会介绍一种更为复杂和安全的技术。其具备以下一些特性:服务器认证,客户端认证,完整性,加密,效率,普适性,管理的可扩展性,适应性,可行性。...
2019-05-16 08:59:32 859
原创 Http权威指南笔记(十)——认证
现在大多数网站都会在cookie等客户端识别机制的基础上建立自己的认证机制。但是HTTP规范中提供的原生认证机制还是有必要了解下,了解这些后才能更好理解那些自己建立的认证机制。HTTP原生认证功能一般分为基本认证和摘要认证。基本认证相对简单,但是安全性相对较弱,摘要认证要复杂一些,当然安全性也会高一些。在介绍这两种认证方式之前,我们先看下HTTP中涉及到认证的一些通用概念。1 HTTP认证机制...
2019-05-09 20:46:43 771
原创 Http权威指南笔记(九)——客户端识别和cookie机制
按照《HTTP权威指南》的章节,在这之前应该还有“Web机器人”和“HTTP-NG”两个章节,但是这两个章节实际使用当中比较少,这里就没有做介绍,感兴趣的朋友可以自己去看看。本节我们开始介绍HTTP识别、认证和安全部分的客户端识别和cookie机制。HTTP属于无状态协议,一般情况服务器是没法得知分别发送请求的客户端用户的。但是我们大部分Web站点都需要或者希望能够区分用户,根据用户的不同兴趣爱...
2019-05-04 16:00:40 331
原创 Http权威指南笔记(六)——代理
上一篇学习了Web服务器,这一篇我来学习一下代理的知识。现在的网络中存在着各种各样的代理。学习Web代理服务器,更有利于我们队网络请求过程的理解。简介代理服务器是网络的中间实体,其既是Web服务器,也是Web客户端。所以其必须要能正确处理客户端的请求,并返回响应,同时也要能正确的向服务器发起请求并接收响应。1.1 私有和共享代理代理服务器可以作为某个客户端单独使用的私有代理,也可以作为众多...
2019-04-17 08:31:00 279
原创 Http权威指南笔记(五)——Web服务器
前面四篇属于《HTTP权威指南》第一部分内容。接下来几篇进入第二部分内容的学习,首先介绍Web服务器。Web服务器就是整个万维网的骨干,广义上来说Web服务器既可以用来表示Web服务器的软件,也可以用来表示提供Web页面的特定设备和计算机。我们在网络上获取的所以资源,都需要有服务器来保存和提供。另外需要说明的是本篇中对于Web服务器的配置说明是基于Apache Web服务器的。1 Web服务器...
2019-04-13 19:42:24 403
原创 Http权威指南笔记(四)——连接管理
本篇主要包括如下几个方面的内容:HTTP 是如何使用 TCP 连接的;TCP 连接的时延、瓶颈以及存在的障碍;HTTP 的优化,包括并行连接、keep-alive(持久连接)和管道化连接;管理连接时应该以及不应该做的事情。1 TCP连接几乎所有的HTTP通信都是有TCP/IP连接承载的。TCP/IP是一种可靠的连接,其传输的数据不会丢失、受损。TCP 连接是通过 4 个值来识别的...
2019-04-10 08:41:45 515
原创 Http权威指南笔记(三)——HTTP报文
前面介绍了URL是用于定位服务器上的资源。但是定位到资源后,通过什么样的方式、规定来让客户端和服务端进行交流呢?这就是本篇要介绍的HTTP报文。1 报文流HTTP 报文是在 HTTP 应用程序之间发送的数据块。这些数据块以一些文本形式的元信息(meta-information)开头。这些报文在客户端、服务器和代理之间流动。术语“流入”、“流出”、“上游”及“下游”都是用来描述报文方向的。一个示...
2019-03-31 14:28:30 877
原创 Http权威指南笔记(二)——URL与资源
其实在我们生活中,有很多标准化命名规范,如:街道地址,书籍的ISBN号等。所谓的标准化命名规范,就是按照一定的规则对资源进行命名,以便通过名称就能定位资源的一种规范。我们接下来学习的URL也是一种标准化命名规范。1 URL简介URL 是浏览器寻找信息时所需的资源位置。通过 URL,人类和应用程序才能找到、使用并共享因特网上大量的数据资源。URL是作为URI的一个子集,URI是一类更通用的资源...
2019-03-30 14:58:10 749
原创 OkHttp3源码分析(二)-Dispatcher和Interceptor
对OkHttp介绍,我们分为使用篇和源码分析篇两个系列进行介绍。在上一篇文章中,我们大致梳理了一下OkHttp的请求过程。但是中间涉及到的client.dispatcher().executed(this);、client.dispatcher().enqueue(new AsyncCall(responseCallback));和getResponseWithInterceptorChain(...
2019-03-23 16:30:08 220
原创 OkHttp3源码分析(一)-整体执行流程
对OkHttp介绍,我们分为使用篇和源码分析篇两个系列进行介绍。源码分析篇目录如下:(一)-整体执行流程在OkHttp使用篇当中,我们分几篇文章介绍了OkHttp框架的使用,但并没有去分析整个框架的源码和实现。这里单独开一个系列来捋一捋OkHttp3的源码,整个过程也是我自己学习的过程,所以有不好的地方还请见谅了。下面就进入到本篇文章主题,从源码角度分析下整体的执行流程。在OkHttp3使...
2019-03-16 18:26:48 407
原创 OkHttp3使用(三)-Interceptor
在上一篇文章中,我们介绍了OkHttp的基本用法。本篇文章,我们继续介绍其Interceptor的用法。在OkHttp框架中,Interceptor算是其强大的原因所在。我们平时很多功能(如下载进度监听、缓存策略设置、日志打印等)都需要通过Interceptor来实现。Interceptor介绍我们先看下下Interceptor这个类的源码:public interface Intercep...
2019-03-06 12:43:58 4173
原创 OkHttp3使用(二)-常用类介绍
在上一篇文章中先整体梳理下OkHttp的用法,没有对于其中涉及到的一些类进行介绍,所以这边文章,我们对其中比较重要的几个类进行一些介绍。但是关于这些类的介绍,还是推荐大家去官网api的文档进行查看是最好的,这个才是真正熟悉类最好的方法。我们知道,OkHttp发起请求的过程如下:OkHttpClient client = new OkHttpClient(); String run(Str...
2019-03-05 18:52:48 557
原创 OkHttp3使用(一)-基本使用
一、简介OkHttp3(后续简称为OkHttp)是一个处理网络请求的开源库,由Square公司贡献。由于其高效的特性,所以非常流行。1.1 优点为什么其能被广泛的使用,并且有替代HttpUrlConnetion之势呢,这就不得不说其具有的几个优点:支持HTTP2(SPDY)/HTTPS(SPDY是Google开发的基于TCP的传输层协议,用以最小化网络延迟,提升网络速度,优化用户的网络使...
2019-03-05 12:04:15 1632
原创 CoordinatorLayout的使用(四)——通过AppBarLayout源码分析联动机制
一、整体交互逻辑上一篇文章,我们从CoordinatorLayout源码出发,分析了一下Behavior几个重点方法的调用逻辑和流程。知道了整个交互的分发流程。但是具体是怎么让一个不是ScrollingView类型的View(如本篇要讲的AppBarLayout继承制LinearLayout的)怎么产生滑动效果的呢?这就是本篇所要讲解的内容了。首先,我们先用一张图说明下整个交互逻辑,这里N...
2018-12-17 15:34:51 1329 1
原创 CoordinatorLayout的使用(三)——CoordinatorLayout源码分析
前两篇文章介绍了CoordinatorLayout一些基本使用方式和简单自定义的Behavior。为什么CoordinatorLayout能达到这个效果呢。这就不得不对其源码进行分析了,本篇文章就以Behavior中的常用方法为重点,然后通过分析CoordinatorLayout的源码,梳理一下Behavior的调用逻辑和流程。一、简介老规矩,先看下Google对其的定义。Coord...
2018-12-17 15:27:33 802
原创 CoordinatorLayout的使用(二)——自定义Behavior
我们在上一篇文章CoordinatorLayout的使用(一)——简单使用中介绍了CoordinatorLayout的基本用法。为什么CoordinatorLayout能够这么方便的帮助我们非常简单的就实现炫酷的UI交互效果呢?这就不得不提到它的内部类Behavior了。其实CoordinatorLayout本身并没有做太多的事情,就是充当一个触摸事件桥梁的作用,所有的核心实现都是交给Behav...
2018-12-17 15:19:14 1269
原创 NestedScrolling机制解析(二)——NestedScrollView源码
上一篇文章我们介绍了NestedScrollingParent和NestedScrollingChild接口,了解了两个接口里的方法和相互之间的调用关系。这篇我们以NestedScrollView类为例,看先嵌套滚动Parent和Child之前具体是怎么实现的。为啥用NestedScrollView呢,因为这既是一个NestedScrollingParent又是一个NestedScrollingC...
2018-12-12 15:56:18 2000 1
原创 NestedScrolling机制解析(一)——从NestedScrollingParent和NestedScrollingChild分析入手
NestedScrolling机制概述我们知道,在Android系统对于Touch事件有一套自己的分发机制,其中主要涉及到以下三个方法: dispatchTouchEvent():主要是在View和ViewGroup中进行事件分发 onInterceptTouchEvent():进行Touch事件的拦截 onTouchEvent():Touch事件的处理 事件分发...
2018-12-11 15:28:06 1423
原创 关于解决自定义FloatingActionButton滑动行为(Behavior)只隐藏不出现的问题
最近在使用FloatingActionButton的时候,自定义了其Behavior,然后发现在SDK在25及以上的时候,出现了只能隐藏不能重新出现的问题(24及以下没有出现此问题),Behavior代码如下:public class MyFabBehavior extends FloatingActionButton.Behavior { // 必须重写两个参数的构造方法,否则会报
2017-05-16 17:05:22 3009 3
原创 BottomSheetDialog的使用及注意事项
一、BottomSheetDialog简介用途:底部弹起的view或dialog。实现:其关键也是CoordinatorLayout与Behavior要求: 采用View的形式展示的话,用于展示的View必须具备如下两个要求: 1,View类必须支持嵌套滚动。 2,View类必须是CoordinatorLayout
2017-03-18 11:52:49 9435
转载 Android事件分发机制完全解析,带你从源码的角度彻底理解
原作者是分为上下两篇进行讲解的,转载时直接转载为一篇了,原作出处如下:上集:http://blog.csdn.net/guolin_blog/article/details/9097463下集:http://blog.csdn.net/guolin_blog/article/details/9153761其实我一直准备写一篇关于Android事件分发机制的文章,从我的第
2017-02-11 11:49:16 241
转载 Gradle实战:Android多渠道打包方案汇总
转自:http://blog.csdn.net/u010818425/article/details/52319382本文将延续之前几篇博客的风格,先从基本概念入手,这有助于我们对后文的理解; 在后续的代码中如果忘了某个概念的具体意义,可以回顾头来重新查看概念的介绍。文中先详细介绍了普通批量打包方案的实现原理,后介绍了美团批量打包的基本实现原理,并引用了几篇实现方案供大家参
2017-02-10 16:36:46 264
转载 Android native和h5混合开发几种常见的hybrid通信方式
前言在看这篇文章之前你要确保你有那么一点点的js知识,没错只需要一点点,能看懂最简单的代码就可以。如果你之前没接触过js的话。。也没关系,我会把其中对应的逻辑用语言表达出来。为什么需要用到js呢,因为前端体系中,像我们说的点击按钮这样的逻辑都是放在js脚本中执行的,有点像我们Android中的model层。(由于本人对前端的知识也只是略知一二,这个比方可能不太恰当,见谅见谅)。所以
2017-02-07 10:49:00 688
原创 CoordinatorLayout的使用(一)——简单使用
简介CoordinatorLayout是Android support design推出的新布局,主要用于作为视图根布局以及协调子控件的行为(根据用户的触摸行为产生一定的动画效果)。主要是通过设置子View的 Behaviors来实现不同效果。环境配置直接在Module的build.gradle文件引入悬浮按钮FloatingActionButton的使用
2017-01-23 10:50:54 11724 1
原创 Android DataBinding介绍(一)——简介、数据及方法事件绑定
简介Data binding 是Google在2015年7月发布的Android Studio v1.3.0 版本上引入的,在2016年4月Android Studio v2.0.0 上正式支持。引入之初,不支持双向绑定,目前已经支持了。DataBinding 是基于MVVM思想实现数据和UI绑定的的框架,有了 Data Binding,在Android中也可以很方便的实现MVVM。在
2017-01-22 14:25:43 16151 2
原创 Android M(6.0)运行时权限申请及遇到的坑
一、概述 在对动态权限申请进行详细说明时,还是先大致介绍下6.0后,google对权限的一个归类和划分。在Android M之前,再开发应用的时候,程序员只需要在AndroidManifest.xml文件中进行权限配置即可,这种操作确实比较方便,但是也容让有些程序员为了图方便,一股脑儿的申请很多权限,也不管APP是否能用上。另一方面,对用户而言,一般在安装应用的时候,也不会注意申
2017-01-20 15:57:22 5415
原创 Android中ViewPager+Fragment预加载和onResume方法的问题
问题描述今天在自己写一些DEMO的过程中 发现ViewPager + Fragment 实现布局的时候,有一个问题。如下面界面(图片是网上找的,仅作举例参考用你,如要删除,请告知):我是在多个界面都有一个自动轮播图效果,在fragment的onResume方法里面开启轮播,onStop方法里面结束轮播。初次初始化fragment的时候没问题,但是当你切换到其他页面再切回来的时候,发现开启轮
2016-07-09 19:11:29 3437
转载 Android中使用Handler造成内存泄露的分析和解决
什么是内存泄露?Java使用有向图机制,通过GC自动检查内存中的对象(什么时候检查由虚拟机决定),如果GC发现一个或一组对象为不可到达状态,则将该对象从内存中回收。也就是说,一个对象不被任何引用所指向,则该对象会在被GC发现的时候被回收;另外,如果一组对象中只包含互相的引用,而没有来自它们外部的引用(例如有两个对象A和B互相持有引用,但没有任何外部对象持有指向A或B的引用),这仍然属于不可
2016-05-27 12:53:57 284
转载 Andorid获取状态栏高度
在应用开发中,有时我们需要用代码计算布局的高度,可能需要减去状态栏(status bar)的高度。状态栏高度定义在Android系统尺寸资源中status_bar_height,但这并不是公开可直接使用的,例如像通常使用系统资源那样android.R.dimen.status_bar_height。但是系统给我们提供了一个Resource类,通过这个类我们可以获取资源文件。下边是在Activity
2016-05-26 16:07:12 790
转载 This Handler class should be static or leaks might occur 解决办法
今天写代码时候,留意了一下使用Handler的时候爆出的黄色警告,很多人使用Handler都是直接采用如下方式:private Handler mHandler = new Handler() { public void handleMessage(android.os.Message msg) { }; };这样使用Han
2016-05-22 16:06:27 296
转载 LayoutInflater的错误用法(Avoid passing null as the view root )
今天在练习使用Fragment的时候,注意到在使用LayoutInflater的时候有黄色报警(Avoid passing null as the view root (needed to resolve layout parameters on the inflated layout's root element)),然后搜索了一下,发现国内深入讨论的不多。然后找到了一篇国外对LayoutInf
2016-05-20 20:37:21 5352 1
微健康Demo
2016-12-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人