AntDB-M数据库锁分析,不要错过!

2023-11-06

AntDB数据库始于2008年,在运营商的核心系统上,为全国24个省份的10亿多用户提供在线服务,具备高性能、弹性扩展、高可靠等产品特性,峰值每秒可处理百万笔通信核心交易,保障系统持续稳定运行近十年,并在通信、金融、交通、能源、物联网等行业成功商用落地。锁是OLTP数据库中保证事务一致性的一种重要手段,本文主要阐述AntDB-M(AntDB内存引擎)的锁相关设计。

概述

AntDB-M的锁的设计分为两层,1)元数据锁;2)数据锁。 在获取数据锁之前,必须先获取元数据锁,从而保护元数据与底层数据的一致性。

元数据锁

元数据锁代表了一个连接对于表元数据的访问能力。 AntDB-M根据操作语句对元数据、数据的不同要求,设计了多种元数据锁类型。以满足对元数据、数据的不同读、写限制、以及并发能力。 由于排他锁具有较高优先级,并且较低的并发度。因此为了避免阻塞大量其他类型的锁请求,在排他锁获取一定数据量后,会优先授权其他锁。

数据锁

数据锁代表对一个数据对象(表、记录)的访问能力。能力分为两种:1)读;2)写(读、删除、更新)。根据数据对象访问特点,通过锁类型、锁粒度、锁范围等对数据对象赋予了不同的访问限制。

后文主要为数据锁相关设计。

数据锁

锁类型

  • 共享锁:一个数据对象(表、记录),同一时刻可以被加锁多次。代表具有读的能力。增加数据访问的并发度。
  • 排他锁:一个数据对象(表、记录),同一时刻仅可以被加锁加一次。代表具有写的能力。确保数据的完整性、一致性。
  • 锁粒度:标识锁的数据对象表、记录,分为:表锁、行锁。
  • 意向锁:意向锁为表锁的一种,表示表内“可能”有行锁。意向锁分为意向共享锁(IS)、意向排他锁(IX)。 意向锁实际为提高表锁(表共享锁、表排他锁)效率而设置的一种锁。意在避免申请表锁时去判断是否有行锁。
  • 锁兼容:AntDB-M的锁分为两级:表、记录。申请锁时必须先申请表级、然后申请记录级(有需要时)。锁兼容是指同一个数据对象(表、记录)上申请相同类型、或者不同类型锁时的许可情况。兼容则允许申请,不兼容则不允许申请。锁类型明细:意向共享锁IS、意向排他锁IX、表共享锁TS、表排他锁TX、记录共享锁RS、记录排他锁RX;

锁的兼容性如下。

纵轴:已有锁; 横轴:待申请锁。

"Y":兼容; "-":不兼容;

表级

表1:表级锁

记录级

表2:记录级锁

锁与闩锁

锁的对象是表的数据对象(表、记录)。对于记录上的锁分为两种:行锁、闩锁。其中行锁用于非MVCC模式下对行的读写控制,闩锁用于MVCC模式下对记录的读写控制。

锁设计

每个锁都有其所归属的事务,或者说锁的申请者是事务。每个事务都有其拥有的、待申请的表锁、行锁链表。

表锁

每个表都有一个表锁信息,包括:表锁链表、已经加锁个数、锁个数(含待加锁)。 每个事务在开始对表访问前,都需要先对表申请相应的表锁。所有申请都按先后顺序排队。

加锁校验

如果一个事务在申请表锁时,表已经被删除、或者表被重命名,则不允许对表进行加锁。

表锁申请

在对一个表访问前,都需要先对表申请合适的表锁。

  • IS:select;
  • IX:insert, update, delete; select ... for update;
  • TS:lock tables ... read;
  • TX:lock tables ... write; alter table, drop table, truncate, rename;

表锁升级

一个事务,对于一个表只应当持有一种类型的表锁。 这里需要从几个方面来说,首先,从锁的兼容性,对于不兼容的锁,不允许同时持有,这类情况必须选择出一种出来。其次,从锁的约束力来看,排他锁约束力要高于共享锁(TX>TS、IX>IS),表锁高于表意向锁。再次,相同类型的锁重复申请没有必要。 结合之前的锁的兼容性来看,如表3:锁兼容性:‘-’表示不兼容的,‘X’表示同级不需重复申请的。剩下的只有A,B,C,D四种情况,这四种情况通过锁的约束力来看,都有不同的约束力,最终以较高约束力的锁为准。

