- 博客(211)
- 资源 (110)
- 收藏
- 关注
原创 深入理解Aho-Corasick自动机算法
0.前言 我总是对那些具有状态转移过程的算法,心怀敬意。 例如:递归、递推、动规、DAT 以及现在要说的 AC 自动机算法。 数学真是优美! —— 致那些牛逼到不行的数学家们1.版权说明商业转载请联系作者获得授权,非商业转载请注明出处。本文作者:Q-WHai发表日期: 2015年...
2015-10-24 13:04:39 23670 7
原创 FFmpeg常用命令合集
概述最近工作中涉及到一些视频处理的技术,比如获取视频时长、获取视频关键帧、视频剪辑等。版权说明著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。本文作者:Q-WHai发表日期: 2019年07月16日本文链接:https://qwhai.blog.csdn.net/article/details/99719520来源:CSDN更多内容:分类 >>...
2019-08-19 13:09:24 1428
原创 SymmetricDS 完全配置安装手册
SymmetricDS 是一个基于 Java 的数据库同步框架。本文并不打算带你熟悉 SymmetricDS 的实现原理,只是从安装与配置入手,让你感受一下 SymmetricDS 运行效果。本文希望尽可能全面且细致地讲解配置过程,而不至于你按照本文的教程安装,出现无法使用的情况。以下是我在安装环境时配置的一些记录,希望于你有益。
2016-07-12 18:04:24 10033 8
原创 决策树之 C4.5 算法
由于 C4.5 算法是建立在 ID3 算法基础之上的,所以在讲解 C4.5 的时候,会有很多与 ID3 重合的内容,这里就不过多冗余地说明了。本文旨在阐明 ID3 存在的问题,以及 C4.5 的改进方案。
2016-07-06 16:42:54 10845 9
原创 决策树之 ID3 算法
ID3 算法是构建决策树算法中一种非常重要的算法,可以说它是学习决策树算法的基础吧。比如,下一篇博客要说的 C4.5 决策树,就是基于 ID3 上的一个改进算法。还有 CART、随机森林算法,都是后面要讲解的。
2016-07-06 13:05:54 14967 2
原创 MapReduce 应用:TF-IDF 分布式实现
本文要说的 TF-IDF 分布式实现,运用了很多之前 MapReduce 的核心知识点。算是 MapReduce 的一个小应用吧。
2016-06-24 00:29:45 9611 3
原创 MapReduce 进阶:Partitioner 组件
Partitioner 组件可以让 Map 对 Key 进行分区,从而将不同分区的 Key 交由不同的 Reduce 处理。如果这么说让你觉得有一些笼统的话,那么本文可能很适合你,因为本文会依据一个具体的实例进行讲解。
2016-06-21 23:47:47 14819
原创 Hadoop 核心编程之 HDFS 的文件操作
本文以代码为主,并附以简短的说明,帮助你理解代码的逻辑,以及一些注意事项。你可以将本文的代码封装成一个工具类,这样以后需要调用时候,就可以复用了。
2016-06-21 16:37:45 4626 2
原创 MapReduce进阶:多路径输入输出
当我们得意于 MapReduce 从一个数据输入目录,把数据经过程序处理之后输出到另一个目录时。可能你正在错过一些更好的方案,因为 MapReduce 是支持多路径的输入与输出的。比如,你一个项目中的多个 Job 产生了多个输出路径,后面又需要另一个 Job 去处理这些不路径下的数据。你要怎么办?暂停程序后,手动处理?看完本文,我想你会给你的这种想法来上一记耳光。
2016-06-18 21:29:50 6503
原创 MapReduce进阶:多MapReduce的链式模式
我们不可能一直沉浸在 WordCount 的成功运行当中,就像之前学习 Java 或是其他编程语言不会着迷于 HelloWord 一样。前面的 WordCount 程序只有一个 Mapper 和一个 Reducer 参与,也就是说只有一个 Job 参与。而一个 Job 在通常情况下是无法满足实际的开发需求,我们需要有更多的 Job 参与其中,并贡献自己的力量。
2016-06-18 16:20:50 4691
原创 排序算法系列:基数排序
今天要说的这个排序算法很特殊,它不需要直接对元素进行相互比较,也不需要将元素相互交换,你需要做的就是对元素进行“分类”。这也是基数排序的魅力所在,基数排序可以理解成是建立在“计数排序”的基础之上的一种排序算法。在实际项目中,如果对效率有所要求,而不太关心空间的使用时,我会选择用计数排序(当然还有一些其他的条件),或是一些计数排序的变形。
2016-06-16 23:14:07 83382 22
原创 从 WordCount 到文档的倒排索引详解
在很多大数据的应用场景中我们都有可能看到倒排索引的身影,我第一次接触倒排索引是在学习 Lucene 全文检索框架的时候。本文会从倒排索引开始说明,再补充讲解倒排索引文档及带权重的倒排索引文档。
2016-06-13 18:10:13 10815
原创 HBase Shell 的基本操作
前面写了一些 Hadoop, Zookeeper 及 Hbase 分布式环境搭建的文章。或许你在搭建的过程中遇到了一些不如意的事情,但我相信总是可以解决的。如果你已经完成了环境的搭建,那么就可以尽情玩耍了。
2016-06-12 15:10:45 6919
原创 HBase 0.98 分布式集群安装详解
这篇博客应该很早就发表了,只是当时环境搭建好了之后没有及时做笔记,后来又不想重新搭建,所以才拖到今天。还有就是这篇博客安装的是 Hbase-0.98 的版本,与之前说要安装 0.96 的说明不吻合,这里统一说明,之前的博客就不更改了。还有一点就是,本文的安装过程很顺,没有出现什么启动不了,或是运行异常的行为。如果你在安装的过程出现了一些不好的事情,那么你可能会在本文中找到一些蛛丝马迹,也可能一无所获。只是我希望你可以
2016-06-08 00:02:00 5973
原创 Java 设计模式——状态模式
很多人在说状态模式的时候总拿策略模式来进行对比,可能他们的类图会有一点类似,可我却不认为他们有多么相像。你可以阅读《Java设计模式——策略模式》这篇博客,并与本文对比,以找到蛛丝马迹。他们最根本的差异在于策略模式是在求解同一个问题的多种解法,这些不同解法之间毫无关联;状态模式则不同,状态模式要求各个状态之间有所关联,以便实现状态转移。
2016-06-06 16:46:00 15584 2
原创 Java 设计模式——外观模式
今天要说的外观模式是一个相对简单的设计模式,而且在日常的开发中,可能你也会时常使用它,只是你可能并未想过这是一个设计模式。本文会从一些实例着手,来对本文要说明的外观模式进行尽可能全面的讲解。希望于你有益。
2016-06-06 00:11:17 6410 2
原创 排序算法系列:归并排序算法
上一篇我们说了一个非常简单的排序算法——选择排序。其复杂程序完全是冒泡级的,甚至比冒泡还要简单。今天要说的是一个相对比较复杂的排序算法——归并排序。复杂的原因不仅在于归并排序分成了两个部分进行解决问题,而是在于,你需要一些算法的思想支撑。
2016-05-27 16:32:19 24558 3
原创 排序算法系列:选择排序算法
选择排序算法也需要将一个完整的序列切分成两个部分,一个部分有序,一个部分无序。这一点它和插入排序是一致的。在前面我们说插入排序是将第 [i + 1] 个元素插入到第一部分的有序序列中,如果你还有印象的话。那么在选择排序中则是第 j 个元素(i < j <= n),插入到第 i 个位置。
2016-05-24 17:20:39 3596
原创 ZooKeeper 3.4.5 分布式环境搭建详解
上一篇中,我们说到了关于 Hadoop-2.2.0 集群的搭建。在这个系列中,Zookeeper 是必不可少的。本文会介绍 Zookeeper-3.4.5 的安装,后面会介绍 HBase-0.96 的安装。希望于你有益。
2016-05-18 17:25:13 7477
原创 Java 设计模式——组合模式
有时我们可能会被要求处理一个层级结构明显的对象,比如上下级的公司员工、比如层级嵌套的文件夹,还有丰富多彩的美食菜单。可是,我们可能要屡试不爽地编写深度搜索代码、要小心翼翼地编写递归逻辑。现在你可以忘掉这些,学习一些新的技能,让你秒刷副本。
2016-05-17 17:39:45 19650 1
原创 从 WordCount 到 MapReduce 计算模型
虽然现在都在说大内存时代,不过内存的发展怎么也跟不上数据的步伐吧。所以,我们就要想办法减小数据量。这里说的减小可不是真的减小数据量,而是让数据分散开来。分开存储、分开计算。这就是 MapReduce 分布式的核心。
2016-05-10 23:42:47 11946
原创 Hadoop 2.2.0 集群搭建
在前面我有写过关于 Hadoop 集群的搭建,不过之前的 Hadoop 是 1.x 版本的。目前是基于 2.x 版本的 Hadoop,与之前的 1.x 版本的差别还是挺大的。以及更为详细的 SSH 免密码互连登录的配置过程。所以,这里也把我搭建的过程记录下来了。希望于你有益。
2016-05-04 17:56:18 12118 1
原创 DNS 截持模拟及环境搭建
这里的 DNS 服务器是配置在主机 172.16.2.51 上的,DNS 服务器上针对 www.baidu.com 的域名进行重定向。另外有两台 Android 机连接到此 DNS 服务器。第一台直接与此 DNS 服务器进行交互,第二台通过第一台共享的热点与 DNS 进行交互。
2016-05-03 18:50:29 6429
原创 Java 消息机制之回调详解
Java 中的回调机制是一个比较常见的机制,只是有可能在你的程序中使用得比较少,在一些大型的框架中回调机制随处可见。而在之前的博文《Java设计模式——观察者模式》及 Android 中对 ListView 的相关操作也有回调身影。本文就通过一些具体的实例,慢慢走近 Java 的回调机制。
2016-04-24 03:44:38 8587 2
原创 Scapy 伪造网络数据包
这里说明的数据包伪造只是伪造数据包发送的源地址。网络上有一些有人说可以对数据包内容的伪造(修改)和转发,不过目前还没找到这一点是如何完成的,甚至是在官方提供的文档上也没有看到这一类操作的说明。
2016-04-20 10:02:16 21913
原创 LeetCode-73. Set Matrix Zeroes
Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.Could you devise a constant space solution?
2016-04-17 22:46:42 4062 1
原创 交互式数据包处理程序 Scapy 入门指南
Scapy 是一个强大的交互式数据包处理程序(使用python编写)。它能够伪造或者解码大量的网络协议数据包,能够发送、捕捉、匹配请求和回复包等等。它可以很容易地处理一些典型操作,比如端口扫描,tracerouting,探测,单元测试,攻击或网络发现(可替代hping,NMAP,arpspoof,ARP-SK,arping,tcpdump,tethereal,P0F等)。最重要的他还有很多更优秀的特性——发送无效数据
2016-04-13 11:49:25 25029
原创 排序算法系列:Shell 排序算法
概述希尔排序(Shell Sort)是 D.L.Shell 于 1959 年提出来的一种排序算法,在这之前排序算法的时间复杂度基本都是 O(n2n^{2}) 的,希尔排序算法是突破这个时间复杂度的第一批算法之一。希尔排序是一种插入排序算法。
2016-04-12 00:54:00 8709 1
原创 单例模式在多线程中的安全性研究
关于一般单例模式的创建和分析在我的另一篇博客《Java设计模式——单件模式》中有详细说明。只是在上篇博客中的单例是针对于单线程的操作,而对于多线程却并不适用,本文就从单例模式与多线程安全的角度出发,讲解单例模式在多线程中应该如何被使用。
2016-04-06 14:13:33 4360
原创 Java 多线程之 synchronized 和 volatile 的比较
在做多线程并发处理时,经常需要对资源进行可见性访问和互斥同步操作。有时候,我们可能从前辈那里得知我们需要对资源进行 volatile 或是 synchronized 关键字修饰处理。可是,我们却不知道这两者之间的区别,我们无法分辨在什么时候应该使用哪一个关键字。本文就针对这个问题,展开讨论。
2016-04-05 09:50:24 5810 4
原创 Java设计模式——桥模式
桥模式(Bridge)是为了解决将抽象部分与实现部分分离,好让他们都在自己的维度上有多维度地变化。这句话是好理解的,只是我在学习完桥模式之后,存在一些疑问,还好现在想通了。现在我就桥模式的设计思想和我的疑问一并发出,希望于你有益。
2016-03-31 11:07:30 4039 3
原创 全排列算法的全面解析
对数组进行全排列是一个比较常见问题,如果是一个比较喜欢考算法的公司(貌似一些大公司都比较喜欢考算法),那么估计就会考察应聘者这个全排列的问题了(就算不让你编写完整代码,也会让你描述大致的思路)。这个问题也难也难,说易也易,下面我就来对这个问题进行一个比较全面的解析吧。如有遗漏,还望指正。
2016-03-27 00:10:50 42224 15
原创 排序算法系列:插入排序算法
直接插入排序(Straight Insertion Sort)的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。
2016-03-24 08:53:18 13246 5
原创 MySQL多表查询核心优化
在一般的项目开发中,对数据表的多表查询是必不可少的。而对于存在大量数据量的情况时(例如百万级数据量),我们就需要从数据库的各个方面来进行优化,本文就先从多表查询开始。
2016-03-22 17:00:33 33002 5
原创 Python命令行选项参数解析策略
概述在Python的项目开发过程中,我们有时需要为程序提供一些可以通过命令行进行调用的接口。不过,并不是直接使用 command + 当前文件 就ok的,我们需要对其设置可选的各种各样的操作类型。所以,这种情况下我们就有必要对传入的参数进行解析操作。下面就此问题提出几种不同的解决策略,希望于你有益。版权说明著作权归作者所有。 商业转载请联系作者获得授权,非商业转载请注明出处。
2016-03-18 10:30:14 8939
原创 深入理解Lambda
概述 Lambda是一个表达式,也可以说它是一个匿名函数。然而在使用它或是阅读Lambda代码的时候,却显得并不那么容易。因为它匿名,因为它删减了一些必要的说明信息(比如方法名)。下面就来说说Lambda是如何进行转换和工作的吧。版权说明著作权归作者所有。 商业转载请联系作者获得授权,非商业转载请注明出处。 作者:Q-WHai 发表日期: 2016年3月10日 链接:
2016-03-10 17:18:43 45436 5
原创 Java设计模式——迭代器模式
概述 网上大部分人说迭代模式的时候,总是以某一种可遍历的对象为例进行介绍。这是可行的,这也是迭代模式的基本原型。当我看到《Head Frist设计模式》中迭代模式的时候,感觉要是能从另一个角度来说明,可能更能够体现迭代模式的威力所在。 本文介绍的这种迭代模式,倒是更像是适配器-迭代器模式。希望于你有益~版权说明著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注...
2016-03-04 12:39:41 5377 2
原创 Java设计模式——原型模式
概述 原型模式是为了解决一些不必要的对象创建过程。当Java JDK中提供了Cloneable接口之后,原型模式就变得异常的简单了。虽然由于Cloneable的引入使用程序变得更简单了,不过还是有一些需要说明和注意的东西在里面的。文本就详细讲解一下这些注意事项吧。版权说明著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。本文作者:Q-WHai发表日期: ...
2016-03-03 13:50:15 4080
原创 排序算法系列:快速排序算法
概述 在前面说到了两个关于交换排序的算法:冒泡排序与奇偶排序。 本文就来说说交换排序的最后一拍:快速排序算法。之所以说它是快速的原因,不是因为它比其他的排序算法都要快。而是从实践中证明了快速排序在平均性能上的确是比其他算法要快一些,不然快速一说岂不是在乱说? 本文就其原理、过程及实现几个方面讲解一下快速排序算法。版权声明著作权归作者所有。 商业转载请联系作者获得授权,...
2016-03-01 15:40:07 49953 8
Java设计模式-装饰者模式
2015-05-20
AndroidDemoRecyclerView
2015-05-18
MapReduce多路径输入输出
2016-06-18
RSA算法源码
2016-02-19
Java实现与FTP服务器的数据传输2
2015-11-12
Java实现与FTP服务器的数据传输
2015-11-11
Aho-Corasick自动机实现
2015-10-23
DoubleArrayTrie(双数组Trie树)
2015-10-22
字典树(Trie)的基本使用
2015-10-16
算法:Java对拼音进行智能切分
2015-10-13
模式匹配之KMP算法(Java版)
2015-09-16
获取网站标题和描述及对相关信息进行分词处理
2015-09-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人