博客园 - 烛秋
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=82323
2023-10-30T03:30:50Z
烛秋
https://www.cnblogs.com/cswuyg/
feed.cnblogs.com
https://www.cnblogs.com/cswuyg/p/17794816.html
C++小练习:字符串分割的高性能实现 - 烛秋
字符串分割是很常见的功能,通常其实现代码也很简洁,这就使得开发者容易忽略其性能,写出非最佳性能的代码,譬如:没有使用现代 C++ 中的 string_view、对遍历过程没有精细考虑。通过精细的控制计算量以及应用 SIMD 指令可以获得比较好的收益,特别是 SIMD 指令在任意多分隔符场景下性能优化效果非常明显。
2023-10-29T14:00:00Z
2023-10-29T14:00:00Z
烛秋
https://www.cnblogs.com/cswuyg/
【摘要】字符串分割是很常见的功能,通常其实现代码也很简洁,这就使得开发者容易忽略其性能,写出非最佳性能的代码,譬如:没有使用现代 C++ 中的 string_view、对遍历过程没有精细考虑。通过精细的控制计算量以及应用 SIMD 指令可以获得比较好的收益,特别是 SIMD 指令在任意多分隔符场景下性能优化效果非常明显。 <a href="https://www.cnblogs.com/cswuyg/p/17794816.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cswuyg/p/10706667.html
B+树的Copy-on-Write设计 - 烛秋
本文主要介绍B+树的Copy-On-Write,包括由来、设计思路和核心源码实现(以Xapian源码为例)。中文的互联网世界里,对B树、B+树的科普介绍很丰富,但对它们在工业界的实际使用却几乎没有相关介绍文章,本文既是总结分享,也是资料索引。 在阅读本文之前需要先对B+树有概念上的认识,可以阅读wi
2019-04-14T14:58:00Z
2019-04-14T14:58:00Z
烛秋
https://www.cnblogs.com/cswuyg/
【摘要】本文主要介绍B+树的Copy-On-Write,包括由来、设计思路和核心源码实现(以Xapian源码为例)。中文的互联网世界里,对B树、B+树的科普介绍很丰富,但对它们在工业界的实际使用却几乎没有相关介绍文章,本文既是总结分享,也是资料索引。 在阅读本文之前需要先对B+树有概念上的认识,可以阅读wi <a href="https://www.cnblogs.com/cswuyg/p/10706667.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cswuyg/p/10568945.html
so库链接和运行时选择哪个路径下的库? - 烛秋
总结今天遇到的一个so库链接、运行问题。 这几天修改了xapian的源码,重新编译so库,再重新编译之前的demo程序,跑起来后却发现执行的函数并非我修改过的,使用的还是老版本。折腾了一会儿,发现是因为/usr/local/lib目录中含有同名so库导致。这里记录下正确的解决思路。 1 确保链接到了
2019-03-22T16:25:00Z
2019-03-22T16:25:00Z
烛秋
https://www.cnblogs.com/cswuyg/
【摘要】总结今天遇到的一个so库链接、运行问题。 这几天修改了xapian的源码,重新编译so库,再重新编译之前的demo程序,跑起来后却发现执行的函数并非我修改过的,使用的还是老版本。折腾了一会儿,发现是因为/usr/local/lib目录中含有同名so库导致。这里记录下正确的解决思路。 1 确保链接到了 <a href="https://www.cnblogs.com/cswuyg/p/10568945.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cswuyg/p/10552564.html
Xapian索引-文档检索过程分析之匹配百分比 - 烛秋
本文属于文档检索过程分析的一部分,重点分析文档匹配百分比(percent)的计算过程。 1 percent是什么? 我们之前分析的检索demo: 2 为什么需要percent? 先说一下背景,做过搜索的人应该都知道BM25算法,这也是xapian内部默认的相关性打分算法,它是一个针对term做打分的
2019-03-18T13:03:00Z
2019-03-18T13:03:00Z
烛秋
https://www.cnblogs.com/cswuyg/
【摘要】本文属于文档检索过程分析的一部分,重点分析文档匹配百分比(percent)的计算过程。 1 percent是什么? 我们之前分析的检索demo: 2 为什么需要percent? 先说一下背景,做过搜索的人应该都知道BM25算法,这也是xapian内部默认的相关性打分算法,它是一个针对term做打分的 <a href="https://www.cnblogs.com/cswuyg/p/10552564.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cswuyg/p/10508114.html
Xapian索引-文档检索过程分析 - 烛秋
本文是Xapian检索过程的分析,本文内容中源码比较多。检索过程,总的来说就是拉取倒排链,取得合法doc,然后做打分排序的过程。 1 理论分析 1.1 检索语法 面对不同的检索业务,我们会有多种检索需求,譬如:要求A term和B term都在Doc中出现;要求A term或者B term任意在Do
2019-03-10T15:58:00Z
2019-03-10T15:58:00Z
烛秋
https://www.cnblogs.com/cswuyg/
【摘要】本文是Xapian检索过程的分析,本文内容中源码比较多。检索过程,总的来说就是拉取倒排链,取得合法doc,然后做打分排序的过程。 1 理论分析 1.1 检索语法 面对不同的检索业务,我们会有多种检索需求,譬如:要求A term和B term都在Doc中出现;要求A term或者B term任意在Do <a href="https://www.cnblogs.com/cswuyg/p/10508114.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cswuyg/p/10468033.html
Xapian的内存索引-添加文档 - 烛秋
本文主要记录Xapian的内存索引在添加文档过程中,做了哪些事情。 内容主要为函数执行过程中的流水线。 demo代码: 1.创建并填充Document 定义好文档对象,使用add_posting接口,添加term,以及对应的position、wdfinc; 内部实现细节: 1.1 先尝试读取doc已
2019-03-03T14:16:00Z
2019-03-03T14:16:00Z
烛秋
https://www.cnblogs.com/cswuyg/
【摘要】本文主要记录Xapian的内存索引在添加文档过程中,做了哪些事情。 内容主要为函数执行过程中的流水线。 demo代码: 1.创建并填充Document 定义好文档对象,使用add_posting接口,添加term,以及对应的position、wdfinc; 内部实现细节: 1.1 先尝试读取doc已 <a href="https://www.cnblogs.com/cswuyg/p/10468033.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cswuyg/p/10417727.html
Xapian的内存索引 - 烛秋
关键字:xapian、内存索引 xapian除了提供用于生产环境的磁盘索引,也提供了内存索引(InMemoryDatabase)。内存索引。我们可以通过观察内存索引的设计,来了解xapian的设计思路。 1 用途 官方文档说法: “inmemory, This type is a database
2019-02-22T04:49:00Z
2019-02-22T04:49:00Z
烛秋
https://www.cnblogs.com/cswuyg/
【摘要】关键字:xapian、内存索引 xapian除了提供用于生产环境的磁盘索引,也提供了内存索引(InMemoryDatabase)。内存索引。我们可以通过观察内存索引的设计,来了解xapian的设计思路。 1 用途 官方文档说法: “inmemory, This type is a database <a href="https://www.cnblogs.com/cswuyg/p/10417727.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cswuyg/p/10402218.html
Xapian使用入门 - 烛秋
关键字:搜索引擎、Xapian 一篇拖了两三年的入门总结文章,今天发出来,一方面是自己的总结,另一方面是给自己和他人的备忘。读者需要对搜索引擎有初步了解,譬如了解倒排、term、doc、相似度打分等概念。 Xapian是一个C++搜索引擎内核,提供了类似Lucene的功能,功能没有Lucene丰富,
2019-02-19T10:52:00Z
2019-02-19T10:52:00Z
烛秋
https://www.cnblogs.com/cswuyg/
【摘要】关键字:搜索引擎、Xapian 一篇拖了两三年的入门总结文章,今天发出来,一方面是自己的总结,另一方面是给自己和他人的备忘。读者需要对搜索引擎有初步了解,譬如了解倒排、term、doc、相似度打分等概念。 Xapian是一个C++搜索引擎内核,提供了类似Lucene的功能,功能没有Lucene丰富, <a href="https://www.cnblogs.com/cswuyg/p/10402218.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cswuyg/p/10155017.html
一个std::sort 自定义比较排序函数 crash的分析过程 - 烛秋
两年未写总结博客,今天先来练练手,总结最近遇到的一个crash case。 注意:以下的分析都基于GCC4.4.6 一、解决crash 我们有一个复杂的排序,涉及到很多个因子,使用自定义排序函数的std::sort做排序。Compare函数类似下文的伪代码: 后来,我们给排序函数加了更多的复杂逻辑:
2018-12-21T04:07:00Z
2018-12-21T04:07:00Z
烛秋
https://www.cnblogs.com/cswuyg/
【摘要】两年未写总结博客,今天先来练练手,总结最近遇到的一个crash case。 注意:以下的分析都基于GCC4.4.6 一、解决crash 我们有一个复杂的排序,涉及到很多个因子,使用自定义排序函数的std::sort做排序。Compare函数类似下文的伪代码: 后来,我们给排序函数加了更多的复杂逻辑: <a href="https://www.cnblogs.com/cswuyg/p/10155017.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cswuyg/p/6220700.html
编译GCC4.8.2 - 烛秋
公司的机器上默认是GCC4.4.6,为了完整的体验C++11,可以自己编译一个GCC4.8.2出来(自带了更高版本的glibc)。 以下是备忘。 1、下载GCC源码以及依赖库 gmp ftp://ftp.gnu.org/gnu/gmp/gmp-6.1.1.tar.bz2 mpfr ftp://ftp
2016-12-25T13:58:00Z
2016-12-25T13:58:00Z
烛秋
https://www.cnblogs.com/cswuyg/
【摘要】公司的机器上默认是GCC4.4.6,为了完整的体验C++11,可以自己编译一个GCC4.8.2出来(自带了更高版本的glibc)。 以下是备忘。 1、下载GCC源码以及依赖库 gmp ftp://ftp.gnu.org/gnu/gmp/gmp-6.1.1.tar.bz2 mpfr ftp://ftp <a href="https://www.cnblogs.com/cswuyg/p/6220700.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cswuyg/p/6220671.html
使用C++11的一点总结 - 烛秋
C++11已不是新鲜技术,但对于我来说,工作中用得还不够多(前东家长时间使用gcc3.4.5,虽然去年升了4.8.2,但旧模块维护还是3.4.5居多;新东家用的是4.4.6,不能完整支持C++11,而且有内部有基础库早已支持了C++11 STL的部分功能),再加上自己的练习也写得少,了解仅是几点简单
2016-12-25T13:48:00Z
2016-12-25T13:48:00Z
烛秋
https://www.cnblogs.com/cswuyg/
【摘要】C++11已不是新鲜技术,但对于我来说,工作中用得还不够多(前东家长时间使用gcc3.4.5,虽然去年升了4.8.2,但旧模块维护还是3.4.5居多;新东家用的是4.4.6,不能完整支持C++11,而且有内部有基础库早已支持了C++11 STL的部分功能),再加上自己的练习也写得少,了解仅是几点简单 <a href="https://www.cnblogs.com/cswuyg/p/6220671.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cswuyg/p/5869256.html
搭建一个分布式MongoDB鉴权集群 - 烛秋
今天休假在家,测试并搭建了一个replica set shard MongoDB鉴权集群。replica set shard 鉴权集群中文资料比较少,本文是个人笔记,同时也希望对后来者有所帮助。本文仅是搭建步骤和Q&A,用于实际工作中的使用查阅,阅读者需要有分布式集群的理论基础。 关键字:Repli
2016-09-13T11:57:00Z
2016-09-13T11:57:00Z
烛秋
https://www.cnblogs.com/cswuyg/
【摘要】今天休假在家,测试并搭建了一个replica set shard MongoDB鉴权集群。replica set shard 鉴权集群中文资料比较少,本文是个人笔记,同时也希望对后来者有所帮助。本文仅是搭建步骤和Q&A,用于实际工作中的使用查阅,阅读者需要有分布式集群的理论基础。 关键字:Repli <a href="https://www.cnblogs.com/cswuyg/p/5869256.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cswuyg/p/5651620.html
Elasticsearch使用备忘 - 烛秋
最近我们需要对大约2T(6.5亿条)日志做全文检索,Elasticsearch看起来很火爆,又有很多产品使用(Facebook、github、stackoverflow),值得一试。以下是一些基础知识笔记。 Elasticsearch是一个基于Lucene构建的开源、分布式、RESTful的搜索引擎
2016-07-07T13:20:00Z
2016-07-07T13:20:00Z
烛秋
https://www.cnblogs.com/cswuyg/
【摘要】最近我们需要对大约2T(6.5亿条)日志做全文检索,Elasticsearch看起来很火爆,又有很多产品使用(Facebook、github、stackoverflow),值得一试。以下是一些基础知识笔记。 Elasticsearch是一个基于Lucene构建的开源、分布式、RESTful的搜索引擎 <a href="https://www.cnblogs.com/cswuyg/p/5651620.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cswuyg/p/5215161.html
为Node.js编写组件的几种方式 - 烛秋
本文主要备忘为Node.js编写组件的三种实现:纯js实现、v8 API实现(同步&异步)、借助swig框架实现。 关键字:Node.js、C++、v8、swig、异步、回调。 简介 首先介绍使用v8 API跟使用swig框架的不同: (1)v8 API方式为官方提供的原生方法,功能强大而完善,缺点
2016-02-24T14:02:00Z
2016-02-24T14:02:00Z
烛秋
https://www.cnblogs.com/cswuyg/
【摘要】本文主要备忘为Node.js编写组件的三种实现:纯js实现、v8 API实现(同步&异步)、借助swig框架实现。 关键字:Node.js、C++、v8、swig、异步、回调。 简介 首先介绍使用v8 API跟使用swig框架的不同: (1)v8 API方式为官方提供的原生方法,功能强大而完善,缺点 <a href="https://www.cnblogs.com/cswuyg/p/5215161.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cswuyg/p/5196587.html
一个网络传输框架——zeroMQ 调研笔记 - 烛秋
一、它是什么 zeroMQ,一个处理消息传输的库,重点在传输上,看起来它像是在socket上面封装了一层,让我们可以很容易的利用它来做N对M的数据传输,在分布式系统中很方便,在接收端它有round-robin负载均衡。 官方介绍:http://zguide.zeromq.org/page:all "
2016-02-17T13:34:00Z
2016-02-17T13:34:00Z
烛秋
https://www.cnblogs.com/cswuyg/
【摘要】一、它是什么 zeroMQ,一个处理消息传输的库,重点在传输上,看起来它像是在socket上面封装了一层,让我们可以很容易的利用它来做N对M的数据传输,在分布式系统中很方便,在接收端它有round-robin负载均衡。 官方介绍:http://zguide.zeromq.org/page:all " <a href="https://www.cnblogs.com/cswuyg/p/5196587.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cswuyg/p/5193313.html
Node.js的cluster模块——Web后端多进程服务 - 烛秋
众所周知,Node.js是单线程的,一个单独的Node.js进程无法充分利用多核。Node.js从v0.6.0开始,新增cluster模块,让Node.js开发Web服务时,很方便的做到充分利用多核机器。 充分利用多核的思路是:使用多个进程处理业务。cluster模块封装了创建子进程、进程间通信、服
2016-02-16T09:07:00Z
2016-02-16T09:07:00Z
烛秋
https://www.cnblogs.com/cswuyg/
【摘要】众所周知,Node.js是单线程的,一个单独的Node.js进程无法充分利用多核。Node.js从v0.6.0开始,新增cluster模块,让Node.js开发Web服务时,很方便的做到充分利用多核机器。 充分利用多核的思路是:使用多个进程处理业务。cluster模块封装了创建子进程、进程间通信、服 <a href="https://www.cnblogs.com/cswuyg/p/5193313.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cswuyg/p/5150070.html
boost::spirit unicode 简用记录 - 烛秋
本文简单记录使用boost::spirit解析有中文关键字的字符串并执行响应动作,类似于语法分析+执行。关键字:字符串解析 boost::spirit::qi::parse qi::unicode::char_这几天在使用boost::spirit解析中文字符串表达式,网络上这方面的资料很少,很多介...
2016-01-21T16:37:00Z
2016-01-21T16:37:00Z
烛秋
https://www.cnblogs.com/cswuyg/
【摘要】本文简单记录使用boost::spirit解析有中文关键字的字符串并执行响应动作,类似于语法分析+执行。关键字:字符串解析 boost::spirit::qi::parse qi::unicode::char_这几天在使用boost::spirit解析中文字符串表达式,网络上这方面的资料很少,很多介... <a href="https://www.cnblogs.com/cswuyg/p/5150070.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cswuyg/p/5103909.html
HTTP的长连接和短连接——Node上的测试 - 烛秋
本文主要从实践角度介绍长、短连接在TCP层面的表现,借助Node.JS搭建后台服务,使用WinHTTP、Ajax做客户端请求测试,最后简单涉及WebSocket。 关键字:长连接、短连接、Node.JS、WebSocket. 一两年前,在理论上对长短连接做了学习,那时的技能以客户端为主,所以也止步于
2016-01-05T14:10:00Z
2016-01-05T14:10:00Z
烛秋
https://www.cnblogs.com/cswuyg/
【摘要】本文主要从实践角度介绍长、短连接在TCP层面的表现,借助Node.JS搭建后台服务,使用WinHTTP、Ajax做客户端请求测试,最后简单涉及WebSocket。 关键字:长连接、短连接、Node.JS、WebSocket. 一两年前,在理论上对长短连接做了学习,那时的技能以客户端为主,所以也止步于 <a href="https://www.cnblogs.com/cswuyg/p/5103909.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cswuyg/p/5087377.html
MongoDB 驱动以及分布式集群读取优先级设置 - 烛秋
本文主要介绍使用MongoDB C驱动读取分布式MongoDB集群时遇到的坑,主要在读取优先级和匹配tag上;同时简单介绍Python驱动、Node.js驱动、Mongoose驱动如何使用读取优先级和匹配tag。前提:MongoDB集群为 replica set shard,部署可以参考:Mongo...
2015-12-29T14:59:00Z
2015-12-29T14:59:00Z
烛秋
https://www.cnblogs.com/cswuyg/
【摘要】本文主要介绍使用MongoDB C驱动读取分布式MongoDB集群时遇到的坑,主要在读取优先级和匹配tag上;同时简单介绍Python驱动、Node.js驱动、Mongoose驱动如何使用读取优先级和匹配tag。前提:MongoDB集群为 replica set shard,部署可以参考:Mongo... <a href="https://www.cnblogs.com/cswuyg/p/5087377.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/cswuyg/p/5049935.html
Lua知识备忘录 - 烛秋
最近对Lua很感兴趣,以下是本阶段学习的总结,包含三部分,一部分是基础语法,一部分是扩展和解释器嵌入,最后一部分是Lua小练习。 知识涉及:Lua语言编程基础;Lua&C++:Lua扩展、嵌入Lua解释器、裸写C++扩展、借助swig写C++扩展。平台:Linux、gcc4.8.2 一、基础语法 1
2015-12-20T12:10:00Z
2015-12-20T12:10:00Z
烛秋
https://www.cnblogs.com/cswuyg/
【摘要】最近对Lua很感兴趣,以下是本阶段学习的总结,包含三部分,一部分是基础语法,一部分是扩展和解释器嵌入,最后一部分是Lua小练习。 知识涉及:Lua语言编程基础;Lua&C++:Lua扩展、嵌入Lua解释器、裸写C++扩展、借助swig写C++扩展。平台:Linux、gcc4.8.2 一、基础语法 1 <a href="https://www.cnblogs.com/cswuyg/p/5049935.html" target="_blank">阅读全文</a>