表3:锁兼容性

综上,一个事务只需要一种类型的表锁。对于已经持有某类表锁时,再次申请表锁采取锁升级来处理。锁升级包括两类:1)对已申请锁升级,即改变已经持有锁,改变成功才算加锁成功;2)对新申请锁升级,不改变已经持有锁,加锁立即成功。

表4:表锁升级规则

横轴:已持有锁;纵轴:待申请锁
-:不需要升级;其他:升级目标

(1)加锁等待

不管是首次申请的锁,还是对已有的锁进行升级,都要判断其他事务已经申请到的表锁与当前申请的表锁是否兼容。

  • 当前表上没有锁:直接加锁成功。
  • 兼容:表上所有其他事务持有的锁,与当前申请的锁兼容,则加锁成功。
  • 不兼容:表上所有其他事务持有的锁,存在与当前申请的锁不兼容,当前事务需要阻塞等待持有不兼容锁的事务对表解锁。

注:加锁等待过程中,如果表被删除、或者被重命名,则仍然认为加锁失败。

(2)等待超时

每种表锁类型都会有相应的加锁计数,阻塞等待必须等到所有不兼容的锁都解锁。等待超时时间可配置,默认为50ms,最大600ms,超时则加锁失败。 对于DDL操作,超时时间要长一些,默认为1800ms,可配置,最大7200ms。

(3)不同事务间影响

不同事务间存在并发,从表锁的角度来看事务之间相互影响有两个因素:1)锁不兼容,等待持有锁的释放锁;2)并发处理,表锁临界资源等待;其中因素2为次要原因,影响很小,可以忽略。造成锁等待的主要因素为锁不兼容。 若与表上已有锁不兼容,则事务必须等待其他事务对其持有的不兼容锁释放。若兼容,则无需等待。事务的阻塞与否,只与锁不兼容相关,与事务创建先后顺序、锁申请先后顺序无关。

(4)锁的分配顺序

同一时刻,表上可能存在多个阻塞的表锁申请,这些被阻塞的表锁类型可能相同,可能不同。 一个表上的所有表锁,不管是否持有锁,都按申请先后顺序排队。但是该顺序并不影响锁的阻塞与否。加锁成功与否,只与已持有锁是否兼容相关,与申请先后顺序无关。

行锁

行锁只有两种1)共享锁RS;2)互斥锁RX。 一行记录上可以加多个共享锁,只能有一个互斥锁。

(1)事务与行锁

每个事务都有自己的锁链表,记录了该事务持有的行锁。行锁的拥有者是事务。

(2)行锁链表

表记录的每行都有自己的锁链表,记录了已经持有或者正在等待的锁对象。 链表按照加锁申请顺序排队。

(3)授予条件

对于一个锁的授予,总体原则:

  • 互斥原则,RX锁只能授予一个,且无其他RS锁;
  • 共享原则,RS锁可以授予多个,且无其他RX锁;
  • 顺序原则,沿着行锁链表从前向后依次授予; 不能乱序,否则会产生系统实现导致的数据不一致。

基于以上原则,锁授予条件如下,不满足条件的必须等待。

  • 当前唯一的锁对象:只有当前一个锁对象,满足一切原则,可以立即授予锁。
  • 申请RX锁,必须位于链表首部,没有其他锁:RX是互斥的,除了待申请的RX锁,不能有其他任何锁存在。 如果不是位于链表首部,则会违反顺序原则。 如果有其他锁,也违反顺序原则。
  • 申请RS锁,该锁行锁链表前方锁对象都已经加锁,且无RX锁:前方锁对象都已经加锁,确保顺序原则,具体实现为获取RS锁后,通知锁链表后方锁对象可以获取锁。无RX锁,确保RX互斥原则。

(4)新建行锁

一个事务对一行记录首次加锁、或者解锁后再次申请锁时,需要为该事务新建一个行锁对象,添加到行锁的锁链表尾部。同时会被添加到事务的行锁列表中。 对于新建的行锁对象立即判断是否可以授予锁,不满足条件的必须等待条件满足。

(5)行锁升级

