socket中MSG_WAITALL和SO_RCVTIMEO(SO_SNDTIMEO)选项

这几个选项都可以通过setsockopt函数来对套接字进行设置,MSG_WAITALL要求套接字在接收时,阻塞地等到指定的长度的消息都到达才返回,可以简化TCP连接中分片的情况下,需要多次接收的处理。SO_RCVTIMEO(SO_SNDTIMEO)可以设置套接字的接收(发送)超时,防止套接字一直等...

2018-09-18 12:22:24

阅读数 115

评论数 0

RabbitMQ使用简谈

最近简单看了一下RabbitMQ,这里简单总结一下。(先写到现在学习的,有错误的话后面再改正) 相较于其他MQ,RMQ更加成熟稳定,所以有更大的学习的价值。 相较于ZMQ只是一个网络组件,RMQ是一个独立的服务,使用时需要服务器和RMQ server之间进行通信。RMQ服务器保证了消息...

2018-06-24 17:52:42

阅读数 29

评论数 0

中文编码及绘制

最近一个任务是判断一个字符串是不是中文,并将其绘制到一个jpg文件上。对于编码一直挺糊涂的,这次梳理了一下。 对于一个文件,可以使用file -i a.txt查看它的编码格式(不知怎么回事,我的终端是utf-8,在vim中输入中文时,老是出现乱码,只能在notepad++中编辑好之后再上传到...

2018-06-02 18:30:06

阅读数 18

评论数 0

消息队列简谈

现在软件开发越来越复杂,各部分耦合也越来越严重。尤其是一些创业公司,各部分模块变化频繁,给软件开发和设计提出了很多的要求。这时候,消息队列就越来越重要了。 一般来说,消息队列的使用场景有: 1、各部分解耦合 2、高峰时的削峰(作为cache) 3、可以作为RPC调用 ...

2018-05-20 16:09:47

阅读数 17

评论数 0

无锁并发编程简谈

(有半年没有写博客了,时间飞逝呀。。。。 :o ) 这里简单介绍一下无锁并发编程。 现在CPU的核越来越多,多线程、并发编程已经成为趋势。一涉及并发,同步是绕不开的话题。一般的方法是使用Mutex、旋转锁、条件变量等系统提供的方法来进行同步。(一个问题,Mutex和自旋锁的区别?)...

2018-05-10 11:56:04

阅读数 227

评论数 0

query求交模块总结

最近重新梳理了一下query的求交模块,记录一下。 以前不太清楚的地方,主要是怎么处理近义词(比如“蔡依林”和“Jolin”)以及怎么有些没全部命中term也可以找到。 第一个,在数据制作的过程中就会处理近义词,做到相应的倒排中(会标明近义词)。而且,求交的过程中,近义词也会一起参与求...

2017-11-05 15:01:39

阅读数 24

评论数 0

TCP三次握手和keep_alive

tcp/ip协议很久之前看过,现在忘得差不多了,补充一下tcp的三次握手和状态。 [img]http://dl2.iteye.com/upload/attachment/0127/6929/d85f79ac-2e6a-3f13-ae9d-5f21b18d8109.png[/img] 当...

2017-11-05 14:17:59

阅读数 16

评论数 0

qs收集结果

前一段处理qs网络堵塞的问题,进一步将lq和qs之间的通信做了一些梳理,记录一下。 我们知道,lq是一遍查找,一遍向qs发送请求的,每遍历一定数量的doc后(比如说60w,具体和工作场景有关),就向qs发送一定数量的结果。qs将这些答复汇总后记录,当达到一定的条件之后,就发送cancel信号...

2017-09-29 16:05:35

阅读数 10

评论数 0

perf查看函数调用

前一段使用perf查看程序的热点以及函数调用,一直看不到热点函数的函数调用,很是奇怪,在网上问别人,别人都说没问题,一度很是迷惑。后来又试了一下,结果就出现了,很是神奇。 使用方法很简单,就是perf record加上-g选项。另外,perf top也可以查看程序的热点,选项是-G。 ...

2017-09-02 10:51:10

阅读数 423

评论数 0

query的网络模型

最近看了一下项目的代码,写一下query的网络模型。 cache和query之间通信比较简单,就是tcp通信。qs和lq之间通过udp通信,而且扩展性比较好,这里记录一下。 刚开始lq绑定一个端口(udp也可以绑定),然后qs通过配置文件,读取每个lq的地址,然后和没有lq建立一个连接...

2017-07-15 17:25:27

阅读数 11

评论数 0

倒排和正排

搜索主要用到了三个文件:diskdata、docinfo和forwardindex。 diskdata文件是倒排文件,用于求交。 docinfo是doc的一般属性信息(pagerank/publish_time/颜色签名/尺寸等),用于排序前的剪枝(就是根据request信息简单过滤)...

2017-06-26 10:36:50

阅读数 42

评论数 0

socket编程近期经验总结

最近在做的一个小项目,难度不大,但是网络传输部分费了一点周折,在这里把近期的一些经验教训总结一下。因为是自己的一点心得,如果有疏漏,后面再补充修正。 程序使用TCP协议传输,先epoll_wait(其实连接不多,只是熟悉一下,结果确实学到了东西),然后进行接收。因为TCP有流量控制,会把大的...

2017-06-18 16:38:44

阅读数 13

评论数 0

一次socket排错

用socket通信,一般复用以前的组件,很少直接从底层写,很多问题没有注意到。这次写人脸打卡,server和qo之间的通信,我用以前的Transporter,底层是TCP通信。每当qo重启或者通信错误时,server便重连一次。 程序刚开始运行很正常,但是有一次发现通信错误,qo发给serv...

2017-05-31 19:24:17

阅读数 8

评论数 0

一次linux系统网络调优

两台服务器之间利用udp协议传输数据,增大传输量后从日志发现有很多丢包现象,使用nload发现平均速率只有200Mbp/s,并没有达到理论极限。是网卡有故障吗? 仔细思考后找到了原因,nload统计的是平均速率,但是网络传输是很快的,并不是一个稳定的速率,可能某一瞬时速率超过了前兆网卡的极限...

2016-09-11 18:24:23

阅读数 18

评论数 0

Linux系统内存使用

使用linux操作系统很多年了,但是对于内存使用不是太了解(估计很多人都不太懂),正好最近有个任务要降低程序的内存使用(要在一个服务器上同时跑更多的程序,内存成为瓶颈),就稍微深入了解了一下linux内存的使用说明。 一般来说看内存使用一般使用top命令,top命令的输出大致如下: ...

2016-09-11 17:29:03

阅读数 21

评论数 0

数据挖掘

[url]http://www.cnblogs.com/wentingtu/p/3513979.html[/url]

2016-09-11 17:08:18

阅读数 16

评论数 0

线程池的使用

以前没自己写过线程池,觉得挺神秘,前一段看了一下项目中线程池的实现,也挺简单。所以说会者不难,难者不会。 其实就是定义一些结构体,大致长这样: struct Item { Func *f; Arg *arg; }; 然后维持一个链表,线程每次从连表中...

2016-01-02 20:17:42

阅读数 12

评论数 0

使用LFM(Latent factor model)隐语义模型进行Top-N推荐[转]

原文地址:[url]http://blog.csdn.net/harryhuang1990/article/details/9924377[/url] 最近在拜读项亮博士的《推荐系统实践》,系统的学习一下推荐系统的相关知识。今天学习了其中的隐语义模型在Top-N推荐中的应用,在此做一个总结。 ...

2016-01-02 19:45:12

阅读数 23

评论数 0

c++动态链接库错误导致的程序运行异常

昨天改程序,明明代码都编译通过了,但是运行程序时老是出错,一会儿说文件加载异常,一会儿说找不到符号(“symbol lookup error”),在程序中加注释也没有打印,一度怀疑是见鬼了。 后来搜了一下,一般报的找不到符号错误是因为链接错误造成了,就使用ldd命令查看程序链...

2015-12-01 17:21:12

阅读数 46

评论数 0

一个比较巧妙的主备机设置

[img]http://dl2.iteye.com/upload/attachment/0111/6453/ac3e95b2-597b-3601-84b2-f553b4f0eb79.png[/img] manual01 manual02互为主备,平时请求均匀打到两台机器上,一台出故障之后...

2015-09-11 17:47:02

阅读数 60

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