自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hestyle的博客

hestyle便涨红了脸,额上的青筋条条绽出,争辩道,“Ctrl+C+V不能算抄…Ctrl+C+V!…程序员的事,能算抄么?”接连便是难懂的话,什么“移花接木”,什么“借鉴”之类,引得众人都哄笑起来。...

原创 Java容器之PriorityQueue源码分析(附堆的调整图解)
原力计划

  PriorityQueue容器,也就是我们日常所称的优先队列,也有小伙伴称堆。优先队列的作用是将队列中的元素最小值放到堆顶(默认小顶堆,最小的元素在顶端,你也可以修改comparator,使之变成大顶堆,最大的元素在顶端)。每当我们插入、删除元素,都是从堆顶进行,优先队列会自动重新调整堆,将最...

2020-04-27 11:05:52 92 0

原创 Java容器之HashSet、LinkedHashSet、TreeSet源码分析(不敢称东半球最好,只称东半球最好理解)
原力计划

  前面分析了Java中的常见五大map容器,Java中的Set容器是对Map容器的封装,今天就结合源码分析一下Java中常见的三大Set容器。 注明:以下源码分析都是基于jdk 1.8.0_221 温馨提示:\color{red}温馨提示:温馨提示:请先阅读一下我之前写的HashMap、Lin...

2020-04-24 11:44:37 109 0

原创 Java中的常见五种map容器源码分析总结(HashMap、Hashtable、ConcurrentHashMap、LinkedHashMap、TreeMap)
原力计划

  断断续续写了半个月,今天终于把TreeMap容器中的红黑树搞定了,现在来水一篇又快又短的Java Map容器总结博客 ????????。 注明:本篇博客不会涉及容器的源码什么的,主要是总结各个map容器的底层实现特点、主要运用场景。如果你需要详细了解更多关于Java中的map容器实现的细节,文...

2020-04-23 22:08:21 397 0

原创 Java容器之TreeMap源码分析(附红黑树调整图解,全网最详细、图解最全,不服来辩)
原力计划

  在之前分析HashMap、ConcurrentHashMap容器的源码实现时,反复提及到JDK 1.8的版本中,HashMap、ConcurrentHashMap两个容器都引入了红黑树来解决hash冲突问题(在之前的版本只有链表,现在hash桶的实现可有链表、红黑树进行转换),但是JDK中的红...

2020-04-23 16:45:42 123 0

原创 数据结构之红黑树(还在为看不懂红黑树而烦恼吗?别再翻了,此篇足矣~)
原力计划

  红黑树,非常经典的数据结构,主要用于一些容器中,比如C++语言中的map、Java语言中的TreeMap(后面会写源码分析博客)。红黑树能保持高效的查找,一般取时间复杂度为O(log2n),由于高效,这个结构也比较复杂,所以很多人(包括我自己)都一直搞不懂红黑树到底是怎么插入、删除节点的。此篇...

2020-04-18 17:31:23 415 0

原创 Java容器之LinkedHashMap源码分析(看看确定不点进来?进来真不点?)
原力计划

  前面几篇博客Java容器之Hashtable源码分析、Java容器之HashMap源码分析分别分析了HashMap、Hashtable的源码,此篇博客我们分析一下LinkedHashMap容器,看看它又有什么花样。 注明:以下源码分析都是基于jdk 1.8.0_221 LinkedHashM...

2020-04-16 17:49:42 125 0

原创 Java容器之ConcurrentHashMap源码分析(JDK 1.7与JDK 1.8对比)
原力计划

  在前面两篇博客 Java容器之HashMap源码分析、Java容器之Hashtable源码分析分别对JDK1.8中的HashMap、Hashtable的源码进行一些分析,在本篇博客将对ConcurrentHashMap容器的源码进行一些分析。 申明:在前两篇博客介绍了两个容器的增、删、改、查相...

2020-04-14 09:39:22 124 0

原创 Java容器之Hashtable源码分析(关于Hashtable的这些细节你可能还不知道)
原力计划

  在上一篇博客 Java容器之HashMap源码分析(妈妈再也不用担心我不懂HashMap了) 从源码层次分析了HashMap容器的底层实现,在本篇博客将继续从源码层次分析Hashtable的底层实现。   注明:以下源码分析都是基于jdk 1.8.0_221版本 Hashtable源码分析目...

