自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (4)
  • 收藏
  • 关注

原创 路由框架解析-fluro

简介fluro是一款用在flutter开发中的路由开源库,主要是对flutter原生的声明式路由进行了包装,拓展了路径传参、统一封装了页面切换动效、语义化了几种页面跳转类型【如返回、替换等,其实原生也自带这样的功能,封装后本质上差异不大】功能,使得我们可以像restful风格一样定义页面路由路径,整体是比较简单的,代码量也不大。使用示例创建实例,fluro没有强制使用单例模式,但在工程使用中通常可以定义成全局变量,方便调用,当然也可以按照模块来定义路由,实现页面动态加载和卸载的机制。final

2022-04-14 17:51:30 3363

原创 更改Gradle镜像下载地址

全局更改Gradle镜像下载地址如果配置GRADLE_USER_HOME路径则在${GRADLE_USER_HOME}下新建init.gradle文件如果没有配置则在默认路径${USER_HOME}/.gradle/下新建init.gradle文件。init.gradle文件内容如下:allprojects { repositories { def ALIYUN_REPOSITORY_URL = 'https://maven.aliyun.com/repository/pub

2022-01-13 11:39:10 4927 3

原创 git submodule 使用注意事项

git submodule 使用注意事项1.主仓库以子模块形式引入各个maven子库,git追踪的是子模块的commit id,所以任何子模块的修改经提交并推送到子模块远端仓库后,还需要sdk主仓库也提交修改并推送到远端,不然团队其他成员将无法拉去子模块的最新修改;2.sdk主仓库每次在执行git pull操作后,最好执行git status查看子模块状态,子模块状态变更时需要执行git submodule update,确保子模块拉去到更新;3.git submodule update后子模块会处于

2021-04-29 10:20:41 474

原创 如何断点调试gradle插件

如何断点调试gradle插件编写gradle插件跟编写其他工程代码类似,都是掌握了基本的语法和约定好的写法之后就可以按照自己的业务逻辑来实现相应的功能需求了。因此在编写gradle插件的时候我们也希望能够像写其他程序一样断点调试,这样对于我们定位问题是有很大帮助的。调试方法第一步:将我们写好的gradle插件在工程中应用第二步:新建一个remote,并命名第三步:启动要调试的gradle插件的任务./gradlew {插件名} -Dorg.gradle.debug=true

2021-04-28 21:30:35 728

原创 Atomic*系列原子类相关知识

文章目录Atomic*特点Atomic*系列包括Atomic*缺点参考Atomic*特点Atomic* 按锁的类型来区分应该是属于乐观锁,就是多个线程在读取使用变量的时候是互不影响,非阻塞式的。sun.misc.Unsafe里面包含了大量的C代码和多种直接操作内存和原子能力的方法,所以被标记为不安全的,Atomic*系列主要就是使用了这个类的能力,来实现了非阻塞时的线程安全。Unsafe是一个非对外的类,内部是采用了单例模式来实现的,如果需要使用的话,可以通过反射的方式获取Unsafe内部的theU

2020-08-25 15:54:43 2307

原创 Volatile相关知识点

JMM(java memory model)java内存模型每台计算机中可用于处理或者存储数据的包括:硬盘、物理内存、缓存(多级)、CPU寄存器等。进程是计算机分配资源的最小单元,线程是CPU调度的最小单元。计算机为每个进程分配资源,其中就包括了内存资源,用于存储运行时数据的,就好比在物理内存中划分了某个区域,并将这块区域标记为只有该进程才可以访问(读取和写入),不同进程之前不能直接通信传递数据,需要借助特殊的方式来实现通信交互,而这些方式可以有:内存共享、socket、binder(an

2020-08-25 09:25:20 1492 2

转载 Android studio关联build.gradle源码

1、正常情况下,项目中的wrapper文件夹下的gradle-wrapper.properties文件按如图所示配置就可以查看build.gradle源码,但是有时候由于studio的bug,可能这样配置后不管用2、此时将all改为bin3、此时打开任意一个build.gradle文件,会有如图所示的提示,点击“ok,apply suggestion!”,等待构建完成后就可以关联源码了。...

2019-10-03 18:56:41 1456 1

转载 Android开发性能优化简介

作者:贺小令随着技术的发展,智能手机硬件配置越来越高,可是它和现在的PC相比,其运算能力,续航能力,存储空间等都还是受到很大的限制,同时用户对手机的体验要求远远高于PC的桌面应用程序。以上理由,足以需要开发人员更加专心去实现和优化你的代码了。选择合适的算法和数据结构永远是开发人员最先应该考虑的事情。同时,我们应该时刻牢记,写出高效代码的两条基本的原则:(1)不要做不必要的事;(2)不要分配不必要...

2019-08-18 14:46:55 1535

转载 Android应用开发性能优化完全分析

1 背景其实有点不想写这篇文章的,但是又想写,有些矛盾。不想写的原因是随便上网一搜一堆关于性能的建议,感觉大家你一总结、我一总结的都说到了很多优化注意事项,但是看过这些文章后大多数存在一个问题就是只给出啥啥啥不能用,啥啥啥该咋用等,却很少有较为系统的进行真正性能案例分析的,大多数都是嘴上喊喊或者死记住规则而已(当然了,这话我自己听着都有些刺耳,实在不好意思,其实关于性能优化的优质博文网上也还是有...

2019-08-18 00:38:00 1730

原创 Android高效旋转图片的方式

Android 图片旋转和镜像:Android中图片旋转、镜像都会创建新的Bitmap,而且没法使用缓存,效率较低在需要局部的地方优化:参考附件中代码。优点:1、速度更快(对比matrix的方式速度2-5倍);2、cpu和内存降低(使用同一份缓存);缺点:1、可能存在适配问题。建议:1、建议在可控的硬件上应用;import android.content.Context;im...

2019-08-17 17:12:29 5064 1

转载 Android高效计算——RenderScript

文章目录1 RenderScript简介2 使用RenderScript2.1 环境配置2.2 编写RenderScript文件2.3 在Android framework层调用RenderScript2.4 RenderScript工作流程3 RenderScript运行时层与反射层3.1 RenderScript运行时层3.2 反射层4 内存4.1 内存分配API4.2 静态内存4.2.1 ...

2019-08-17 16:58:28 4637

原创 观察者模式的实际使用——状态监控及恢复策略

文章目录背景背景在实际项目开发过程中,我们常常会用到一些状态监控策略,

2019-08-17 15:45:23 2924 1

原创 Docker常见命令的使用

1. 查看docker信息(version、info)# 查看docker版本$docker version# 显示docker系统的信息$docker info2. 对image的操作(search、pull、images、rmi、history)# 检索image$docker search image_name# 下载image$docker pull image_name...

2019-08-16 23:15:56 2734

原创 Android性能调优——内存泄漏排查

文章目录背景内存泄漏现象原因常见引起内存泄漏的案例引用类型排查的工具代码背景最近的项目总是遇到运行一个晚上后出现自动退出的问题,从日志分析是系统将应用进程杀掉了,由于ROM本身是我们基于Android7.1定制的,里面加了WatchDog,所以很有可能是由于应用某些异常导致整个系统卡死,从而引起了看门狗程序将应用杀掉,最有可能的原因就是应用程序内存的问题引起的【ROM本身放开了应用获取内存和存...

2019-08-08 12:59:26 4672

原创 Android查看应用签名、应用签名的方式、系统签名文件转IDE签名文件

文章目录背景查看签名信息方式一:使用keytool工具方式二:使用微信提供的工具方式三:某些在线工具生成应用签名文件方式一:使用keytool工具方式二:使用android studio生成v1和v2签名文件的区别APK签名方式一:使用jarsigner工具方式二:直接使用android studio来签名系统签名文件转IDE签名文件背景APK要想安装到设备上,无论是debug还是releas...

2019-07-24 12:54:20 4561

原创 Android studio 加速拉取依赖的方式

Android studio 加速拉取依赖的方式将https改为http1、jcenter()改为jcenter(){url 'http://jcenter/bintray.com/'}2、添加mavenCentral()使用国内镜像站阿里云镜像站地址:http://maven.aliyun.com/mvn/view从中挑选需要的镜像地址,将其添加到repositories中,如:...

2019-07-23 17:42:31 2927

原创 批量给java文件添加license声明

JLicenseForJavaFileUtil说明文档项目主要功能介绍关键代码介绍使用说明反馈渠道主要功能介绍批量为某个路径下的所有java文件添加license声明license支持文本输入和文件输入两种方式关键代码介绍遍历文件和文件夹,找到需要处理的文件private static void iterativeHandleFiles(File file, Str...

2019-07-23 16:56:27 3698

原创 Android AES、RSA、MD5、SHA、GZip加密方式实现

文章目录背景加解密AESRSAMD5SHA加解密中用到的工具类项目地址背景最近在项目中需要使用到AES、RSA、MD5、SHA的加解密,整理了工具类,放出来记录一下,完整的源码已经放到github上。加解密AES/** * AES 工具类 */public class AESUtil { private final static String SHA1PRNG = "SHA...

2019-07-22 20:57:23 3941

原创 各个平台DES加密方式的实现

背景前段时间在跟后台联调敏感数据的加密和解密时遇到了一些问题,设备使用的是android平台提供的des加密方式,后台使用的javax提供的des加密方式和PHP提供加密方式,在对接过程中就出现了同一段字符,在前后端解密得到的字符串不一样,最后经过一段时间的调试,得到了结果一致的实现方式,下面记录下来。实现平台java平台import javax.crypto.Cipher;impo...

2019-07-22 17:12:12 5053

原创 Android判断应用是否在前台显示的方式

背景在开发中,经常会需要判断应用是否在前台,根据应用的状态做逻辑处理。如根据应用是否在前台来判断是否需要弹框显示后台推送的消息,根据应用是否在前台来判断是否需要停止和开启某些服务,根据应用是否在前台来判断是否需要触发守护进程将主进程拉到前台来显示等。判断方法方式一:根据第一个运行任务栈来判断 public boolean isBackground(Context context)...

2019-07-22 11:30:34 13196

原创 Gradle多渠道打包动态修改apk文件名字

背景随着新版本Android studio的发布,与之配套使用的Gradle也有很多变化,下面主要列举对比新老版本自定义apk生成文件名的方式。新版本Android studio 下载地址Gradle3.0前后版本变更记录 详情Gradle3.0修改apk文件名的方式android { ... applicationVariants.all { variant -> ...

2019-07-20 10:46:55 4939 1

原创 动态修改应用名称和logo的方式

场景在开发过程中,尤其是涉及到2B的产品,我们往往是在一个工程中做多个软件的定制开发,其中比较简单和常见的就是应用名称和应用logo的动态变更,这些变更跟app绑定,当App编译完成后就不再修改,这样的场景往往就是在打包编译是动态配置即可。方法这些需求其实Gradle已经为我们考虑到了,并且提供了一些可行的方案来支持。方式一 :使用manifestPlaceholdersbuild....

2019-07-20 10:45:24 4292

原创 Android日志打印的注意事项

背景在Android开发过程中难免会需要日志输出的,日志在开发调试、异常跟踪以及排查问题上都有很大的帮助,但是打印日志是一个损耗性能的动作,会占用程序执行资源,如果处理不好的话有可能会造成ANR等问题,前段时间在为公司整理基础开发库,其中涉及到日志记录库,遇到了一些坑,所以下面就日志相关的内容整理一些需要注意的关键点。记录日志的方式System.out.println()这种方式一般是...

2019-07-20 10:44:48 4604

原创 在程序中执行logcat命令获取日志

背景在日常开发和调试过程中,我们经常需要用到logcat的日志来帮助我们定位问题,在生产环境也有类似的需求,当程序出现崩溃、anr等异常时,我们除了需要捕获异常日志外,往往需要抓取一段完整的logcat日志,给我们研发同学去分析定位问题,但是生产环境是复杂的,如果当发生异常后,设备很有可能被重启了,这时候我们的logcat日志往往就丢失了,无法事后再去抓取,所以这时候就需要我们在程序中提供一种自...

2019-07-20 10:44:00 6890

原创 Android开发规范

前言在项目开发中,拥有统一且得到大家认可的规范是非常重要的,一个好的开发规范不仅可以降低开发人员之间的沟通成本,同时也能减少代码出错的可能。完全靠自己定义一套完整的开发规范是比较困难的,幸运的是,现在很多大厂都有公开自己在生产环境中使用到的开发规范,我们可以参考这些规范并结合我们自己的经验,总结出属于我们自己的开发规范,下面是我自己整理的开发规范。我整理的这套规范是参考阿里提供的java开发...

2018-11-10 16:56:39 4762

原创 兼容Android 19以上版本获取图片路径的方式

##打开相册的方式Intent.ACTION_PICK默认打开图库,打开默认是缩略图界面,还需要进一步点开查看,通常用来选择指定URI下的资源。Intent.ACTION_GET_CONTENT4.4以下默认打开缩略图。4.4以上打开文件管理器供选择,选择图库打开为缩略图页面,选择图片打开为原图浏览,支持多选。Intent.ACTION_OPEN_DOCUMENT(AP...

2018-10-28 22:16:56 5201 5

原创 Android 平台更加安全的DES加密方式

DES介绍DES是Data Encryption Standard(数据加密标准)的缩写。它是由IBM公司研制的一种对称密码算法。DES是一个分组加密算法,典型的DES以64位(即8个字节)为分组对数据加密,加密和解密用的是同一个算法。它的密钥长度是56位(因为每个第8 位都用作奇偶校验),密钥可以是任意的56位的数,而且可以任意时候改变。DES的安全性DES算法的安全性主要取决于密钥的保密...

2018-10-28 22:16:02 5152 1

原创 FindBugs工具使用

前言对于初学者以及刚刚参加工作的程序猿来说,常常希望能有一种方式或者工具能够帮助我们指出我们书写的代码中那些不合适或者有隐患的地方,让我们书写的代码能够更加高效和安全。FindBugs就是这样一款工具,当我们编码完成后,可以一键检查我们的代码,并罗列出我们代码中有哪些需要优化的地方和可能会出问题的地方。安装首先打开Android studio的设置中的插件,输入findbugs,如下图所示...

2018-10-28 22:12:42 2919

原创 Android Service保活攻防

参考1:http://tech.dianwoda.com/2016/10/20/androidjin-cheng-bao-huo-gong-fang/参考2:http://lioil.win/2017/12/19/Android-Alarm_Doze_Standby.html参考3:https://www.jianshu.com/p/adbfea66e3ae参考4:【时钟例子】http://god...

2018-04-25 17:07:39 970

原创 适配虚拟按键方案

import android.app.Activity;import android.content.Context;import android.content.res.Resources;import android.graphics.Color;import android.graphics.Rect;import android.os.Build;import android....

2018-04-25 17:02:28 1275

原创 检测应用绘制时间

import android.util.Log;import android.view.Choreographer;/** * Created by sensetime on 18-4-25. */public class SMFrameCallback implements Choreographer.FrameCallback { public static SMFram...

2018-04-25 17:00:33 671

原创 解决软键盘遮挡输入框的问题

根据前人经验总结普通Activity(不带WebView),直接使用adjustpan或者adjustResize如果带WebView:a) 如果非全屏模式,可以使用adjustResizeb) 如果是全屏模式,则使用AndroidBug5497Workaround进行处理。常见方法<activity android:name=".MainActivity" android:...

2018-03-21 15:17:48 889 1

原创 listview 对应的adapter的通用封装

CommonAdapterpackage com.sensetime.senseattendance.adapter;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android....

2018-03-19 09:54:23 912

原创 位移符号错误记录

在进行nv21旋转的时候遇到将*2替换成 private static byte[] rote(byte[] nv21, int width, int height) { int ySize = width * height; byte[] ret = new byte[ySize * 3 >> 1]; for (int y = 0; y

2017-08-11 19:28:22 728

原创 Java 通过调用系统程序打开文件或者目录的方式

在程序开发的过程中经常会用到调用其他程序来打开某个文件或者某个目录的需求,下面提供两种方式:第一种:windows:Runtime.getRuntime().exec("explorer 文件路径“);Linux:Runtime.getRuntime().exec("nautilus 文件路径“); 第二种(windows和Linux同一):Desktop.getDeskt

2017-07-28 14:48:12 7773

原创 Java判断当前运行系统是否是windows系统

使用Java类System可以获取到大多数系统信息,因此本次判断运行操作系统是否是windows也可以从System类入手。具体方法:public boolean isWindows() {return System.getProperties().getProperty("os.name").toUpperCase().indexOf("WINDOWS") != -1;}

2017-07-28 14:39:40 11298 1

charles-2.jar

charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据。它允许一个开发者查看所有连接互联网的HTTP通信,这些包括request, response和HTTP headers (包含cookies与caching信息)。

2020-08-25

HandleMemoryLeakDemo.zip

整理handle 内存泄漏的一些代码例子,用于分析和验证handle内存泄漏的Android的工程。

2019-08-08

常用开发工具类

文件复制,日志打印,图片处理,toast

2016-08-12

cmm解释器实现了基本语法和函数及for循环

1、 本次实验的目的是:设置开发出一个可以对cmm语言进行正确编译结实执行的解释器。 2、 实验所采用的开发语言为:Java语言 3、 实验所采用的开发工具是Eclipse Mars.1 4、 实验开发中需要用到的数据结构:四叉树、链表、集合。

2016-01-14

空空如也

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

TA关注的人

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