自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Superior's Blog

There is no royal road to learning.

  • 博客(42)
  • 资源 (15)
  • 收藏
  • 关注

转载 file:// scheme is now not allowed to be attached with Intent on targetSdkVersion 24 (Android Nougat)

Android Nougat is almost be publicly released. And as an Android developer, we need to prepare ourself to adjust targetSdkVersion to the latest one, 24, to let everything works perfectly on the newest...

2019-06-10 21:33:22 235

原创 C语言解析域名

C语言解析域名#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <netdb.h>#include <sys/types.h>#include <netinet/in.h>#include <arpa/inet.h>

2019-01-16 14:05:53 1186

原创 minicap二次开发之minicap over WebSockets

minicap二次开发之TCP直连模式(不需adb forward)修改 minicap源码,实现局域网内与设备直连,获取设备实时屏幕数据GitHub地址: https://github.com/guowee/minicap-AF_INETExample: minicap over WebSocketsA quick and dirty example to show how mini...

2018-11-27 09:42:27 2233 1

转载 ContentProvider插件化

ContentProvider插件化目前为止我们已经完成了Android四大组件中Activity,Service以及BroadcastReceiver的插件化,这几个组件各不相同,我们根据它们的特点定制了不同的插件化方案;那么对于ContentProvider,它又有什么特点?应该如何实现它的插件化?与Activity,BroadcastReceiver等频繁被使用的组件不同,我们接触和使用...

2018-11-26 20:29:53 185

转载 Service插件化

Service插件化在 Activity生命周期管理 以及 广播的管理 中我们详细探讨了Android系统中的Activity、BroadcastReceiver组件的工作原理以及它们的插件化方案,相信读者已经对Android Framework和插件化技术有了一定的了解;本文将探讨Android四大组件之一——Service组件的插件化方式。与Activity, BroadcastRecei...

2018-11-26 20:28:31 158

转载 BroadcastReceiver插件化

BroadcastReceiver插件化在Activity生命周期管理 以及 插件加载机制 中我们详细讲述了插件化过程中对于Activity组件的处理方式,为了实现Activity的插件化我们付出了相当多的努力;那么Android系统的其他组件,比如BroadcastReceiver,Service还有ContentProvider,它们又该如何处理呢?相比Activity,Broadcast...

2018-11-26 20:27:35 157

转载 Activity生命周期管理

Activity生命周期管理之前的 Android插件化原理解析 系列文章揭开了Hook机制的神秘面纱,现在我们手握倚天屠龙,那么如何通过这种技术完成插件化方案呢?具体来说,插件中的Activity,Service等组件如何在Android系统上运行起来?在Java平台要做到动态运行模块、热插拔可以使用ClassLoader技术进行动态类加载,比如广泛使用的OSGi技术。在Android上当然...

2018-11-26 20:26:18 191

转载 插件加载机制

插件加载机制上文 Activity生命周期管理 中我们地完成了『启动没有在AndroidManifest.xml中显式声明的Activity』的任务;通过Hook AMS和拦截ActivityThread中H类对于组件调度我们成功地绕过了AndroidMAnifest.xml的限制。但是我们启动的『没有在AndroidManifet.xml中显式声明』的Activity和宿主程序存在于同一个A...

2018-11-26 20:25:11 189

转载 Hook机制之AMS&PMS

Hook机制之AMS&PMS在前面的文章中我们介绍了DroidPlugin的Hook机制,也就是代理方式和Binder Hook;插件框架通过AOP实现了插件使用和开发的透明性。在讲述DroidPlugin如何实现四大组件的插件化之前,有必要说明一下它对ActivityManagerServiche以及PackageManagerService的Hook方式(以下简称AMS,PMS)。...

2018-11-26 20:24:00 171

转载 Hook机制之Binder-Hook

Hook机制之Binder-HookAndroid系统通过Binder机制给应用程序提供了一系列的系统服务,诸如ActivityManagerService,ClipboardManager, AudioManager等;这些广泛存在系统服务给应用程序提供了诸如任务管理,音频,视频等异常强大的功能。插件框架作为各个插件的管理者,为了使得插件能够无缝地使用这些系统服务,自然会对这些系统服务做出一...

2018-11-26 20:22:06 437

转载 Hook机制之动态代理

