自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

steppad

向往山峰的景色

  • 博客(52)
  • 收藏
  • 关注

转载 #ifdef与#endif的作用及用法

#ifdef #endif #ifndef的作用

2022-08-30 14:51:33 2532 1

原创 【论文阅读】Zeus: Locality-aware Distributed Transactions

Zeus将事务需要修改的数据集中到单个节点,通过将分布式事务转变成单机事务来提高在具有高度访问局部性负载下系统的性能。与此同时,Zeus具有副本间强一致、支持非确定性事务、便于应用移植的特点。......

2022-06-05 17:22:15 1878

原创 [CMU 15-445] 19 多版本并发控制协议

1. Overview上一届介绍的2PL属于悲观的并发策略,事务的每一步操作都需要获得相应的锁才可以,大量的锁管理操作降低了事务处理性能。若本身负载中的不同事务发生读写冲突的概率很低甚至不会发生冲突的话,锁操作显得非常多余,等事务再执行过程中发生冲突时再终止就可以了,即一种乐观的并发控制思想。 2. Multi-Version Concurrency Control3. MVCC Control Design...

2021-11-08 21:22:36 2742 2

原创 [CMU 15-445] 18 基于时间戳的乐观并发协议

1. Overview上一届介绍的2PL属于悲观的并发策略,事务的每一步操作都需要获得相应的锁才可以,大量的锁管理操作降低了事务处理性能。若本身负载中的不同事务发生读写冲突的概率很低甚至不会发生冲突的话,锁操作显得非常多余,等事务再执行过程中发生冲突时再终止就可以了,即一种乐观的并发控制思想。 本小节主要介绍基于时间戳的客观并发控制策略。 2. Basic Timestamp Ordering(T/O) Protocol在基于时间戳并发控制协议中,每个事务都拥有一个唯一的时间戳标记,

2021-11-04 00:11:30 1145

原创 [CMU 15-445] 17 两阶段封锁协议

1. Overview前面一小节(并发控制理论)介绍了如何并发执行多个事务,设置检测机制判断执行调度满足可串行化。那些方法假设DBMS已知所有负载,然而,在真实系统中,系统往往并不知道用户在未来可能发送的所有请求,在这种情况下如何保证最终产生可串行化调度是一个新的问题。本小节介绍的两阶段封锁协议(2PL)是其中一种解决方式,它是一种悲观的解决策略,相应的,还有一类乐观的解决策略。 2. Lock Types在索引并发控制那一小节提到过,Lock和Latch的区别。Latch指物理层面对数据结构

2021-11-01 19:13:50 1608

原创 [CMU 15-445] 16 并发控制理论

1. Overview本小节主要介绍DBMS中并发控制和故障恢复,以及事务(Transaction)的相关内容。DBMS的存储和执行都可能涉及到并发控制,在DBMS中正确的将I/O和执行操作并行化将极大的提升系统性能。原本串行化执行的操作并行化执行将带来许多新的问题,例如更新丢失。同时,DBMS为了保证所有操作最终持久化到磁盘,需要具备故障恢复机制,当从故障中恢复后能够快速恢复到正确的状态。...

2021-10-27 20:57:43 388

原创 [CMU 15-445] 15 查询计划生成与优化 -Ⅱ

1. OverviewSQL作为声明式语句,不透露查询的具体实现细节。DBMS首先解析SQL语句得到逻辑计划,随后优化逻辑计划,最后为逻辑计划中的每个算子选择效率最高的物理执行方式,即物理查询计划。逻辑计划优化和物理计划优化统称为查询优化,决定了SQL语句的最终执行效率。2. Plan Cost Estimation3. Plan Enumeration4. Nested Sub-queries关注我的微信订阅号,交流数据管理与分布式系统相关技术:...

2021-10-23 19:04:00 297

原创 [CMU 15-445] 14 查询计划生成与优化 -Ⅰ

1. OverviewSQL作为声明式语句,不透露具体的查询实现细节。DBMS首先解析SQL语句得到逻辑计划,然后为逻辑计划中的每个算子选择效率最高的物理执行方式,即物理查询计划。逻辑计划优化和物理计划优化统称为查询优化,是DBMS中最难的部分,它决定了一条SQL语句的执行效率。最早的查询优化工作起源于70年代System R的工作,许多概念和技术沿用至今(涉及到CS底层的技术挥发性很低)查询优化方法可以分为两类,分别是基于规则的启发式方法和基于代价估计的方法。第一种方法最多只需要检查ca

