如何用在c++中演奏孙燕姿的《遇见》

阅读全文

今天在renren上看到用matlab演奏卡农, 我是圡人, 不会用matlab...也想写个简单的小程序跑跑, 于是找c++写了一段孙燕姿的<<遇见>>(只有两小段~~), (我写过的c++代码估计仅限于有限的几道算法题了, 代码有啥不符合c++规范之类的多包涵..), 不过常用的音阶啥的都直接定义好了, 有兴趣的可以在我的代码上再修改~~ 

话说赶脚Beep这个玩意儿不给力啊, 有时候会卡~ 

阅读全文>>

如何在java中调用shell脚本

阅读全文

之前有一段时间需要用java写一个程序, 在linux上面跑. 不过有一部分需要实现的功能已经用shell写出来了, 比如说用shell抓取xml文件之类等, 但是呢, 后面需要把这些文件去分析并且加入数据库中. 在这种情况下, 迫不得已采取的方式是以java为壳, 其中部分功能嵌入shell的调用. 于是在网上查了点儿资料, 写了以下的代码:

/**
 * 
 */
package dashboard;

import java.io.InputStreamReader;
import java.io.LineNumberReader;

/**
 * @author bian_wei
 *
 */
public class ExecCmd {
        public static String execCmd(String cmd)
        {
                System.out.println(cmd);
                String ret = "";
                try
                {
                        Process process = Runtime.getRuntime().exec(cmd); 

                        InputStreamReader ir = new InputStreamReader(process.getInputStream());
                        LineNumberReader input = new LineNumberReader(ir);

                        String line;

                        while ((line = input.readLine ()) != null)
                        {
                                ret += line + "\n";
                        }
                }
                catch (java.io.IOException e)
                {
                        ret = "IOException " + e.getMessage();
                }
                return ret;
        }
        public static void main(String args[])
        {
//              ExecCmd.execCmd("source ~/.bash_profile; cd /home/work/bian_wei/workspace/src && ./gethudsoninfo.sh -t 1>/home/work/dashboard.log 2>&1");
                System.out.println(ExecCmd.execCmd("/home/work/bian_wei/workspace/src/gethudsoninfo.sh -t 1>/home/work/dashboard.log 2>&1"));
//              System.out.println(ExecCmd.execCmd("ls -l /home/work"));
        }
}
其中后面的main函数是用来测试的, 可以不用管~ 调用的方式很简单:
ExecCmd.execCmd("需要执行的shell命令");
当然, 这儿的返回值是直接使用的exception输出值~直接获取shell返回值的方法我没有仔细研究, 就这么着吧~~  

The post 如何在java中调用shell脚本 appeared first on 邮递员大叔.

阅读全文>>

鲫鱼豆腐汤的简单做法[转自我的百度经验]

阅读全文

前言

鲫鱼豆腐汤味道鲜美,且营养丰富.而且做起来也非常简单,基本上只需要准备好相应的材料,按照下面的说明一步步来,很容易就做出一锅色香味俱全的鲫鱼豆腐汤来

工具/材料

鲫鱼(一条,正常大小均可) 内酯豆腐一盒 料酒 盐 葱(大葱,小葱均可) 姜 香菜 水

步骤/方法

  1. 准备一条鲫鱼,去鳞去内脏(一般卖鱼的地方都可以帮你处理).
  2. 洗净后正反两面分别切出几道刀痕
  3. 将锅烧热,用姜在表面来回擦拭几次,这样可以防止粘锅
  4. 在锅中放入少量的油(能够覆盖到锅底即可,约3-5毫升),烧至油热,放入切好的葱姜.葱大约切成1厘米左右的长度,放入5-8段即可,姜切成厚度约1-2毫米,放入4,5片即可.
  5. 把鱼放入锅中,随后放水,水的数量约为恰好没过鱼的身体即可.倒入约10毫升的料酒(适量,不需要太多)
  6. 盖上锅盖,用大火煮约20分钟.
  7. 将准备的内酯豆腐在盒子中切开,用小刀切成小块如下图,倒入锅中.随后再加入足量的水(没过鱼身再略多一些).将火调至小火,盖上锅盖煮30分钟
  8. 此时锅中的水已经变成乳白色,放入适量的盐.如下图,大约一小勺.不过由于鱼汤的量取决于鱼和锅的大小,因此多少略有区别.可少放一些,尝一下咸淡再继续放.
  9. 撒上一点儿香菜即可出锅啦

