自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 资源 (2)
  • 收藏
  • 关注

原创 Redis基础数据结构

最近在整理Redis相关的基础数据结构,感谢http://zhangtielei.com/posts/blog-redis-dict.html博客上的分享,基于博主整理了一下思维导图,方便需要的同学参考~

2018-08-26 17:53:26 696

原创 Hiredis源码阅读(二)

Hiredis源码解析上一篇介绍了Hiredis中的同步api以及回复解析api,这里紧接着介绍异步api。异步api需要与事件库(libevent、libev、ae一起工作)。1、异步上下文在同步api中,介绍了一个上下文结构redisContext,异步api也有一个类似的上下文结构redisAsyncContext,用于维护异步连接中的各种状态。源码如下所示:typedef struct r...

2018-06-06 11:17:51 877

原创 Hiredis源码阅读(一)

Hiredis源码解析Hiredis库主要包含三类API:同步api、异步api以及回复解析api。首先介绍一下同步api以及回复解析api。1、同步api1.1、建立tcp连接函数原型:redisContext *redisConnect(const char *ip, int port);redisConnect函数用来创建一个上下文结构redisContext,并向reids服务器发起连接请...

2018-06-05 14:00:19 1379

原创 JNI基础知识学习汇总

JNI介绍JNI(Java Native Interface),也就是java本地接口,主要是用来支持和本地代码之间的互动-在Java程序中调用native code或者在native code中潜入Java虚拟机调用Java代码。

2017-01-08 11:04:42 733

原创 C++调用Python

1、Python嵌入程序介绍为什么要使用Python嵌入程序Python作为一门流行通用的脚本语言,可以很好的和C/C++程序结合在一起。

2016-12-17 19:33:27 1286

原创 Python多进程、多线程、协程学习小结

Python多进程、多线程、协程学习小结

2016-11-30 22:02:53 2217

原创 Linux常用shell语法和命令

Linux常用shell语法和命令

2016-11-20 23:47:58 4108 1

原创 GDB多线程多进程调试

gdb多线程调试gdb提供的多线程调试工具新线程创建自动提醒thread thread-id实现不同线程之间的切换info threads查询存在的线程thread apply [thread-id-list] [all] args在一系列线程上执行命令线程中设置指定的断点set print thread-events控制打印线程启动或结束是的信息set scheduler-locki

2016-11-20 23:44:32 1251

原创 Zookeeper C API学习总结

Zookeeper C API客户端使用C语言开发,zookeeper提供了两个库,zookeeper_st(单线程库)以及zookeeper_mt(多线程库)。zookeeper_st提供了异步API和集成在应用程序用来实现事件循环的回调函数,该库是为了支持pthread库不支持或是不稳定的系统而存在。使用过程中需要通过zoo_interest以及zoo_process实现事件处理以及通知机制。

2016-11-20 23:40:26 7529 2

原创 Ad-hoc类型同步识别

尽管之前的我们提出的动态数据竞争验证和检测方法能够比较精确地找到数据竞争,但是该方法还是会存在一部分误检,误检主要就是由于ad-hoc类型的同步引起的

2016-06-25 19:13:39 1046

原创 并行化的动态数据竞争验证和检测方法

上一篇文章提到的动态数据竞争验证和检测方法是结合了验证和检测两部分。这篇文章主要介绍一下并行化的动态数据竞争验证和检测方法。

2016-06-25 19:09:32 1152

原创 构建动态数据竞争检测平台

之前的文章分别介绍了基于Lockset算法、基于happens-before关系以及基于两者混合的方法。对于这些方法,已有的一些论文中提到的有关实验对比可能都比较片面或是不太客观,因此实现这些方法做一个比较全面的实验对比分析是很有必要的,不仅可以对这些已有的方法有一个更深入的理解,同时也能够发现他们存在的一些共性问题,方便后续的研究。

2016-06-25 19:03:11 841

原创 动态数据竞争验证和检测方法

