伙伴分配器的一个极简实现
伙伴分配的实质就是一种特殊的“分离适配”,即将内存按2的幂进行划分,相当于分离出若干个块大小一致的空闲链表,搜索该链表并给出同需求最佳匹配的大小。其优点是快速搜索合并(O(logN)时间复杂度)以及低外部碎片(最佳适配best-fit);其缺点是内部碎片,因为按2的幂划分块,如果碰上66单位大小,那么必须划分128单位大小的块。但若需求本身就按2的幂分配,比如可以先分配若干个内存池,在其基础上进一步细分就很有吸引力了。
低噪声、高可扫读;标题、摘要、来源、标签一目了然。
采集自各技术站点的近期文章。
伙伴分配的实质就是一种特殊的“分离适配”,即将内存按2的幂进行划分,相当于分离出若干个块大小一致的空闲链表,搜索该链表并给出同需求最佳匹配的大小。其优点是快速搜索合并(O(logN)时间复杂度)以及低外部碎片(最佳适配best-fit);其缺点是内部碎片,因为按2的幂划分块,如果碰上66单位大小,那么必须划分128单位大小的块。但若需求本身就按2的幂分配,比如可以先分配若干个内存池,在其基础上进一步细分就很有吸引力了。
其实这个问题可以从「挖漏洞」推广到「黑客工具」。比如说一些「和谐稳定」的漏洞利用Exploit,要想写好可得花老大劲了,还能上升到「艺术」的层次;又或者是号称「军工级」的无进程无端口无文件的后门 —- 各种大杀器 —- 这些用于攻击的黑客工具,极尽繁复精巧之能,但都是用于破坏的,对于社会的意义在哪里?
先前整理过一篇文章,讲的是如何使用Php搭建Mvc框架,前几天看了一些文章,对MVC又有了新的认识,具体整理如下。
在之前的一片文章(迷宫营救公主算法)中提供了一个半成品的解决方案,之所以说他是半成品,是因为首先选择的算法就不对,采用的是深度优先搜索,其次也没有真正的用对深度优先算法,走过的点应该标记为已经走过,而不应该重复遍历该节点。下面的文章对于广度优先和深度优先两种算法的解释非常到位。今天准备把这个问题再完整的用正确的算法解答一遍。
我们常用“字如其人”来形容一个人的字迹,也就是说一个人的性格和阅历会投射到文字上。而字体正是文字的性格,是文字表意功能之上的美学体现。优秀的字体远在读者理解句意之前就通过字形与笔画风格将情感传达给读者了,所谓“未成曲调先有情”,传情达意正是字体设计的意义所在。
可穿戴式计算机(Wearable Computer,俗称可穿戴设备)是新式的人机交互,今年已有Fitbit Flex表带、谷歌眼镜和三星智能手表Gear等设备面世,未来几年可穿戴式将市场化,影响或改变人们的日常生活。那么什么是可穿戴式设备呢?
使用LVS做4层反向代理负载均衡 在网关做SNAT,为内网机器提供访问外网的功能。假设大家已经了解LVS的转发方式,这里仅叙述分析和解决问题的过程。
现在在web开发上,icon font技术的应用很广泛,它不仅在解决多分辨率显示问题上很有成效,而且在使用它的时候还能降低不少设计和开发成本。 那么它能不能应用到ios开发上来呢?带着这个疑问,我在github上找到了FontasticIcons和ios-fontawesome,但是这两个OC包对icon资源封装都有限,而且扩展也不是很方便。
真正能做到百花齐放的是中V和小V的生产,由于人数上远远超过大V们,关心的东西自然千奇百怪。尤其是中V,相对垂直而且有一定的专业能力,在某个垂直话题上,会有不错的到位的见解。在我眼中,他们对微博生态的重要性,远远超过大V们的。
在编译理论中,通常将编译过程抽象为5个主要阶段:词法分析(Lexical Analysis),语法分析(Parsing),语义分析(Semantic Analysis),优化(Optimization),代码生成(Code Generation)。这5个阶段类似Unix管道模型,上一个阶段的输出作为下一个阶段的输入。
个人不推荐新手一开始就使用一键安装工具,一键安装工具隐藏了细节,不利于学习。不过自己动手配过几次系统、熟悉了 Linux 以后再回过头来看,使用一些一键安装工具还是很方便的,一键安装工具除了能安装必要的软件外还有一些附加功能,比如 “关闭 SELINUX”、“更改 SSH 端口”、“增加一个 vhost” 等。这里介绍的一键安装工具 Centmin Mod 是由原 Centmin 脚本改良而来,貌似原 Centmin 停止更新了。
最近有台 NFS 服务器挂机,可以 ping 通,但不能 ssh 登陆,也不能通过本地终端登陆,只能重启了。我们一般处理文件服务器这种类型的重启都格外小心,不到迫不得已不会直接硬重启。Linux 运行过程中(为了提高性能)会把大量的数据暂时放在内存缓存中,而不是实时同步写入到磁盘,Linux 根据情况只有在需要(触发某条件)的时候才写入磁盘,所以这个时候挂机,数据还留在内存,没有办法及时写到磁盘,强制断电重启会造成数据不一致、部分数据丢失、文件系统损坏等。
相信长期浸泡在终端和代码的小伙伴们都有一套自己喜爱的配色方案。以前一直在用简单、适合阅读的 Terminal.app 配色方案,换到 MacBook Pro with Retina display 后发现这个配色时间看长了眼睛有点累。不断有人推荐 Solarized,看了一些截图,感觉还不错,决定试一下。
我们的服务器由 Puppet 配置管理工具来管理,服务器上线后由 puppet 完成初始化和配置等一系列工作(比如,静态 IP 配置,DNS 设置,NFS/SAN 挂载,LDAP/Kerberos 登录,安全加固配置,内核参数优化,防火墙规则配置等等),等初始化完成后开始运行,运行一段时间后有一些需要自动和手动操作的任务(比如升级、重启、备份等),这时候我们使用 Fabric 来批量执行这些临时任务。
升级PHP到5.4发现开发的程序提示:Static function Dataaccess::get() should not be abstract查询资料后发现从PHP 5.2开始,不再允许同时使用abstract static 修饰一个抽象类的抽象方法。也就是说,PHP不再支持抽象静态方法,继续使用,将导致E_STRICT错误。
大家有时候会发现 ssh 挂在那里没有响应了,可能是客户端的问题,也可能是服务器端的问题,也可能是客户端和服务器之间的网络问题;可能是客户端电脑休眠后连接断了、可能是网络断了、可能是 WiFi 信号不好、可能是网络延迟大了、可能是服务器挂了、也可能是服务器上的 sshd 进程挂了,…,可能是技术问题,也可能是非技术问题,可以找出无数可能。
遇到一起防火墙故障,对防火墙的工作原理和目标地址转换、 源地址转换有了进一步的了解,记录于此。
总共有两大部分,第一部分为计算机科学基础题,所有技术岗的笔试者都要答。第二部分为「专业题」,根据所报岗位不同而分别出题。
我很多年前就知道Photoshop的脚本语言,但是我几个月前才开始决定研究它。我忽视了它是因为我认为那是聪明的具有数学思维能力的程序员的领域。但是我错了,今天我将要来告诉大家,尽管它需要一些基本的程序技巧,脚本语言并不是那么难掌握。
zimg是一套国人针对图片处理服务器而设计开发的开源程序,目的是解决图片服务中如下三个问题:大流量、高并发、海量存储。