
java
jian_cheng_90
strive to be better
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java 存储方式详解及示例
java的数据存储区域有六种:(1)寄存器: 寄存器是最快的存储区,这是因为它位于不同于其它存储区额地方——处理器的内部。但是寄存器的数量十分有限,所以是由编译器根据需求进行自动分配的,不能由程序来控制。 (2)栈(Stack): 栈的速度仅次于寄存器,因为它位于RAM中。栈中存放基本数据类型的变量数据和对象的引用。由于栈中需要频繁地上下移动指针,此时便需要确切地知道每个对象的生命周期,这一约原创 2015-04-19 00:35:55 · 527 阅读 · 0 评论 -
Android native crash 日志分析
NDK的常见异常NDK编译生成的.so文件作为程序的一部分,在运行发生异常时同样会造成程序崩溃。不同于Java代码异常造成的程序崩溃,在NDK的异常发生时,程序在Android设备上都会立即退出,即通常所说的闪退,而不会弹出“程序xxx无响应,是否立即关闭”之类的提示框。NDK是使用C/ Cpp来进行开发的,熟悉C/Cpp的程序员都知道,指针和内存管理是最重要也是最容易出问题的地方,稍有不慎就...原创 2018-09-20 22:59:48 · 1467 阅读 · 1 评论 -
Android NDK - JNI 与 Java 接收及修改数组
JNI 取用 Java 数组即将已经在Java中产生的数组数值传递到native去处理并返回Java层处理结果,==不会修改Java中该数组Field的数值==,比如应用场景: - Java层通过Camera获取的帧数据传递给native结合opencv进行处理,并返回(图像预处理/检测/分类等)结果; - 在Java业务层产生的数据,需要进行复杂的运算(比如加密/解密等); - ……...原创 2018-05-26 23:03:40 · 2050 阅读 · 0 评论 -
Android 内存泄漏 - Animator的使用与释放
Animator 导致泄漏在属性动画中如果定义为无限循环,如果在Activity中播放这类动画并且在其退出(生命周期结果前)未停止动画,造成内存泄漏。举例说明假设有如下无限循环动画:public class LeakActivity extends AppCompatActivity { private TextView textView; private...原创 2018-04-04 16:45:11 · 10111 阅读 · 0 评论 -
Android 内存泄漏 - 不要用static修饰控件
LeakCanary 工具集成LeakCanary是android平台用于内存泄漏检测的开源工具,使用方法十分简单,其github地址: LeakCanary Github内存泄漏总结 Avoid using non-static inner classes in an activity if instances of the inner class could outliv...原创 2018-04-04 15:24:17 · 5479 阅读 · 0 评论 -
Android Studio在Gradle中调用cmd脚本
Gradle中调用cmd需要在Gradle编译时,调用某些脚本进行文件操作,比如:头文件更新,或者动态链接库文件的更新等,需要借助脚本文件,并且不需要手动运行,那么如何使用Gradle呢?如下代码可以实现在执行Gradle编译时连续运行两条命令: exec { workingDir '../' commandLine 'cmd', '...原创 2018-03-22 13:48:58 · 4355 阅读 · 0 评论 -
Android NDK - JNI中回调Java中的函数及函数签名
在实际应用中,除了在JNI层对部分功能进行C++的实现,同时还会有在JNI中对Java函数的调用以实现某种逻辑的联通。 在JNI中回调Java函数,实际上是通过反射机制来实现的,通过反射机制取得目标函数所在的类,以及其名称,通过NDK提供的接口在JNI层进行调用。JNI中调用Java函数的栗子TestFunction.javapackage com.test.jni;public class原创 2018-01-14 00:48:15 · 1294 阅读 · 0 评论 -
Android Uri解析4.4及以上版本兼容
在android level 19之后,由于官方更新了Uri的格式,因此需要采用最新的Uri解析方式以适配, 如果还采用Android 4.4之前的解析方法(实际上目前网络上大部分还是这种方式)就会出现空指针的问题,实际上就是因为格式不匹配导致的解析失败。参考实现如下,可以直接作为工具类加入现有代码中。/** * get the image/file path, able to run on原创 2018-01-02 16:18:30 · 786 阅读 · 0 评论 -
Tess4J OCR简单使用教程
Tess4J简介Tesseract-OCR支持中文识别,并且开源和提供全套的训练工具,是快速低成本开发的首选。而Tess4J则是Tesseract在Java PC上的应用。在英文和数字识别中性能还是不错的,但是在中文识别中,无论速度还是识别率还是较弱,建议有条件的话,针对场景进行训练,会获得较好结果,本文仅对目前Tess4J的用法进行介绍。使用教程1.去Tess4J官网下载源码包前往:Tess4J原创 2017-06-26 00:38:01 · 10165 阅读 · 11 评论 -
批量操作资源或控件 - 使用Resources.getIdentifier获取id
背景介绍在实际开发过程中,有时会遇到需要批量创建控件、批量读取并处理drawable文件,如果是通过写死xml并挨个从drawable中取资源那就太慢太繁琐了,那么有没有想过,针对结构化的drawable资源或者xml中的控件id,可以通过构建字符串数组的方式实现单行循环操作呢?下面介绍两种方法用于批量读取drawable资源文件和xml中的控件。解决方案不管是通过findViewById获取xml原创 2017-07-25 00:00:03 · 3005 阅读 · 0 评论 -
设计模式及在Android中的应用 - 单例模式
首先了解一些单例模式的概念。 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 这样做有以下几个优点 • 对于那些比较耗内存的类,只实例化一次可以大大提高性能,尤其是在移动开发中; • 保持程序运行的时候该中始终只有一个实例存在内存中 有如下经典的实现方式:public class Singleton { private static volatile原创 2017-05-19 23:55:30 · 405 阅读 · 0 评论 -
android插入SQLite中文乱码问题
问题描述:Android开发中经常会遇到从txt、csv等文件中将数据加载到SQLite数据库中,而时常这些文件中都包含中文字符,如果不对编码作明确制定,则会采用默认的编码方式,此时便可能导致插入到数据库中包含中文的字段变成乱码,影响后续操作。解决方法:需要在读取文件时指定编码,如果包含中文,则需要指定为GB2312编码方式,如下所示:try { BufferedReader br = new B原创 2016-05-23 23:31:43 · 4402 阅读 · 2 评论 -
Java操作Excel文件以及将xls/xlsx转为csv文件
Java 读写Excel文件以及xls、xlsx文件转化为csv文件的陷阱原创 2016-05-23 23:56:59 · 22971 阅读 · 6 评论 -
Android-Studio Gradle Build Flavor 使用小结
Build Flavor 作用在一个分支上,编译不同的版本(包名/应用图标/debug/release)多个分支代码片段/so库,合并到同一分支进行维护,并且可以根据不同的Build Variant 进行选择性编译;使用方法比如现在有如下需求:第一维度是高通835/845平台(不同平台可能使用不同的DSP相关的so)第二维度是算法提供商,以人脸检测为例提供商有Se...原创 2019-07-08 10:51:50 · 3217 阅读 · 0 评论