The post 鲫鱼豆腐汤的简单做法[转自我的百度经验] appeared first on 邮递员大叔.

阅读全文>>

由于项目组需要,发个招聘信息~~

阅读全文

由于项目小组需要,发此职位招聘若干web开发测试工程师(社招),合适的简历可以通过内部推荐进行职位的推荐~ 招聘职位: 质量部_开发测试工程师 工作地点: 北京 西二旗 百度大厦 工作职责: 1. 产品测试, 对象主要是php web平台/shell/python/C等, 进行功能、性能、压力、安全等测试 2. 自动化&工具开发: 剖析产品测试需要,设计和开发工具和自动化case,例如使用phpunit进行功能测试开发;selenium进行页面自动化开发等 职位要求: 1. 工作经验有1年以上,精通php、j2ee、python相关的至少一种web开发框架,有不少于两个web项目的开发经验 2. 了解网络、操作系统、数据结构、算法等基础知识,掌握web及数据库相关知识 3. 思维缜密,逻辑思考能力强,有测试经验,熟练掌握web相关的安全测试、性能测试、压力测试等方法。有自动化开发经验者优先 4. 沟通能力好,有较强的推动能力。了解敏捷开发、持续集成等项目实践方式为佳 联系方式: 发送邮件至 poisonbian@gmail.com ,标题为【应聘开发测试工程师】毕业学校-姓名-参加工作年数-其他(如【应聘开发测试工程师】xx大学-张三-4年-精通php),附上doc或者pdf格式的简历

The post 由于项目组需要,发个招聘信息~~ appeared first on 邮递员大叔.

阅读全文>>

为啥加了ssh信任关系不管用呢

阅读全文

先说正常的添加两台linux机器之间ssh信任关系的方法: 假设主机A用来连接到主机B 1. 在主机A上执行如下命令来生成配对密钥: ssh-keygen -t rsa

显示信息如下: Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory ‘/root/.ssh’. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 45:13:ec:31:f9:3d:25:54:7b:5f:03:40:ba:e9:76:cd root@bindiry-ubuntu
按三次回车。 这个命令生成一个密钥对:id_rsa(私钥文件)和id_rsa.pub(公钥文件)。默认被保存在~/.ssh/目录下。 2. 将 .ssh 目录中的 id_rsa.pub 文件复制到 主机B 的 ~/.ssh/ 目录中,并改名为 authorized_keys 如果已经存在authorized_keys, 则直接编辑,将主机A的~/.ssh/id_rsa.pub的内容(只有一行)添加到authorized_keys ***注意内容没有换行符!!! 好了, 信任关系建立好了. 理论上直接在A机器就可以无密码ssh到B机器了, 但是实际上, 经常发现这个会失效 99.999%的可能性是由于目标机器的文件&目录权限导致!! 1)~, ~/.ssh这两个文件夹的权限必须是755 (chmod 755 ~; chmod 755 ~/.ssh) 2)~/.ssh/authorized_keys这个文件的权限必须是600 3)如果是非root用户, 需要使用ssh登陆, 比如是work用户, 则以上两个目录&一个文件的所有者必须是work用户(可使用chown work:work authorized_keys这样的方式修改文件所属)  

The post 为啥加了ssh信任关系不管用呢 appeared first on 邮递员大叔.

阅读全文>>

global-translator插件显示的修改

阅读全文

换了个主题之后, 发现global-translator的插件工具栏变得很难看, 主要就是小国旗的上方一点儿留白都木有, 如下图 最一劳永逸的修改方式就是修改主题的css, 在小工具栏的显示中增加一个padding的属性. 不过我需要修改的内容不多, 无非就是global-translator, 百度广告. 其他显示都还是挺不错的. 我就直接"就事论事", 修改这几个好了~ 比如百度广告上方的距离, 很容易修改, 在小工具的设置里, 代码前面加一行<br />就可以了~ global-translator当然也是这样的思路, 不过需要修改插件的代码. 在插件->编辑中, 找到global-translator的插件, 定位到global-translator/translator.php 这个文件, 找到如下代码

