自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 [转载]并发之痛 Thread,Goroutine,Actor

转自 http://jolestar.com/parallel-programming-model-thread-goroutine-actor/ 本文基于我在2月27日Gopher北京聚会演讲整理而成,进行了一些补充以及调整。投稿给《高可用架构》公众号首发。聊这个话题之前,先梳理下两个概念,几乎所有讲并发的文章都要先讲这两个概念:并发(concurrency) 并发的关...

2017-04-06 19:21:10 228

原创 [转载]Why size_t matters

 http://www.embedded.com/electronics-blogs/programming-pointers/4026076/Why-size-t-matters Using size_t appropriately can improve the portability, efficiency, or readability of your code. Maybe...

2017-04-01 08:02:20 56

原创 【转载】RVO V.S. std::move

Return Value OptimizationReturn value optimization, simply RVO, is a compiler optimization technique that allows the compiler to construct the return value of a function at the call site. The techn...

2016-08-31 22:11:41 58

原创 paxos的实现源码分析(以keyspace的paxoslease的实现为例子)

      看过太多的paxos的算法的介绍,paxos个人认为没有那么难,但是为啥那么难懂呢?因为大家都是根据理论讨论,作为一个程序员,源码下无秘密,因此我结合keyspace的paxos lease的源码实现来分析一下paxos的算法(paxos的直接实现会存在活锁问题,因此大多数的实现都是通过一个paxos的lease算法选择一个主proposer,可以看成一轮paxos的实现)。 ...

2016-07-26 22:18:16 220

翻译 JVM动态调整字节码

粗略的点开btrace的源码看了一下,实际上他只是封装了JDK自带的功能而已 1. attach client到java进程  VirtualMachine vm = null; if (debug) { debugPrint("attaching to " + pid); } ...

2016-04-14 19:27:03 140

翻译 java字节码常量池处理说明