2020-04-11 12:02:42 104 3

原创 Java容器之HashMap源码分析(妈妈再也不用担心我不懂HashMap了)
原力计划

  最近面试被问HashMap容器的实现原理,答的一塌糊涂。。。虽说一直念叨着说要看看Java容器的源码,但总是被耽搁了,今天终于静下心来看了????‍♂️。   注明:以下源码分析都是基于jdk 1.8.0_221版本 HashMap源码分析目录一、`HashMap`概述(==一图以蔽之==)...

2020-04-10 12:22:01 159 0

原创 数据结构之二叉树、AVL树、红黑树、Trie树、B树、B+树、B*树浅析
原力计划

  树,作为五大经典数据结构之一,有许多运用场景,比如MySQL数据库的B+树(数据结构的重要性不用强调了吧)。下面将对二叉树、红黑树、B树、B+树等树结构进行一些概念区分与总结,此篇博客适合新手、有一定数据结构基础的小伙伴。 一、树的划分   根据子节点的个数可以划分成N叉树(一般N ≥ 2),...

2020-04-07 09:34:30 258 2

原创 字符串匹配KMP算法详解(这可能是东半球最好理解的解释)
原力计划

KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。 累赘一下,KMP算法是字符串匹配算法,比如搜索字符串“abcdefg”中是否含有子串“bcd”。下面将详细介绍KMP算法实现细节...

2020-03-15 23:27:29 319 0

原创 MySQL从入门到精通、SQL实战题解

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管...

2019-08-19 14:32:07 824 4

原创 Ubuntu18.04安装SSH工具(附SSH无法登录root账号解决方法)
原力计划

  最近又在折腾Ubuntu,来水一篇ssh安装博文。。。 Ubuntu18.04安装SSH工具目录一、`SSH`概述二、安装`SSH`1、安装`SSH`服务端2、安装`SSH`客户端三、`SSH`基本使用1、访问其它电脑2、退出远程登录3、修改`SSH`登录密码4、`root`账号登录`SSH`...

2020-06-22 23:37:10 185 0

原创 设计模式之单例模式(静态属性可称为单例思想的特殊运用?)
原力计划

  最近看了看程杰前辈的《大话设计模式》,主要是上次面试被问设计模式,答的很菜。。。经过一段时间的沉淀,现在来谈谈我对其单例模式的理解。 设计模式之单例模式一、`单例模式`1、定义2、使用场景二、举例(静态属性)三、两种实现方式(Java)1、`饿汉式`2、`懒汉式`四、总结 一、单例模式 1、定...

2020-05-30 10:59:43 177 0