function widget_global_translator_init() {

  if(!function_exists('register_sidebar_widget')) { return; }
  function widget_global_translator($args) {
    extract($args);
    echo $before_widget . $before_title . "Translator" . $after_title;
    gltr_build_flags_bar();
    echo $after_widget;
  }
  register_sidebar_widget('Global Translator','widget_global_translator');

}
在gltr_build_flags_bar();这一行的上面增加
echo "<br />";
这样就可以啦~显示效果如下:  

The post global-translator插件显示的修改 appeared first on 邮递员大叔.

阅读全文>>

wordpress中如何使用自定义的分页插件

阅读全文

我使用的插件是WP-PageNavi, 它比wordpress自带的主题(或者下载的其他主题)的分页功能相比还是比较强大的. 比如我之前用的两个主题的分页功能,基本上都是"前翻一页", "后翻一页"这样的, 但是用了这个插件之后, 可以显示出若干页码的链接, 而且每页的文章数目之类也能方便地定义. 这个插件使用起来还比较简单, 1. 安装插件(这个就不用说啦, 仪表盘中现成的功能)并且启用 2. 在外观->编辑中, 选择index.php, 找到类似于下面的代码:

<div class="prevpost"><?php next_posts_link(__('Older Entries', 'Mflat')) ?></div>
<div class="nextpost"><?php previous_posts_link(__('Newer Entries', 'Mflat')) ?></div>
不过每个主题的代码都是略有区别的, 可以直接用prev和next作为关键字搜索~ 3. 在上面的代码前后各加一段代码, 即成为下面的样子:
<?php if(function_exists('poib_pagenavi')){ 
poib_pagenavi(); } else { ?>
			<div class="prevpost"><?php next_posts_link(__('Older Entries', 'Mflat')) ?></div>
			<div class="nextpost"><?php previous_posts_link(__('Newer Entries', 'Mflat')) ?></div>
<?php } ?>
就是说, 如果包含poib_pagenavi这个函数, 就使用这个插件所提供的分页功能, 否则维持原来的样式 4. 在wp的管理界面中, 设置->分页导航中设置自己需要的样式, 比如每页的文章数目等等~

The post wordpress中如何使用自定义的分页插件 appeared first on 邮递员大叔.

阅读全文>>

如何在thinkphp3.0中实现分页的伪静态代码

阅读全文

前阵子我做的一个简单作品"写给未来的自己"使用了Thinkphp3.0版本的框架(SAE版本, 不过和普通的用起来没啥区别), 但是Tp3.0中对于分页没有提供伪静态的支持, 也就是说, 翻页的链接是"http://abc.com/a/b/c?&p=1"这样的形式, 而无法使用成类似于"http://abc.com/a/b/c/p/1"这样的. 从这个实现本身来看没啥问题, 只不过是显示起来比较别扭. 但是实际上, 这个对于搜索引擎的抓取非常不利. 比如我在百度和google分别提交了sitemap, google还好, &p=1和&p=2这样子的都可以当做不同的网页抓取, 在搜索框中用"site: hi2future.com"可以看到基本上所有的页面都是可以检索到的. 但是百度弱爆了, 这种&p=1的都被认为实际调用的页面是相同一个(当然, 实际的确是这样...), 结果很多分页的url地址就无法被索引到. 大怒之下, 就改写了tp3.0的分页类. 未修改的php文件直接下载: Page.class 修改后的php文件直接下载: Page.class 我修改的原则是, 1. 直接基于原有代码进行修改, 不重新写 2. 兼容各种情况: 1) http://abc.com/p/1(正常url) 2) http://abc.com/a/1(不包含分页参数) 3) http://abc.com/a/1/p/2/x/3(分页参数的后面还有其他的参数以tp默认的方式传入) 4) http://abc.com/a/1/p/2/x/3?abc=xyz(同上, 不过后面还有以问号分隔的正常url get参数传递) 5) http://abc.com/a/1/p/32/..(页码参数不仅仅有一位数字) 6) http://abc.com/a/1/p/2?abc=xyz(分页参数后面直接跟着?的正常参数) 3. 分页的地址可以配置, 如http://abc.com/a/1/page/3这样 基于以上一些原则, 直接给出修改后的代码如下:

<?php
// +----------------------------------------------------------------------
// ¦ ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// ¦ Copyright (c) 2009 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// ¦ Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// ¦ Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
// $Id: Page.class.php 2712 2012-02-06 10:12:49Z liu21st $

