- 浏览: 82973 次
- 性别:
- 来自: 北京
最新评论
-
lazy_:
怎么感觉看起来像ReadWriteLock?
多线程下的一种编程模式 -
splayx:
方世玉 写道自旋锁,用于读远大于写的并发场景很合适,参考JDK ...
多线程下的一种编程模式 -
方世玉:
自旋锁,用于读远大于写的并发场景很合适,参考JDK内部的CAS ...
多线程下的一种编程模式 -
teasp:
你这个是类似轻量级锁的办法,对于写少读多的情况确实很合适。也可 ...
多线程下的一种编程模式
文章列表
errno
http://epydoc.sourceforge.net/stdlib/errno-module.html
graphviz
http://www.graphviz.org/doc/info/shapes.html#record
#include <execinfo.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
const int STACK_BUF_SIZE = 100;
void *stack_buf[STACK_BUF_SIZE];
void func3(void) {
int k;
int n = backtrace(stack_buf, STACK_BUF_SIZE);
printf("%d addresses has ret ...
使用
Crayon Syntax Highlighter插件
<pre>粘贴code在这里</pre>
数据库备份和恢复
mysqldump -u root -p mytest > mytest.sql
mysql -u root -p mytest < mytest.sql
删掉关于标题,在twentytwelve/content-page.php中,删掉一下代码
<header class="entry-header">
<?php if ( ! is_page_template( ...
1、给特定的TCP设置特定的缓冲区大小,例如前端接入设1K,跟后端交互的可以设大点64K。
当设置TCP套接口接收缓冲区的大小时,函数调用顺序是很重要的,因为TCP的窗口规模选项是在建立连接时用SYN与对方互换得到的。对于客户,SO_RCVBUF选项必须在connect之前设置;对于服务器,SO_RCVBUF选项必须在listen前设置。
volatile使用
- 博客分类:
- C++
volatile可以限制编译器对变量的访问做优化,
使得不利用CPU的缓存(寄存器),而到主内存中获得。
关于volatile的使用建议参考:
http://yarchive.net/comp/linux/ACCESS_ONCE.html
对于线程间共享的变量,如果没有lock保护,而且有可能改变的,
都用ACCESS_ONCE(volatile)保护起来吧,
#define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x))
以免编译器做优化,导致多线程情况下出错。
编译器优化只是保证单线程下是绝对正确的。例如上面url给 ...
首先要写一个spec文件:
Name: rfus
Summary: Resumable File Upload Service
Version: 1.0.0
Release: linux
Buildarch: x86_64
Buildroot: %{_topdir}/BUILDROOT/%{name}-%{version}-%{release}.%{buildarch}
License: GPL v2
Group: Applications/Server
...
去除可执行属性
svn propdel svn:executable on rfus_md5.c
#拉分支,注意客户端和服务端的svn版本有差异,可能导致操作不成功
#拉发布分支,考虑到发布不顺利时可以比较好地排除。
svn copy \
http://svn.. \
http://svn../branches/feature -m "free"
查看版本145190和当前最新修改(未提交)的差异
svn diff -r 145190 /home/tanqing.zjj/code/uss_app_trunk/Servers/AliDDB/ ...
ifstat查看网络流量
- 博客分类:
- linux
相关参数-l 监测环路网络接口(lo)。缺省情况下,ifstat监测活动的所有非环路网络接口。经使用发现,加上-l参数能监测所有的网络接口的信息,而不是只监测 lo的接口信息,也就是说,加上-l参数比不加-l参数会多一个lo接口的状态信息。-a 监测能检测到的所有网络接口的状态信息。使用发现,比加上-l参数还多一个plip0的接口信息,搜索一下发现这是并口(网络设备中有一 个叫PLIP (Parallel Line Internet Protocol). 它提供了并口...)-z 隐藏流量是无的接口,例如那些接口虽然启动了但是未用的-i 指定要监测的接口,后面跟网络接口名
./configure --add-module=/path/to/module --without-http_rewrite_module --with-http_stub_status_module
./objs/nginx -p /nginx-1.4.4 -c /nginx-1.4.4/conf/nginx.conf
sizeof和数组类型
- 博客分类:
- C++
sizeof(类型)可以得到一个类型的大小,
比较容易搞错的是把数组类型看成指针类型,见下面的代码:
#include <stdio.h>
// error: cannot convert
// ‘char*’ to ‘int*’ for argument ‘1’ to ‘void fun(int*)’
// 可见a被看成指针,而不是一个数组类型
// 所以这里怎么都是打印出指针类型的大小
// void fun(int a[10]) {
// printf("%d\n", sizeof(a));
// }
void fu ...
pprof是分析google cpu profiler输出文件的工具,
但在使用之前需要做些准备工作
1、安装graphviz(提供dot工具)
2、安装gv(http://www.gnu.org/software/gv/)
下载gv源码后,需要做一下准备
安装Xaw3d库
yum install Xaw3d
libXaw3d*放在:/usr/X11R6/lib
安装头文件
yum install Xaw3d-devel.x86_64
然后就可以./configure然后安装了。
google cpu profiler只有gproftools中的一个工 ...
1、lsof使用
lsof -p <pid>
lsof -i:port查看端口port被哪些程序占用了
2、在类Unix系统中,/dev/null,或称空设备,是一个特殊的设备文件,它丢弃一切写入其中的 ... 在程序员行话,尤其是Unix行话中, /dev/null 被称为bit bucket ...
python的list和tuple
- 博客分类:
- python
列表是python中简单而重要的数据结构
list_sample = [1, 2, 3]
超预分配的量大概只有总量的八分之一,保证不太浪费的情况下,也有线性的摊分复杂度。
new_allocated = (newsize >> 3) + (newsize < 9 ? 3 : 6)
当增加或删除都有可能引起allocated的变化,当目前的allocated满足
allocated >= newsize && newsize >= (allocated >> 1)
这个关系时,allocated不变,不然更新分配 ...
无锁队列一(简单实现)
- 博客分类:
- C++
没多少行代码,先给出最终实现:
template<typename T>
class CAS {
private:
T *pt_; ...