AspectJ之android应用

之前也写过一下AOP在android上的应用和AspectJ如果再android上使用,而然近期看到一片非常好的文章,详细介绍了AspectJ的概念,以及给出了如何在android上使用AspectJ。 好了废话不多少,直接上作者原文:
http://blog.csdn.net/eclipsexys/article/details/54425414

阅读全文

Android Studio Memory Monitors的简单使用介绍

Android Studio自带的Memory Monitors一直没怎么好好利用,今天抽空研究了一下,大概的记录一下使用方法吧,本来打算自己写,结果发现大神写的比我写的还详细,那就不得不膜拜并推广了。
不废话了,直接上连接
http://blog.csdn.net/true100/article/details/52604910

阅读全文

Shell之字符串截取

Linux下写shell脚本,总是避免不了和字符串打交道,shell不想其他高级语言有很多现成的api对字符串进行处理,但是shell下不会字符串的处理,你就放弃shell脚本的编写吧。
下边总结一下shell中对字符串的常见用法:
假设有变量 var=”http://www.163.com/123.html"

阅读全文

https+httpDNS遇到的那些坑

https和httpDNS的优缺点我就不说了,网上一搜一大把,但是总体来说还是优点大于缺点的,否则也不用非那么大功夫折腾这儿玩意儿了。
下边我就主要说一下我们最近引入https+httpDNS遇到的一些坑。

###方案探索:

####1.Request执行前替换域名为ip地址,并设置请求投的host
此方案具体实现起来可以自己替换Request,如果使用okhttp也可以直接通过拦截器来处理。
这种方案实现起来很简单,没有任何技术性的问题,只需要发送前做一个处理就行。 这种方案单独使用https或者单独使用httpDNS没有任何问题,但是一旦两者结合起来就产生了问题。主要的问题是SNI的问题。
SNI(Server Name Indication)是为了解决一个服务器使用多个域名和证书的SSL/TLS扩展。 一句话简述它的工作原理就是,在连接到服务器建立SSL连接之前先发送要访问站点的域名(Hostname), 这样服务器根据这个域名返回一个合适的证书。
由于是通过IP进行访问的,服务如果IP服务器上设置了多个域名多个证书,那么简历ssl连接时服务器不知道你需要哪个证书,所有有可能就会返回的是域名的根证书或者错误的证书,这时候我们客户端或者前端就会发生域名证书不匹配的问题,直接导致了连接失败。
SNI的解决方案: ssl连接时通过域名获取证书,已保证获取有效的证书。详细解决方案可以看一下阿里提供的方案:单IP多HTTPS域名场景下的解决方案

阅读全文

Gradle入门教程系列(转)

最近再写gradle plugin,但是知识忘的太快了,创建groovy的工程目录结构都已经想不起来,于是只能google,发现一个不错的gradle入门教程,拿来与大家共勉。不废话直接上地址
http://www.cnblogs.com/davenkin/p/gradle-learning-1.html

阅读全文

Git常用命令以及常见问题处理--update

  1. 直接clone远程指定分支到本地指定的路径

    1
    git clone -b 远程分支名 git远程地址 本地存储目录

阅读全文

time命令执行并统计时间

很多时候我们需要统计某个命令执行的时间或者统计某个脚本的执行时间,一般情况下我们有两种方案:a. 修改脚本在脚本执行开始和结束的时候使用date命令记录时间; b. 使用time命令记录脚本执行的时间。

date命令的优缺点

date命令使用很方便,但是它有一个指名的缺点,date的时间戳是按照秒的级别计算的,而非毫秒级别计算。因此时间要求在毫秒级别的,使用date将会特别麻烦。
date命令使用详解: http://www.cnblogs.com/barrychiao/archive/2012/10/08/2715808.html

阅读全文

Glide源码解读

一张图带你装逼带你飞。文字表述能力实在太差,无奈又想总结一下glide源码加载图片的流程,于是乎有了下边这张图。
读懂这个图,再通过源码进行分析,如果再看不懂Glide,那好,我免费让你睡一晚。
注意:此图是根据glide v3.7.0源码绘制,看源码时注意切到此分支。

阅读全文

Git移除某个指定的commit提交

  1. git移除某个指定的commit
    git revert命令,此命令用于引入一个新提交来抵消给定的提交的影响。
    使用: git revert commitId
    图解:
    A —B —C —D—-E —–F
    现在想要删除D这个commit,即删除D这个commit对当前分支的影响
    使用git revert commit_D_id ,执行之后的状态
    A—B—C—D—-E—-F—-D1
    D1的提交即是D的逆转。
    上图解也说明了git revert的原理,git revert不修改版本库的历史纪录,相反它是王历史记录中添加新的提交。

阅读全文

android调用新浪微博分享未安装微博客户端时H5分享页面空白页面

问题描述: 最近修改客户端微博sdk,由于原来使用的是open api的分享和认证,现在准备切换为微博的sdk来实现。使用过程中出现了未安装新浪微博客户端时,web分享,oss web认证,登录页面打开空白的问题,https://github.com/sinaweibosdk/weibo_android_sdk/issues/180
尝试第一步: 无奈之下,只能看官方demo然后对比自己的代码了。然并卵,代码改成一样的都不行。
尝试第二部: 既然这样不行,那只能自己再去写一个demo了,自己写的代码代码和有问题的工程几乎是一样的。Run Demo,见了鬼了,没有任何问题。
没有办法了,只能看官方github上的issue了,竟然周到了碰到相同问题的哥们。于是了解到了他们产生此问题的原因:起用了webview的pauseTimers()方法
WebView的pauseTimers()方法:
官方API解释:
Pauses all layout, parsing, and JavaScript timers for all WebViews. This is a global requests, not restricted to just this WebView. This can be useful if the application has been paused.
大致含义是是一个全局的设置,暂停掉所有的布局,解析以及js执行,到这儿恍然大悟。我们代码中的正文页有使用webview,并在页面onPause的使用掉用了webview的pauseTimers()方法。恰巧,调用微博sdk的h5进行登录认证的时候,正好我们的页面处于onPause的状态,导致了微博sdk中的webview停止了渲染,出现白页。
如上:解决方式,不执行webview的pauseTimers()方法(即不启用webview的暂停渲染)

阅读全文