IT技术博客大学习 共学习 共进步

技术文章

精选技术长文、实践记录与系统化阅读

技术文章精选

低噪声、高可扫读;标题、摘要、来源、标签一目了然。

最新文章

采集自各技术站点的近期文章。

IT 系统架构/ 2013-06-03 23:00:04 / 累计浏览 3,886

页缓存概述

​页缓存是Linux内核一种重要的磁盘高速缓存,它通过软件机制实现。但页缓存和硬件cache的原理基本相同,将容量大而低速设备中的部分数据存放到容量小而快速的设备中,这样速度快的设备将作为低速设备的缓存,当访问低速设备中的数据时,可以直接从缓存中获取数据而不需再访问低速设备,从而节省了整体的访问时间。

IT 源码分析/ 2013-06-03 22:59:02 / 累计浏览 6,252

malloc()之后,内核发生了什么?

考虑这样一种常见的情况:用户进程调用malloc()动态分配了一块内存空间,再对这块内存进行访问。这些用户空间发生的事会引发内核空间的那些反映?本文将简单为您解答。

IT 系统运维/ 2013-06-03 22:57:37 / 累计浏览 3,329

RPM包的管理

RPM包的通用制作过程为:下载源码包,再编写spec文件,最后通过rpmbuild构建RPM包。其中,打包最主要的工作是对spec文件的编写,该文件用于对即将构建的软件包进行描述,它包含了软件包的诸多信息,如软件包的名字、版本、类别、简要说明、创建时要执行的命令、安装时要执行的命令等。 对于spec文件的来源,可按照以下的优先级进行选取:​ 1.首先,如果源码包上有spec文件,则使用该文件。 2.否则,如果社区上有同样的包,但是版本不符合,可以针对具体情况对这些spec文件进行修改。 3.否则,自己编写spec文件。

IT 编程语言/ 2013-06-02 20:26:56 / 累计浏览 2,387

zend php 动态数组

使用数组即有较高的随机访问特性,但我们在很多实际运用场景都无法预先知道加载数据的长度,却又不舍得一开始就建立一个“巨大”的固定长度的表(数组)。解决这个问题,可以使用链表(参见链表ADT),或者使用动态数组。这里主要介绍一下后者—–动态数组。其基本思路是先使用库函数mallo()分配一块内存,这块内存块连续存放着相应的数据单元,每个单元占用的内存空间是一样大小,然后,像引用数组那样借用指针引用这块内存,通过指针和偏移量可以随机访问各个单元的数据。当这块内存写满的时候,可以调用库函数realloc()重新分配更大空间的内存(函数realloc()不会丢失原来的内存块上的数据)。

IT Linux/ 2013-06-02 20:26:04 / 累计浏览 12,951

Linux内存点滴 用户进程内存空间

正在运行的程序,叫进程。每个进程都有完全属于自己的,独立的,不被干扰的内存空间。此空间,被分成几个段(Segment),分别是Text, Data, BSS, Heap, Stack。用户进程内存空间,也是系统内核分配给该进程的VM(虚拟内存),但并不表示这个进程占用了这么多的RAM(物理内存)。这个空间有多大?命令top输出的VIRT值告诉了我们各个进程内存空间的大小(进程内存空间随着程序的执行会增大或者缩小)。你还可以通过/proc//maps,或者pmap -d 了解某个进程内存空间都分布。

IT 网络系统/ 2013-06-02 20:23:56 / 累计浏览 4,930

http keepalive

在http早期 ,每个http请求都要求打开一个tpc socket连接,并且使用一次之后就断开这个tcp连接。使用keep-alive可以改善这种状态,即在一次TCP连接中可以持续发送多份数据而不会断开连接。通过使用keep-alive机制,可以减少tcp连接建立次数,也意味着可以减少TIME_WAIT状态连接,以此提高性能和提高httpd服务器的吞吐率(更少的tcp连接意味着更少的系统内核调用,socket的accept()和close()调用)。但是,keep-alive并不是免费的午餐,长时间的tcp连接容易导致系统资源无效占用。配置不当的keep-alive,有时比重复利用连接带来的损失还更大。所以,正确地设置keep-alive timeout时间非常重要。

