自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(82)
  • 资源 (1)
  • 收藏
  • 关注

原创 Rxjava3 创建Obervable被观察者 的相关操作符

1、create /** * creat是一个比较原始的创建Obserable的操作符 */ private static void test01(){ //正常调用形式// Observable.create(new ObservableOnSubscribe<String>() {// @Override// public void subscribe(@NonNull Obs

2020-10-28 09:40:32 471 1

原创 Rxjava3 的调用方法尝鲜

1、非常普通的观察者和被观察者调用方式:public static void main(String[] args) { //被观察者 Observable myObservable= Observable.create(new ObservableOnSubscribe<String>() { @Override public void subscribe(@NonNull ObservableEmitt.

2020-10-27 15:35:10 233

原创 通过自定义的 Array 类来实现变长数组

通过自定义的 Array 类来实现变长数组。

2017-05-31 14:42:33 844

原创 C++中定义动态数组

C/C++ 规定,数组一旦定义后,它的长度就不能改变了;换句话说,数组容量不能动态地增大或者减小。这样的数组称为静态数组(Static array)。静态数组有时候会给编码代码不便,我们可以通过自定义的 Array 类来实现动态数组(Dynamic array)。所谓动态数组,是指数组容量能够在使用的过程中随时增大或减小。

2017-05-25 18:23:57 4652

原创 Android编译时间优化

Android编译时间优化

2017-05-24 16:18:27 2666

原创 Java中OutOfMemoryError(内存溢出)的三种情况及解决办法

在解决java内存溢出问题之前,需要对jvm(java虚拟机)的内存管理有一定的认识。

2017-05-20 10:34:28 339

转载 Android 多线程 线程池原理 封装线程池

我自己理解看来。线程池顾名思义就是一个容器的意思,需要注意的是,每一个线程都是需要CPU分配资源去执行的。如果由于总是new Thread()开启一个线程,那么就会大量的消耗CPU的资源,导致Android运行变慢,甚至OOM(out of memory),因而Java就出现了一个ThreadPoolExecutor来管理这些线程。控制最多的线程数maximumPoolSize,核心线程数co

2017-05-19 17:59:25 7050 3

原创 C ++中const指针类型区分技巧

常量(Constant)C++中的const变量必须在定义的时候赋初值。const 指针也需要赋初值。const结合指针*有一下三种常见类型:1、const int* a; a是一个指向长整数的指针,整型数不可修改,但指针可以修改。所指向的值是常量。2、int* const a; a是一个指向整型数的常指针,指向的数可以i修改,但指针不可以修改。地址值是常量的指针。

2017-05-18 16:09:18 405

原创 GCC常用命令总结

gcc 常用命令大全

2017-05-18 14:19:46 255

转载 Java总结篇系列:Java多线程(一)

Java总结篇系列:Java多线程(一)

2017-05-15 14:48:50 231

转载 java4种线程池的使用

java4种线程池的使用

2017-05-15 14:44:13 266

原创 android压力测试命令monkey详解

一、Monkey 是什么?Monkey 就是SDK中附带的一个工具。二、Monkey 测试的目的?:该工具用于进行压力测试。 然后开发人员结合monkey 打印的日志 和系统打印的日志,结局测试中出现的问题。三、Monkey 测试的特点?Monkey 测试,所有的事件都是随机产生的,不带任何人的主观性。四、Monkey 命令详解1).标准的monkey

2017-05-11 16:59:19 5298 1

原创 外观模式

外观模式:将一个或数个了的复杂的一切都隐藏起来,只显示一个干净美好的外观。也就是简化接口。

2017-05-10 23:23:50 183

转载 C++必读书籍推荐

手册类 – 所有级别C++程序设计语言(The C++ Programming Language) 作者:Bjarne Stroustrup(更新到C++11) C++之父写的经典C++书籍。内容覆盖C++的所有东西,从语言内核到标准库、编程范式和语言哲学(这使得最新版突破1千页)。2013年5月出版的第四版涵盖了C++11的内容。电子书:第三版(中文)、第四版(英文)

2017-05-08 18:19:44 633

原创 一个动态数组的例子C++

C/C++ 规定,数组一旦定义后,它的长度就不能改变了;换句话说,数组容量不能动态地增大或者减小。这样的数组称为静态数组(Static array)。静态数组有时候会给编码代码不便,我们可以通过自定义的 Array 类来实现动态数组(Dynamic array)。所谓动态数组,是指数组容量能够在使用的过程中随时增大或减小。下面这段代码虽然有点长,但它是一个典型的使用异常的场景,请大家耐

2017-04-21 18:34:37 1761

原创 C++学习总结

C++学习总结

2017-03-23 18:37:41 300

原创 C语言getch();

定义:conio.h文件#include #include #include int getch (void){ int ch; struct termios oldt, newt; tcgetattr(STDIN_FILENO, &oldt); newt = oldt; newt.c_lflag &=

2017-03-15 16:28:05 545

转载 C语言文件加密解密软件

文件加密解密是常用的一个功能,可以很好的保护你的隐私内容;本软件简单的实现了文件加密解密的功能。为了防止别人随意使用软件,软件本身也有一个密码,必须输入密码才能使用软件。软件的功能有:加密文件:打开需要加密的文件,输入密钥,将加密的文件保存;解密文件:打开需要解密的文件,输入密钥,将解密的文件保存;修改密码:可以临时修改软件的使用密码,但是软件重启后会被重置;退出程序:完成

2017-03-10 14:42:19 3654 2

转载 Android Studio NDK 入门教程--JNI签名验证防止恶意调用

概述根据前面的文章来看,JNI其实只实现了关键代码加密,如果别人拿到了你的Java Native方法定义和对应的so,即可完成对你so里方法的调。因为native 方法和类都是不能混淆的,混淆了方法的函数名就变了,调用的时候就找不到方法了,因此如果反编译APK可以非常容易拿到相关文件和代码。 显然我们需要一些手段来在JNI的验证请求接口的是不是我们的程序。签名验证的原理

2017-03-09 22:55:35 631

原创 JNI c调用Java 返回值为String

Java定义: public String getSignatureInfo() { try { PackageInfo packageInfo = mContext.getPackageManager().getPackageInfo(mContext.getPackageName(), PackageManager.GET_SIGNATUR

2017-03-08 20:26:29 3312 1

原创 Android JNI 调用常见问题汇总

1、androidStudio使用自定义Android.mk文件 buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro

2017-03-07 21:08:42 399

转载 基于 Android NDK 的学习之旅-----Android.mk 介绍

一个Android.mk file用来向编译系统描述你的源代码。具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次。你可以在每一个Android.mk file中定义一个或多个模块,你也可以在几个模块中使用同一个源代码文件。编译系统为你处理许多细节问题。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪

2017-03-07 11:52:47 192

原创 查看签名指纹MD5和SHA1值(应用签名)

AndroidStudio中自带了终端Terminal,我们可以直接在里面进行操作。如下图:在这里首先我们得进入到C盘的,用户的.android路径下。其它操作同第一个种方法一样,如下:当然在这里我们只是获取的调试用的MD5和SHA1!获取apk中的MD5和SHA1,前提是你知道密匙:1.首先先解压apk,获取到其中的META-INF文件夹底

2017-03-07 10:29:46 3191

原创 Java内存管理的小技巧

尽可能多地掌握Java的内存回收机制,垃圾回收机制是为了更好地管理java虚拟机的内存。这样才能提高java程序的运行性能。1、尽量使用直接量当需要使用字符串,还有Byte 、Short、Integer、Long、Float、Double、Boolean、Character包装类的实例时,程序不应该采用new的方式来创建对象。而应该直接采用直接量来创建他们。例如,程序需要“hell”字

2017-03-04 09:40:57 634

原创 C语言--typedef 和 #define 的区别

typedef 在表现上有时候类似于 #define,但它和宏替换之间存在一个关键性的区别。正确思考这个问题的方法就是把 typedef 看成一种彻底的“封装”类型,声明之后不能再往里面增加别的东西。1) 可以使用其他类型说明符对宏类型名进行扩展,但对 typedef 所定义的类型名却不能这样做。如下所示:#define INTERGE intunsigned INTERG

2017-03-03 16:31:26 324

原创 用C语言对数据或文件内容进行加密

数据加密解密的原理也很简单,就是使用异或运算。请先看下面的代码:#include #include int main(){ char plaintext = 'a'; // 明文 char secretkey = '!'; // 密钥 char ciphertext = plaintext ^ secretkey; // 密文 char decode

2017-03-03 16:01:40 8009

原创 C语言学习笔记-结构体、共用体、枚举

枚举类型的定义形式为:enum typeName{ valueName1, valueName2, valueName3, ...... };注意最后的;不能少。列出一个星期有几天:enum week{ Mon, Tues, Wed, Thurs, Fri, Sat, Sun };可以看到,我们仅仅给出了名字,却没有给出名字对应的值,这是因为枚举值默认从 0

2017-03-03 15:42:46 636

原创 设计模式-适配器模式

适配器模式对于Android开发的同志们再熟悉不过了,列表中经常会设计到adapter。但是如果你只知道怎么用,不会自己造一个适配器,那么你还需要好好研究一下。适配器模式的定义:将一个类的接口,转换为客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间。

2017-03-02 00:25:52 267

原创 设计模式-命令模式

有这样一种场景:客户创建了一个命令对象(来杯cafe),命令对象存储在调用者(服务员)中。稍后客户要求调用者(服务员)执行命令。该命令就会被执行(端来一杯cafe)或者丢弃(不搭理客户)。能够适应这样一种情景的,大致就是命令模式。

2017-03-01 10:26:08 240

原创 C语言学习笔记-指针

对星号*的总结在我们目前所学到的语法中,星号*主要有三种用途:表示乘法,例如int a = 3, b = 5, c;  c = a * b;,这是最容易理解的。表示定义一个指针变量,以和普通变量区分开,例如int a = 100;  int *p = &a;。表示获取指针指向的数据,是一种间接操作,例如int a, b, *p = &a;  *p = 100;  b = *p;。

2017-02-28 17:39:46 374

原创 设计模式-单例模式

面试的时候面试经常问,你知道哪些设计模式?一般开发者回答的项目中肯定会有单例模式?要是面试官解过回答继续问单例模式有几种,各有什么优劣呢?要是你能回答上来肯定会锦上添花。这节我们就来认识一下几种单例模式的优劣。

2017-02-28 10:52:47 241

原创 设计模式-工厂模式

除了使用new操作符之外,还有更多制造对象的方法。而且实例化这个操作不应该总是公开地进行。初始化操作过程经常会造成“”“耦合”问题。工厂模式恰巧可以帮你从复杂的依赖中解脱出来。

2017-02-24 20:24:17 309

原创 Canvas画图设置渐变色

1、线形图设置填充色为渐变色方法:/** * Draws the provided path in filled mode with the provided drawable. * * @param c * @param filledPath * @param drawable */protected void drawFilledPath(Canvas c, Path fil

2017-02-24 00:27:23 6516 1

原创 Android studio 设置豆绿色

1、设置编辑部分的背景颜色2、设置console的背景颜色

2017-02-24 00:15:27 1147

原创 图片压缩到指定尺寸和大小

第一步:/** * 对上次的图片进行压缩,压缩在100kb以内 * * @param image * @return */ private Bitmap compressImage(Bitmap image) { ByteArrayOutputStream baos = new Byt

2017-02-22 22:46:52 2756

原创 Android MD5加密

/** * 文件名称统一为16位MD5保存和查询 * * @param s * @return */ private static String strToMD5(String s) { char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6',

2017-02-22 17:20:56 676

原创 Android AES加密解密

定义AES工具类public class AES { /** * AES加密 * @param seed 为密钥 * @param cleartext 需要加密的内容 * @return * @throws Exception */ public static String encrypt(String seed,

2017-02-22 17:14:46 325

原创 Android DES加密解密

public class DES { //初始化向量,随意填充 private static byte[] iv = {1,2,3,4,5,6,7,8}; /** * DES加密 * @param encryptString 为原文 * @param encryptKey 为密钥 * @return * @throws Ex

2017-02-22 17:12:12 368

原创 Android 加密解密-开篇

Android中的加密解密分为基于Java和基于C/C++两类,几乎C/C++有的加密算法在Java中都实现了。加密算法大多是公开的,Java反编译也无所谓,可能做成C/C++会更高效一些。出于各种考虑将算法做成C/C++可能会更安全一些。在以后JNI调用部分,会更新相关C/C++加密算法。本篇是对Android中主要的加密方法的总结,之后篇幅中会结合代码详细介绍加密算法。对每个算法代码,我都会实

2017-02-22 17:11:02 584

原创 Android 主要涉及的安全问题调研

Android主要涉及的安全问题,与Android的系统架构相对应,如图:应用层涉及代码的安全与接入权限;应用框架层涉及数字证书问题;Android系统库与运行时一层主要涉及网络安全、数据库安全、虚拟机安全;Linux内核层涉及文件的访问控制;其中Android最重要的安全涉及虚拟机的沙箱和权限。1、代码安全因为Android的源代码源于Java,Java有易于反编译的隐患。为

2017-02-22 12:01:56 633

XMPP学习宝典

总结多年IM及时通讯方面的知识,收集在APP中方面IM开发爱好者深化学习。

2014-11-25

空空如也

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

TA关注的人

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