- 博客(123)
- 资源 (26)
- 收藏
- 关注
原创 cython的使用
0. 环境配置要使用cython首选得有的她的环境 [ 废话,^_^ ],系统上有pip包管理环境的话直接:pip install cython 即可安装cython或者也可以源码安装: https://github.com/cython/cython/wiki/Installing 1. 相关介绍: Cython 编译器把 Cython 代码编译成调用了 Python 源码的 C/C++ 代码
2017-08-27 22:42:57 14000
原创 C++自动微分(Automatic differentiation)原理1
0. 缘由下面介绍下为什么要引入自动 自动微分(automatic differentiation -> AD )。一个优化问题的例子 假设现在我们在解决一个机器学习的问题,有了一些训练样本,现在需要寻找一个最优的函数,使得函数对输入X的估计Y’与实际输出Y之间的期望风险最小化。利用已知的经验数据(训练样本)来计算得到的误差,被称之为经验风险。使用对参数求经验风险来逐渐逼近理想的期望风险的最小值
2017-08-21 08:28:58 14654 3
原创 奇异递归模板模式(CRTP)应用--表达式模板(expression template) 2
1 表达式模板(expression template)概述首选分几个部分介绍下expression template。1.1 表达式模板(expression template)是什么?引用wiki 介绍的 Expression templates : Expression templates are a C++ template metaprogramming technique that
2017-07-12 23:30:42 5888 2
原创 奇异递归模板模式( Curiously Recurring Template Pattern,CRTP)1
1.CRTP介绍奇异递归模板模式(curiously recurring template pattern,CRTP)是C++模板编程时的一种惯用法(idiom):把派生类作为基类的模板参数。更一般地被称作F-bound polymorphism,是一类F 界量化,相关介绍可以参考 wiki 奇异递归模板模式。curiously recurring template pattern,CRTP的来源,
2017-06-25 19:39:44 12345 1
原创 中文分词 mmseg nginx 模块开发
一、nginx模块开发Nginx 是一款高性能web服务器,因此,工作业务中需要借助nginx强大的网络服务功能,往往需要开发和定制相应的 Nginx 模块满足业务需求。 基本上作为第三方开发者最可能开发的就是三种类型的模块,即handler,filter和load-balancer。Handler模块就是接受来自客户端的请求并产生输出的模块,也是我们使用最多的一个模块。有关nginx模块开发的
2016-01-17 13:55:12 4063
原创 mmseg分词算法及实现
一、分词方法关于中文分词 参考之前写的jieba分词源码分析 jieba中文分词。 中文分词算法大概分为两大类:一是基于字符串匹配,即扫描字符串,使用如正向/逆向最大匹配,最小切分等策略(俗称基于词典的) 基于词典的分词算法比较常见,比如正向/逆向最大匹配,最小切分(使一句话中的词语数量最少)等。具体使用的时候,通常是多种算法合用,或者一种为主、多种为辅,同时还会加入词性、词频等属性来辅助处理
2016-01-10 20:07:59 12224 4
原创 jieba中文分词源码分析(四)
一、未登录词问题在jieba中文分词的第一节曾提到未登录词问题 中文分词的难点 分词规范,词的定义还不明确 (《统计自然语言处理》宗成庆) 歧义切分问题,交集型切分问题,多义组合型切分歧义等 结婚的和尚未结婚的 => 结婚/的/和/尚未/结婚/的 结婚/的/和尚/未/结婚/的 未登录词问题 有两种解释:一是已有的词表中没有收录的词,二是已有的训练语料
2015-09-06 19:21:28 12643 2
原创 jieba中文分词源码分析(二)
一、jieba的使用举例jieba的简单使用 我们根据作者的 github的例子来编写一个自己的例子,代码如下:# encoding=utf-8import jiebaseg_list = jieba.cut("去北京大学玩123", cut_all=True)print("Full Mode: " + "/".join(seg_list)) # 全模式seg_list = jieba.
2015-09-05 20:53:40 8729 1
原创 jieba中文分词源码分析(三)
一、前缀字典作者这个版本(0.37)中使用前缀字典实现了词库的存储(即dict.txt文件中的内容),而弃用之前版本的trie树存储词库,python中实现的trie树是基于dict类型的数据结构而且dict中又嵌套dict 类型,这样嵌套很深,导致内存耗费严重,具体点这里,下面是@gumblex commit的内容: 对于get_DAG()函数来说,用Trie数据结构,特别是在Python环
2015-09-05 17:15:17 11366 1
原创 jieba中文分词源码分析(一)
一、缘由接触自然语言处理(NLP)有段时间,理论知识有些了解,挺想动手写些东西,想想开源界关于NLP的东西肯定不少,其中分词是NLP的基础,遂在网上找了些资源,其中结巴分词是国内程序员用python开发的一个中文分词模块, 源码已托管在github: 源码地址 ,代码用python实现,源码中也有注释,但一些细节并没有相应文档,因此这里打算对源码进行分析,一来把知识分享,让更多的童鞋更快的对源码有个
2015-09-03 16:11:29 19814 4
原创 使用Hadoop Streaming
hadoop大家都了解的,不再细说。之前用java写过MR程序,对Hadoop streaming了解不多,Hadoop streaming是和Hadoop一起发布的实用程序,它允许用户创建和执行使用任何程序或者脚本编写的map或者reduce的mapreducejobs,实际工作中看到不少同学用python、shell、Perl等编写Hadoop streaming程序(开发效率确实高)。在运行
2015-08-02 09:52:32 3724
原创 redis 源码分析(一) 内存管理
一,redis内存管理介绍 redis是一个基于内存的key-value的数据库,其内存管理是非常重要的,为了屏蔽不同平台之间的差异,以及统计内存占用量等,redis对内存分配函数进行了一层封装,程序中统一使用zmalloc,zfree一系列函数,其对应的源码在src/zmalloc.h和src/zmalloc.c两个文件中。二,redis内存管理源码分析redis封装是为了
2014-05-21 17:47:22 7090
原创 Redis c/c++, java 客户端连接
Redis 介绍redis 这个想必大家都了解,关于redis的安装参考这里,redis使用文档参见这里。Redis C客户端的使用方法 Redis的c客户端 Hiredis使用比较广泛,下面主要介绍下它。1,Hiredis的安装,配置Hiredis客户端 在redis解压后的deps/hiredis下有相应的文件。如果你的安装包没有相应的文件可以到这里下载。cd
2014-05-16 23:02:36 8901
原创 最长递增子序列(LIS)求解
问题描述最长递增子序列也称 “最长上升子序列”,简称LIS ( longest increasing subsequence)。设L=是n个不同的实数的序列,L的递增子序列是这样一个子序列Lis=,其中k1如:求一个一维数组arr[i]中的最长递增子序列的长度,如在序列{ 7, 1, 6, 5, 3, 4, 8 }中,最长递增子序列长度为4,其递增子序列为:1,3,4,8。
2014-05-13 11:33:12 4901
原创 c++ 智能指针及 循环引用问题
c++智能指针介绍由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete,比如流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见,并造成内存泄露。如此c++引入智能指针 ,智能指针即是C++ RAII的一种应用,可用于动态资源管理,资源即对象的管理策略。 智能指针在 标头文件的 std 命名空间中定义
2014-04-07 13:36:05 21523 1
原创 C++ 类型转换及RTTI
C++的4中类型转换我们应该比较熟悉C的类型转换即由圆括号和标识符组成,但是对于C的类型转换有时候到不到我们的要求,比如去除const 的类型转换,把一个指向基类的指针转化成指向子类的指针等等。下面就介绍C++引进的四个新的类型转换操作符,这四个操作符是:static_cast, const_cast, dynamic_cast, 和reinterpret_cast。1,const_cas
2014-03-18 17:12:04 4419
原创 使用Latex制作简历
认识LaTeXLaTeX(LATEX,音译“拉泰赫”)是一种基于ΤΕΧ的排版系统,LaTeX类似于html脚本语言,很容易上手。虽然也需要“编译”等才能生成pdf或者ps文档,但是实际上网上很有很多很漂亮、很专业的模板,我们只需要将自己相应的信息填入相应的位置即可。对于写论文、简历的同学不妨试一下LaTex。LaTex安装及使用下面介绍MiKTeX , TexStudio w
2014-03-03 20:02:52 13445 1
原创 skiplist 跳跃表详解及其编程实现
skiplist介绍跳表(skip List)是一种随机化的数据结构,基于并联的链表,实现简单,插入、删除、查找的复杂度均为O(logN)。跳表的具体定义,请参考参考维基百科 点我,中文版。跳表是由William Pugh发明的,这位确实是个大牛,搞出一些很不错的东西。简单说来跳表也是链表的一种,只不过它在链表的基础上增加了跳跃功能,正是这个跳跃的功能,使得在查找元素时,跳表能
2014-03-01 15:40:16 19499 3
原创 awk 使用小结
AWK介绍AWK是贝尔实验室1977年搞出来的为Unix/Linux提供样式扫描与处理工具,非常擅长处理结构化数据和生成表单。与sed 和grep 很相似,但功能却超过大于两者,之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的Family Name的首字符。awk是要学AWK,就得提一提AWK的一
2014-02-19 22:30:30 4999
原创 nginx 源码学习(六) 基本数据结构 ngx_array_t
ngx_array_t 介绍 ngx_array_t是nginx内部使用的数组结构。显而易见ngx_array_t是一个顺序容器,它以数组的形式存储元素,并能够在数组容量达到上限时动态扩容数组,很像c++ STL中的vector容器。ngx_array_t 使用了nginx内存池,因此其分配的内存也是在内存池中申请得到的,总的来说ngx_array_t具有访问速度快、数组可动态扩
2014-02-14 18:38:09 6694
原创 nginx 源码学习(五) 基本数据结构 ngx_list_t
ngx_list_t 介绍ngx_list_t是nginx封装的单链表容器, 它在nginx中的应用比较频繁, 比如在nginx 源码中src/http/ngx_http_request.{h,c}的HTTP的头部就是使用ngx_list_t来存储的。这个链表结构和我们常见的链表有所不同, 其不同点在于链表的每一个节点,它的节点不像我们常见的单链表的节点(即每个节点只能存放一个元素
2014-02-14 00:16:31 5261
原创 nginx 源码学习(四) 基本数据结构 ngx_queue_t
nginx 队列结构 ngx_queue_t 介绍由于nginx 具有跨平台及C语言实现的特点,使nginx不宜使用一些第三方中间件提供的容器和算法,跨平台(linux,windows等)的特点,因此nginx的代码必须可以跨平台编译运行,nginx选择了完全从头实现一遍基础的数据结构和算法,比如双向链表、动态数组、红黑树、哈希表等,理解这些基础的数据结构和算法对于我们好处不言而
2014-02-09 14:26:46 5525
原创 理解 I/O-- 阻塞、非阻塞,同步、异步的概念及其区别
概念介绍阻塞(blocking)、非阻塞(non-blocking):可以简单理解为需要做一件事能不能立即得到返回应答,如果不能立即获得返回,需要等待,那就阻塞了(进程或线程就阻塞在那了,不能做其它事情),否则就可以理解为非阻塞(在等待的过程中可以做其它事情)。同步(synchronous)、异步(asynchronous): 你总是做完一件再去做另一件,不管是否需要时间等待,这就
2014-01-25 19:21:45 4488
原创 网络协议之以太网帧
以太网(Ethernet)介绍以太网(Ethernet)是一种计算机局域网组网技术,wiki 有相关介绍,请移步这里。Ethernet V2 是世界上最早的以太网标准协议。目前IEEE802.3为以太网标准。Ethernet V2 协议与 IEEE802.3 标准只有很小的差别,可以将 802.3 局域网简称为“以太网”。Ethernet V2是目前广泛使用的以太网协议。 以
2014-01-20 13:11:28 4448 1
原创 使用tcpdump 进行网络包分析
tcpdump介绍tcpdump 是一个运行在命令行下的抓包工具。它允许用户拦截和显示发送或收到过网络连接到该计算机的TCP/IP和其他数据包。tcpdump 适用于大多数的类Unix系统操作系统(如linux,BSD等)。类Unix系统的 tcpdump 需要使用libpcap这个捕捉数据的库就像 windows下的WinPcap。在学习tcpdump前最好对基本网络的网络知识有
2014-01-18 15:35:33 13415
原创 红黑树 及 linux内核红黑树探讨
红黑树相信大家有一定的了解,红黑树是一种应用很广泛的数据结构,详情点这里。比如在linux内核,nginx等众多开源软件中有应用。发现有很多文章已经把红黑树分析的很好了,现在罗列一下,供以后学习。红黑树的介绍和实现 红黑树算法的层层剖析与逐步实现红黑树Linux内核中的红黑树详解Linux内核红黑等
2014-01-16 20:12:11 2044
原创 使用git 进行版本控制
git介绍Git是一个分布式的版本控制工具,大家应该对git有概念,之前使用几次git,但有段时间没用了,现在权当笔记 记录下来方便以后温习。Git最初被Linus Torvalds开发出来用于管理Linux内核的开发。每一个Git的工作目录都是一个完全独立的代码库,并拥有完整的历史记录和版本追踪能力,不依赖 于网络和中心服务器。git工作机理Git 和其他版本控制系统的主要差
2014-01-11 20:14:42 3187
原创 linux 下安装、使用 redis
redis介绍Redis是一个开源、支持网络、基于内存、键值对存储数据库,使用ANSI C编写, redis中文官方网站,点这里。redis安装我的linux操作系统为ubuntu12.04 登录 http://www.redis.io/download 下载redis-2.8.3.tar.gz(或者使用命令下载,wget http://download.redis.io/
2014-01-10 23:04:19 22495 2
原创 linux 下使用 rsync 进行文件 同步
rsync 介绍rsync是类unix系统下的数据镜像备份工具——remote sync。rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明。它的特性如下:可以镜像保存整个目录树和文件系统。可以很容易做到保持原来文件的权限、时间、软硬链接等等。无须特殊权限即可安装。快速:第一次同步时 rsync 会复制全部内容,但在下一
2014-01-08 18:11:11 75434 2
原创 HTTP 协议解析
HTTP协议简介超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是互联网上应用最为广泛的一种网络协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。HTTP是一个应用层协议,由请求和响应构成
2014-01-07 13:28:04 9493 2
原创 后缀数组及其应用
后缀数组概念基本概念介绍:子串:字符串 S 的子串 r[i..j] , i ≤ j ,表示 r 串中从 i 到 j 这一段,就是顺次排列 r[i],r[i+1],...,r[j] 形成的字符串。后缀:从某个位置 i 开始到整个串末尾结束的一个特殊子串。字符串 r 的从 第 i 个字符开始的后缀表示为 suffix(i) ,也就是suffix(i)=r[i..len(r)] 。
2013-12-31 17:07:54 2782
原创 C++ STL 优先队列 及其 霍夫曼编码应用示例
优先队列(priority queue)优先队列是一种比较常用的结构,普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高进先出 (largest-in,first-out)的行为特征。c++ priority_queueSTL priority_queue是拥有权值观
2013-12-27 17:57:42 5533 1
原创 并查集及 编程练习
并查集概念:并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。能够实现较快的合并和判断元素所在集合的操作,应用很多,如其求无向图的连通分量个数等。比如典型应用:实现Kruskar算法求最小生成树。并查集的主要操作 :下面举例说明并查集的常用的三种操作:1、make_set(x) 把每一个元素初始化为一个集合初始化后每一个元素的
2013-12-17 19:42:17 2088
原创 二分查找(Binary Search) 常见问题解决方法总结
缘由今天浏览 何登成的技术博客 无意中发现了写的blog,二分查找(Binary Search)需要注意的问题,以及在数据库内核中的实现。随想总结下二分查找的常见问题。问题背景今年的实习生招聘考试,我出了一道二分查找(Binary Search)的题目。题目大意如下:给定一个升序排列的自然数数组,数组中包含重复数字,例如:[1,2,2,3,4,4,4,5,6,7,7]。问题:给定任意自然数,对数...
2013-12-13 21:48:07 18700 6
原创 C语言指针总结
C语言中的精华是什么,那当然是指针,是C语言的难点部分。C是对底层操作非常方便的语言,而底层操作中用到最多的就是指针,这成就了优秀的C程序的效率几乎和汇编语言程序一样高的功绩。本文介绍C指针的一些基础和高级知识。关键好是多写代码,这样才能更好的理解C的精华--指针。1. 指针的概念指针是一种数据类型,与其它的数据类型不同的是指针是一种“用来存放地址值的”变量。
2013-12-08 20:23:13 4002
转载 实际项目中的常见算法
原文出处: StackExchange 译文出处: infoQ近日Emanuele Viola在Stackexchange上提了这样的一个问题,他希望有人能够列举一些目前软件、硬件中正在使用的算法的实际案例来证明算法的重要性,对于大家可能给到的回答,他还提出了几点要求:使用这些算法的软件或者硬件应该是被广泛应用的;例子需要具体,并给出确切的系统、算法的引用地址;在经
2013-12-05 15:14:50 2721
原创 二级指针实现单链表的插入、删除及 linux内核源码双向链表之奇技
今天看了coolshell上关于二级指针删除单链表节点的文章。文章中Linus 举例:例如,我见过很多人在删除一个单项链表的时候,维护了一个”prev”表项指针,然后删除当前表项,就像这样:if (prev) prev->next = entry->next;else list_head = entry->next;and whenever I see code
2013-12-03 13:54:27 9595 4
原创 回溯法 求集合全排列、子集
回溯法,参见之前的blog。全排列:全排列是将一组数按一定顺序进行排列,如果这组数有n个,那么全排列数为n!个。从集合中依次选出每一个元素,作为排列的第一个元素,然后对剩余的元素进行全排列,如此递归处理,从而得到所有元素的全排列。以对字符串abc进行全排列为例,我们可以这么做:以abc为例固定a,求后面bc的排列:abc,acb,求好后,a和b交换,得到bac固定b,求
2013-11-30 17:43:08 6990
原创 算法-- 回溯算法 及 示例
回溯法介绍回溯法(英语:backtracking)也称试探法,回溯法有“通用的解题方法”之称。它可以系统的搜索一个问题的所有解或者任意解。回溯法是一个既带有系统性又带有跳跃性的的搜索算法。它在包含问题的所有解的解空间树中,按照深度优先的策略,从根结点出发搜索解空间树。算法搜索至解空间树的任一结点时,总是先判断该结点是否肯定不包含问题的解。如果肯定不包含,则跳过对以该结点为根的子
2013-11-30 16:09:46 9018
原创 编程求幻方(魔方),1-N
题目来源:2013.11.28 带的程序设计 I 上机(即大一C语言课程)。题目描述:有一种正方形的数字排列是一个5×5的数字幻方,即每个1到5的整数在每行每列都出现且出现一次。形式如下:1 2 3 4 52 1 4 5 33 4 5 1 24 5 2 3 15 3 1 2 4对于一个N×N的幻方,如果我们固定了第一行如下:1 2 3 4 5...N我们可以算出符合
2013-11-29 22:30:43 4534
viminstall.tar.gz
2015-12-28
rmtrash.zip
2015-08-20
jedis-2.4.2.jar
2014-05-16
pywin32-218.win32-py2.7
2013-11-12
一键安装 ctags和cscope的方法
2013-04-17
Proxy源代码
2013-03-19
c语言实用程序150例
2009-10-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人