IT 系统架构/ 2013-06-02 20:23:05 / 累计浏览 4,166

记一次tps提升,做的配置变更

通过一番辛苦,tps终于从120升到了810,并且tps曲线平衡(几乎时条直线),cpu资源的利用率也很平衡80%的us和20%的sys。要提高tps,首先要保证单个请求响应时间不能过长。响应时间过大,tps较难提升。更少的上下文切换和更少的系统内核调用,更少的IO操作可以换得更大的tps。通过strace可以统计出调用了哪些系统内核调用,帮助你优化应用。减少上下文切换最有效的办法就是减少进程数量。​

IT 系统架构/ 2013-06-02 20:22:17 / 累计浏览 2,986

网站优化 更小的静态资源

更小的静态资源(js、css、png、gif),意味着更少的网络传送时间。构建的时候,可以把这些静态资源进行压缩优化(不像gzip/deflate压缩),使之更小化。有很多相应的开源工具帮助你完成这项工作。 总结 1.UglifyJS压缩比YUI Compressor更小,比Google Closure Compiler更安全。不想冒险,还是应该选择UglifyJS。若想最小化,可以选择Google Closure Compiler 2.YUI Compressor压缩css文件。但CSSTidy也很不错 3.optipng -o3 *.png |advpng -z -4 *.png |advdef -z -4 *.png 将最大化压缩优化png图片 4.网页尽量使用png格式图片,并且压缩优化它,使之最优​

IT 发现/ 2013-06-02 20:19:05 / 累计浏览 2,445

开发者调试工具Chrome Workspace

Workspace是个什么样的东西呢?他能够在开发者工具中调试修改js或者css同时自动保存文件,能够避免开发人员在工具中调试好,再到编辑器中修改一次代码的重复操作,能够提高一定的效率。

IT 算法/ 2013-06-02 19:43:32 / 累计浏览 3,725

由原子操作引起的关于Cache的讨论

最近MPI集群有用户抛出这样一个问题,当MLR算法或PLSA算法与PLDA同时运行在某个节点时,MLR的效率会降低二十倍,PLSA的效率也会下降非常厉害,而与其它的算法重合时,即使两个算法的程序都可以所有CPU吃满,效率也未必会下降如此厉害,用户怀疑是我的PLDA代码设计的问题,这个问题也引起了大家比较激烈的讨论。

IT 算法/ 2013-06-02 19:42:39 / 累计浏览 6,585

无锁HashMap的原理与实现

HashMap主要有插入、删除、查找以及ReHash四种基本操作。一个典型的HashMap实现,会用到一个数组,数组的每项元素为一个节点的链表。对于此链表,我们可以利用文中提到的操作方法,执行插入、删除以及查找操作,但对于ReHash操作则比较困难。

IT 其他/ 2013-06-02 19:41:12 / 累计浏览 3,687

《打造 Facebook》笔记

我发现雅虎所谓的「公司政治」问题比较严重,没有那么很强烈的「所有人做事都是为了雅虎」的理念,他们内部是以BU(业务单元)这种方式运作的,小组与小组之间存在隔膜,都主要考虑自身那一小块的利益,相互之间的配合支持度较差。……后来到了Facebook,感觉完全不一样,绝大多数人都很清楚,「我们并不是为了某个小组工作的,我们的目标是整个Facebook的发展」。

IT Java/ 2013-06-02 19:40:33 / 累计浏览 3,708

Java将Object对象转换为String的总结合集

在java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能。本文将对常用的转换方法进行一个总结。常用的方法有Object.toString(),(String)要转换的对象,String.valueOf(Object)等。下面对这些方法一一进行分析。

IT 编程语言/ 2013-06-02 19:39:17 / 累计浏览 6,308

C的那些事儿

C语言于我,主要是一门学习性的语言,这或许也是大多数人第一门接触到的计算机语言。当然时代在变,现在的学生也不一定要从C语言学起啦。C语言在Linux的世界有着举足轻重的地位。Linux内核是用C写的,Linux上的大部分应用也是用C写的。关键是,它们都是开源的!于是,如果你想进一步提高C语言的品味,Linux开源世界真的是海阔凭鱼跃,天高任鸟飞了。

