- 博客(9)
- 资源 (4)
- 收藏
- 关注
原创 为什么我们需要STM(Software Transactional Memory)
原文:http://morepypy.blogspot.com/2011/08/we-need-software-transactional-memory.html这是pypy开发者写的一篇blog,里面提到了Python,Java等多线程实现的情况,还有一个很有意思的东东:STM(Software Transactional Memory)。简单记录下一些心得和想法(很可能有不对的地方:
2012-07-30 19:02:33 7204 1
原创 详细解析boost中bind的实现
写在前面的话在C++11之后,std::bind是C++标准库的一个组件了。一开始想弄个C++11的实现来研究下,发现里面用到了可变参数模板(代码变得非常神奇).http://llvm.org/svn/llvm-project/libcxx/trunk/include/functional还是弄个原始点的boost的实现来研究下。话说网上关于boost::bind的实现的文
2012-07-26 01:41:52 15622 14
原创 C++ 中cout<<endl的实现
话说像下面的语句,应该大家都明白这是通过重载operator cout<<123;cout但是像cout是怎样实现的?起初猜想endl是一个class或者struct,再通过一个friend函数来实现的。但是翻下stl的实现,原来endl是一个函数!templateinline basic_ostream& endl(basic_ostream& __os) {
2012-07-22 22:36:35 7976
原创 Kryo简介及代码阅读笔记
更新:2012-08-01版本 2.16长时间运行可能会导致OOM,版本2.18有bug,不能正确序列化map和collection。真是悲剧,所用的每一个版本都有bug。不过从代码来看,作者有时的确比较随便。。测试用例也少。。(比起msgpack少多了)========================================Kryo官方网站:https://code.go...
2012-07-19 19:07:49 36392 1
原创 Redis中的双向链表的实现
不得不说,数据结构书上的代码都是不实际的。C语言的代码写得比较少,因此多记录下有用的代码。adlist.h:/* adlist.h - A generic doubly linked list implementation * * Copyright (c) 2006-2010, Salvatore Sanfilippo * All rights reserved. *
2012-07-15 23:45:34 1793
原创 测试Go语言的interface的效率
interface是Go语言中的一大特点,甚至说是灵魂也不为过。interface应该会在Go程序中大量出现和使用,因为有必要了解和测试下它的效率。测试思路:使用vector包,测试原生的IntVector和用interface包装后的vector的效率。Go1中去掉了vector包,不过当时我把vector的代码保留了一份,在代码库里应该也能找到。我找到了一个版本的:
2012-07-10 11:57:22 3784 3
原创 测试多线程对多核cpu的分支预测的影响
前言:现代的cpu都有流水线,分支预测功能,CPU的分支预测准确性可以达到98%以上,但是如果预测失败,则流水线失效,性能损失很严重。CPU使用的分支预测技术可以参考:处理器分支预测研究的历史和现状.pdf同时多线程处理器上的动态分支预测器设计方案研究.pdf正确地利用这些特性,可以写出高效的程序。比如在写if,else语句时,应当把大概率事件放到if语句中
2012-07-09 00:47:54 4643 3
原创 vitess中rpc兼容http请求的技巧
vitess是google的一个mysql项目,用go和python实现。https://code.google.com/p/vitess/vitess中用rpc方式来中转mysql的请求,其中rpc的实现很有意思,兼容了http请求。兼容http请求有明显的好处:1.可以用现成的监控工具来监控服务是否正常,不用另外写插件2.可以方便地实现查询信息功能,不用另外再开发工具或者界面
2012-07-08 00:17:53 2899
原创 Mysql Java驱动代码阅读笔记及JDBC规范笔记
一前言:以前刚开始用java连接mysql时,都是连猜带蒙的。比如:一个Statement,Connection何时关闭?Connection能不能先于Statement关闭?ResultSet是怎样存放数据的?怎样才能高效操纵ResultSet?PrepareStatement到底是怎样回事?连接池是怎样工作的?二、从JDBC driver代码分析:在
2012-07-06 15:32:11 4593 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人