自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 收藏
  • 关注

原创 SparseArray 理解

一、介绍SparseArray(稀疏数组) ; Android内部特有的api ; SparseArray更节省内存空间;android 提供的数据结构, 功能类似HashMap ; 与map不同的是key 只能是int ;二、使用SparseArray<Object> sparseArray = new SparseArray<>(0); sparseArray.put(0,null); sparseArray.put(1,"a

2021-10-17 19:22:14 426 1

原创 阻塞队列LinkedBlockingQueue

阻塞队列LinkedBlockingQueue 与平常接触的LinkedList 的最大不同之处就是LinkedBlockingQueue 支持阻塞添加与阻塞删除方法。阻塞添加阻塞添加是指当队列满时,阻塞加入线程,直到不满时才唤醒阻塞线程,才能执行加入操作。阻塞删除阻塞删除是指当队列为空时,阻塞删除线程,直到不为空才唤醒阻塞线程,才能执行删除操作。由此可见这不就是生产者消费...

2020-01-07 19:37:15 396

原创 线程池原理

多线程是开发常用的技术,Android 开发更是对UI 线程进行了限制,耗时操作必须放到子线程,new Thread 很简单就创建了一个子线程,但如果大型项目,很多地方都new Thread ,那么有一个问题就是我们将无法管理我的线程,大量的创建线程,占用过多资源,而且它们之间也会相互竞争,还有就是创建线程与线程执行完的销毁操作都是一部分系统开销。所以引入线程池很有意义。描述...

2020-01-06 11:37:33 197

原创 插件化学习之Hook 是怎么回事

最近在学插件化的东西,插件化提到了一个Hook 技术,发现Hook 这个词什么意思都不知道,经过研究学习后有了一定的理解,这里做一下对Hook 理解的笔记。下面通过一个例子来理解Hook ,启动一个没有在AndroidManifest.xml 注册的Activity;我们知道Android 的Activity 是需要在AndroidManifest.xml 注册的,如果没注册是不能创建成功...

2019-12-06 20:21:34 1128

原创 Android 8.0 Activity 启动流程

从Activity 的启动流程不仅可以更加的熟悉Activity 的相关知识点,还可以学习架构设计的思想,设计模式,大型项目代码结构。。,所以Activity 启动流程还是很值得看一看的。在应用层调用startActivity 后,会经过一系列的调用,经过进程间通信(IPC),调用到ActivityManagerService (AMS)的startActivity 方法,这样程序走到了系统服...

2019-12-03 17:55:34 1987

原创 插件化基础知识(反射,动态代理,类加载器)

Java 反射获得Class对象获取类的构造函数调用类的私有方法获取类的私有字段并修改值代理静态代理动态代理动态代理的简单应用类加载器类加载器分类双亲委派模型几个重要函数自定义ClassLoaderAndroid 类加载器PathClassLoaderDexClassLoaderJava 反射Java 反射机制在程序运行时,对...

2019-12-01 23:08:43 387

原创 Wireshark 抓包,TCP 的连接与断开

Wireshark是一个网络封包分析软件。帮你撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark 可以获取HTTP,也能获取HTTPS,但是不能解密HTTPS,只能帮你捕获包,没有密钥是看不懂HTTPS 的,HTTPS 可以使用Charles 。Https 抓包。直接网上下载安装Wireshark ,打开界面如下,双击后开始抓包你会发现Wireshar...

2019-11-12 17:10:50 2605

原创 Https 及抓包

Https相关概念什么是SSL/TLS协议?加密相关的概念对称加密非对称加密散列函数Hash(摘要算法)数字签名TLS握手过程Client HelloServer HelloCertificate(Server)Server Key ExchangeCertificate RequestServer Hello DoneCertificat...

2019-11-08 16:01:42 1167

原创 Java 算法题笔记(十一)

和为s 的两个数输入一个递增排序的数组和一个数字s,在数组中查找两个数,得它们的和正好是s。如果有多对数字的和等于s,输出任意一对即可。举例说明例如输入数组{1 、2 、4、7 、11 、15 }和数字15. 由于4+ 11 = 15 ,因此输出4 和11 。暴力破解当然可以,但是考虑到数组有序为递增的,所以要用一下这个条件,更好。public static List<...

2019-10-06 10:34:42 141

原创 Java 算法题笔记(十)全排列相关

Leecode17. 电话号码的字母组合参考题解:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/solution/dian-hua-hao-ma-de-zi-mu-zu-he-by-leetcode/class Solution {// 感觉做这个题substring 方法要...

2019-09-18 10:18:18 135

原创 git 命令使用

git status 查看状态On branch master // 你目前在哪个分支Your branch is up to date with 'origin/master'. // 你最新的分支是'origin/master'nothing to commit, working tree clean // 没有什么课提交的,工作树是干净的查看状态有更改的情...

2019-05-29 15:25:43 176 1

原创 Java 算法题笔记(九)

买卖股票的最佳时机给定一个数组,它的第i个元素是一支给定股票第i天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = ...

2019-05-07 20:11:40 334

原创 气泡样式的自定义View

自己学习自定义View 画了一个简单的自定义View ,做一下笔记。public class BubbleView extends View { private Paint mPaint; private Path path; // 默认定义圆角为80 个像素点,后期可以考虑加到属性里 private int corner = 80; pub...

2019-05-04 19:09:45 284

原创 归并排序

private void mergeSort(int[] arr,int start,int end){ if (start < end){ int mid = (start + end) / 2; // 划分子序列 mergeSort(arr,start,mid); // 对左侧子序列进行拆分 me...

2019-05-03 14:38:43 127

原创 生产者消费者

之前看博客学了一种生产者消费者的写法,做一下笔记,以便回顾,因为感觉自己还没有很好的吸收。可以有多个生产与多个消费,LinkedList就像一个仓库容器,生产者往里加,消费者往外拿,只要没到满或空,就会这样进行下去,直到停止程序;如果满了,生产者进行等待(说明生产的太快了,可以歇会了),消费者进行消费后会通知它,它再干活。如果空了,消费者进行等待(说明消费的太快了,消费完了,没得消...

2019-05-03 11:11:49 111

原创 二叉树的坡度

给定一个二叉树,计算整个树的坡度。一个树的节点的坡度定义即为,该节点左子树的结点之和和右子树结点之和的差的绝对值。空结点的的坡度是0。整个树的坡度就是其所有节点的坡度之和。示例:输入: 1 / \ 2 3输出: 1解释: 结点的坡度 2 : 0结点的坡度 3 : 0结点的坡度 1 : |2-3| = 1树的坡度...

2019-04-28 22:10:02 586 2

原创 二叉树的层平均值

给定一个非空二叉树, 返回一个由每层节点平均值组成的数组.示例 1:输入: 3 / \ 9 20 / \ 15 7输出: [3, 14.5, 11]解释:第0层的平均值是 3, 第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11].这个特别像二叉树的广度优先遍历,如果忘了可以看看Java 二叉树,深度优先遍历,...

2019-04-28 14:36:12 292

原创 修剪二叉搜索树

给定一个二叉搜索树,同时给定最小边界L和最大边界R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。示例 1:输入: 1 / \ 0 2 L = 1 R = 2输出: 1 \ 2示例 2:输入: ...

2019-04-28 14:19:17 244

原创 把二叉搜索树转换为累加树

给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。例如:输入: 二叉搜索树: 5 / \ 2 13输出: 转换为累加树: 18 / ...

2019-04-28 13:45:26 203

原创 叶子相似的树

请考虑一颗二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个叶值序列。举个例子,如上图所示,给定一颗叶值序列为(6, 7, 4, 9, 8)的树。如果有两颗二叉树的叶值序列是相同,那么我们就认为它们是叶相似的。如果给定的两个头结点分别为root1和root2的树是叶相似的,则返回true;否则返回false。思路:深度优先搜索,递归,找到叶子...

2019-04-28 11:01:51 135

原创 链表的中间结点

给定一个带有头结点head的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans...

2019-04-28 10:23:13 181

原创 Java 算法题笔记(八)

移除链表元素删除链表中等于给定值val的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5法一:增加一个节点代替当前的头指针,这样如果头指针为应该跨过的指针,也可以用加的那个指针跨过。public ListNode removeElements...

2019-04-27 19:51:37 131

原创 求众数,阶乘后的零

给定一个大小为n的数组,找到其中的众数。众数是指在数组中出现次数大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例1:输入: [3,2,3]输出: 3示例2:输入: [2,2,1,1,1,2,2]输出: 2从第一个数开始计数,遇到相同的就加1 ,不同的就减1 ,减到0 就重新计数,总能找到最多的那个。。public ...

2019-04-27 10:27:21 135

原创 最小栈

设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x)-- 将元素 x 推入栈中。 pop()-- 删除栈顶的元素。 top()-- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.pus...

2019-04-27 09:45:31 94

原创 路径总和(二叉树)

给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明:叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和sum = 22, 5 / \ 4 8 / / \ 11 13 4 ...

2019-04-27 08:38:21 1219

原创 最大回文前缀

一个字符串的最大回文前缀长度求一个字符串的最大回文前缀长度。回文是指正反方向读起来都一样的字符串,比如“abcdcba”就是一个回文。Scanner in = new Scanner(System.in); while (in.hasNext()){ String input = in.next(); int len = i...

2019-04-26 22:35:42 357

原创 Window

WindowManagerGlobal 内部有如下几个列表比较重要:// mViews 存储的是所有Window 所对应的Viewprivate final ArrayList<View> mViews = new ArrayList<View>(); //mRoots 存储的是所有Window 所对应的ViewRootImpl private...

2019-04-26 22:09:43 182

原创 intent-filter 的匹配规则

只写Action 不行,<activity android:name=".a.BActivity"> <intent-filter> <action android:name="intent.action.test.bbb" /> </intent-filter></activity>// 这...

2019-04-25 11:29:34 185

原创 Flags

FLAG_ACTIVITY_NEW_TASK 为Activity 指定singleTask 启动模式。FLAG_ACTIVITY_SINGLE_TOP 为Activity 指定singleTop 启动模式。FLAG_ACTIVITY_CLEAR_TOP 启动具有此标记位的Activity ,在同一个任务栈,所有位于它上面的Activity 都要出栈。这个标记位一般会和single...

2019-04-25 10:26:33 313

原创 面向对象六大原则

学习设计模式的读书笔记。单一职责原则就一个类而言,应该仅有一个引起它变化的原因(一个类应该是一组相关性很高的函数、数据的封装)。开闭原则软件中的对象(类、模块、函数等)应该对应扩展是开放的,但是,对于修改是封闭的(在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会将错误引入原本已经经过测试的旧代码中,破坏原有系统)。里氏替换原则就是继承思想,...

2019-04-23 09:07:00 128

原创 二叉树的最小深度

给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2.这个与 二叉树的最大深度 不同,需要考虑如图的情况。publi...

2019-04-22 22:40:23 137

原创 平衡二叉树

给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树[3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回true。示例 2:给定二叉树[1,2,2,3,3,null,nu...

2019-04-22 22:10:49 103

原创 二叉树的最大深度

给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度3 。public int maxDepth(TreeNode root) { ...

2019-04-22 21:44:36 109

原创 相交链表

编写一个程序,找到两个单链表相交的起始节点。相交为8法一:让两个链表都入栈,在把两个栈出栈对比,如果相等就刷新记录,不等不刷新记录,跳出循环即可,这应记录的就是相交的节点。public ListNode getIntersectionNode(ListNode headA, ListNode headB){ Stack<ListNode> stac...

2019-04-21 09:43:19 160

原创 Java 选择排序

之前看视频上是这样讲的private void selectSort1(int[] arr){ for (int i=0;i<arr.length-1;i++){ for (int j=i+1;j<arr.length;j++){ // 不断把更小的换到i 位置 if (arr...

2019-04-20 10:31:20 92

原创 Java 冒泡排序

/** * 冒泡排序 */ public static void bubbleSort1(int[] arr){ for (int x=0; x<arr.length-1; x++){ for (int y=0; y<arr.length-1-x ;y++){ if (arr[...

2019-04-20 10:10:05 105

原创 Java 浅拷贝

被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅拷贝仅仅复制所考虑的对象,而不复制它所引用的对象。public class Book { private String name; public Book(String name) { this.name = name; } publi...

2019-04-18 20:13:44 273

原创 Java 算法题笔记(七)位运算

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。示例 1:输入: [2,2,1]输出: 1对异或的考察异或:相同为0,不同为1 。异或同一个数两次,原数不变。 a^b^b = a; 交换律:a ^ b ^ c <=> a ^ c ^ b 任何数于0异或为任何数 0 ^ n => n...

2019-04-17 08:29:40 333

原创 验证回文串

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: false用前后指针的方法可以提高效率,就是一个i从前走,遇到非法字符就跳过,一个j从...

2019-04-14 22:06:31 131

原创 将有序数组转换为高度平衡的二叉搜索树

将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -1...

2019-04-14 20:59:11 220

空空如也

空空如也

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

TA关注的人

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