自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 资源 (2)
  • 收藏
  • 关注

转载 AES加密算法原理及java android实现

AES当今最流行的对称加密算法之一,是DES的替代者。密钥是AES算法实现加密和解密的根本。对称加密算法之所以对称,是因为这类算法对明文的加密和解密需要使用同一个密钥。AES支持三种长度的密钥:128位,192位,256位平时大家所说的AES128,AES192,AES256,实际上就是指的AES算法对不同长度密钥的使用。他们本质的区别是加密处理轮数不同。AES加密原理:分组加密...

2019-05-30 14:15:31 1485

原创 BufferedInputStream BufferedOutputStream原理解析,正确使用Buffer

谈到java BIO中的性能优化,大部分人都会说使用BufferedInputStream BufferedOutputStream,理由是IO是跟硬件交互,是耗时操作,使用BufferedInputStream减少IO交互次数能大量提升IO性能。查看BufferedInputStream 源码,BufferedInputStream 有一个缓存数组protected volatile ...

2018-10-25 18:17:47 2210 1

原创 Base64加密原理

Base64加密方式是将三个八位的字节转化为四个六位的字节(不足八位的高位补00),3*8 = 4*6;,所以base64加密过后的内容比原来的大三分之一;举例:加密“ace”,ace转化为二进制为:‭01100001‬ ‭01100011‬ ‭01100101‬转化为base64的四字节六位:011000 01‬‭0110 0011‬01 100101‬那因为计算机是一字节八位的...

2018-09-11 17:21:45 15020 2

原创 git忽略已提交文件

在使用git中,我们要忽略某些文件,可以在.gitignore文件中添加即可实现。但需要在这些文件未提交,未被git追踪(tracked)的情况下才有效。如果文件已被提交,追踪的情况下,有两种处理方法:一:先取消git追踪文件 git rm --cached config.txt 然后在.gitignore中添加需要忽略的文件 config.txt二:git update-in

2018-05-10 10:36:41 443

原创 jadx反编译

刚发现的一个反编译神器jadx,对比之前的apktool跟dex2jar,jadx胜在可读性好太多,apktool后的smali长的跟汇编语言一样,dex2jar产生的源码也经常出现奇奇怪怪的语法,让我理解不能.jadx GitHub 地址:https://github.com/skylot/jadx下载或克隆后,在目录下运行./gradlew dist结束后会生成build文件夹

2018-01-17 14:53:11 3364

原创 手机端访问自己电脑上搭建的服务端

前提:手机,电脑的网络需要在同一个局域网下;一: 关闭电脑防火墙或者设置80端口允许连接;设置方法:打开控制面板---Windows防火墙---高级设置---入站规则---新建规则---端口---输入80二: 手机访问电脑,不能再用localhost或者127.0.0.1来访问,127.0.0.1环回地址不会进行任何网络传输,打开电脑命令行,ipconfig

2017-12-25 15:06:05 4443

原创 Android 项目组件化

随着App越来越大,越来越复杂,我们会面临一些问题:团队多人开发协作不顺畅;项目越来越大,编译运行越来越慢甚至超过十分钟;渠道特殊要求版本维护花费大量时间精力;组件化能解决以上所有问题.组件化:对App做拆分,按照业务拆分成多个子模块,之间完全解耦,通过打包编译流程控制App功能;(组件化还有个孪生兄弟,插件化,两者的区别有一个很形象的图)两者的核心都是各个模...

2017-11-17 15:37:42 510

原创 android 匹配so文件规则

在对接多个有so文件的第三方sdk时碰到一个问题,在某些手机上运行正常,在某些手机上就会崩溃报错,报错Log显示:无法找到某某**.so文件。

2017-10-23 09:39:54 757

转载 apk反编译---smali语法

APK反编译之一:基础知识原文作者:lpohvbe | http://blog.csdn.net/lpohvbe/article/details/7981386APK、Dalvik字节码和smali文件APK文件    大家都应该知道APK文件其实就是一个MIME为ZIP的压缩包,我们修改ZIP后缀名方式可以看到内部的文件结构,例如修改后缀后用RAR

2017-09-20 14:11:28 677

原创 apktool反编译,重打包

apktool 安卓逆向工程的工具,能解码apk文件到源文件,也能在做出修改后重新打包。官方下载地址 https://ibotpeaches.github.io/Apktool/install/

2017-09-19 13:56:42 1104

原创 android API HOOK

