首页
Loop in Codes
取消

select真的有限制吗

在刚开始学习网络编程时,似乎莫名其妙地就会被某人/某资料告诉select函数是有fd(file descriptor)数量限制的。在最近的一次记忆里还有个人笑说select只支持64个fd。我甚至还写过一篇不负责任甚至错误的博客(突破select的FD_SETSIZE限制)。有人说,直接重新定义FD_SETSIZE就可以突破这个select的限制,也有人说除了重定义这个宏之外还的重新编译内核...

muduo源码阅读

最近简单读了下muduo的源码,本文对其主要实现/结构简单总结下。 muduo的主要源码位于net文件夹下,base文件夹是一些基础代码,不影响理解网络部分的实现。muduo主要类包括: EventLoop Channel Poller TcpConnection TcpClient TcpServer Connector Acceptor Even...

dhtcrawler的进程模型经验

距离写dhtcrawler已经有半年时间。半年前就想总结点心得经验,但最后写出来的并没有表达出我特别有感慨的地方。最近又被人问到这方面的经验问题,才静下心来思考整理了下。 我的经验是关于在写一个网络项目时所涉及到的架构(或者说是模型)。 在dhtcrawler中,一个主要的问题是:程序在网络中需要尽可能快尽可能多地收集请求,然后程序需要尽可能快地加工处理这些信息。本质上就这么简单,我觉得...

my 2013

技术 这一年里个人的技术感觉进步不是那么大。一方面技术之外的事情多了起来,另一方面由于工作原因接触的技术也较为杂乱,没有机会专注。技术的提升还是得靠业余时间。 系统分析设计 学了些RUP的方法,对规范化的系统分析设计算是有了一定认识。但这个东西在实践的过程中往往较难运用,好的方法学还是得看项目的实际情况而定。 单元测试软件 基于clang重写了公司的一个测试软件。因为之前有过一定的...

scala主要特性一览

概述 scala语言包含了函数式语言和面向对象语言的语法特性,从我目前的感受来看,这不是一门简单的语言。同Ruby/Erlang相比,其语法集大多了。scala基于JVM或.NET平台,其可以几乎无缝地使用Java库(不但使用上没有负担,其运行效率上也不会增加负担),配合其强大的语言表达能力,还是很有吸引力。 类型 类/对象 scala中一切都是对象,虽然Java也是这样说的(其实r...

Javascript Overview

Lexical Structure In JavaScript, identifiers are used to name variables and functions and to provide labels for certain loops in JavaScript code. A JavaScript identifier must begin with a letter, ...

记一次堆栈平衡错误

最近在一个使用Visual Studio开发的C++程序中,出现了如下错误: Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with ...

dhtcrawler2换用sphinx搜索

dhtcrawler2最开始使用mongodb自带的全文搜索引擎搜索资源。搜索一些短关键字时很容易导致erlang进程call timeout,也就是查询时间太长。对于像avi这种关键字,搜索时间长达十几秒。搜索的资源数量200万左右。这其中大部分资源只是对root文件名进行了索引,即对于多文件资源而言没有索引单个文件名。索引方式有部分资源是按照字符串子串的形式,没有拆词,非常占用存储空间;...

磁力搜索第二版-dhtcrawler2

接上篇。 下载使用 目前为止dhtcrawler2相对dhtcrawler而言,数据库部分调整很大,DHT部分基本沿用之前。但单纯作为一个爬资源的程序而言,DHT部分可以进行大幅削减,这个以后再说。这个版本更快、更稳定。为了方便,我将编译好的erlang二进制文件作为git的主分支,我还添加了一些Windows下的批处理脚本,总之基本上下载源码以后即可运行。 项目地址:https://...

使用erlang实现P2P磁力搜索-实现

接上篇,本篇谈谈一些实现细节。 这个爬虫程序主要的问题在于如何获取P2P网络中分享的资源,获取到资源后索引到数据库中,搜索就是自然而然的事情。 DHT DHT网络本质上是一个用于查询的网络,其用于查询一个资源有哪些计算机正在下载。每个资源都有一个20字节长度的ID用于标示,称为infohash。当一个程序作为DHT节点加入这个网络时,就会有其他节点来向你查询,当你做出回应后,对方就会记...