原创 逆向工具之脱壳神器反射大师(附脱壳环境搭建、脱壳实战)
原力计划

  相信点击进入这篇博客的小伙伴都知道并且搞过App逆向,不过有时候会遇到各种加壳的App,不让你反编译。但是道高一尺,魔高一丈,有正向加密,就有逆向解密。今天博主带大家搭建脱壳环境,并且手动脱一个加了某60的壳的App。闲话少叙,直接开始吧! 逆向工具之搭建脱壳环境与脱壳实战目录一、`Andro...

2020-05-22 12:24:16 449 0

原创 逆向工具之unidbg(在pc端模拟执行so文件中的函数)
原力计划

  昨天在逆向某App的时候,发现有个加密工具类中的native方法是用C语言编写的,隐藏在so文件中。某大佬推荐逆向工具unidbg,能在pc端直接调用so文件中的函数,最终成功解决了问题。 逆向工具之unidbg目录一、`unidbg`引入二、`unidbg`概述三、`unidbg`使用姿势1...

2020-05-21 21:21:51 575 0

原创 字节跳动上海创新业务(2021届实习岗)三轮技术面总结
原力计划

  博主于2020.4月初投了字节跳动 上海创新业务 后端开发实习岗(Java方向),并且在2020.5初拿到了客户端的实习offer,下面分享一下此次技术面试的相关内容。 字节跳动上海创新业务(2021届实习生)三轮技术面总结一、笔试(2020.4.12)1、尽量使用`优惠卷`2、其它不记得了。...

2020-05-13 21:55:21 629 3

原创 Java字符串类之String、StringBuilder、StringBuffer源码分析与总结(你知道三者的区别?)
原力计划

  前面分析完Java中常见容器的源码,此篇博客来分析下Java字符串相关的常用的三个类String、StringBuilder、StringBuffer。   相信看过我前面的Java容器源码分析博客的小伙伴会发现一个规律,我一般分析某个类的源码都是从属性、构造器(初始化方法)、常用的API三个...

2020-04-29 22:35:15 123 0

原创 Java常用容器JDK源码分析总结(震惊,某博主竟然分析完了List、Queue、Map、Set接口的主要实现类)
原力计划

  前些天花了12篇博客,分析了Java常用的容器的源码,主要是List、Queue、Map、Set等接口的实现类。此篇博客将对这些容器进行一个总结,但不会涉及源码,如果需要了解更多的细节,可以通过文中的链接阅读。 Java常用容器JDK源码分析总结目录一、Java`容器`概述二、`List`容器...

2020-04-27 16:49:45 102 4

原创 数据结构之堆(我猜,关于堆的这些维护细节,你肯定不清楚,不信你来看!)
原力计划

  在前面分析了二叉搜索树、红黑树等众多树结构,今天博主给大家换个口味,深入分析一下堆的实现原理与维护规则。(堆其实与二叉树有点相似) 数据结构之堆原理分析目录一、`堆`的概述1、什么是`堆`2、`堆`的划分3、`堆`的作用二、`堆`的底层实现三、`堆`的调整四、总结 一、堆的概述 1、什么是堆 ...

2020-04-26 22:12:52 143 0

原创 Java容器之ArrayDeque源码分析(你知道ArrayDeque维护循环数组的原理吗?)
原力计划

  在上一篇博客 Java容器之LinkedList源码分析(LinkedList到底是单链表还是双链表?) 分析了LinkedList容器的源码,LinkedList实现了Deque接口,所以它不但是一个List容器,而且还是一个双端队列容器,并且是基于双链表实现。在此篇博客,将分析基于(循环...

2020-04-26 11:09:54 71 0

原创 Java容器之LinkedList源码分析(LinkedList到底是单链表还是双链表?)
原力计划

  前面在分析ArrayList、Vector容器的源码时,发现的底层实现原理都是维护一个数组,并且自动调整数组的大小(扩容、缩小),随机查找效率高,但是插入、删除操作效率低。在此篇博客中,博主将带领各位小伙伴也看看LinkedList容器的实现原理,它又有什么优势呢,它到底是单链表还是双链表实现...

2020-04-25 23:03:57 104 0

原创 Java容器之Vector源码分析(Vector容器为啥线程安全呢?)
原力计划

  在上一篇博客 Java容器之ArrayList源码分析(这应该是Java中最简单的容器吧) 从源码的角度分析了ArrayList容器,现在我们看下Vector容器又是什么。 注明:以下源码分析都是基于jdk 1.8.0_221版本 Java容器之Vector源码分析目录一、`Vector`容...

2020-04-25 16:06:32 82 0

原创 Java容器之ArrayList源码分析(这应该是Java中最简单的容器吧)
原力计划

  前面已经分析完Java的Map、Set容器源码,还剩List相关的容器,此篇博客将分析List接口的实现类之一ArrayList容器的源码实现。 注明:以下源码分析都是基于jdk 1.8.0_221版本 Java容器之ArrayList源码分析目录一、`ArrayList`容器概述二、`Ar...

2020-04-25 10:32:18 125 0

原创 数据结构之二叉搜索树详解(附C++代码实现查找、插入、删除操作)
原力计划

  最近在分析分析红黑树时,感觉上来就挑最难的树结构之一进行分析,难度太大,所以特意写这篇二叉搜索树分析的博客作为铺垫。那么为啥挑二叉搜索树进行分析捏?其实红黑树也是一种更为复杂的二叉搜索树,建议阅读一下我的另外一篇博客 数据结构之二叉树、AVL树、红黑树、Trie树、B树、B+树、B*树浅析 。...

2020-04-18 11:21:27 126 1

原创 剑指offer 反转链表

