2014年5月 ’ 的文章存档

MySQL源码:索引相关的数据结构(前篇)

本文将尝试介绍MySQL索引存储相关的数据结构。程序=数据结构+算法,了解数据结构,然后就可以进一步了解MySQL源码中如何使用索引,如何选择自己的执行计划。

1. MYSQL如何描述某个数据表的索引

MySQL使用TABLE对象来描述一个数据表,那么数据表的索引是如何描述,索引的统计信息又是如何存储的呢? 例如我们有如下数据表:

CREATE TABLE `users` (
`id` int(11) NOT NULL,
`nick` varchar(32) DEFAULT NULL,
`reg_date` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `IND_NICK` (`nick`),
KEY `IND_REGDATE` (`reg_date`)
)

 

该表有索引,PRIMARY KEY、IND_NICK、IND_REGDATE,我们来看看MySQL内部是如何存储这三个索引,以及如何使用这些索引的统计信息的。下图,描述了存储一个数据表索引的主要结构:
阅读全文

为 Node.js 开发者准备的 8 本免费在线电子书

Node.js是一套用来编写高性能网络服务器的JavaScript工具包,一系列的变化由此开始。比较独特的是,Node.js会假设你是在POSIX环境下运行它Linux 或 Mac OS X。如果你是在Windows下,那就需要安装MinGW以获得一个仿POSIX的环境。在Node中,Http是首要的。Node为创建http服务器作了优化,所以你在网上看到的大部分示例和库都是集中在web上(http框架、模板库等)。

本文向你推荐 8 本免费的在线 Node.js 电子书。

1) Best Node.js eBook –  Node Beginner

1
阅读全文

如何不被程序员(RD)们嫌弃--写给那些血气方刚的产品经理(PM)

最近有位刚做 PM(产品经理)的小伙跑来跟我控诉,说公司技术部的 RD 们(程序员)个个不给力。需求过了千百遍还是理解错,或者就是简单回一句“做不了”,表情如死灰。

这位 PM 血气方刚,张牙舞抓,脑子里总有一千万个新产品需求的想法扑腾着。他咄咄不停的抱怨 RD 们不配合,能力差,懒惰,没思考能力,没品位,顺带连抠脚味儿太大这种事也强烈谴责了。“擦,老子明天就去学编程!” 哎,我发现 PM 们都特喜欢说这句无比励志的话呢!

面对他,我的心突然惆怅起来。几年前的自己也差不多是这个模样,懵懂如白纸,但谁又知道这样的 PM,在很多 RD 的眼里就是个傻逼吧。身为一位女性 PM,我至今为止并肩合作过的 RD 团队超过 8 组共 200 多人(动荡曲折的职业生涯啊),受过的委屈流过的泪就不在这里赘述了,打算留着以后写小说。今天我只想浅谈一些自己总结的 PM 与 RD 相处之道,所谓人艰不拆,希望大家看完后能更理解彼此“都不容易”的立场。

PM眼里的RD分成两种:能沟通的,和不能沟通的。后者占90%。(呵呵)
阅读全文

使用 Twitter Storm 处理实时的大数据

流式处理大数据简介

Storm 是一个开源的、大数据处理系统,与其他系统不同,它旨在用于分布式实时处理且与语言无关。了解 Twitter Storm、它的架构,以及批处理和流式处理解决方案的发展形势。

Hadoop(大数据分析领域无可争辩的王者)专注于批处理。这种模型对许多情形(比如为网页建立索引)已经足够,但还存在其他一些使用模型,它们需要来自高度动态的来源的实时信息。为了解决这个问题,就得借助 Nathan Marz 推出的 Storm(现在在 Twitter 中称为 BackType)。Storm 不处理静态数据,但它处理预计会连续的流数据。考虑到 Twitter 用户每天生成 1.4 亿条推文 (tweet),那么就很容易看到此技术的巨大用途。

但 Storm 不只是一个传统的大数据分析系统:它是复杂事件处理 (CEP) 系统的一个示例。CEP 系统通常分类为计算和面向检测,其中每个系统都可通过用户定义的算法在 Storm 中实现。举例而言,CEP 可用于识别事件洪流中有意义的事件,然后实时地处理这些事件。
阅读全文

Ubuntu 14.04 设置Android开发环境

准备Java环境

本文只安装sdk,不安装什么IDE,因为我只需要命令行模式开发即可。

首先安装openjdk 1.6,然后安装ant,这个不赘述。

下载SDK

从这里下载SDK for Linux 64bit的版本: http://developer.android.com/sdk/index.html?hl=sk#download
阅读全文

Linux kernel 性能压力下的优化实践