API层面的hook是android hook技术中比较入门的一种,根据hook点选择的不同,能实现很多强大的功能,比如hook掉框架层的某些系统类达到不可思议的效果。hook主要技术点:1.寻找合适的hook点。这一点其实是最难的,我们要根据需求,分析系统源码寻找到合适的hook点。一般hook点都是找单例,静态变量,这样hook起来简单,方便一些。2.代理。代理的作用是

2017-08-30 18:03:36 2359

原创 属性动画,属性动画组合队列详解 ValueAnimator ObjectAnimator AnimatorSet

属性动画跟早些的补间动画最大的差别应该是补间动画只是个绘画的展示效果,duang duang duang都是特技,是假的,属性动画是view本身的属性真的跟着动画改变的,是真的。ValueAnimator 使用姿势:ValueAnimator valueAnimator = ValueAnimator.ofFloat(0,1.0f); valueAnim

2017-07-04 18:18:14 966

原创 延迟队列DelayQueue

项目中需要统计卸载app,但是安卓系统在用户更新app时,发送的广播是先Intent.ACTION_PACKAGE_REMOVED然后再Intent.ACTION_PACKAGE_ADDED,虽然有参数指定了这个广播是否是更新,然饿还是有不少用户反应他们是重新装了一遍应用,没有卸载却有卸载记录。boolean replacing = false; if(extras!=null){

2017-06-28 10:47:23 1734 5

原创 超简单好用的可拖动控件

public class DraggableView extends View { public DraggableView(Context context) { super(context); } public DraggableView(Context context, @Nullable AttributeSet attrs) {

2017-05-22 11:03:14 413

转载 android 坐标系统

首先明确一下 android中的坐标系统 :屏幕的左上角是坐标系统原点(0,0),原点向右延伸是X轴正方向,原点向下延伸是Y轴正方向。 一、View的坐标     需要注意view的坐标是相对父容器而言的,包括:getTop()、getBottom(),getLeft(),getRight()。以getTop为例,函数源代码为: /*** Top position of this

2017-05-22 10:44:55 349

翻译 Java8新特性 接口默认方法,接口静态方法

官方原文(英文)地址:https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.htmlDefault MethodsInterfaces 章节中举了个例子,汽车生产商制定了操作汽车的接口,那现在如果汽车生产商给汽车添加了新功能(比如起飞)后会怎么样呢?生产商需要制定一个新方法,来让其他公司适配软

2017-05-09 14:24:29 317

原创 最大子数组

给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。样例给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子数组为[4,−1,2,1],其最大和为6public int maxSubArray(int[] nums) { if (nums == null || nums.length == 0) return 0;

2017-04-13 17:30:11 460 3

原创 安卓播放视频MediaPlayer

示例代码中包括了两个实现视频播放的方法,13-15行是用了一个开源框架,非常流弊,开源库地址:https://github.com/lipangit/JieCaoVideoPlayer开源库中也是用的MediaPlayer实现播放的,不过他整合了暂停继续,音量调节,进度调节,全屏等等很多强大的功能,这些功能自己开发起来会非常花费时间。另一个就是用MediaPlayer实现的,只实现了个基本

2017-04-13 14:49:26 1680

原创 使用异或运算 不借助临时变量交换两个数

通常交换两个变量需借助一个临时变量,如:int temp;temp=aa=b;b=temp;使用异或可以不借助临时变量交换两个数:a = a ^ b;b = a ^ b;a = a ^ b;这是用了异或的自反性性质做到的:a^ b ^ b =  a ^ 0 =  a具体推导过程:

2017-04-10 16:41:28 476

原创 异或运用 算法题 缺失的数

题目:给出一个包含 0 .. N 中 N 个数的序列,找出0 .. N 中没有出现在序列中的那个数。public int findMissing(int[] nums) { if (nums == null || nums.length == 0) { return 0; } int result_total = 0;

2017-04-10 15:23:41 1414

原创 正确使用inflate,inflate原理解析,LayoutInflater

要看结论直接拉到底部在用代码inflate一个XML布局文件添加到父容器时,偶尔会碰到这个inflate出来的view,会无法正确显示我们在xml中所定义的样子,比如可能会无法正确显示最外层定义的参数,width,height,padding,margin等等。今天研究了下inflate的源码,总算明白了正确使用的姿势。inflate一个xml布局文件有多种方式:比如可以调用Vie

2017-03-14 16:19:46 1112

转载 Android Apk打包原理

概述Apk其实是一个压缩包,当解压后,其内部主要就是资源文件和classes.dex。 这个classes.dex文件就是Android系统虚拟机的可执行文件Android工程打包成Apk一般有2种方式一种是通过集成开发工具(eg: Android Studio)直接生成Apk。 一种是使用工具在命令行方式下打包Apk。 但是不管哪种方式,其本质

2017-01-17 11:02:02 3326

转载 Android 安全使用HTTPS

原文转载地址:https://zhuanlan.zhihu.com/p/24093848作者:阿里聚安全链接:https://zhuanlan.zhihu.com/p/24093848来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。此前我们通过《全球HTTPS时代已来,你跟上了吗?》了解到为什么 HTTPS 将逐渐取代HTTP,成为

2016-12-12 15:26:33 1223

原创 史上最快安卓渠道包打包方式

开源项目git地址:https://github.com/mcxiaoke/packer-ng-plugin开源项目上介绍的gradle配置方式没有调通,本文直接采用编译java文件命令行运行的方式实现。开始超简单的教程:一共就一个类,如下:import java.io.BufferedReader;import java.io.DataInput;import

2016-10-25 11:33:33 1878

翻译 RXjava observeOn subscribeOn 解析

RXjava 中的observeOn subscribeOn 两个函数十分类似,相信很多人在使用时会有疑问。官方文档的说明,包括图片不是那么容易理解,特此立翻译贴一篇。官方文档解释如下地址:http://reactivex.io/documentation/operators/observeon.htmlhttp://reactivex.io/documentation/operato

2016-09-19 18:18:15 1960

转载 volatile原理 使用条件

有时仅仅为了读写一个或者两个实例域就使用同步的话,显得开销过大,volatile关键字为实例域的同步访问提供了免锁的机制。如果声明一个域为volatile,那么编译器和虚拟机就知道该域是可能被另一个线程并发更新的。再讲到volatile关键字之前我们需要了解一下内存模型的相关概念以及并发编程中的三个特性:原子性,可见性和有序性。1. java内存模型与原子性,可见性和有序性Java内存

2016-08-28 15:23:26 2786 4

转载 Java动态代理机制原理详解(JDK 和CGLIB,Javassist,ASM)

原文地址:http://blog.csdn.net/luanlouis/article/details/24589193class文件简介及加载     Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中,解析.cl

2016-08-23 16:39:41 4873 1

原创 viewpager图片查看 缩放 拖拽(高仿微信图片浏览效果)

源码已上传git: https://github.com/zjfangyufeng/ImageDetailDemo发现市面上安卓的大图浏览还数微信做得体验最好。淘宝,新浪,网易新闻这些巨头的app大图浏览效果还是不够好......比如淘宝的,放大后,拖到边界就不动了,需要抬起手,再按下才能切换到下一页。还有比如他们的通病:viewpager切换到下一页都会闪一下。这个的原因,是在事件消

2016-08-22 14:52:13 2666 2

原创 双卡双待 getDeviceId unique device ID IMEI 不唯一 会变问题

最近接到用户反馈无法登录的情况越来越多,因为我们的app设计上是不能换手机用,也就是绑定了唯一的设备ID。从反馈上来看,有一个线索是大部分是双卡双待的用户出现这个问题,并且切换过SIM卡。看来getDeviceId这个方法在双卡双待手机上获取IMEI还是有问题的。getDeviceId方式的注释:Returns the unique device ID, for example, the ...

2016-08-17 15:21:30 11477 7

转载 代理 proxy 设计模式

一.概述       代理模式也是平时比较常用的设计模式之一,代理模式其实就是提供了一个新的对象,实现了对真实对象的操作,或成为真实对象的替身.在日常生活中也是很常见的.例如A要租房,为了省麻烦A会去找中介,中介会替代A去筛选房子,A坐享中介筛选的结果,并且交房租也是交给中介,这就是一个典型的日常生活中代理模式的应用.平时打开网页,最先开到的一般都是文字,而图片等一些大的资源都会延迟加载,

2016-08-16 18:00:44 332

转载 10 个迅速提升你 Git 水平的提示

原文转载地址 http://www.oschina.net/translate/10-tips-git-next-level最近我们推出了两个教程:熟悉Git的基本功能和让你在开发团队中熟练的使用Git . 我们所讨论的命令足够一个开发者在Git使用方面游刃有余。在这篇文章中,我们试图探索怎样有效的管理你的时间和充分的使用Git提供的功能。注:本文中,一些命令包含了

2016-08-05 10:29:01 342

原创 android studio 单元测试

最近研究了下android studio下的单元测试,网上看了许多帖子,但是大部分都比较复杂而且跑不通!最后一通鼓捣,其实android studio自带单元测试,很简单就能实现。android studio项目目录下都有个androidTest目录,一看这名字就是测试用得 0.0那问题就是怎么用,怎么让它跑起来。这样子就配置好了一个

2016-06-29 11:44:24 434

原创 序列化Serializable serialVersionUID的作用

序列化Serializable的方式特别简单 实现Serializable接口,再在类中声明如下这一个属性即可。private static final long serialVersionUID = -3928832861296252415L;但是其实哪怕不声明serialVersionUID 也可以实现序列化,那么问题来了,到底要不要指定呢?serialVersionUID 到底是干嘛

2016-06-14 16:08:51 4441

原创 多线程断点续传下载

此方法实现的下载,下载速度达到网速上限十几兆/S。先讲大体实现思路,再讲其中各种导致下载速度上不去的坑。 原理:下载的时候多个线程并发可以占用服务器端更多资源,从而加快下载速度。 1.   请求下载链接地址,获取getContentLength,也就是文件总大小。 public boolean initDownLoadFileSize() { try { H...

2016-05-27 18:27:28 364

转载 磁盘缓存 DiskLruCache

JakeWharton在github上的DiskLruCache竟然没有demo,也没有详细说明,用法。很尴尬,找到了郭霖同学的一篇文章,特此转载记录。原文地址:http://blog.csdn.net/guolin_blog/article/details/28863651概述记得在很早之前,我有写过一篇文章Android高效加载大图、多图解决方案,有效避免程序O

2016-03-29 10:42:24 336

转载 Broadcast广播内部机制

原文地址 http://my.oschina.net/youranhongcha/blog/226274?fromerr=kZfhK8dQ广播机制异常复杂,跟裹脚布一样,下面这篇文章较为详细,特此转载记录1 概述        我们在编写Android程序时,常常会用到广播(Broadcast)机制。从易用性的角度来说,使用广播是非常简单的。不过,这个不是本文关心的重点

2016-03-18 11:47:48 1622

原创 匿名内部类 类名规则 定位$1

今天发现友盟错误反馈一条信息如下:从信息中可以确定是TencentUtil类中某个匿名内部类出了问题,但是因为此类中匿名内部类过多,具体定位是哪一个倒是有点不确定了,所以抽时间研究了下匿名内部类相关知识。匿名内部类属于内部类的其中一种,从内部类讲起,内部类类型共有如下:1.成员内部类public class A { String s; class B{ }

2016-02-15 18:23:43 13570 4

原创 bitmap compress 图片压缩 图片文件大小处理

android中图片加载到内存中所占空间大小计算:分辨率 height*width*一个像素所占空间大小 解析:decode时指定解码方式为ARGB_8888 代表用8位表示透明度(A),8位表示红色(R),8位表示绿色(G),8位表示蓝色(B),也就是说每个像素占用4*8=32位空间(等于4byte),相对应 RGB_565,一共用16位(2byte)表示一个像素举个例子,上述属性图

2016-01-27 17:15:33 11397 1

原创 android LruCache 原理 以及 源代码解析

使用LRU(Least recently used,最近最少使用)算法缓存技术能大大提升程序性能。原理:1. 新数据插入到链表头部;2. 每当缓存命中(即缓存数据被访问),则将数据移到链表头部;3. 当缓存内容超过指定大小的时候,将链表尾部的数据丢弃。了解原理后,我们看下android中LruCache 的源代码实现。public LruCa

2015-12-08 16:47:08 456

原创 自定义Android progress bars

首先 各版本默认的进度条样式 现在我们开始自定义样式ProgressBar    android:id="@+id/progressBar2"    style="?android:attr/progressBarStyleHorizontal"    android:layout_width="fill_parent"    android:l

2015-12-07 15:38:04 402

android bsdiff 增量升级更新 热补丁 hotpatch

android bsdiff 增量升级更新 热补丁 hotpatch http://blog.csdn.net/lazyer_dog/article/details/47173013

2015-08-03

AIDLdemo_eclipse&android studio

aidl demo代码 分eclipse与as版本,客户端服务端都能直接跑

2015-05-21

空空如也

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

TA关注的人

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