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

技术文章

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

技术文章精选

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

最新文章

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

IT 系统运维/ 2013-07-15 13:16:40 / 累计浏览 6,549

大数据下的工行

2013.6.23,工行发生重大系统故障,已经有一阵子了。今天想起写这个话题,完全是因为昨天看到了一条现在已经被和谐的微博,当时随手收藏却忘记了粉一下Po主,和谐之后已经死无对证,找不到“传谣”的人了,于是标题的最后形容某群体组织的四个字的专有名词变成了“工行”,不过也好,原来想的标题估计是跨不过深壑的。

IT 系统架构/ 2013-07-15 13:14:05 / 累计浏览 2,907

解决进程间共享内存,由于某个进程异常退出导致死锁问题

我们都知道加锁是有开销的,不仅仅是互斥导致的等待开销,还有加锁过程都是有系统调用到内核态的,这个过程开销也很大,有一种互斥锁叫Futex锁(Fast User Mutex),Linux从2.5.7版本开始支持Futex,快速的用户层面的互斥锁,Fetux锁有更好的性能,是用户态和内核态混合使用的同步机制,如果没有锁竞争的时候,在用户态就可以判断返回,不需要系统调用,当然任何锁都是有开销的,能不用尽量不用,使用双Buffer,释放链表,引用计数,都可以在一定程度上替代锁的使用。

IT 算法/ 2013-07-15 13:03:13 / 累计浏览 3,984

二叉树迭代器算法

二叉树(Binary Tree)的前序、中序和后续遍历是算法和数据结构中的基本问题,基于递归的二叉树遍历算法更是递归的经典应用。

IT Java/ 2013-07-15 13:02:02 / 累计浏览 3,788

JVM的GC简介和实例

本文是一次内部分享中总结了jvm gc的分类和一些实例, 内容是introduction级别的,供初学人士参考.

IT 安全/ 2013-07-10 13:55:53 / 累计浏览 4,367

QR二维码的攻击方法与防御

  原文贴图太多,微信对不可信地址图片又拒绝访问,偷个懒,直接QR码作为目前被广泛使用的二维码,它为用户带来便捷的同时,也成为了恶意软件、网络钓鱼等攻击的携带者和传播者。为此,了解QR码编码方式,分析其潜在攻击方法并提出低于方案具有重要的意义。本文介绍了QR的编码结构和编码过程,阐述了具体篡改QR码的操作步骤,论述了不同的QR码应用场景下的潜在的攻击方式,提出了针对编码解码器的改进方案和引入第三方管理这两类方式来抵抗QR码的攻击。贴微信地址: 查看文章  

IT 系统运维/ 2013-07-10 13:47:02 / 累计浏览 3,670

数据的存储介质-磁盘的RAID

要介绍 RAID技术的原因,其实是因为目前大部分分布式存储在做的事情其实 RAID在很多年前就已经做到了,所以如果你希望做存储相关的事情,那么 RAID是必须要理解,但不一定要用到的概念:)  

IT 系统运维/ 2013-07-10 13:45:23 / 累计浏览 2,483

数据的存储介质-磁盘的硬件特性

计算机是由硬件和软件组成的, 而所有软件的唯一目标就是尽可能最大化的利用下层硬件能够提供的特性,完成上层的功能。 所以才会有人说,硬件是骨头,软件是血肉,骨头决定生物的形态,软件决定生物的神态。不过,依然请放心,我们不会讨论复杂的东西, 作为一个软件工程师,也没有人会要求我们去写一个磁盘存储器的硬件驱动代码~在这里,我们只讨论那些为了后面我们理解软件存储而锁需要掌握的硬件知识。

IT 其他/ 2013-07-10 13:43:42 / 累计浏览 2,365

玩转robots协议

网站内容的所有者是网站管理员,搜索引擎应该尊重所有者的意愿,为了满足以上等等,就需要提供一种网站和爬虫进行沟通的途径,给网站管理员表达自己意愿的机会。有需求就有供应,robots协议就此诞生。Robots协议,学名叫:The Robots Exclusion Protocol,就搜索引擎抓取网站内容的范围作了约定,包括网站是否希望被搜索引擎抓取,哪些内容不允许被抓取,把这些内容放到一个纯文本文件robots.txt里,然后放到站点的根目录下。爬虫抓取网站内容前会先抓取robots.txt,据此“自觉地”抓取或者不抓取该网页内容,其目的是保护网站数据和敏感信息、确保用户个人信息和隐私不被侵犯。

IT 源码分析/ 2013-07-08 22:53:02 / 累计浏览 3,007

kmemcache源码浅析

kmemcache是memcache的linux内核移植版, 这两天断断续续的看了其网络方面的实现. 简单来说, kmemcache不落窠臼, 摈弃了epoll通知机制. 它借助skb的回调函数, 实现packet级别的调度. 在网路模型上, kmemcache分为一个dispatcher和多个workers(均为workqueue线程). dispatcher服务于TCP和unix domain sockets, 它将新建的连接丢给某个worker. 除此之外, workers还处理UDP请求.

IT 发现/ 2013-07-08 22:51:41 / 累计浏览 4,210

浅析十三种常用的数据挖掘的技术

数据挖掘就是从大量的、不完全的、有噪声的、模糊的、随机的数据中,提取隐含在其中的、人们事先不知道的但又是潜在有用的信息和知识的过程。数据挖掘的任务是从数据集中发现模式,可以发现的模式有很多种,按功能可以分为两大类:预测性(Predictive)模式和描述性(Descriptive)模式。在应用中往往根据模式的实际作用细分为以下几种:分类,估值,预测,相关性分析,序列,时间序列,描述和可视化等。

