Viewing 1 to 6 of 44 items

http下载小程序 v0.3

本来准备加上多线程分段下载和断点续传的,多线程实现了,可是代码变的很长很复杂,而且试了一下只是多
开几个进程同时下载,并不能提高下载速度,带宽就那么大,可能还有其他方面没考虑到,相比之下断点续传
就有用多了,在服务器停止,或者需要暂时手动停止下载时,下次都可以接着下,对大文件尤其有用。

多线程下载和断点续传用的都是一个原理,大部分HTTP 服务器都接收Range字段,可以指定获得一个文件的
某个部分,而不是获得全部,多线程下载就是提前获得文件长度,然后分给几个线程同时下载文件的不同部分
最后合并成一个文件。断点续传,需要在停止下载时,记录本次下载的文件长度,在下次下载时使用Ran[......]

Read more

Tags: ,

9

散列表和散列函数简介

散列表也称哈希表和直接寻址表一样,可以在O(1)时间内执行search,insert,delete操作,但是散列表用
的存储空间要小的多,在直接寻址表中,关键字为 k 的元素放在表的第k项,而在散列表则存贮在第h(k) 项这
个h()就是散列函数

假设关键字 k 的全域为 U,如果U很大并且实际需要存储的关键字集合K很小,那么就可以使用散列函数把 K 映
射到 U 的一个子集里。这样就可以在节省存储空间的情况下,仍然保持快速的数据访问和修改。既然散列表缩
小了存贮空间那一定会出现一个问题:有2个不同关键字的元素会映射到同一个地方。也就是h(k1) = h(k2)
这种情形就是[......]

Read more

Tags:

0

我的awesome配置

原来awesome自带了很多widget可以像conky那样显示系统信息,不过lua还没弄太懂,只使用了几个简单的。
在修改rc.lua文件的时候,可以先用Xephyr调试,Xephyr会在创建一个新的Xserver,但还是在当前窗口显示。
如果rc.lua中有一句错误,都会导致所有配置失效,不过有了Xephyr就好办了。

1
2
$ Xephyr :1&
$ DISPLAY=:1 awesome

使用Xepher的效果:

现在的桌面:
新增了菜单图标
新增了键绑定 mod4+F10,F11,F12用来调节音量(需要obvious)
新增了显示系统信息的底部状态栏[......]

Read more

Tags:

4

Arch换用awesome


开始装Arch的时候为了方便,直接装了xfce桌面环境,虽然设置了4个workspace,但还是经常把桌面弄的到处
都是窗口。而且还从来没试过平铺的窗口管理器,下定觉心换成了awesome,花了一天时间配置,每次在linux
下用一个新东西时就得查半天资料,这或许就是linux乐趣所在?

awesome更适合多显示器的用户和键盘控,看了awesome官网的图片就知道他有多酷了。

下面说说我的安装过程,自从装上Arch以来,一直都是用官方仓库里的软件,还没用过AUR的软件,awesome
由于依赖一个不被支持的软件包,所以只在AUR里有。。

1
#直接用yaourt搜索安[......]

Read more

Tags: , ,

0

http下载小程序 v0.2

上次写了个http下载小程序,只能下载纯文本文件,本来以为是文件格式的问题,对特殊文件需要做特殊的处
理。今天准备想看看jpg和mp3传过来的都是什么数据,用wireshark抓包却发现,用aria2和我自己写的程序接
受的数据包都是完全一样的,只是自己的程序生成的文件总是小于实际文件的大小。检查了半天代码,终于给
我发现了问题:fputs()

原来为了用c语言自带的文件缓冲,所以选择了用c库里的文件函数,fopen和fputs来写下载回来的文件。fputs
对纯文本文件没有问题,但是对图片、mp3这些二进制文件就不行了,文件中间很多地方可能都是“0×00”,被
fputs当[......]

Read more

Tags:

0

http下载小程序

实现一个HTTP下载的一个小程序,熟悉TCP/IP,HTTP协议。由于特殊的文件格式需要对数据进行特殊的处理
所以程序只支持纯文本文件,txt,html等。

主程序使用3个主要函数:handle_url(),build_connection()download();

首先处理命令行参数,把参数送给handle_url()函数处理,判断是否是http地址。如果符合则把url分成2部分:
host和place。如果只有主机名没有文件位置,则把place设成/index.html

build_connection()使用getaddrinfo()获得上一步获得的host的ip[......]

Read more

Tags:

0