class Page {
    // 分页栏每页显示的页数
    public $rollPage = 5;
    // 页数跳转时要带的参数
    public $parameter  ;
    // 默认列表每页显示行数
    public $listRows = 20;
    // 起始行数
    public $firstRow	;
    // 分页总页面数
    protected $totalPages  ;
    // 总行数
    protected $totalRows  ;
    // 当前页数
    protected $nowPage    ;
    // 分页的栏的总页数
    protected $coolPages   ;
    // 分页显示定制
    protected $config  =	array('header'=>'条记录','prev'=>'上一页','next'=>'下一页','first'=>'第一页','last'=>'最后一页','theme'=>' %totalRow% %header% %nowPage%/%totalPage% 页 %upPage% %downPage% %first%  %prePage%  %linkPage%  %nextPage% %end%');
    // 默认分页变量名
    protected $varPage;

    /**
     +----------------------------------------------------------
     * 架构函数
     +----------------------------------------------------------
     * @access public
     +----------------------------------------------------------
     * @param array $totalRows  总的记录数
     * @param array $listRows  每页显示记录数
     * @param array $parameter  分页跳转的参数
     +----------------------------------------------------------
     */
    public function __construct($totalRows,$listRows='',$parameter='') {
        $this->totalRows = $totalRows;
        $this->parameter = $parameter;
        //$this->varPage = 'p' ;
		$this->varPage = C('VAR_PAGE') ? C('VAR_PAGE') : 'p' ;
        if(!empty($listRows)) {
            $this->listRows = intval($listRows);
        }
        $this->totalPages = ceil($this->totalRows/$this->listRows);     //总页数
        $this->coolPages  = ceil($this->totalPages/$this->rollPage);
        $this->nowPage  = !empty($_GET[$this->varPage])?intval($_GET[$this->varPage]):1;
        if(!empty($this->totalPages) && $this->nowPage>$this->totalPages) {
            $this->nowPage = $this->totalPages;
        }
        $this->firstRow = $this->listRows*($this->nowPage-1);
    }

    public function setConfig($name,$value) {
        if(isset($this->config[$name])) {
            $this->config[$name]    =   $value;
        }
    }

