java_java基础语法

news2024/10/6 5:53:02

注释

  1. 什么是注释
    简单来说注释就是在程序中对代码进行解释说明的文字,方便自己和其他人理解,查看,不会影响程序的正常执行
  2. 注释有哪些
    单行注释
    // 注释内容只能写一行
    
    多行注释
    /*
    注释内容1
    注释内容2
    */
    
    文档注释
    /**
    注释内容
    注释内容
    */
    

字面量

告诉程序员,数据在程序中的书写格式
字面量分类

字面量类型说明实例
整数不带小数的数字123,456
小数带小数的数字3.1415926
字符必须使用单引号,且有且只有一个字符‘a’,‘b’,‘c’
字符串必须使用双引号,内容可有可无" ",“hello world”
布尔布尔值,表示真和假,只有两个值true和falsetrue,false
一个特殊的值空值null值为null

变量

变量就是用来储存一个数据的内存区域,(可以理解成盒子),且里面储存的数据可以变化
在这里插入图片描述

变量使用注意事项

  1. 什么类型的变量储存什么类型的值
  2. 同一个范围变量名不能重复
  3. 变量在使用时要有初始值
  4. 变量存在访问范围

数据的存储形式:二进制

计算机底层都是一些数字电路(开关),用开表示0,关表示1,这些0和1的形式就是二进制
数据在计算机底层都是采用二进制储存的

数据以二进制的形式储存在内存中,内存是一个非常精密的部件,包含了上亿个电子元器件,它们很小,达到了纳米级别。这些元器件,实际上就是电路;电路的电压会变化,要么是 0V,要么是 5V,只有这两种电压。5V 是通电,用1来表示,0V 是断电,用0来表示。所以,一个元器件有2种状态,0 或者 1。

我们通过电路来控制这些元器件的通断电,会得到很多0、1的组合。例如,8个元器件有 28=256 种不同的组合,16个元器件有 216=65536 种不同的组合。虽然一个元器件只能表示2个数值,但是多个结合起来就可以表示很多数值了。

我们可以给每一种组合赋予特定的含义,例如,可以分别用 1101000、00011100、11111111、00000000、01010101、10101010 来表示 我、是、马、牛、逼、! 这几个字,那么结合起来 1101000 00011100 11111111 00000000 01010101 10101010 就表示”我是马牛逼!“。

一般情况下我们不一个一个的使用元器件,而是将8个元器件看做一个单位,即使表示很小的数,例如 1,也需要8个,也就是 00000001。
1个元器件称为1比特(Bit)或1位,8个元器件称为1字节(Byte),那么16个元器件就是2Byte,32个就是4Byte,以此类推:
8×1024个元器件就是1024Byte,简写为1KB;
8×1024×1024个元器件就是1024KB,简写为1MB;
8×1024×1024×1024个元器件就是1024MB,简写为1GB。

现在,我们就知道1GB的内存有多少个元器件了。我们通常所说的文件大小是多少 KB、多少 MB,就是这个意思。

单位换算:
1Byte = 8 Bit
1KB = 1024Byte = 210Byte
1MB = 1024KB = 220Byte
1GB = 1024MB = 230Byte
1TB = 1024GB = 240Byte
1PB = 1024TB = 250Byte
1EB = 1024PB = 260Byte
我们平时使用计算机时,通常只会设计到 KB、MB、GB、TB 这几个单位,PB 和 EB 这两个高级单位一般在大数据处理过程中才会用到

数据类型

数据类型就是约束变量储存数据的形式,在java中数据类型分为基础数据类型和引用数据类型

基础数据类型

基础数据类型是Java在底层帮我们实现好的,我们可以直接使用。它包含了数值型,字符型和布尔型。
基础数据类型分为4类八种

数据类型关键字取值范围内存占用
整数byte-128~1271
整数short-32768~327672
整数int(默认)-2147483648~21474836474
整数long-9223372036854775808L~9223372036854775807L8
浮点数float1.401298e-45到3.402823e+384
浮点数double(默认)4.9000000e-324到1.797693e+3088
字符char0-655352
布尔booleantrue,false1

整数类型

byte:

byte又叫字节,是最小的整数类型,它占一个字节的大小,也就是8位(bit),它可以存储 -2^7
~ 2^7-1,(之所以减一是因为有一个编码拿去表示0了)
-1范围的数据,也就是-128~127,默认值是0