1. 根据java的字节码格式说明,常量池中每一项的大小不一样的。运行时,若要通过数组索引获取具体的一项时,必须要经过一定的处理才能根据数组下标进行处理,具体的实现原理实际上就是空间换时间,可以参考kvm的实现: 每一项的定义,采用的是union的定义(会取最大的字节数进行内存分配) /* Each of these represents one entry in the c...

2016-04-13 23:23:10 108

原创 JPEG 简易文档 V2.15【转载】

JPEG 简易文档 V2.15------------------------------ 初稿写于 2000.1.23 最后修订 2003.12.5 2007.7.16 作者: 云风 Email: cloudwu (a) gmail.com Homepage: ht...

2016-04-10 16:35:46 101

翻译 Mac OSX 10.10 Yosemite编译OpenJDK 8

编译时间:2016-04-03系统版本:Mac OS X Yosemite 10.10.2编译OpenJDK版本:JDK8相关软件版本:            •          XCode版本:Version 5.1.1 (5B1008)            •          JDK版本:1.8.0_51            •          软件管理工...

2016-04-03 18:14:04 70

原创 BIT DEPTH TUTORIAL

BIT DEPTH TUTORIALBit depth quantifies how many unique colors are available in an image's color palette in terms of the number of 0's and 1's, or "bits," which are used to specify each color. This ...

2016-03-30 23:04:47 61

原创 JPEG 原理详细实例分析及其在嵌入式 Linux 中的应用 【转载】

级别: 中级余 涛 (yut616@21cn.com), 高级软件工程师2008 年 9 月 04 日作为一个基本的图像压缩方式,JPEG 已经得到了广泛的运用,但 JPEG 相关的基本原理,却经常被忽视,或解释得很不确切。这里我们详细讨论一下 JPEG 的编码原理,并结合实例来给出一个更加感性的认识。JPEG 编码的详细过程有着诸多的信息可以给我们巨大的启发,我们在这里讨论的就是要...

2016-03-30 22:18:53 59

原创 同时管理多个ssh私钥【转载】

在设置github的时候,官方的说明文档要求备份当前的id_rsa,然后生成一份新的私钥用于github的登陆。如果真这样做,那么新的私钥是无法再继续登陆之前的机器的。这种方法有点暴力…还好ssh可以让我们通过不同的私钥来登陆不同的域。首先,在新增私钥的时候,通过指定不同的文件名来生成不同的私钥文件ssh-keygen -t rsa -f ~/.ssh/id_rsa.work ...

2016-03-27 09:13:01 209

原创 SSH原理与运用【转载】

SSH是每一台Linux电脑的标准配置。随着Linux设备从电脑逐渐扩展到手机、外设和家用电器,SSH的使用范围也越来越广。不仅程序员离不开它,很多普通用户也每天使用。SSH具备多种功能,可以用于很多场合。有些事情,没有它就是办不成。本文是我的学习笔记,总结和解释了SSH的常见用法,希望对大家有用。虽然本文内容只涉及初级应用,较为简单,但是需要读者具备最基本的"Shell知识"和了解...

2016-03-27 09:12:41 41

原创 MySQL日志——Undo | Redo【转载】

InnoDB 有两块非常重要的日志,一个是undo log,另外一个是redo log,前者用来保证事务的原子性以及InnoDB的MVCC,后者用来保证事务的持久性。和大多数关系型数据库一样,InnoDB记录了对数据文件的物理更改,并保证总是日志先行,也就是所谓的WAL(Write Ahead Log),即在持久化数据文件前,保证之前的redo日志已经写到磁盘一、概念1、Innodb C...

2016-03-26 16:00:06 118

原创 由浅入深理解索引的实现【转载】

这篇文章是介绍MySQL数据库中的索引是如何根据需求一步步演变最终成为B+树结构的以及针对B+树索引的查询,插入,删除,更新等操作的处理方法。Oracle和DB2数据库索引的实现基本上也是大同小异的。文章写得很通俗易懂,就转在这了。关于B+树和索引内部结构可以参考:《B 树、B- 树、B+ 树和B* 树》和《深入理解DB2索引(Index)》。 00 – 背景知识- B-Tree &...

2016-03-26 15:17:56 45

原创 物理IO与逻辑IO

IO性能对于一个系统的影响是至关重要的。一个系统经过多项优化以后,瓶颈往往落在数据库;而数据库经过多种优化以后,瓶颈最终会落到IO。而IO性能的发展,明显落后于CPU的发展。Memchached也好,NoSql也好,这些流行技术的背后都在直接或者间接地回避IO瓶颈,从而提高系统性能。 IO系统的分层:   三层结构上图层次比较多,但总的就是三部分。磁...

2016-03-19 21:30:01 103

原创 MySQL查询优化之explain的深入解析【转载】

可参考mysql的官方文档:http://dev.mysql.com/doc/refman/5.7/en/explain-output.html在分析查询性能时,考虑EXPLAIN关键字同样很管用。EXPLAIN关键字一般放在SELECT查询语句的前面,用于描述MySQL如何执行查询操作、以及MySQL成功返回结果集需要执行的行数。explain 可以帮助我们分析 select 语句,让我...

2016-01-09 23:05:56 45

原创 MySQL索引实验-主键索引一定比辅助索引快吗?【转载】

一、在一个表执行了分别执行了两条语句:a.SELECT ID FROM MNG_ROLE ORDER BY ID; -- 耗时37秒b.SELECT ID FROM MNG_ROLE ORDER BY ID, NAME; -- 耗时0.01秒c.SELECT ID FROM MNG_ROLE; -- 耗时0.22秒二、表结构如下,插入3万条数据,而且REMARK和RESERVER字段都是填满数据...

2016-01-09 22:53:27 357

原创 C语言的异常机制--setjump()和longjump()实现【转载】

   goto语句可以用于同一个函数内异常处理,不幸的是,goto是本地的,它只能跳到所在函数内部的标号上。为了解决这个限制,C函数库提供了setjmp()和longjmp()函数,它们分别承担非局部标号和goto作用。头文件<setjmp.h>申明了这些函数及同时所需的jmp_buf数据类型。    1.setjmp(jbuf)设置“jump”点,用正确的程序上下文填充jmp_bu...

2015-12-20 08:48:12 259

原创 运用Autoconf和Automake生成Makefile的学习之路【转载】

一、    相关概念的介绍什么是Makefile?怎么书写Makefile?竟然有工具可以自动生成Makefile?怎么生成啊?开始的时候,我有这么多疑问,所以,必须得先把基本的概念搞个清楚。 1. Makefile  makefile用来定义整个工程的编译规则。一个工程中的源文件计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件...

2015-12-12 15:16:37 109

原创 mac下autoconf automake安装【转载】

curl -O http://mirrors.kernel.org/gnu/m4/m4-1.4.13.tar.gztar -xzvf m4-1.4.13.tar.gzcd m4-1.4.13./configure –prefix=/usr/localmakesudo make installcd ..curl -O http://mirrors.kernel.org/gnu/autoconf...

2015-12-12 14:05:54 122

原创 Java 并发之 ConcurrentSkipListMap 简述

JCIP 提到了在 Java 6 中引入了两个新的并发集合类 ConcurrentSkipListMap 和 ConcurrentSkipListSet。其实只要介绍一下 ConcurrentSkipListMap 即可(后面简称为 CSLM),因为我们都知道 JDK 中 Set 是基于 Map 实现的。简而言之,CSLM 是一个并发的、可排序的 Map,因此它可以在多线程环境中弥补 Concu...

2015-09-20 20:24:31 40

原创 hbase等源码导入eclipse流程

hbase: 1. 下载源码svn co http://svn.apache.org/repos/asf/hbase/trunk hbase 2. 执行mvn eclipse:eclipse -DskipTests 3. 导入到eclipse tomcat: tomcat的源码是利用ant来创建和管理的。先安装ant,再执行ant ide-ecl...

2015-09-20 19:00:25 113

原创 最简单的平衡树(红-黑树)的实现

在二叉搜索树(BST)的基础上,要实现一颗平衡树,可以使用2-3树的方式,2-3树的直接实现,相对比较复杂,因此算法的研究者们提出了红-黑树的实现方式。 package com.test;public class RedBlackTree<Key extends Comparable<Key>, Value> { private static f...

2015-09-04 08:04:47 80

原创 NWR模型[转载]

NWR模型把CAP的选择权交给了用户,让用户自己的选择你的CAP中的哪两个。 所谓NWR模型。N代表N个备份,W代表要写入至少W份才认为成功,R表示至少读取R个备份。配置的时候要求W+R > N。 因为W+R > N, 所以 R > N-W 这个是什么意思呢?就是读取的份数一定要比总备份数减去确保写成功的倍数的差值要大。也就是说,每次读取,都至少读取到一个最新的版...

2015-08-11 22:46:58 200

原创 Keyspace中的paxos [转载]

1. KeyspaceKeyspace是一款基于Paxos的开源Key-Value的数据库,底层存储基于BerkelyDB,Keyspace的核心功能是在 BerkelyDB之上添加了一致层,保证每个节点的数据完全一致。Keyspace基于Master-Slave模式,所有的写均有Master承担, 并通过paxos一致传播到slave,读可以根据基本路由到master或slave。因此,...

2015-07-29 22:41:42 34

原创 epoll使用详解[转载]

epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在lin...

2015-05-30 16:10:46 27

原创 正确地组织python项目的结构 [转载]

统一的项目结构写了不少python项目后, 越来越认识到Python项目结构重要性. 不管项目是否要开源, 是否要提交pypi, 项目结构的一致性带来的好处还有很多: 多人合作开发大家都有个基本的guideline, 别人日后维护也方便, 也容易形成项目开发的best practice.所以花了写时间, 仔细研究了github上python的 top 10 项目的结构, 项目结构还...

2015-05-24 23:10:31 391

原创 从汇编角度看C++模板

1. 模板函数                 模板函数定义的就是一种函数。既然是函数,那么就有输入数据和输出数据。和模板类的概念差不多,模板函数的初衷也是为了在函数操作上抽取共同的特性,屏蔽的是类型的不同和差异。        模板函数的反汇编示例:    #include <stdio.h>#include <stdlib.h>te...

2015-05-24 17:22:54 36

原创 从c面向对象的实现理解c++的对象(二)

1. 类就可以看作一个struct,类的方法,可以理解为通过函数指针的方式实现的,类对象分配内存时,只分配成员变量的,函数指针并不需要分配额外的内存保存地址。2. c++中类的构造函数,就是进行内存分配(malloc),调用构造函数3. c++中类的析构函数,就时回收内存(free)4. c++是基于栈和全局数据分配内存的,如果是一个方法内创建的对象,就直接在栈上分配内存了。专...

2015-05-24 16:33:03 48

翻译 c语言查询mysql示例

1.安装mysql-server,在Ubuntu 10.04下安装mysql-server-5.1,会自动安装mysql-client_5.1  sudo apt-get install mysql-server-5.12.C APIs包含在mysqlclient库文件中与MySQL的源代码一块发行,用于连接到数据库和执行数据库查询,因此需要安装libmysqlclient-dev  su...

2015-01-11 00:09:14 168

翻译 c中实现utf8和gbk的互转

#include <iconv.h>#include <stdlib.h>#include <stdio.h>#include <unistd.h>#include <fcntl.h>#include <string.h>#include <sys/stat.h>int code

2015-01-10 21:48:01 1465

原创 A tcpdump Tutorial and Primer[reproduced]

tcpdump is the premier network analysis tool for information security professionals. Having a solid grasp of this über-powerful application is mandatory for anyone desiring a thorough understanding o...

2014-12-24 22:29:07 123

原创 Spy on Yourself with tcpdump[转载]

As a network administrator, you've got to cultivate a certain amount of professional paranoia. tcpdump indulges your need to know and tells you exactly what's going on over your networks.By Carla ...

2014-12-24 20:13:08 34

翻译 从c面向对象的实现理解c++的对象(一)

1. 使用struct来保存数据2. 使用struct里面的函数指针指向相应的函数  #include <stdlib.h>#include <stdio.h>// 不完整的声明,方便后面函数指针类型变量的定义struct Person;typedef struct Person *PPerson;typedef void...

2014-12-18 22:50:21 145

原创 使用 GNU Libtool 创建库[转载]

介绍在不同的系统中建立动态链接库的方法有很大的差别,这主要是因为每个系统对动态链接库的看法和实现并不相同,以及编译器对动态链接库支持的选项也不太一样。对于开发人员,如果尝试将使用动态库的软件在这些系统之间移植,需要参考枯涩难懂的系统手册,以及修改相应的 Makefile,这一工作是乏味的,并且具有一定的难度。使用 GNU Libtool 可以容易的在不同的系统中建立动态链接库。它通过一...

2014-12-18 20:27:15 30

原创 gcc -D

gcc -D【gcc -D】-D name Predefine name as a macro, with definition 1.   通常debug和release版的区别就在于是否有DEBUG宏,DEBUG宏可以通过-D选项传递。如:-DDEBUG参考:  1、http://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/Prepr...

2014-12-15 23:42:17 56

原创 字符集编码与 C/C++ 源文件字符编译乱弹[转载]

最近在看国际化编程 (i18n: internationalization) 的东西,也弄清楚了点字符集有关的一些问题,其实网上的一些牛人已经将字符集、Unicode 等相关的问题说的很清楚了,我在这里引用他们的总结并自己小结一下心得,并且实验一下在编译时,源代码自身的字符集与编译生成工具之间的问题。locale与字符集locale,中文有时翻译成“现场”,还不如叫英文的locale...

2014-12-11 23:39:05 72

翻译 linux c时间操作相关函数

1. linux c的时间操作的函数关系图如下:  2. strftime时间格式化的说明如下: specifierReplaced byExample%aAbbreviated weekday name *Thu%AFull weekday name *Thursday%bAbbreviated month name *...

2014-12-11 23:00:03 35

翻译 c内存操作感悟(2)

不从分配的地址开始访问, 希望跳过一些字节, 怎么处理? 如下一段代码正确么(假设文件名为test.c)? #include <stdio.h>#include <stdlib.h>int main(void) { void *p = malloc(20); printf("%p\n", p); char *t = (char *...

2014-12-10 20:52:35 18

翻译 听吴军博士的"机器智能与未来世界"讲座的一点笔记

1. 摩尔定律(机器计算速度已经越来越快),  大数据(有了数据), 数学模型, 三者加在一起, 能起到质的变化 2. 大数据: 不仅仅是量大, 不仅仅是结构化与非结构化的区别, 需要多维度的数据(例如一个人的细胞, 数据量很大, 但是只是一个样本, 作用应该也不大), 数据越完备越好. 3. 未来机器智能的发展,  可能会2%的人控制98%的人. 4. 机器不会完全替...

2014-12-09 21:08:28 46

提示
确定要删除当前文章?
取消 删除