做benchmark测试的过程中,总是会涉及到linux操作系统底层的设置导致无法充分利用机器的性能,在调试的过程中,不少资料没能和linux kernel版本对应上导致一些参数的设置错误。根据现有服务器的硬件条件和软件版本做相关优化,把一些实践的心得分享出来。

     Kernel version : 2.6.32-71.el6.x86_64

     Cpu:Intel(R) Xeon(R) CPU    E5606  @ 2.13GHz

     Memory:8G

     Release notes : v0.1  2012-03-31  句柄数  , 网络参数

问题1:句柄数的问题

    使用webbench在Linux下做varlish访问压力测试的时候,遇到Socket/File: Can’t open so many files的问题,原因是linux下所有的东西都是文件,包括socket接口,对于大量的网络连接,不仅仅消耗socket文件描述符,对于进程本身 还打开相当多的文件,Linux的默认句柄数是1024。

解决方式:

修改/etc/security/limits.conf
    你的用户名  soft nofile 65535      ##ulimit -Sn
    你的用户名 hard nofile 65535      ##ulimit -Hn
unlimt -n 查看

     问题2:网络参数

      使用ab或者webbench做压力测试,如果并发数开到1000的时候,无法完成测试。到晚上查看资料发现是linux网络参数设置。
阅读全文

PHP 自 5.2 到 5.6 中新增的功能详解

截至目前(2014.2), PHP 的最新稳定版本是 PHP5.5, 但有差不多一半的用户仍在使用已经不在维护 [注] 的 PHP5.2, 其余的一半用户在使用 PHP5.3 [注].
因为 PHP 那“集百家之长”的蛋疼语法,加上社区氛围不好,很多人对新版本,新特征并无兴趣。
本文将会介绍自 PHP5.2 起,直至 PHP5.6 中增加的新特征。

  • PHP5.2 以前:autoload, PDO 和 MySQLi, 类型约束
  • PHP5.2:JSON 支持
  • PHP5.3:弃用的功能,匿名函数,新增魔术方法,命名空间,后期静态绑定,Heredoc 和 Nowdoc, const, 三元运算符,Phar
  • PHP5.4:Short Open Tag, 数组简写形式,Traits, 内置 Web 服务器,细节修改
  • PHP5.5:yield, list() 用于 foreach, 细节修改
  • PHP5.6: 常量增强,可变函数参数,命名空间增强

注:已于2011年1月停止支持: http://www.php.net/eol.php
注:http://w3techs.com/technologies/details/pl-php/5/all

PHP5.2以前

(2006前)
顺便介绍一下 PHP5.2 已经出现但值得介绍的特征。
阅读全文

我们应该如何对待技术信仰?

当你发现自己有了技术信仰时,不要尝试去磨灭它,而是去利用它!利用它带给自己的动力!

程序员的荣耀

  1. 编程语言战争:认为自己所用的语言是最好的。
  2. 编辑器的圣战:Vim和Emacs党派不断向对方发起攻击。
  3. 操作系统之乱:Windows、Linux和Mac OS阵营之间的不断争论。

