首先介绍AspectJx使用 https://github.com/HujiangTechnology/gradle_plugin_android_aspectjx 在根项目的build.gradle文件中添加上依赖 dependencies { classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.4' } 在app项目的build.gradle里应用插件 apply plugin: 'android-aspect…
一.技术原理 Method-Swizzling 黑魔法 方法交换(不懂的可以查) 二.页面统计 某盟页面统计SDK需要开发者在APP基类里实现ViewDidAppear和viewDidDisappear方法,或者在某个特定的类实现以上俩方法,优点是具体情况具体埋点.下面采用无侵入式埋点实现页面统计,无需APP开发者实现以上俩方法,适用于开发开发SDK的公司,无感知采集APP信息. 三.代码实现 #import <UIKit/UIKit.h> @interface UIViewControlle…
MVC的验证(模型注解和非侵入式脚本的结合使用)   @HtmlHrlper方式创建的标签,会自动生成一些属性,其中一些属性就是关于验证 如图示例: 模型注解 通过模型注解后,MVC的验证,包括前台客户端,后台服务器的验证,MVC统统都做了包含,即使用户在客户端禁用Javascript,服务器也会将非法操作进行验证,当前前提是针对Model实体标识了注解的情况. 要能够正常进行非空等合法性验证必须做如下步骤(前提条件): 1.必须在实体的每个类型上加上Required特性,但是数字型的属性默认已…
开发者博客: BlockCanary — 轻松找出Android App界面卡顿元凶 开源代码:moduth/blockcanary BlockCanary对主线程操作进行了完全透明的监控,并能输出有效的信息,帮助开发分析.定位到问题所在,迅速优化应用.其特点有: 非侵入式,简单的两行就打开监控,不需要到处打点,破坏代码优雅性. 精准,输出的信息可以帮助定位到问题所在(精确到行),不需要像Logcat一样,慢慢去找. 目前包括了核心监控输出文件,以及UI显示卡顿信息功能.仅支持Android端.…
<?php namespace App\Services; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Redis; class CacheDecorator { // 公司组织列表缓存key const COMPANY_ORGANIZE_KEY = 'company_organize_%s'; private static function setStringCacheStorage($key, $exp…
前言 现在我们做项目基本上中大型项目都是选择前后端分离,前后端分离已经成了一个趋势了,所以总这样·我们就要和前端约定统一的api 接口返回json 格式, 这样我们需要封装一个统一通用全局 模版api返回格式,下次再写项目时候直接拿来用就可以了 约定JSON格式 一般我们和前端约定json格式是这样的 { "code": 200, "message": "成功", "data": { } } code: 返回状态码 messa…
阿里巴巴无线事业部近期开源的Android平台下的无侵入运行期AOP框架Dexposed,该框架基于AOP思想,支持经典的AOP使用场景.可应用于日志记录,性能统计,安全控制.事务处理.异常处理等方面. 针对Android平台.Dexposed支持函数级别的在线热更新,比如对已经公布在应用市场上的宿主APK,当我们从crash统计平台上发现某个函数调用有bug,导致常常性crash,这时.能够在本地开发一个补丁APK,并公布到server中.宿主APK下载这个补丁APK并集成后,就能够非常eas…
Dexposed是基于久负盛名的开源Xposed框架实现的一个Android平台上功能强大的无侵入式运行时AOP框架. Dexposed的AOP实现是完全非侵入式的,没有使用任何注解处理器,编织器或者字节码重写器.集成Dexposed框架很简单,只需要在应用初始化阶段加载一个很小的JNI库就可以,这个加载操作已经封装在DexposedBridge函数库里面的canDexposed函数中,源码如下所示: /** * Check device if can run dexposed, and loa…
一. 简介 MVC中的过滤器可以说是MVC框架中的一种灵魂所在,它是MVC框架中AOP思想的具体体现,所以它以面向切面的形式无侵入式的作用于代码的业务逻辑,与业务逻辑代码分离,一经推出,广受开发者的喜爱. 那么过滤器到底是什么呢?它又有什么作用呢? 用户通过URL访问Web系统不一定都能得到相应的内容,一方面不同的用户权限不同,另一方面是为了保护系统,防止被攻击,这就是过滤器的核心所在,我们总计一下过滤器都有哪些作用: ①:判断用户是否登录以及不同用户对应不同的权限问题. ②:防盗链.防爬虫.…
说起来, 面向切面编程(AOP)自从诞生之日起,一直都是计算机科学领域十分热门的话题,但是很奇怪的是,在前端圈子里,探讨AOP的文章似乎并不是多,而且多数拘泥在给出理论,然后实现个片段的定式)难免陷入了形而上学的尴尬境地,本文列举了两个生产环境的实际例子论述webpack和AOP预编译处理的结合,意在抛砖引玉.当然,笔者能力有限,如果有觉得不妥之处,还请大家积极的反馈出来, 共同进步哈. 重要的概念 AOP: 面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. Joi…