IT 系统运维/ 2013-07-08 22:49:01 / 累计浏览 2,465

scribe的生产实践总结

scribe是facebook开源的分布式日志系统。严格说它只是一个日志处理的节点,与分布式系统相比差很多复杂的节点间的控制过程。不过也贵在它很精简,不容易出现问题。两年多时间以后,线上还没出现过一例scribed自己crash掉的情况。

IT 奋斗/ 2013-07-08 22:48:09 / 累计浏览 4,210

论“重复造轮子”

对于创业公司,我有一个建议:尽可能多采用开源技术,拥抱开源社区,把精力放在业务上,怎么快怎么来。至于自己研发个框架、研发个类库,那是大公司才玩得起的奢侈的事情,如非特别必要,远离之。

IT PHP/ 2013-07-08 22:45:40 / 累计浏览 2,723

剖析网页字符集的设置顺序

综合本文实验,得出字符集设置优先级顺序: php.ini默认字符集设置 > header函数字符集设置 > apache2默认字符集设置 > meta标签字符集设置​。

IT JavaScript/ 2013-07-08 22:43:51 / 累计浏览 3,105

javascript函数的throttle和debounce

上周写了window resize和scroll事件的基本优化,结果微博上交流的人还挺多,大家都提到了一个技术名词:“throttle”。这里说的throttle就是函数节流的意思。再说的通俗一点就是函数调用的频度控制器,是连续执行时间间隔控制。

IT 系统架构/ 2013-07-07 22:21:02 / 累计浏览 2,710

集群资源调度系统简介与galaxy资源调度系统简介

随着公司业务的飞速发展,集群规模的逐步扩大,各计算系统,存储系统,应用系统也随着业务的发展,一个接一个的被创造了出来。但集群规模扩大以后,却带来很多问题,如自动化部署,集群整体利用率偏低等问题也逐步的暴露出来。所以,迫切的需求一套集群资源调度系统来解决这些问题。各大互联网公司也相继搞出了一些系统,如omega(google),yarn(apache社区,hadooop下面的一个分支,开源),mesos(twitter,开源),torca(腾讯soso), Corona(Facebook)。  

IT 系统运维/ 2013-07-07 22:18:54 / 累计浏览 2,965

SSH简介

Secure Shell(缩写为SSH),由IETF的网络工作小组(Network Working Group)所制定;SSH为一项创建在应用层和传输层基础上的安全协议,为计算机上的Shell(壳层)提供安全的传输和使用环境。

IT 编程语言/ 2013-07-07 22:17:51 / 累计浏览 3,568

编码风格不是编码规范

我并不认为程序员是一个情绪特别丰富的群体。但有一些事情却能很容易刺激程序员的神经,那就是代码格式和布局。如果看到一个函数的括弧在同一行上没有闭合,我的眼睛会喷血。如果看到有人没有恰好的在两个函数间留一空行,我的小腿会抽筋。

IT CSS/HTML/ 2013-07-07 22:17:10 / 累计浏览 2,707

HTML 5 的data-* 自定义属性

HTML 5增加了一项新功能是自定义数据属性,也就是 data-*自定义属性。在HTML5中我们可以使用以data-为前缀来设置我们需要的自定义属性,来进行一些数据的存放。当然高级浏览器下可通过脚本进行定义和数据存取。在项目实践中非常有用。

IT 系统运维/ 2013-07-07 22:05:39 / 累计浏览 7,444

用unix socket加速php-fpm、mysql、redis的连接

图虫的服务器长期是单机运行。估计除了mysql之外,php-fpm和redis还可以在单机上共存很长时间。(多说服务器早就达成了单机每日2000万+动态请求,所以我对单机搞定图虫的大流量非常乐观) 如果是单机服务,其实就不需要用IP哪怕是127.0.0.1这样的IP去连接mysql/redis/php了,因为即使是127.0.0.1也是要走TCP/IP层的。 unix提供的unix socket来实现单机的端口访问,很多文章提到用unix socket可以提升连接速度。 我简单测试了一下,200次redis请求的耗时38ms,如果改成unix socket方式,立刻降到27ms。这简直是立竿见影啊,10ms的差距足以让我们有动力把IP方式改成unix socket方式。接mysql/redis/php了,因为即使是127.0.0.1也是要走TCP/IP层的。 unix提供的unix socket来实现单机的端口访问,很多文章提到用unix socket可以提升连接速度。 我简单测试了一下,200次redis请求的耗时38ms,如果改成unix socket方式,立刻降到27ms。这简直是立竿见影啊,10ms的差距足以让我们有动力把IP方式改成unix socket方式。 Mysql(PDO)启用unix socket的方法 1.在PDO的DSN里面:原来写host:xxx,改成unix_s

IT 用户研究/ 2013-07-07 21:52:04 / 累计浏览 4,023

那么明显,为什么用户看不见?

​作为用研,我们经常在可用性测试时听到用户说:“啊?我没注意啊!” 一个操作后,页面弹出一个对话框告知用户操作成功,反馈够明显了吧?用户说:“啊?怎么没反应?” 一个为了用户操作便捷而设计的常用操作入口,简约的视觉与背景区别开来。可用户还是一次次冗余操作,问及则说:“啊?我没注意到啊!原来这个可以直接写说说的?!” 一个新功能上线,网站主页导航上新增了一个模块,改版够大了吧?用户说:“啊?我没看出有什么变化啊。” 每次听到这样的话,设计师们就会抓狂:到底为什么啊?设计得这么明显,为什么用户看不见??