    /**
     +----------------------------------------------------------
     * 分页显示输出
     +----------------------------------------------------------
     * @access public
     +----------------------------------------------------------
     */
    public function show() {
        if(0 == $this->totalRows) return '';
        $p = $this->varPage;
        $nowCoolPage      = ceil($this->nowPage/$this->rollPage);
        $ori_url = $_SERVER['REQUEST_URI'];
        //类似于http://abc.com/a/1/p/3/x/9?abc=xyz,这样的形式,需要保留参数a,x,abc,此处仅仅需要根据/p/3生成/p/其他页
        $url_page_index = stripos($ori_url, '/'.$p.'/');
        $url_length = strlen($ori_url);
        //如果找不到/p/3,则在?前面添加p的参数,即将url以?分割成两个部分
        if ($url_page_index == false)
        {
        	$url_wen_index = stripos($ori_url, '?');
        	if ($url_wen_index == false)
        	{
        		$url_prefix = $ori_url;
        		$url_suffix = "";
        	}
        	else 
        	{
        		$url_prefix = substr($ori_url, 0, $url_wen_index);
        		$url_suffix = substr($ori_url, $url_wen_index, $url_length - $url_wen_index);
        	}
        }
        //否则,保留/p/3前后的url信息,用于拼装
        else
        {
        	$url_page_index_last = $url_page_index + strlen($p) + 2;
        	while ($ori_url[$url_page_index_last] >= '0' 
        		&& $ori_url[$url_page_index_last] <= '9' 
        		&& $url_page_index_last < $url_length - 1)
        	{
        		$url_page_index_last ++;
        	}
        	$url_page_index_last ++;
        	$url_prefix = substr($ori_url, 0, $url_page_index);
        	if ($url_page_index_last == $url_length)
        	{
        		$url_suffix = "";
        	}
        	else
        	{
        		$url_suffix = substr($ori_url, $url_page_index_last - 1, $url_length - $url_page_index_last + 1);
        	}
        }

//        var_dump($url_prefix);
//        var_dump($url_suffix);

        //上下翻页字符串
        $upRow   = $this->nowPage-1;
        $downRow = $this->nowPage+1;
        if ($upRow>0){
            $upPage="<a href='".$url_prefix."/".$p."/$upRow".$url_suffix."'>".$this->config['prev']."</a>";
        }else{
            $upPage="";
        }

        if ($downRow <= $this->totalPages){
            $downPage="<a href='".$url_prefix."/".$p."/$downRow".$url_suffix."'>".$this->config['next']."</a>";
        }else{
            $downPage="";
        }
        // << < > >>
        if($nowCoolPage == 1){
            $theFirst = "";
            $prePage = "";
        }else{
            $preRow =  $this->nowPage-$this->rollPage;
            $prePage = "<a href='".$url_prefix."/".$p."/$preRow".$url_suffix."' >上".$this->rollPage."页</a>";
            $theFirst = "<a href='".$url_prefix."/".$p."/1".$url_suffix."' >".$this->config['first']."</a>";
        }
        if($nowCoolPage == $this->coolPages){
            $nextPage = "";
            $theEnd="";
        }else{
            $nextRow = $this->nowPage+$this->rollPage;
            $theEndRow = $this->totalPages;
            $nextPage = "<a href='".$url_prefix."/".$p."/$nextRow".$url_suffix."' >下".$this->rollPage."页</a>";
            $theEnd = "<a href='".$url_prefix."/".$p."/$theEndRow".$url_suffix."' >".$this->config['last']."</a>";
        }
        // 1 2 3 4 5
        $linkPage = "";
        for($i=1;$i<=$this->rollPage;$i++){
            $page=($nowCoolPage-1)*$this->rollPage+$i;
            if($page!=$this->nowPage){
                if($page<=$this->totalPages){
                    $linkPage .= "&nbsp;<a href='".$url_prefix."/".$p."/$page".$url_suffix."'>&nbsp;".$page."&nbsp;</a>";
                }else{
                    break;
                }
            }else{
                if($this->totalPages != 1){
                    $linkPage .= "&nbsp;<span class='current'>".$page."</span>";
                }
            }
        }
        $pageStr	 =	 str_replace(
            array('%header%','%nowPage%','%totalRow%','%totalPage%','%upPage%','%downPage%','%first%','%prePage%','%linkPage%','%nextPage%','%end%'),
            array($this->config['header'],$this->nowPage,$this->totalRows,$this->totalPages,$upPage,$downPage,$theFirst,$prePage,$linkPage,$nextPage,$theEnd),$this->config['theme']);
        return $pageStr;
    }

}

//$request_urls = array(
//	"http://localhost/a/1/p/2",
//	"http://localhost/a/1/p/25",
//	"http://localhost/a/1/p/3/x/3",
//	"http://localhost/a/1/p/32/x/3",
//	"http://localhost/a/1",
//	"http://localhost/a/1?abc=xyz",
//	"http://localhost/a/1/p/3?abc=xyz",
//	"http://localhost/a/1/p/3/x/3?abc=xyz",
//	"http://localhost/a/1/p/32?abc=xyz",
//	"http://localhost/a/1/p/32/x/3?abc=xyz",
//);
//
//foreach ($request_urls as $key=>$value)
//{
//	$_SERVER['REQUEST_URI'] = $value;
//	$page = new Page(16, 5);
//    $show = $page->show();
//    var_dump($show);
//}
其中测试的时候, 可以将50行先删掉, 使用第49行的代码, 将最后面的测试代码注释去掉, 直接当做php脚本来跑~ update(2013.02.17): 发现有个小bug。。 while ($ori_url[$url_page_index_last] >= '0' && $ori_url[$url_page_index_last] <= '9' && $url_page_index_last < $url_length - 1) 这个判断有误,原来少写了=,这会导致翻页翻到90页的时候,上一页的链接会变成8990(后面的90没有被去掉)  

The post 如何在thinkphp3.0中实现分页的伪静态代码 appeared first on 邮递员大叔.

阅读全文>>

推荐一篇文章,NoSQL数据库笔谈

阅读全文

