2017年11月13日

Android NDK开发篇:Java与原生代码通信(原生方法声明与定义与数据类型)

摘要: Java与原生代码通信涉及到原生方法声明与定义、数据类型、引用数据类型操作、NIO操作、访问域、异常处理、原生线程 1、原生方法声明与定义 关于原生方法的声明与定义在上一篇已经讲一点了,这次详细分析一下。根据javah自动生成的头文件,可以看出原生方法的声明和定义,例如: JNIEXPORT jst 阅读全文

posted @ 2017-11-13 19:35 kenny.wmh 阅读(129) 评论(0) 推荐(0) 编辑

Android NDK开发篇:Java与原生代码通信(数据操作)

摘要: 虽然说使用NDK可以提高Android程序的执行效率,但是调用起来还是稍微有点麻烦。NDK可以直接使用Java的原生数据类型,而引用类型,因为Java的引用类型的实现在NDK被屏蔽了,所以在NDK使用Java的引用类型则要做相应的处理。 一、对引用数据类型的操作 虽然Java的引用类型的实现在NDK 阅读全文

posted @ 2017-11-13 16:12 kenny.wmh 阅读(222) 评论(0) 推荐(0) 编辑

2017年11月10日

DirectByteBuffer实现原理分析

摘要: 1.创建DirectByteBuffer Direct ByteBuffer是通过JNI在Java虚拟机外的内存中分配了一块(所以即使在运行时通过-Xmx指定了Java虚拟机的最大堆内存,还是可能实例化超出该大小的Direct ByteBuffer),该内存块并不直接由Java虚拟机负责垃圾收集. 阅读全文

posted @ 2017-11-10 17:47 kenny.wmh 阅读(2775) 评论(0) 推荐(0) 编辑

2017年10月25日

C/C++ 结构体字节对齐

摘要: 在用sizeof运算符求算某结构体所占空间时,并不是简单地将结构体中所有元素各自占的空间相加,这里涉及到内存字节对齐的问题。从理论上讲,对于任何 变量的访问都可以从任何地址开始访问,但是事实上不是如此,实际上访问特定类型的变量只能在特定的地址访问,这就需要各个变量在空间上按一定的规则排列, 而不是简 阅读全文

posted @ 2017-10-25 17:08 kenny.wmh 阅读(436) 评论(0) 推荐(0) 编辑

Android应用开发SharedPreferences存储数据的使用方法

摘要: SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的就是一个key-value(键值对)。SharedPreferences常用来存储一些轻量级的数据. 阅读全文

posted @ 2017-10-25 16:31 kenny.wmh 阅读(143) 评论(0) 推荐(0) 编辑

2017年10月23日

Android 运行C可执行程序

摘要: 编译带可在Android平台执行的asl_kv_db_test程序 1./abtorw build -t android -a armeabi-v7a -c release -DFOR_TESTER=true 2.拷贝到/data/local/tmp目录 adb push /asl_kv_db/bu 阅读全文

posted @ 2017-10-23 18:20 kenny.wmh 阅读(209) 评论(0) 推荐(0) 编辑

NAT路由器打洞原理

