自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 阻塞队列LinkedBlockingQueue

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

2020-01-07 19:37:15

阅读数 130

评论数 0

原创 线程池原理

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

2020-01-06 11:37:33

阅读数 18

评论数 0

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

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

2019-12-06 20:21:34

阅读数 25

评论数 0

原创 Android 8.0 Activity 启动流程

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

2019-12-03 17:55:34

阅读数 42

评论数 0

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

Java 反射 获得Class对象 获取类的构造函数 调用类的私有方法 获取类的私有字段并修改值 代理 静态代理 动态代理 动态代理的简单应用 类加载器 类加载器分类 双亲委派模型 几个重要函数 自定义ClassLoader Android 类加载器 PathClas...

2019-12-01 23:08:43

阅读数 55

评论数 0

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

Wireshark是一个网络封包分析软件。帮你撷取网络封包,并尽可能显示出最为详细的网络封包资料。 Wireshark 可以获取HTTP,也能获取HTTPS,但是不能解密HTTPS,只能帮你捕获包,没有密钥是看不懂HTTPS 的,HTTPS 可以使用Charles 。Https 抓包。 直接网...

2019-11-12 17:10:50

阅读数 22

评论数 0

原创 Https 及抓包

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

2019-11-08 16:01:42

阅读数 69

评论数 0

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

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

2019-10-06 10:34:42

阅读数 19

评论数 0

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

Leecode17. 电话号码的字母组合 参考题解:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/solution/dian-hua-hao-ma-de-zi-mu-zu-he-by-leetco...

2019-09-18 10:18:18

阅读数 16

评论数 0

原创 git 命令使用

git status 查看状态 On branch master // 你目前在哪个分支 Your branch is up to date with 'origin/master'. // 你最新的分支是'origin/master' n...

2019-05-29 15:25:43

阅读数 21

评论数 1

原创 Java 算法题笔记(九)

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

2019-05-07 20:11:40

阅读数 59

评论数 0

原创 气泡样式的自定义View

自己学习自定义View 画了一个简单的自定义View ,做一下笔记。 public class BubbleView extends View { private Paint mPaint; private Path path; // 默认定义圆角为80 个像素点...

2019-05-04 19:09:45

阅读数 60

评论数 0

原创 归并排序

private void mergeSort(int[] arr,int start,int end){ if (start < end){ int mid = (start + end) / 2; // 划分子序列 merg...

2019-05-03 14:38:43

阅读数 37

评论数 0

原创 生产者消费者

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

2019-05-03 11:11:49

阅读数 34

评论数 0

原创 二叉树的坡度

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

2019-04-28 22:10:02

阅读数 81

评论数 0

原创 二叉树的层平均值

给定一个非空二叉树, 返回一个由每层节点平均值组成的数组. 示例 1: 输入: 3 / \ 9 20 / \ 15 7 输出: [3, 14.5, 11] 解释: 第0层的平均值是 3, 第1层是 14.5, 第2层是 11. 因此返回 [3, 14...

2019-04-28 14:36:12

阅读数 33

评论数 0

原创 修剪二叉搜索树

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

2019-04-28 14:19:17

阅读数 23

评论数 0

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

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

2019-04-28 13:45:26

阅读数 68

评论数 0

原创 叶子相似的树

请考虑一颗二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个叶值序列。 举个例子,如上图所示,给定一颗叶值序列为(6, 7, 4, 9, 8)的树。 如果有两颗二叉树的叶值序列是相同,那么我们就认为它们是叶相似的。 如果给定的两个头结点分别为root1和root2的树是叶相似的...

2019-04-28 11:01:51

阅读数 39

评论数 0

原创 链表的中间结点

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

2019-04-28 10:23:13

阅读数 36

评论数 0

原创 Java 算法题笔记(八)

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

2019-04-27 19:51:37

阅读数 32

评论数 0

原创 求众数,阶乘后的零

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

2019-04-27 10:27:21

阅读数 30

评论数 0

原创 最小栈

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

2019-04-27 09:45:31

阅读数 28

评论数 0

原创 路径总和(二叉树)

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

2019-04-27 08:38:21

阅读数 166

评论数 0

原创 最大回文前缀

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

2019-04-26 22:35:42

阅读数 50

评论数 0

原创 Window

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

2019-04-26 22:09:43

阅读数 21

评论数 0

原创 intent-filter 的匹配规则

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

2019-04-25 11:29:34

阅读数 57

评论数 0

原创 Flags

FLAG_ACTIVITY_NEW_TASK 为Activity 指定singleTask 启动模式。 FLAG_ACTIVITY_SINGLE_TOP 为Activity 指定singleTop 启动模式。 FLAG_ACTIVITY_CLEAR_TOP 启动具有此标记位的Activi...

2019-04-25 10:26:33

阅读数 206

评论数 0

原创 面向对象六大原则

学习设计模式的读书笔记。 单一职责原则 就一个类而言,应该仅有一个引起它变化的原因(一个类应该是一组相关性很高的函数、数据的封装)。 开闭原则 软件中的对象(类、模块、函数等)应该对应扩展是开放的,但是,对于修改是封闭的(在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行...

2019-04-23 09:07:00

阅读数 50

评论数 0

原创 二叉树的最小深度

给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 示例: 给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它...

2019-04-22 22:40:23

阅读数 33

评论数 0

原创 平衡二叉树

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

2019-04-22 22:10:49

阅读数 31

评论数 0

原创 二叉树的最大深度

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

2019-04-22 21:44:36

阅读数 29

评论数 0

原创 相交链表

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

2019-04-21 09:43:19

阅读数 49

评论数 0

原创 Java 选择排序

之前看视频上是这样讲的 private void selectSort1(int[] arr){ for (int i=0;i<arr.length-1;i++){ for (int j=i+1;j<arr.length;j++){ ...

2019-04-20 10:31:20

阅读数 40

评论数 0

原创 Java 冒泡排序

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

2019-04-20 10:10:05

阅读数 41

评论数 0

原创 Java 浅拷贝

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

2019-04-18 20:13:44

阅读数 37

评论数 0

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

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

2019-04-17 08:29:40

阅读数 65

评论数 0

原创 验证回文串

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true 示例 2: 输入: &qu...

2019-04-14 22:06:31

阅读数 46

评论数 0

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

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

2019-04-14 20:59:11

阅读数 43

评论数 0

原创 Java 算法题笔记(六)

二叉树的层序遍历 给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其自底...

2019-04-13 11:07:39

阅读数 42

评论数 0

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