摘要:动态规划在编程中有着广泛的应用,对于某些问题我们可以通过动态规划显著的降低程序的时间复杂度。本质上动态规划并不是一种算法,而是解决一类问题的思想。本篇博客通过一些非常简单而又经典的问题(比如数塔、0-1背包、完全背包、走楼梯问题、最长公共子序列等)来帮助大家理解动态规划的一般套路。 欢迎探讨,如有错 阅读全文
posted @ 2019-06-08 18:19 nullzx 阅读 (765) 评论 (1) 编辑
摘要:进行JavaWeb开发,我们总共需要5个步骤:JDK的安装与配置;Tomcat的安装;EclipseEE的安装与配置;创建工程;编写代码并运行。安装的三个软件在版本和适用构架上要一致。当JDK是32位时,Tomcat和EclipseEE也都必须是32位的软件。在版本的选择上JDK8版本可以使用Tom 阅读全文
posted @ 2019-05-20 00:24 nullzx 阅读 (109) 评论 (0) 编辑
摘要:简介:本文主要介绍了简单二分神经网络的公式推导过程。 欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 1. 数据表示说明 定义一个名为n的列表 n[i]表示第i层的节点数 i从0开始 L = len(n)-1表示神经网络的层数,网络的层 阅读全文
posted @ 2018-06-27 15:07 nullzx 阅读 (1486) 评论 (0) 编辑
摘要:欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 我们首先提一个问题, B+树比平衡二叉树在索引数据方面要快么? 大多数人可能认为肯定还是B+树快,毕竟存储同样多的数据,100阶的B+树肯定比平衡二叉树的高度要低的多。但是别忘了B树在一个 阅读全文
posted @ 2018-05-02 00:04 nullzx 阅读 (3301) 评论 (1) 编辑
摘要:简介:本文主要介绍了JAVA NIO中的Buffer, Channel, Selector的工作原理以及使用它们的若干注意事项,最后是利用它们实现服务器和客户端通信的代码实例。 欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 1. By 阅读全文
posted @ 2018-04-24 19:10 nullzx 阅读 (3664) 评论 (0) 编辑
摘要:简介:本文主要介绍了B树和B+树的插入、删除操作。写这篇博客的目的是发现没有相关博客以举例的方式详细介绍B+树的相关操作,由于自身对某些细节也感到很迷惑,通过查阅相关资料,对B+树的操作有所顿悟,写下这篇博客以做记录。由于是自身对B+树的理解,肯定有考虑不周的情况,或者理解错误的地方,请留言指出。 阅读全文
posted @ 2018-04-06 23:30 nullzx 阅读 (53474) 评论 (25) 编辑
摘要:简介: 本文主要介绍Java8中的并发容器ConcurrentHashMap的工作原理,和其它文章不同的是,本文重点分析了不同线程的各类并发操作如get,put,remove之间是如何同步的,以及这些操作和扩容操作之间同步可能出现的各种情况。由于源代码的分析肯定会有所纰漏,希望大家积极指出错误。 欢 阅读全文
posted @ 2018-03-25 21:55 nullzx 阅读 (2993) 评论 (3) 编辑
摘要:欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 二分搜索使用的前提是数组必须有序,在本文中,我们用lo(low)表示查找范围的起始下标,hi(hight)表示查找范围的结束下标,mid表示lo和hi的中间位置。 1. 一般情况二分搜索 阅读全文
posted @ 2018-02-08 21:04 nullzx 阅读 (197) 评论 (0) 编辑
摘要:简介: 割边和割点的定义仅限于无向图中。我们可以通过定义以蛮力方式求解出无向图的所有割点和割边,但这样的求解方式效率低。Tarjan提出了一种快速求解的方式,通过一次DFS就求解出图中所有的割点和割边。 欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 1. 割点与桥(割边)的定义 在无向图中才有割边和割点的定义 割点:无向连通图... 阅读全文
posted @ 2017-12-04 00:19 nullzx 阅读 (8138) 评论 (7) 编辑
摘要:简介: 生产者、消费者模型是多线程编程的常见问题,最简单的一个生产者、一个消费者线程模型大多数人都能够写出来,但是一旦条件发生变化,我们就很容易掉进多线程的bug中。这篇文章主要讲解了生产者和消费者的数量,商品缓存位置数量,商品数量等多个条件的不同组合下,写出正确的生产者消费者模型的方法。 欢迎探讨 阅读全文
posted @ 2017-11-07 12:51 nullzx 阅读 (2485) 评论 (4) 编辑
摘要:简介: 本文主要介绍基于分治方式(递归)和枚举方式(循环)来构建指定字符串的全排列方法,两种方法都可以解决重复元素的全排列 欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 1. 基于分治方式(递归实现) 1)一个元素的全排列只有一种 2 阅读全文
posted @ 2017-10-22 23:57 nullzx 阅读 (4417) 评论 (0) 编辑
摘要:简介: 本文是对Java的类加载机制,Class对象,反射原理等相关概念的理解、验证和Java虚拟机中内存布局的一些推测。本文重点讲述了如何理解Class对象以及Class对象的作用。 欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 1. 类加载机制 当我们编写好一个“.java”文件,通过javac编译器编译后会形成一个“.c... 阅读全文
posted @ 2017-10-09 13:02 nullzx 阅读 (2666) 评论 (0) 编辑
摘要:简介:本文以一个简要的代码示例介绍ThreadLocal类的基本使用,在此基础上结合图片阐述它的内部工作原理,最后分析了ThreadLocal的内存泄露问题以及解决方法。 欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 1. Threa 阅读全文
posted @ 2017-09-19 19:10 nullzx 阅读 (2596) 评论 (0) 编辑
摘要:简介: 本文是博主自身对AC自动机的原理的一些理解和看法,主要以举例的方式讲解,同时又配以相应的图片。代码实现部分也予以明确的注释,希望给大家不一样的感受。AC自动机主要用于多模式字符串的匹配,本质上是KMP算法的树形扩展。这篇文章主要介绍AC自动机的工作原理,并在此基础上用Java代码实现一个简易 阅读全文
posted @ 2017-09-09 21:32 nullzx 阅读 (7285) 评论 (3) 编辑
摘要:简介: 本文是主要介绍,并发容器CopyOnWriteArrayList和CopyOnWriteArraySet(不含重复元素的并发容器)的基本原理和使用示例。 欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 1. CopyOnWrit 阅读全文
posted @ 2017-08-30 23:15 nullzx 阅读 (406) 评论 (0) 编辑
摘要:简介: 本文主要介绍JAVA中的四种引用: StrongReference(强引用)、SoftReferenc(软引用)、WeakReferenc(弱引用)、PhantomReference(虚引用)的作用。同时我们还将介绍ReferenceQueue和WeakHashMap的功能和使用示例。 欢迎 阅读全文
posted @ 2017-08-21 19:09 nullzx 阅读 (1903) 评论 (1) 编辑
摘要:简介: 本文是系列博客的第一篇,主要讲解和分析正则表达式规则以及JAVA中原生正则表达式引擎的使用。在后续的文章中会涉及基于NFA的正则表达式引擎内部的工作原理,并在此基础上用1000行左右的JAVA代码,实现一个支持常用功能的正则表达式引擎。它支持贪婪匹配和懒惰匹配;支持零宽度字符(如“\b”, 阅读全文
posted @ 2017-06-28 23:23 nullzx 阅读 (3041) 评论 (4) 编辑
摘要:欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 1. 优先队列与索引优先队列 优先队列的原理大家应该比较熟悉,本质上就是利用完全二叉树的结构实现以log2n的时间复杂度删除队列中的最小对象(这里以小堆顶为例)。完全二叉树又可以通过数组下 阅读全文
posted @ 2017-03-26 23:33 nullzx 阅读 (3542) 评论 (1) 编辑
摘要:欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 1. 算法的原理 以源点开始,以源点相连的顶点作为向外延伸的顶点,在所有这些向外延伸的顶点中选择距源点最近的顶点(如果有多个距离最近的顶点,任意选择一个即可)继续向四周延伸(某个顶点被选作 阅读全文
posted @ 2017-03-14 13:00 nullzx 阅读 (2000) 评论 (1) 编辑
摘要:欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 1. 定义 连通分量:在无向图中,即为连通子图。 上图中,总共有四个连通分量。顶点A、B、C、D构成了一个连通分量,顶点E构成了一个连通分量,顶点F,G和H,I分别构成了两个连通分量。 强 阅读全文
posted @ 2017-02-24 11:54 nullzx 阅读 (27491) 评论 (7) 编辑
摘要:欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 相关博客: 从2-3-4树到红黑树(上) 从2-3-4树到红黑树(中) 1. 实现技巧 为了简化代码和减少不必要的开销,在具体的实现中我们定义一个伪根节点ROOT且只定义一个NIL节点。伪 阅读全文
posted @ 2016-12-17 19:53 nullzx 阅读 (1479) 评论 (4) 编辑
摘要:欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 相关博客: 从2-3-4树到红黑树(上) 从2-3-4树到红黑树(下) 1. 红黑树的定义 2-3-4树和红黑树是完全等价的,由于绝大多数编程语言直接实现2-3-4树会非常繁琐,所以一般是 阅读全文
posted @ 2016-12-03 12:41 nullzx 阅读 (5689) 评论 (0) 编辑
摘要:欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 相关博客: 从2-3-4树到红黑树(中) 从2-3-4树到红黑树(下) 1. 2-3-4树的定义 2-3-4树是一种阶为4的B树。它是一种自平衡的数据结构,可以保证在O(lgn)的时间内完 阅读全文
posted @ 2016-11-28 20:19 nullzx 阅读 (7262) 评论 (2) 编辑
摘要:欢迎探讨,如有错误敬请指正 如需转载,请注明出处http://www.cnblogs.com/nullzx/ 1. AVL定义 AVL树是一种改进版的搜索二叉树。对于一般的搜索二叉树而言,如果数据恰好是按照从小到大的顺序或者从大到小的顺序插入的,那么搜索二叉树就对退化成链表,这个时候查找,插入和删除的时间都会上升到O(n),而这对于海量数据而言,是我们无法忍受的。即使是一颗由完全随机的数据构造... 阅读全文
posted @ 2016-11-17 21:47 nullzx 阅读 (1880) 评论 (2) 编辑
摘要:欢迎探讨,如有错误敬请指正 如需转载,请注明出处http://www.cnblogs.com/nullzx/ 1. 简易版本TimSort排序算法原理与实现 TimSort排序算法是Python和Java针对对象数组的默认排序算法。TimSort排序算法的本质是归并排序算法,只是在归并排序算法上进行 阅读全文
posted @ 2016-10-30 23:47 nullzx 阅读 (2041) 评论 (0) 编辑