自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Josephus问题最优解

问题描述 n个人排成一圈,编号0~n-1,确定一个数字m,从第一个人开始报数,数到m的那个人出圈,然后重新从出圈的下一个人开始报数,直到m再次出圈,最后剩一个人时,他的号码是多少? 公式 f(1) = 0; f(n) = (f(n-1) + m)%n; #include<iostream...

2020-05-30 00:26:56 11 0

原创 Android Root文件路径

/sbin/su /system/bin/su /system/xbin/su /system/sbin/su /vendor/bin/su /su/bin/su /system/sd/xbin/su /system/bin/failsafe/su /system/bin/failsafe/su ...

2020-05-26 14:32:20 37 0

原创 移动网络整理

LTE Long Term Evolution,即长期演进技术,是电信中用于手机及数据终端的高速无线通讯标准,为高速下行分组接入(HSDPA)过渡到4G的版本,俗称为3.9G。 4G eHRPD cdma的演进技术,大概就是3.75G EDGE (Enhanced Data Rate...

2020-03-04 16:39:55 279 0

原创 JDK版本对应major version

JDK版本 major version 1.1 45 1.2 46 1.3 47 1.4 48 1.5 49 6 50 7 51 8 52 ———————————————— 版权声明:本文为CSDN博主「hanchao5272」的原创文章,遵循 CC 4.0...

2019-12-24 11:17:54 60 0

原创 Android 重打包失败解决方案

如果apktool b 打包失败显示的log 是 brut.androlib.Androlib.buildResourcesFull 资源打包失败,则原因是缺失基于Android6.0的framework-res.apk文件 解决方案 1.找一台root过的Android6.0手机 2.pu...

2019-11-30 18:19:57 94 0

原创 ADB 实现Android Http 代理

ADB 实现Android Http 代理 设置代理 adb shell settings put global http_proxy ip_address:port 删除代理 adb shell settings delete global http_proxy adb shell setti...

2019-11-06 11:07:21 268 0

原创 App反抓包反fiddler证书小技巧

在抓包某些应用的时候,发现虽然使用了JustTrustMe,干掉了证书校验,还是抓包失败。在分析过程中发现对方限制证书,故此记录。 <application android:theme="@style/BaiduMapTheme" android:label=&...

2019-09-19 12:47:01 516 0

原创 Java源码阅读 Object

Object 是Java类层次结构的根类。所有非基本类型(包括数组)都直接或间接继承自该类。 重要函数 static JNINativeMethod methods[] = { {"hashCode", "()I", ...

2019-08-13 23:43:17 64 0

原创 Android Binder源码阅读

作为Android 主要的IPC方式Binder, 其实现了IBinder接口,通过代理模式,parcelable序列化反序列操作,实现了RPC,即跨进程调用 1.IBinder接口 首先Binder 实现了IBinder接口,故先来看看IBinder接口,IBinder代码只有四十行功能比较清...

2019-07-26 18:59:41 165 0

原创 Git自动输入账户名密码

入职新公司,公司的gitlab为方便外网访问打了洞,得用http请求,上传公钥没用。故记录一下这个保存账户名密码的git命令 $ git config credential.helper store 之后请求输入过密码后,账户密码就会自动保存,以后就不用输入密码了。 密码明文记录在 $ fil...

2019-07-15 21:42:00 601 0

原创 Android Message源码阅读

Message是作为Messenger或者MessageQueue中的信息载体,故此阅读分析一下其代码 1.实现的接口 Message实现了Parcelable接口,以使其在能够在进程间传递。 2.字段 主要字段是 what 用于标识信息内容 arg1,arg2 可以消耗很低的携带整形数据 r...

2019-05-29 21:42:51 87 0

原创 Android Messenger使用及分析

Messenger是基于AIDL实现的轻量级IPC方案。 1.使用 1.1服务端 接受信息的服务端需要实现一个Handler用于处理到的信息 private static class MessengerHandler extends Handler { @Override...

2019-05-29 21:16:26 884 0

原创 Android AIDL的使用及分析

AIDL:Android Interface Definition Language,即Android接口定义语言。Android系统中的进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信。 为了使其他的应用程序也可以访问本应用程序提供的服务,Android系统采用了远程过程调...

2019-05-29 17:18:56 75 0

原创 Android源码阅读 ThreadLocal

ThreadLocal 是一个线程内部的数据存储类,通过它可以在指定的线程中存储数据,数据存储后,只有在该存储线程中可以获取该数据,其他线程无法获得该数据。在阅读Looper,ActivityThread以及AMS中都用到了ThreadLocal。 版本代码是android-28 构造 Th...

2019-05-22 22:19:17 49 0

原创 C++滑动窗口算法

滑动窗口算法在处理一些字符串问题时,可以把复杂度降为O(n)。 题目 给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引。 字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100。 说明: 字母异位词指字母相同,但排...

2019-05-01 21:17:19 2043 0

原创 基于快慢指针链表求环

快慢指针可以在O(1)的常数内存空间里完成链表环形判断,时间复杂度是O(n)。思路大概是 慢指针每次前进一步,快指针前进两步,党慢指针走完环形一圈时,快指针刚好走完两圈,两个指针相遇,则判断有环。 #include<stdio.h> struct ListNode { int v...

2019-04-30 11:46:22 79 0

原创 Android逆向 动态调试smali

动态调试smali应该是每个Android逆向工程师的基本功,其原理其实就是改包为debuggable,再用debuggable启动应用,基于JDWP协议端口转发调试应用,JDB Client(被调试程序)在被调试时会启动jdwp线程通过JDWP协议与JDB Server(调试端)进行通信,JDW...

2019-04-17 12:16:05 185 0

原创 JNI方法笔记4 动态注册

动态注册的核心思想是找到对应的class,然后在JavaEnv指针中调用RegisterNatives(clazz, getMethods, numMethods)函数进行注册。 注 静态注册的缺点 需要编译所有声明了native函数的Java类,为每个生成的class文件用javah生成一个...

2019-04-16 12:33:18 50 0

原创 C++ pair笔记

c++中的结构模板,定义在头文件中,提供一个包含2个数据成员的结构体模板。继承与_Pair_base结构体模板。通过first,second访问2个成员,有 operator= 和 swap 方法。 1.模板 template <class T1,class T2> struct p...

2019-04-10 20:10:21 238 0

原创 C++ string笔记

CPP 标准库类型string 标准库类型string表示可变长的字符序列,包含于string头文件,定义在std命名空间中 1.引入 ‘’’ #include using std::string; ‘’’ 2.初始化方法 string s1 //默认初始化, S1是一个空字符串 string...

2019-04-08 18:20:13 602 0

原创 C++ queue笔记

FIFO队列,queue 是一种容器适配器,专门设计用于在FIFO上下文中操作(先进先出),其中元素插入容器的一端并从另一端提取。 queue 实现为容器适配器,它是使用特定容器类的封装对象作为其底层容器的类,提供一组特定的成员函数来访问其元素。元素被推入特定容器的“后面”并从其“前面” 弹出。 ...

2019-04-07 17:06:35 840 0

转载 C++ vector笔记

一、什么是vector? 向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。 二、容器特性 1.顺序序列 顺序容器中的元素按照严格的线性顺序排序。可...

2019-04-07 16:51:37 83 0

原创 JNI方法笔记3 异常

JNI方法笔记3 异常 1.捕获异常 在C++中 通过ExceptionOccurred函数捕获异常 然后通过ExceptionClear显式清楚异常 jthrowable ex; env->CallVoidMethod(instance, throwingMethodId); ex = e...

2019-04-04 17:07:33 58 0

原创 JNI方法笔记2 - C++中调用Java函数

JNI方法笔记2 - C++中调用Java函数 1.找到类 基于类名寻找类 env->FindClass(""); 基于实例找到类 env->GetObjectClass(instance); 2.访问域 // 访问实例域 jfieldID instanceFiel...

2019-04-04 16:46:13 160 0

原创 JNI个人笔记1

JNI方法记录 java声明lib.so static{ System.loadLibrary("lib"); } c++ 字符串 转 Java 字符串 env->NewStringUTF(“xxxx”); javah -classpath (class路径) ...

2019-04-04 13:50:41 48 0

原创 GNU Make 语法笔记

#ndk make 笔记记录 ndk-build:The shell script is the starting point of Android NDK build system. ndk-gfb: The shell script is GNU origin native component...

2019-04-04 11:36:36 129 0

原创 leetcode 记录235. 二叉搜索树的最近公共祖先(二叉搜索树特性)

leetcode 记录235. 二叉搜索树的最近公共祖先(二叉搜索树特性) 二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树...

2019-04-02 22:26:57 62 0

原创 Android APP执行su命令

import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; public class RootCommand { public static String run...

2019-03-14 20:27:48 1672 1

原创 Android签名命令记录

java -jar signapk.jar publickey privatekey input.apk output.apk 参数publickey表示公钥 参数private表示私钥 参数input.apk表示要签名的包 参数output.apk表示签名后输出的包

2019-03-13 09:07:51 218 0

原创 Python3 requests库的高级用法

整理requests库的使用,主要记录Seesion 对象的用法 1.创建session import requests session = requests.Session() response = session.get(url) 2.修改session的header s = reque...

2018-12-13 17:31:16 201 0

原创 Python3 整理requests库

最近爬虫项目接触得多,自己整理一下requests的接口 基本用法 requests.get(url,data="",headers=headers) get请求,上传参数字典data requests.post(url,data="",headers...

2018-12-13 17:14:07 77 0

原创 设计模式 9.Bridge模式

Bridge模式的作用在于将功能层次结构和实现层次结构分离开,方便两边做独立扩展。继承是强耦合,委托是弱耦合。 实现层次 DisplayImpl.java 定义实现的接口 package bridge; public abstract class DisplayImpl { publ...

2018-12-12 18:10:51 58 0

原创 设计模式 8.抽象工厂模式

工厂模式和抽象工厂模式的区别在于,工厂模式一个一个工厂对应生成一种产品,而抽象工厂模式在于可以一个工厂生产多种产品。 框架层 Item.java为元件父类 package abstractfactory.factory; public abstract class Item { pr...

2018-12-12 17:22:39 50 0

原创 设计模式 7.Builder 模式

Builder模式主要用于构建复杂结构的实例 主要的类是Builder类和Director类 1.Build抽象类声明方法规范 package builder; public abstract class Builder { public abstract void makeTitl...

2018-12-12 16:00:29 49 0

原创 设计模式 6.原型模式

原型模式主要用于1.对象种类繁多,无法整合到一个类中;2.难以根据类生成实例;3.想解耦框架与生成的实例。主要依赖于 clone方法和 Cloneable接口 1.构建复制功能的接口 Product.java 继承 Cloneable,这样才可以调用clone() use()是执行函数,具体执...

2018-12-12 15:28:29 43 0

原创 设计模式 5.单例模式

单例模式应该是每个开发必须知道的设计模式,也十分简单,指保证整个程序中只有一个实例。 1.私有化构造函数 如果外部可以调用构造函数,那么就无法保证单例 1.1 饱汉模式 私有化构造函数 Private, 内部提前初始化 一个 实例 package singleton; public clas...

2018-12-12 14:59:11 42 0

原创 设计模式 4.Factory Method 模式

工厂模式是用模板模式来构建生成实例的工厂。Factou

2018-12-12 14:36:28 57 0

原创 设计模式 3.Template Method模式

模板模式,其实比较常用,在采用类的思想编程时,一般都用到了模板模式 步骤 1.定义抽象父类 构建抽象方法 构建非抽象方法,非抽象方法调用抽象方法 2.继承父类编写子类 重写抽象方法,调用非抽象方法。实现减少开发量,统一模式的模板模式。 案例 AbstractDisplay.java ackag...

2018-12-12 14:21:39 58 0

原创 设计模式 2.适配器模式

适配器模式一般用于现有接口无法直接使用,需要适当变换之后才能继续使用。 Adapter 模式有以下两种 类适配器模式(使用继承的适配器) 对象适配器模式 (使用委托的适配器) 类适配器模式 Banner.java 真实的执行者,被适配的对象 package adapter.extend; ...

2018-12-12 14:06:06 46 0

原创 设计模式 1.Iterator模式

图解设计模式的笔记,Iterator模式用于在数据集合中按照循序遍历集合,这种循序可以由开发定义、设计、封装。 类说明 Aggregate 表示集合的接口 创建Iterator,该接口由需要被遍历的类实现 Iterator 遍历集合的接口 提供 next()函数 返回下一个集...

2018-12-12 11:56:02 61 0

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