IT JavaScript/ 2013-05-29 23:09:58 / 累计浏览 4,449

JavaScript的5种调用函数的方法

一次又一次的,我发现,那些有bug的Javascript代码是由于没有真正理解Javascript函数是如何工作而导致的(顺便说一下,许多那样的代码是我写的).JavaScript拥有函数式编程的特性, 当我们选择面对它的时候,这将成为我们前进的阻碍. 作为初学者,我们来测试五种函数调用的方法,从表面来看我们会认为那些函数与C#中函数的作用非常相似,但是我们一会儿可以看到还是有非常重要的不同的地方的,忽视这些差异无疑会导致难于跟踪的bug。

IT 网络系统/ 2013-05-29 22:37:00 / 累计浏览 4,449

如何诊断CDN故障

某项目使用CDN做文件下载服务,最近不时有网友反馈下载出错,因为CDN是第三方提供的,且节点众多,所以诊断起来有点麻烦,必须想想招儿。 首当其冲的问题是如何确认CDN有哪些节点? 幸运的是通过阿里测提供的服务,我们能拿到这个IP列表,当然这个IP列表不可能百分百完整,不过应该包含了大部分的节点,有兴趣的可以参考百度的JQuery CDN例子。

IT 编程语言/ 2013-05-29 22:36:11 / 累计浏览 4,430

Shell的那些事儿

相对于高级语句如C/C++/Java,Shell其实应该是一门最容易上手,也能够给工作带来最大便利的工具性语言,无论是写写程序做下并发的压力测试,还是实现比较复杂的控制逻辑,Shell语句的开发效率一般都比那些高级语言要高,不需要编译,一写完马上可以测试。在这个追求效率的年代,不熟悉Shell都不好意思说会性能调优啊。

IT 系统架构/ 2013-05-29 22:35:23 / 累计浏览 5,607

基于用户行为分析的搜索引擎自动性能评价

为了提高检索系统查询处理能力,我们提出基于用户群体行为分析的搜索引擎自动评价方法.该方法利用搜索引擎用户查询、点击行为的宏观分析,自动挑选适用于搜索引擎评价的查询集合,并进一步自动定位对应这些查询的标准答案.由于挑选查询集合和标准答案的过程由计算机自动完成,因此可以及时、准确、客观地反映搜索引擎的真实性能.

IT 网络系统/ 2013-05-29 22:34:16 / 累计浏览 3,866

HTTP的升级产品:SPDY

SPDY是Google开发的基于传输控制协议(TCP)的应用层协议 。目前已经被用于Google Chrome浏览器中来访问Google的SSL加密服务。SPDY当前并不是一个标准协议,但SPDY的开发组已经开始推动SPDY成为正式标准(现为互联网草案),Google Chrome,Mozilla Firefox和Opera均已支持SPDY协议。SPDY协议类似于HTTP,但旨在缩短网页的加载时间和提高安全性。SPDY协议通过压缩、多路复用和优先级来缩短加载时间。SPDY并不是首字母缩略字,而仅仅是”speedy”的缩写。 设计SPDY的目的在于降低网页的加载时间。通过优先级和多路复用,SPDY使得只需要建立一个TCP连接即可传送网页内容及图片等资源。SPDY中广泛应用了TLS加密,传输内容也均以gzip或DEFLATE格式压缩(与HTTP不同,HTTP的头部并不会被压缩)。另外,除了像HTTP的网页服务器被动的等待浏览器发起请求外,SPDY的网页服务器还可以主动推送内容。

IT 系统运维/ 2013-05-29 22:20:56 / 累计浏览 7,605

腾讯分析系统架构解析

TA(Tencent Analytics,腾讯分析)是一款面向第三方站长的免费网站分析系统,在数据稳定性、及时性方面广受站长好评,其秒级的实时数据更新频率也获得业界的认可。本文将从实时数据处理、数据存储等多个方面带你深入探寻TA的系统架构及实现原理。