Hook机制之动态代理使用代理机制进行API Hook进而达到方法增强是框架的常用手段,比如J2EE框架Spring通过动态代理优雅地实现了AOP编程,极大地提升了Web开发效率;同样,插件框架也广泛使用了代理机制来增强系统API从而达到插件化的目的。本文将带你了解基于动态代理的Hook机制。阅读本文之前,可以先clone一份 understand-plugin-framework,参考此项目...

2018-11-26 20:20:42 198

转载 Android插件化概述

概要2015年是Android插件化技术突飞猛进的一年,随着业务的发展各大厂商都碰到了Android Native平台的瓶颈:从技术上讲,业务逻辑的复杂导致代码量急剧膨胀,各大厂商陆续出到65535方法数的天花板;同时,运营为王的时代对于模块热更新提出了更高的要求。在业务层面上,功能模块的解耦以及维护团队的分离也是大势所趋;各个团队维护着同一个App的不同模块,如果每个模块升级新功能都需要...

2018-11-26 20:19:00 137

原创 STF框架之Minicap工具的使用

Minicap介绍minicap工具分为两部分,一部分是动态链接库.so文件,另一部分是minicap可执行文件。但是不通用,根据CPU架构的不同分为不同的版本文件。minicap可执行文件分为4种,分别针对arm64-v8a,armeabi-v7a, x86,x86_64 架构。而minicap.so文件在这个基础上还要分为不同的sdk版本。Minicap使用获取设备的CPU版本和系统版本在使用...

2018-05-04 11:00:13 4205 3

原创 Android 中常见的内存泄漏

Eight Ways Your Android App Can Leak Memory

2018-04-16 20:52:43 148

原创 Android View 的滑动冲突

滑动冲突是如何产生的呢? 其实在界面中只要内外层同时可以滑动,这个时候就产生滑动冲突。一、滑动冲突常见场景常见的滑动冲突场景可以简单分为以下三种。场景1:外部滑动方向和内部滑动方向不一致; 外层的ViewGroup可以横向滑动,内层的View可以竖向滑动,如ViewPager内每个页面是ListView (ViewPager 已经处理了滑动冲突,所以在使用中并没有出现滑动冲突)场景2:外部滑动方向...

2018-04-16 20:05:05 183

原创 Android View的工作原理

一、ViewRoot 和 DecorViewViewRoot 1.ViewRoot的实现类: ViewRootImpl 类2.作用:连接WindowManager 和 DecorView 的纽带,View 三大流程均是通过ViewRoot来完成的。当Activity对象被创建完毕后,会将DecorView 添加到Window中,同时会创建ViewRootImpl 对象,并将ViewRootImpl...

2018-03-29 21:38:26 92

原创 Android View的事件分发机制

一、点击事件的传递规则所谓点击事件的事件分发,其实就是对MotionEvent事件的分发过程,即当一个MotionEvent产生以后,系统需要把这个时间传递给一个具体的View,而这个传递过程就是分发过程。点击事件的分发过程由三个方法共同完成:dispatchTouchEvent, onInterceptTouchEvent 和 onTouchEvent.dispatchTouchEvent用来进...

2018-03-29 21:37:17 173

原创 ThreadLocal基本原理及应用

一、ThreadLocal是什么?关于ThreadLocal是什么,先来看看官方对它的解释.ThreadLocal并不是一个Thread,而是Thread的局部变量。当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每个线程都可以独立地改变自己的副本,而不影响其他线程所对应的副本。ThreadLocal并不是用来并发控制访问一个共同对象,而...

2018-03-28 21:54:11 1006

转载 详解UML类图

本文转自:深入浅出UML类图在UML 2.0的13种图形中,类图是使用频率最高的UML图之一。Martin Fowler在其著作《UML Distilled: A Brief Guide to the Standard Object Modeling Language, Third Edition》(《UML精粹:标准对象建模语言简明指南(第3版)》)中有这么一段:“If someone were...

2018-03-26 16:18:29 734

原创 淘宝vlayout框架的使用及源码分析(二)

上一篇文章主要讲解了vlayout在应用中该如何使用,接下里就从源码的分析一下vlayout到底是怎么实现的吧。vlayout的源码分析在前面说过,使用RecyclerView时,需要绑定一个Adapter和LayoutManager. vlayout并没有改变RecyclerView,而是增加了一些辅助。 它自定义了一个VirtualLayoutAdapter 和 一个VirtualLayout...

2018-03-25 14:32:25 457

原创 ButterKnife的使用介绍及原理探究(六)

