博客园 - haolujun
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=70984
2020-05-04T13:27:02Z
haolujun
https://www.cnblogs.com/haolujun/
feed.cnblogs.com
https://www.cnblogs.com/haolujun/p/9818191.html
互联网流量下的分层实验平台是咋做的 - haolujun
前言 对于现在拥有大流量的互联网平台来说,一个微小的页面改版或者是一个微小的后台内容推荐模型参数的修改都会产生非常大的影响,如何安全的在线上流量验证这些改进是否真有助于提高公司的收益或者是用户的体验呢? A/B Test 很容易想到做A/B Test,我们可以用一种方式把全网流量分成100份,取其中
2018-10-30T03:05:00Z
2018-10-30T03:05:00Z
haolujun
https://www.cnblogs.com/haolujun/
【摘要】前言 对于现在拥有大流量的互联网平台来说,一个微小的页面改版或者是一个微小的后台内容推荐模型参数的修改都会产生非常大的影响,如何安全的在线上流量验证这些改进是否真有助于提高公司的收益或者是用户的体验呢? A/B Test 很容易想到做A/B Test,我们可以用一种方式把全网流量分成100份,取其中 <a href="https://www.cnblogs.com/haolujun/p/9818191.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haolujun/p/9778939.html
机器学习web服务化实战:一次吐血的服务化之路 - haolujun
背景 在公司内部,我负责帮助研究院的小伙伴搭建机器学习web服务,研究院的小伙伴提供一个机器学习本地接口,我负责提供一个对外服务的HTTP接口。 说起人工智能和机器学习,python是最擅长的,其以开发速度快,第三方库多而广受欢迎,以至于现在大多数机器学习算法都是用python编写。但是对于服务化来
2018-10-15T02:30:00Z
2018-10-15T02:30:00Z
haolujun
https://www.cnblogs.com/haolujun/
【摘要】背景 在公司内部,我负责帮助研究院的小伙伴搭建机器学习web服务,研究院的小伙伴提供一个机器学习本地接口,我负责提供一个对外服务的HTTP接口。 说起人工智能和机器学习,python是最擅长的,其以开发速度快,第三方库多而广受欢迎,以至于现在大多数机器学习算法都是用python编写。但是对于服务化来 <a href="https://www.cnblogs.com/haolujun/p/9778939.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haolujun/p/9641840.html
RabbitMQ和Kafka到底怎么选(二)? - haolujun
前言 前一篇文章 "《RabbitMQ和Kafka到底怎么选?》" ,我们在吞吐量方面比较了Kafka和RabbitMQ,知道了Kafka的吞吐量要高于RabbitMQ。本文从可靠性方面继续探讨两个队列的差异。 RabbitMQ可靠性 我们通过前文知道,RabbitMQ的队列分为master que
2018-09-14T03:04:00Z
2018-09-14T03:04:00Z
haolujun
https://www.cnblogs.com/haolujun/
【摘要】前言 前一篇文章 "《RabbitMQ和Kafka到底怎么选?》" ,我们在吞吐量方面比较了Kafka和RabbitMQ,知道了Kafka的吞吐量要高于RabbitMQ。本文从可靠性方面继续探讨两个队列的差异。 RabbitMQ可靠性 我们通过前文知道,RabbitMQ的队列分为master que <a href="https://www.cnblogs.com/haolujun/p/9641840.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haolujun/p/9632835.html
RabbitMQ和Kafka到底怎么选? - haolujun
队列
2018-09-12T02:02:00Z
2018-09-12T02:02:00Z
haolujun
https://www.cnblogs.com/haolujun/
【摘要】队列 <a href="https://www.cnblogs.com/haolujun/p/9632835.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haolujun/p/9585509.html
基于海量词库的单词拼写检查、推荐到底是咋做的? - haolujun
前言 在我们日常应用中,应该遇到不少类似的状况: 写文档时,单词拼写错误后,工具自动推荐一个相似且正确的拼写形式; 使用搜狗输入法时,敲错某个字的拼音照样能够打出我们想要的汉字; 利用搜索引擎进行搜索时,下拉框中自动列出与输入相近的词语。 等等,不一一列举。 这种功能是如何实现的呢?里面用到了哪些算
2018-09-05T00:35:00Z
2018-09-05T00:35:00Z
haolujun
https://www.cnblogs.com/haolujun/
【摘要】前言 在我们日常应用中,应该遇到不少类似的状况: 写文档时,单词拼写错误后,工具自动推荐一个相似且正确的拼写形式; 使用搜狗输入法时,敲错某个字的拼音照样能够打出我们想要的汉字; 利用搜索引擎进行搜索时,下拉框中自动列出与输入相近的词语。 等等,不一一列举。 这种功能是如何实现的呢?里面用到了哪些算 <a href="https://www.cnblogs.com/haolujun/p/9585509.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haolujun/p/9527776.html
死磕一周算法,我让服务性能提高50% - haolujun
前言 我最近一直在公司做检索性能优化。当我看到这个算法之前,我也不认为我负责的检索系统性能还有改进的余地。但是这个算法确实太牛掰了,足足让服务性能提高50%,我不得不和大家分享一下。其实前一段时间的博客中也写到过这个算法,只是没有细讲,今天我准备把它单独拎出来,说道说道。说实话,本人数学功底一般,算
2018-08-24T01:39:00Z
2018-08-24T01:39:00Z
haolujun
https://www.cnblogs.com/haolujun/
【摘要】前言 我最近一直在公司做检索性能优化。当我看到这个算法之前,我也不认为我负责的检索系统性能还有改进的余地。但是这个算法确实太牛掰了,足足让服务性能提高50%,我不得不和大家分享一下。其实前一段时间的博客中也写到过这个算法,只是没有细讲,今天我准备把它单独拎出来,说道说道。说实话,本人数学功底一般,算 <a href="https://www.cnblogs.com/haolujun/p/9527776.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haolujun/p/8932778.html
如何为分布式系统优雅的更换RPC - haolujun
为啥需要更换RPC? 很多小伙伴都遇到过需要为分布式系统调用更换RPC的问题,为什么会遇到这种事呢?其实,在系统搭建初期,需求简单,架构简单,最重要的是请求量也少,所以很多系统都采用快速原型开发模式,对rpc的要求不高,随便找一个顺手的或者熟悉的rpc框架套进系统中即可。但是随着业务复杂度增高,系统
2018-04-25T02:04:00Z
2018-04-25T02:04:00Z
haolujun
https://www.cnblogs.com/haolujun/
【摘要】为啥需要更换RPC? 很多小伙伴都遇到过需要为分布式系统调用更换RPC的问题,为什么会遇到这种事呢?其实,在系统搭建初期,需求简单,架构简单,最重要的是请求量也少,所以很多系统都采用快速原型开发模式,对rpc的要求不高,随便找一个顺手的或者熟悉的rpc框架套进系统中即可。但是随着业务复杂度增高,系统 <a href="https://www.cnblogs.com/haolujun/p/8932778.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haolujun/p/8820802.html
手把手教你实现boost::bind - haolujun
前言 boost::bind操作想必大家都使用过,它特别神奇,能够绑定函数与参数,绑定后能够改变参数数量,并且还可以使用占位符。它可以绑定普通函数也可以绑定类成员函数。好多小伙伴试图看过boost::bind的源码,但是可能效果不佳。原因在于boost::bind的代码考虑了很多使用情况,而且还要兼
2018-04-16T02:15:00Z
2018-04-16T02:15:00Z
haolujun
https://www.cnblogs.com/haolujun/
【摘要】前言 boost::bind操作想必大家都使用过,它特别神奇,能够绑定函数与参数,绑定后能够改变参数数量,并且还可以使用占位符。它可以绑定普通函数也可以绑定类成员函数。好多小伙伴试图看过boost::bind的源码,但是可能效果不佳。原因在于boost::bind的代码考虑了很多使用情况,而且还要兼 <a href="https://www.cnblogs.com/haolujun/p/8820802.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haolujun/p/8399275.html
我是如何用单机实现亿级规模题库去重的? - haolujun
背景 最近工作中遇到了一个问题:如何对大规模题库去重?公司经过多年的积累,有着近亿道题目的题库,但是由于题目来源不一导致题库中有很多重复的题目,这些重复的题目在检索时,除了增加搜索引擎的计算量外,并不会提高准确率。此外由于题目过多,搜索引擎往往采取了截断策略,只对一部分题目进行计算,这导致了某些正确
2018-02-09T10:10:00Z
2018-02-09T10:10:00Z
haolujun
https://www.cnblogs.com/haolujun/
【摘要】背景 最近工作中遇到了一个问题:如何对大规模题库去重?公司经过多年的积累,有着近亿道题目的题库,但是由于题目来源不一导致题库中有很多重复的题目,这些重复的题目在检索时,除了增加搜索引擎的计算量外,并不会提高准确率。此外由于题目过多,搜索引擎往往采取了截断策略,只对一部分题目进行计算,这导致了某些正确 <a href="https://www.cnblogs.com/haolujun/p/8399275.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haolujun/p/8302542.html
搜索引擎:该如何设计你的倒排索引? - haolujun
搜索引擎如何工作? 信息检索已经发展的非常成熟了,应该所有人都不陌生。我有幸这几年接触过并且实际做过一些搜索引擎开发的工作,特此总结并分享给大家。实际上,一个成熟的搜索引擎是想当复杂的,比如百度的,就分nginx,vui,us,as,bs,da.....等等这些模块,当然这些简写的字母大家也不必了解
2018-01-18T02:08:00Z
2018-01-18T02:08:00Z
haolujun
https://www.cnblogs.com/haolujun/
【摘要】搜索引擎如何工作? 信息检索已经发展的非常成熟了,应该所有人都不陌生。我有幸这几年接触过并且实际做过一些搜索引擎开发的工作,特此总结并分享给大家。实际上,一个成熟的搜索引擎是想当复杂的,比如百度的,就分nginx,vui,us,as,bs,da.....等等这些模块,当然这些简写的字母大家也不必了解 <a href="https://www.cnblogs.com/haolujun/p/8302542.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haolujun/p/8178213.html
服务中有“推”有“拉”,该如何分析线上问题? - haolujun
背景 随着队列技术越来越成熟,很多公司都把MQ放入其技术栈中,线上也基本都运行着该组件。接下来我们一起讨论下,当使用MQ后,你该如何分析线上问题?这里给出两个名词解释,“推”:指常用的RPC调用,“拉”:使用队列进行消息传递。 示例架构 如上图一个普通的服务架构,图中有多个要素,下面对这几个要素进行
2018-01-04T01:52:00Z
2018-01-04T01:52:00Z
haolujun
https://www.cnblogs.com/haolujun/
【摘要】背景 随着队列技术越来越成熟,很多公司都把MQ放入其技术栈中,线上也基本都运行着该组件。接下来我们一起讨论下,当使用MQ后,你该如何分析线上问题?这里给出两个名词解释,“推”:指常用的RPC调用,“拉”:使用队列进行消息传递。 示例架构 如上图一个普通的服务架构,图中有多个要素,下面对这几个要素进行 <a href="https://www.cnblogs.com/haolujun/p/8178213.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haolujun/p/8012288.html
2017我都干了啥? - haolujun
前言 过完农历新年,我也即将奔入三十而立之年。对于男人来说,三十意味着更多的责任。回头看自己从毕业到现在五年,有进步,但稍稍有些遗憾,当初制定的目标:年薪百万,架构师统统么有实现。这不免让我想到了前段时间的“中兴跳楼事件”,我离他还远么? 想到这里,我不免有些难受,那种无力感就像我深陷泥沼,越挣扎陷
2018-01-02T03:17:00Z
2018-01-02T03:17:00Z
haolujun
https://www.cnblogs.com/haolujun/
【摘要】前言 过完农历新年,我也即将奔入三十而立之年。对于男人来说,三十意味着更多的责任。回头看自己从毕业到现在五年,有进步,但稍稍有些遗憾,当初制定的目标:年薪百万,架构师统统么有实现。这不免让我想到了前段时间的“中兴跳楼事件”,我离他还远么? 想到这里,我不免有些难受,那种无力感就像我深陷泥沼,越挣扎陷 <a href="https://www.cnblogs.com/haolujun/p/8012288.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haolujun/p/8086557.html
什么?-你的服务竟然被探活搞死了? - haolujun
背景 今年开发了好多服务,着实踩了不少的坑。这不,分分钟就被探活搞的死去活來。这里我把这些经验分享给大家,避免大家再继续犯这种错误。 通用tcp探活原理 其实,探活原理特别简单,只要稍懂计算机网络就能够理解。 检测端 发起tcp三次握手,建立新连接,连接建立成功代表服务活着,建立失败代表服务死了,之
2017-12-26T02:06:00Z
2017-12-26T02:06:00Z
haolujun
https://www.cnblogs.com/haolujun/
【摘要】背景 今年开发了好多服务,着实踩了不少的坑。这不,分分钟就被探活搞的死去活來。这里我把这些经验分享给大家,避免大家再继续犯这种错误。 通用tcp探活原理 其实,探活原理特别简单,只要稍懂计算机网络就能够理解。 检测端 发起tcp三次握手,建立新连接,连接建立成功代表服务活着,建立失败代表服务死了,之 <a href="https://www.cnblogs.com/haolujun/p/8086557.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haolujun/p/8075226.html
弹性伸缩服务实战:我是如何节省80%的机器成本的 - haolujun
前言 今年一直在做的事情就是成本优化,今天分享的是如何打造一个弹性可伸缩服务。 why? 为什么需要弹性伸缩? 一个网站,通常流量大小不是每时每刻都一样,有高峰,有低谷,如果每时每刻都要保持能够扛住高峰流量的机器数目,那么成本会很高。一个诱人的想法就是根据流量大小自动调节机器的数量,这就需要我们开发
2017-12-21T02:17:00Z
2017-12-21T02:17:00Z
haolujun
https://www.cnblogs.com/haolujun/
【摘要】前言 今年一直在做的事情就是成本优化,今天分享的是如何打造一个弹性可伸缩服务。 why? 为什么需要弹性伸缩? 一个网站,通常流量大小不是每时每刻都一样,有高峰,有低谷,如果每时每刻都要保持能够扛住高峰流量的机器数目,那么成本会很高。一个诱人的想法就是根据流量大小自动调节机器的数量,这就需要我们开发 <a href="https://www.cnblogs.com/haolujun/p/8075226.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haolujun/p/7819716.html
最长公共子序列与最小编辑距离-你有更快的算法么? - haolujun
前言 工作以后很少用到算法,时间长了脑袋也不灵活。但是最近,我有幸在工作中又开始用到算法,这使我欣喜若狂,这两个算法主要用在计算文本相似度的场景中。小伙伴看标题中的“最长公共子序列”和“最小编辑距离”算法想当然都认为是烂大街的算法了,有什么好讲的。当然那种朴素的$ O(N^{2}) $的算法本文不去
2017-12-20T08:59:00Z
2017-12-20T08:59:00Z
haolujun
https://www.cnblogs.com/haolujun/
【摘要】前言 工作以后很少用到算法,时间长了脑袋也不灵活。但是最近,我有幸在工作中又开始用到算法,这使我欣喜若狂,这两个算法主要用在计算文本相似度的场景中。小伙伴看标题中的“最长公共子序列”和“最小编辑距离”算法想当然都认为是烂大街的算法了,有什么好讲的。当然那种朴素的$ O(N^{2}) $的算法本文不去 <a href="https://www.cnblogs.com/haolujun/p/7819716.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haolujun/p/8011776.html
我是怎么用跳表优化搜索引擎的? - haolujun
前言 对于跳表,我想大家都不陌生吧,这里不多解释,感兴趣的小伙伴可以看我的这篇文章:http://www.cnblogs.com/haolujun/archive/2012/12/24/2830683.html。 这段时间在做我们拍搜的优化,今天我就讲讲我是如何用跳表优化检索系统的。 搜索引擎的夹角
2017-12-11T01:48:00Z
2017-12-11T01:48:00Z
haolujun
https://www.cnblogs.com/haolujun/
【摘要】前言 对于跳表,我想大家都不陌生吧,这里不多解释,感兴趣的小伙伴可以看我的这篇文章:http://www.cnblogs.com/haolujun/archive/2012/12/24/2830683.html。 这段时间在做我们拍搜的优化,今天我就讲讲我是如何用跳表优化检索系统的。 搜索引擎的夹角 <a href="https://www.cnblogs.com/haolujun/p/8011776.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haolujun/p/7598577.html
我是如何利用Hadoop做大规模日志压缩的 - haolujun
想知道如何对TB级的日志进行压缩么?想知道其中会有哪些坑么?想知道如何针对具体情况进行实际优化么?本文会给你一个满意的答案!
2017-09-27T02:03:00Z
2017-09-27T02:03:00Z
haolujun
https://www.cnblogs.com/haolujun/
【摘要】想知道如何对TB级的日志进行压缩么?想知道其中会有哪些坑么?想知道如何针对具体情况进行实际优化么?本文会给你一个满意的答案! <a href="https://www.cnblogs.com/haolujun/p/7598577.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haolujun/p/7574220.html
我为什么要设计自己的流量调度算法? - haolujun
背景 公司使用阿里的云主机部署计算型的服务,就是特别耗cpu的那种。使用过程中有一件事情很苦恼,那就是云主机的性能是不一致的,机器间的性能可相差30%,更严重的是由于是共享云主机,经常在晚上8点钟左右(各大网站的高峰期)有某些机器的系统cpu突然飙高(原因是一次系统调用消耗突然增加,系统cpu能飙到
2017-09-22T08:56:00Z
2017-09-22T08:56:00Z
haolujun
https://www.cnblogs.com/haolujun/
【摘要】背景 公司使用阿里的云主机部署计算型的服务,就是特别耗cpu的那种。使用过程中有一件事情很苦恼,那就是云主机的性能是不一致的,机器间的性能可相差30%,更严重的是由于是共享云主机,经常在晚上8点钟左右(各大网站的高峰期)有某些机器的系统cpu突然飙高(原因是一次系统调用消耗突然增加,系统cpu能飙到 <a href="https://www.cnblogs.com/haolujun/p/7574220.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haolujun/p/7527342.html
SimpleRpc-客户端与服务端工作模型探讨 - haolujun
前言 本篇文章讲述客户端与服务端的具体设计细节。有细心的小伙伴发现,客户端和服务端的工作方式不一样:服务端是多线程计算模型,利用工作线程完成数据的读取,而客户端是单线程(利用Reactor线程完成数据的读取)。这么做的原因有二:首先我们认为我们的使用RPC的初衷是由于CPU计算是瓶颈,不得已把计算放
2017-09-21T09:17:00Z
2017-09-21T09:17:00Z
haolujun
https://www.cnblogs.com/haolujun/
【摘要】前言 本篇文章讲述客户端与服务端的具体设计细节。有细心的小伙伴发现,客户端和服务端的工作方式不一样:服务端是多线程计算模型,利用工作线程完成数据的读取,而客户端是单线程(利用Reactor线程完成数据的读取)。这么做的原因有二:首先我们认为我们的使用RPC的初衷是由于CPU计算是瓶颈,不得已把计算放 <a href="https://www.cnblogs.com/haolujun/p/7527342.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/haolujun/p/7527320.html
SimpleRpc-序列化与反序列化的设计与实现 - haolujun
为什么需要序列化和反序列化? 假设你是客户端,现在要调用远程的加法计算服务,你与服务端商定好了发送数据的格式:发送8个字节的请求,前4字节是第一个数,后4字节是第二个数,服务端读取数据的时候也按照商定的方式读取。其实,这就是一个序列化和反序列化的过程。序列化:2个数字变成8个字节数据,反序列化:8个
2017-09-21T09:16:00Z
2017-09-21T09:16:00Z
haolujun
https://www.cnblogs.com/haolujun/
【摘要】为什么需要序列化和反序列化? 假设你是客户端,现在要调用远程的加法计算服务,你与服务端商定好了发送数据的格式:发送8个字节的请求,前4字节是第一个数,后4字节是第二个数,服务端读取数据的时候也按照商定的方式读取。其实,这就是一个序列化和反序列化的过程。序列化:2个数字变成8个字节数据,反序列化:8个 <a href="https://www.cnblogs.com/haolujun/p/7527320.html" target="_blank">阅读全文</a>