http://sebug.net/paper/databases/nosql/Nosql.html 我就不把内容粘贴过来了, 可以直接过去看, 下面仅给出目录~~

  1. 思想篇
    1. CAP
    2. 最终一致性
      1. 变体
    3. BASE
    4. 其他
      1. I/O的五分钟法则
      2. 不要删除数据
      3. RAM是硬盘,硬盘是磁带
      4. Amdahl定律和Gustafson定律
      5. 万兆以太网
  2. 手段篇
    1. 一致性哈希
      1. 亚马逊的现状
      2. 算法的选择
    2. Quorum NRW
    3. Vector clock
    4. Virtual node
    5. gossip
      1. Gossip (State Transfer Model)
      2. Gossip (Operation Transfer Model)
    6. Merkle tree
    7. Paxos
      1. 背景
    8. DHT
    9. Map Reduce Execution
    10. Handling Deletes
    11. 存储实现
    12. 节点变化
    13. 列存
      1. 描述
      2. 特点
  3. 软件篇
    1. 亚数据库
      1. MemCached
        1. 特点
        2. 内存分配
        3. 缓存策略
        4. 缓存数据库查询
        5. 数据冗余与故障预防
        6. Memcached客户端(mc)
        7. 缓存式的Web应用程序架构
        8. 性能测试
      2. dbcached
        1. Memcached 和 dbcached 在功能上一样吗?
    2. 列存系列
      1. Hadoop之Hbase
      2. 耶鲁大学之HadoopDB
      3. GreenPlum
      4. FaceBook之Cassandra
        1. Cassandra特点
        2. Keyspace
        3. Column family(CF)
        4. Key
        5. Column
        6. Super column
        7. Sorting
        8. 存储
        9. API
      5. Google之BigTable
      6. Yahoo之PNUTS
        1. 特点
        2. PNUTS实现
          1. Record-level mastering 记录级别主节点
          2. PNUTS的结构
          3. Tablets寻址与切分
          4. Write调用示意图
        3. PNUTS感悟
      7. 微软之SQL数据服务
    3. 非云服务竞争者
    4. 文档存储
      1. CouchDB
        1. 特性
      2. Riak
      3. MongoDB
      4. Terrastore
      5. ThruDB
    5. Key Value / Tuple 存储
      1. Amazon之SimpleDB
      2. Chordless
      3. Redis
      4. Scalaris
      5. Tokyo cabinet / Tyrant
      6. CT.M
      7. Scalien
      8. Berkley DB
      9. MemcacheDB
      10. Mnesia
      11. LightCloud
      12. HamsterDB
      13. Flare
    6. 最终一致性Key Value存储
      1. Amazon之Dynamo
        1. 功能特色
        2. 架构特色
      2. BeansDB
        1. 简介
        2. 更新
        3. 特性
        4. 性能
      3. Nuclear
        1. 两个设计上的Tips
      4. Voldemort
      5. Dynomite
      6. Kai
    7. 未分类
      1. Skynet
      2. Drizzle
    8. 比较
      1. 可扩展性
      2. 数据和查询模型
      3. 持久化设计
  4. 应用篇
    1. eBay 架构经验
    2. 淘宝架构经验
    3. Flickr架构经验
    4. Twitter运维经验
      1. 运维经验
        1. Metrics
        2. 配置管理
        3. Darkmode
        4. 进程管理
        5. 硬件
      2. 代码协同经验
        1. Review制度
        2. 部署管理
        3. 团队沟通
      3. Cache
    5. 云计算架构
    6. 反模式
      1. 单点失败(Single Point of Failure)
      2. 同步调用
      3. 不具备回滚能力
      4. 不记录日志
      5. 无切分的数据库
      6. 无切分的应用
      7. 将伸缩性依赖于第三方厂商
    7. OLAP
      1. OLAP报表产品最大的难点在哪里?
    8. NOSQL们背后的共有原则
      1. 假设失效是必然发生的
      2. 对数据进行分区
      3. 保存同一数据的多个副本
      4. 动态伸缩
      5. 查询支持
      6. 使用 Map/Reduce 处理汇聚
      7. 基于磁盘的和内存中的实现
      8. 仅仅是炒作?
    1. 感谢
    2. 版本志
    3. 引用

The post 推荐一篇文章,NoSQL数据库笔谈 appeared first on 邮递员大叔.

阅读全文>>

苹果的”招贤纳才”

阅读全文

苹果CEO:“去把公司TW站左上角的 招贤纳才 改成繁体字。” 程序猿:“老板,改好了!”,然后。。。 中文 [ http://www.apple.com/jobs/cn/ ] 台湾 [ http://www.apple.com/jobs/tw/ ] 赶紧截图纪念,哈哈~~

The post 苹果的”招贤纳才” appeared first on 邮递员大叔.

阅读全文>>