题目描述 输入一个链表,反转链表后,输出新链表的表头。 解题思路:\color{blue}解题思路:解题思路: 非常简单的题,只是涉及到指针,有些不是很理解的指针的可能会比较懵,请看下图。 第1步:将newPHead指向pHead,然后pHead后移,最后newPHead->next需要置空...

2020-03-19 22:16:39 183 0

原创 剑指offer 剪绳子

题目描述 给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],…,k[m]。请问k[0]xk[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大...

2020-03-17 21:11:56 203 0

原创 剑指offer 链表中倒数第k个结点

题目描述 输入一个链表,输出该链表中倒数第k个结点。 解题思路:\color{blue}解题思路:解题思路: 由于这是单链表,只能往一个方向遍历,因此第一想法可能是先遍历一遍链表,计算一下链表节点的总个数n,再从头开始走n - k个节点就是倒数k个节点。这种思路并没有啥毛病,不过有一种只访问一遍的...

2020-03-17 16:46:31 205 0

原创 剑指offer 调整数组顺序使奇数位于偶数前面

题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 解题思路:\color{blue}解题思路:解题思路: 注意这道题要求我们把奇数、偶数分开,并且奇数的相对顺序、偶数的...

2020-03-15 17:25:45 221 0

原创 剑指offer 二进制中1的个数

题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 解题思路:\color{blue}解题思路:解题思路: 这道题有一个公式 n &= (n - 1),也就是计算n的二进制表示1的个数,只要循环使用上面的公式,直到n为0。这个公式不知道就记住即可,下面用个示例简单验...

2020-03-15 16:14:46 176 0

原创 剑指offer 变态跳台阶

题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 解题思路:\color{blue}解题思路:解题思路: 在上一题 剑指offer 跳台阶,题目规定一步只能跨1阶或者2阶,最后得出递推式f(n) = f(n - 2) + f(...

2020-03-14 20:00:42 165 0

原创 剑指offer 跳台阶

题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 解题思路:\color{blue}解题思路:解题思路: 这道题其实也是一道斐波拉契尔数列应用的题,只是换了个马甲。 到达第n阶台阶有两种可能,一种是从第n - 2阶台阶...

2020-03-14 19:24:53 171 0

原创 剑指offer 斐波那契数列

题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39 解题思路:\color{blue}解题思路:解题思路: 斐波拉契尔数列,递推式f(n) = f(n - 2) + f(n - 1)。没啥好说的吧,直接递推计算即可。 代...

2020-03-13 16:10:25 165 0

原创 剑指offer 旋转数组的最小数字(变形二分搜索)

题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 解题思路...

2020-03-13 15:51:38 175 0

原创 剑指offer 用两个栈实现队列

题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 解题思路:\color{blue}解题思路:解题思路: 稍微知道一点数据结构的道友都知道栈的特性是先进后出,队列的特性是先进先出。 这道题只给我们两个栈,让我们去实现队列先进先出的功能。 最直白的思路...

2020-03-12 21:45:34 224 0

原创 剑指offer 重建二叉树

题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 解题思路:\color{blue}解题思路:解题思...

2020-03-12 20:25:34 173 0

原创 剑指offer 从尾到头打印链表

题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 解题思路:\color{blue}解题思路:解题思路: 由于题目给定的是单链表,所以无法从尾端 --> 起始端访问。 但是我们可以借助栈实现元素的逆序输出,栈的特性是先进后出,第一步,我们访问一遍链表,将所有元素依次进...

2020-03-11 16:34:30 172 0

原创 剑指offer 替换空格

题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 解题思路:\color{blue}解题思路:解题思路: 这道题可能会有一部分道友选择从左->右访问,依次替换空格,但是由于...

2020-03-11 16:21:34 174 0

原创 剑指offer 二维数组中的查找

题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 解题思路:\color{blue}解题思路:解题思路: 这道题最容易想到的思路是暴搜,时间复杂...

2020-03-11 15:51:28 172 0

原创 PAT顶级(Top Level)练习题 LUCKY STRING

题目描述 A string s is LUCKY if and only if the number of different characters in s is a fibonacci number. Given a string consisting of only lower case l...

2020-03-10 22:12:19 411 0

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