自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (1)
  • 收藏
  • 关注

原创 微信插件之护妻宝(微信自动回复机器人)2

前介花了将近 2 天的时间,总算是把所有功能写完了,说实话,当时认为很简单,应该话费不了多长时间,但是最后发现越写逻辑越多。不过总算是完成了,看看最终的效果吧!代码使用了,我开发的 Andorid 资源优化插件,非常还用了,大家可以试试 安卓资源瘦身丶混淆丶去重插件。代码仓库确定目标集成图灵机器人集成第四范式客服机器人增加设置界面增加定时向 娇妻 推送消息 早安问候丶天气丶...

2019-12-03 10:52:21 572 2

原创 kotlin之好用的Delegates实现双击back退出

简介说Delegates之前,首先必须了解下kotlin的委托机制,这个委托机制还是很不错的,可以将一个对象的构造和设置值,都给委托给其它委托机制关键词by,是不是很眼熟,这不是我们经常用过的by lazy{} ,没错懒加载就是用委托实现的自定义委托考大家一个问题val和var有啥区别吗?val是不可变的变量,必须要在初始化化的时候赋值。var是可变的变量。有没有考虑过为啥呢?// 其...

2019-07-26 17:54:03 1509

原创 jetpack-LiveData&ViewModel学习

LiveData简介LiveData一个具有生命周期的对象。他可以和Activity的生命生命周期绑定,可以监听对象的数据变化。LiveData的优势可监听数据的变化没有内存泄露:LiveData绑定Lifecycle(AndroidX的Activity和Fragment都实现了Lifecycle)对象,并在其相关生命周期被破坏后自行清理。没有因停止活动而崩溃:当界面失去焦点或销毁,此...

2019-07-24 15:10:33 636

原创 jetpack-DataBinding学习

