- 浏览: 82621 次
- 性别:
- 来自: 北京
最新评论
-
lazy_:
怎么感觉看起来像ReadWriteLock?
多线程下的一种编程模式 -
splayx:
方世玉 写道自旋锁,用于读远大于写的并发场景很合适,参考JDK ...
多线程下的一种编程模式 -
方世玉:
自旋锁,用于读远大于写的并发场景很合适,参考JDK内部的CAS ...
多线程下的一种编程模式 -
teasp:
你这个是类似轻量级锁的办法,对于写少读多的情况确实很合适。也可 ...
多线程下的一种编程模式
文章列表
linux磁盘IO测试
- 博客分类:
- linux
man 2 fsync知fsync会真正把文件的数据写回磁盘,
但是在3.2的kernal上测试发现fsync最好集中一次做掉,
可能fsync执行过程不会判断每个块是否正在修改,都去刷盘。(有待确认)
const int SIZE = 1 << 24;
char buf[SIZE];
...
C++动态链接库运行时找不到怎么办
- 博客分类:
- linux
C++在编译时,可以指定动态库的路径,但是运行的时候,
或者从一台机器拷到另一台的时候,它需要从系统的配置目录中寻找对应的动态库,
有可能系统的默认的目录只是/usr/lib64/,但是你的放在/usr/local/lib中,
比如有个libease.so放在了/usr/local/lib中,用ldd查看
ldd a.out
linux-vdso.so.1 => (0x00007fffebdff000)
libease.so => not found
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstd ...
如果没装JDK先装个。。
apt-get install openjdk-7-jdk
在/etc/environment中加上
JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/
CLASS_PATH=/usr/lib/jvm/java-7-openjdk-amd64/lib
创建hadoop用户及其用户组
root@mydev:~# sudo addgroup hadoop
正在添加组"hadoop" (GID 1002)...
完成 ...
bashrc,profile等文件的执行时机
- 博客分类:
- linux
在/etc,/home/username目录的bashrc,profile文件加上以下代码,
echo `date` >> /home/zhennn/priority
echo "/home/zhennn/.bashrc" >> /home/zhennn/priority
echo >> /home/zhennn/priority
观察一下它们的执行顺序。
做两个操作1 ...
见html中的一些奇怪的编码
http://www.w3school.com.cn/tags/html_ref_symbols.html
例如以下这么一串东西就是实体编码
小何很好啊!
如果一个html文本想把它去除html的tag,然后又把它转为系统可识别的编码(例如utf8)
以下python代码把它转为unicode,然后想转什么都可以了。
from HTMLParser import HTMLParser
def strip_ ...
ICE3.5.0源码安装
- 博客分类:
- ICE
在这里下载http://www.zeroc.com/download.html
1、ice源码包
http://www.zeroc.com/download/Ice/3.5/Ice-3.5.0.tar.gz
2、第三方依赖库
http://www.zeroc.com/download/Ice/3.5/ThirdParty-Sources-3.5.0.tar.gz
root@mydev:/opt/ThirdParty-Sources-3.5.0# patch -v
patch 2.6.1
....
...
scala实现actor间同步和异步的信息传输
- 博客分类:
- 其他
actor是scala一个比较好用的库,使并发编程更加便捷。
package actor_test
import scala.actors.Actor
import scala.actors.Actor._
// define a message
class FromXX(msg:String, idx:Int) {
val msg_ = msg
val idx_ = idx
}
object Stop
class XX(var count: Int, yy: Actor) extends Actor {
def act() {
...
使用python的建议
- 博客分类:
- python
本帖持续更新:
1、避免使用__del__
http://stackoverflow.com/questions/6104535/i-dont-understand-this-python-del-behaviour
2、在局部使用全局变量时使用global
python在运行函数的时候,首先会静态地扫一遍,
把所有变量(静态、没赋予实际的值)放入局部变量列表中,导致前面的引用失败。例如
bar = 1
def foo():
print bar
bar = 0
3、不要用可变的值作为参数默认值,可以用None代替
因为可变的值会在定义的时候初 ...
使用linux shell命令时小心转义符号
- 博客分类:
- linux
shell命令1
grep " " /tmp/1
这个命令比较简单,就是把/tmp/1文件中包含空格的行列出来。
如果我们想先ssh到某台机器上再运行这个shell命令1,
你也许会尝试:
ssh 127.0.0.1 grep " " /tmp/1
但是很快你会发现行不通。
因为ssh拿到的“ ”之后,两个引号就消失了,
然后传递给grep运行的时候,直接就是一个空格,也就相当于没有参数了。
正确的写法应该是将两个需要传给grep的引号用附上转义符,如下
shell命令2
ssh 127.0.0.1 grep &q ...
my.cnf是mysql启动时的配置文件
有些参数是运行时只读的,例如innodb_buffer_pool_size,
这些参数只能运行之前在配置文件修改,或者启动时带上参数
例如service mysql --innodb_buffer_pool_size=1G
有些参数是运行时可以修改的,例如max_allowed_packet,
这些参数可以再运行时修改,例如
mysql -uroot mysql
修改:
set global max_allowed_packet = 1024*1024*20;
查看:
show VARIABLES like '% ...
python的decorator@
- 博客分类:
- python
decorator是python的一个特性。
decorator可以是函数也可以是一个类。
decorator@的用处:
1)在函数开始前做一些初始工作,例如参数校验,调用统计等。
2)在函数结束后做一些收尾工作。
3)类似C++模板的功能。
decorator ...
管道有自己的一套文件系统,它不映射到磁盘,而只是存在内存里。
每个一个管道都有一个缓冲空间,大小因系统而异。
ulimit -a | grep pipe
pipe size (512 bytes, -p) 8
管道的读写支持block特性。
pipe的阻塞可以通过int fcntl(int fd, int cmd, ... /* arg */ )修改
匿名管道pipe
用于有公共祖先的进程间的通信
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h ...
yield可以用来实现generator
next()和send(msg)的返回值是yield的参数。
send(msg)的时候msg就作为对应yield返回值,
例如t = yield 22,t就为msg。
self.throw(GeneratorExit)
人工终止generator
is和==的区别
python中每个对象有3个属性id、type、value
is是id(对象的唯一标识,引用机制)的比较
==是value的比较
pass
没有啥都没有,用这个是为了代码美观、统一
with obj as f:
do s ...
vim[转载][整合]
- 博客分类:
- 工具
块编译
ctrl +v,选择,大写I,编辑,Esc
按ctrl + w,然后按
v/h 分屏
方向键表示分屏中的移动
:set noic
:set ic
临时设置大小写是否敏感
———————————————————————————————————————————————
一、使用正则表达式的命令
使用正则表达式的命令最常见的就是 / (搜索)命令。其格式如下:
/正则表达式
另一个很有用的命令就是 :s(替换)命令,将第一个//之间的正则表达式替换成第二个//之间的字符串。
:s/正则表达式/替换字符串/选项
在学习正则表达式时可以利用 / 命令来练习。
...
vim编码问题
见vim源码的介绍
* clipboard
* ^
* | (2)
* V
* +---------------+
* (1) | | (3)