前面分析了ButterKnife的源码,了解其实现原理,那么就将原理运用于实践吧。github地址:       点击打开链接一、自定义注解这里为了便于理解,只提供BindView注解。@Target(ElementType.FIELD)@Retention(RetentionPolicy.CLASS)public @interface BindView { int value();...

2018-03-23 20:16:39 122

原创 ButterKnife的使用介绍及原理探究(五)

本篇文章我们来看看ButterKnife对外提供的API。经过前面的分析,我们已经生成了java代码,那么这些方法怎样调用呢?实际上就是通过ButterKnife.bind()调用;那就来看看这个方法。bind() /** * BindView annotated fields and methods in the specified {@link Activity}. The curren...

2018-03-23 20:01:31 207

原创 淘宝vlayout框架的使用及源码分析(一)

VLayout是阿里开源的一个用于辅助RecyclerView的LayoutManager扩展库,通过使用LayoutHelper,可以实现一些负责的页面布局,这在阿里系的一些应用中都有体现。由于之前就针对VLayout做过研究,今天就写一篇文章做个总结吧。一、vlayout如何使用?(一)、 导入依赖库compile ('com.alibaba.android:vlayout:1.2.8@aar...

2018-03-23 15:49:48 938

原创 Android Handler机制浅析

本文是在读《Android开发艺术探索》这本书中关于“Android的消息机制”时所作记录,以便加深对Android的消息机制的理解。一、概述Android的消息机制主要是指Handler的运行机制,Handler的运行需要底层的MessageQueue 和 Looper的支撑。MessageQueue以队列的形式对外提供插入和删除的工作,虽然叫Queue,但实际上它是采用单链表的数据结构来存储消...

2018-03-22 21:49:41 165

转载 Android系统 Binder机制浅析(一)

Binder是Android系统中最重要的特征之一,它是系统间各个组件的桥梁,Android系统的开放式设计也很大程度上得益于这种极其方便的跨进程通信机制。理解Binder对于理解整个Android系统有着非常重要的作用,Android系统的四大组件,AMS,PMS等系统服务无一不与Binder 挂钩;要深入Android,Binder是必须迈出的一步。问题: 为什么需要跨进程通信(IPC)?怎么...

2018-03-22 21:41:06 258

原创 Android 6.0版本以上运行时权限解析(二)

上一篇文章我们主要介绍了在Android 6.0版本以上运行时权限的相关知识,并将使用方式进行了封装。但目前使用了Java注解+反射的方式实现,考虑到反射会影响到性能,下面将使用Java Annotation Processor处理(在此假设已经对Annotation Processor有了一些了解并会使用)。对外暴露的接口还是和原来一样, 先上一段源码吧。@AutoService(Process...

2018-03-22 21:34:44 173

原创 ButterKnife的使用介绍及原理探究(四)

上几篇文章主要分析了process方法收集信息的功能,接下来看生成代码,先看源码。@Override public boolean process(Set<? extends TypeElement> elements, RoundEnvironment env) { Map<TypeElement, BindingSet> bindingMap = findAnd...

2018-03-22 21:25:37 174

原创 ButterKnife的使用介绍及原理探究(三)

一、 检查合法性接着上一篇文章,继续对process()方法进行分析。在parseBindView方法中,先做了一次检查,如下: // Start by verifying common generated code restrictions. boolean hasError = isInaccessibleViaGeneratedCode(BindView.class, "fields", ...

2018-03-21 21:29:12 322

原创 Android Studio 3.0 导入项目报Error:Unable to resolve dependency for ':@debug/compileClasspath'错误的解决方案

之前使用Cordova CLI 生成的android 项目模板,在升级Android Studio 至3.0版本后,导入项目报如下错误:Android Studio 升级到3.0版本,gradle 会升级到4.1版本,导致了以上问题。在com.android.tools.build:gradle 3.x 以下版本依赖在gradle 中的声明写法compile fileTree(dir: 'libs...

2018-03-21 14:30:03 4417

转载 android-apt 切换到 annotationProcessor

为了使用 annotationProcessor 功能代替 android-apt,首先需要把你的 Android 工程所用的 Gradle 插件版本升级到 2.2 及以上,也就是修改工程根目录的 build.gradle 中的插件版本,修改如下:buildscript { repositories { jcenter() } dependencies {...

2018-03-21 13:35:50 170

原创 Android Studio 关于jar包、so库的问题

添加时so库的路径要设置正确,Android Studio 默认的so文件路径是app/src/main/jniLibs/armeabi,和eclipse是不一样的,这个一定要注意!使用Android Studio 添加jar包,和使用eclipse 添加jar包的方式相同;添加so库,如果没有jniLibs这个文件夹,创建一个,然后把so库放入文件夹中。当然,这个so文件的目录是可以指定的,比如...

2018-03-21 13:32:37 240

原创 Git SSH Key 生成步骤

Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置。github的SSH配置如下:一 、设置Git的user name和email:$ git config --global user.name "your name"$ git config --global user.email "[email protected]"二、生成SSH密钥过程:1...

2018-03-21 13:29:37 107

原创 Android 中的Service解析

在Android系统中,到处可见service服务,service作为一个后台进程,执行一些特定的任务。在Android 应用开发过程中,不免也需要开发一些service来完成一些功能,而这种应用层的service只是整个Android Service这一概念的一部分而已,接下来将从Android系统平台的角度,详细剖析Android中的Service.下面,举几个例子来看一下Android平台中...

2018-03-21 13:22:23 165

原创 ButterKnife的使用介绍及原理探究(二)

一、预备知识通过上篇文章的介绍,相信已经对ButterKnife的使用熟悉了,网上也有很多讲解其使用的文章。 本篇主要探究一下ButterKnife的实现原理。但是在开始分析之前,可能还需要了解一下Java注解器Annotation Processor.推荐一篇文章: Java注解处理器读完这篇文章,相信你肯定会对Java注解处理器有了比较深的了解。二、原理       如果让我们实现一些注解的框...

2018-03-21 13:08:47 299

原创 ButterKnife的使用介绍及原理探究(一)

一、ButterKnife 是什么?Field and method binding for Android views which uses annotation processing to generate boilerplate code for you.Eliminate findViewById calls by using @BindView on fields.Group multi...

2018-03-21 13:02:50 852

原创 Android 6.0版本以上运行时权限解析(一)

一、概述随着Android 6.0发布以及普及,作为开发者所要应对的主要是新版本SDK带来的一些变化;首先关注的就是权限机制的变化,Android 6.0以后增加了运行时权限(Runtime Permissions)。本篇文章的目的就是对运行时权限处理做一个简单的介绍,并实现在应用开发过程中对权限管理的封装。GitHub地址: 点击打开链接 二、运行时权限在Android 6.0以前,在安装应用的...

2018-03-13 21:38:35 287

原创 Java中的static静态代码块的使用

静态方法注意事项    使用类的静态方法时,注意:    a.在静态方法里只能直接调用同类中其他的静态成员(包括变量和方法),而不能直接访问类中的非静态成员。这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象。    b.静态方法不能以任何方式引用this和super关键字,因为静态方法在使用前不用创建任何实例对象,当静态方法调用时,this所引...

2014-06-25 19:52:12 780

转载 二叉树的递归,层次,以及非递归遍历

/***************************************************************二叉树的遍历操作:对于先序、中序、后序的非递归遍历来说,是借助于栈来存储,而对于层次遍历来说是借助于队列来存储具有代表性的实例:在控制台上输入:ABD00E00C00   A      / \  B   C  / \   D    E

2012-03-29 12:08:41 569

原创 二叉树的递归遍历以及层次遍历

#include #include #define ERROR 0#define OK 1typedef char TElemType;typedef int Status;//二叉树的二叉链表存储表示typedef struct BiTNode {  TElemType data;  struct BiTNode *lchild, *rchild;

2012-03-29 12:06:32 526

原创 用链式结构实现单链队列的入队与出对

#includeusing namespace std;#include#define MAXSIZE 100#define OK  1#define ERROR 0typedef int QElemType ;typedef struct QNode{QElemType  data;struct QNode *next;}QNode,*QueuePtr;

2012-03-21 20:34:45 567

基于MQTT的实时消息推送系统

使用Apollo搭建的服务端,后台采用java编写,使用Spring MVC 框架搭建的后台; 客户端使用Android,验证并接收后台传递的消息

2018-08-29

RabbitMQ for Android

This is a demo application which shows how RabbitMQ can be used for a group chat/messaging app. This uses RabbitMQ java bindings. A connection is set up and the queue is bound to group ids. MainActivity starts a service in background which handles the connection with the server. I'm using `EventBus`

2018-08-08

Linear Algebra and Its Applications

线性代数是数学的一个分支,它的研究对象是向量,向量空间(或称线性空间),线性变换和有限维的线性方程组。向量空间是现代数学的一个重要课题;因而,线性代数被广泛地应用于抽象代数和泛函分析中;通过解析几何,线性代数得以被具体表示。线性代数的理论已被泛化为算子理论。由于科学研究中的非线性模型通常可以被近似为线性模型,使得线性代数被广泛地应用于自然科学和社会科学中。

2018-08-03

android studio fataar-plugin

The fat-aar plugin that can be used under android plugin 3.0.1 and gradle wrapper 4.4. If you need to remove some files while packing, please add 'excludeFiles '. fatLibraryExt { enable true excludeFiles { libs { fileNames('gson.jar') } jni { fileNames('test/test.so') } } }

2018-08-03

Mastering Machine Learning with scikit-learn

In this book, we will examine several machine learning models and learning algorithms. We will discuss tasks that machine learning is commonly applied to, and learn to measure the performance of machine learning systems. We will work with a popular library for the Python programming language called scikit-learn, which has assembled excellent implementations of many machine learning models and algorithms under a simple yet versatile API.

2018-08-03

Andorid 自定义安全键盘

Android 自定义安全键盘

2016-09-23

中国金融集成电路(IC)规范pboc3.0

PBOC2.0规范2010年版包括13个部分,第1部分和第2部分定义的电子钱包/电子存折应用是在PBOC1.0规范基础上经过修订完善而成,与第9部分电子钱包扩展应用一起构成了电子钱包/电子存折应用规范;第3部分是主要依据ISO/IEC 7816标准,并参考了ISO 3166、ISO 639、ISO 9362、ISO 13616、ISO 7811、ISO/IEC 10373和ISO/IEC 8859等国际标准制定而成的接触式接口,可与电子钱包/电子存折或借记/贷记应用相结合,形成具有接触式接口的电子钱包/电子存折或借记/贷记应用产品;第4部分至第7部分构成了借记/贷记应用,该部分主要参照了EMV标准,并参考了ISO/IEC 7816、ISO 3166、ISO/IEC 639、ISO 4217、ISO 9564、ISO 8583、ISO 13491、ISO 8731、ISO 8732、ISO/IEC 9796、ISO/IEC 9797、ISO/IEC 10116和ISO/IEC 8859等国际标准制定而成;第8部分是NEQ采标ISO14443标准制定而成的非接触式接口规范,该部分定义了与应用无关的非接触式接口,可与电子钱包/电子存折或借记/贷记应用相结合,形成具有非接触式接口的电子钱包/电子存折或借记/贷记应用产品;第10部分是参照《EMV通用个人化规范》制定而成,定义了借记/贷记应用个人化的过程以及数据格式和分组,规范了个人化过程;第11部分是在第8部分基础上制定,详细规定了非接触式设备和非接触式卡片之间无线通讯协议的有关要求;第12部分与第8部分及第11部分一起构成非接触式应用,该部分主要定义了基于非接触式接口的金融支付应用;第13部分与第4部分至第7部分一起构成基于借记/贷记的小额支付应用,主要定义了与小额支付有关的内容,即小额支付的技术实现与所支持的交易类型等。

2016-07-22

C语言函数库

C语言函数库,方便查询一些函数,便于使用。

2015-11-12

通过jni调用C实现高斯模糊效果

通过使用JNI 调用C语言函数库实现高斯模糊,提高了实现的效率

2015-11-12

机顶盒应用

机顶盒应用的一个小例子,希望对有需要的同仁有所帮助。

2015-11-12

android 5.0新特性的使用

该资源主要是使用了一些Android 5.0提供的新特性,采用Android Studio 进行编译。希望能对于对Android 感兴趣的同仁有帮助.

2015-11-12

Rtsp 源代码

rtsp简介(ZT) Real Time Streaming Protocol或者RTSP(实时流媒体协议),是由Real network 和 Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议。RTSP提供一 种可扩展的框架,使能够提供能控制的,按需传输实时数据,比如音频和视频文件

2015-10-29

Android 4.4 SDK 帮助文档

Android SDK 帮助文档,不过是英文版的

2015-10-29

图的遍历和最小生成树求解

采取随机生成顶点数和边数构造无向图,并对图进行深度优先搜索和广度优先搜索,并采用PRIM算法和狄杰斯特拉算法求图的最小生成树。

2012-09-24

赫夫曼树的建立及编码

基于数据结构中的赫夫曼树的建立以及用赫夫曼树编码

2012-05-13

空空如也

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

TA关注的人

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