自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

BoCong-Deng的博客

青春都一饷,怎忍把浮名,换了浅斟低唱。

原创 只出现一次的数算法题汇总
原力计划

这篇文章用来总结一个系列的算法题,也就是找到元素数组中重复出现的元素或者只出现一次的元素。其实在讲解之前,如果之前有接触过这类的类的同学,应该知道解决这类题的方式不外乎用位运算来搞定。使用位运算来解决这一系列问题很有趣,这也是为什么我想着专门写一篇博文来记录的原因,废话不多说,咱们进入正文。

2020-05-20 14:11:18 37 0

原创 一些通过数学分析解决的算法题汇总

写在前面 如果觉得写得好,或者有所帮助,记得点个关注和点个赞,不胜感激! 我发现最近经常会遇到一些需要通过数学分析去解决的问题,做的时候想着各种方法,然后看到题解,发现可以用数学分析的方式,找到非常快的解决办法,整个人就emmmmm了,所以这里开这篇博文,用来记录自己碰到的可以用数学分析的方式解决...

2020-05-19 17:20:45 64 0

原创 搜索二维矩阵(左右上下升序,寻找目标值)

数组从左到右和从上到下都是升序的,如果从右上角出发开始遍历呢?会发现每次都是向左数字会变小,向下数字会变大,有点和二分查找树相似。二分查找树的话,是向左数字变小,向右数字变大。所以我们可以把 target 和当前值比较。

2020-05-10 18:47:28 47 0

原创 滑动窗口最大值问题
原力计划

其实这里的话,我们需要先理解双向队列,这个是一个很有用的数据结构,他可以让我们在 $O(1)$ 的时间复杂度内,访问头部和尾部的节点。所以,我们可以使用双向队列来帮助我们,实现 $O(N)$ 时间复杂度内,得到结果。 处理前 k 个元素,初始化双向队列。

2020-05-09 19:37:17 50 0

原创 二叉树的公共最近祖先问题
原力计划

我们上面的第一直觉就是我们通过记录两个节点的路径,再来找公共祖先,但是其实我们在遍历的过程中,就可以通过记录当前祖先的方式,找到公共祖先。不过和上面的思路的遍历方式区别的地方在于,上面的思路是通过层次遍历,而这种方式是通过深度遍历。

2020-05-08 11:32:34 42 0

原创 计算阶乘之后的零个数

我觉得吧,以后像这种纯粹就是进行数学分析的问题,我就要把它记录下来,这种问题给你时间让你去分析,可能就能分析出来,但是限定你时间让你解决,很容易卡住,所以遇到了就学习思路,然后以后如果碰到类似的问题,那么解决起来就非常迅速利落了。

2020-05-04 19:04:44 54 0

原创 计算数字 1 的个数(小于等于 n 的非负整数中数字 1 出现的个数)
原力计划

这个问题乍一看,我最开始以为是计算二进制位的1的个数(最近对二进制比较敏感,想啥问题都是先想着能不能二进制解决)。然后仔细看了问题之后才发现,其实就是计算十进制中1的个数。其实理解问题之后,感觉也不是很难,一个暴力计算就搞定,不过,光用暴力解决问题并不是我的风格,所以还要想着其他更有效的方式。这里...

2020-05-04 18:36:56 134 0

原创 摩尔投票算法(Boyer-Moore Voting Algorithm)
原力计划

给定一个数组A,其中含有 n 个元素,在数组A中出现超过 n/2 次的元素,也就是出现次数超过 n/2 的众数。现在的问题要求找到数组中是否存在这样的元素,其出现次数超过 n/2。现在本文就来讨论在线性复杂度下,计算成本最优的算法。

2020-05-03 18:45:49 91 0

原创 不用找了,学习BM算法,这篇就够了(思路+详注代码)
原力计划

为什么说循序渐进,是因为BM算法,在大多数情况下,表现的比KMP算法优秀,所以大部分时候,都当做KMP进阶的算法来学习。BM算法从模式串的尾部开始匹配,且拥有在最坏情况下 $O(N) $的时间复杂度。有数据表明,在实践中,比 KMP 算法的实际效能高,可以快大概 3-5 倍,很值得学习。在学习BM...

2020-04-17 18:38:34 129 0

原创 彻底理解AbstractQueuedSynchronizer(二)
原力计划

在分析 Java 并发包 java.util.concurrent 源码的时候,少不了需要了解 AbstractQueuedSynchronizer(以下简写AQS)这个抽象类,因为它是 Java 并发包的基础工具类,是实现 ReentrantLock、CountDownLatch、Semapho...