之前提到的动态数据竞争验证方法尽管相比RaceFuzzer提高了验证的效率,但是仍然存在一个比较致命的问题就是执行程序一次只能够验证很少的一部分数据竞争。

2016-06-25 18:57:19 856 2

原创 动态数据竞争验证方法(二)

之前提到的动态数据竞争检测方法RaceFuzzer尽管能够在程序执行过程中增大数据竞争条件产生的可能性,但是该方法执行的效率不高。这篇文章主要介绍我们改进之后的动态数据竞争验证方法

2016-06-25 18:52:52 621

原创 动态数据竞争验证方法(一)

之前的文章分析动态数据竞争检测相关的方法。这篇文章主要介绍一下动态数据竞争验证方法。 动态数据竞争检测算法可以在不知道程序中是否存在数据竞争前提下执行,而动态数据竞争验证方法则是在知道程序中可能存在的数据竞争前提下,对这部分可疑的数据竞争进行验证,看这些数据竞争是否真的发生,同时也可以验证这些数据竞争是否对程序造成有害的影响。

2016-06-25 18:50:10 836

原创 静态数据竞争检测工具之RELAY-安装和使用

RELAY同样也是基于中间语言编写的静态数据竞争检测工具 安装RELAY之前确保Ocaml安装完毕,可参考之前的文章 http://blog.csdn.net/yangzhen92/article/details/46980511

2016-06-25 18:45:22 1322 5

原创 动态数据竞争检测方法实验分析(二)

上一篇文章主要分析了各个检测方法在检测能力上的优劣。这篇文章主要分析一下各个检测方法对程序造成的影响以及可扩展性。我们挑选了比较常用的SPLASH-2测试集程序用来测试这些动态数据竞争检测方法在程序运行过程中需要消耗的执行时间以及内存。

2016-06-03 15:30:49 867

原创 动态数据竞争检测方法实验分析(一)

之前的文章大致介绍了一下我们的动态数据竞争检测平台如何构建,这篇文章主要是在动态数据竞争检测平台上实现了之前介绍的数据竞争检测方法,我们扩展了其中的一些方法使得这些方法能够识别所有的Pthread库中的同步原语。

2016-06-03 13:34:52 2524 4

原创 基于Lockset和Happens-before的数据竞争方法汇总

之前的文章介绍都是单独使用lockset或是单独使用happens-before关系进行动态数据竞争检测的方法。单纯使用lockset算法,由于不考虑其他的一些同步原语,会导致很多的误报,但是该方法对线程交错不太敏感。单纯使用happens-before关系,该方法对线程交错比较敏感,因此会导致出现很多漏报。因此结合lockset算法和happens-before关系的混合(hybrid)算法由此而生。

2016-06-02 16:58:32 2155

原创 基于Happens-before的数据竞争方法汇总 (二)

上一篇文章我们谈到了Happens-before方法中最基础的方法Djit+,Djit+使用向量时钟VC进行数据竞争分析。下面这篇文章介绍的是FastTrack算法,在Djit+基础上进行的改进,将Djit+的时间复杂度从O(n)降到接近于O(1)。首次看的同学还是建议先看我之前写的有关介绍Djit+的相关基础内容。

2016-01-26 12:44:11 1503

原创 基于Happens-before的数据竞争方法汇总 (三)

在上一篇文章中提到了基于happens-before关系的FastTrack动态数据竞争检测方法,这篇文章中介绍的Loft方法是在FastTrack方法上进行了进一步地改进。

2016-01-26 09:57:20 1187

原创 静态数据竞争检测工具之LOCKSMITH-安装和使用

静态数据竞争检测工具 LOCKSMITH

2015-07-21 09:37:50 1160

转载 Volatile的陷阱

对于volatile关键字,大部分的C语言教材都是一笔带过,并没有做太过深入的分析,所以这里简单整理了一些关于volatile的使用注意事项。实际上从语法上来看volatile和const是一样的,但是如果const用错,几乎不会有什么问题;而volatile用错,后果可能很严重。所以在volatile的使用上,建议大家还是尽量求稳,少用一些没有切实把握的技巧。注意volatile修饰

