-
Gitbook电子书编写工具
简述 GitBook是一个非常酷的电子书编写工具,之前在学Git的时候就曾经接触过一个叫"ProGit"的电子书,我们可以在很多网站上都可以直接以静态网页的形式浏览他,比如这里和这里,非常的酷。与此同时,他还能够非常方便的翻译成各种不同的语言,非常便捷的进行文章的修改,并且能非常自然的融合进不同的网站。后来仔细一查,发现原来这本书本身就发布在Github上,并且用了一个特殊的工具进行处理,这个工具就是Gitbook。 当然,Gitbook也有自己的网站以及类似book r…
-
PyQt5编写桌面程序入门
前言 捣鼓了半天,终于把用python写界面的一套玩意大体上搞清楚了。一开始一直在纠结用什么python IDE适合进行桌面程序开发,很多PyQt发布网站都推荐用Eric这个编辑器,然而我自己试了下发现界面很一般,而且搞不好还会在安装配置的过程中搞出很多麻烦。而实际上,稍微研究一下也能发现PyQt5也并不是和Eric绑定的东西,他其实就是一个python库,完全可以直接用任意的文本编辑器来写,因此我还是选择了比较方便的PyCharm。 环境安装 为了使用PyQt5,我们最好还是使用pyt…
-
Linux-C简单多线程编程分析
我们都知道多线程可以提高程序运行的速度,但是至于能够提高多少却一直没有一个直观的印象,下面就用Linux C的多线程编程技术,简要分析下多线程的运行效率。 测试代码 下面就用1000*1000的矩阵之间的乘法来做一个实验,我们分别用单线程和多线程分别实现,算法都采用$O(n^3)$的朴素算法。测试代码如下: #include <stdio.h> #include <pthread.h> #include <stdlib.h> #include <…
-
Linux中shadow文件详解
加密密码的文件,听上去似乎可以做点什么,然而实际上啥都做不了,一个鸡肋啊。 文件样例 myths@myths-X450LD:/home$ sudo cat /etc/shadow root:!:16618:0:99999:7::: daemon:*:16484:0:99999:7::: bin:*:16484:0:99999:7::: sys:*:16484:0:99999:7::: sync:*:16484:0:99999:7::: games:*:16484:0:99999:7:::…
-
Ubuntu下最兼容的Office套件
虽说用Ubuntu的目的就是不喜欢windows大而杂的作风,但是由于office这类的工具实在是太流行,导致即使在ubuntu下工作还是要经常使用office套件。可是问题来了,无论是ubuntu自带的liboffice套件还是Apache的Openoffice,他们都实在是不好用,不仅界面丑,而且各种工具也经常找不到,更重要的是他不能跟ms office很好的兼容,尤其是word中的表格一类的东西。比方说一个挺好的实验报告,在这里看到的却是下面的效果: 啥玩意都乱了,十分丑陋。 不过还好…
-
Ubuntu下VirtualBox使用简述
曾经一直由于windows太卡,导致在windows下安装的虚拟机性能都很不好,这就导致我曾经一直以为虚拟机都是巨卡无比。不过这次在ubuntu下面用了虚拟机才发现原来虚拟机技术本身并不会对系统本身带来太多的负面影响,至少在我的ubuntu下面用起来还是挺流畅的。 VirtualBox virtualBox是一个非常有名的开源虚拟机软件,曾经由Sun公司用Qt开发,当然现在归Oracle了。他据说被称为最强的免费虚拟机软件,支持现存绝大多数操作系统,支持快照、共享文件、承载不同系统架构等等…
-
常见的距离测度
在对向量进行相似度计算的时候经常需要纠结的是用什么测度来衡量相似度。经常听到的距离测度无非是欧氏距离、曼哈顿距离、切比雪夫距离、闵科夫斯基距离、海明距离、编辑距离、余弦距离、杰卡德距离这么几个,稍微生僻点的再加上什么标准化欧氏距离、卡方距离、马哈拉诺比斯距离、巴塔恰里雅距离、皮尔逊距离。前面说的那些距离大都是一回事,掌握了初中左右的知识基本都能理解,而后面说的这些距离就相对复杂很多了,得有离散统计线性代数这类的扎实功底才能吃透。。。这里就稍微介绍下概念上距离测度的定义,以及简单的距离测度。…
-
面向最小哈希签名的LSH
LSH 我们知道最小哈希签名能够把一篇较大的文档压缩成一个较短的签名并且不影响文档间的Jaccard相似度。很多情况下,我们用最小哈希签名的目的就是为了方便的对文档进行存储,并且对于给定的文档,能在大量的文档中快速的查找相似的文章。现在我们能做到快速的对两篇文章进行相似度比较,但是当总的文档数目比较大的时候,比较所有文档的最小哈希签名仍然是一个非常耗时耗力的事。而我们知道,对于给定的文档而言,文档库中的绝大多数文档其实都没有比较的意义,如果能有一个方法能过滤掉不需要比较的大量文档,那么显然就能…
-
最小哈希签名(MinHash)简述
最小哈希签名(minhashing signature)解决的问题是,如何用一个哈希方法来对一个集合(集合大小为n)中的子集进行保留相似度的映射(使他在内存中占用的字节数尽可能的少)。 其实哈希本身并不算难,难的是怎么保留两个子集的相似度的信息。所谓保留相似度,就是说我们能十分直观的从两个子集的哈希结果中看出他们的相似度。当然,朴素的办法就用是一个长度为n的二进制数的每个位来分别对应集合中的每个元素。不过当n比较大而待hash的集合的数目比较小的时候,这种方法的效率就太低了。这时候最常用的方法…
-
相似度度量标准之Jaccard相似度
定义 Jaccard相似度(杰卡德相似度)是一个用于衡量两个集合相似程度的度量标准,他的定义如下:给定两个集合$S,T$,那么我们记这两个集合的Jaccard相似度$SIM(S,T)$为: $$SIM(S,T)=|S\cap T|/|S\cup T|$$ 也就是两个集合交集的大小除以两个集合并集的大小。显然他的取值在[0,1]区间。 扩展 原始的Jaccard相似度定义的仅仅是两个集合(set)之间的相似度,而实际上更常见的情况是我们需要求两个包(bag,multiset)的相似度,即每…