2020-04-16 20:15:52 95 0

原创 总结一下动态规划的思路
原力计划

我相信只要是接触算法的同学,就一定会接触DP,也就是动态规划,虽然经常遇见动态规划相关的算法题,但是许多人还是有些畏惧,不过我相信只要你愿意静下来学习总结,看看这篇文章或者其他优秀的讲解文章,不管你之前是否害怕动态规划系列的问题,相信足以帮助你消除对动态规划算法的恐惧,因为动态规划其实就是套路中,...

2020-04-15 16:32:21 184 0

原创 解决更新升级python和pip版本后,不生效的问题
原力计划

最近在更新我服务器上的python以及pip版本的时候,碰见了令人头痛的问题,就是我执行了升级指令之后,升级也正常的`Successfully Complete!`了,但是我用`python -V`或者`pip -V`查看版本的时候,发现还是原来的版本,没有变化,解决了半天才发现问题所在,这里就记...

2020-04-14 17:57:27 942 0

原创 把KMP匹配算法讲清楚
原力计划

KMP算法是真的折磨我够呛的,记不清是大一还是大二的时候就接触了这个算法,当时研究的一知半解,然后就用起来了,顶多只能说是敲多了几遍,大致的结构流程能够写出来,然后就一直用了很久到现在。虽然使用的过程中一直有磕磕碰碰,但是够用所以就没有进行深究,知道前段时间,包括今天,莫名其妙遇到了许多使用KMP...

2020-04-14 17:25:53 160 0

原创 彻底理解AbstractQueuedSynchronizer(一)
原力计划

在分析 Java 并发包 java.util.concurrent 源码的时候,少不了需要了解 AbstractQueuedSynchronizer(以下简写AQS)这个抽象类,因为它是 Java 并发包的基础工具类,是实现 ReentrantLock、CountDownLatch、Semapho...

2020-04-13 18:54:34 86 0

原创 单纯为了实用,创建线程的几种方法
原力计划

原始的创建线程的方法有三种,分别是:继承 Thread 类、实现 Runnable 接口、实现 Callable 接口。当然还可以利用Future和FutureTask来获取返回值。

2020-04-12 20:20:34 112 0

原创 ReentrantLock你了解多少(结合Lock、AQS进行讲解)
原力计划

本篇文章要讲的是`Lock` 接口,重点强调 `ReentrantLock` 类,相关的接口在JUC 包里面,自 JDK 5 起,Java 类库中新提供了 `java.util.concurrent` 包(通常简称为 JUC 包)。Java 中有两种对并发资源加锁的方式,除了 `synchroni...

2020-04-12 19:39:19 85 0

原创 看完这篇恍然大悟,理解Java中的偏向锁,轻量级锁,重量级锁
原力计划

锁的状态总共有四种:无锁状态、偏向锁、轻量级锁和重量级锁。随着锁的竞争,锁可以从偏向锁升级到轻量级锁,再升级的重量级锁(但是锁的升级是单向的,也就是说只能从低到高升级,不会出现锁的降级)

2020-04-11 16:54:42 604 1

原创 你会算对象的大小么?不会的话就看看这篇文章吧
原力计划

使用面向对象语言,离不开的就是对象,现在回过头来思考一下,真的了解所使用语言的对象么?我自己有点心虚,对于Java的对象,我了解的尚且还不够深入,对于一些底层的东西,还有待进一步了解学习。这一篇博文,来讲讲Java对象的大小,学习如何计算Java对象的大小。如果你想深入Java 对象的内存设计,以...

2020-04-10 18:49:31 3482 0

原创 带你理解 Trie 树(前缀树)
原力计划

在计算机科学中,Trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。一般情况下,不是所有的节点都有对应的值,只有...

2020-04-10 16:50:39 47 0

原创 带你了解有向无环图和拓扑排序
原力计划

在图论中,如果一个有向图无法从某个顶点出发经过若干条边回到该点,则这个图是一个有向无环图(DAG图)。而提到DAG,就差不多会联想到拓扑排序,拓扑排序是指由某个集合上的一个偏序得到该集合上的一个全序的操作。拓扑排序常用来确定一个依赖关系集中,事物发生的顺序。拓扑排序是对有向无环图的顶点的一种排序,...

2020-04-09 19:19:42 71 0

原创 聊一聊分支预测,思考为什么使用 if/else 语句会降低程序效率
原力计划

在Stack Overflow上看到了这样的一个帖子,觉得挺值得学习的,这个帖子是关于讨论为什么处理排序数组比处理未排序数组快?看完后面的回答,然后得到了一个概念,就是“分支预测”,然后针对分支预测查看了许多资料和论文,觉得收获挺多的,所以写一篇博文记录一下。

2020-04-07 17:58:59 5790 0

原创 非常值得一看的HTTP文章,即基础又深入
原力计划

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件,图片文件, 查询结果等)。这篇文章带你认...

2020-04-06 12:39:24 90 0

原创 看完这篇,有人问你synchronized 关键字就不要怂
原力计划

Java 原生的有两种实现锁的机制,一种是通过底层实现的 synchronized 关键字,另一种是 Doug Lea 在 JDK1.5 实现的 java.util.concurrent 包中的 Lock 类。这两种方法一种是 Java 关键字,另一种是用对象的方式,两种都实现了并发状态下对公共资...

2020-04-04 12:07:17 124 0

原创 这篇能让你搞懂股票买卖系列问题
原力计划

写在前面 如果觉得写的还不错,有所收获,记得点个关注和点个赞哟,不胜感激。 股票买卖的这个系列问题早在之前就在LeetCode就刷了一遍了,不过当时因为一些原因,没有总结成一篇博文。后面又陆陆续续遇到了类似的问题,总感觉股票系列问题的奇技淫巧太多了,平时用来学习和拓展完全是没有问题的,不过如果到了...

2020-04-03 12:02:23 163 0

原创 Java的几种时间类,你了解多少?
原力计划

我们使用Java的时候,经常会用到的一个类就是时间类,但是很多时候我们只是匆匆而过,并没有深入去了解时间类。在我开发历程中,碰到了许多有关时间类的问题,所以今天抽空,把Java的时间类阐述总结一下,希望看完这篇的小伙伴能有所收获。本篇文章分四个部分讲,分别是 `Java 基础时间类`、`Java ...

