- 博客(31)
- 资源 (5)
- 收藏
- 关注
转载 有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的100个词.
首先,我们看到这个题目应该做一下计算,大概的计算,因为大家都清楚的知道1G的文件不可能用1M的内存空间处理。所以我们要按照1M的上线来计算,假设每个单词都为16个字节,那么1M的内存可以处理多少个单词呢? 1M = 1024 KB = 1024 * 1024 B 。然后1M / 16B = 2^16个单词,那么1G大概有多少个单词呢? 有2^26个单词,但是实际中远远不止这些,因为我们是按照最大单
2014-09-20 00:48:44
2123
转载 十道海量数据处理面试题
第一部分、十道海量数据处理面试题 1、海量日志数据,提取出某日访问百度次数最多的那个IP。 此题,在我之前的一篇文章算法里头有所提到,当时给出的方案是:IP的数目还是有限的,最多2^32个,所以可以考虑使用hash将ip直接存入内存,然后进行统计。 再详细介绍下此方案:首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多
2014-09-19 22:02:48
441
转载 稳定排序和不稳定排序
这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前已经记住了数据结构书上哪些是稳定的,哪些不是稳定的,做起来应该可以轻松搞定。本文是针对老是记不住这个或者想真正明白到底为什么是稳定或者不稳定的人准备的。 首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的
2014-09-19 21:44:26
423
转载 排序算法之归并排序
归并操作[编辑]归并操作(merge),也叫归并算法,指的是将两个已经排序的串行合并成一个串行的操作。归并排序算法依赖归并操作。算法描述[编辑]归并操作的过程如下:申请空间,使其大小为两个已经排序串行之和,该空间用来存放合并后的串行设定两个指针,最初位置分别为两个已经排序串行的起始位置比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置重复
2014-08-10 21:25:47
466
转载 堆和栈的区别(转过无数次的文章)
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两
2014-08-10 17:06:15
381
原创 哈夫曼编码
定义哈夫曼树之前先说明几个与哈夫曼树有关的概念: 路径: 树中一个结点到另一个结点之间的分支构成这两个结点之间的路径。 路径长度:路径上的分枝数目称作路径长度。 树的路径长度:从树根到每一个结点的路径长度之和。 结点的带权路径长度:在一棵树中,如果其结点上附带有一个权值,通常把该结点的路径长度与该结点上的权值
2014-08-02 17:08:21
795
原创 Ubuntu12.04 不显示ibus
升级到Ubuntu 12.04 LTS后,有时候会出现输入法图标消失的现象,ctl+空格虽然能调出输入法,正常输入,但是没有图标总感觉怪怪的,搜了下方法,大致有两种,试了一种简单的,现把两种方法都记录下来,以防万一:方法一:在终端中输入:[我的解决方法是这个,第二个方法对我不好用]killall ibus-daemonibus-daemon -d方法二:在终端中输入
2014-08-02 15:14:45
434
转载 Linux内核编译与安装
Linux内核编译与安装Linux内核介绍Linux内核是一个用C语言写成的,符合POSIX标准的类Unix操作系统。内核是操作系统中最基本的一部分,提供了众多应用程序访问计算机硬件的机制。Linux内核的一大特点就是采用了整体式结构,有很多过程组成,每个过程都可以独立编译,其模块机制又湿得内核保持独立而又易于扩充。Linux发行版实在Linux内核的基础之上,与外带的应用软件
2013-08-26 20:17:34
657
转载 零拷贝技术研究与实现
零拷贝技术研究与实现作者:梁健(firstdot)E-MAIL:firstdot@163.com一.基本概念零拷贝(zero-copy)基本思想是:数据报从网络设备到用户程序空间传递的过程中,减少数据拷贝次数,减少系统调用,实现CPU的零参与,彻底消除CPU在这方面的负载。实现零拷贝用到的最主要技术是DMA数据传输技术和内存区域映射技术。如图1所示,传统的网络数据报处理,需要经
2013-08-23 16:24:22
504
转载 向内核中添加源代码
需要向内核中添加源代码(.c)时,需要通过两个文件告知内核所添加文件的存在:Kconfig和Makefile。例如,我需要向"net\ipv4"目录中,添加"mydir"目录,并且添加源文件"myfile.c",那么修改Kconfig文件和Makefile文件的步骤如下:1. 添加 "net\ipv4\mydir\Kconfig" 文件,并且写入如下内容:
2013-08-19 19:10:32
591
转载 在Linux内核源代码中添加printk函数
printk是内核打印函数,需要在Linux内核源代码中调用printk函数需要包含kernel.h内核入口函数start_kernel中添加了代码printk(KERN_NOTICE "I'm the printk in the kernel\n", linux_banner); 重现变异内核后。察看dmesg在dmesg开头处可以看到[ 0.000000]
2013-08-19 16:53:17
1158
转载 Kernel base Series(3)-----hlist_nulls_head
分类:原文地址:Kernel base Series(3)-----hlist_nulls_head 作者:mtloveft声明:本文为原创#####请转贴时保留以下内容######作者:GTT本文档归属http://oldtown.cublog.cn/.转载请注明出处!请提出宝贵意见Mail:mtloveft@hotmail.comLinux
2013-05-17 17:20:45
1113
转载 getsockopt/setsockopt 函数说明
功能描述: 获取或者设置与某个套接字关联的选 项。选项可能存在于多层协议中,它们总会出现在最上面的套接字层。当操作套接字选项时,选项位于的层和选项的名称必须给出。为了操作套接字层的选项,应该 将层的值指定为SOL_SOCKET。为了操作其它层的选项,控制选项的合适协议号必须给出。例如,为了表示一个选项由TCP协议解析,层应该设定为协议 号TCP。用法: int setsockopt
2013-05-15 10:39:20
510
转载 getsockname与getpeername
getsockname与getpeername是返回套接口关联的本地协议地址和远程协议地址。int getsockname(int sockfd, struct sockaddr * localaddr, socken_t * addrlen);int getpeername(int sockfd, struct sockaddr * peeraddr, socken_t * ad
2013-05-15 10:24:37
496
转载 SOCKET API和TCP STATE的对应关系__三次握手(listen,accept,connect)__四次挥手close及TCP延迟确认(调用一次setsockopt函数,设置TCP_QUI
2011-09-13 21:08:15| 分类: Linux网络编程|字号 订阅在我们学习网络基础时,传输层的协议有TCP和UDP;在Linux网络编程中,我们使用socket API,实现网络通信。那么: socket API 和 TCP 协议中各个状态是如何对应的呢?我们可以通过下图来看:
2013-05-15 01:04:48
1258
转载 file结构体和inode结构体
(1)struct file结构体定义在include/linux/fs.h中定义。文件结构体代表一个打开的文件,系统中的每个打开的文件在内核空间都有一个关联的struct file。它由内核在打开文件时创建,并传递给在文件上进行操作的任何函数。在文件的所有实例都关闭后,内核释放这个数据结构。在内核创建和驱动源码中,struct file的指针通常被命名为file或filp。如下所示:stru
2013-05-08 16:34:45
733
转载 socket和sock的一些分析
/* 1、每一个打开的文件、socket等等都用一个file数据结构代表,这样文件和socket就通过inode->u(union)中的各个成员来区别: struct inode { ..................... union { struct ext2_inode_info ext2_i; struct ext3_inode_info ext3_i; stru
2013-05-08 15:08:27
3958
转载 ubuntu环境下vstfpd安装与配置
安装vsftpd: vsftpd 是可在 Ubuntu中使用的 FTP 守护程序之一。它在安装、设置和维护方面十分方便。要安装 vsftpd 您可以使用下列命令: vsftpd - FTP 服务器配置 你可以编辑 vsftpd 配置文件,/etc/vsftpd.conf,来配置缺省设置。缺省状态下只允许匿名 FTP。如果您希望禁用该选项,您可以将下面这行: a
2013-05-05 15:11:00
1067
转载 Unix或Linux中&、jobs、fg、bg等命令的使用方法
fg、bg、jobs、&、ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的一.& 最经常被用到这个用在一个命令的最后,可以把这个命令放到后台执行二.ctrl + z可以将一个正在前台执行的命令放到后台,并且暂停三.jobs查看当前有多少在后台运行的命令四.fg将后台中的命令调至前台继续运行如果后台中有多个命令,可以
2013-04-27 16:17:43
532
转载 iperf网络测试工具的使用
公司最近测试一个产品, 是linux的VPN服务器,需要测试该VPN服务器的吞吐量性能,由于Avalanche与我们的VPN服务器不能完全兼容,又不允许我们对VPN服务器进行改动,所以只能借助其他的工具。找来找去,发现Iperf是个既简单又有点知名度的的工具,决定就用它了。Iperf是一个网络性能测试工具,主要应用于LINUX服务器下面。可以测量最大TCP和UDP带宽,具有多种参数和特性,可以记录
2013-04-27 14:49:54
1705
转载 ip 命令使用详解
ip1.作用ip是iproute2软件包里面的一个强大的网络配置工具,它能够替代一些传统的网络管理工具,例如ifconfig、route等,使用权限为超级用户。几乎所有的Linux发行版本都支持该命令。2.格式ip [OPTIONS] OBJECT [COMMAND [ARGUMENTS]]3.主要参数OPTIONS是修改ip行为或改变其输出的选项。所有的选项都是以-字符开
2013-04-25 10:38:14
5267
转载 __define_initcall 作用(subsys_initcall 作用)
前言 宏定义__define_initcall(level,fn)对于内核的初始化很重要,他指示 编译器在编译的时候,将一系列初始化函数的起始地址值按照一定的顺序 放在一个section中。在内核初始化阶段,do_initcalls() 将按顺序从该 section中以函数指针的形式取出这些函数的起始地址,来依次完成相应 的初始化。由于内核某些部分的初始化需要依赖于其
2013-04-18 20:43:55
716
转载 ctags和vim
ctags和vimctags和vim- - [/home/brimmer/src]$ ctags -R"-R"表示递归创建,也就包括源代码根目录下的所有子目录下的源程序。"tags"文件中包括这些对象的列表:l 用#define定义的宏l 枚举型变量的值l 函
2013-04-08 22:21:17
647
转载 sizeof 和strlen
1.函数类型 #include size_t strlen(const char *s); size_t sizeof()2.本质区别 本质上,strlen是函数,而sizeof是算符。strlen需要进行一次函数调用,而对于sizeof而言,因为缓冲区已经用已知字符串进行了初始化,起长度是固定的,所以sizeof在编译时计算缓冲区的长度。sizeof后如果是类型必须
2013-04-05 14:54:19
418
转载 strftime的例子
我们可以使用strftime()函数将时间格式化为我们想要的格式。它的原型如下:size_t strftime( char *strDest, size_t maxsize, const char *format, const struct tm *timeptr );我们可以根据format指向字符串中格式命令把timeptr中
2013-04-05 11:36:18
675
转载 socketpair的问题
今天跟人谈到socketpair的问题,晚上回来写了个程序验证下自己的猜测! 先说说我的理解:socketpair创建了一对无名的套接字描述符(只能在AF_UNIX域中使用),描述符存储于一个二元数组,eg. s[2] .这对套接字可以进行双工通信,每一个描述符既可以读也可以写。这个在同一个进程中也可以进行通信,向s[0]中写入,就可以从s[1]中读取(只能从s[1]中读取),也可以在
2013-04-04 21:31:35
732
转载 Linux-man page(Linux在线手册) 的简单使用
Linux-man page(Linux在线手册) 的简单使用其中man是manual的缩写必须要记得的代码号是1,5,8命令: man 7 man部分结果:The manual sections are traditionally defined as follows: 1 Commands
2013-04-04 19:57:49
793
转载 SO_BINDTODEVICE 套接口选项
这是一篇我看了以后感觉非常棒的文章. 实在忍不住要转载..SO_BINDTODEVICE 套接口选项2008-03-31 11:231. 起因事情的起因是我准备用两个CDMA modem来拓展点对点连接的带宽,并且希望藉此实现两个modem之间的负载均衡。但是不幸的是,联通公司的接入设备不支持Multilink-PPP。于是,
2012-12-04 09:50:35
913
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人