0%

在上一次的文章中,我们介绍了图的一些基础知识及图的基础搜索算法之中的广度优先搜索BFS。本文我们介绍另外一种基础的图搜索算法——DFS 深度优先搜索

阅读全文 »

图,一种可以表示对象复杂连接关系的数据结构。其较可以其他数据结构而言,可以很方便描述地图、电路、网络等拓扑结构。本文将介绍图的描述方法和基本的图搜索算法——BFS 广度优先搜索

阅读全文 »

哈希表(又称作散列表)这种数据结构,通过计算元素在哈希表中的存储位置,可以快速判定该元素是否存在于该哈希表中,而无需遍历哈希表中全部元素一一进行比较。看上去哈希表这种数据结构是一个很好的工具,但是当数据量非常大达到亿级别,再加上为了解决哈希冲突的负载因子的缘故,使得哈希表的内存空间开销非常巨大,甚至会出现机器内存都无法支撑的情况。这种超大规模数据的场景下,如何快速判定一个元素是否在指定元素集合中?本文将详细介绍一种概率模型的数据结构——布隆过滤器(Bloom Filter)

阅读全文 »

Java List 迭代器用于遍历、删除等相关操作——Iterator、ListIterator,前者只能向后遍历,而后者则通过继承前者以提供了向前遍历的方法。本文将结合JDK源码解释迭代器遍历过程中删除元素的相关细节,具体以ArrayList为例进行分析,LinkedList迭代器与其虽在实现上略有差别,但是设计思想大同小异

阅读全文 »

RabbitMQ是一个基于AMQP协议(Advanced Message Queuing Protocol,高级消息队列协议)的开源消息中间件,用于程序之间的消息、数据传递服务。常见的场景是将程序中原有的耗时较长的调用拆分为前-后两部分,即,生产者和消费者。生产者负责向消息队列发送待处理数据,而消费者则从消息队列接收数据,完成原有程序中的长耗时的处理。异步处理的方式,一方面提高了生产者的即时响应能力和整体的处理效率,另一方面也可以实现程序之间的解耦。本文将介绍如何SpringBoot下实践RabbitMQ消息队列

阅读全文 »

一年又一年,即将过去的2019年,是艰苦奋斗的一年,是转型阵痛的一年,是科学攻坚的一年

我曾踏足山巅,也曾跌入低谷,这两者都让我受益良多 ——瓦洛兰之盾 · 塔里克

阅读全文 »

RabbitMQ消息队列在企业开发中已经越来越常见,其是一个基于AMQP协议(Advanced Message Queuing Protocol,高级消息队列协议)的开源消息中间件。这里我们将就RabbitMQ所支持的AMQP 0.9.1协议简单地说一说

阅读全文 »

Java中的条件运算符(又称三目运算符,形如 b ? x : y),相信很多人都不陌生。其只需一条语句即可完成 if else 代码块的功能,故日常开发中也是高频操作,但是稍有不慎、姿势不对,就会掉入自动拆箱的陷阱中发生NPE(Null Pointer Exception)

阅读全文 »

之前的文章介绍了在Linux中直接部署服务(Redis, MySQL),其中部署过程十分繁琐,经过高人指点,可以使用Docker技术实现快速部署。故本文介绍如何在CentOS 7 环境下通过Docker技术快速部署消息中间件RabbitMQ消息队列服务

阅读全文 »

Redis,目前非常流行的内存数据库,其广泛应用于Web场景的缓存技术下。本文简要介绍在SpringBoot下的Redis的实践应用

阅读全文 »

自从有了二奶机Surface后,感觉每次在多台本本上部署开发环境,太蛋疼。鉴于此,最近特意买个云服务器,在云端部署了Redis、MySQL数据库服务,废话不多说,快进入正题吧……

阅读全文 »

tree命令可用于生成漂亮的目录结构图,在此之前,我一直以为是手打的……

阅读全文 »

统计学分两大类:描述统计学和推断统计学。前者是通过指标参数(比如,平均数,四分位数,标准差等)描述和研究数据集的整体情况;后者则主要研究如何利用样本数据集来推断总体数据特征。而推断统计学中的假设检验: 即是指在一定的假设条件下根据样本来推断总体特征。本文将对假设检验中的基本理论做介绍

阅读全文 »

很多时候,我们期望去拷贝某个对象的副本。在Java中如果使用 = 赋值操作,其实际上会让两个引用变量指向同一个对象;而如果重新new一个新对象,再对各字段进行赋值操作时,将十分繁琐。为此在Java的Object类中,提供了一个clone方法,其可拷贝对象副本

阅读全文 »

在计算机科学中,参数传递的形式主要有以下2种: 值调用和引用调用,为了说明Java在传参过程中的参数传递方式,我们首先需要对上述中2种调用形式的定义做清晰的介绍

阅读全文 »

一般情况下,代码中的方法都是顺序执行,下一行代码的方法调用(method B)必须等上一行的方法(method A)执行完成之后才会执行,但是如果method A的执行耗时很长,而且其结果又不对后续的方法产生影响,则可以通过异步调用的方式来执行它,使得整个方法流程不必因等待method A而造成阻塞,在Spring Boot中,提供 @Async 注解来让开发者可以快捷高效地使用该异步调用

阅读全文 »

Vim,作为神之编辑器,大部分开发人员都对它是有一定的了解。而作为如此一款受欢迎的编辑器,其所拥有插件自然也是非常丰富的。为了能够更好的管理众多的Vim插件,这里将对 Vim 插件管理器 Vundle 配置、使用进行介绍

阅读全文 »

平面三点共线判定问题,常见的方法就是通过计算任意两点的斜率看是否相等来判定。但是由于斜率可能不存在、可能为零等特殊情况,处理起来略显繁琐。其实,我们可以通过利用三角形的面积公式(三阶行列式)计算三点构成三角形面积是否为零,即可优雅简洁地实现平面三点是否共线的判定

阅读全文 »

Java下的定时任务实现有Timer,Spring,QuartZ等,这里我们介绍Spring中定时任务的应用,其通过 @Scheduled 注解即可轻松实现

阅读全文 »

MySQL不仅内置了一些常用函数,同时也支持自定义函数,来满足开发者的需求

阅读全文 »