自定义博客皮肤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的博客

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

  • 博客(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

你想要的Java面试题1000道,包括数据库、基础、并发、微服务、Spring、等等面试题,新鲜出炉,请收下。

2020-04-03

JDBC for SQL Server

SQL Server的JDBC驱动,官网下载,用以连接SQL Server.....

2018-02-04

Tomcat 9.0.1

官方打包好的Tomcat 9.0.1绿色版和安装版供你选择,为你安装Tomcat省去时间......

2018-02-04

SQL Server 2017 Dev

SQL Server 2017软件安装程序,直接从官网打包好,为你安装SQL Server省时间......

2018-02-04

SQL Server 2016

SQL Server 2016软件安装程序,直接从官网打包好,为你安装SQL Server省时间......

2018-01-31

Eclipse的Properties插件

Eclipse 安装properties 插件是我们常常需要使用的技巧,现实中,很多框架都使用 了properties文件来配置一些常用的程序参数......

2018-01-29

JSTL包和standrad包

在web项目中使用JSTL标签,JSTL 1.0 的声明是 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core " %> 所使用的web应用服务器resin与tomcat有所区别 resin\lib目录下存在jstl-1.2.jar、jta-101.jar包 而tomcat目录下不存在这两个jar包 结论:在使用tomcat里要在web工程中引入以上两个jar包 以解决http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml错误

2018-01-29

SQL Server 强力删除工具

本工具可以对已安装的SQL Server系列进行强力卸载,简化了卸载的复杂步骤,使得电脑与未安装之前一样使用......

2018-01-24

五子棋(C语言版)

用C语言编写的一个简单的五子棋小程序,有兴趣的小伙伴可以下载看看哟......

2017-12-19

贪吃蛇(C++版)

用C++编写的一个简单是贪吃蛇小程序,有兴趣的小伙伴可以下载看看......

2017-12-19

JAVA8_API CHM版

最新的Java8_API 中文版,可以帮助你更快地熟悉java,是java日常开发中的好工具,对你java的学习会有帮助

2017-11-29

JAVA_API_1.8 中文版

最新的Java_API_1.8 中文版,可以帮助你更快地熟悉java,是java日常开发中的好工具,对你java的学习会有帮助

2017-09-19

java API 1.8

最新java API,1.8版本,包含java库中的的各种函数的解释与使用,是一款不可多得的工具。java api是一款使用Java编程的使用说明书,里面提供了大量的程序开发分类说明,并提供API函数开发的集体编程方式,可以帮助用户更加了解Java程序的运行模式,增加程序员对开发环境的了解程度,让您在编程中尽量的减少错误,提供开发的精度......

2017-09-19

2017 ICPC实训资料

囊括金牌班、精英班、提高班和基础班的学习资料,对于想要初入还是深入ACM的朋友都挺有用的......

2017-08-27

2017前端面试题整理汇总

Web前端开发,最新的各大公司的面试题,有兴趣的朋友拿去学习......

2017-08-23

C++API中文版

网罗了几乎是C语言、C++以及STL中的所有函数,详细介绍各种函数的所属及用法,不管对于新手还是“老手”,这都是一个不错的帮助工具......

2017-08-22

仓库管理系统(C++版)

除了涉及各项基本的操作之外,包括菜单的登录系统,管理员身份操作,数据文件的保存等等......

2017-08-19

JavaScript权威指南第六版例题源码

JavaScript权威指南第六版源码,官网直接下载的,可靠......

2017-08-19

高校社团助手1.0(QT版)

使用Qt作为界面设计的语言,迎合新手用于研究Qt的运用。内含基础的功能登录、删除、查找、地图导航......

2017-08-06

文件压缩程序(基于哈夫曼C++算法)

该程序能压缩文档、图片、小视频等文件,并且基于C++的算法实现,简单易懂......

2017-08-01

学生成绩管理系统(C语言版)

基本的搜索、查找、删除。排序等等的功能齐全,菜单界面设计较为合理......

2017-08-01

数据结构—高校社团助手源码(C++)

里含有成员数据管理、社团数据管理、活动及校园地图等基本内容。另含有自主设计的数据内部共享的算法等功能......

2017-08-01

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

TA关注的人

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