byte minByte = -128;                //byte最小值
byte maxByte = 127;                 //byte最大值

byte overMinByte = -129;            //编译出错
byte overMaxByte = 128;             //编译出错

byte overMinByte = (byte) -129;     //结果为127
byte overMaxByte = (byte) 128;      //结果为-128
short:

short最小的整数类型是byte,short是倒数第二小的,它占两个字节的大小,也就是16位(bit),所以它有能力存储的整数类型数据范围是
-215~215-1,也就是-32768~32767,默认值同样是0。

short minShort = -32768;                 //short最小值
short maxShort = 32767;                  //short最大值
 
short overMinShort = -32769;             //编译出错
short overMaxShort = 32768;              //编译出错
      
short overMinShort = (short) -32769;     //结果为32767
short overMaxShort = (short) 32768;      //结果为-32768
int:

int类型比short类型更大,它占用四个字节,能表示的范围是从 -231~231-1,也就是-2147483648~2147483647(这个最好能记住,面试的时候有些面试官可能会问到),int类型也是Java中整数默认的类型,默认值同样是0

int minInt = -2147483648;                 //int最小值
int maxInt = 2147483647;                  //int最大值 
 
int overMinInt = -2147483649;             //编译出错
int overMaxInt = 2147483648;              //编译出错
 
int overMinInt = (int) -2147483649;       //编译出错       
int overMaxInt = (int) 2147483648;        //编译出错

int minInt = (int) -2147483649L;          //结果为2147483647
int maxInt = (int) 2147483648L;           //结果为-2147483648

int minInt = -2147483648 - 1;             //结果为2147483647
int maxInt = 2147483647 + 1;              //结果为-2147483648
long:

long型是整数类型中最大的,它占8个字节也就是64位,表示范围就是 -263~263-1
,数太大了,默认值是0L,一般情况下,long可以满足绝大部分的需求

long minLong = -9223372036854775808L;            //long最小值
long maxLong = 9223372036854775807L;             //long最大值 

long overMinLong = -9223372036854775809L;        //编译出错
long overMaxLong = 9223372036854775808L;         //编译出错

long minLong = -9223372036854775808L - 1;        //结果为9223372036854775807

long maxLong = 9223372036854775807L + 1; //结果为-9223372036854775808

小数类型

Java支持两种浮点类型的小数,float和double:

float:占4个字节,共32位,称为单精度浮点数。
double:占8个字节,共64位,称为双精度浮点数。

float:

float和double都是遵循IEEE 754标准的,该标准分别为32位和64位浮点数规定了二进制的表示形式。IEEE 754采用二进制的科学技术法来表示浮点数。对于float浮点数,用一位表示数字的符号,用8位来表示指数(底数为2),用23位来表示尾数,如下图所示。对于double浮点数,用1位表示数字的符号,用11位表示指数(底数为2),52位表示尾数。
在这里插入图片描述
下图就是float的二进制存储规则。

S(1位)E(8位)M(23位)N(32位)
符号位000.0
符号位0不等于0(-1)s*2 -126*(0.M)
符号位1~254不等于0(-1)s*2 E-127*(1.M)
符号位255不等于0表示特殊数字

在IEEE 754标准中,约定小数点左边有一位隐含位。就是上表中“0.M”和“1.M”中的“0”和“1”.当指数取值范围为1~254时,这个隐含位就是1,这样实际上尾数的有效位是24位。即为:1.MMMMMMMMMMMMMMMMMMMMMMM。

下面以5.0这个float类型的数字举例说明其二进制形式。

首先将5.0转换成二进制流形式,但是怎么转换呢?Java的Float类提供了一个静态方法可以帮我们将float的数字转换成其二进制流对应的int类型,我们再用Integer的toBinaryString()方法就可以得到二进制流了,具体如下图所示(Java默认小数是double类型,所以定义float类型的数需要加一个字母“f”说明一下):
在这里插入图片描述
注意:这一大串数字是31位并不是32位啊,其实是因为省略了最前面的符号位,因为5.0是整数,符号位是0,所以将其省略了,所以float类型5.0的二进制流是:

0 10000001 0100000000000000000000
符号位S是0,指数部分E为10000001,也就是无符号整数129,尾数部分的隐含位是1,所以实际尾数是1.01000000000000000000000,所以对应的二进制表达式为:
在这里插入图片描述

在这里插入图片描述

double:

double类型采用64位来表示浮点数,精确度比float类型要高,表示形式与float类似,这里就不再写了

char类型

char是字符类型,Java对字符采用Unicode字符编码。由于计算机的内存只能存储二进制数据,因此必须对各个字符进行编码。所谓字符编码,是指用一串二进制数据来表示特定的字符。常见的字符编码有很多,这里就不一一列举了,这里主要说一下Java采用的Unicode字符编码。

Unicode字符编码

Unicode收录了全世界所有语言文字中的字符,是一种跨平台的字符编码,UCS是Unicode字符编码的通用字符集。其有两种编码方案:

  • 两字节(16位)编码,采用这种编码方式的字符集称为UCS-2。Java语言采用的就是两字节的编码方案。
  • 四字节(32位)编码(实际只用了31位,最高位必须为0),采用这种编码方案的字符集称为UCS-4.

前面提到计算机只能存储二进制数据,所以存储字符需要对其进行编码,而Java采用Unicode的UCS-2字符集,占两个字节,例如字符’a’的编码二进制形式为0000 0000 0110 0001,对应16进制0x0061,十进制97,所以以下几种方式是等价的。

char c = 'a';
char c1 = '\u0061';
char c2 = '0x0061';
char c3 = '91';

一般情况下,我们在编写代码的时候,如果需要使用char型数据,我们会直接用字符对变量进行赋值,而不会用这个字符对应的编码,因为我们也记不住它哈哈,但是有些字符在赋值的时候会报错,
在这里插入图片描述

这是因为chat 类型必须是有且仅有一个字符

还有一些特殊的字符也不能直接输入,比如’ ,因为这些字符都是Java中可能需要使用到的特殊字符,所以编译器就自动飘红,这时候就需要我们使用转义字符来转义这些特殊字符。
在这里插入图片描述

boolean类型

boolean也叫布尔类型,是一种取值非真即假也就是true或false的数据类型,Java代码在编译的时候会将boolean用int或者byte替换,用0表示false,用非0正整数表示true,但Java编译器不容许直接用数字对boolean直接赋值

boolean flag = true;            //正确
boolean flag1 = false;          //正确

在这里插入图片描述

引用类型

Java中引用类型分为三种,分别是类引用类型,接口引用类型和数组引用类型

Object object;             //类引用类型
List<Object> list;         //接口引用类型
int[] array;               //数组引用类型

和基础数据类型不同的一点是,引用数据类型可以赋值为null,也就是空的意思

Object object = null;             //类引用类型
List<Object> list = null;         //接口引用类型
int[] array = null;               //数组引用类型

常用的引用类型有很多,Jdk给我们提供了很多核心引用类型供我们使用,当然我们也可以自定义引用类型来使用(除了数据引用类型),为了缩短文章的篇幅,下一章我会详细讲解引用类型的一些常见问题,比如定义和使用等等

数据溢出

long maxLong = 9223372036854775807L + 1; //结果为-9223372036854775808

在计算机中,当数据大小超过计算机所用数据类型表示范围的时候,就会发生数据溢出。比如下面这行代码,上面已经说过byte的最大值为127,那这行代码会发生什么问题呢?看的出来是一个类型不匹配的问题,因为在java中整数类型默认是int,当我们要存储的数值在byte范围之内,编译器会帮我们把数据自动识别成byte类型,但是当我们输入一个超过byte类型表示范围的数据,编译器就会提示我们:“这是一个int类型的数据,你不可以用byte类型来存储”。
在这里插入图片描述
这时我们就可以将130强制转换成byte类型。但是大家可能会问了,130明明已经超过byte类型可以表示的范围了啊,为什么不会报错呢?
在这里插入图片描述
这就涉及到了数据溢出的问题,让我们先看看输出这个num到底会得到几。
在这里插入图片描述
为什么是-126呢?首先我们要知道,在计算机中,数据是用其二进制补码形式来存储的,过程如下:首先130会被当成int类型存储,int是4个字节32位,也就是0000 0000 0000 0000 0000 0000 1000 0010,转成byte类型会丢弃高三字节部分,也就是1000 0010,因为正数的源码,补码,反码相同,所以130的补码还是1000 0010,将其转换成源码:补码(1000 0010)->反码(1000 0001)->原码(1111 1110)为-126,所以最后的转换结果就是-126。128溢出就是-128,129溢出就是-127(相信大家已经明白了,如果不明白的话大家可以给我留言,我会出一篇相关文章的)。其它类型的溢出也是如此。

