- 博客(34)
- 收藏
- 关注
原创 Android中JNI使用方法
JNI,即Java Native Interface参考JNI规范Android Studio集成了NDK开发工具用于JNI开发,环境配置参考NDK配置及基本语法Java类中定义本地方法public native String stringFromJNI();生成.h头文件进入java源码根目录,如MyNative\app\src\main\java对.java文件使用jav...
2018-09-25 15:17:04
448
原创 NDK配置及基本语法
NDK是Google为Android实现JNI调用而提供的工具原生库的构建方法包括旧版的ndk-build,及新版的CMake参考Google文档NDK guidesndk-build构建方法构建脚本:Android.mk语法与AOSP的Android.mk文件类似,其内定义若干个模块LOCAL_PATH := $(call my-dir) #文件所在目录include ...
2018-09-25 14:14:30
1761
原创 基于LNMP搭建Wordpress
ubuntu-16.04.3-server-amd64LNMP环境搭建基于Ubuntu搭建LNMP环境下载并解压Wordpress至网站目录wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gztar zxvf wordpress-4.9.4-zh_CN.tar.gzmv wordpress /var/www/w...
2018-07-29 14:15:58
682
原创 基于Ubuntu搭建LNMP环境
ubuntu-16.04.3-server-amd64LNMP,即Linux, Nginx, Mysql, PHP安装Nginxsudo apt install nginx安装完后检查配置文件sudo nginx -t可见配置文件路径/etc/nginx/nginx.conf,此配置文件中包含具体站点配置所在:include /etc/nginx/sites-e...
2018-07-28 22:00:19
311
原创 VMware中Ubuntu桥接模式静态IP设置
ubuntu-16.04.3-server-amd64VMware虚拟机Ubuntu桥接联网方式,遇到无法获取ip地址的现象。故采用静态IP方式。打开网络设置文件sudo vim /etc/network/interfaces将dhcp动态分配IP方式修改为静态IP:#auto ens33#iface ens33 inet dhcpauto ens3...
2018-07-28 14:14:36
2073
1
原创 Frida对Android app的JS脚本注入方法
Frida可以将JS脚本注入Android app进程,从而实现动态更改app行为。PC端环境配置Python + JavaScript 安装frida(Python bindings)和frida-tools(命令行工具)pip install fridapip install frida-tools手机端环境配置下载对应版本的frida-serv...
2018-07-25 15:07:16
11479
原创 Xposed框架使用及插件开发
Xposed是一个针对Android Framework的hook框架, 通过/system/bin/app_process修改Zygote的行为, 从而实现hook应用。Xposed框架安装完整的Xposed框架包含三个部分 详见Xposed InstallerXposed FrameworkXposed Module插件开发通过自定义插件hook目标应...
2018-07-18 15:31:53
2101
原创 RxJava2常用操作符及相关类
基于RxJava 2.1.12,记录RxJava的常用操作符及相关类。ObservableEmitter目的 ObservableEmitter是对Observer的抽象,用于关联Observable resource。public interface ObservableEmitter<T> extends Emitter<T>用法...
2018-06-04 16:58:46
728
原创 Android测试框架概述
按测试规模从小到大,测试可以分为三个层级:Unit Tests, Integration Tests, UI Tests 按测试运行环境不同,测试可分为两个环境:Local unit tests, Instrumented unit tests测试规模分类Unit TestsRobolectricMockitoInstrumented unit tests...
2018-05-29 16:04:20
272
原创 Android从ActionBar到Toolbar的兼容性事项
从ActionBar到ToolbarAndroid 3.0引入ActionBar (appcompat-v7提供向后兼容) 固定在界面顶部Android 5.0引入Toolbar (appcompat-v7提供向后兼容) 可自由调整位置若采用兼容包的ActionBar/Toolbar向后兼容,应注意使用AppCompatActivity和对应的属性命名空间命名空间区分a...
2018-04-28 17:21:00
293
原创 设计模式汇总
创建型模式:单例模式,原型模式,工厂模式,建造者模式结构型模式:适配器模式,桥接模式,组合模式,装饰模式,外观模式,享元模式,代理模式行为型模式:职责链模式,命令模式,解释器模式,迭代器模式,中介者模式,备忘录模式,观察者模式,状态模式,策略模式,模板方法模式,访问者模式...
2018-04-03 17:30:37
151
原创 行为模式之访问者模式
访问者(Visitor)模式将某对象结构中各元素的操作从对象结构中分离出来。从而可以通过改变访问者,而实现作用于该对象结构的新操作。访问者模式包含四部分:VisitorConcreteVisitorElementConcreteElementVisitorpublic interface Visitor { void visitElementA...
2018-04-03 17:15:49
131
原创 行为模式之模板方法模式
模板方法(Template Method)普遍存在于抽象类中,它用一些抽象的方法定义一个算法,而将这些抽象方法的具体实现放到子类中。模板方法包含两部分:AbstractClass 实现一个模板方法,从而定义一个算法的骨架ConcreteClass 实现模板方法中抽象的原语操作AbstractClassabstract class AbstractClass...
2018-03-22 17:11:34
174
原创 行为模式之策略模式
策略(Strategy)模式将不同的算法策略封装为不同对象,从客户端程序中分离出来而独立变化。策略模式包含三部分:Strategy 定义所有算法的公共接口ConcreteStrategy 某种具体算法的实现Context 客户端程序,持有一个ConcreteStrategy实例Strategyinterface Strategy { void o...
2018-03-22 16:29:24
211
原创 行为模式之状态模式
状态(State)模式根据对象所处状态的不同而改变对象的行为。状态模式包含三部分:Context 提供客户需求的接口,持有ConcreteState对象以定义当前状态State 为不同状态的子类声明公共接口ConcreteState 每个子类实现一个与Context状态相对应的行为Stateabstract class State { abs...
2018-03-22 15:58:23
175
原创 行为模式之观察者模式
观察者(Observer)用于对象间一对多的状态依赖型交互,也称为发布-订阅(publish-subscribe)模式。观察者模式包含四部分:Subject 被观察的目标,提供注册和删除观察者的接口Observer 观察者,定义目标改变时所需响应的更新接口ConcreteSubject 具体目标ConcreteObserver 具体观察者Subject...
2018-03-16 16:46:06
220
原创 行为模式之备忘录模式
备忘录(Memento)获取并保存一个对象(原发器)的内部状态,并在需要的时候将该对象恢复到之前保存的状态。备忘录模式包含三部分:Memento 备忘录,存储Originator的内部状态Originator 原发器,创建备忘录以记录当前状态,及使用备忘录恢复状态Caretaker 负责人,负责保存备忘录Mementoclass Memento { ...
2018-03-16 14:16:18
182
原创 行为模式之中介者模式
中介者模式(Mediator)使各同事类通过中介者进行交互,而不需要各同事类显式地互相引用。中介者包含三部分:Mediator 中介者,定义与各同事通信的接口ConcreteMediator 协调并维护各同事类Colleague 同事类,与中介者对象通信Mediatorabstract class Mediator { protected Col...
2018-03-16 11:51:32
195
原创 行为模式之迭代器模式
迭代器模式(Iterator)提供了顺序访问一个聚合对象中各个元素的方法。 当遍历算法由聚合本身定义,而迭代器仅用于存储当且位置时,这种迭代器可称之为游标(Cursor)。迭代器模式包含四部分:Iterator 定义遍历元素的接口ConcreteIterator 迭代器的具体实现,跟踪当前位置Aggregate 聚合,定义迭代器的创建接口ConcreteAggre...
2018-03-15 11:02:10
179
原创 行为模式之解释器模式
解释器模式(Interpreter)为某一特定语言定义文法,并为该语言的特定上下文提供解释。解释器模式包含五部分:AbstractExpression 声明一个抽象的解释操作TerminalExpression 终结符表达式,实现终结符的解释操作NonterminalExpression 非终结符表达式,实现非终结符的解释操作Context 解释器之外的全局信息Cli...
2018-03-14 16:11:26
179
原创 行为模式之命令模式
命令模式(Command)将请求封装成一个对象。 命令模式又可称为动作(Action),事务(Transaction)。命令模式包含五部分:Comand 执行操作的接口,如Execute()ConcreteComnand 命令的具体实现,绑定接收者,并调用接收者相应操作,以实现ExecuteClient 命令的装配者,创建一个ConcreteComnand对象,并指...
2018-03-14 13:45:48
204
原创 行为模式之职责链
职责链将候选对象连成一条链,在该链上传递请求,直到链上某一对象处理请求。 该请求的接受者为隐式接收者。为了在链上转发该请求,链上对象须有一致的处理请求及访问后继对象的接口。职责链分为三部分:Handle 处理请求的接口ConcreteHandle 处理辖内请求或访问后继对象Client 提交请求的客户Handleabstract class H...
2018-03-13 16:40:02
154
原创 结构型模式之代理模式
代理模式(Proxy,又称Surrogate)为其它对象提供代理,以接管客户对实际对象的访问。代理模式包含三个部分:Subject 实际对象和代理的公共接口RealSubject 实际对象Proxy 代理,持有RealSubject的引用,并接管对RealSubject的访问
2017-12-29 17:11:51
162
原创 结构型模式之享元模式
享元模式(Flyweight)将对象的状态分为内部状态(存储于对象内部)和外部状态(取决于对象所在场景),对具有相同内部状态的对象进行共享,从而节约内存。 享元模式的实际应用包括Java String类,数据库连接池,线程池等。享元模式包含以下四部分:Flyweight 享元接口ConcreteFlyweight 实现Flyweight的具体子类,存储内部状态并独立于外部状态Unsha
2017-12-26 15:59:50
198
原创 结构型模式之外观模式
外观模式(Facade)提供了一个高层的简易接口,统筹复杂系统底层各个具体子系统的功能。 从而客户可以通过Facade接口使用复杂系统,降低客户和子系统的耦合。外观模式包含以下两部分:Facade 统筹各个子系统的功能,将客户请求分派给各个子系统Subsystem classes 各个子系统,处理Facade发送的请求
2017-12-21 16:10:04
160
原创 结构型模式之装饰模式
装饰模式Decorator,也可称为包装器Wrapper。 (Adapter和Decorator均可称为包装器Wrapper,但Adapter是包装接口,Decorator是包装具体对象)装饰模式包含以下四部分:Component 对象接口ConcreteComponent 具体对象,即被装饰者Decorator 装饰者接口,与Component接口一致,持有Compon
2017-12-21 14:53:55
202
原创 vim安装和配置
环境:ubuntu-16.04.3-server-amd64安装系统默认搭载vim-tiny,vim轻量化的版本。 为了使用完整的vim功能,需自己安装vim。sudo apt install vimvim教程vim自带基本在使用教程vimtutorvim帮助文档vim:help设置创建个人配置文件vim从~/.vimrc读取个人配置文件。 默认情况下并未存在此配置文件,可复制样板来创建。v
2017-10-29 09:55:25
362
原创 创建型模式之建造者模式(生成器模式)
建造者模式,或称之为生成器模式,是将对象的构造过程从对象的各种表示中分离出来。 从而通过建造者组合不同的对象细节,实例化出对象的不同表示。建造者模式和工厂模式的差异:工厂模式:将不同产品类的实例化过程整合成不同的工厂,并不关注某一工厂内的具体构造过程。 建造者模式:整合同一个产品类不同的实例化过程(多个构造参数组合成不同的对象表示),构造不同的对象表示。
2017-09-14 19:25:28
371
1
原创 创建型模式之工厂模式
当创建一个对象需要依赖多个其它对象或条件,不能简单一句new完成时,可通过工厂模式封装繁杂的实例创建过程。 通常认为工厂模式包含简单工厂模式(静态工厂模式),工厂方法模式,抽象工厂模式。简单工厂模式(静态工厂模式)产品接口及实现类:interface Product { public String getProductName();}class Product1 implement
2017-09-13 17:25:22
185
原创 创建型模式之原型模式
原型模式是创建型模式的一种,通过克隆原型实例以创建新的对象。 原型模式不需调用构造方法创建对象,与单例模式冲突。使用原型模式需明晰以下三点: 1. clone()是Object类的一个protected方法。 2. 若一个类实现了Cloneable接口,则支持在原有实例的基础上clone新的实例。 3. Object的clone操作只克隆基本数据类型(浅拷贝),其它容器类数据按需求自行
2017-09-05 10:51:36
194
原创 创建型模式之单例模式
单例模式是创建型模式的一种,实现单例的类将构造方法私有化,对外提供唯一的实例。饿汉模式顾名思义,饿汉模式在类加载的时候,即迫不及待地创建实例懒汉模式懒汉,在需要的时候才会创建实例private xxx静态内部类枚举模式
2017-09-01 17:14:14
218
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人