摘要: 什么是打洞,为什么要打洞 由于Internet的快速发展 IPV4地址不够用,不能每个主机分到一个公网IP 所以使用NAT地址转换。 下面是我在网上找到的一副图 一般来说都是由私网内主机(例如上图中“电脑A-01”)主动发起连接,数据包经过NAT地址转换后送给公网上的服务器(例如上图中的“Serve 阅读全文

posted @ 2017-10-23 10:45 kenny.wmh 阅读(294) 评论(0) 推荐(1) 编辑

2017年9月29日

AndroidStudio-快捷键

摘要: 格式化代码 Windows: Ctrl + Alt +L (Ctrl +Shift+F 无效) Mac: OPTION + CMD + L 阅读全文

posted @ 2017-09-29 16:05 kenny.wmh 阅读(115) 评论(0) 推荐(0) 编辑

2017年9月26日

C++ 获取函数耗时

摘要: C++ 记录耗时 Java 记录耗时 阅读全文

posted @ 2017-09-26 20:07 kenny.wmh 阅读(2234) 评论(0) 推荐(0) 编辑

2017年9月18日

top命令解析

摘要: top命令解析 在进压测,排查性能问题时,我们需要通过各种命令对系统情况进行检查排错,最常用的命令即是 top,通过对 top 信息的分析与处理,能够排查掉大部分的性能瓶颈问题 top 命令是系统自带的系统排查命令 每一行都显示了不同的系统信息 先来看第一行 第一行的数据通过 也可以拿到同样的数据 阅读全文

posted @ 2017-09-18 11:17 kenny.wmh 阅读(672) 评论(0) 推荐(0) 编辑

2017年9月15日

Simple16 字符压缩

摘要: 阅读全文

posted @ 2017-09-15 14:54 kenny.wmh 阅读(394) 评论(1) 推荐(0) 编辑

2017年9月13日

Lucene 基础数据压缩处理

摘要: Lucene 为了使的信息的存储占用的空间更小,访问速度更快,采取了一些特殊的技巧,然 而在看 Lucene 文件格式的时候,这些技巧却容易使我们感到困惑,所以有必要把这些特殊 的技巧规则提取出来介绍一下。 在下不才,胡乱给这些规则起了一些名字,是为了方便后面应用这些规则的时候能够简单, 不妥之处请 阅读全文

posted @ 2017-09-13 18:10 kenny.wmh 阅读(512) 评论(0) 推荐(0) 编辑

Lucene 基础类型

摘要: Lucene 索引文件中,用一下基本类型来保存信息:1. Byte:是最基本的类型,长 8 位(bit)。2. UInt32:由 4 个 Byte 组成。3. UInt64:由 8 个 Byte 组成。4. VInt: " 变长的整数类型,它可能包 多个 Byte,对于每个 Byte 的 8 位,其 阅读全文

posted @ 2017-09-13 18:04 kenny.wmh 阅读(141) 评论(0) 推荐(0) 编辑

2017年8月30日

Android中Log信息的输出方法

摘要: 第一步:在对应的mk文件中加入:LOCAL_LDLIBS:= -llog第二步:在要使用LOG的cpp文件中加入:#include <android/log.h>#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,"keymatch", _ 阅读全文

posted @ 2017-08-30 14:51 kenny.wmh 阅读(4521) 评论(0) 推荐(0) 编辑

C printf 字符串格式化

摘要: %a 浮点数、十六进制数字和p-记数法(C99) %A 浮点数、十六进制数字和p-记法(C99) %c 一个字符 %d 有符号十进制整数 %e 浮点数、e-记数法 %E 浮点数、E-记数法 %f 浮点数、十进制记数法 %g 根据数值不同自动选择%f或%e. %G 根据数值不同自动选择%f或%e. % 阅读全文

posted @ 2017-08-30 14:41 kenny.wmh 阅读(318) 评论(0) 推荐(0) 编辑

NDK编译可执行文件在Android 中运行显示error: only position independent executables (PIE) are supported.失败问题解决办法。

摘要: 由于使用了NDK编译的可执行文件在应用中调用,在Android 7.0上的运行情况发现,当运行该可执行文件时,报如下错误: error: only position independent executables (PIE) are supported. PIE这个安全机制从4.1引入,但是Andr 阅读全文

posted @ 2017-08-30 10:24 kenny.wmh 阅读(304) 评论(0) 推荐(0) 编辑

2017年8月1日

float与double的范围和精度

摘要: float与double的范围和精度 1. 范围 float和double的范围是由指数的位数来决定的。 float的指数位有8位,而double的指数位有11位,分布如下: float: 1bit(符号位) 8bits(指数位) 23bits(尾数位) double: 1bit(符号位) 11bi 阅读全文

posted @ 2017-08-01 14:56 kenny.wmh 阅读(125) 评论(0) 推荐(0) 编辑

2017年7月31日

C++字符串常量跨平台编译问题

摘要: C++字符串常量跨平台编译问题(与字符串编码相关),有需要的朋友可以参考下。 1. 问题 在C++代码中,给一个string类型的变量赋值一个中文字符串常量,例如: string s = "中文字符串" 变量s中保存的字节内容是什么?如果源文件的编码格式转换了,比如从GB2312转换为UTF-8,变 阅读全文

posted @ 2017-07-31 20:13 kenny.wmh 阅读(536) 评论(0) 推荐(0) 编辑

2017年4月7日

Git统计代码变化率

摘要: 统计2017-03-01到2017-03-31代码变更率 代码统计命令参考:git log --pretty=tformat: --since ==2017-03-01 --until=2017-03-31 --numstat | gawk '{ add += $1 ; subs += $2 ; l 阅读全文

posted @ 2017-04-07 15:34 kenny.wmh 阅读(340) 评论(0) 推荐(0) 编辑

2017年3月22日

Grep 命令

摘要: grep命令 1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。 2.格式grep [options] 3.主 阅读全文

posted @ 2017-03-22 12:28 kenny.wmh 阅读(177) 评论(0) 推荐(0) 编辑

2017年3月21日

App调试的几个命令实践

摘要: 1.logcat命令这个命令最简单常用,可查看帮助 第一种事例:adb logcat > /sdcard/mylogcat.txt 第二种事例:adb logcat > D:/Temp/1.txt(1.txt必须存在,才能写入logcat内容) 第三种事例: adb shell logcat | g 阅读全文

posted @ 2017-03-21 21:05 kenny.wmh 阅读(253) 评论(0) 推荐(0) 编辑

TempCache 临时内存缓存器

摘要: TempCache.h TempCache.c 阅读全文

posted @ 2017-03-21 20:27 kenny.wmh 阅读(1148) 评论(0) 推荐(0) 编辑

自定义C语言CVector

摘要: CVector.h CVector.c 阅读全文

posted @ 2017-03-21 20:23 kenny.wmh 阅读(1913) 评论(0) 推荐(0) 编辑

Android JNI 启动线程,并设置线程名称

摘要: #include <Jni.h> #include <string.h> #include <stdint.h> #include "android/log.h" #include<unistd.h> #include<pthread.h> void *thread_fun(void* arg) { 阅读全文

posted @ 2017-03-21 19:56 kenny.wmh 阅读(2103) 评论(0) 推荐(0) 编辑

int、long、long long取值范围

摘要: unsigned int 0~4294967295 int 2147483648~2147483647 unsigned long 0~4294967295long 2147483648~2147483647long long的最大值:9223372036854775807long long的最小值 阅读全文

posted @ 2017-03-21 12:23 kenny.wmh 阅读(203) 评论(0) 推荐(0) 编辑

2017年3月13日

定义Anroid SO崩溃位置

摘要: E:\android-ndk-r13b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin> arm-linux-androideabi-addr2line.exe -e E:\armeabi-v7a\obj\libSea 阅读全文

posted @ 2017-03-13 16:12 kenny.wmh 阅读(229) 评论(0) 推荐(0) 编辑

导航