1. 文档分割的shingling算法

    shingling算法是最常见的文档分割算法,说白了就是将一个文档分解成由短字符构成的字符串集合。分割后的文档就可以通过Jaccard相似度等简单的度量标准进行相似度检测了。 k-shingling 对于任意一篇文档,我们把他当成一个字符串,那么他的k-shingling集合就被定义为文档中所有长度为k的子字符串的集合。比如字符串“abcdabd”,他的2-shingling集合就是{ab,bc,cd,da,bd}。 当然,所有类型的子字符串只会在集合中出现一次。不过实际的文档中可能会有…

    Algorithm, BigData阅读全文

  2. SDL2安装指南

    SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。下面主要介绍一下在Windows下搭建SDL2开发环境的过程。 下载 下载自SDL官网,在Development Libraries中选择相应的版本。我这里选…

    C/C++, SDL阅读全文

  3. QR二维码植入图片方法简析

    我们平时都经常见到二维码,用手机扫一扫就会显示当中的内容,内容大多是url的格式,方便人们访问站点。不过对于人来说,直接看二维码却并没有任何良好的印象。因此很多商家为了让自家的二维码更加形象,会想方设法地让自家的二维码更加形象生动,于是也就诞生出了很多种图像植入的方法。今天就把这些方法稍微汇总一下。 二维码 二维码可以说是现今人们生活中经常接触到的东西,简单的讲其实就是把条形码中的竖线变成点,从而增加一个数据维度,达到增加数据内容的目的。事实上二维码的种类有很多,曾经流行的二维码规范大概有…

    QR Code, Anecdote, MathJax阅读全文

  4. 伽罗华域性质简析

    伽罗华(伽罗瓦)域名字听起来挺酷的,其实就是有限域。域这个东西由于他能够进行满足加减乘除四则运算,在加密解密、编码解码当中应用非常广泛。但是我们常见的实数域却无法直接在计算机中精确的保存,因此有限域这类能够支持四则运算而且能够用有限的编码精确保存的东西就非常有用了。 (顺带提一句,伽罗瓦这个人的生平很有意思,如果他活久点,说不能成为跟高斯、欧拉一样档次的人。。。) 域 域的定义在各种与离散数学相关的地方都能看到,看上去定义的十分啰嗦,说白了其实就是从有理数抽象出来的一种集合,能加能减能乘…

    MathJax, Maths阅读全文

  5. Reed-Solomon纠删码简析

    Reed-Solomon编码(又叫RS编码、里德-所罗门编码)作为一种前向纠错编码,是一种很常见的数据冗余技术,也就是通过对数据增加冗余部分来保证当数据丢失时能够在一定程度上进行恢复。最典型的应用就是在现在最流行的QR二维码的编码设计中。 实现功能 他所解决的问题是:给定$n$个数据块$(d_1,d_2,d_3,...,d_n)$,对于一个确定的正整数$m$, RS编码能够根据这$n$个数据块生成$m$个校验块, $(c_1, c_2,..., c_m)$。  我们能够做到,从这$m+n$…

    MathJax, Maths, Cryptography阅读全文

  6. 幂定律和齐夫定律

    幂定律 幂定律又叫幂律,大量的事实表明,很多现象都服从类似于幂函数$y=cx^a$的形式,其中$a$是幂,而且通常是负数。 幂定律可以非常直观的用马太效应(Matthew effect)解释,说白了其实就是所谓的“富者越富,穷者越穷”。例如图书的销售,本来销售好的图书可能会发布更多的广告,做更多的营销从而导致销量更多。这样如果将图书销售量按照名次排列下来就会发现图书销量会随着名次的提高而指数性的提高。 齐夫定律 齐夫定律(Zipf's Law)其实可以说是幂定律的一种形式,只是…

    Maths, Algorithm, MathJax阅读全文

  7. 用于文档关键字提取的TFIDF指标

    关键字提取问题 在大规模网络文章整合的过程中,我们经常需要对某一篇文章提取关键字。比如对于某一篇关于计算机的文章,我们应该提取出类似于“计算机”、“编程”、“CPU”之类的符合人类认知习惯的关键词,但是这个过程却不是那么容易。现在,我们把问题归结为,在不使用机器学习方法的情况下,给定一个文档集,仅从单词频率等角度对文档集当中的某一篇文档进行考虑,期望能够对于该篇文章,我们能从文章中依次提取出最有代表性的关键词。 我们很容易想到的方法就是统计每个词的词频了,但是对于任何文章而言,出现频率最多的…

    BigData, Algorithm, MathJax, Machine Learning阅读全文

  8. Python类变量和成员变量的使用注意点

    之前在用python写一个项目,发现一个很恶心的bug,就是同由一个类生成的两个实例之间的数据竟然会相互影响,这让我非常不解。后来联想到java的类有类变量也有实例变量,因此翻阅了相关资料,发现python也有类似的类变量和实例变量,比如下面的代码中: class A: x = 0 def __init__(self): self.y = 0 x就是类变量,y就是实例变量。 原则上是没有错的,但是实际用的时候就发现一些恶心的问题(也就是我找了三天的bug)…

    Python阅读全文

  9. MySQL配置远程访问

    前言 在使用MySQL数据库的时候,有时候需要客户机直接远程登陆服务器的数据库 ,而不是将请求发给数据库服务器。这时候就需要配置下MySQL的远程访问权限了。具体的配置方法也很简单,随便找个搜索引擎基本都能找到搜索到一堆配置MySQL数据库远程登陆的教程了。 步骤 网上介绍的步骤基本分为两步: 修改my.cnf配置文件 mysql的配置文件一般在/etc/mysql/my.cnf 里,打开查看其配置,其中有这么一段: # Instead of skip-networking th…

    MySQL阅读全文

  10. Apache配置ssl支持https

    前言 很明显apache原生是不支持https的,无论是用https访问自身的站点,还是代理来自其他网站的https的站点。毕竟人家https走的端口是443,都不是默认的80。 那么如何让apache支持https呢,其实只要添加下ssl模块再修改下配置就好了。 准备工作 首先要导入apache的ssl模块,即$sudo a2enmod ssl ,保证/etc/apache2/mods-enabled/ 目录下有对应的ssl模块文件。 然后利用openssl命令,生成必要的密钥文件…

    Apache阅读全文