- 博客(17)
- 资源 (22)
- 问答 (1)
- 收藏
- 关注
原创 不用找了,学习BM算法,这篇就够了(思路+详注代码)
为什么说循序渐进,是因为BM算法,在大多数情况下,表现的比KMP算法优秀,所以大部分时候,都当做KMP进阶的算法来学习。BM算法从模式串的尾部开始匹配,且拥有在最坏情况下 $O(N) $的时间复杂度。有数据表明,在实践中,比 KMP 算法的实际效能高,可以快大概 3-5 倍,很值得学习。在学习BM算法的时候,找了很多资料,也遇到了很多优秀的文章,不过目前还没有碰到即讲清楚了原理,又实现了代码的文章,java版的更是不容易找
2020-04-17 18:38:34 22978 14
原创 彻底理解AbstractQueuedSynchronizer(二)
在分析 Java 并发包 java.util.concurrent 源码的时候,少不了需要了解 AbstractQueuedSynchronizer(以下简写AQS)这个抽象类,因为它是 Java 并发包的基础工具类,是实现 ReentrantLock、CountDownLatch、Semaphore、FutureTask 等类的基础。
2020-04-16 20:15:52 347
原创 总结一下动态规划的思路
我相信只要是接触算法的同学,就一定会接触DP,也就是动态规划,虽然经常遇见动态规划相关的算法题,但是许多人还是有些畏惧,不过我相信只要你愿意静下来学习总结,看看这篇文章或者其他优秀的讲解文章,不管你之前是否害怕动态规划系列的问题,相信足以帮助你消除对动态规划算法的恐惧,因为动态规划其实就是套路中,寻求变数。只要有掌握了套路,就能灵活应对。
2020-04-15 16:32:21 4916
原创 解决更新升级python和pip版本后,不生效的问题
最近在更新我服务器上的python以及pip版本的时候,碰见了令人头痛的问题,就是我执行了升级指令之后,升级也正常的`Successfully Complete!`了,但是我用`python -V`或者`pip -V`查看版本的时候,发现还是原来的版本,没有变化,解决了半天才发现问题所在,这里就记录一下,能帮助有需要的人。
2020-04-14 17:57:27 12327
原创 把KMP匹配算法讲清楚
KMP算法是真的折磨我够呛的,记不清是大一还是大二的时候就接触了这个算法,当时研究的一知半解,然后就用起来了,顶多只能说是敲多了几遍,大致的结构流程能够写出来,然后就一直用了很久到现在。虽然使用的过程中一直有磕磕碰碰,但是够用所以就没有进行深究,知道前段时间,包括今天,莫名其妙遇到了许多使用KMP思想,并进行变种的算法思路,以及算法题的解法,我才终于下定决定要把KMP算法搞明白,写下这篇博文,尝试吃透讲明白KMP。
2020-04-14 17:25:53 2152 6
原创 彻底理解AbstractQueuedSynchronizer(一)
在分析 Java 并发包 java.util.concurrent 源码的时候,少不了需要了解 AbstractQueuedSynchronizer(以下简写AQS)这个抽象类,因为它是 Java 并发包的基础工具类,是实现 ReentrantLock、CountDownLatch、Semaphore、FutureTask 等类的基础。在分析 Java 并发包 java.util.concurrent 源码的时候,少不了需要了解 AbstractQueuedSynchronizer(以下简写AQS)这个抽象
2020-04-13 18:54:34 294
原创 单纯为了实用,创建线程的几种方法
原始的创建线程的方法有三种,分别是:继承 Thread 类、实现 Runnable 接口、实现 Callable 接口。当然还可以利用Future和FutureTask来获取返回值。
2020-04-12 20:20:34 330
原创 ReentrantLock你了解多少(结合Lock、AQS进行讲解)
本篇文章要讲的是`Lock` 接口,重点强调 `ReentrantLock` 类,相关的接口在JUC 包里面,自 JDK 5 起,Java 类库中新提供了 `java.util.concurrent` 包(通常简称为 JUC 包)。Java 中有两种对并发资源加锁的方式,除了 `synchronized` 之外(不清楚的可以查看我之前写过的一篇关于synchronize文章),还有本篇
2020-04-12 19:39:19 3293
原创 看完这篇恍然大悟,理解Java中的偏向锁,轻量级锁,重量级锁
锁的状态总共有四种:无锁状态、偏向锁、轻量级锁和重量级锁。随着锁的竞争,锁可以从偏向锁升级到轻量级锁,再升级的重量级锁(但是锁的升级是单向的,也就是说只能从低到高升级,不会出现锁的降级)
2020-04-11 16:54:42 11019 7
原创 你会算对象的大小么?不会的话就看看这篇文章吧
使用面向对象语言,离不开的就是对象,现在回过头来思考一下,真的了解所使用语言的对象么?我自己有点心虚,对于Java的对象,我了解的尚且还不够深入,对于一些底层的东西,还有待进一步了解学习。这一篇博文,来讲讲Java对象的大小,学习如何计算Java对象的大小。如果你想深入Java 对象的内存设计,以及在做内存优化时,需要知道每个对象占用的内存的大小,所以这一点还是很重要的,需要好好理解。要计算Java对象占用内存的大小,首先需要了解Java对象在内存中的实际存储方式和存储格式。
2020-04-10 18:49:31 6819
原创 带你理解 Trie 树(前缀树)
在计算机科学中,Trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。一般情况下,不是所有的节点都有对应的值,只有叶子节点和部分内部节点所对应的键才有相关的值。Trie中的键通常是字符串,但也可以是其它的结构。Trie的算法可以很容易地修改为处理其它结构的有序序列,比如一串数字或者形状的排列。比如,Bitwise Trie中的
2020-04-10 16:50:39 590
原创 带你了解有向无环图和拓扑排序
在图论中,如果一个有向图无法从某个顶点出发经过若干条边回到该点,则这个图是一个有向无环图(DAG图)。而提到DAG,就差不多会联想到拓扑排序,拓扑排序是指由某个集合上的一个偏序得到该集合上的一个全序的操作。拓扑排序常用来确定一个依赖关系集中,事物发生的顺序。拓扑排序是对有向无环图的顶点的一种排序,它使得如果存在一条从顶点A到顶点B的路径,那么在排序中B出现在A的后面。DAG在区块链中得到很广泛的应用哦。
2020-04-09 19:19:42 4581 1
原创 聊一聊分支预测,思考为什么使用 if/else 语句会降低程序效率
在Stack Overflow上看到了这样的一个帖子,觉得挺值得学习的,这个帖子是关于讨论为什么处理排序数组比处理未排序数组快?看完后面的回答,然后得到了一个概念,就是“分支预测”,然后针对分支预测查看了许多资料和论文,觉得收获挺多的,所以写一篇博文记录一下。
2020-04-07 17:58:59 11975
原创 非常值得一看的HTTP文章,即基础又深入
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件,图片文件, 查询结果等)。这篇文章带你认识HTTP,包含了丰富的字段表,可以当做API手册,随时查阅。
2020-04-06 12:39:24 392
原创 看完这篇,有人问你synchronized 关键字就不要怂
Java 原生的有两种实现锁的机制,一种是通过底层实现的 synchronized 关键字,另一种是 Doug Lea 在 JDK1.5 实现的 java.util.concurrent 包中的 Lock 类。这两种方法一种是 Java 关键字,另一种是用对象的方式,两种都实现了并发状态下对公共资源的加锁。
2020-04-04 12:07:17 3508
原创 这篇能让你搞懂股票买卖系列问题
写在前面如果觉得写的还不错,有所收获,记得点个关注和点个赞哟,不胜感激。股票买卖的这个系列问题早在之前就在LeetCode就刷了一遍了,不过当时因为一些原因,没有总结成一篇博文。后面又陆陆续续遇到了类似的问题,总感觉股票系列问题的奇技淫巧太多了,平时用来学习和拓展完全是没有问题的,不过如果到了一些正式场合,一般不会想到那些巧妙的办法,怎么办呢?所以这一篇博文就打算稳扎稳打,通过较为详细的讲解,...
2020-04-03 12:02:23 526
原创 Java的几种时间类,你了解多少?
我们使用Java的时候,经常会用到的一个类就是时间类,但是很多时候我们只是匆匆而过,并没有深入去了解时间类。在我开发历程中,碰到了许多有关时间类的问题,所以今天抽空,把Java的时间类阐述总结一下,希望看完这篇的小伙伴能有所收获。本篇文章分四个部分讲,分别是 `Java 基础时间类`、`Java sql 时间类`、`Joda Time 时间类`、 `java.time 时间类`。
2020-04-02 23:56:58 7045 1
1000道 互联网大厂Java工程师面试题(1)(1)(1).pdf
2020-04-03
Eclipse的Properties插件
2018-01-29
JSTL包和standrad包
2018-01-29
java API 1.8
2017-09-19
关于vs2010的使用问题,求助
2017-01-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人