byte num = 130;                         //编译出错
byte castNum = (byte) 130;              //结果为-126

关键字标识符

Java有一组关键字,这些关键字是保留字,不能用作变量、方法、类或任何其他标识符
1)48个关键字:abstract、assert、boolean、break、byte、case、catch、char、class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、interface、instanceof、long、native、new、package、private、protected、public、return、short、static、strictfp、super、switch、synchronized、this、throw、throws、transient、try、void、volatile、while。

2)2个保留字(现在没用以后可能用到作为关键字):goto、const。

3)3个特殊直接量:true、false、null。

关键字描述
abstract非访问修饰符。用于类和方法:抽象类不能用于创建对象(要访问它,必须从另一个类继承)。抽象方法只能在抽象类中使用,并且它没有主体。主体由子类(继承自)提供
assert用于调试
boolean只能存储真值和假值的数据类型
break从循环或switch块中断开
byte可以存储-128和127之间的整数的数据类型
case在switch语句中标记代码块
catch捕获由try语句生成的异常
char用于存储单个字符的数据类型
class定义一个类
continue继续到循环的下一个迭代
const定义一个常量。不在使用中改用final
default指定switch语句中的默认代码块
do与while一起使用以创建do-while循环
double可以存储1.7e−308 到 1.7e+308
else用于条件语句中
enum声明枚举(不可更改)类型
exports导出包含模块的包。Java9中的新特性
extends扩展类(表示一个类是从另一个类继承的)
final用于类、属性和方法的非访问修饰符,使它们不可更改(无法继承或重写)
finally与异常一起使用,无论是否存在异常都将执行的代码块
float可以存储3.4e−038 到 3.4e+038
for创建for循环
goto不在使用中,没有任何功能
if一个条件语句
implements实现一个接口
import用于导入包、类或接口
instanceof检查对象是特定类的实例还是接口的实例
int可以存储从-2147483648到2147483647的整数的数据类型
interface用于声明仅包含抽象方法的特殊类型的类
long可以存储从-9223372036854775808到9223372036854775808的整数的数据类型
module声明一个模块。Java9中的新特性
native指定方法不是在同一Java源文件中实现的(而是在另一种语言中实现的)
new创建新对象
package声明一个包
private用于属性、方法和构造函数的访问修饰符,使它们只能在声明的类中访问
protected用于属性、方法和构造函数的访问修饰符,使它们可以在同一个包和子类中访问
public用于类、属性、方法和构造函数的访问修饰符,使它们可以被任何其他类访问
requires指定模块内所需的库。Java9中的新特性
return已完成方法的执行,并可用于从方法返回值
short可以存储从-32768到32767的整数的数据类型
static用于方法和属性的非访问修饰符。无需创建类的对象即可访问静态方法/属性
strictfp限制浮点计算的精度和舍入
super指超类(父)对象
switch选择要执行的多个代码块之一
synchronized非访问修饰符,指定一次只能由一个线程访问方法
this指方法或构造函数中的当前对象
throw创建自定义错误
throws指示方法可能引发的异常
transient非访问修饰符,指定属性不是对象持久状态的一部分
try创建try…catch语句
var声明一个变量。Java10中的新特性
void指定方法不应具有返回值
volatile指示属性不是本地缓存的线程,并且总是从"主内存"中读取
while创建while循环

注意 true false null 虽然不能叫做关键字,但它们是不能用作标识符的文字和保留字。

  1. 标识符
    标识符就是一些由字符,符号组合起来的名称,用于给类,方法,变量等起名的

  2. 标识符要求

  • 基本要求: 由数字,字母,下划线(_)和美元符($)组成
  • 强制要求: 不能以数字开头,不能是关键字,区分大小写
    在这里插入图片描述
  1. 命名规范
  • 变量名称: 满足标识规则,建议全英文,有意义,首字母小写,且满足小驼峰模式,例如 int studentAge = 108
  • 类名称: 满足标识符规则,建议全英文,有意义,首字母大写,且满足大驼峰模式,例如 HelloWorld.java

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/451998.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++中常用的四种类型转换方式

