自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

嘻哈包袱铺 专栏

github开源项目 https://github.com/GeekGhost/Ghost

  • 博客(26)
  • 资源 (1)
  • 收藏
  • 关注

原创 HttpClient的几个超时时间

TCP Socket连接超时:如果应用层不能及时接受已被TCP接受的连接,这些连接可能占满整个连接队列,新的连接请求可能不被响应而会超时。如果一个连接请求SYN发送后,一段时间后没有收到确认SYN+ACK,TCP会重传这个连接请求SYN两次,每次重传的时间间隔加倍,在规定的时间内仍没有收到SYN+ACK,TCP将放弃这个连接请求,连接建立就超时了。  J

2017-11-23 17:47:31 1314

原创 logback的使用和logback.xml详解

logback的配置介绍  1、Logger、appender及layoutLogger作为日志的记录器,把它关联到应用的对应的context上后,主要用于存放日志对象,也可以定义日志类型、级别。Appender主要用于指定日志输出的目的地,目的地可以是控制台、文件、远程套接字服务器、 MySQL、PostreSQL、 Oracle和其他数据库、 JMS和远程UNIX Syslog守护

2017-11-23 15:27:15 344

原创 OkHttp之拦截器

拦截器是一个非常强大的机制,可以监视,重写和重试call。这里是一个简单的拦截器,用来打印出去的请求和收到的响应。class LoggingInterceptor implements Interceptor { @Override public Response intercept(Interceptor.Chain chain) throws IOException { Requ

2017-11-22 16:34:52 407

转载 携程App的网络性能优化实践

转载自:http://www.infoq.com/cn/articles/how-ctrip-improves-app-networking-performance首先介绍一下携程App的网络服务架构。由于携程业务众多,开发资源导致无法全部使用Native来实现业务逻辑,因此有相当一部分频道基于Hybrid实现。网络通讯属于基础&业务框架层中基础设施的一部分,为App提供统一的网络服务

2017-11-22 15:34:30 387

转载 okhttp post 重定向参数丢失 跨协议重定向

序言最近的项目中,一个已经开发多时的接口突然就不能用了。抓包发现,原来是由于重定向引起的bug。发现了两个。问题1.如果遇到301,302等重定向,则会忽略原来的请求方式,统一使用GET方式。如果原来使用的是POST方式,则会丢失参数。如下图post请求中有一个userId参数重定向以后变成GET请求,参数丢失,请求失败问题2.okhttp源码中不支持跨协议重定向。如

2017-11-21 18:28:36 722

原创 Http协议之301,302和307

Http协议是有状态码的,比较熟悉的状态码是200,代表链接OK,还有404和403,一个是not found,另一个是forbidden。Not found不用多说,可能是地址栏输入有误,或者是网页已经被移动。Forbidden的原因有很多,有可能是IP被服务器拉入黑名单,有可能是IP过分密集的访问该网站,被网站防火墙屏蔽,有可能是域名解析到了空间,但是空间没有绑定域名,也有可能是网页脚本文件在

2017-11-21 12:33:46 7002

原创 Dagger2从入门到放弃再到恍然大悟

现在Dagger2在项目里用的越来越多了,最近花了些时间学习了一下Dagger2,这篇文章主要帮助理解Dagger2的注入实现过程,如有错误,还请指正!什么是Dagger2Dagger2是Dagger的升级版,是一个依赖注入框架,现在由Google接手维护。 恩,这里有个关键字依赖注入,因此我们得先知道什么是依赖注入,才能更好的理解Dagger2。依赖注入是面向对象编程的一

2017-11-20 11:16:02 336

原创 Java - 写给 Android 应用开发者的 JNI 快速入门指北

Java Native Interface(Java本地接口) 简称 JNI,是一种编程框架,使得 JVM 中的 Java程序 可以调用本地应用/或库,也可以被其他程序调用。其过程可以不负责任的理解成 Java 的反射,因为代码逻辑和反射调用很像。源码本文所有涉及的所有源码:https://github.com/gavinliu/Study-JNI平台编译环境

2017-11-15 15:44:35 293

原创 Android NDK开发扫盲及最新CMake的编译使用

1 NDK 简介在介绍 NDK 之前还是首推 Android 官方 NDK 文档。传送门官方文档分别从以下几个方面介绍了 NDKNDK 的基础概念如何编译 NDK 项目ABI 是什么以及不同 CPU 指令集支持哪些 ABI如何使用您自己及其他预建的库本节将会对文档进行总结和补充。所以建议先浏览一遍文档,或者看完本篇文章再回头看一遍文档。1.1 NDK 基础概念首先先用简

2017-11-15 14:34:25 368

原创 Android SO文件的兼容和适配

开发Android应用时,有时候Java层的编码不能满足实现需求,就需要到C/C++实现后生成SO文件,再用System.loadLibrary()加载进行调用,这里成为JNI层的实现。常见的场景如:加解密算法,音视频编解码等。在生成SO文件时,需要考虑适配市面上不同手机CPU架构,而生成支持不同平台的SO文件进行兼容。目前Android共支持七种不同类型的CPU架构,分别是:ARMv5,ARMv

2017-11-15 14:30:03 273

原创 APP弱网络条件下,体验优化之道

APP弱网络条件下,体验优化之道最近跟朋友聊天刚好聊到这一块,他们是在做电商业务,商品图片及其多,API接口请求频率也高。然而,他们在移动2/3G的网络环境下,APP经常会出现Loading很久的情况,这里我把我们所分析与使用到的网络优化方案与大家分享一下。所谓的弱网络,也就是指在网络不好的条件下进行使用APP,如2G、3G网络,这类网络条件下,用户的网络速度基本维

2017-11-13 14:14:20 1281

转载 Android架构思考(模块化、多进程)

转载自:http://blog.spinytech.com/2016/12/28/android_modularization/关于模块化(组件化)这个问题,我想每个开发者可能都认真的思考过。随着项目的开发,业务不断壮大,业务模块越来越多,各个模块间相互引用,耦合越来越严重,同时有些项目(比如我们公司)还伴随着子应用单独包装推广,影子应用单独发布等等需求,重新调整架构迫在眉睫。今天,我

2017-11-13 11:51:58 317

原创 提高代码质量 - 工具篇

在这片文章中,我将从工具使用的角度上讲述如何提高Android代码质量,这些自动化工具包括Checksytle,Findbugs,PMD和Android Lint。团队中代码意识不一致,水平参差不齐,代码风格迥异,定下的规范也是熟视无睹。这时候就需要借助工具的力量,利用工具自动地帮助我们检测代码,避免代码恶习,预防蚁穴坏堤。0.1 Fork这个例子工程我强烈建议你叉这个例子工程,所有的使用事列

2017-11-13 11:46:53 323

原创 国内各地图API坐标系统比较与转换(做LBS的朋友请转)

一、各个坐标系的概况众所周知地球是一个不规则椭圆体,GIS中的坐标系定义由基准面和地图投影两组参数确定,而基准面的定义则由特定椭球体及其对应的转换参数确定。 基准面是利用特定椭球体对特定地区地球表面的逼近,因此每个国家或地区均有各自的基准面。基准面是在椭球体基础上建立的,椭球体可以对应多个基准面,而基准面只能对应一个椭球体。意思就是无论是谷歌地图、搜搜地图还是高德地图、百度地图区别只是针对不同的

2017-11-13 10:09:13 2863

转载 Google官方MVP+Dagger2架构详解

转载自:http://www.jianshu.com/p/01d3c014b0b11 前言前段时间分享了一篇文章:google官方架构MVP解析与实战 ,针对这是对google官方示例架构的一个分支todo-mvp/ 的项目解析与实际运用,google官方示例架构项目googlesamples/android-architecture 目前还有两个分支在开发中google官方示例架构项目

2017-11-13 09:49:13 664

转载 代码检视工具Gerrit的日常使用

转载自:HTTP://cdn2.jianshu.io/p/b77fd16894b61,Gerrit是什么?Gerrit实际上一个Git服务器,它为它的服务器上托管的Git仓库提供了一系列的权限控制,以及一个用户做代码审查是Web前台页面。当然,其主要功能就是用来做Code Review。2,Gerrit用户配置电子邮件激活 Gerrit账户的设置界面,点击“联系信息”进入电子邮

2017-11-09 11:31:15 1459

原创 gerrit自动设置reviewer

gerrit 提供了一种代码review解决方案,但每次代码提交之后都要设置每个commit的code reviewer, 实在是痛苦。gerrit 在官方说明文档里面提供了解决方法,地址:https://gerrit-review.googlesource.com/Documentation/user-upload.html#push_create,参考git

2017-11-09 11:28:37 5032 2

转载 Android-安全-签名验证让二次打包变的更难

转载:http://blog.csdn.net/qq_32452623/article/details/54351364二次打包的危害性如果你没有对你的应用做任何的安全保障措施,那么你的应用就非常的危险首先了解一下什么是二次打包:二次打包 通过工具apktool、dex2jar、jd-gui、DDMS、签名工具获取源码,嵌入恶意病毒、广告等行为再利用

2017-11-09 09:44:06 685

原创 Android Studio NDK 入门demo

针对刚入门NDK的同学简化一下入门程序的编写,哈哈一、新建NdkTest项目。二、直接在目录下新建native方法工具类,方便调用。三、MainActivity中调用Native方法更新UI。public class MainActivity extends AppCompatActivity { @Override protect

2017-11-08 10:16:24 397 1

原创 android NDK——搭建Android Studio的NDK环境

我接触jni的时候正在用android studio,所以我记录一下在as上部署ndk环境的步骤。首先先看一下大概步骤: 1,下载ndk 2,配置环境变量 3,配置as属性 4,java测试代码 5,创建.h的头文件 6,创建.c的测试c代码 7,生成so文件 8,测试ndk环境ok。接下来我们就来一步一步的实现。 1,下载ndk。这里推荐使用a

2017-11-08 09:45:08 331

原创 Android-NDK-之Hello-World

今天来聊聊 Android Studio 之创建 NDK 之Hello World以下是ndk相关的简单介绍什么是ndkndk全称 Native Development Kit 原生开发套件众所周知,Android程序运行在Dalvik虚拟机中,NDK允许用户使用类似C / C++之类的原生代码语言执行部分程序。NDK包括了: 1.从C / C++生成原生代码库

2017-11-08 09:23:38 443

原创 Android-NDK-之so文件签名校验

前面说了so文件可以大大减少数据被泄露的情况,但这得是有前提条件。因为正常的so文件,别人是可以拿到后可以直接在项目中使用的。那有什么方式可以增加难度,让别人需要一定复杂操作才能使用该so文件库呢?下面就为你一一讲解本节的 Android-NDK-之so文件签名校验实现原理因为c++也是可以获取apk应用签名的,于是这里就可以通过获取的签名来匹配c++本地存

2017-11-08 09:19:20 7945

原创 android和ios GoogleMap画导航线路图路径规划(Directions)

本文适合【Android iOS】下的google地图开发转自:HTTP://blog.csdn .NET / mad1989 /条/信息/ 97346671.0 GoogleMap路径规划Google Mapandroid版和IOS版的SDK都没有集成路径规划的相关API,若要实现,只能通过http链接请求URL,携带起点终点经纬度,得到返回集合,在地图中展示。

2017-11-07 13:08:50 5407

原创 Android-安全-签名验证让二次打包变的更难

二次打包的危害性如果你没有对你的应用做任何的安全保障措施,那么你的应用就非常的危险首先了解一下什么是二次打包:二次打包 通过工具apktool、dex2jar、jd-gui、DDMS、签名工具获取源码,嵌入恶意病毒、广告等行为再利用工具打包、签名,形成二次打包应用。二次打包的一个小演示这是代码: TextView tv = (TextView

2017-11-04 16:30:09 606

原创 Android系统使用谷歌官方GCM推送指南

本文旨在为所有Android系统手机普通用户提供使用谷歌GCM推送的教程,注意这不是用于开发者的。虽名为指南,但多少是探索性的,因为一些细节笔者尚未搞清楚,希望各位指正。由于大部分国内应用没有使用GCM推送服务,那么如果你手机里的应用几乎没有使用GCM服务的应用,那么即使打通GCM也是没有意义的。本文的适用者是使用了一些依靠GCM服务给用户推送消息和通知的应用的Android手机用户。那么哪些应用

2017-11-03 11:28:21 30868 1

转载 Android开发之高德地图实现定位

转载自:http://www.jianshu.com/p/c3dc0cea0a2d在应用开发中,地图开发是经常需要使用的“组件”,Google Map虽然有官方教程,无奈用不起来,原因你懂的~~那么国内比较出名的是就是百度地图和高德地图,由于个人喜好,所以选择了高德地图LBS,废话不说,上干货。1、注册开发者,创建应用这个几乎是所有开放平台都通用的做法,无外乎注册帐号,成为开发者,

2017-11-01 10:04:56 851

Fragment保持状态的框架

刚开始使用fragment的时候,看到网上有很多例子都是说只要replace来切换界面,但是这个会有一个缺点,比如A界面是个列表,好不容易通过流量下载来了,然后切换界面,再次返回,由于使用replace,fragment就又重新创建界面导致,用户又得加载。现在这个Demo,就完美的解决了这个问题。这个是使用了add方法,可以保持fragment的状态。很有用的UI框架

2014-01-24

空空如也

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

TA关注的人

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