专注于Android和Java技术!
本文是原理介绍 这里是如何使用传送门 这里是源码地址 V1.0.0功能列表 是否支持 接口自定义 支持 缓存策略 支持 外部cookie注入 支持 推送周期设定 支持 强制推送 支持 自定义埋点事件 支持 独...
1 建立远程调试任务 image.png image.png image.png 2 在项目中的terminal命令行中 gradle assembleDebug -Dorg.gradle.daemon=false -Dorg.gradle.debug=true assembleDebug 可以为其他的构建命令,但参数-Dorg.gradle.daemon=false -Dorg.gradle.debug=true要有。
这是一篇 写的非常用心的 博文,这里是原文地址https://blog.csdn.net/l540675759/article/details/62230562 前言 (1)本文共花费2周零3天的凌晨时光,这段时间收获很多.
最近在公司 开发gradle插件, 再发布的时候遇到了问题 所以,就转载了这篇文章,和大家分享 Gradle Gradle 是个的构建工具,也是Android Studio 默认的构建工具,与传统的 Ant 、maven 相比,Gradle 更加强大。
Gradle 自定义插件 官方原文 gradle学习官方翻译网站 1.新建项目 配置build.gradle //使用官方的 `groovy` 插件 apply plugin: 'groovy' //添加api依赖 dependencies {dependencyHandler -> dependencyHandler .
Gradle 编程框架 1.groovy语法 2.Build Script Block 3.gradle api 前言 1.灵活性上: ANT和Maven 不能在构建过程中,做自定义操作.
引言 什么是 ASM ? ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。
转载来自这里 以下是本人在工作中对经历过的性能优化的一些总结,依据故事的发展路线,将其分为了5个部分,分别是:常见的性能问题;产生性能问题的一些可能原因;解决性能问题的套路;代码建议及潜在性能问题排查项。
多线程put后可能导致get死循环 从前我们的Java代码因为一些原因使用了HashMap这个东西,但是当时的程序是单线程的,一切都没有问题。后来,我们的程序性能有问题,所以需要变成多线程的,于是,变成多线程后到了线上,发现程序经常占了100%的CPU,查看堆栈,你会发现程序都Hang在了HashMap.get()这个方法上了,重启程序后问题消失。
object对象中的 public boolean equals(Object obj),对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true; 注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
为了防止我们的数据泄露,我们往往会对数据进行加密,特别是敏感数据,我们要求的安全性更高。下面将介绍几种常用的加密算法使用。这些算法的加密对象都是基于二进制数据,如果要加密字符串就使用统一编码(如:utf8)进行编码后加密。
通用对话弹窗CommonDialog Version 1.0 Created by chenchangjun on 18/1/12. 抽离普通基类见BaseNormalDialog 优化扩展方式 见3.
/** * Created by chenchangjun on 17/10/27. */ 1..So 理论基础 首先介绍一下 目前所有手机上 .So 的指令集 Android系统目前支持以下七种不同的CPU架构,每一种都关联着一个相应的ABI。
解决java.long.NoClassDefFoundError 这个问题的原因多出现于Android版本兼容上 Android5.0以下的手机,会出现java.
Mybatis 基础用法 sql数据,建表,注意主外键 关系, 以及建立db.properties CREATE TABLE user( id int AUTO_INCREMENT, userName VARCHAR(255) not ...
Spring MVC 项目开发层级 应用层 app web层 structs, springmvc 业务层 spring 持久层 hibernate mybatis Spring 三成模型 控制层DispatcherServelet Controller 接受请求,转发请求.
Spring 控制反转IOC IoC Inverse of Control 反转控制的概念,就是将原本在程序中手动创建HelloService对象的控制权,交由Spring框架管理,简单说,就是创建HelloService对象控制权被反转到了Sprin...
项目地址https://github.com/ccj659/clean-project-architecture 前言 随着业务的增多,迭代版本的增加, 模块化开发, 业务解耦, 业务独立进行测试,编译,运行,想想都惊喜~ 如果不想忍受超长的编译时间,不想忍受类之间的强耦合,受够了满屏的不相干的文件,那么.
在自己的一个 轮子PopsTabView在上传到JFrog Bintray 时,遇到坑... 踩坑 当遇到如下类似错误, :poptabview_lib:javadoc /Users/chenchangjun/MyOpenGitSouce/PopsTa...
补间动画 分类 平移Translate 缩放Scale 旋转rotate 渐变alpha 应用场景 1.启动页,开始按钮,飞入效果可以用. 2.listview或者recycleview的item进入动画.
drawable是一个抽象类,他把资源文件夹下的Drawable用其子类进行实例化,然后绘制.so,我们只是在drawble资源中进行了配置,其绘制过程在对应的实现类中.
最近在读Android开发艺术探索,本文作为自己对view的滑动冲突的理解和实践记录 而滑动冲突,需要了解Android的事件分发机制,如果这个还有些疑惑的地方,请参考这篇文章,以及其中的参考文章 还需要View的Measure和Layout的相关知识View的Measure流程总结 自定义view注意 1.
首先,Measure流程 是为了测量,并计算view的大小.宽mMeasuredWidth,高mMeasuredHeight,然后将宽高保存.为后续layout 和draw 提供数据支撑.
PopsTabView === PopsTabView是个filter容器,他可以自动,快速,构建不同筛选样式,自由组合成一组tab. 目前版本v1.1 筛选样式 筛选种类 单列 单选,多选 三行 单选,多选 双列 单选,多选 复杂 单项单选,单项多选 后续筛选会不断完善补充.
Charles安装和抓包 1.何为抓包 抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。
贝塞尔曲线扫盲 大家不明白贝塞尔的可以来这里逛逛~~ 浅显易懂 贝塞尔曲线主要由于三个部分控制:起点,终点,中间的辅助控制点。在android自带的Path类中自带了方法,可以帮助我们实现贝塞尔曲线: 二阶贝塞尔 /** * Add a quadr...
Android Studio DeBug 额,之前都是用log日志输出,自己想要的东西.搞得代码到处都是Log.i()... 突然有一天,,,自己get到了,Android 断点.
EasyTabPager 一个通用中间组件,简单通用的适配ViewPager,以及pager中的RecycleView 简化复杂的操作,简单直接。------传送门 To Use In Gradle compile 'me.
大概每人都会有纠结吧 最近自己换工作。面试了几家公司。拿到了几个offer。纠结的要死。 但是自己在对待选择offer的时候。会显得很纠结。 纠结于得与失。
这就是2016的我 ---每年的自己,也要审视一下,自己走过的路,是荆棘还是平川,审视自己走过的脚印.是深是浅;整理一下得失,是值是弃.
迭代器模式介绍 定义 提供一种方法访问一个容器中的元素,而又不暴露该对象的内部细节. 使用场景 遍历一个聚合对象,但是目前,java中有Collection集合,我们可以直接使用.
策略模式介绍 概述 所谓策略,指的是一个类的行为或其算法可以在运行时更改. 就像出行选择的交通工具,要根据自己的情况,可以自由切换自行车,汽车,火车等等. 三个角色 环境Context 持有策略strategy的引用,通过引用来调用某ConcreteStrategy定义的算法。
概述 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 使用场景 行为随状态改变而改变的场景。 优点 封装了转换规则 方便添加新的状态 将状态转换的逻辑和状态对象合成一体,代替复杂的if else 缺点 产生大量对象 结构复杂,转换逻辑不能一目了然 类图解析 环境Context 它定义了客户程序需要的接口并维护一个具体状态角色的实例,将与状态相关的操作委托给当前的Concrete State对象来处理。
观察者模式 定义 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 应用场景 有一个事件发生改变,需要通知其他多个对象时.
模板模式 asynctask 就是模板模式 定义: 定义一个操作流程的骨架,然后将一些步骤的具体实现放到子类中. 意图 有一些共用的方法,却在每一个子类都要重写这一方法.
命令模式 定义 命令模式:将请求封装成对象,以便使用不同的请求、日志、队列等来参数化其他对象。命令模式也支持撤销操作。 举个例子 就像领导命令员工工作,,,领导让他开车,去搬砖.
我的理解: 一种行为模式,为请求创建一个接收者的对象链.这样就避免,一个请求链接多个接收者的情况.进行外部解耦.类似于单向链表结构. 应用场景: JS 中的事件冒泡,jsp servlet 的 Filter,还有android中的事件传递机制; 优势: 降低耦合度。
建造者模式 即按照这 我的理解是 :对同一个类型按照顺序对不同的属性进行赋值 然后完成建造,得到对象的过程. 就像建房子,建造者就是建筑工,产品就是房子.
单例模式介绍 单例模式是java创建性模式的一种,提供了一种创建对象的最佳模式. 关于指令集乱序: 在堆中的对象,还没有完全实例完成,就将地址交给了引用 设计意图: 保证一个类只有一个实例,减小内存开支,减少资源多次链接(当一个类是作为资源链接,保证这个实例为唯一实例,而不是链接一次,新建一个实例,这样能有效减少系统开销).
原型模式 原型模式中,谁涉及到对象的克隆,对象的引用和hashcode,以及原型的思想和创建. 在这里,自己将自己的理解和实践记录下来,和大家一起学习. 接口Cloneable Note that this interface does not contain the clone method.
基础概念 网络七层模型 应用层 提供网络管理、文件传输、事务处理,Telnet、FTP、HTTP、SNMP、DNS,HTTPS.在这里稍微解释下. HTTP http0.9 是http协议的第一个版本,只有普通的get请求. http1.0,引入post请求,让HTML的表单可以提交表单.引入加入请求头Header ,让 既一次TCP连接后,可以多次通信,虽然HTTP1.0 默认是传输一次数据后就关闭。
看见的只是表象,当你深入其中的时候,你会发现一个不一样的世界~ android的消息机制其实是分为java层的Message派发和Native层的 派发以及处理来自所监控的文件句柄的事件 推荐两个在线源码阅读工具: 1.
1.知识储备 CPU: 中央处理器,它集成了运算,缓冲,控制等单元,包括绘图功能.CPU将对象处理为多维图形,纹理(Bitmaps、Drawables等都是一起打包到统一的纹理). GPU:一个类似于CPU的专门用来处理Graphics的处理器, 作用用来帮助加快栅格化操作,当然,也有相应的缓存数据(例如缓存已经光栅化过的bitmap等)机制。
深入内存泄露 android应用层的内存泄露,其实就是java虚拟机的内存泄漏. (这里,暂不讨论C/C++本地内存的堆泄漏) 1.知识储备 1.Java内存模型 相关内存对象模型,参照博客精讲Java内存模型 寄存器(register)。
前言 代码github地址https://github.com/ccj659/NDK-FFmpeg-master FFmpeg库简介 avcodec:编解码,包含 avformate: 封装格式处理 avfilter:滤镜特效处理 avdevice:输入输出设备 avutil:工具库 swresample:音频采样处理 swscale:视频像素格式转换,缩放等 FFmpeg解码流程 av_register_all(); //注册所有组件。
前言 随着应用越来越大,应用更新耗时间和流量的问题,就显得格外突出. 目前原生app的更新分为两种:重新下载源文件,还有一种就是差分包更新,也叫增量更新.
JNI(Java Native Interface) Java调用C/C++,C/C++调用Java的一套API 前言: 学习JNI需要C/C++的相关知识,而且需要研究JNI手册.
杂谈 最近在研究gradle ,插件化~自己碰到的坑很多.今天先总结一下 以下这三个都研究过,原理都是一样的,区别就在于用哪个更方便. 在这里我会讲述一下,这里面的原理和自己爬的坑,以便大家理解,还有少爬坑~~ 原理是需要懂得~ 不然,你遇到错误不会解决,并且你始终会是初级工程师~ 首先,按照顺序,介绍下目前三种热修复的方式: 1.
android架构篇 mvp+rxjava+retrofit+eventBus 高层不应该知道低层的细节,应该是面向抽象的编程。业务的实现交给实现的接口的类。