C中常用的四种类型转换方式 一、相关概念二、static_cast 转换2.1、说明2.2、返回值2.3、示例 三、const_cast 转换3.1、说明3.2、返回值3.3、示例 四、dynamic_cast 转换4.1、说明4.2、返回值4.3、示例 五、reinterpret_cast 转换5.1、说明5.2、返回值5.3、示例 总结 一、相关…

【大数据之Hadoop】十八、MapReduce之压缩

1 概述 优点&#xff1a;减少磁盘IO、减少磁盘存储空间。 缺点&#xff1a;因为压缩解压缩都需要cpu处理&#xff0c;所以增加CPU开销。 原则&#xff1a;运算密集型的Job&#xff0c;少用压缩&#xff1b;IO密集型的Job&#xff0c;多用压缩。 2 压缩算法对比 压缩方式选择时…

深入浅出DPDK-1.1主流包处理硬件平台

DPDK用软件的方式在通用多核处理器上演绎着数据包处理的新篇章&#xff0c;而对于数据包处理&#xff0c;多核处理器显然不是唯一的平台。支撑包处理的主流硬件平台大致可分为三个方向&#xff1a;硬件加速器、网络处理器、多核处理器。 根据处理内容、复杂度、成本、量产规模…

【数据结构】- 链表之单链表(上)

文章目录 前言一、链表1.1链表的概念及结构1.2链表的分类 二、单链表(上)2.1单链表的实现2.2单链表实现的两种结构解析2.3单链表的接口实现2.3.1头插2.3.2温馨提醒 宝子~2.3.3头插完整版代码2.3.4尾插2.3.5温馨提醒 宝子~2.3.6总而言之 总结 前言 “偶尔失意 是为了压住翘起的…

web事件循环

事件循环的应用&#xff1a;计时器 promise ajax node 单线程是异步产生的原因&#xff0c;事件循环时异步的实现方式 1.浏览器进程模型 进程&#xff1a;程序运行需要自己专属的内存空间&#xff0c;可以把这块内存空间简单的理解为进程。 每个应用至少又一个进程&#xff…

头文件stdafx.h的作用(常见错误),以及如何在空项目中添加该头文件

头文件stdafx.h的作用&#xff08;常见错误&#xff09;&#xff0c;以及如何在空项目中添加该头文件 预编译头文件 stdafx.hfatal error C1083: 无法打开包括文件:“stdafx.h”: No such file or directoryfatal error C1083: 无法打开预编译头文件:“Debug\Win32RegistryClas…

【LeetCode】72. 编辑距离

72. 编辑距离&#xff08;困难&#xff09; 思路 状态定义&#xff1a;「dp[i][j] 表示第一个字符串到 i &#xff0c;第二个字符串到 j&#xff0c;要想使得 word1 word2 &#xff0c;最少的修改次数」。状态转移方程&#xff1a; 当第 i 位和第 j 位对应的字符相同时&#x…

【youcans 的 OpenCV 学习课】21. Haar 小波变换与 Haar 特征检测(上)

专栏地址&#xff1a;『youcans 的图像处理学习课』 文章目录&#xff1a;『youcans 的图像处理学习课 - 总目录』 【youcans 的 OpenCV 学习课】21. Haar 小波变换与 Haar 特征检测&#xff08;上&#xff09; 1. 小波变换1.1 小波变换基本概念例程 17_1&#xff1a;常用小波族…

学会这几个Word技巧,让你办公省时又省力(一)

如果在学习&#xff0c;或者工作上&#xff0c;你经常需要用到Word文档&#xff0c;那下面这几个Word技巧一定要学习收藏&#xff0c;提升工作效率不是一点点。 ​1. 快速定位对象 有时候文档的内容很长&#xff0c;涉及很多表格、图片、图表&#xff0c;想要检查一下所有的图…

linux从入门到精通 第一章centos7里tomcat,jdk,httpd,mysql57,mysql80的安装

配置centos运行环境 一 安装httpd,tomcat,jdk,mysql1 安装httpd2 安装tomcat3 安装jdk 三 MySql的安装1 克隆出来两台虚拟机2 配置虚拟机3 链接xhsell4 链接xftp5 mysql8的安装6 mysql5.7的安装 一 安装httpd,tomcat,jdk,mysql 1 安装httpd 下载httpd yum -y install httpd关…

