摘要:在写网络爬虫的时候,需要根据链接来获取文件类型,将内容正确存储。之前我都是根据链接的后缀来判断的,比如:http://img12.360buyimg.com/da/20120330/88_31_ZySDre.jpg这个链接指向的文件就是个jpg文件。但是后来发现有诸如http://jprice.360buyimg.com/getSkuPriceImgService.action?skuId=1850001109&origin=1&webSite=1&type=1的链接,这招就不灵了。后来谷歌百度了一下也没发现解决办法。后来机缘巧合在Java Network Progra
阅读全文
摘要:Solaris Containers是Solaris平台上的一种基于容器的虚拟化技术。Solaris容器的正式定义是使用资源管理功能的Solaris区域(Solaris Zones)。因此,Solaris Containers的实现包括两部分:Solaris Zones和System Resource Controls。Solaris Zones是作为一个服务器整合解决方案出现的。服务器整合允许在一台服务器上部署多个应用负载,可以提高服务器使用率,降低成本。Solaris Zones将一个系统划分为一个global zone和多个non-global zone,系统管理员通过global zo
阅读全文
摘要:FreeBSD Jails是FreeBSD平台上的一种基于容器的虚拟化技术,是对Unix传统的chroot机制的一种扩展。Unix传统的安全模型高效简单,适用于很多应用场景。但是它是基于系统只有没有管理权限的普通用户和有管理权限的根用户这两类用户的情况设计的,它无法很好地处理把一部分管理权限授权给不被信任的用户的情况。Unix后来引入了chroot机制,提供了一种简单的系统隔离功能,但是仅限于文件系统,进程和网络空间都没得到相应的处理。FreeBSD Jails正是在这种情况下出现的,它提供了一种很强的隔离能力,将chroot等已有的机制进行了扩展,可以为进程提供一个虚拟运行环境。[4]在Fr
阅读全文
摘要:由于Linux内核提供了PID,IPC,NS等多个Namespace,一个进程可能属于多个Namespace。为了task_struct的精简,内核引入了structnsproxy来统一管理进程所属的Namespace,在task_struct中只需存一个指向structnsproxy的指针就行了。structnsproxy定义如下:structnsproxy{atomic_tcount;structuts_namespace*uts_ns;structipc_namespace*ipc_ns;structmnt_namespace*mnt_ns;structpid_namespace*pid
阅读全文
摘要:LinuxNamespaces机制提供一种资源隔离方案。PID,IPC,Network等系统资源不再是全局性的,而是属于特定的Namespace。每个Namespace里面的资源对其他Namespace都是透明的。要创建新的Namespace,只需要在调用clone时指定相应的flag。LinuxNamespaces机制为实现基于容器的虚拟化技术提供了很好的基础,LXC(Linuxcontainers)就是利用这一特性实现了资源的隔离。不同container内的进程属于不同的Namespace,彼此透明,互不干扰。下面我们就从clone系统调用的flag出发,来介绍各个Namespace。当调
阅读全文
摘要:cpuset子系统cpuset子系统为cgroup中的任务分配独立CPU(在多核系统)和内存节点。Cpuset子系统为定义了一个叫cpuset的数据结构来管理cgroup中的任务能够使用的cpu和内存节点。Cpuset定义如下:structcpuset{structcgroup_subsys_statecss;unsignedlongflags; /*"unsignedlong"sobitopswork*/cpumask_var_tcpus_allowed; /*CPUsallowedtotasksincpuset*/nodemask_tmems_allowed; /*Me
阅读全文