由于RX锁具有排他性,因此认为RX锁比RS锁等级更高,即约束力更强。一个事务对于一行记录,只允许持有一种锁类型,避免过多的锁数量,也没必要,因为RX锁也具有读属性。 当一个事务已经持有某行的共享锁时,根据持有锁与申请锁等级判断是否需要对锁进行升级。有三种情况:1)同级不升级;2)对申请锁升级;3)对已有所升级;

  • 同级不升级:当申请锁等级与已持有锁相同时,无论是申请RS、RX锁,都不需要重新申请新的锁,使用已经持有的锁。此时,无需等待,立即加锁成功。
  • 对申请锁升级:当申请锁等级低于已持有锁时,即已持有RX锁,申请RS锁,无需申请新的锁,使用已经持有的锁,即对申请的锁升级为直接使用已持有的锁。此时,无需等待,立即加锁成功。
  • 对已有所升级:当申请锁等级高于已持有锁时,即已持有RS锁,申请RX锁,需要对已有的RS锁进行升级。 升级过程如下:

1. 申请锁对象

为给该行申请一个RX锁对象;

2. 判断是否可以立即升级
立即升级条件:1)已持有锁处于行锁链表头部;2)没有其他事务持有RS锁。 如果满足条件,就直接将已持有锁的锁类型调整为RX锁。同时释放刚申请的RX锁对象。

3. 加入行锁链表

如果不能立即升级,则将RX锁对象加入到行锁链表中。加入方式与新建行锁添加到行锁链表尾部不同。升级锁是添加到行锁链表中已经持有锁的最后一个锁的后边。这样做的目的是对锁升级时,不必等待其他未授予锁的锁对象。尤其如果这些未授予的锁中有RX时,会违反顺序原则。 行锁同时会被添加到事务的行锁链表中。

4. 等待授予
待升级锁加入链表后,便进入等待前边所有的锁的释放。一旦等到通知,此时意味着前边的锁都已经释放。此时需要将已经持有的锁从行锁链表移除,将锁授予新添加的RX锁对象。同时会将事务的该行的行锁更新为该行锁。

(6)临界资源

行锁的临界资源为保证行锁独占、行锁链表管理的必需资源。每行记录必须要有对应的临界资源。AntDB-M在为一个表创建出一块新的数据块空间时,就会为每行记录分配好临界资源,尽管数据空间中的记录行还没实际使用。

  • 空间问题:这样就有一些资源浪费的嫌疑,不过临界资源开销很小1000万行记录,也就40M的内存开销,并且表数据块空间不是一下开辟很多块,当没有表空间容纳数据时才会新开辟,因此从空间资源角度是可以接受的。
  • 竞争问题:如果对多行公用一个临界资源,也会引入新的竞争问题,本来锁的不是同一行记录,却产生了竞争。对于热点数据可能会有较多的竞争,相对内存资源,CPU资源更为宝贵。
  • 无效唤醒:如两行R1,R2共享一个临界资源。正常情况下,一个行锁链表,前者释放,唤醒后者。但是两行共享一个临界资源,R1释放锁后,可能其行锁链表已经空了,原本没有必要。带来一个行锁链表无效唤醒的问题。在处理时必须小心处理。
  • 虚假唤醒:临界资源必须处理好虚假唤醒问题,在被唤醒后,必须检测当前是否满足锁的授予条件。

闩锁

为了提升MVCC对数据的并发读写性能,对于记录的读写并不加共享锁RS、或排他锁RX。而是通过闩锁来控制。闩锁本质上是一种读写锁。

行锁与闩锁区别

  • 不需要升级:闩锁不需要做锁升级。
  • 不需要链表:由于闩锁不涉及升级,因此只需要计数即可,不需要区分不同的闩锁对象。
  • 锁定时间更短:相对于行锁互斥锁的锁定时间更短。

总结

本文主要讲述了AntDB-M的数据锁的类型、粒度、兼容性。锁的具体设计上又分为表锁、行锁、闩锁。以及不同锁的申请、释放、升级过程,以及不同锁间的区别。限于篇幅,与锁相关的死锁检测、幻读、脏读相关内容没有涉及。

关于AntDB数据库