微信小程序php+vue校园达达互助平台快递代取系统

校园快递互助平台所要实现的功能分析&#xff0c;对于现在网络方便&#xff0c;校园快递互助平台要实现管理员、学生、兼职者可以直接在平台上进行查看自己所需数据信息&#xff0c;这样既能节省管理的时间&#xff0c;不用再像传统的方式&#xff0c;如果用户想要进行交流信息…

精读《利用 GPT 解读 PDF》

hatPDF 最近比较火&#xff0c;上传 PDF 文件后&#xff0c;即可通过问答的方式让他帮你总结内容&#xff0c;比如让它帮你概括核心观点、询问问题&#xff0c;或者做观点判断。 背后用到了几个比较时髦的技术&#xff0c;还好有 ChatGPT for YOUR OWN PDF files with LangCha…

【Java实战篇】Day11.在线教育网课平台--RBAC

文章目录 一、用户授权1、RBAC2、资源服务授权流程3、授权相关的数据模型4、查询用户权限5、细粒度授权 二、找回密码与注册1、找回密码2、注册 三、需求&#xff1a;学生选课1、添加选课需求分析2、数据模型设计2、查询课程信息接口3、添加选课接口4、完善controller 一、用户…

每日一个小技巧:1招教你手机消除笔怎么用

在日常生活中&#xff0c;我们经常需要在手机上进行编辑和涂改&#xff0c;但是由于各种原因&#xff0c;我们可能会做出错误或者不满意的修改。这时候&#xff0c;消除笔就派上用场了。消除笔可以帮助我们在不影响其他内容的前提下&#xff0c;对错误或者不满意的修改进行撤销…

java实现大气无风环境污染物扩散模拟

一、扩散公式整理 二、编写java代码实现 String strJson InterpolationUtils.calGaussPlumePoints0(z,height,q,lon,lat, size,scale,airStable); return strJson.replaceAll("NaN","0").replaceAll("Infinity",String.valueOf(q)); String st…

【机器学习】P23 决策树、熵和信息增益

决策树、熵与信息增益 决策树熵信息增益Python 与 决策树 决策树 决策树&#xff08;Decision Tree&#xff09; 是一种基于树形结构的分类算法&#xff0c;它通过一系列的询问&#xff08;也称为测试或判定条件&#xff09;来判断一个数据实例属于哪个类别。 以一个案例贯穿…

Go | 一分钟掌握Go | 2 - 集成开发工具

作者&#xff1a;Mars酱 声明&#xff1a;本文章由Mars酱编写&#xff0c;部分内容来源于网络&#xff0c;如有疑问请联系本人。 转载&#xff1a;欢迎转载&#xff0c;转载前先请联系我&#xff01; 工具介绍 编码是一门传统手艺活&#xff0c;手艺好不好很重要&#xff0c;器…

高精度气象模拟软件WRF实践技术

【原文链接】&#xff1a;高精度气象模拟软件WRF(Weather Research Forecasting)实践技术及案例应用https://mp.weixin.qq.com/s?__bizMzU5NTkyMzcxNw&mid2247538149&idx3&sn3890c3b29f34bcb07678a9dd4b9947b2&chksmfe68938fc91f1a99bbced2113b09cad822711e7f…

开发者必读!常用的二维码生成器 API 推荐

引言 二维码是一种能够存储信息的图形码&#xff0c;它在现代社会中扮演着越来越重要的角色。生成二维码的过程通常需要使用二维码生成器&#xff0c;而现在有很多二维码生成器 API 可以供开发者使用。 在本文中&#xff0c;我们将讨论二维码生成器 API 的工作原理、应用场景…

CHAPTER 6: 《DESIGN A KEY-VALUE STORE》 第6章 《设计一个键值存储》

CHAPTER 6: DESIGN A KEY-VALUE STORE 键值存储(也称为键值数据库)是一种非关系数据库。每一个唯一标识符存储为与其关联值的键。这种数据配对称为“键-值”对。 在一个键-值对中&#xff0c;键必须是唯一的&#xff0c;与该键相关联的值可以是通过密钥访问。键可以是纯文本或…