2021-09-28 23:44:39 350

原创 [CMU 15-445] 13 查询执行 -Ⅱ

1. Overview前面介绍的都是基于单个Worker(线程)的查询树执行方式,本节主要介绍查询树的并发执行.并发执行查询树可以降低延时(单个任务的处理时间变少了),降低系统响应时长,提高吞吐率和可用性.并行数据库与分布式数据库的资源都不是集中的,区别在于资源的可靠性和通信的成本不同,分布式数据库的资源之间跨越不同物理机器,由于经过网络传输的原因,资源可靠性低且网络开销大.本节首先介绍几种并行处理模型,然后包括执行并行和I/O并行的问题.2. Process Model

2021-09-10 23:28:46 401

原创 [CMU 15-445] 12 查询执行 -Ⅰ

1. 概览本节介绍查询执行相关内容,包括查询处理模型、查询树叶节点磁盘访问效率和 Where 表达式性能评估.数据库中将查询算子组织成一棵查询树,数据从叶节点逐层传递到根节点,根节点的输出是查询最终的输出.2. Processing Models查询树的处理模型分为三种,分别是Iteration Model(就是常说的火山模型)、Materation Model 和 Vectorized/Batch Model. 没有适用于所有场景的模型,每种都有最适合的任务场景.Iterati

2021-09-06 08:32:34 245

原创 [CMU 15-445] 11 连接算子

