自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 资源 (4)
  • 收藏
  • 关注

原创 java中无锁并发数组队列及其应用

在java中,无锁并发数据结构已经有一大堆了,例如,ConcurrentLinkedQueue、ConcurrentSkipListSet、ConcurrentSkipListMap、ConcurrentHashMap(ConcurrentHashMap实际上是有锁的,只是锁的粒度更小)等。但是在某个应用中,我需要一种无锁并发的数组容器,并且在容器生成时就指定容量,不需要动态扩展(以避免jvm

2013-11-02 17:31:37 3796 1

原创 KMP 字符串搜索算法的c++实现

说明:KMP 字符串搜索算法是基于自动状态机的高效搜索算法假如被搜索的字符串(长串)长度为 n, 要搜索的字符串(字串)长度为 m,则其空间复杂度为 O(m),时间复杂度为 O(n+m)由于该算法是基于自动状态机的,对于字符串分布在不同位置的时的处理较简单(某些公司面试题不是要在不连续内存中搜索字符串嘛,可以用kmp算法简单实现哦,不用考虑字符串拼接啊,中间复杂状态处理之类的)

2013-11-02 15:40:00 966

原创 跨平台中对于 条件量(condition) 的包装

说明:条件量(Condition)用于多线程同步,一个条件量常常与一个锁(windows下是临界区,linux下是pthread_mutex_t)同时使用跨平台宏(platform.hpp)的定义参见另一篇博文,当然截取代码实现时可以换成自己习惯的定义。跨平台中条件编译的使用使得其实现代码不是那么容易阅读,但是在使用这个包装类的时候就比较容易阅读了与条件量配合使用的锁类型 (跨平台代码

2013-11-02 14:49:01 913

原创 跨平台中对于 信号量(semaphore) 的包装

信号量,常用于线程间同步。说明:跨平台宏(platform.hpp)的定义参见另一篇博文,当然截取代码实现时可以换成自己习惯的定义。跨平台中条件编译的使用使得代码不是那么容易看,但是还好每个函数只有一两句话windows/VC下使用系统API实现,其他情况下使用 pthread 提供的自旋锁 pthread_spinlock_t/** * @file - * @au

2013-11-02 14:39:57 1176

原创 跨平台中对于 读写锁(rwlock) 的包装

读写锁(rwlock)的跨平台包装,支持以下平台: 操作系统linux、windows,编译器vc、gcc、mingw跨平台宏(platform.hpp)的定义参见另一篇博文,当然截取代码实现时可以换成自己习惯的定义。跨平台中条件编译的使用使得代码不是那么容易看,但是还好每个函数只有一两句话windows/VC下使用系统API实现,其他情况下使用 pthread 提供的自旋锁 pthr

2013-11-02 14:36:02 1106

原创 跨平台中对于 自旋锁(spinlock) 的包装

以下代码在跨平台环境下包装了用户态自选锁(spinlock),支持以下平台: 操作系统linux、windows,编译器vc、gcc、mingw说明:跨平台宏(platform.hpp)的定义参见另一篇博文,当然截取代码实现时可以换成自己习惯的定义。跨平台中条件编译的使用使得代码不是那么容易看,但是还好每个函数只有一两句话自旋锁比互斥量轻量一些,适合使用在轻量任务的多线程同步中,会

2013-11-02 14:25:13 1835

原创 跨平台中对于 互斥量(mutex) 的包装

以下代码在跨平台环境下包装了互斥量(mutex),支持以下平台 linux/windows,vc/gcc/mingw/** * @file - * @author jingqi * @date 2010-7-9 */#ifndef ___HEADFILE___814FCD2E_2F65_4787_93E5_ECDE19588938_#define ___HEADFILE___

2013-11-02 13:44:57 1860

原创 跨平台c/c++编码的预定义宏

c/c++中编写跨平台的代码时,难免需要根据不同的操作系统、编译器等准备不同的代码。首先,不同平台中编译器预定义宏的参考资料 点击这里其次,我本人仅关注以下平台:linux32/64-gcc, win32/64-vc, win32/64-mingw,这里给一个我自用的侦测上述平台的头文件/** * @file - * @author jingqi * @date 2011-1

2013-11-02 13:14:24 2372

原创 随机生成c/c++头文件保护符

由于c/c++头文件的include机制的关系,头文件中的头文件保护符必不可少。使用头文件保护符可以保护结构体、类、宏等在同一个.c/.cpp文件中不被重复定义。// new.h#ifndef __NEW__H_#define __NEW__H_....#endif每次写头文件时,取头文件保护符的名字是个很麻烦的事情。一般都会根据文件名取,但是有时候文件名有相同的,头文件保护符

2013-11-02 12:48:55 1391

原创 自旋锁小结

Linux内核自旋锁:Kernel中的自旋锁不能够在能够导致睡眠的环境中使用。举个例子,一个线程A获得了自旋锁L;这个时候,发生了中断,在对应的中断处理函数B中,也尝试获得自旋锁L,就会中断处理程序进行自旋。但是原先锁的持有者只有在中断处理程序结束后,采用机会释放自旋锁,从而导致死锁。Linux内核为读/写自旋锁提供了操作API函数初始化、测试和设置自旋锁。API函数功能说明如下:rw

2012-03-06 20:16:26 1571

原创 浮点数操作精度损失

众所周知,浮点数操作是有精度损失的。这里对精度损失的原因进行跟踪。废话少说,先上代码:import java.math.BigDecimal;public class Main { static void parseFloatDetails(float v) { int i = Float.floatToRawIntBits(v); int s

2012-03-06 18:30:25 4079

原创 多线程下各种单例singleton的实现对比

对比各种单例的实现,并从boost中摘出单例实现,略作修改。

2011-04-07 11:47:00 996

原创 关于检错、断言和容错性

  看下面一段代码int strlen (const char *str){ int ret = 0; while (0 != str[ret]) { ++ret; } return ret;}     首先,没有考虑 str==NULL 的情况,不能在调试的时候检测并定位错误。改为int strlen (co

2010-03-13 12:20:00 586

原创 关于编译和运行过程中的字符编码转换的猜测

 (1)源代码编码方式  ---> (2)编译器处理的编码方式 ---> (3)目标程序中的字符串编码方式 --> (4)控制台等运行环境编码方式   (1) 源文件编码方式无所谓,只要编译器认得就行;所以可以使用各种编码格式。(2) 编译器编译源文件之前,先将源文件转为统一的编码方式(毕竟编译器不可能为每种源文件编码方式都准备一套处理逻辑;另外,windows核心运行的是

2010-02-24 19:59:00 543

人工智能(中文版) 机械工业出版社

机械工业出版社,大理石封面。非常好和专业的人工智能入门教材。扫描版

2013-11-02

c++语言参考(中文) chm

c++语言参考(中文).chm 方便平时快速索引和查找。 包括预处理命令、转义字符、ascii表、I/O,STL标准模板库,c标准函数等

2013-11-02

24小时学通QT编程-中文PDF扫描版

本书以流行的Qt库为对象,从程序设计角度全面介绍Linux/UNIX下基于Qt的图形界面程序开发方法。全书共分5部分:第一部分—— Qt基础知识,介绍 Qt基本知识、面向对象程序设计、槽和信号、Qt构造块等内容。第二部分——重要的Qt部件,介绍常用Qt部件使用方法,以及怎样绘制图形和创建对话框等。第三部分——深入学习 Qt,介绍布局管理器、文件和目录、文本和常规表达式、容器类、图形、程序间通信等内容。第四部分——Qt编程技巧,介绍怎样编写KDE应用程序、使用 OpenGL类绘图和创建Netscape插件等。第五部分——改善程序性能,介绍Qt程序的国际化、移植、调试等问题,以及怎样使用构造程序简单快捷地创建图形界面。附录部分给出了每章测验题答案和常用的Qt类描述。全书分为24个学时,每一学时内容均以前一学时为基础。 全书循序渐进,内容难度适中,实用性和操作性强,适用于Linux/UNIX和Microsoft Windows下的GUI程序开发人员学习使用。

2010-01-09

STL源码剖析-简体中文PDF

《STL源码剖析》 PDF 简体中文 扫描版本 这本书不适合C++ 初学者,不适合 Genericity(泛型技术)初学者,或 STL 初学者。这本书也不适合带领你学习面向对象(Object Oriented)技术 — 是的,STL 与面向对象没有太多关连。本书前言清楚说明了书籍的定位和合适的读者,以及各类基础读物。如果你的Generic Programming/STL实力足以阅读本书所呈现的源码,那么,恭喜,你踏上了基度山岛,这儿有一座大宝库等着你。源码之前了无秘密,你将看到 vector的实现、list的实现、heap的实现、deque的实现、RB-tree的实现、hash-table的实现、set/map 的实现;你将看到各种算法(排序、搜寻、排列组合、数据移动与复制…)的实现;你甚至将看到底层的memory pool 和高阶抽象的traits 机制的实现。那些数据结构、那些算法、那些重要观念、那些编程实务中最重要最根本的珍宝,那些蜇伏已久彷佛已经还给老师的记忆,将重新在你的脑中闪闪发光。

2010-01-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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