Common Cloud介绍视频
分类存档: 未分类
同学会之后
老同学聚会,这里的老同学都是十年以上的,甚至是世交。感情深,一口闷。闷完后,我发现自己酒量越来越不济了。意识恍惚不是因为酒精,而是因为心灵决定不再禁锢情感。于是玩了一个下午,最后送一个邻居回家,聊了很多。
她在广州最好的大学学医。和我们大家都分开了,很孤独。两年时间足够结交新的朋友,有什么好孤独的呢?不过现在我理解了。她不断地抱怨医学学习就是大规模的死记硬背,她难以忍受,但又不得不面对,因为她想考研,离开那个地方。想起来,我高中时也是三句话不离抱怨班主任,人在长期压抑的时候,总会受不了。熬过了这两年,就好了。
她不喜欢的是华而不实的人,只会说漂亮话的人。我妈妈也是,最近,我妈妈从山东人那儿买了一袋花生米,天天对山东人赞不绝口:“这花生,粒大,又便宜。浙江人卖的那些东西(小商品),全是假货。”。我爷爷,一天不做东西就浑身痒痒,还经常说我四体不勤。长期和广州人相处,她厌恶极了那里人的唯利是图,耍小聪明。我突然发现自己正逐渐成为她厌恶的对象,幸好她还没有发觉。
长期参加比赛性质的项目,华而不实成立获胜的必要条件。我想加工加工,指导老师告诉我,“这只是个原型,没有加工的必要”。结果是最重要的,产品不是目的,这的确是对的。以后我还要这样做,但是,我怎么能这样!腐败或许还没来得及污染卖花生的山东大汉,但是已经在侵蚀我了。想来想去,功利不是错,但决不能懒惰,我没能加工那个组件,是因为时间不够,不是偷懒,或许这样她就不会鄙视我。
NoSQL数据库笔谈v0.1
日前国内没有一套比较完整的NoSQL数据库资料,有很多先驱整理发表了很多,但不是很系统。不材尝试着将各家的资料整合一下,并书写了一些自己的见解。
本书写了一些目前的NoSql的一些主要技术,算法和思想。同时列举了大量的现有的数据库实例。读完全篇,相信读者会对NoSQL数据库了解个大概。
另外我还准备开发一个开源内存数据库galaxydb.本书也是为这个数据库提供一些架构资料。
現在更新至v0.2版:http://www.yankay.com/nosql%E6%95%B0%E6%8D%AE%E5%BA%93%E7%AC%94%E8%B0%88v0-2/
目录:
Google Reader 大爆炸
得益于Google Buzz的隐私保护问题,我Follow了大量的人,数以百计,人山人海。从人山人海中,我挖出了一些牛人,他们的知识和分享是我在受益匪浅。
于是Google Reader 大爆炸,每天涌入千万条信息,原先的阅读方式已经不再适用,虽然采取了过滤措施,和魔术排序,还是不行。看来我得滤掉一些人了。
于是我发现了一些关于Google Reader交友的规律。
输出型用户:
牛人,比方说我所崇敬的 Dahui Feng 之属。他的Following数是494,而有1611人在Follow他。可以看的出来他在非常积极的获取资料,同是他输出的资料质量很好,非常受欢迎。阅读量极大的大多数很牛的人,发现他们的博客和博友是莫大的乐趣啊。
推荐Dahui Feng ,云风…And their friends.他们的资料很高质量,而且他们的圈子也不错。
华丽的小牛。比方说我所喜爱的bang590之属。Follow39被180Follow。Follow数少一是说明其人际网较小,二是说明他的阅读探索的欲望没有膨胀开。他们的Follower如此几倍多于被Follow数,可见其非常受欢迎。他们大多是设计师的角色,美感好,善于推广自己。贡献的资料也很不错。但是境界有限,离大牛还有时间差。
公司管理层。这类人基本被我过滤的差不多了,找不到例子了。他们不会提供资料,Follow人也很少,但却有一大堆人Follow.我很难解释原因,只好归为公司管理层。
输入型用户:
过渡用户,比如我,Follow三百余人,被79人Follow。别人Follow我大多是因为我Follow了他。所以只是从非活跃用户过渡而已。资料很多很杂。
低调用户,订阅和阅读数巨大,但没有分享和贡献。但他们的订阅圈还是很有价值的。
对等型用户:
非活跃用户,比如xucheng,Follow8人,被10人Follow。它属于非活跃用户。只是读一读Rss,没有理由Google friend connect.他们一般不会输出很多资料
小圈子式用户,大部分人都是如此,Foollow50人左右,被50人Follow.可见他们只是在一个比较稳定的圈子里面交流。这类人的资料一般质量尚可,但也不会很高端。其圈子越大,水平越高。
NoSQL数据库知识图
我的数据库知识图
1. CAP
1.1 一致性
参见: 一致性哈希分布
1.1.1 ACID
1.2 可用性
1.3 分布式
参见: 一致性哈希分布
1.3.1 反模式
1.3.2 多IDC的数据分布设计
1.4 原理
2. 存储方式
2.1 列存
从内存中读取效率很高,但是从磁盘中读取(假设行式数据库的索引在内存中)比行式数据库要慢(开始在Twitter上说比行式快是程序写错了)
2.1.1 wiki
2.1.2 info
含代码
2.1.3 Oracle Exadata
3. 系统监控
3.1 Ganglia
3.2 Twitter系统运维经验
4. Cache
4.1 关于 I/O 的五分钟法则
4.2 Amdahl定律
5. BASE思想
5.1 key-value存储
可根据CAP三原则灵活选择不同倾向的数据库产品
5.1.1 Cassandra
很有研究价值
5.1.2 Memcached
使用预申请和分组的方式管理内存空间,而并不是每次需要写入数据的时候去malloc
5.1.2.1 memcached全面剖析
能了解很多细节
5.1.2.2 利用memcached
5.1.3 CouchDB
CouchDB一种半结构化面向文档的分布式,高容错的数据库系统,其提供RESTFul HTTP/JSON接口。其拥有MVCC特性,用户可以通过自定义Map/Reduce函数生成对应的View。
5.1.4 Amaze Dynamo
5.1.5 beansdb
一个简化版的Dynamo
5.1.6 Tokyo Cabinet
5.1.7 Nuclear
5.1.7.1 功能应用篇
5.1.7.2 原理展望
5.1.8 memcachedb
5.1.8.1 memcachedb的性能测试
5.1.9 dbcached
5.1.10 对比数据
5.1.11 PNUTS
5.1.12 Voldemort
5.2 NoSQL方案
5.2.1 优点
5.2.2 评价
5.2.3 重要资料
5.3 大表
参见: 云计算
5.3.1 BigTale
5.3.2 Hbase
5.3.3 SimpleDB
5.3.4 HadoopDB
5.3.5 GreenPlum
附1. 一致性哈希分布
附2. 云计算
参见: 大表
附2.1 云计算五层架构
十八岁的韩寒就这么帅
面对央视的集体围攻,韩寒生气了。
其眼神堪比刀客,在意识上击败的在场所有人。
十年之后的黄思路,竟然嫁给了一个美国老头。
时间证明了一切,再看看当时的言论颇为有趣。
想想自己,自惭形秽啊。
无题
kaiyannju.cn已经作废,更新至yankay.com
最近.cn域名一会一元抢注,一会不许个人用户注册,一会必须备案。
我条件不符合,没办法再持有伟大的.cn域名了。
所以对不起各位博友,我更换的域名。现在域名是http://yankay.com
如果您订阅了本博客,请将订阅地址更新至http://yankay.com/feed。
江苏杯
本来以为告一段落了,没想到机会一个接一个,竟然还有个江苏杯。就这么退出大学时间的比赛太可惜了,这次一定要画上一笔。拼命阅读文献,寻找灵感。
JPA2初试
JPA是Java Persistence API的简称。JPA通过注解描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。可以JPA1.0是Java5的标准,JPA2.0是Java6的标准。JPA2.0在2009-12-10正式发布,他只是标准,所以只有接口没有实现。目前,感觉比较正规的实现是EclipseLink,Hibernate即将支持。
JPA1.0简直是玩具,简洁是很简洁,但是功能实在有点少,看了JPA2.0的改进你就知道了,我想要的他都有了。
JPA2.0的改进:
- 支持通过使用 @ElementCollection 标注来增强 collections, maps 和 lists( 这里不是指实体之间的关联关系 ) 集合,支持 map 的单向 one-to-many 关联 (JPA1.0 只允许双向 one-to-many 关联 )
- 增加了 Criteria API
- 增加二级缓存支持
这是我认为最有用的三个。
废话不说了,看具体的,我是用还没有正式发布的Hibernate3.5实现的。有Maven构建的。下载
先看看测试:
public class UserDaoTest extends TestCaseBase {
@Resource
private UserDao userDao;
public void testPost() {
User user = new User();
user.setUsername("ir");
user.setPassword("ir");
List roles = new ArrayList();
roles.add(User.ROLE_STUDENT);
roles.add(User.ROLE_TEACHER);
user.setRoles(roles);
userDao.post(user);
}
@Test
public void testGet() throws Exception {
testPost();// 存储一个名叫"ir"的用户
User user = userDao.get("ir");// 取出一个名叫"ir"的用户
log.debug(BeanUtils.describe(user));
/**
* 结果为:{id=1, username=ir, roles=ROLE_STUDENT, class=class
* org.jerrymouse.User, password=ir}
*/
log.debug(user.getRoles());// 结果为:[ROLE_STUDENT, ROLE_TEACHER]
}
}
里面只有一个用例testGet,一存一取,一看就明白。那个User和UserDao是怎么回事呢?
@Entity
public class User implements CopyAble {
public static String ROLE_STUDENT = "ROLE_STUDENT";
public static String ROLE_TEACHER = "ROLE_TEACHER";
@Id
@Column(nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;//主键
private String password;
@ElementCollection(fetch = FetchType.EAGER)
private List roles;//一对多集合
@Column(unique = true)
private String username;
//get and set
}
如果是JPA1.0必须再写一个Role类。
@Component
public class UserDao extends DatabaseSupport {
private static Log log = LogFactory.getLog(UserDao.class);
public User get(String username) {
User user = null;
EntityManager em = null;
try {
em = getEntityManager();
/**
* 构造一个Query
*/
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery query = cb.createQuery(User.class);
Root emp = query.from(User.class);
query = query.select(emp).where(
cb.equal(emp.get("username"), username));
/**
* 运行之
*/
user = em.createQuery(query).getSingleResult();
} catch (NoResultException e) {
return null;
} finally {
em.close();
}
return user;
}
@Override
public Class getType() {
return User.class;
}
终于可以不写一行SQL就能实现数据库查询了,这一点看似寻常其实很重要,它可以在重构时大大减少错误的数量。
JPA2.0的Criteria功能远远不限于此,文档中有介绍。
对了,推荐一本非常好的JPA读物