1. 概览数据库通过减少表中的数据冗余来减少存储开销,依据范式(例如,一级范式、二级范式)对表进行拆分. 这时候当数据库的查询涉及两张甚至多张表就需要将不同表的数据进行快速合并,另外针对存在中间结果过大溢出到磁盘的情况,也需要设计面向 内存-磁盘 的连接算法.本节仅关注两张表连接(出于性能考虑,多表连接需要考虑更多因素,例如表间的连接顺序). 连接类型只考虑Inner Join(内连接),其他的连接类型可以由内连接演变过来. 在两表连接的场景下,一般选择将tuple数少的表放在连接算子的左边(可以

2021-08-29 12:00:12 565 1

原创 [CMU 15-445] 10 排序&聚合算子

1. 概览对于面向磁盘的DBMS而言,内存可能无法完全容纳一次任务的中间结果,这时算法需要将部分临时数据放在磁盘中,需要使用的时候再和内存中已有数据替换. 另外,为了在硬件访问速率上加快去重/聚合操作,预先也需要对内存和磁盘中的所有数据进行排序.基于以上原因,本小节主要介绍外部归并排序与数据库中的聚合操作实现原理.2. 外部归并排序数据库表中的tuple默认是无序的,但是对于某些算子而言,若数据是有序的将很容易实现(例如 DISTINCT, Bulk Loading, GROUP BY)

2021-08-21 10:54:36 323

原创 [CMU 15-445] 09 索引并发控制

1. 内容概览前面假设单个线程对索引进行操作,为了充分利用现代处理器多个核心以及弥补I/O延迟,这里讨论了多线程索引操作中的相关问题. 包括Latches,Hash Table Latching,B+ Tree Latching,叶节点扫描以及父节点延迟更新.2. LatchesLock指是数据库事务在执行阶段中一种逻辑上的锁,表示整个事务执行阶段对数据的占用. Latch指线程级别的锁,表示一个线程执行阶段对数据的占用. 具体区别如下:事务并发中的死锁一般可以通过死锁检测和处理机制处理

2021-08-15 22:04:32 441

原创 [CMU 15-445] 08 树索引 -Ⅱ

1. 内容概览本节介绍B+树的更多知识,包括重复的KEY处理、部分索引、Tries索引,倒排索引等.2. 处理重复Key前面一节讲过B+中处理重复KEY的方法,这里是从更宏观的角度看. 介绍了两种方案:在KEY后面加上Record ID使每个KEY变得唯一,或者给叶节点添加溢出节点专门存放重复的KEY.第一种方案中,每个叶节点的KEY都加上了Record ID,Record ID中包括Page和Offset,DBMS依然可以根据KEY前面的部分进行搜索.第二种方案中,重复的KEY

2021-08-14 16:23:13 211

原创 [CMU 15-445] 07 树索引 -Ⅰ

7 Tree-Indexes7.1 Table Index哈希表索引适合点查询(根据Key,得到value),不适用于范围查询,因此这里就引出了今天要介绍的表级索引(table index),例如后面要介绍的B tree。表级索引是表中数据的一个副本,其依据部分属性进行重新排序组织,用于数据的快速访问。表级索引用于在范围查询的时候快速得到所有的key,表级索引需要与存储的数据保持一致,即数据在磁盘上增删改操作需要同步到索引上。例如,当用户insert数据的时候,索引中也会添加条数据,这对于上层成程序员

2021-07-28 00:37:34 294 1

原创 [SIGMOD 2021] SharPer: Sharding Permissioned Blockchains Over Network Clusters

可拓展性是区块链的一个重要性能指标,是指随着区块链网络中节点数目增加,系统对交易的处理性能也随之增长。论文工作致力于提高当前联盟链在分片架构下的交易吞吐率,贡献点如下:将区块链节点和数据进行分片,支持并行处理多个跨片交易。支持片间共识(纯CFT或BFT节点错误),解决了片间并发时候共识出现的交易冲突、死锁、主节点故障问题。

2021-07-26 23:03:01 8491 4

原创 图解区块链跨链协议之“哈希时间锁”

哈希时间锁(HTLC)作为主流跨链技术中的一种,也是支撑闪电网络的背后技术,本文对其原理和优缺点进行解读

2021-03-14 19:12:32 2657 7

原创 indent工具格式化C/C++代码风格

indent工具可以把C/C++代码格式化成某种风格$ indent -kr -i4 main.c-kr选项表示K&R风格, -i4表示缩进8个空格的长度。indent工具也支持其它的风格和选项。

2020-08-08 11:23:37 450

原创 Rust安装及Cargo使用

安装Rust(Linux下)$ curl https://sh.rustup.rs -sSf | sh安装成功提示:Rust is installed now. Great!编译源文件:rustc main.rs通过Cargo建立项目$ cargo new hello_cargo$ cd hello_cargoCargo.toml 记录配置文件,源码在/src中,编译后可执行文件在/target/debug下编译:根目录下执行cargo build,首次运行 cargo bui

2020-08-07 23:39:10 4135

原创 排查Latex报错 “Command \c@subfigure already defined”

今天将之前投稿 TKDE 的一段描述子图的Latex代码放到 Science China Information Sciences 的Latex模板中使用在头部\usepackage{subfigure}后一直报"Command \c@subfigure already defined"错误, 搜索了一下因为Latex中比较棘手的宏包冲突问题。这里的是figure和subfigure冲突(为什么在TKDE模板中这两个不冲突,应该是SCIS模板对subfigure做了修改)。网上很多方法试了都不行,包括在

2020-08-01 21:47:59 30484 20

原创 ubuntu 修改文件或文件夹所属用户

今天在本地 netbeans 向远程机(ubuntu)调试代码时,报错无权限读取makefile文件,很郁闷。用 ls -al 发现 makefile 文件所属的用户是root,而我 IDE 连接远程主机的用户名是非root账号,所以无权限读取文件。找到原因后,使用chown修改文件所属用户/用户组:chown -R username filedir(username是要赋予的用户名,fi...

2019-12-11 13:54:59 4090

原创 C++笔记之 引用,const,函数重载,内联函数,内存管理

C++笔记之 引用,const,函数重载,内联函数,内存管理引用引用就是给变量起一个别名。注意:引用必须初始化例:int a = 10;int &b = a;指针类型引用:int *&q = p;引用类型函数参数:void function(int &a, int &b)const 关键字作用于常规数据类型:int x = 3, cons...

2019-11-06 17:35:28 171

原创 CUDA共享内存操作(__shared__关键字)

CUDA 对GPU的显存操作时,若线程频繁对某个数据进行读写操作,可以设置操作的数据常驻缓存,这样可以进一步提高代码的运行效率,并且同一个线程块内的所有线程共享该内存区域。然而当出现多个线程对同一个内存区域进行操作时,需要对线程进行同步操作,从而避免竞争的发生。cuda中使用__shared__关键字,这里使用__syncthreads()控制线程同步。如核函数dot所示,代码生成一个数组并计算...

2019-03-18 16:55:29 12749 1

原创 PaperNote:Concurrent analytical query processing with GPUs (VLDB 2014)

MotivationSharing GPUs among concurrent queries is not supported, causing serious resource underutilization.Problems with Uncoordinated Query Co-RunningDevice memory swappingQuery scheduling1....

2018-11-01 15:28:13 278

原创 《CUDA并行程序设计:GPU编程指南》笔记 Chaper 5 线程网格、线程块、线程束

线程网格、线程块、线程束 关系为了将数据放到GPU上运算首先要通过cudaMalloc和cudaFree申请或释放内存然后使用cudaMemcpy将数据从CPU端复制到GPUCUDA 中的相关变量含义gridDim.x – 线程网格X维度上线程块的数目gridDim.y – 线程网格Y维度上线程块的数目blockDim.x – 一个线程块X维度上的线程数量b...

2018-10-29 11:25:08 598

原创 Ubuntu 16.04 安装 Docker

近期需要在学院DGX-1计算机中搭建虚拟集群,系统是Ubuntu 16.04,最好的选择就是Docker,下面记录下安装Docker的路程1. 安装Docker简介:Docker 是一个开源的应用容器引擎,开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。先卸载可能存在的旧版本:sudo apt-get remove doc...

2018-09-29 09:25:30 376

原创 《CUDA并行程序设计:GPU编程指南》笔记 Chaper 4 环境搭建

关于平台:Windows、Linux、Mac OS都支持Windows下环境搭建顺序:(1) VS 2010 (必须先安装VS!,然后再安装其他)(2) CUDA ToolKit (在9.0版本中,显卡驱动以及Nsight调试器都已经集成在ToolKit中一并安装)Windows上支持Nsight调试器,这一点极为方便CUDA程序支持向后兼容INVIDIA 支持CUDA编程的GPU:h...

2018-09-27 11:24:46 347 2

原创 《CUDA并行程序设计:GPU编程指南》笔记 Chaper 3 CUDA 硬件描述

传统PC架构GPU硬件架构SM内部组成结构图

2018-09-22 20:00:50 270

原创 《CUDA并行程序设计:GPU编程指南》笔记 Chaper 2 使用GPU理解并行计算

并行计算中需要解决的问题资源共享多个线程与多个进程经常使用到同一个资源,产生临界资源,操作系统需要使用信号量来解决,这里不再赘述。并发性在面临的任务中,有一部分属于“易并行”,例如矩阵乘法,每个计算单元的输出相互独立,这类问题在GPU上可以得到很好的解决并且编程非常简单。对于“不易并行”的任务,各个计算单元之间存在依赖性。CUDA中,涉及块内的通信通过共享内存实现,块间通信需则要全局内存...

2018-09-19 15:38:35 365

原创 《CUDA并行程序设计:GPU编程指南》笔记 Chaper 1 超级计算简史

Chaper 1 超级计算简史超级计算机和桌面计算正在向着异构计算发展—人们试图通过将中央处理器(CPU)和图形处理器(GPU)技术混合在一起来实现更高的性能,让适合CPU的计算类型让CPU算,适合GPU的运算让GPU算,这也是一种分布式计算架构现大多数计算属于“内存受限型”,现代计算机三级缓存技术受到成本的考验历史上出现的超算发展实例:克雷(Cray)系列连接机,出现单指令多...

2018-09-12 21:05:09 453

原创 数据缺失值处理

数据缺失值处理方法① 删除缺失值   改变了样本原始的数据分布,在缺失值过多的情况下不宜采用② 均值填补法   若缺少的属性是数值型,则将其他数据对象该属性的值取平均后填入;若缺少的属性是非数值型,则根据众数原理将其他数据对象中该属性出现最多的值填入; (对均值不会有太大影响,但是方差与标准差会变小)③ 热卡填充法   对于一个包含缺失值的变量,热卡填充法的做法是:在数据库中找到一个与它最相似的对

2018-01-01 10:52:19 2845

原创 梯度下降

import numpy as npimport randomfrom numpy import genfromtxt# 载入训练数据def getData(dataSet): m, n = np.shape(dataSet) trainData = np.ones((m, n)) trainData[:,:-1] = dataSet[:,:-1] trainL

2017-12-21 15:58:58 257

转载 最小二乘法

## Least squares 最小二乘法import numpy as npimport scipy as spimport matplotlib.pyplot as pltfrom scipy.optimize import leastsq'''给出样本数据'''X = np.array([6.19,2.51,7.29,7.01,5.7,2.66,3.98,2.5,9.1,4.2

2017-12-21 15:04:40 311

原创 模拟退火算法(SA,Simulated Annealing)

模拟退火算法用于解决最优化问题爬山算法(一种完全的贪心搜索算法),每次向着当前上升速度最快的方向向上爬,最后的最优解取决于初始点,容易陷入局部最优解困境,如图,若起始点选择在C处,当算法到达A点时候将停止寻找,因为在A点附近没有任何上升的机会。模拟退火算法则用于尝试解决这个问题 过程中:目标函数 作为 能量函数 算法思想:模拟退火算法以一定的概率接受一个比当前解要差的解(这个概率随着时间

2017-11-04 15:26:32 5031

原创 知识图谱1—概览

知识图谱1—概览知识图谱前世今生知识图谱由最早的语义网络发展过来而来,语义网是通过图结构来记录词语之间的语义关系(之后的还有本体论,Web,语义网,链接数据),而知识图谱对图中的节点意义进行扩充,每个节点对应于现实世界中的实体,整个图谱通过图记录现实世界中不同实体之间的关系,现在还有人提出”知识库”概念知识图谱技术意义由于Web中的数据会以不同的格式(结构、非结构、半结构)存在,这样而言,对于这些海

2017-10-29 09:17:26 621

原创 逻辑斯谛回归(Logistic regression)—《统计学习方法》

逻辑斯谛回归(Logistic regression)是统计学习领域的一个经典分类方法,学习李航教授的《统计学习方法》将笔记和一些感悟记录下来;1 逻辑斯谛分布(logistic distribution)  为一个连续型的随机变量,分布函数F和密度函数f满足下列条件的分布为逻辑斯谛分布:   F(值域0到1)与f的图像: F为中心对称图形并且在中心点附近图像很陡;2 二项逻辑斯谛分

2017-10-16 10:34:02 2886 1

原创 gStore 之 VS*-Tree

gStore:gStore是由北京大学计算机所数据管理实验室研发面向RDF知识图谱的开源图数据库系统(通常称为Triple Store)。不同于传统基于关系数据库的知识图谱数据管理方法,gStore是一种原生基于图数据模型(Native Graph Model)的RDF数据管理系统,维持了原始RDF知识图谱的图结构;其数据模型是有标签、有向的多边图,每个顶点对应着一个主体或客体。我们将面向RDF的S

2017-10-10 10:32:53 1234

原创 论文:Banerjee A, Ghosh J. On Scaling Up Balanced Clustering Algorithms.[C]笔记

实验描述:算法在2个数据集上进行测试,分别是20-newsgroups dataset和Yahoo news dataset,其中20-newsgroups dataset包含20000条文本记录,每条记录通过26099个维度进行存储;Yahoo news dataset包含2340条记录,每条记录通过21839个维度进行存储;上图表示,(a)与(b)分别表示在两个数据集上的目标函数值与error

2017-09-15 22:12:27 404

原创 论文:Bradley P S, Bennett K P, Demiriz A. Constrained K-Means Clustering[J]. 2000, 59(1):1–34.笔记

最近在研究平衡聚类方面的问题,做了些调研,最早研究这方面是2000年实验效果在两组实际数据集上测试(简写为I与W),其中I数据集包括351个包括33维的数据点,同时每一个维度的值进行标准化处理;W数据集包括683个包括9维的数据点上图表示,分别对数据集I和W使用K-Means进行聚类,对于使用不同K的聚类结果而言(10,20,50),随着τ的上升,聚类结果中簇的数据点总数小于τ的簇数目趋势;上图表示

2017-09-15 11:32:57 1207 1

原创 MIT《计算机科学数学》Chaper06-State Machine

状态机:状态机是一种简单、抽象的用于描述每一步可能执行操作(输出)的模型,每一个步骤的输出都取决于输入和当前状态,一般所指的状态机都是有限状态机,如果当前状态是无限的,不能确定其个数(比如人物的状态这是无限的),则被称为无限状态机,状态机中若存在某个状态则说明该状态可达,若某些时候状态机出现多个可能的次态,则状态机不可定,其中每个状态机都有相应的“状态”与“变换”;不变量原则:在状态机的状态转变过程

2017-08-11 21:17:39 448

空空如也

空空如也

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

TA关注的人

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