AntDB数据库始于2008年,在运营商的核心系统上,为全国24个省份的10亿多用户提供在线服务,具备高性能、弹性扩展、高可靠等产品特性,峰值每秒可处理百万笔电信核心交易,保障系统持续稳定运行近十年,并在通信、金融、交通、能源、物联网等行业成功商用落地。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AntDB-M数据库锁分析,不要错过! 的相关文章

  • 慢思维大脑:SOP流程的心理学背景

    1 背景介绍 慢思维大脑 SOP流程的心理学背景 慢思维是指人类大脑在处理复杂问题 做出重要决策时所采用的思考方式 它与快速 自动的快思维相对 主要通过以下几种方式表现 深入思考 慢思维会让人类大脑深入思考问题的本质 从而找出更深层次的解决
  • 心灵与大脑的沟通:如何让大脑更好地理解我们的情感

    1 背景介绍 心理学和人工智能之间的界限已经不断模糊化 尤其是在情感智能方面 情感智能是一种新兴的人工智能技术 旨在让计算机更好地理解和回应人类的情感 这篇文章将探讨如何让大脑更好地理解我们的情感 以及在这个过程中涉及的核心概念 算法原理
  • 人工智能与机器学习:未来的编程范式

    1 背景介绍 人工智能 Artificial Intelligence AI 和机器学习 Machine Learning ML 是现代计算机科学的重要领域之一 它们旨在让计算机能够自主地学习 理解和进化 以解决复杂的问题 随着数据量的增加
  • 技术管理者的核心能力在哪?

    作为管理者我曾经被下属当面问过 你为什么不写代码 诚然 我最近两年 代码越写越少 会越开越多 但 存在真的合理吗 我的核心能力应该是什么 看了一篇文章 它提出一个观点 技术管理者的核心能力在于技术判断力 通过在技术领域和非技术领域的长期积累
  • 【计算机毕业设计】实验室预约管理

    身处网络时代 随着网络系统体系发展的不断成熟和完善 人们的生活也随之发生了很大的变化 人们在追求较高物质生活的同时 也在想着如何使自身的精神内涵得到提升 而读书就是人们获得精神享受非常重要的途径 为了满足人们随时随地只要有网络就可以看书的要
  • 扬帆证券:产业化破题在即 人形机器人超预期演进

    大模型助力下的拐点 特斯拉A股产业链上 两笔重磅出资几乎一起现身 总规划超百亿元 1月4日 拓普集团公告 与宁波经济技能开发区办理委员会签署了 机器人电驱系统研发生产基地项目出资协议书 公司拟出资50亿元 建设机器人核心部件生产基地 此次出
  • 【计算机毕业设计】基于web的山东红色旅游信息管理系统

    有效的处理想要的相关信息和如何传播有效的信息 一直是人类不断探索的动力 人类文明火种的传承都是通过了多种媒介作为载体 也是随着社会生产力的发展不断的更新 随着互联网的到来 信息传播与管理都上升了一个新的台阶 并且方便应用的同时也要考虑信息传
  • 【计算机毕业设计】网上拍卖系统

    现代经济快节奏发展以及不断完善升级的信息化技术 让传统数据信息的管理升级为软件存储 归纳 集中处理数据信息的管理方式 本网上拍卖系统就是在这样的大环境下诞生 其可以帮助使用者在短时间内处理完毕庞大的数据信息 使用这种软件工具可以帮助管理人员
  • 38条Web测试经验分享

    1 页面链接检查 每一个链接是否都有对应的页面 并且页面之间切换正确 可以使用一些工具 如LinkBotPro File AIDCS HTML Link Validater Xenu等工具 LinkBotPro不支持中文 中文字符显示为乱码
  • 大数据毕业设计:python微博舆情分析系统+可视化+情感分析+爬虫+机器学习(源码)✅

    博主介绍 全网粉丝10W 前互联网大厂软件研发 集结硕博英豪成立工作室 专注于计算机相关专业 毕业设计 项目实战6年之久 选择我们就是选择放心 选择安心毕业 感兴趣的可以先收藏起来 点赞 关注不迷路 毕业设计 2023 2024年计算机毕业
  • 软件测试|SQLAlchemy环境安装与基础使用

    简介 SQLAlchemy 是一个强大的 Python 库 用于与关系型数据库进行交互 它提供了高度抽象的对象关系映射 ORM 工具 允许使用 Python 对象来操作数据库 而不必编写原生SQL查询 本文将介绍如何安装 SQLAlchem
  • 扬帆证券投资者必知:股票配股与增发的区别你清楚吗?

    配股和增发都是股票再融资的方式 不过二者有一定的区别 1 发行对象不同 配股是向原股东发售一定量股票 一般会以低于市价的价格发售 增发是向全体社会公众发行股票 即新老股东都能获得 2 发行前是否需要公告价格 配股会事先公告配股价 配股的定价
  • 【计算机毕业设计】电商个性化推荐系统

    伴随着我国社会的发展 人民生活质量日益提高 于是对电商个性化推荐进行规范而严格是十分有必要的 所以许许多多的信息管理系统应运而生 此时单靠人力应对这些事务就显得有些力不从心了 所以本论文将设计一套电商个性化推荐系统 帮助商家进行商品信息 在
  • 【计算机毕业设计】电影播放平台

    电影播放平台采用B S架构 数据库是MySQL 网站的搭建与开发采用了先进的java进行编写 使用了springboot框架 该系统从两个对象 由管理员和用户来对系统进行设计构建 主要功能包括 个人信息修改 对用户 电影分类 电影信息等功能
  • 【计算机毕业设计】二手图书交易系统

    随着世界经济信息化 全球化的到来和互联网的飞速发展 推动了各行业的改革 若想达到安全 快捷的目的 就需要拥有信息化的组织和管理模式 建立一套合理 动态的 交互友好的 高效的二手图书交易系统 当前的信息管理存在工作效率低 工作繁杂等问题 基于
  • 2024 人工智能与大数据专业毕业设计(论文)选题指导

    目录 前言 毕设选题 选题迷茫 选题的重要性 更多选题指导 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生
  • Redis分布式锁--java实现

    文章目录 Redis分布式锁 方案 SETNX EXPIRE 基本原理 比较好的实现 会产生四个问题 几种解决原子性的方案
  • CorelDRAW2024官方中文版重磅发布更新

    35年专注于矢量设计始于1988年并不断推陈出新 致力为全球设计工作者提供更高效的设计工具 CorelDRAW 滋养并见证了一代设计师的成长 在最短的时间内交付作品 CorelDRAW的智能高效会让你一见钟情 CorelDRAW 全称 Co
  • MongoDB - 库、集合、文档(操作 + 演示 + 注意事项)

    目录 一 MongoDB 1 1 简介 a MongoDB 是什么 为什么要使用 MongoDB b 应用场景 c MongoDB 这么强大 是不是可以直接代替 MySQL d MongoDB 中的一些概念 e Docker 下载 1 2
  • 使用企业订货软件的担忧与考虑|网上APP订货系统

    使用企业订货软件的担忧与考虑 网上APP订货系统 网上订货系统担心出现的问题 1 如果在订货系统中定错 多 货物了该怎么办 其实这也是很多人在网购或者是现实中经常会犯的一个错误 但是网上订货平台为大家提供了很多的解决方案 其中对于订单的修改

