- 博客(50)
- 资源 (4)
- 收藏
- 关注
原创 Java源码解析-动态代理
1、Proxy.newProxyInstance()的实现public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h) throws IllegalArgumentExce
2020-12-05 17:03:17 287
原创 DataBinding使用及其原理
DataBinding的意义1、布局文件通常只负责UI控件的布局工作,页面中通过代码对控件需要进行各种操作,承担了绝大部分的工作量2、DataBinding让布局文件承担了部分原本属于页面的工作,也使得布局文件和页面的耦合度进一步降低3、使得UI控件能够直接合数据模型中的字段绑定,甚至能响应用户的交互。方便实现MVVM一、DataBinding简单使用1、启动DataBinding在模块下的build.gradle文件中,启动dataBinding。如果没有该命令,请升级版本android {
2020-12-05 16:38:37 3252
原创 深入了解注解及其使用
深入了解注解及其使用注解是什么注解是一种能被添加到java代码中的元数据,类、方法、变量、参数和包都可以用注解来修饰。注解对于它所修饰的代码并没有直接的影响。1、什么是元注解用于对注解类型进行注解的注解类,称之为元注解。JDK1.5中提供了4个标准元注解。@Target: 描述注解的使用范围,说明被它所注解的注解类可修饰的对象范围@Retention: 描述注解保留的时期,被描...
2020-02-13 09:54:02 429
原创 Retrofit原理、作用及使用探索
Retrofit使用及原理探索1、Retrofit基本使用1.1、创建接口public interface Github { @GET("/repos/{owner}/{repo}/contributors") Call<List<Contributor>> contributors( @Path("owner") String owner, @Path("repo") String repo); cl
2020-12-10 00:24:23 350
原创 Java反射类
Java反射工具类1.反射静态方法2.反射成员方法3.反射成员get/set4.反射静态成员get/setimport java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;/** * 反射工具类 * @author ...
2019-06-17 21:37:49 182
原创 Gradle学习(三):Android Gradle插件
本篇将讲述Android Gradle插件在实际项目中的使用,以实际使用为例1、引如Android Gradle插件引入第三方插件的方法:根build.gradle中:buildscript{ repositories { jcenter() } dependecies { classpath 'com.android.tools.build:gradle:1.5.0'...
2019-05-27 00:47:23 286
原创 Gradle学习(二):Gradle基础
Gradle是基于Groovy语言的DSL,用于项目构建。与Ant和Maven相比的优势在于本身是一门语言,可以做一些特定逻辑,灵活许多Gradle生命周期Gradle生命周期分为三个阶段:1.初始化阶段:生成project对象2.配置阶段:生成task对象,并完成task拓扑图3.执行阶段:执行任务以及依赖的所有任务生命周期相关API://配置阶段开始前this.befo...
2019-05-07 21:41:52 275 1
原创 Gradle学习(一):Groovy基础
Groovy是基于JVM的虚拟机的一门语言,语法和Java很相似,并且完全兼容Java。Java上能写的代码在Groovy中是可以运行的。但同时Groovy引入了闭包,增加了许多特性使用起来较为灵活方便。Gradle脚本使用的是Groovy语法,具备Groovy基础对于学习和使用Gradle是十分重要的。本篇将简要写一些常用的Groovy语法相关知识,便于看懂Gradle脚本的一些常用写法字...
2019-05-05 22:34:58 225 1
原创 Java线程池使用
Java线程池线程池:线程池刚创建时,里面没有一个线程。任务队列是作为参数传进来的。不过,就算队列里面有任务,线程池也不会马上执行它们。当调用 execute() 方法添加一个任务时,线程池会做如下判断:1.如果正在运行的线程数量小于 corePoolSize,那么马上创建线程运行这个任务;2.如果正在运行的线程数量大于或等于 corePoolSize,那么将这个任务放入队列。3.如...
2019-04-30 12:25:59 148
原创 MySQL必知必会-数据查询
数据库的学习我认为就是包含两方面:1、如何建库建表,达到高效2、如何查询到所需的数据本文将着重写的是基础概念以及如何查询数据的部分,如何建库建表的部分后续将在另外的文章写基本概念结构数据库: 一个以某种有组织的方式存储的数据集合表:一种结构化的文件,可用于存储某种特定类型的数据列:表中的一个字段行:表中的一条记录主键主键:一列(一组列),其值能唯一区分表中的每个行...
2018-12-02 16:04:30 566
原创 Android图像处理(一) 颜色变换
图像的变化通常是使用矩阵运算去实现,在Android中也不例外。本文将通过使用Android中的ColorMatrix矩阵对图片的颜色进行操作,实现对图片进行颜色上的调整。改变图像属性基本概念色调:物体传递的颜色饱和度:颜色的纯度亮度:颜色的明暗程度在PS软件中常通过调整这三个图像属性调整图片,在Android中可以通过ColorMatrix实现实现方法 mSrc = B...
2018-12-01 16:25:06 1344
原创 Android守护进程
守护进程守护进程: 一直在后台运行的进程。本文主要讲解一些android比较常用的守护进程的方法。实现思想:1.保活,通过提高进程优先级,降低进程被杀死的概率2.拉起,进程被杀死后,进行拉起相关基础知识Android进程优先级在Android中,进程粗略的分成五个等级,分别是:1.前台进程2.可见进程3.服务进程4.后台进程5.空进程此类相关知识可以在http...
2018-11-07 22:59:14 7887 3
原创 Android监听、屏蔽多任务键方法
Android监听、屏蔽多任务键 有时候是会有比较流氓的需求要求屏蔽多任务键,返回键等操作的,屏蔽返回键可以通过监听返回键的回调直接替换掉原先的操作即可。但多任务键有点特殊,需考虑其他方法。这里使用的是通过监听Intent.ACTION_CLOSE_SYSTEM_DIALOGS广播判定是否按了多任务键,之后通过在onPause中执行activityManager.moveTaskToFro...
2018-06-25 13:20:11 4291 2
原创 Android常用工具类总结(一)应用国家,安装天数,版本号,是否debug获取
应用国家安装天数获取应用安装天数获取 记录应用第一次启动的时间,从而当前安装天数,需在应用启动时调用刷新存储的数据import android.content.Context;import android.content.SharedPreferences;/** * 用户数据记录 * 记录首次安装时间 * 记录升级首次启动时间 * Created by zhuxi...
2018-06-25 13:09:03 401
原创 Android Service全面总结
Service 1、Service是什么 2、Service的生命周期(startService和bindService) 3、Service的类型 4、Service和Thread的关系 5、IntentService原理1、Service是什么 提供需要在后台运行的服务(理解后台和使用Thread的区别) 特点:无界面、后台运行、生命...
2018-06-24 16:08:39 221
原创 GreenDao数据库框架的使用
GreenDAO框架使用 GreenDAO是一种Android数据ORM(object/relational mapping)框架,与OrmLite、ActiveOrm、LitePal等数据库相比,单位时间内可以插入、更新和查询更多的数据,而且提供了大量的灵活通用接口。GreenDAO的效率之高主要是因为GreenDAO所采用的实现方式是生成代码而不是使用注解反射之类的手段。Gree...
2018-03-27 09:00:55 320
原创 腾讯Ai开放服务接入
1.接口调用通用形式相关网址:https://ai.qq.com/doc/auth.shtml 如腾讯Ai给出的示例,其中app_id, time_stamp, nonce_str, sign为发起对腾讯Ai各种Api都需要加入到post请求的数据。而key1,key2则根据不同Api会有不同。如下面的OCR通用文字识别Api 图中唯一不同于示例的是把key1,key2换成...
2018-03-02 21:04:51 6027
原创 Activity的生命周期和启动模式
1.Activity的生命周期a.典型情况下的生命周期Activity启动—>onCreate—>onStart—>onResume—>onPause—>onStop—>onDestroy onStop后重新启动则要先调onRestart再调onStart 其中,onStart,onStop和onResume,onPause看起来差不多,甚...
2018-03-01 21:41:36 213
原创 Android端基于OpenCV边缘识别技术
本文所采用的技术大体来源于网络上另一作者的开源项目,https://pqpo.me/2017/09/11/opencv-border-recognition/#reward,只是对其智能裁剪部分做了优化。所以本文之着重讲述优化部分,具体环境搭建则不细写了,原作者已经写的很详细了。OpenCV 的全称是 Open Source Computer Vision Library,是一个使用 C++
2018-01-31 16:36:22 4684 6
原创 C++基础知识(五)类进阶:模板类
在某些场景下,继承和包含并不总是能满足重用代码的需要。比如,容器类。容器类设计用来存储其他对象或数据类型。 比如如下的Stack类:Stack.h#ifndef STACK_H_#define STACK_H_#include using namespace std;typedef unsigned long Type;class Stack{private:
2018-01-31 11:34:51 278
原创 C++基础知识(二)C++类基础
目录 1.类的定义 2.类的两种实现方式 3.对象的定义和对象成员的使用 4.构造函数和析构函数 5.堆对象 6.public,private,protected的使用 7.特殊成员函数 8.自定义String类1.类的定义 类是一种抽象数据类型,它是将不同类型的数据和与这些数据相关的操作封装在一起的集合体。因此,类的定义一般包含
2018-01-30 14:29:12 379
原创 NDK基础知识(一)环境搭建
1. AndroidStudio的NDK环境搭建下载相关资源包,NDK,CMake,LLDB 使用AndroidStudio中的SDK Manager下载即可 安装完成后,AndroidStudio将自动配置好上述资源,前提当然是使用AndroidStudio下载接下来创建一个新项目,记得勾选上Include C++ support这一项,AndroidStudio才会自动配置好C+
2018-01-22 08:55:07 271
原创 C++基础知识(四)类进阶:抽象类和接口
抽象类:类中存在没有实现的方法,不能实例化 接口:类中的方法都没有实现。 在C++中,抽象类则说明类中有一部分方法是纯虚函数,接口则说明类中所有方法都是纯虚函数。 纯虚函数:方法没有函数体。在声明后面加上”=0”例子:#include using namespace std;class Shape{ public: //纯虚函数 virt
2018-01-05 22:52:02 176
原创 C++基础知识(三)类进阶:多态
什么是多态? 相同对象收到不同消息或不同对象收到相同消息时产生的不同的动作。在C++的类中,有着静态多态和动态多态。静态多态指的是函数的重载,而动态多态指的是晚绑定。静态多态class Rect //矩形类{public: int calcArea(int width); int calcArea(int width,int height);
2018-01-05 22:29:45 274
原创 C++基础知识(一)基础知识
基本数据类型 C++基本类型的最小存储空间 bool 类型 char 字符型 8位 wchar_t 宽字符型 16位 short 短整型 16位 int 整形 16位 long 长整形 32位 float 单精度浮点型 6位有效数字 double 双精度浮点型 10位有效数字 long double 扩展精度浮点型 10位有效数字
2017-12-27 20:39:11 423
原创 Spring-data-jpa生成表格失败的可能原因
一、配置错误 spring-jpa-properties-hibernate-hbm2ddl-auto=update 如果是设置成create则是每次启动都创建新表,可能造成数据丢失,如果是create-drop则是关闭时删除表。 二、表格字段中使用了mysql的保留字,如不起眼的”desc”,如果存在字段名称为desc则会自动创建失败,修改字段名就可以了 三、当写类似@Column等注解...
2016-12-28 10:04:21 3204
运行时注解实现控件注入
2020-02-13
手写注解处理器实现Android控件注入功能
2020-02-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人