2020-04-02 23:56:58 168 0

原创 打印Java数组你不知道的几种方式
原力计划

在 Java 中,数组虽然是一个对象,但并未明确的定义这样一个类,因此也就没有覆盖 toString() 方法的机会。如果尝试直接打印数组的话,输出的结果并不是我们预期的结果。那有没有一些简单可行的方式呢?这个问题看起来挺简单的,打印数组谁不会呀,但是请你仔细想一下,你能够通过多少种方式打印,且哪...

2020-03-31 16:23:34 9506 0

原创 你想要的排序算法,都在这!
原力计划

基数排序、计数排序、堆排序、希尔排序、快速排序、选择排序、插入排序、归并排序。最近写代码的时候用到堆排序解决一些问题,然后写的过程中发现有点手生,就想着记录一些,然后又琢磨着干脆直接整理一份排序的文章,附带对排序的分析以及实现代码,给自己练练手。

2020-03-31 11:09:33 175 0

原创 玩转位运算的N条实践小技巧
原力计划

对于位运算我们应该不陌生(当然,如果你还很陌生,你可以看我之前写过的关于位运算的文章,挺详细的),这一篇主要是针对平时我们日常生活中,碰到的关于位运算的一些问题,而总结出来的一些实践技巧,能够帮助我们快速解决一下相关问题,有助于玩转位运算的操作。本文会不断更新,日后碰到很多奇思妙想会继续更新进来,...

2020-03-29 23:53:26 196 0

原创 这一篇足够让你理解深拷贝和浅拷贝(详细)
原力计划

任何变成语言中,其实都有浅拷贝和深拷贝的概念,Java 中也不例外。在对一个现有的对象进行拷贝操作的时候,是有浅拷贝和深拷贝之分的,他们在实际使用中,区别很大,如果对其进行混淆,可能会引发一些难以排查的问题。Java 中的数据类型分为基本数据类型和引用数据类型。对于这两种数据类型,在进行赋值操作、...

2020-03-29 18:18:44 9195 0

原创 SpringBoot的流行实践解读
原力计划

看完这篇文章,感觉受益匪浅,特别是文中提到的一些最佳实践文章以及技术,非常值得一看,来源:http://t.cn/EJWZNra Spring Boot是最流行的用于开发微服务的Java框架。在本文中,我将与你分享自2016年以来我在专业开发中使用Spring Boot所采用的最佳实践。这些内容是...