随机推荐

  • Qt打开指定目录并选中指定文件

    目录 方法一 使用Qt自带的方法 方法二 使用windows自带工具 有时自动生成文件之后 点击某个按钮我们希望能够自动跳转到文件所在目录 打开之后不依附于运行程序 可能还需要选中该文件 环境 win10 Qt5 9 6 MinGW 方法一
  • echarts引入china报错(The GeoJSON of the map must be provided)

    原因 echarts版本过高 ECharts 之前提供下载的矢量地图数据来自第三方 由于部分数据不符合国家 测绘法 规定 目前暂时停止下载服务 经过一番摸索 实践出两种方法 末尾附china json文件 没有乱码噢 解决方法1 使用ech
  • LINUX 环境安装 PROJ 并编译 ,QT 添加 PROJ库

    LINUX 环境安装GIS库 PROJ 并编译 QT 添加 PROJ库 介绍 proj库 是一个很方便的经纬度坐标转平面投影坐标转换库 在开发GIS应用时 可能需要进行GPS坐标计算两点之间的距离 测算两点连线的方位角 都可以利用这个开源的
  • 【 华为OD机试 2023】 单向链表中间节点(C++ Java JavaScript Python 100%)

    文章目录 题目描述 输入描述 输出描述 用例 题目解析 代码思路 C JavaScript Java Python 题目描述 求单向链表中间的节点值 如果奇数个节点取中间 偶数个取偏右边的那个值 输入描述 第一行 链表头节点地址 后续输入的
  • SqlServer查看表大小

    查看SqlServer 数据库中各个表多少行 SELECT A NAME B ROWS FROM sysobjects A JOIN sysindexes B ON A id B id WHERE A xtype U AND B indid
  • 微信小程序封装wx.request请求以及携带token

    首先在pages中新建一个api的文件夹 对ajax请求统一管理 文件夹中request js完成对wx request的封装 在index js中完成接口管理 目录以下图 ajax 在request js中对wx request进行封装
  • 2021年职场百态:半数互联网人被迫内卷下,年轻人开始青睐“铁饭碗”

    2021年 职场人因何而Emo 2021年 新冠疫情 新的经济发展阶段 以及新的人口趋势交叠 构成了当下社会的焦虑底色 而这一情绪反映到普罗大众的生活中 就是 Emo 冲上了2021年度热词榜 Emo 一词 原本是 emotional 的缩
  • 华为S9306交换机版本升级及补丁安装步骤

    文章目录 背景介绍 升级前的准备 开启S9306 FTP服务 WIN7 10远程登陆FTP交换机查看配置是否成功 备份S9306交换机配置及版本文件 正式升级新版本操作步骤 第一步 上传升级过渡版本 第二步 设置交换机升级版本为启动运行版本
  • 【深度学习】常见优化算法

    本文介绍常见的一阶数值优化算法 这些方法在现代神经网络框架 tensorflow caffe torch 中已经是标准配置 问题 设系统参数为 omega 对于样本 i i i 其代价函数为
  • ajax地图显示不出来,vue2.0加载不出echarts引用的百度地图

    1 点击选择其中一个选项就会进行ajax请求echarts并更新 现在是echarts的中加载的百度地图出不来 2 点击选项都能够正确获取到json数据 3 图表只显示了echarts中的visualMap 实际的地图并没有显示 4 lis
  • 手机存储路径问题

    今天项目一个问题涉及了手机文件存储 特此记录一下 一般手机存储分为 内部存储 和外部存储 内部存储路径获取方式有两种 String url Environment getExternalStorageDirectory File separ
  • Ztree:改变指定节点的文本样式

    Ztree 改变指定节点的文本样式 需求 打开一个页面后 生产树节点 需要改变节点的ICON和Font样式 一 更改节点的Font样式 1 更改setting属性的view对象的fontCss属性 view selectedMulti fa
  • 解锁云原生虚拟数仓 PieCloudDB Database 『第一期』

    拓数派旗下旗舰产品 PieCloudDB 采用领先的数仓虚拟化技术 为企业构建高安全 高可靠 高在线 坚如磐石 的云原生虚拟数仓 本系列文章将为大家介绍 PieCloudDB Database 最新动态和全新功能 相关视频 链接 产品试用
  • sqli-labs (less18-less19)

    less 18 头部注入 user agent 这里不补充http头的知识了 直接看源码可以看到 uname和passwd都有check input函数检查 所以直接这两个参数注入是不行的了 然后再继续看下去 有句sql语句有ip addr
  • 【多模态】12、MM-OVOD

    文章目录 一 背景 二 方法 2 1 框架总览 2 1 1 Text based classifiers from language descriptions 2 1 2 Vision based Classifiers from Imag
  • 用python开发一个炸金花小游戏

    众所周知 扑克牌可谓是居家旅行 桌面交友的必备道具 今天我们用 Python 来实现一个类似炸金花的扑克牌小游戏 先来看一下基本的游戏规则 炸 诈 金花又叫三张牌 是在全国广泛流传的一种民间多人纸牌游戏 游戏使用一副除去大小王的扑克牌 共
  • Java面经

    说在前面 自己为了准备面试Java后端开发准备的面经 部分有摘自其他网站 还有平时面试总结的 分享一下 Java开发基础 0 抽象类和接口的区别 语法 构造器 抽象类可以 接口不可以 具体方法 抽象类可以有 接口全是抽象方法 但在1 8以后
  • word论文排版和写作07:基于Zotero的参考文献格式管理

    写在前面 参考文献的样式管理应该算得上是word相较于latex的一大劣势了 如果没有特别要求的话 直接使用谷歌学术或者百度学术的几个标准的引用格式就可以 然而 大部分投稿的期刊或者会议总会有他们自己格式要求 使用latex只需要统一使用b
  • 时钟抖动(Jitter)的基本概念 【转载】

    时钟抖动 Jitter 的基本概念 李倩 发表于 2018 03 13 10 21 08 电子说 随着通信系统中的时钟速率迈入GHz级 抖动这个在模拟设计中十分关键的因素 也开始在数字设计领域中日益得到人们的重视 在高速系统中 时钟或振荡器
  • AntDB-M数据库锁分析,不要错过!

    AntDB数据库始于2008年 在运营商的核心系统上 为全国24个省份的10亿多用户提供在线服务 具备高性能 弹性扩展 高可靠等产品特性 峰值每秒可处理百万笔通信核心交易 保障系统持续稳定运行近十年 并在通信 金融 交通 能源 物联网等行业