Abstract High-Concurrency Locking in R-Trees
- 格式:pdf
- 大小:120.98 KB
- 文档页数:12
第一部分、计算机算法常用术语中英对照Data Structures 基本数据结构Dictionaries 字典Priority Queues 堆Graph Data Structures 图Set Data Structures 集合Kd-Trees 线段树Numerical Problems 数值问题Solving Linear Equations 线性方程组Bandwidth Reduction 带宽压缩Matrix Multiplication 矩阵乘法Determinants and Permanents 行列式Constrained and Unconstrained Optimization 最值问题Linear Programming 线性规划Random Number Generation 随机数生成Factoring and Primality Testing 因子分解/质数判定Arbitrary Precision Arithmetic 高精度计算Knapsack Problem 背包问题Discrete Fourier Transform 离散Fourier变换Combinatorial Problems 组合问题Sorting 排序Searching 查找Median and Selection 中位数Generating Permutations 排列生成Generating Subsets 子集生成Generating Partitions 划分生成Generating Graphs 图的生成Calendrical Calculations 日期Job Scheduling 工程安排Satisfiability 可满足性Graph Problems -- polynomial 图论-多项式算法Connected Components 连通分支Topological Sorting 拓扑排序Minimum Spanning Tree 最小生成树Shortest Path 最短路径Transitive Closure and Reduction 传递闭包Matching 匹配Eulerian Cycle / Chinese Postman Euler回路/中国邮路Edge and Vertex Connectivity 割边/割点Network Flow 网络流Drawing Graphs Nicely 图的描绘Drawing Trees 树的描绘Planarity Detection and Embedding 平面性检测和嵌入Graph Problems -- hard 图论-NP问题Clique 最大团Independent Set 独立集Vertex Cover 点覆盖Traveling Salesman Problem 旅行商问题Hamiltonian Cycle Hamilton回路Graph Partition 图的划分Vertex Coloring 点染色Edge Coloring 边染色Graph Isomorphism 同构Steiner Tree Steiner树Feedback Edge/Vertex Set 最大无环子图Computational Geometry 计算几何Convex Hull 凸包Triangulation 三角剖分Voronoi Diagrams Voronoi图Nearest Neighbor Search 最近点对查询Range Search 范围查询Point Location 位置查询Intersection Detection 碰撞测试Bin Packing 装箱问题Medial-Axis Transformation 中轴变换Polygon Partitioning 多边形分割Simplifying Polygons 多边形化简Shape Similarity 相似多边形Motion Planning 运动规划Maintaining Line Arrangements 平面分割Minkowski Sum Minkowski和Set and String Problems 集合与串的问题Set Cover 集合覆盖Set Packing 集合配置String Matching 模式匹配Approximate String Matching 模糊匹配Text Compression 压缩Cryptography 密码Finite State Machine Minimization 有穷自动机简化Longest Common Substring 最长公共子串Shortest Common Superstring 最短公共父串DP——Dynamic Programming——动态规划recursion ——递归第二部分、编程词汇A2A integration A2A整合abstract 抽象的abstract base class ABC抽象基类abstract class 抽象类abstraction 抽象、抽象物、抽象性access 存取、访问access level访问级别access function 访问函数account 账户action 动作activate 激活active 活动的actual parameter 实参adapter 适配器add-in 插件address 地址address space 地址空间address-of operator 取地址操作符ADL argument-dependent lookup ADOActiveX Data ObjectActiveX数据对象advancedaggregation 聚合、聚集algorithm 算法alias 别名align 排列、对齐allocate 分配、配置allocator分配器、配置器angle bracket 尖括号annotation 注解、评注API Application Programming Interface 应用程序编程接口app domain application domain应用域application 应用、应用程序application framework 应用程序框架appearance 外观append 附加architecture 架构、体系结构archive file 归档文件、存档文件argument引数传给函式的值;参见parameterarray 数组arrow operator 箭头操作符ASPActive Server Page活动服务器页面worker process 工作者进程assembly 装配件、配件assembly language 汇编语言assembly manifest 装配件清单assertion 断言assign 赋值assignment 赋值、分配assignment operator 赋值操作符associated 相关的、相关联的associative container 关联式容器对应sequential container asynchronous 异步的atomic 原子的atomic operation 原子操作attribute 特性、属性authentication service 验证服务authorization 授权audio 音频. 人工智能B2B integration B2B整合、B2B集成business-to-business integration background 背景、后台进程backward compatible 向后兼容、向下兼容backup 备份backup device备份设备backup file 备份文件bandwidth 带宽base class 基类base type 基类型batch 批处理BCL base class library基类库binary 二进制binary search 二分查找binary tree 二叉树binary function 双参函数binary large object二进制大对象binary operator 二元操作符binding 绑定bit 位bitmap 位图bitwise 按位...bitwise copy 为单元进行复制;位元逐一复制,按位拷bitwise operation 按位运算block 块、区块、语句块bookkeeping 簿记boolean 布林值真假值,true或falseborder 边框bounds checking 边界检查boxing 装箱、装箱转换brace curly brace 大括号、花括号bracket square brakcet 中括号、方括号breakpoint 断点browser applications 浏览器应用程序browser-accessible application 可经由浏览器访问的应用程序build 编连专指编译和连接built-in 内建、内置bus 总线business 业务、商务看场合business Logic 业务逻辑business rules 业务规则buttons 按钮bug 臭虫by/through 通过byte 位元组由8 bits组成cache 高速缓存calendar 日历call 调用callback 回调call-level interface CLI调用级接口CLIcall operator 调用操作符candidate key 候选键 for databasecascading delete 级联删除 for databasecascading update 级联更新 for databasecasting 转型、造型转换catalog 目录chain 链function callscharacter 字符character format 字符格式character set 字符集CHECK constraints CHECK约束 for databasecheckpoint 检查点 for databasecheck box 复选框check button 复选按钮child class 子类CIL common intermediate language通用中间语言、通用中介语言class 类class declaration 类声明class definition 类定义class derivation list 类继承列表class factory 类厂class hierarchy 类层次结构class library 类库class loader 类装载器class template 类模板class template partial specializations 类模板部分特化class template specializations 类模板特化classification 分类clause 子句client application 客户端应用程序client cursor 客户端游标 for databasecode page 代码页cleanup 清理、清除CLI Common Language Infrastructure 通用语言基础设施client 客户、客户端client area 客户区client-server 客户机/服务器、客户端/服务器clipboard 剪贴板clone 克隆CLS common language specification 通用语言规范code access security 代码访问安全COFF Common Object File Format 通用对象文件格式collection 集合COM Component Object Model 组件对象模型combo box 组合框command line 命令行comment 注释commit 提交 for databasecommunication 通讯compatible 兼容compile time 编译期、编译时compiler 编译器component组件composite index 复合索引、组合索引 for database composite key 复合键、组合键 for database composition 复合、组合concept 概念concrete具体的concrete class 具体类concurrency 并发、并发机制constraint 约束 for databaseconfiguration 配置、组态connection 连接 for databaseconnection pooling 连接池console 控制台constant 常量construct 构件、成分、概念、构造for language constructor ctor 构造函数、构造器container 容器containment包容context 环境、上下文control 控件cookie 不译copy 拷贝CORBA 通用对象请求中介架构Common Object Request Broker Architecture cover 覆盖、涵盖create/creation 创建、生成crosstab query 交叉表查询 for databaseCRTP curiously recurring template patternCTS common type system通用类型系统cube 多维数据集 for databasecursor 光标cursor 游标 for databasecustom 定制、自定义data 数据data connection 数据连接 for databaseData Control Language DCL 数据控制语言DCL for databaseData Definition Language DDL 数据定义语言DDL for databasedata dictionary 数据字典 for databasedata dictionary view 数据字典视图 for databasedata file 数据文件 for databasedata integrity 数据完整性 for databasedata manipulation language DML数据操作语言DML for databasedata mart 数据集市 for databasedata scrubbing 数据清理 for databasedata source 数据源 for databaseData source name DSN 数据源名称DSN for database data warehouse 数据仓库 for databasedataset 数据集 for databasedatabase 数据库 for databasedatabase catalog 数据库目录 for databasedatabase diagram 数据关系图 for databasedatabase file 数据库文件 for databasedatabase object 数据库对象 for databasedatabase owner 数据库所有者 for databasedatabase project 数据库工程 for databasedatabase role 数据库角色 for databasedatabase schema 数据库模式、数据库架构 for database database scrīpt 数据库脚本 for databasedata-bound 数据绑定 for databasedata-aware control数据感知控件 for databasedata member 数据成员、成员变量dataset 数据集 for databasedata source 数据源 for databasedata structure数据结构datagram 数据报文DBMS database management system数据库管理系统 for databaseDCOM distributed COM分布式COMdead lock 死锁 for databasedeallocate 归还debug 调试debugger 调试器decay 退化decision support 决策支持declaration 声明declarative referential integrity DRI声明引用完整性DRI for database deduction 推导DEFAULT constraint默认约束 for databasedefault database 默认数据库 for databasedefault instance 默认实例 for databasedefault result set 默认结果集 for databasedefault 缺省、默认值defer 推迟definition 定义delegate 委托delegation 委托dependent namedeploy 部署dereference 解引用dereference operator 提领运算子derived class 派生类design by contract 契约式设计design pattern 设计模式destroy 销毁destructordtor析构函数、析构器device 设备DHTML dynamic HyperText Markup Language动态超文本标记语言dialog 对话框digest 摘要digital 数字的DIME Direct Internet Message Encapsulation直接Internet消息封装directive 编译指示符directory 目录dirty pages脏页 for databasedirty read 脏读 for databasedisassembler 反汇编器DISCO Discovery of Web ServicesWeb Services的查找disk 盘dispatch 调度、分派、派发我喜欢“调度”DISPID Dispatch Identifier分派标识符distributed computing 分布式计算distributed query 分布式查询 for databaseDNA Distributed interNet Application 分布式网间应用程序document 文档DOM Document Object Model文档对象模型dot operator 圆点操作符driver 驱动程序DTD document type definition 文档类型定义double-byte character set DBCS双字节字符集DBCSdump 转储dump file 转储文件dynamic cursor 动态游标 for databasedynamic filter 动态筛选 for databasedynamic locking 动态锁定 for databasedynamic recovery 动态恢复 for databasedynamic snapshot 动态快照 for databasedynamic SQL statements 动态SQL语句 for databasedynamic assembly 动态装配件、动态配件dynamic binding 动态绑定EAI enterprise application integration企业应用程序集成整合EBCO empty base class optimization 空基类优化机制e-business 电子商务EDI Dlectronic Data Interchange电子数据交换efficiency 效率efficient 高效end-to-end authentication 端对端身份验证end user 最终用户engine 引擎entity 实体encapsulation 封装enclosing class 外围类别与巢状类别 nested class有关enum enumeration 枚举enumerators 枚举成员、枚举器equal 相等equality 相等性equality operator 等号操作符error log 错误日志 for databaseescape code 转义码escape character 转义符、转义字符exclusive lock 排它锁 for databaseexplicit transaction 显式事务 for database evaluate 评估event 事件event driven 事件驱动的event handler 事件处理器evidence 证据exception 异常exception declaration 异常声明exception handling 异常处理、异常处理机制exception-safe 异常安全的exception specification 异常规范exit 退出explicit 显式explicit specialization 显式特化export 导出expression 表达式facility 设施、设备fat client 胖客户端feature 特性、特征fetch 提取field 字段javafield 字段 for databasefield length 字段长度 for databasefile 文件filter 筛选 for databasefinalization 终结firewall 防火墙finalizer 终结器firmware 固件flag 标记flash memory 闪存flush 刷新font 字体foreign key FK 外键FK for databaseform 窗体formal parameter 形参forward declaration 前置声明forward-only 只向前的forward-only cursor 只向前游标 for database fragmentation 碎片 for databaseframework 框架full specialization 完全特化function 函数function call operator 即operator 函数调用操作符function object 函数对象function overloaded resolution函数重载决议functionality 功能function template函数模板functor 仿函数GAC global assembly cache 全局装配件缓存、全局配件缓存GC Garbage collection 垃圾回收机制、垃圾收集机制game 游戏generate 生成generic 泛化的、一般化的、通用的generic algorithm通用算法genericity 泛型getter 相对于 setter取值函数global 全局的global object 全局对象global scope resolution operator 全局范围解析操作符grant 授权 for databasegranularity 粒度group 组、群group box 分组框GUI 图形界面GUID Globally Unique Identifier 全球唯一标识符hand shaking 握手handle 句柄handler 处理器hard-coded 硬编码的hard-copy 截屏图hard disk 硬盘hardware 硬件hash table 散列表、哈希表header file头文件heap 堆help file 帮助文件hierarchy 层次结构、继承体系hierarchical data 阶层式数据、层次式数据hook 钩子Host application宿主应用程序hot key 热键hyperlink 超链接HTML HyperText Markup Language 超文本标记语言HTTP pipeline HTTP管道HTTP HyperText Transfer Protocol 超文本传输协议icon 图标IDE Integrated Development Environment集成开发环境IDL Interface Definition Language 接口定义语言identifier 标识符idle time 空闲时间if and only if当且仅当IL Intermediate Language 中间语言、中介语言image 图象IME 输入法immediate base 直接基类immediate derived 直接派生类immediate updating 即时更新 for database implicit transaction隐式事务 for database incremental update 增量更新 for database index 索引 for databaseimplement 实现implementation 实现、实现品implicit 隐式import 导入increment operator 增加操作符infinite loop 无限循环infinite recursive 无限递归information 信息infrastructure 基础设施inheritance 继承、继承机制inline 内联inline expansion 内联展开initialization 初始化initialization list 初始化列表、初始值列表initialize 初始化inner join 内联接 for databasein-place active 现场激活instance 实例instantiated 具现化、实体化常应用于template instantiation 具现体、具现化实体常应用于template integrate 集成、整合integrity 完整性、一致性integrity constraint完整性约束 for database interprocess communication IPC进程间通讯IPC interacts 交互interface 接口for GUI 界面interoperability 互操作性、互操作能力interpreter 解释器introspection 自省invariants 不变性invoke 调用isolation level 隔离级别 for databaseiterate 迭代iterative 反复的、迭代的iterator 迭代器iteration 迭代回圈每次轮回称为一个iteration item 项、条款、项目JIT compilation JIT编译即时编译key 键 for databasekey column 键列 for databaselaser 激光late binding 迟绑定left outer join 左向外联接 for database level 阶、层例high level 高阶、高层library 库lifetime 生命期、寿命link 连接、链接linkage 连接、链接linker 连接器、链接器literal constant 字面常数list 列表、表、链表list box 列表框livelock 活锁 for databaseload 装载、加载load balancing 负载平衡loader 装载器、载入器local 局部的local object 局部对象lock 锁log 日志login 登录login security mode登录安全模式 for database lookup table 查找表 for databaseloop 循环loose coupling 松散耦合lvalue 左值machine code 机器码、机器代码macro 宏maintain 维护managed code 受控代码、托管代码Managed Extensions 受控扩充件、托管扩展managed object 受控对象、托管对象mangled namemanifest 清单manipulator 操纵器iostream预先定义的一种东西many-to-many relationship 多对多关系 for database many-to-one relationship 多对一关系 for database marshal 列集member 成员member access operator 成员取用运算子有dot和arrow两种member function 成员函数member initialization list成员初始值列表memberwise 以member为单元…、members 逐一…memberwise copymemory 内存memory leak 内存泄漏menu 菜单message 消息message based 基于消息的message loop 消息环message queuing消息队列metadata 元数据metaprogramming元编程method 方法micro 微middleware 中间件middle tier 中间层modeling 建模modeling language 建模语言modifier 修饰字、修饰符modem 调制解调器module 模块most derived class最底层的派生类mouse 鼠标mutable 可变的mutex 互斥元、互斥体multidimensional OLAP MOLAP 多维OLAPMOLAP for database multithreaded server application 多线程服务器应用程序multiuser 多用户multi-tasking 多任务multi-thread 多线程multicast delegate 组播委托、多点委托named parameter 命名参数named pipe 命名管道namespace 名字空间、命名空间native 原生的、本地的native code 本地码、本机码Native Image Generator NGEN本地映像生成器nested class 嵌套类nested query 嵌套查询 for databasenested table 嵌套表 for databasenetwork 网络network card 网卡nondependent nameobject 对象object based 基于对象的object file 目标文件object model 对象模型object oriented 面向对象的object pooling 对象池化ODBC data source ODBC数据源 for databaseODBC driver ODBC驱动程序 for databaseODR one-definition ruleOLE Automation objects OLE自动化对象 for databaseOLE Automation server OLE自动化服务器 for databaseOLE DB consumer OLE DB使用者 for databaseOLE DB for OLAP 用于OLAP的OLE DB for databaseOLE DB provider OLE DB提供者 for databaseone-to-many relationship 一对多关系 for databaseone-to-one relationship 一对一关系 for databaseonline analytical processing OLAP 联机分析处理OLAP for databaseonline redo log 联机重做日志 for databaseonline transaction processing OLTP 联机事务处理OLTP for database Open Data Services ODS 开放式数据服务ODS for databaseOpen Database Connectivity ODBC 开放式数据库连接ODBC for database operand 操作数operating system OS 操作系统operation 操作operator 操作符、运算符option 选项optimizer 优化器outer join 外联接 for databaseoverflow 上限溢位相对于underflowoverhead 额外开销overload 重载overload resolution 重载决议overloaded function 重载的函数overloaded operator 被重载的操作符override 覆写、重载、重新定义package 包packaging 打包palette 调色板parallel 并行parameter 参数、形式参数、形参parameter list 参数列表parameterize 参数化parent class 父类parentheses 圆括弧、圆括号parse 解析parser 解析器part 零件、部件partial specialization 局部特化pass by address 传址函式引数的传递方式非正式用语pass by reference 传地址、按引用传递pass by value 按值传递pattern 模式PDA personal digital assistant个人数字助理PE Portable Executable file 可移植可执行文件performance 性能persistence 持久性PInvoke platform invoke service 平台调用服务pixel 像素placement deleteplacement newplaceholder 占位符platform 平台POD plain old data typePOI point of instantiationpointer 指针poll 轮询pooling 池化polymorphism 多态pop up 弹出式port 端口postfix 后缀precedence 优先序通常用于运算子的优先执行次序prefix 前缀preprocessor 预处理器primary key PK主键PK for databaseprimary table 主表 for databaseprimary template原始模板primitive type 原始类型print 打印printer 打印机procedure 过程procedural 过程式的、过程化的process 进程profile 评测profiler 效能性能评测器program 程序programmer 程序员programming编程、程序设计progress bar 进度指示器project 项目、工程property 属性protocol 协议pseudo code伪码qualified 经过资格修饰例如加上scope运算子qualifiedqualifier 修饰符quality 质量queue 队列race condition 竞争条件多线程环境常用语radian 弧度radio button 单选按钮raise 引发常用来表示发出一个exception random number 随机数range 范围、区间rank 等级raw 未经处理的readOnly只读record 记录 for databaserecordset 记录集 for databaserecursive 递归re-direction 重定向refactoring 重构refer 引用、参考reference 引用、参考reference counting引用计数referential integrity RI引用完整性RI for database register 寄存器reflection 反射refresh data 刷新数据 for databaseregular expression 正则表达式relational database 关系数据库remote 远程remote request 远程请求represent 表述,表现resolve 解析、决议resolution 解析过程result set 结果集 for databaseretrieve data 检索数据return 返回return type 返回类型return value 返回值right outer join 右向外联接 for database revoke 撤销robust 健壮robustness 健壮性roll back 回滚 for databaseroll forward 前滚 for databaseroutine 例程row 行 for databaserow lock 行锁 for databaserowset 行集 for databaseRPC remote procedure callRPC远程过程调用runtime 执行期、运行期、执行时、运行时rvalue 右值save 保存savepoint 保存点 for databaseSAX Simple API for XMLscalable 可伸缩的、可扩展的schedule 调度scheduler 调度程序schema 模式、纲目结构scroll bar滚动条scope 作用域、生存空间scope operator 生存空间操作符scope resolution operator 生存空间解析操作符screen 屏幕SDK Software Development Kit软件开发包sealed class 密封类search 查找semantics 语义semaphore 信号量sequential container序列式容器server 服务器、服务端serial 串行serialization/serialize 序列化server cursor服务端游标、服务器游标 for database session 会话 for databasesetter 设值函数shared lock 共享锁 for databasesibling 同级side effect 副作用signature 签名single-threaded 单线程slider滑块slot 槽smart pointer 智能指针SMTP Simple Mail Transfer Protocol 简单邮件传输协议snapshot 截屏图snapshot 快照 for databasespecialization 特化specification 规范、规格splitter 切分窗口SOAP simple object access protocol 简单对象访问协议software 软件source code 源码、源代码SQL Structured Query Language 结构化查询语言 for database stack 栈、堆栈stack unwinding 叠辗转开解此词用于exception主题standard library 标准库standard template library 标准模板库stateless 无状态的statement 语句、声明static cursor 静态游标 for databasestatic SQL statements 静态SQL语句 for databasestored procedure 存储过程 for database status bar 状态条stream 流string 字符串stub 存根subobject子对象subquery 子查询 for databasesubroutine 子例程subscrīpt operator 下标操作符subset 子集subtype 子类型support 支持suspend 挂起symbol 记号syntax 语法system databases 系统数据库 for database system tables 系统表 for databasetable 表 for databasetable lock 表锁 for databasetable-level constraint 表级约束 for database tape backup 磁带备份 for databasetarget 标的,目标task switch 工作切换TCP Transport Control Protocol 传输控制协议template 模板template-idtemplate argument deduction 模板参数推导template explicit specialization 模板显式特化template parameter 模板参数template template parametertemporary object 临时对象temporary table 临时表 for databasetext 文本text file 文本文件thin client 瘦客户端third-party 第三方thread 线程thread-safe 线程安全的throw 抛出、引发常指发出一个exception token 符号、标记、令牌看场合trace 跟踪transaction 事务 for databasetransaction log 事务日志 for database transaction rollback 事务回滚 for databasetransactional replication 事务复制 for databasetranslation unit 翻译单元traverse 遍历trigger 触发器 for databasetwo-phase commit 两阶段提交 for databasetupletwo-phase lookup 两阶段查找type 类型UDDIUniversary Descrīption, Discovery and Integration统一描述、查询与集成UML unified modeling language统一建模语言unary function 单参函数unary operator 一元操作符unboxing 拆箱、拆箱转换underflow 下限溢位相对于overflowUnion query 联合查询 for databaseUNIQUE constraints UNIQUE约束 for databaseunique index 唯一索引 for databaseunmanaged code 非受控代码、非托管代码unmarshal 散集unqualified 未经限定的、未经修饰的URI Uniform Resource identifier 统一资源标识符URL Uniform Resource Locator 统一资源定位器user 用户user interface 用户界面value types 值类型variable 变量vector 向量一种容器,有点类似arrayviable 可行的video 视频view 视图VEE Virtual Execution Engine虚拟执行引擎vendor 厂商view 视图 for databasevirtual function 虚函数virtual machine 虚拟机virtual memory 虚拟内存vowel 元音字母Web Services web服务WHERE clause WHERE子句 for database wildcard characters 通配符字符 for database wildcard search 通配符搜索 for database window 窗口window function 窗口函数window procedure 窗口过程Windows authentication Windows身份验证wizard 向导word 单词word processor 字处理器wrapper 包装、包装器write enable 写启用 for databasewrite-ahead log 预写日志 for databasewrite-only 只写WSDL Web Service Descrīption LanguageWeb Service描述语言XML Message Interface XMI XML消息接口XML eXtensible Markup Language 可扩展标记语言XSD XML Schema Definition XML模式定义语言XSL eXtensible Stylesheet Language 可扩展样式表语言XSLT eXtensible Stylesheet Language Transformation可扩展样式表语言转换xxx based 基于xxx的xxx oriented 面向xxxother 1 :application 应用程式应用、应用程序application framework 应用程式框架、应用框架应用程序框架architecture 架构、系统架构体系结构argument 引数传给函式的值;叁见 parameter 叁数、实质叁数、实叁、自变量array 阵列数组arrow operator arrow箭头运算子箭头操作符assembly 装配件assembly language 组合语言汇编语言assertion 断言assign 指派、指定、设值、赋值赋值assignment 指派、指定赋值、分配assignment operator 指派赋值运算子 = 赋值操作符associated 相应的、相关的相关的、关联、相应的associative container 关联式容器对应 sequential container 关联式容器atomic 不可分割的原子的attribute 属性属性、特性audio 音讯音频. 人工智慧人工智能background 背景背景用於图形着色後台用於行程backward compatible 回溯相容向下兼容bandwidth 频宽带宽base class 基础类别基类base type 基础型别等同於 base classbatch 批次意思是整批作业批处理benefit 利益收益best viable function 最佳可行函式最佳可行函式从 viable functions 中挑出的最佳吻合者binary search 二分搜寻法二分查找binary tree 二元树二叉树binary function 二元函式双叁函数binary operator 二元运算子二元操作符binding 系结绑定bit 位元位bit field 位元栏位域bitmap 位元图位图bitwise 以 bit 为单元逐一┅bitwise copy 以 bit 为单元进行复制;位元逐一复制位拷贝block 区块,区段块、区块、语句块boolean 布林值真假值,true 或 false 布尔值border 边框、框线边框bracecurly brace 大括弧、大括号花括弧、花括号bracketsquare brakcet 中括弧、中括号方括弧、方括号breakpoint 中断点断点build 建造、构筑、建置MS 用语build-in 内建内置bus 汇流排总线business 商务,业务业务buttons 按钮按钮byte 位元组由 8 bits 组成字节cache 快取高速缓存call 呼叫、叫用调用callback 回呼回调call operator call函式呼叫运算子调用操作符同 function call operatorcandidate function 候选函式候选函数在函式多载决议程序中出现的候选函式chain 串链例 chain of function calls 链character 字元字符check box 核取方块 . check button 复选框checked exception 可控式异常Javacheck button 方钮 . check box 复选按钮child class 子类别或称为derived class, subtype 子类class 类别类class body 类别本体类体class declaration 类别宣告、类别宣告式类声明class definition 类别定义、类别定义式类定义class derivation list 类别衍化列类继承列表class head 类别表头类头class hierarchy 类别继承体系, 类别阶层类层次体系class library 类别程式库、类别库类库class template 类别模板、类别范本类模板class template partial specializations 类别模板偏特化类模板部分特化class template specializations类别模板特化类模板特化cleanup 清理、善後清理、清除client 客端、客户端、客户客户client-server 主从架构客户/服务器clipboard 剪贴簿剪贴板clone 复制克隆collection 群集集合combo box 复合方块、复合框组合框command line 命令列命令行系统文字模式下的整行执行命令communication 通讯通讯compatible 相容兼容compile time 编译期编译期、编译时compiler 编译器编译器component 组件组件composition 复合、合成、组合组合computer 电脑、计算机计算机、电脑concept 概念概念concrete 具象的实在的concurrent 并行并发configuration 组态配置connection 连接,连线网络,资料库连接constraint 约束条件construct 构件构件container 容器容器存放资料的某种结构如 list, vector... containment 内含包容context 背景关系、周遭环境、上下脉络环境、上下文control 控制元件、控件控件console 主控台控制台const 常数constant 的缩写,C++ 关键字constant 常数相对於 variable 常量constructorctor 建构式构造函数与class 同名的一种 member functionscopy v 复制、拷贝拷贝copy n 复件, 副本cover 涵盖覆盖create 创建、建立、产生、生成创建creation 产生、生成创建cursor 游标光标custom 订制、自定定制data 资料数据database 资料库数据库database schema 数据库结构纲目data member 资料成员、成员变数数据成员、成员变量data structure 资料结构数据结构datagram 资料元数据报文dead lock 死结死锁debug 除错调试debugger 除错器调试器declaration 宣告、宣告式声明deduction 推导例:template argument deduction 推导、推断default 预设缺省、默认defer 延缓推迟define 定义预定义definition 定义、定义区、定义式定义delegate 委派、委托、委任委托delegation 同上demarshal 反编列散集dereference 提领取出指标所指物体的内容解叁考dereference operator dereference提领运算子解叁考操作符derived class 衍生类别派生类design by contract 契约式设计design pattern 设计范式、设计样式设计模式※最近我比较喜欢「设计范式」一词destroy 摧毁、销毁destructor 解构式析构函数device 装置、设备设备dialog 对话窗、对话盒对话框directive 指令例:using directive 编译指示符directory 目录目录disk 碟盘dispatch 分派分派distributed computing 分布式计算分布式电算分布式计算分散式计算分散式电算document 文件文档dot operator dot句点运算子 . 圆点操作符driver 驱动程式驱动程序dynamic binding 动态系结动态绑定efficiency 效率效率efficient 高效高效end user 终端用户entity 物体实体、物体encapsulation 封装封装enclosing class 外围类别与巢状类别 nested class 有关外围类enum enumeration 列举一种 C++ 资料型别枚举enumerators 列举元enum 型别中的成员枚举成员、枚举器equal 相等相等equality 相等性相等性equality operator equality等号运算子 == 等号操作符equivalence 等价性、等同性、对等性等价性equivalent 等价、等同、对等等价escape code 转义码转义码evaluate 评估、求值、核定评估event 事件事件event driven 事件驱动的事件驱动的exception 异常情况异常exception declaration 异常宣告ref. C++ Primer 3/e, 异常声明exception handling 异常处理、异常处理机制异常处理、异常处理机制exception specification 异常规格ref. C++ Primer 3/e, 异常规范exit 退离指离开函式时的那一个执行点退出explicit 明白的、明显的、显式显式export 汇出引出、导出expression 运算式、算式表达式facility 设施、设备设施、设备。
redisson lock方法Redisson lock is a powerful feature in Redisson framework that allows for the creation of distributed locks in distributed environments. In essence, the lock method provided by Redisson allows multiple threads or processes to coordinate their access to a shared resource by acquiring and releasing a lock. This is particularly useful in scenarios where concurrent access to a resource needs to be controlled to prevent race conditions and ensure data consistency.Redisson lock方法是Redisson框架中一个强大的功能,可以在分布式环境中创建分布式锁。
实质上,Redisson提供的lock方法允许多个线程或进程通过获取和释放锁来协调它们对共享资源的访问。
这在需要控制对资源的并发访问以防止竞态条件并确保数据一致性的情况下尤为有用。
One of the key benefits of using Redisson lock is its ability to maintain the consistency and integrity of data in a distributed system. By acquiring a lock before accessing a shared resource, a thread or process guarantees that it has exclusive access to that resource, preventing conflicting modifications from other threads or processes.This ensures that data remains in a consistent state and reduces the chances of data corruption or inconsistency.使用Redisson lock的关键优势之一是它在分布式系统中维护数据一致性和完整性的能力。
基于深度聚类的无监督特征嵌入学习作者:杨建伟,严振华,王彩玲来源:《计算机时代》2022年第01期摘要:為了提高无监督嵌入学习对图像特征的判别能力,提出一种基于深度聚类的无监督学习方法。
通过对图像的嵌入特征进行聚类,获得图像之间的伪类别信息,然后最小化聚类损失来优化网络模型,使得模型能够学习到图像的高判别性特征。
在三个标准数据集上的图像检索性能表明了该方法的有效性,并且优于目前大多数方法。
关键词:无监督学习; 嵌入学习; 深度聚类中图分类号:TP391 文献标识码:A 文章编号:1006-8228(2022)01-19-03Unsupervised feature embedding learning via deep clusteringYang Jianwei1, Yan Zhenhua2, Wang Cailing1(1. School of Automation of Nanjing University of Posts and Telecommunications,Nanjing, Jiangsu, 210023, China;2. Wuerth Electronic Tianjin Co,.ltd.)Abstract: In order to improve the ability of unsupervised embedding learning to distinguish image features, an unsupervised method based on deep clustering is proposed. By clustering the embedded features of images, the pseudo category information between images is obtained, and then the clustering loss is minimized to optimize the network model, so that the model can learn thehigh discriminant features of images. The performance of image retrieval on three standard data sets shows that the proposed method is effective and better than most of the current methods.Key words: unsupervised learning; embedding learning; deep clustering0 引言深度嵌入学习旨在利用深度神经网络从图像中学习一种具有判别性的低维嵌入特征,这种嵌入特征具有两种属性。
read zone的英语作文英文回答:The read zone is a critical component of a database, as it is responsible for providing fast and efficient access to data. It achieves this by caching frequently accessed data in memory, reducing the need for slower disk I/O operations. This optimization can significantly improve the performance of data-intensive applications, especially those that involve frequent read operations.To support concurrent access, the read zone istypically implemented using a shared memory architecture, allowing multiple threads or processes to simultaneously access the cached data. This is achieved through mechanisms such as concurrency control and locking, which ensure data integrity and consistency.The read zone is often part of a larger storage system that includes other components such as a write zone, whichis responsible for managing write operations andmaintaining data durability, and a metadata zone, which stores information about the data and its location withinthe system.中文回答:读区是数据库的关键组成部分,因为它负责提供对数据的快速、高效的访问。
2021年5月Journal on Communications May 2021 第42卷第5期通信学报V ol.42No.5基于多特征自适应融合的区块链异常交易检测方法朱会娟1,2,陈锦富1,2,李致远1,2,殷尚男1,2(1. 江苏大学计算机科学与通信工程学院,江苏镇江 212013;2. 江苏省工业网络安全技术重点实验室,江苏镇江 212013)摘 要:针对智能检测模型的性能受限于原始数据(特征)表达能力的问题,设计了一种残差网络结构ResNet-32用于挖掘区块链交易特征间隐含的关联关系,自动学习包含丰富语义信息的高层抽象特征。
虽然浅层特征区分能力弱,但更忠于原始交易细节的描述,如何充分利用两者的优势是提升异常交易检测性能的关键,因此提出了特征融合方法自适应地桥接高层抽象特征与原始特征之间的鸿沟,自动去除其噪声和冗余信息,并挖掘两者的交叉特征信息获得最具区分力的特征。
最后,结合以上方法提出区块链异常交易检测模型(BATDet),并通过Elliptic数据集验证了所提模型在区块链异常交易检测领域的有效性。
关键词:区块链;残差网络;异常检测;Logistic回归中图分类号:TP18文献标识码:ADOI: 10.11959/j.issn.1000−436x.2021030Block-chain abnormal transaction detection methodbased on adaptive multi-feature fusionZHU Huijuan1,2, CHEN Jinfu1,2, LI Zhiyuan1,2, YIN Shangnan1,21. School of Computer Science and Communication Engineering, Jiangsu University, Zhenjiang 212013, China2. Jiangsu Key Laboratory of Security Technology for Industrial Cyberspace, Zhenjiang 212013, ChinaAbstract: Aiming at the problem that the performance of intelligent detection models was limited by the representation ability of original data (features), a residual network structure ResNet-32 was designed to automatically mine the intricate association relationship between original features, so as to actively learn the high-level abstract features with rich seman-tic information. Low-level features were more transaction content descriptive, although their distinguishing ability was weaker than that of the high-level features. How to integrate them together to obtain complementary advantages was the key to improve the detection performance. Therefore, multi feature fusion methods were proposed to bridge the gap be-tween the two kinds of features. Moreover, these fusion methods can automatically remove the noise and redundant in-formation from the integrated features and further absorb the cross information, to acquire the most distinctive features.Finally, block-chain abnormal transaction detection model (BATDet) was proposed based on the above presented me-thods, and its effectiveness in the abnormal transaction detection is verified.Keywords: block-chain, residual network, abnormal detection, Logistic regression1引言科技的飞速发展促使金融行业从实体金融走向互联网金融,反洗钱的外部环境和内在逻辑均发生了深刻而复杂的变化。
concurrenthashmap 原理、常见用途、注意事项ConcurrentHashMap: Principles, Common Uses, and ConsiderationsIntroduction:ConcurrentHashMap is a widely used concurrent collection class in Java that provides a high-performance, thread-safe alternative to the traditional HashMap. This article explores the principles behind ConcurrentHashMap, its common use cases, and important considerations when using it in multi-threaded environments.Part 1: PrinciplesConcurrentHashMap is designed to efficiently handle concurrent access to a shared data structure. It achieves this through a combination of techniques, including partitioning the data into segments and applying fine-grained locking. Here are the key principles behind its design:1. Segmentation: ConcurrentHashMap is internally divided into several segments, with each segment responsible for a subset of the data. Each segment operates independently, allowing multiple threads to simultaneously access different segments withoutblocking each other.2. Lock striping: Within each segment, ConcurrentHashMap further divides the data into several buckets. Each bucket has its own lock, and different buckets can be accessed concurrently by multiple threads. This lock striping technique reduces contention and enables high concurrency.3. Fine-grained locking: Unlike traditional synchronized collections, which use a single lock to guard the entire data structure, ConcurrentHashMap uses multiple locks at a finer granularity. This finer-grained approach minimizes the need for thread synchronization and improves scalability.4. Read and write coherence: ConcurrentHashMap provides strong consistency guarantees for both reads and writes. When a thread reads a value from ConcurrentHashMap, it sees the most recent write to that key. Similarly, when a thread modifies a key-value pair, it ensures that subsequent reads will see the updated value.Part 2: Common UsesConcurrentHashMap is widely used in various scenarios whereconcurrent access to a shared data structure is required. Here are some common use cases:1. Caching: ConcurrentHashMap is often used as a thread-safe cache implementation. Multiple threads can concurrently access and update the cache, ensuring efficient and synchronized access to the cached data.2. Parallel Processing: ConcurrentHashMap is useful in parallel processing tasks, such as map-reduce operations. It allows multiple threads to process different segments of the data independently, improving the overall performance of the computation.3. Event handling: In event-driven systems, where multiple threads process incoming events concurrently, ConcurrentHashMap provides a safe and efficient mechanism for handling shared state and coordinating the processing of events.4. Session management: ConcurrentHashMap is suitable for managing user sessions in multi-threaded web applications. Each session can be stored in a separate bucket, and multiple threads can simultaneously access different sessions without blocking eachother.Part 3: ConsiderationsWhile ConcurrentHashMap offers several benefits for concurrent programming, there are some important considerations to keep in mind:1. Iteration: Iterating over a ConcurrentHashMap introduces some complexities. While it allows concurrent reads, modifications during iteration may lead to inconsistencies or throw ConcurrentModificationException. To mitigate this, ConcurrentHashMap provides iterators that are immune to concurrent modifications.2. Load factor: The load factor determines the ratio of occupied buckets to the total bucket count. It affects the performance of operations, such as put and resize. Choosing an appropriate load factor is crucial to maintain a balance between space efficiency and performance.3. Value observations: ConcurrentHashMap's strong consistency guarantees apply to individual get and put operations. However,the compound operations, such as putIfAbsent or compute, may not provide atomicity or isolation guarantees. Special care should be taken when using these compound operations in concurrent scenarios.4. Memory overhead: Due to the need for maintaining multiple locks and additional bookkeeping, ConcurrentHashMap has higher memory overhead compared to a regular HashMap. This overhead may be a concern if memory usage is a critical consideration in the application.Conclusion:ConcurrentHashMap is a powerful concurrency utility in Java, offering efficient and thread-safe access to shared data structures. By leveraging segmentation, lock striping, and fine-grained locking, it achieves high concurrency while maintaining strong consistency guarantees. It is commonly used in caching, parallel processing, event handling, and session management scenarios. However, when using ConcurrentHashMap, considerations such as iteration complexities, load factor, value observations, and memoryoverhead should be taken into account to ensure correct and efficient concurrent programming.。
第一部分、计算机算法常用术语中英对照Data Structures 基本数据结构?Dictionaries 字典?Priority Queues 堆?Graph Data Structures 图?Set Data Structures 集合?Kd-Trees 线段树?Numerical Problems 数值问题?Solving Linear Equations 线性方程组?Bandwidth Reduction 带宽压缩?Matrix Multiplication 矩阵乘法?Determinants and Permanents 行列式?Constrained and Unconstrained Optimization 最值问题? Linear Programming 线性规划?Random Number Generation 随机数生成? Factoring and Primality Testing 因子分解/质数判定? Arbitrary Precision Arithmetic 高精度计算? Knapsack Problem 背包问题?Discrete Fourier Transform 离散Fourier变换? Combinatorial Problems 组合问题?Sorting 排序?Searching 查找?Median and Selection 中位数?Generating Permutations 排列生成?Generating Subsets 子集生成?Generating Partitions 划分生成?Generating Graphs 图的生成?Calendrical Calculations 日期?Job Scheduling 工程安排?Satisfiability 可满足性?Graph Problems -- polynomial 图论-多项式算法? Connected Components 连通分支?Topological Sorting 拓扑排序?Minimum Spanning Tree 最小生成树?Shortest Path 最短路径?Transitive Closure and Reduction 传递闭包? Matching 匹配?Eulerian Cycle / Chinese Postman Euler回路/中国邮路? Edge and Vertex Connectivity 割边/割点?Network Flow 网络流?Drawing Graphs Nicely 图的描绘?Drawing Trees 树的描绘?Planarity Detection and Embedding 平面性检测和嵌入? Graph Problems -- hard 图论-NP问题?Clique 最大团? Independent Set 独立集?Vertex Cover 点覆盖?Traveling Salesman Problem 旅行商问题? Hamiltonian Cycle Hamilton回路? Graph Partition 图的划分?Vertex Coloring 点染色?Edge Coloring 边染色?Graph Isomorphism 同构?Steiner Tree Steiner树?Feedback Edge/Vertex Set 最大无环子图? Computational Geometry 计算几何? Convex Hull 凸包?Triangulation 三角剖分?Voronoi Diagrams Voronoi图?Nearest Neighbor Search 最近点对查询?Range Search 范围查询?Point Location 位置查询?Intersection Detection 碰撞测试?Bin Packing 装箱问题?Medial-Axis Transformation 中轴变换? Polygon Partitioning 多边形分割? Simplifying Polygons 多边形化简?Shape Similarity 相似多边形?Motion Planning 运动规划?Maintaining Line Arrangements 平面分割? Minkowski Sum Minkowski和?Set and String Problems 集合与串的问题? Set Cover 集合覆盖?Set Packing 集合配置?String Matching 模式匹配? Approximate String Matching 模糊匹配?Text Compression 压缩?Cryptography 密码?Finite State Machine Minimization 有穷自动机简化? Longest Common Substring 最长公共子串? Shortest Common Superstring 最短公共父串? DP——Dynamic Programming——动态规划? recursion ——递归?第二部分、编程词汇?A2A integration A2A整合?abstract 抽象的?abstract base class (ABC)抽象基类?abstract class 抽象类?abstraction 抽象、抽象物、抽象性?access 存取、访问?access level访问级别?access function 访问函数?account 账户?action 动作?activate 激活?active 活动的?actual parameter 实参?adapter 适配器?add-in 插件?address 地址?address space 地址空间?address-of operator 取地址操作符?ADL (argument-dependent lookup)?ADO(ActiveX Data Object)ActiveX数据对象? advancedaggregation 聚合、聚集?algorithm 算法?alias 别名?align 排列、对齐?allocate 分配、配置?allocator分配器、配置器?angle bracket 尖括号?annotation 注解、评注?API (Application Programming Interface) 应用(程序)编程接口?app domain (application domain)应用域?application 应用、应用程序?application framework 应用程序框架?appearance 外观?append 附加?architecture 架构、体系结构?archive file 归档文件、存档文件?argument引数(传给函式的值)。
High-Concurrency Locking in R-TreesMarcel KornackerUniversit¨a t Hamburg22527Hamburg,Germany kornacke@rmatik.uni-hamburg.deDouglas Banks University of California at Berkeley Berkeley,CA94720-1776,U.S.A dbanks@AbstractIn this paper we present a solution to the problem of concurrent op-erations in the R-tree,a dynamic access structure capable of storing multidimensional and spatial data.We describe the R-link tree,a variant of the R-tree that adds sibling pointers to nodes,a technique first deployed in B-link trees,to compensatefor concurrent structure modifications.The main obstacle to the use of sibling pointers is the lack of linear ordering among the keys in an R-tree;we overcome this by assigning sequence numbers to nodes that let us reconstruct the“lineage”of a node at any point in time.The search,insert and delete algorithms for R-link trees are designed to completely avoid holding locks during I/O operations and to allow concurrent modifi-cations of the tree structure.In addition,we further describe how to achieve degree3consistency with an inexpensive predicate locking mechanism and demonstrate how to make R-link trees recoverable in a write-ahead logging environment.Experiments verify the per-formance advantage of R-link trees over simpler locking protocols. 1IntroductionOne of the future requirements for databases is the ability to support multidimensional and spatial data.This support is crucial for non-traditional database applications such as CAD,Geographical Information Systems(GIS)or temporal databases,to name a few.A fundamental aspect of support for spatial data is efficient handling of range queries along multiple dimensions;one example is the retrieval of points that intersect a given query rectangle.The most widespread This work was done while the author was visiting the University of California,Berkeley.It was supported by the Defense Advanced Re-search Projects Agency under grant T63-92-C-0007and the Army Research Office under grant91-G-1083.The author’s new address:University of California at Berkeley,Berkeley,CA94720-1776,U.S.A.;e-mail:mar-cel@.Permission to copy without fee all or part of this material is granted provided that the copies are not made or distributed for direct commercial advantage,the VLDB copyright notice and the title of the publication and its date appear,and notice is given that copying is by permission of the V ery Large Data Base Endowment.To copy otherwise,or to republish,requires a fee and/or special permission from the Endowment.Proceedings of the21st VLDB ConferenceZ¨urich,Switzerland1995access method,the B-tree[BaMc72],does not handle multi-dimensional data very well.[Gutt84]proposed a spatial access method designed to handle multidimensional point and spatial data.Unlike other spatial access methods[Bent75,Niev84,Robi81,LoSa90], R-trees are not restricted to storing multidimensional points, but can directly store multidimensional spatial objects,which are represented by their minimal bounding box.R-trees have not benefited greatly from the many refinements and opti-mizations of concurrency mechanisms that have been de-signed for B-trees.A particular modification of B-trees,the B-link tree[LeYa81],connects the siblings on each level via rightward-pointing links and compensates for unfinished splits by moving across these links.This technique avoids holding locks during I/O operations and has recently been shown to offer the highest degree of concurrency among locking protocols for B-trees[SrCa91,JoSh93].Unfortu-nately,the B-link tree technique expects the underlying key space to have a linear order and therefore cannot be directly applied to R-trees.In this paper we present R-link trees[BKS94],an exten-sion of R-trees motivated by Lehman and Yao’s work that shows similiar locking behavior and therefore offers the same high degree of concurrency as B-link trees.We circumvent the requirement for linearly ordered keys by introducing a system of sequence numbers that are assigned to each page and are used to determine when and how to traverse sibling links.Our deletion algorithm removes nodes as soon as they become empty without the need for a separate reorganization phase,a novel feature for link-style trees.The remainder of this paper is organized as follows.Sec-tion2provides background on R-trees and B-link trees.Sec-tion3goes into detail on the difficulties in applying the struc-tural modification of B-link trees to R-trees,presents the for-mal definition of an R-link tree and describes the search and insert algorithms.It also sketches the deletion algorithm. Section4shows how to make scan results serializable.Next, section5presents a way to make R-link trees recoverable in a write-ahead logging environment.Section6presents perfor-mance results and section7provides a discussion of relatedwork.Finally,section8gives a brief summary.2Background and Motivation2.1R-TreesAn R-tree is a hierarchical,height-balanced indexing struc-ture similar to a B-tree.Like B-trees,R-trees have leaf nodes and internal nodes with entries in leaf node pointing to disk records and entries in internal nodes pointing to other internal nodes or leaf nodes.A node corresponds to a disk page and has between and entries().The only ex-ception is the root,which may hold between and entries. Unlike in B-trees,the keys in R-trees are multi-dimensional objects that have no linear order defined on them.An entry in a leaf node of an R-tree contains a disk tu-ple identifier and the key,which is either a multidimensional point or a rectangular outline of the spatial object it repre-sents.An entry in an internal node summarizes the node it points to by storing as the key the minimum bounding rect-angle that tightly encloses all the keys in the child node. The information contained in an R-tree is thus hierarchi-cally organized and every level in the tree provides more detail than its ancestor level.A pointer to an indexed ob-ject is stored in the tree only once,but keys at all levels are allowed to overlap,possibly making it necessary even for point queries to descend multiple subtrees.Since multidi-mensional keys cannot be linearly ordered there is no single “correct”place for a particular key;consequently,it can con-ceivably be stored on any leaf.The search process in an R-tree is very different from that in a B-tree due to the lack of ordering and the possible overlap among keys.For example,tofind all rectangles intersecting a given range the search process has to descend all subtrees that intersect or fully contain the range specification.Further-more,since an entry in an internal node summarizes the child node with a bounding rectangle,there is no guarantee that the child contains any keys of interest,even if its bounding rect-angle intersects the search range.The strategy for placing entries on leaf nodes should there-fore create an efficient index structure that optimizes retrieval performance.The literature has identified a variety of pa-rameters for the layout of keys on nodes that affect retrieval performance[BKSS90,SRF87].These parameters are:min-imal node area,minimal overlap between nodes,minimal node margins or maximized node utilization.It is impossible to optimize all of these parameters simultaneously.For in-stance,the original R-tree proposal[Gutt84]minimizes over-lap between nodes;the R*-tree variation[BKSS90]mini-mizes overlap for internal nodes and minimizes the covered area for leaf nodes.When a new key has to be inserted in an R-tree,we attempt to descend to the geometrically optimal leaf by picking at each level the subtree with the optimal bounding rectangle. In contrast to B-trees,R-trees have to recursively update the ancestor keys if a leaf’s bounding rectangle changes. Splitting a node also deviates noticeably from the B-tree pattern.Whereas the B-tree simply“cuts”the sequence of keys stored in the overflowing node in half,the R-tree will partition the key sequence according to its layout strategy. Figure1illustrates the scenario of a split where the layout strategy is minimal overlap.Note in this example that it is impossible to completely avoid any overlap.2.2Concurrency in B-TreesWhen multiple search and insertion processes are carried out on a B-Tree in parallel,their interactions may be interleaved in a way that leads to incorrect results.Simple solutions to this problem have the insertion process lock the entire tree or the subtree that needs to be modified due to anticipated splits.V ariations thereof lock the upper levels of the subtree so that only readers can still access it[BaSc77].In essence all of these methods employ top-down lock-coupling:when descending the tree a lock on a parent node can only be re-leased after the lock on the child node is granted.When doing lock-coupling,locks are held during I/O operations,which should be particularly detrimental to high concurrency of in-sert and delete operations in R-trees.When descending the tree via lock-coupling,locks can be acquired in shared mode, allowing many search and update operations to descend the tree concurrently.But update operations can block on cou-pled read locks during tree ascent.For B-trees,tree ascent only takes place as a result of a node split or deletion.For R-trees,it also takes place in order to propagate a changed bounding rectangle.The latter can be expected to occur far more frequently and unpredictably than node splits or dele-tions.A radically different approach was proposed in[LeYa81]. Instead of avoiding possible conflicts by lock-coupling,the tree structure is modified so that the search process has the opportunity to compensate for a missed split.The crucial addition is the rightlink,a pointer going from every node to its right sibling on the same level(excluding the rightmost nodes).When a node is split and a new right sibling is cre-ated,it is inserted into the rightlink chain directly to the right of the old one.The effect is that all nodes at the same level are chained together through the rightlinks.Furthermore,the sequence of the nodes in the rightlink chain reflects the se-quence of their corresponding entries in the ancestor level; in short,the rightlink chain orders the nodes by their keys. This is true for every level of the B-Tree and is a result of the splitting strategy in B-Trees,where the upper half of the key sequence is moved to the new right sibling.Searching in a B-link tree can therefore be done without lock-coupling.When descending to a node that was split after examining the parent,the search process discovers that the highest key on that node is lower than the key it is looking for and correctly concludes that a split must have taken place. It compensates for this split,or multiple splits,by moving3578624816724+135Figure 1:Overlap can be unavoidable after a split.right until it comes to a node where the highest key exceeds the search key.Likewise,an insertion process does not have to employ lock-coupling when descending the tree to the correct leaf.If the leaf has to be split,it is also possible to avoid lock-coupling when installing a new entry in the parent,as is shown in [LaSh86]and [Sagi86].As soon as the page has been split and the new right sibling inserted into the rightlink chain,the insertion process can drop the lock on the leaf that was overflowing and then acquire a lock on the parent,possibly moving right to compensate for concurrent splits and possibly splitting the parent itself,leading to recursive splits up the tree.This locking strategy is deadlock-free and offers very high concurrency because search and insertion processes only need to hold one node locked at a time.3R-Link TreesWe would like to achieve high concurrency for operations on R-trees,and given the similarities in structure and function-ality between B-trees and R-trees,it would seem natural to try to apply the ideas and algorithms of [LeYa81]to create an “R-link tree.”This is not a trivial matter,however,because R-trees differ from B-trees on a number of important points and the B-link tree strategy itself is insufficient.The source of this problem is the lack of ordering on R-tree keys.The core of the link-tree strategy is to account for splits that have not updated the parent by moving to the right.To implement that strategy we must answer two questions:how do we detect that the child has split and how do we limit the extent to which we move right.For R-trees,the latter question is not only relevant for efficiency,it is relevant because we descend multiple subtrees and may therefore end up visitingthe same node twice if we move too far to the right.For B-link trees,the answer to those questions lies in the linear ordering that is defined on the key space and the fact that the nodes on a single level are ordered through the rightlink chain by their keys.This allows us to detect a split and to determine when to stop moving right based on key comparisons.It is impossible to apply the same strategy to R-trees.First of all,keys cannot conclusively tell us when a node has split.It is possible that the key of an entry in the parent intersects the search range,even if the keys in the child do not.In this case,it would be wrong to conclude that the child has split and move ing a notion analogousto the high key in a B-tree,we could also recompute the bounding rectangle of the child node and compare that to the key seen in the parent in order to detect a split.Doing so might cause us to miss a split because taking entries out of a node does not necessarily change its bounding rectangle (see figure 1).But even if we are sure that a node has split,it is impossible to limit the extent to which we move right by doing key comparisons.Adjacent nodes in the rightlink chain might have a bounding rectangle that intersects our search range,even though they did not take part in the split we detected.As mentioned before,we must not visit these nodes via rightlink traversal because we will visit them later on while searching a different path in the tree.We need to provide each operation on an R-tree with a way of determining whether it has accurate information about the current state of any node it might examine,and how it should proceed if it finds that its information is obsolete.3.1Structure of an R-Link TreeClearly,if we are to provide high concurrency operations on R-trees through a rightlink-style approach,we need to add some additional information to the standard R-tree that can be used to correctly traverse a constantly-changing tree struc-ture.We propose fulfilling this requirement by assigning log-ical sequence numbers (LSNs)to each node.These numbers are similar to timestamps in that they monotonically increase over time but are not synchronous with any real-time clock.The node entries and the search and insert algorithms are de-signed so that these LSNs can be used to make correct deci-sions about how to move through the tree.An R-link tree is basically a standard R-tree,as described in section 2.1,with two key differences.First,like a B-link tree,all of the nodes on any given level are chained together in a singly-linked list via rightlinks.It is very important to note that,unlike the B-link tree,the chain of nodes on a given level does not represent an ordering of the keys from smallest to greatest,and,in general,it will not reflect the ordering of their corresponding entries in the nodes on the parent level.This is illustrated in figure 2.In the rightlink chain of the parent level,precedes .However,,which is a child of ,does not precede .This situation can arise if splits and moves the entry for over to the new right sibling,.Second,the main structural addition is an LSN in each node that is unique within the tree.These LSNs give us a564215x 2y 4c5w 1z p1p2c2c1c3c4Figure 2:A subsection of an R-link tree (circled numbers are LSNs).mechanism for determining when an operation’s understand-ing of a given node is obsolete.Each entry in a node con-sists of a key rectangle,a pointer to the child node and the LSN that it expects the child node to have.If a node has to be split,the new right sibling is assigned the old node’s LSN and the old node receives a new LSN.A process traversing the tree can detect the split even if it has not been installed in the parent by comparing the expected LSN,as taken from the entry in the parent node,with the actual LSN.If the lat-ter is higher than the former,there was a split and the process moves right.When the process finally meets a node with the expected LSN,it knows that this is the rightmost node split off the old node.R-link trees can be formally defined as a balanced tree in which index nodes consist of a set of entries and a rightlink .On each level of the tree the rightlinks form the nodes on that level into a singly-linked list.Entries on internal nodes consist of a key rectangle ,a pointer ,and an expected LSN so that either:1.(normal case –child-level structure fully reflected in par-ent)points to a child node ,where is the LSN of ,and the rightlink of points to NULL or to some node which is also pointed to by some entry in the level above.In figure 2,entry points to node ;both ’s LSN and ’s LSN are matching and ’s rightlink points to ,which is also pointed to by entry in .2.(uninstalled split in child level compensated by rightlink)points to a child node ,where the LSN of is greater than ,and there exists a node whose LSN is ,which can be reached by following rightlinks from through nodes with LSNs higher than which are not pointed to by any entry in the level above.also has no entry in the level above,but its right sibling,if is not the end of the chain,does.An example from figure 2is the entry in .The LSN in is smaller than that of and equal to the LSN of ,which in turn can be reached from by following one rightlink.Node does not yet have an entry in the level above,but its right sibling,node ,ispointed to by entry in .This situation was caused by a split of node ,which has not yet been installed in the parent node.Note that in either case,the right sibling R of the node whose LSN matches the entry’s expected LSN has an entry in some node on the parent level.This entry can generally be anywhere in the parent level.Node in figure 2is an example where this entry is in a node to the left of the parent node of .3.2The Search AlgorithmA search process has to find all the entries on leaf nodes that fall in the query range,and since keys can overlap,it will generally have to descend multiple subtrees within the index.The underlying data structure to support this is a stack,which is used to remember which nodes still have to be visited.The process starts by initially pushing the root on the stack.A node that has not yet been examined is popped off the stack and all entries in the node that qualify for the search condition are in turn pushed onto the stack and the whole process is repeated.If a leaf node is popped off the stack,we can return the qualifying entries that we find on it.The search is terminated when the stack is empty.In order to remember a yet-to-be visited node on the stack,we push the pointer and the LSN we found in the correspond-ing entry.If we examine a node and find that the LSN is higher than the one on the stack,we know that this node has been split in the meantime.To compensate for the split we must examine all of the nodes that have been split off from this node since we first pushed its entry.Therefore we push nodes to the right of ,up to and including the node with the LSN equal to the expected LSN for .The search process,as shown in figure 3is implemented with an iterator-like interface.The first call to search will return the first record and subsequent calls to continueSearch will return all other matching items until the stack is empty.3.3The Insertion AlgorithmAn insertion proceeds in two stages:first we must locate the leaf to insert the key on,remembering the path we take assearch(Rect r):push(stack,[root,root-lsn])return reduceStack(r)continueSearch(Rect r):return reduceStack(r)reduceStack(Rect r):while not empty(stack)[p,p-lsn]=pop(stack)if(p is pointer to indexed tuple)return pelser-lock(p)if p-lsn LSN(p)traverse the rightlink chainstarting at rightlink(p)to the node withLSN=p-lsn;for each node n along therightlink chain:r-lock(n)push(stack,[n,LSN(n)])r-unlock(n)endfor all entries e of pintersecting r:push(stack,[node-pointer(e),LSN(e)])r-unlock(p)endendFigure3:The search algorithmwe descend the tree;next,then the new key is inserted and the leaf possibly split.If the leaf’s bounding rectangle has changed,we must propagate the change to its ancestor node. This is accomplished by backing up the tree until we arrive at a parent node that does not need to be changed.If the leaf was split we must also install a new entry in the parent node. If it is full,we recursively split nodes up the tree until we arrive at a node with enough free space or alternatively split the root.Note that in contrast to a B-tree insertion,we must back up the tree for two reasons:splitting a node requires the installation of a new entry and changing the bounding rectangle requires the adjustment of the keys in the ancestor nodes.1The latter step is missing in B-trees.When descending the tree to a leaf,we choose the geomet-rically optimal subtree at each level.However,if we detect that a node has been split,we must take into consideration all the nodes to the right of the original node that were split off it. As in the search algorithm,this chain is delimited to the right by the node carrying the original LSN.When we are updat-1These two changes have to be applied atomically in order to guarantee the R-link tree properties of section3.1.Atomic changes are further dealt with in section5.ing parent keys during ascent,we also must move right if the parent node has split.Notice in this case that no LSN is nec-essary to recognize the split or delimit the rightlink chain.An entry in a node can be uniquely identified by the node pointer2 it contains;for that reason,we move right until wefind the node with that particular entry.When backing up the tree one level,we employ lock-coupling;that is,we hold the child node write-locked until we obtain a write-lock on the parent.If we do not couple the locks,another inserter causing a split can overtake us and install the changes before us.When it isfinally our turn, we would update the key,unaware of the previous changes to the child node.The key would not reflect the bounding rectangle of the child anymore and the tree structure would be incorrect.3This is a deviation from the locking behavior in B-link trees,where lock-coupling during ascent is not necessary.In practice,this should make little difference to the achievable degree of concurrency,because parent nodes can be expected to still reside in main memory and therefore no locks are held during I/O operations.The implementation of the insert algorithm is shown infig-ure4.The individual procedures do the following:findLeaf descends to the geometrically optimal leaf,recording the path along the way andfinally write-locks the leaf;extendParent is called after a leaf split to recursively install an entry for the new leaf in the parent and to propagate the changed bounding rectangle of the old leaf;updateParent is called only after a leaf’s bounding rectangle has changed in order to recursively propagate the new bounding rectangle of that leaf.To keep the algorithm as short as possible,we do not consider the case where multiple insertions are carried out at the same time and a splitting of the root by one inserter goes unnoticed by the others.This is problematic when the remaining inserters have to change the bounding rectangle of what they believe is the root or if the“root”has to be split a second time.A solution can be found in[LaSh86] and[Sagi86];both suggest using an anchor page to make root splits visible to other insertion processes and allow for compensating actions.There is one restriction to consider when installing a new child entry in a parent node,which might not be immediately obvious.If the parent node was split,we would like to insert the new entry on the geometrically optimal node in the chain. Unfortunately,this is not possible and the new entry has to be installed on the same page that contained the old entry(or its new right sibling if the insertion causes a split).The reason for this can be seen infigure5.Suppose a search process is looking for item contained in leaf node(situation a).2Node pointers do not change after a split because the original node is kept in place.3It is not necessary to do lock-coupling when moving right.If another inserter overtakes us while we are moving right and splits the nodes we are examining,it is impossible for us to miss the entry for the child node since a split can move entries only right.insert(Rect r):stack=findLeaf(root,r,root-lsn)leaf=pop(stack)insert r on leafif leaf was splitextendParent(leaf,bounding-rect(leaf),LSN(leaf),right sibling,bounding-rect(right sibling),LSN(right sibling),stack)elseif bounding-rect of leaf changedupdateParent(leaf,bounding-rect(leaf),stack)elsew-unlock(leaf)endendStackfindLeaf(RTreeNode p,Rect r,LSN p-lsn): if p is leafw-lock(p)elser-lock(p)endif p-lsn LSN(p)p=geometrically optimal node to taker in rightlink chain starting at pand ending at node withLSN=p-lsnendif p is leafpush(stack,p)return stackelsee=entry on p leading togeometrically optimal subtreefor rpush(stack,p)r-unlock(p)returnfindLeaf(e,r,LSN(e))endextendParent(RTreeNode p,Rect p-rect,LSN p-lsn,RTreeNode q,Rect q-rect,LSN q-lsn,Stack stack):if empty(stack)create new root(w-locked)with2entries:-for child,key:p-rect-for sibling,key:q-rectw-unlock(q)w-unlock(p)w-unlock(new root)returnelseparent=pop(stack)w-lock(parent)find the entry for node p in parentor one of its right siblings;let parent=that node andentry=that entryw-unlock(q)w-unlock(p)update entry with p-rect and p-lsninsert q on parentif parent splitextendParent(parent,bounding-rect(parent),LSN(parent),right sibling,boundingRect(right sibling),LSN(right sibling),stack)elseif bounding-rect(parent)changedupdateParent(parent,bounding-rect(parent),stack)elsew-unlock(parent)endendendupdateParent(RTreeNode p,Rect p-rect,Stack stack): if empty(stack)w-unlock(p)returnelseparent=pop(stack)w-lock(parent)find the entry for node p in parent orone of its right siblings;letparent=that node andentry=that entryw-unlock(p)update key in entry with p-rectif bounding-rect(parent)changedupdateParent(parent,bounding-rect(parent),stack))elsew-unlock(parent)endendFigure4:The insertion algorithmNode and are split independently and item is moved to the new leaf(situation b).If the splitting of is already reflected in the parent level,the search process will navigate directly to.In situation c,the entry for has been installed in,because this results in a geometrically better node layout than a placement on,and the entry in for has also beenx x 77877x 7788c’(a)(b)(c)f c f c f’c’f c f’Figure 5:An incorrect structure modification.updated (key and LSN).In this case,the search process will be unable to find leaf because it never considers going to .On the other hand,if the entry for had been installed in ,the search would have been successful.In principle,this requirement could deteriorate the tree structure by forcing its keys to have more overlap than nec-essary.We expect this potential drawback to have little effect in practice because only in rare cases will the geometrically optimal node differ from the node containing the entry for the old child.3.4DeletionA key deletion from a leaf node is a combination of the search and insert algorithms.First,we have to find the leaf holding the key we are interested in.After the key is removed from the leaf,we have to propagate the changed bounding rectangle up the tree,in the same manner as updateParent does for an insertion.The locking behavior is the same as for the search and insert algorithms and therefore key deletion is also deadlock-free.If we want to maintain a high storage utilization,we have to remove nodes as soon as they become empty,so that they can be reused for subsequent splits in the tree.Since we do not employ lock-coupling when descending the tree,we have to deal with the problem of invalid pointers when removing nodes.In order to let descending operations detect that they followed an invalid pointer and reached a deleted node,we introduce a tree-global generation counter,which is a logical timestamp similar to an LSN.Each node in the tree stores its generation value in its header.On node removal,the global counter is incremented and the new value assigned to the deleted node,so that removed nodes have chronologically increasing generation values.A descending operation can now detect an invalid pointer by remembering the value of the global generation counter when reading the pointer and comparing this value to the one stored in the node header when finally visiting the node.A higher counter in the node indicates that it must have been removed after the pointer was read.In this case,a descending operation has to be restarted from the lowest valid ancestor node.The same compensating measure is necessary when the operation follows an invalid rightlink.This is detected if the generation value of the right sibling is higher than the global counter at the time thepointer to the original child node was read (at the time the parent,not the original child,was examined).The R-link tree structure as postulated in section 3.1has to be slightly relaxed to accomodate the case where a node pointer is invalid.The removal of the node and its corresponding entry in the parent are carried out recursively,also removing the parent if it becomes empty and so forth.Note that it is impossible for us to cheaply access the left sibling of the deleted node in order to reset its rightlink.But because a rightlink in the R-link tree is only needed to compensate for splits as long as these are not fully reflected in the parent level,we need not fix the rightlink chain when removing a node.An operation that crosses an invalid rightlink detects this and restarts itself;all subsequent operations will see a parent that fully reflects the child level and will not have to traverse the rightlink anymore.We can therefore safely ignore the invalid rightlink and as a consequence do not have to access the left sibling at all.Contrast this with B-link trees,where the rightlink chain at the leaf level is also used by range scans and a node deletion would therefore have to reset the rightlinksof neighboring nodes.During the entire node deletion process,we only have to keep two nodes locked at a time:the node to be deleted and its parent node.4ConsistencyA common requirement for concurrent access in database systems is degree 3consistency ,or repeatable read (RR)[Gray78].A simple solution employed for B-trees is to keep all leaf pages that were read by an index scan locked until the end of the transaction.This strategy depends on the linear order of the keys and leaves and the fact that index scans always visit a contiguous sequence of leaves.In R-trees,keys can be inserted on arbitrary leaves and an insertion into the key range of a previous scan can succeed even though the scan locked all of the leaves it read.If the insertion commits,the new key will be visible to a re-scan,giving rise to a phantom.An example for a two-dimensional key space is shown in figure 6.Boxes and are the bounding rectangles of internal nodes,boxes to are the bounding rectangles of leaves and the dashed box is the query rectangle.If the scan is looking for overlapping keys,only leaf qualifies and consequently it is the only leaf that is。