2020-03-27 19:15:04 329 0

原创 多种方式轻松搞定SpringBoot部署Docker
原力计划

在部署应用程序时,Spring Boot的灵活打包选项提供了很多选择。可以将Spring Boot应用程序部署到各种云平台,容器映像(例如Docker)或虚拟机/真实机上。这里我们就来探讨SpringBoot如果部署到Docker中。我们都知道,在对 Kubernetes 微服务实践过程中,接触最...

2020-03-27 12:48:08 9927 0

原创 好好聊一聊Java中的正则表达式
原力计划

正则表达式,又称规则表达式。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。通常都是用来验证输入的字符串数据是否复合...

2020-03-23 10:31:12 250 1

原创 讲明白Spring Data JPA实体关联注解
原力计划

写在前面 如果觉得有所收获,记得点个关注和点个赞哦,非常感谢支持 Spring Data JPA是Spring Data系列一个较大的模块,可轻松实现基于JPA的存储库。该模块对处理基于JPA的数据访问层进行了增强支持。它使构建Spring支持的应用程序访问数据变得更加容易。我们知道,Spring...

2020-03-21 10:21:52 405 0

原创 Optional是个好东西,你会用么?(全面深度解析)
原力计划

写在前面 从 Java 8 引入的一个很有趣的特性是 Optional 类。Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException)这个异常就不多说了,肯定是每个 Java 程序员都非常了解的异常。Optional 的完整路径是 java.util.Op...

2020-03-20 11:29:45 10190 0

原创 看完这一篇,你就对Spring Security略窥门径了(SpringBoot实现默认、内存、数据库)
原力计划

开发Web应用,对页面的安全控制通常是必须的。比如:对于没有访问权限的用户需要转到登录表单页面。要实现访问控制的方法多种多样,可以通过Aop、拦截器实现,也可以通过框架实现,例如:Apache Shiro、Spring Security。我们这里要讲的Spring Security 就是一个Spr...

2020-03-18 21:10:24 10082 0

原创 知识点整理,Java基础面试题(一)
原力计划

写在前面 整理了一些互联网大厂的面试题,这些面试题经常会被问到,也是作为Java工程师需要掌握的一些知识点,毕竟理论和实践的结合,才是王道,分片整理,每天嗑些知识点,快乐每一天,如果对你有帮助,记得点个关注和点个赞哦。 相关系列文章 知识点整理,MyBatis面试题 知识点整理,ZooKeeper...

2020-03-15 21:50:07 10212 1

原创 知识点整理,Java并发编程面试题(二)
原力计划

写在前面 整理了一些互联网大厂的面试题,这些面试题经常会被问到,也是作为Java工程师需要掌握的一些知识点,毕竟理论和实践的结合,才是王道,分片整理,每天嗑些知识点,快乐每一天,如果对你有帮助,记得点个关注和点个赞哦。 相关系列文章 知识点整理,MyBatis面试题 知识点整理,ZooKeeper...

2020-03-12 17:54:22 10357 1

原创 知识点整理,Java并发编程面试题(一)
原力计划

写在前面 整理了一些互联网大厂的面试题,这些面试题经常会被问到,也是作为Java工程师需要掌握的一些知识点,毕竟理论和实践的结合,才是王道,分片整理,每天嗑些知识点,快乐每一天,如果对你有帮助,记得点个关注和点个赞哦。 相关系列文章 知识点整理,MyBatis面试题 知识点整理,ZooKeeper...

2020-03-12 17:15:10 10448 0

原创 知识点整理,MySQL面试题
原力计划

写在前面 整理了一些互联网大厂的面试题,这些面试题经常会被问到,也是作为Java工程师需要掌握的一些知识点,毕竟理论和实践的结合,才是王道,分片整理,每天嗑些知识点,快乐每一天,如果对你有帮助,记得点个关注和点个赞哦。 相关系列文章 知识点整理,MyBatis面试题 知识点整理,ZooKeeper...

2020-03-11 12:28:25 11298 2

原创 知识点整理,Redis面试题

写在前面 整理了一些互联网大厂的面试题,这些面试题经常会被问到,也是作为Java工程师需要掌握的一些知识点,毕竟理论和实践的结合,才是王道,分片整理,每天嗑些知识点,快乐每一天,如果对你有帮助,记得点个关注和点个赞哦。 相关系列文章 知识点整理,MyBatis面试题 知识点整理,ZooKeeper...

2020-03-11 12:03:21 642 0

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