2015-06-29 20:50:10 3152 1

原创 Redis源码阅读之ae.c

1、需要处理的事件类型和结构这里包括文件处理事件、时间处理事件、事件终结处理事件、挂起之前处理事件 文件事件结构时间事件结构触发的事件结构事件驱动程序的状态 2、原型函数创建文件事件这里aeApi*这些函数都是具体多路复用模块提供的删除文件事件获取事件当前时间这里精确到秒和毫秒创建时间事

2015-05-09 13:17:11 774

原创 Redis源码阅读之aof.c

1、AOF缓冲区实现添加缓冲区块如果之前缓冲区链表中的最后一个block没有用完,那么先使用完,如果不够,在创建新的block添加到链表尾,为后续的写做准备输出缓冲迭代缓冲区链表,写到文件2、AOF重写 冲洗AOF文件:void flushAppendOnlyFile(int force)设置aof同步为AOF_FSYNC_EVENTSEC服务器

2015-05-08 21:36:06 1134

原创 Redis源码阅读之rdb.c

RDB文件结构 1、如何保存长度rdbSaveLen函数说明了RDB文件中如何保存长度如果开头两位是00,那么就表示后面的6位保存的是长度,长度最大值63如果开头两位是01,那么就表示后面的14位保存的是长度,长度最大就是2^14-1如果开头两位是10,那么后面6位空着,接下来的32位表示长度,最大值2^32-1>8)&。xFF)l(REDIS_RDB_14BITLEN

2015-05-04 22:07:15 1042

原创 Intel Pin-JIT模式和Probe模式下库函数的替换

这篇文章主要介绍一下Intel Pin在JIT模式和Probe模式下对库换数的替换,以及实现中有哪写需要注意的地方。JIT模式就是对插桩的代码进行即时编译,然后缓存起来使用Probe模式就是在要插桩的函数入口前面插入一条跳转指令,跳转到新的替换函数处执行,不在原来执行代码上进行修改具体的大家可以参考Pin官方手册https://software.intel.com/sites/la

2015-04-21 00:13:14 2094

原创 基于Lockset的数据竞争检测方法汇总(四)

今天讲的这篇文论中提到的Lockset方法同样也是和Happens-Before结合来进行动态数据竞争检测,这篇论文中使用的Happens-Before方法不是上一篇文章中提出的Djit+方法,而是使用Threadset方法,同时这篇论文提出的自适应检测方法能够在Threadset和Lockset自由切换,并且在检测共享对象的粒度上也是自适应的(这里的话不会提如何自适应的,将会在以后的文章中提到)

2015-04-18 16:11:53 820

原创 基于Lockset的数据竞争检测方法汇总(三)

上一篇文章中我们看到了有关共享对象状态变迁在Eraser基础上进行的改进,但是改进的不是特别明显,下面这篇论文不是单纯的用Lockset作为数据竞争检测方法,而是采用的Djit+以及改进的Lockset方法结合来进行动态数据竞争检测。        Djit+方法在这篇文章中已经说得比较明白了,想了解的同学可以看这里。        改进的Lockset方法用到了Djit+中的一些概念(后

2015-04-17 21:38:57 1026

原创 基于Lockset的数据竞争检测方法汇总(二)

前一篇文章提到的是使用Lockset最经典的方法,但是存在很多误报,针对这些误报产生的原因,有很多分析并改进了原始的Lockset方法,今天主要和大家谈的就是有关Lockset中状态ownership transition的一种改进。Referencevon Praun C, Gross T R. Object race detection[C]//ACM SIGPLAN No

2015-04-17 10:10:32 1161 1

原创 基于Lockset的数据竞争检测方法汇总(一)

对于搞数据竞争检测方向的人来说,Lockset方法大家肯定不陌生,作为一个刚入门数据竞争检测方向的我来说,就和大家总结一下我近期有关Lockset方法的一些研究和心得。      Lockset方法研究比较早可以追溯到1997年Eraser那篇论文,被引用无数次,非常经典的方法。      Reference      Savage S, Burrows M, Nelson G, et

2015-04-17 00:37:33 3056

原创 MultiRace-Efficient on-the-fly data race detection

最近在研究数据竞争检测方法,,之前的工作是参考了Eraser这个工具1997年提出的基于Lockset方法的动态数据检测,在Interl的Pin框架的基础上对方法进行了复现(论文中有关动态注解没有完成,这部分以后再整合)。在后续的论文研读中发现大多数的方法都是基于Happens-Before和Lockset方法结合的思路,于是就看了下面这篇非常具有代表性的两种方法综合的论文。R

2015-04-16 13:27:15 1265

转载 C++模板初探

模板定义以关键字template开始,后接模板形参表(template parameter list),模板形参表是用尖括号括住的一个或者多个模板形参的列表,形参之间以逗号分隔。模板形参可以是表示类型的类型形参(type parameter),也可以是表示常量表达式的非类型形参(non-type parameter)。非类型形参跟在类型说明符之后声明。类型形参跟在关键字class或typena

2015-03-24 17:42:43 471

转载 常见排序算法的稳定性分析

排序算法的稳定性,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj,Ai原来在位置前,排序后Ai还是要在Aj位置前。      其次,说一下稳定性的好处。排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用。基数排序就是这样,先按低位排序,逐次按高位排序,低位

2015-03-13 21:56:18 533

转载 C/C++中内存对齐初探讨

原来对内存对齐一直没弄清楚,现在找到两篇网友的文章备忘:http://blog.csdn.net/arethe/article/details/2548867http://blog.sina.com.cn/s/blog_59b189220100a49h.html一、什么是对齐,以及为什么要对齐:1. 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任

2015-01-22 10:31:07 499

原创 LeetCode之Implement strStr()

本题是LeetCode28题,属于Easily级别给出题目描述Implement strStr().Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.Update (2014-11-02):The sig

2015-01-16 09:56:17 499

原创 凸包问题之GrahamScan解法

继上一篇凸包问题的蛮力解法,本篇将介绍凸包问题的GrahamScan解法。首先了解一下GrahamScan解法的原理:当沿着Convex hull逆时针漫游时,总是向左转在极坐标系下按照极角大小排列,然后逆时针方向漫游点集,去除非Convex hull顶点(非左 转点)。第一步

2014-12-07 23:04:25 761

原创 凸包问题之蛮力解法

凸包问题首先解释什么叫做凸包问题:1  点集Q的凸包(convex hull)是指一个最小凸多边形,满足Q中的点或者在多边形边上或者在其内。下图中由红色线段表示的多边形就是点集Q={p0,p1,...p12}的凸包。2  一组平面上的点,求一个包含所有点的最小的凸多边形,这就是凸包问题了。这可以形象地想成这样:在地上放置一些不可移动的木桩,用一根绳子把他们尽量紧

2014-12-07 22:35:31 1835

转载 Linux下相关解压缩命令总结

Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进行压缩了,所以首先就来讲讲tar命令的基本用法:   tar命令的选项有很多(用man tar可以查看到),但常用的就那么几个选项,下面 来举例说明一下:   # tar -cf all.tar *.jpg

2014-11-15 16:43:23 447

转载 C语言sizeof空洞之字节对齐(#pragma pack使用)

C编译器的缺省字节对齐方式(自然对界)在缺省情况下,C编译器为每一个变量或是数据单元按其自然对界条件分配空间。在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间。各个成员按照它们被声明的顺序在内存中顺序存储(成员之间可能有插入的空字节),第一个成员的地址和整个结构的地址相同。 C编译器缺省的结构成员自然对界条件为“N字节对齐”,N即该

2014-10-26 10:49:30 756

Dynamic_Data_Race_Detection

基于Eraser锁集的动态数据竞争检测算法实现

2015-09-22

数据竞争检测文献阅读

数据竞争检测入门文献阅读

2015-09-22

空空如也

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

TA关注的人

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