- 博客(90)
- 收藏
- 关注
原创 后缀树算法
今天主要来认识后缀树,在字符串处理中是一个很有用的工具。可以参考: 后缀树总结:http://blog.163.com/zqz_20003/blog/static/26945430201051622328883/ 后缀树原理详见:http://www.ibaiyang.org/2013/01/06/suffix-tree-introduction/ 开源代码参考:http:
2015-09-28 19:38:11 1558
原创 Cookie的介绍
Cookie是某些网站为了辨别用户身份而存在用户本地终端上的数据。Cookie总是保存在客户端中,可分为内存Cookie和硬盘Cookie,而按照时间划分,又可以分为非持久Cookie和持久Cookie。 Cookie的Wiki介绍:http://zh.wikipedia.org/wiki/Cookie Cookie机制详解:http://blog.csdn.net/fanga
2015-04-01 00:44:52 1057
原创 C++开源库介绍
今天来介绍一些C++的开源库,如下链接 链接:http://blog.csdn.net/chen19870707/article/details/40427645 种类比较多,比如并发方面的就有这么多 接下来主要介绍我会用到的两个,分别是Hashmap和sofia-ml。 先来介绍Hashmap吧!它是一个C++实现的开放哈希寻址方法。源码
2015-03-30 19:43:37 1181
原创 Linux下将源文件打包成JAR包并且使用
今天来讲一个重要的问题,就是如何在Linux命令行环境下打包Java源文件成一个JAR包。 首先假设Java源文件为Main.java,那么我们可以执行如下步骤 (1)编译Main.java文件成为Main.class文件,命令如下 (2)通过执行如下命令,得到JAR文件 好了,经过上面的两步就得到了我们想要的JAR文件了。很简单
2015-03-19 17:00:14 5733
原创 Awk的使用
今天来讲Awk的使用,首先来介绍awk的工作原理。 Awk的工作原理:将文件一行一行读入,然后对每一行再分段,段名称为$加上数字,分段依据是空格或者Tab键。 用法:awk '/模式/{命令1;命令2;...}' filename其中上面的模式没有的话就是对全文所有行进行操作,多条命令用分号隔开。 例如who命令结果如下 比如我们想得到日期,那么命令
2015-03-04 21:12:05 856
原创 C++设计模式类库Loki介绍
Loki是由Andrei编写的一个与《Modern C++ Design》(C++设计新思维)一书配套发行的C++代码库。它不仅把C++模板的功能发挥到了极致,而且把类似设计模式这样思想层面的东西通过库来提供。 详细可以参考 1.http://blog.csdn.net/witch_soya/article/details/7612579 2.http://
2015-03-04 13:47:20 1389
原创 模板元编程
模板元编程技术是一种元编程技术,编译器使用模板产生暂时性的源码,然后再和剩下的源码混合编译。在Wiki上是这么说的:http://zh.wikipedia.org/wiki/%E6%A8%A1%E6%9D%BF%E8%B6%85%E7%B7%A8%E7%A8%8B。 由于是在编译时执行,那么就需要编译时执行的操作,比如宏,typedef,const,enum等等。 下面是一个使用模
2015-03-04 13:25:00 797
原创 RTTI技术
在C++中通过虚函数,模板编程和RTTI技术可以实现多态。关于虚函数和模板编程不再赘述,下面来介绍RTTI技术。 所谓RTTI技术,是Run Time Type Infomation的缩写,即运行时类型信息。它提供了运行时确定对象类型的方法。对于大多数人而言,可能都不知道在C++中还有RTTI。其实在C++编程中有时候不可避免地需要对对象类型进行动态判断,那么如何确定对象的动态类型呢? 答
2015-03-03 22:27:05 2108
原创 Go语言(goleveldb和ledisdb数据库介绍)
Mayuyu要介绍一个Go语言编写的K-V数据库,叫做goleveldb。 goleveldb在github上的链接为:https://github.com/syndtr/goleveldb 开发文档参考:http://godoc.org/github.com/syndtr/goleveldb
2015-02-28 17:48:33 4932
原创 Go语言(container介绍)
今天,Mayuyu来介绍Go语言中一个重要的东西,叫做container。具体源码可以参考Go语言的源代码,如下 路径:/usr/local/go/src/pkg/container container的结构如下 可以看出包含三部分:heap,list和ring。下面分别介绍 1. heap heap即为堆,是一种常用的数据结构
2015-02-28 17:11:06 1844
原创 Go语言(log4go介绍)
今天来介绍一个Go语言中常用的日志第三方包,即log4go。在C++中,有log4cpp,而在Java中,有log4j。 好了,废话不多说,现在就来介绍log4go的使用。在log4go在github上的链接如下 链接:https://github.com/skoo87/log4go 具体用法可以参考examples文件夹,而且配置文件采用JSON的格式。一个典型的例子如下
2015-02-28 11:49:48 5886
原创 Go语言(遍历文件夹)
今天来讲一个Go语言操作文件的问题,即如何遍历一个文件夹下的所有文件。 代码如下package mainimport ( "path/filepath" "os" "fmt" "flag")func getFilelist(path string) { err := filepath.Walk(path, func(path string
2015-02-27 22:23:20 3713
原创 Go语言(工程和包)
在Go语言中,包是函数与数据的集合,用package定义一个包,包的名字不一定要跟文件名字一样,接下来,将学习如何使用Go语言的包。 首先,我们创建一个Stack包,然后用一个主程序来调用这个包里面的方法。这实际上涉及到Go语言中的工程的分包和编译。Go语言是这么来配置它的工程的,如下图 其中package是工程的根目录,我们需要事先设置环境变量GOPATH,如下
2015-02-26 22:30:16 2282
原创 Go语言的初步认识
Go语言是来自Google的一门语言,Go语言的一些开源项目如下 链接:http://www.open-open.com/lib/view/open1396063913278.html 关于Go语言的一些内容如下 链接:http://www.tuicool.com/articles/7fMzYnB 链接:http://www.csdn.net/article/201
2015-02-25 17:06:58 1283
原创 一道位运算技巧题
今天Mayuyu遇到一个非常有意思的题目,描述如下 题目:有一堆数,若干个数出现了3次,只有一个数出现了1次,找出只出现1次的那个数。 分析:把这个问题进行推广,得到如下描述 有一堆数,除了一个元素出现次外,其它每个数都出现了次,现在需要找出出现次的这个数。 代码:#include using namespace std;const int N
2015-02-22 18:25:23 959
原创 大O符号
今天,Mayuyu来讲一个东西,叫做大O符号,即Big O Notation。大O符号是用来描述函数渐进行为的数学符号,更准确地说,它是用另一个函数来描述一个函数数量级的渐进上界。 在数学中,它一般用来刻画被截断的无穷级数,尤其是渐进级数的剩余项。在计算机科学中,它在分析算法复杂性方面非常有用。 详细内容参考如下链接 链接:http://zh.wikipedia.org
2015-02-22 14:41:53 1344
原创 Boost C++库介绍
今天Mayuyu将来讲述一个非常实用的C++库,它叫做Boost C++库。Boost库中加入了一些在实战中非常常用的函数对C++标准进行了扩充,在实际开发中非常有用。 Boost C++的安装包可以在这里下载:http://www.boost.org/ 解压后进入目录执行:sh bootstrap.sh。完成后得到了b2可执行文件,继续执行./b2,最后执行./bjam完成安
2015-02-21 16:59:23 1190
原创 C++11中的Tuple和可变参数模版
C++11中的tuple是一个n元的可变元组,它相当于有n个元素的结构体,只不过这个结构体的成员都是匿名的,tuple中提供了一个get()方法来获取某个下标对应的元素的值。另外可以通过make_tuple()方法来构造一个tuple对象。具体用法如下 我们知道tuple中的元素个数是不确定的,而每个元素的类型通过模板参数指定,那么tuple是如何做到这些的呢?答案就是使用
2015-02-16 17:08:51 2146
原创 C++11的关键字nullptr
nullptr是为了解决原来C++中NULL的二义性问题而引进的一种新的类型,因为NULL实际上代表的是0。 观察如下代码 在C++98中,NULL可以代表0,这样对于如上两个函数来说,就会造成二义性了。那么为了解决这种二义性,在C++11中就引入了一个新的关键字nullptr来代表空指针,并且nullptr本身不能代表零。
2015-02-16 12:57:46 870
原创 C++11的auto和decltype关键字
今天Mayuyu要介绍C++11中两个重要的关键字,即auto和decltype。实际上在C++98中,已经就有了auto关键字,只不过在C++98中auto表示的是临时变量的语义,而在C++11中auto表示自动类型推导,如下 #include using namespace std;int main(){ vector v; for(int i = 0; i < 10;
2015-02-16 12:32:08 900
原创 C++11的模版类array
今天,Mayuyu来讲一个C++11中的模板类,即array。 在C++中,我们有vector可以很好地代替数组,且功能比较强大,但是vector的效率十分低下。如果需要使用长度固定的数组,那么C++的普通数组是个很好地选择,但是缺点是使用起来很不方便,所以针对这种不足,C++11增加了模板类array。它也是位于命名空间std中,跟数组一样,array的长度也是固定的,同样使用栈
2015-02-07 19:49:59 1129
原创 C++11环境安装
今天Mayuyu开始学习C++11的一些新特性,所以第一步就是要安装C++11的环境。 对于C++11来说,只有gcc4.8.2及以上的版本才能很好地支持,而Mayuyu选择的是CentOS6.5系统,安装的gcc版本为4.9.2。gcc安装包的下载目录为:ftp://gcc.gnu.org/pub/gcc/releases/ 注意在安装gcc4.9.2之前,需要先安装一下三个
2015-02-07 17:52:38 7380
原创 交叉编译
今天,Mayuyu来讲一个比较重要的概念,即交叉编译,主要分为如下几个方面来讲述。 Contents 1. 什么是交叉编译 ? 2. 为什么要使用交叉编译 ? 3. 交叉编译工具链 1. 什么是交叉编译 ? 所谓交叉编译,简单地来说就是在一个平台上编译生成另一个平台上的可执行代码。注意这里的平台实际上 包含两个概念,即体系结
2015-01-30 16:44:20 814
原创 log4cpp的介绍
log4cpp是一个开源的C++类库,它提供了在C++程序中使用日志和跟踪调试的功能。使用log4cpp,可以很便利地将日志或者跟踪调试信息写入字符流、内存字符串队列、文件、回滚文件、调试器、Windows日志、本地syslog和远程syslog服务器中。 Log4cpp是个基于LGPL的开源项目,移植自Java的日志处理跟踪项目log4j,并保持了API上的一致。其类似的支持
2015-01-30 12:31:42 1009
原创 CMake的使用
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程),能够输出所有文件的Makefile,
2015-01-30 12:01:45 665
原创 Linux中grep,sed的使用
今天,Mayuyu来讲一些Linux中常用的命令。 1. grep命令 grep用于过滤自己需要的内容,语法如下 grep Mayuyu --color 过滤出所有包含Mayuyu的行。 2. sed命令 使用普通的vim编辑器在编辑文件时有两个主要的问题 (1)当文件比较大的时候,需要打开文件,占用较大
2015-01-13 20:10:06 939
原创 R语言-画图(下)
在上一篇文章中,Mayuyu介绍了R中的一些常见的画图,本文就来详细介绍各种画图的用法。 1. 散点图 画图如下 由于平台的问题,中文显示不出来。 下面是用plot画折线,如下代码 画图结果 多条曲线的效果,代码如下 画图效果如下
2015-01-13 16:49:36 812
原创 R语言-画图(上)
今天,Mayuyu来开始学习用R语言画图,R语言画图有着实际的应用,很多数据通过图形展现出来更加易于理解。 1. 画直方图 代码如下 画图结果 2. 画三点图 代码如下 画图结果 3. 画柱状图 在画柱状图之时,会用到列联函数table(),之后
2015-01-13 13:11:30 2130
原创 Linux环境下安装软件的正确卸载
今天,Mayuyu来讲一下如何在linux下正确卸载软件。 首先,应该要先查看要卸载的软件的位置,比如对于php,用如下命令 然后列出要卸载的相关文件,如下命令 然后针对每一个文件依次卸载就行了,由于有些安装包依赖于其它的安装包,可能出现卸载错误,最好使用如下命令 后面跟上--nodeps
2015-01-11 15:51:57 1058
原创 Python处理中文的包-mafan
今天Mayuyu要介绍一个非常有用的包,叫做mafan。Mafan是一组Python工具集合,用于方便处理中文。可以做繁简检测,繁简转化,检查中文标点,检查是否中英文混合,甚至还提供分词。具体可以参考如下链接 链接:http://www.open-open.com/lib/view/open1418367676855.html 而mafan的源代码在这里:https://
2015-01-01 19:17:29 1470
原创 Julia之BloomFilters的使用
我们都知道布隆过滤是用来判断一个元素是否在一个集合中的很有效的方法。比如在WPS字处理软件中,需要检查一个单词是否拼写正确;在FBI中需要判断一个嫌疑犯的名字是否在嫌疑名单上;在网络爬虫里,判断一个网址是否被访问过。最简单的解决办法就是采用HashTable的方法来存储,它的好处是快速且精确,缺点是耗费大量内存空间。所以针对耗费空间大的问题,提出了布隆过滤。但是布隆过滤是有误识别率的,也就是说在集
2015-01-01 18:56:19 1133
原创 字符串删除问题
在计算机的世界了里,字符串问题可以说是一个很重要的问题,比如文本处理等等问题。今天Mayuyu就来讲述一个字符串删除问题,问题描述如下 问题:给定一个很长的字符串,比如长度为1000000,现在要删除这个字符串中某些指定的字符,这些指定的字符只 有几个,现在Mayuyu要求是尽量用最少的时间和空间来做这件事。 分析:很明显,可以从前往后扫描,遇到一个指定的字符就删
2015-01-01 14:26:19 1138
原创 R语言-R调用C++程序
今天Mayuyu学习了如何利用R语言来调用C++程序。为什么要这么多呢? 因为R语言虽然方便,但是计算太慢了,尤其是在循环语句方面的使用,R语言简直是无法忍受,所以在R语言中为了提高速度,必要时候还得改用C++来实现。 在R语言中要调用C++是通过Rcpp这个包来实现的。所以要先安装Rcpp这个包咯!安装完成后Mayuyu就开始来写C++部分的代码了,框架如下图 在
2014-12-30 13:46:53 3463 1
原创 R语言-模拟产生统计专业学生的成绩
现在Mayuyu会以一个例子来说明R语言在统计学中的应用。模拟一个高中学生语数外三科的成绩单。 首先认识两个重要的函数,source()和print(),source()函数是用来运行R脚本的,一个R脚本保存为test.R,在R交互式环境下通过source("test.R")来运行,print()函数打印结果。 首先每一个学生有一个学号,通过如下方式生成
2014-12-29 13:50:11 5778
原创 R语言-基础操作
今天Mayuyu来学习R语言,先来学习矩阵操作。 (1)c() c()是用来创建一个向量,比如 (2)length() length()用来获取一个向量的长度。 (3)mode() 获取向量中数据的类型,比如 (4)rbind()和cbind() 这两个函数都是将多
2014-12-28 16:30:54 1288
原创 Julia语言简介与环境安装
从今天开始,Mayuyu将要学习一门新的语言,这门语言叫做Julia,为什么要学习它呢? 因为它比较优秀啊! Julia语言设计的目的就是让高性能科学计算为人人所用,它集合很多语言的优点于一身,有C的快速,有Ruby的动态,有Python的通用,有R的在统计学上的得心应手,有Perl的字符串处理,有MatLab的线性代数运算,总之有很多优点,更多了解参考:http://www.csdn.n
2014-12-27 19:01:44 10680 1
原创 glog的使用
现在Mayuyu来介绍一个很有用的工具,即glog。跟gflags一样,都是google开源的工具,不同的是glog是用来打印日志的。 Contents 1. glog安装步骤 2. glog使用方法 1. glog安装步骤 首先应该下载glog的安装包,地址如下 链接:https://code.google.com/p
2014-12-16 20:53:13 2453
原创 gflags的使用
今天,Mayuyu要向大家介绍一个非常实用的工具,叫做gflags。gflags是google开源的一套命令行参数解析工具,比getopt()函数功能要强大,使用起来更加方便,gflags还支持从环境变量和配置文件中读取参数。目前有C++和Python版本。本文就来详细介绍C++版本gflags的使用,主要分如下三个部分 Contents 1. gflags的安装
2014-12-16 17:00:35 12186 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人