看到这个列表,你一定深有感触。嗯,程序员荣耀(额,这是我自己起的名Programmers' Glory)已然把网络上的任何地方当成了自己的战场。

记得之前看过一篇博文叫做How Religion Destroys Programmers,翻译过来就是“信仰是如何毁掉程序员的”。

文中列举了众多被垢病的程序员的臭毛病和它们所带来的巨大危害。文中提到,这种自我强加的信仰导致的问题是,它让我们看不到真相,不去尝试别的技术。代码偏执为拥有Programmers' Glory的人关上了很多扇门。
阅读全文

一个程序员如何快速赚到一百万?

一个程序员如何快速赚到一百万,说的详细点儿就是:

一个固定工作者怎么跳出固有的模式,靠其他途径(投资、理财、生意、创意、外包等)赚得相对殷实的钞票?

80% 人都会问这种赚钱问题,但这种问题却太难回答,因为太难有个可标准化的模式去效仿或借鉴。


这个时代,赚钱不难,赚 100 万也不难,难的是要具备且能勤奋的执行的能够持续创造财富的思想方法:观察事物 – 分析分解事物 – 得出解决方案,且把每一个步骤一步一步“写”下来并踏踏实实实施,这个方法最笨,但是她是最踏实的,有了这个,钱是迟早的事儿。
阅读全文

Ubuntu 12.04常用快捷键——记住这些你就是高手啦!

下面是Ubuntu 12.04常用快捷键——记住这些会让你更加得心应手哦!

0400174KB

 

桌面

ALT + F1: 聚焦到桌面左侧任务导航栏,可按上下键导航。

ALT + F2: 运行命令

ALT + F4: 关闭窗口

ALT + TAB: 切换程序窗口

ALT + 空格: 打开窗口菜单

PRINT: 桌面截图

SUPER: 打开Dash面板,可搜索或浏览项目,默认有个搜索框,按“下”方向键进入浏览区域(SUPER键指Win键或苹果电脑的Command键)

在Dash面板中按CTRL + TAB: 切换到下一个子面板(可搜索不同类型项目,如程序、文件、音乐)

SUPER + A: 搜索或浏览程序(Application)

SUPER + F: 搜索或浏览文件(File)

SUPER + M: 搜索或浏览音乐文件(Music)

Orca读屏软件

启动Orca: SUPER + A,然后输入orca,然后回车

ORCA + 空格: 显示首选项对话框(ORCA键是指Insert插入键或CAPS LOCK大小写转换键,取决于设置)

ORCA + t: 读当前时间

ORCA + tt: 读当前日期

ORCA + s: 切换合成语音开关

ORCA + /: 朗读标题

ORCA + //: 朗读状态栏

ORCA + 分号: 朗读整个文件

ORCA + Q: 退出Orca

更多快捷键请参考Orca首选项的键绑定标签页

Firefox浏览器

进入Firefox的方法:

1. SUPER + A,然后按firefox,回车。这个是在Dash面板中搜索应用程序运行。事实上,只要按fir就能定位到Firefox程序。

2. ALT,然后按firefox,回车。这个相当于在命令行运行一条命令。

3. 在终端中按firefox&,回车。这个适用于以终端作为主要操作窗口的用户,使用TAB键还可以自动补全命令(只需输入前几个字母再按TAB键)。&在Shell中是后台运行的意思,这样终端就不会被Firefox独占。

CTRL + T: 新建标签页

CTRL + W: 关闭标签页

CTRL + SHIFT + T: 重新打开最近关闭的一个标签页

CTRL + TAB: 切换到下一个标签页

CTRL + SHIFT + TAB: 切换到上一个标签页

ALT + [1-8]: 跳到制定标签页

ALT + 9: 跳到最后一个标签页

CTRL + L: 跳到地址栏

ESC: 停止加载当前页面

CTRL + K: 跳到搜索引擎输入框

CTRL + F: 在当前页面中搜索

/: 快速查找。在Linux中很多程序(如VI、Man、Less)都使用/作为搜索的快捷键,并且可使用正则表达式查找。但在Firefox中没有正则表达式搜索的功能。

CTRL + D: 收藏到书签

ALT + 左方向键: 后退

ALT + v: 前进

CTRL + Q: 退出

Gedit文本编辑器

启动gedit:SUPER + A,然后按gedit,回车

CTRL + N: 新建文档

CTRL + W: 关闭文档

CTRL + S: 保存

CTRL + SHIFT + S: 另存为

CTRL + S: 搜索

CTRL + H: 搜索并替换

CTRL + I: 跳到某一行

CTRL + C: 复制

CTRL + V: 粘贴

CTRL + X: 剪切

CTRL + Q: 退出

Nautilus文件管理器

启动Nautilus的方法:

1. SUPER + 1,这个方法仅适用于Nautilus在左边快速启动的位置没有改变的情况。

2. SUPER + A,然后输入nautilus,然后回车

F2: 重命名

CTRL + 1: 图标视图

CTRL + 2: 列表视图

CTRL + T: 新建标签页

CTRL + W: 关闭标签页

CTRL + D: 收藏到书签

CTRL + Q: 退出

Nautilus还有很多和Firefox一致的快捷键。

Rhythmbox音频播放器

CTRL + 空格: 播放/暂停

ALT + 右方向键: 下一首

ALT + 左方向键: 上一首

CTRL + 上方向键: 增大音量

CTRL + 下方向键: 减少音量

CTRL + U: 随机播放

CTRL + R: 重复播放

CTRL + Q: 退出

Terminal终端

CTRL + ALT + T: 打开终端

TAB: 自动补全命令或文件名

CTRL + SHIFT + V: 粘贴(Linux中不需要复制的动作,文本被选择就自动被复制)

CTRL + SHIFT + T: 新建标签页

CTRL + D: 关闭标签页

CTRL + L: 清楚屏幕

CTRL + R + 文本: 在输入历史中搜索

CTRL + A: 移动到行首

CTRL + E: 移动到行末

CTRL + C: 终止当前任务

CTRL + Z: 把当前任务放到后台运行(相当于运行命令时后面加&)

~: 表示用户目录路径

如果打开一个程序

以“系统配置”为例,先按SUPER + A,SUPER即Win键,然后切换到中文输入法,输入“系统配置”,按回车即打开程序。再按TAB键浏览系统配置里的子配置程序。

文章来自:linuxde