介绍曾经我们经常遇到一个View和一个实体字段有绑定关系,View的属性随着实体字段相互依赖变化,我们经常的做法就是给这个View增加变化监听,然后修改对应属性实体。这种方法很复杂,而且经常稍有不慎出现死循环的,我以前的公司就是这种方案,很难受。学了DataBinding我发现这种xml布局和实体对象绑定的功能,能完美的解决这个问题。使用启用dataBindingandroid { ...

2019-07-22 11:02:11 565

原创 2019-4-19小米面试总结

面试过程小米面试会预约一个时间发邮件这里有个坑,发的邮件不光有约定的地点+时间,后面还有一个确认接受,我没点确认接受,导致我去前台查询说我没有查询到,面试了3个回合,3个小时,没有中间休息,建议大家面试之前带瓶水丶带瓶水丶带瓶水,重要的事情说三遍,最后也每到HR,我的结果应该是凉凉,过程还是很轻松的算法题目生产者和消费者刚开始我脑袋一懵啥是生产者丶消费者,面试官说你软件工程毕业不知道什么是...

2019-04-22 15:21:41 1614

原创 V2多渠道打包分析丶工具开发

V2签名分析简单过一下V1签名多渠道方案V1签名原理V1多渠道方案(1)V1多渠道方案(2)V1多渠道方案(3)V2渠道原理V2多渠道包实现原理定位签名块位置签名块中增加渠道信息修改EOCD中央偏移量结尾简单过一下V1签名多渠道方案V1签名原理v1 签名方案重要的原理就是对 apk 中所有的文件计算摘要 保存到 MANIFEST.MF 文件中;然后计算 MANIFEST.MF 中每个条目的摘...

2019-03-13 19:48:04 523

原创 微信发送自定义语音

很皮微信前景开发遇到的难题收集语音素材问题解决录制音频如何变声音频格式转换amr问题(ffmpeg&amr)音频方面的知识点音频文件的组成PCM&WAV的关系音频格式转换原理音频参数的理解转换格式wav转amrmp3转amr前景曾经一直想做一款关于微信的软件,目标就是网上收集很多调皮捣蛋的语音或者录音变声,然后发送给某个微信好友,感觉很有意思开

2019-03-08 16:11:02 6327 1

原创 打造升级GsonFormat驼峰命名规则

前景        今天高高高兴兴的敲代码,龙飞凤舞,张牙舞爪,帅的一B,创建presenter,modle,view一起合成,复制返回数据,解析json数据,打开GsonFomat->粘贴->OK,帅的一B, 一气合成我都佩服自己,来看看结果public class ContrastListModel2 { /** * car_id : 12345 ...

2018-09-28 19:19:37 3062 2

原创 Andorid资源瘦身去重丶图片压缩丶混淆插件(3)

前介一个 Apk 主要分为 res 丶 dex 丶 META-INF 丶 AndroidManifest.xml 丶 resources.arsc 组成(对应文件作用看下方表格)。从图片可以看到一个项目的 res 占很大一部分内存,其次就是 dex 文件。所以优化 Apk 的体积就应该从 res 丶 dex 出发。昵称介绍resApk 资源,代码中对应的 res 目...

2019-12-06 10:32:04 457

原创 Andorid资源瘦身去重丶图片压缩丶混淆插件(2)

功能实现前面已经分析清晰了,只需要在 processDebugResources Task 添加一个 dotLast 的 Action对应去重丶压缩丶混淆丶修改 resources.arsc 就 OK 了。w去重资源其实美团技术团队,提出过这种去重的方案,当时我不明白这些大厂的程序员只喜欢说理论不喜欢给一个代码实例吗?大体方案如下:resources-debug.ap_ 是一个 ZIP...

2019-12-06 10:31:23 372

原创 Andorid资源瘦身去重丶图片压缩丶混淆插件(1)

前介APK 瘦身是很多公司忽略的问题,因为现在网速快速发展以及流量的降费,这个问题也越来越被忽略。但是大项目还是很在意瘦身的,支付宝对瘦身就做到了极致(参考链接)。网上大部分的方案都是:压缩图片减少多余的so删除无用资源代码混淆这些方案大部分都是在编写代码时期做的操作,容易出错和遗漏,我觉得这都算不上什么瘦身只能说是常识。于是我想能不能开发一款插件,在 APK 编译期间对 Apk...

2019-12-06 10:30:13 392

原创 微信插件之护妻宝(微信自动回复机器人)1

前介现如今最常用的社交工具是什么呢?必然是 微信 ,不得不说现在的微信不在简简单单是一个社交程序,它已经和我们生活紧密相关了。做为一个程序员?最重要的是什么呢?我认为做为一个程序员最重要的是但是做为一个程序员没日没夜的敲代码,经常没有时间回复女朋友的微信或者尬聊。做为一个资深的程序员,怎么能被这种小挫折打败呢?我们要用程序的去维护我们的 娇妻因此我要开发一款自动回复女朋友消息的微...

2019-12-03 10:48:18 1744

原创 AspectJ之this和target的区别(四)

this和区别前景说明this理解target 理解测试用例源代码AspectJ代码1AspectJ代码2AspectJ代码3AspectJ代码3总结前景当我学到this和target的时候,网上看了很多解释和资料,总是一头雾水,都不是很清晰,说的也不是很明白,唯一看到了点有理解的就是这篇帖子辅助帖子,但是感觉描述的也不是很准确,特此标注我自己的理解说明间接选择Join Point...

2018-11-14 16:51:46 2654 1

原创 AspectJ自定义注解之埋点(三)

使用AspectJ埋点介绍onClick事件埋点自定义埋点什么是注解元注解定义注解编写AspectJ代码介绍埋点,我们公司有很多核心的方法,要给大数据做统计需要做埋点,埋点其实就是将用户操作这部分业务逻辑的记录下来,给大数据作分析,前端埋点就是插入上报信息的功能,后端埋点一般是Api埋点,埋点代码和业务逻辑没有任何关系,如果入侵是写入(手动插入埋点代码),将来的维护成本大大提升,更何况埋所有的...

2018-11-13 15:02:24 1103

原创 AspectJ语法(二)

AspectJ语法回顾解释Advice间接选择Join Point直接选择Join Point理解call和execution@After丶@Beforewithincodewithin丶this@Around总结回顾上节写了一个简单的测试用例,look下代码@Aspectpublic class CoreAspetJ { @After("call(* com.mmvoice.as...

2018-11-12 16:37:20 1019

原创 AspectJ介绍(一)

AspectJAOP概念AspectJ发现问题解决问题AspectJ的设计理念(概念)Advice(通知)Joint point(连接点)Pointcut(切入点)集成AspectJ插件集成AspectJgradle集成来个简单demo爽一下代码运行效果总结AOP概念AOP是Aspect Oriented Programming的缩写,即『面向切面编程』。它和我们平时接触到的OOP都是编程的不...

2018-11-12 11:56:43 43085 5

原创 MMKV 组件-快速丶读丶查丶写的sp

1.安装引入dependencies { implementation 'com.tencent:mmkv:1.0.10' // replace "1.0.10" with any available version}2.初始化在Application处初始化 MMKV.initialize(this);3.增删改查默认使用单进程模式,如需切到多进程模式可使...

2018-09-26 11:19:19 2440

原创 jenkins打包之集成360自动加固(5)

实现jenkins打包完成360加固1:下载360加固软件:下载地址2:添加是否加固参数,如下图3:填写参数4:添加构建过程,构建过程的意思就是说在jenkins构建完成后的后续操作,注意:我这里的是windows的计算机,所以用的Windows命令5:执行加固命令,其实就是执行360的jar包,在windos的的引用当中使用 %%包裹住上面的if %Is360JG%==true java -ja...

2018-07-02 15:22:40 2360

原创 jenkins打包之git选择分支和自定义参数(4)

配置git选择分支1:安装Git Parameter插件,jenkins的系统管理->插件管理,进行搜索安装\2:去对应项目配置如下图3:填写参数4:大功告成自定义参数完成打正式包还是非正式版包的需求,类似下图1:对应项目配置的参数构建中,添加参数,可以看到我以前添加了一个git的参数2:填写参数,如下图4:看看效果,有选择了5:如何使用呢?还记得以前打包命令吗?把打包名利换成app:cle...

2018-07-02 14:59:38 11192 1

原创 jenkins打包之创建项目完成打包(3)

新建任务配置源码我们一般都是用的git,我们需要告诉jenkins我远程代码,我们只需要告诉其git地址和配置其ssh即可配置SSH向下滑动点击ADD,然后记得选择刚刚添加的构建因为我们的是Andorid Studio的,所以我们使用Gradle来进行构建选择gradle版本,填写构建命令现在应该就能打包了,测试下麻蛋失败了,看看控制台输出git没问题,代码已经down下来了,可以去C:\User...

2018-06-25 15:37:45 1953

原创 jenkins打包之系统管理(2)

前面的创建账号和安装插件就跳过了进入系统管理设置下环境变量全局工具配置配置JDK和git配置gradle总结这些配置好,我们就能运行一些命令了,这里配置是全局配置,就是说每个项目配置都是可以选的,后面单独说配置,就知道这里的用处了...

2018-06-25 14:32:15 217

原创 jenkins打包之环境搭建(1)

前介    大家有没有遇到这样的事情,测试总是和你说,你帮我打一个最新版版的安装包,说实话很烦,我第一家公司就遇到了这个问题,我们总是不耐其烦的给其打包,公司的确挺low,也不想着用用工具,那会解决方法是,让测试安装了gradle环境和git环境,自己从git上拉取代码,让其自己输入命令assembleRelease进行打包,到了新公司,发现个好东西Jenkins,很好玩,自己选择条件就能打指定包...

2018-06-25 10:39:29 801

原创 (3)自定义推送库-TCP协议核心封包拆包

为何要封包拆包TCP是个"流"协议,所谓流,就是没有界限的一串数据.大家可以想想河里的流水,是连成一片的,其间是没有分界线的.但一般通讯程序开发是需要定义一个个相互独立的数据包的,比如用于登陆的数据包,用于注销的数据包.由于TCP"流"的特性以及网络状况,在进行数据传输时会出现以下几种情况.假设我们连续调用两次send分别发送两段数据data1和data2,在接收端有以下几种接收情况(当然不止这几...

2018-06-14 17:00:03 677

原创 (2)自定义推送库-集成方式

集成方式依赖push library项目工程Application继承PushApp开启推送设置推送监听开启推送 public void startPush(View view) { AwenPushManager pushManager = new AwenPushManager.Build() // TODO: 2018/6/12 注意这里...

2018-06-14 11:24:36 173

原创 (1)自定义推送库-需要解决的难题方案

前言闲的无聊用TCP协议封装一个推送库玩玩,主要是想通过推送掌握TCP协议的封包+拆包的逻辑,以及常用的业务功能设计方案,通过推送可以了解大部分的即时通讯的业务逻辑开发准备预备攻破推送难题推送消息立刻到达推送不同形式的消息Toast丶通知丶等推送不同形式的数据文本丶图片等保证客户收到推送消息心跳机制        解决思路:1:推送立刻到达;使用自定义Socket协议完成2:推送不同的类型的消息;...

2018-06-13 18:16:18 347

原创 性能优化之布局优化(ConstraintLayout)

遇到的问题面试的时候,面试官总问我做过性能优化吗?我这种低级程序员当然会说一些基本的防止给自己的挖坑,例如布局优化啊,减少覆盖渲染呀啥的,我经常说不要包裹过多的布局,因为在xml生成view对象的也是需要解析xml解析效率降低,渲染view的层级过多都会导致性能降低,都是屁话,总之就是降低xml布局的层级关系,怎么降低呢?今天我学习了下ConstraintLayout,发现他很强大,他几乎可以包裹...

2018-06-06 10:34:34 1738

原创 Retrofit+Rxjava几个小技巧

链式请求链式请求巧用ZIP操作符场景:一个页面需要请求2个接口,曾经我们项目经常这样,在没有rxjava的时候,很头疼,一般我都是让接口合成1个,但是有时候数据量比较大或者后台接口也是从2个其它接口获取的数据,我们可以通过zip操作符来完成Observable.zip(api.login(parameters), api.login(parameters), new BiFunction<U...

2018-06-05 10:00:26 157

原创 关于Rxjava+Retrofit网络请求防止内存泄露

简介不知道大家有没有碰到这个问题,在一个Activcity正在加载数据,网络请求还未完毕,此时用户将Activity关闭了,这时候就造成了内存泄露(为啥泄露自己想),Activity并没有被释放的,这时候网络请求完了,回调了请求成功方法,填充view就开始报null异常了...,不知道大家有没有遇到这个问题?在以前网络请求发起是很难取消掉的,我们是在onSuccess回调加了判断Activity是...

2018-06-01 11:06:14 4267

原创 Retrofit+Rxjava解决链式请求问题

简介面试的时候,我只是看了简单的看了下,Rxjava+Retrofit做请求的简单应用,当时也没发现有啥好的地方,面试官问了我个问题,你用Retrofit是如何解决链式请求问题的?,当时我懵逼了啥是链式请求啊,回去后正式学习,我才发现这玩意太TM强大了,给我的感觉就是2个字舒坦,看的舒坦,写的也舒坦场景以前的请求都是抽取了get(String url,CallBack callBace),大家肯定...

2018-05-30 18:29:26 3972

原创 使用OkHttp拦截器,添加统一参数

场景大家的应用处于安全考虑,又没有加密呢?又没用一个一个加密参数做验证呢?如果没有那你们就太low了(当然对于懂逆向的这些都没啥用处),如果有你是如何做的呢?为何做验证处于安全考虑,http请求都是可以通过抓包工具抓取下来的(Fiddler),抓取下来,我就可以通过模拟请求发送你们的请求,做一款外挂,大伙也可以试试,抓别人的包,然后请求即可...,一般来说如何做呢?就是对一个参数经过一系列算法,然...

2018-05-30 16:09:42 9828

原创 关于OkHttp的Interceptor

理解拦路虎,保安,拦截数据,修改数据,返回数据使用 OkHttpClient client = new OkHttpClient.Builder() .cache(cache) .addInterceptor(interceptor) .addNetworkInterceptor(inte...

2018-05-28 16:37:31 457

原创 Retrofit自动定义ConverterFactory

先来一段我们经常写的代码 private void createRetrofit(){ retrofit = new Retrofit.Builder() .baseUrl(BASE_URL) .client(getHttpClient(getAppIntercepter(),getCache(App.getAp...

2018-05-28 13:24:52 5438

原创 教你轻松理解Rxjava之线程切换流程(observeOn与subscribeOn)

几句屁话      Rxjava我开始就觉得不就是能把线程切换吗?我的Handler和AsyncTask就能轻松解决,我还学什么这玩意......现在回想我就是一个井底之蛙理解RxJava订阅,向上走的一个过程数据流,向下走的一个过程借用别人的图给讲解下请看下面的示意图(向上的箭头表示订阅操作的方向,向下的箭头表示数据流向,箭头的颜色表示所在的线程,曲折的箭头表示发生了线程切换)订阅的操作符:cr...

2018-05-25 16:51:22 9162 1

原创 javapoet动态生成java代码

刚接触第一感觉      动态生成java代码???java代码不就是一个后缀名为.java的txt文档吗?仔细想了下,如果要生成这样的代码的确挺麻烦,你要考虑导包的问题,以及复杂的语法javapoet代码仓库地址其实git地址官方介绍的demo写的很清楚,这里我只是坐下笔记先说几个核心类MethodSpec定义方法TypeSpec定义类丶接口丶抽象类丶枚举JavaFile定义一个输出java文件...

2018-05-23 10:28:51 6763

原创 Dagger2之应用篇(Dagger2+RxJava+Retrofit+OkHttp+MVP)-第7章

介绍        前面介绍了Dagger2,今天尝试自己的想法去应用了下,说实话很别扭,晚上睡觉思前想后这个的好处。总是有一种似懂非懂,感觉就是,让对象与对象之间产生了一中关联,多个module的provides(供给)的对象,通过1个Component联系起来,我尝试写了2个Demo,一个用了Dagger2,一个没有用,好处自己总结吧MVP通过一个登陆Demo讲解LoginAcitivity,...

2018-04-25 15:22:44 1560 2

原创 Dagger2之Lazy和Provider(懒加载)-第六章

@Inject Lazy<User> lazyUser; //注入Lazy元素 @Inject Provider<User> providerUser; //注入Provider元素 public void init() { DaggerComponent.create().inject(this); ...

2018-04-21 18:17:48 542

原创 Dagger2之Singleton单利--第五章

单利一个对象在整个程序生命周期只存在1个,我们把它称为单利,什么懒汉,饿汗,静态内部类单利(推荐)都是实现的方式。在Dagger只需要一个注解就OK了@Singleton简单运用@Modulepublic class TestModule { @Provides @Singleton//主要是这样 public OkHttp providesOkHttp(){ ...

2018-04-21 18:13:30 768

原创 Dagger2之Named--第四章

主要解决一个问题!我一开始就认为Module返回对象是一个关键,如果Module 定义了 2个供给方法,返回值一样会有啥后果呢??例如:public class TestBean { public String value; @Inject public TestBean(String value) { this.value = value; }...

2018-04-19 18:15:45 330

原创 Dagger2模块化讲解--第三章

啥是模块化?看图看到没是不是与很多module呀!这就是模块,上一章节说了,找对象会从模块找举个例子Teacher对象构建需要Studnet和StudntClassTeacher类public class Teacher { public Student student; public StudentClass studentClass; @Inject publ...

2018-04-19 17:14:21 359

原创 Dagger2基本整体使用讲解--第二章

首先看一张图第一看这个图我也懵逼了,这是啥呀,这相当Dagger2的整体吧举个例子,比如说我通过@Inject去创建一个对象,而这个对象的不是我们能编写的(例如系统的,jar包提供的),我们就不能用@Inject方式来创建这个对象例如@Injectpublic TextView textView;TextView是android库中的,我们没办法用@Inject去注解构造方法,这下改怎么办呢?上...

2018-04-18 18:34:50 195

带有智能驼峰命名的GsonFormat

带有智能驼峰命名的GsonFormat,可以自动将下划线的命名自动,自动转换成java 的驼峰命名的形式

2018-09-28

空空如也

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

TA关注的人

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