详细讲解:Python中二进制以及数值的特殊性,在位运算中需要注意的点

二进制补码实战:用Python验证-128的存储与运算(附位操作技巧) 本文通过Python实战演示了二进制补码的存储与运算机制,重点解析了-128的特殊表示方式及其数学原理。文章提供了位操作技巧、补码转换公式和溢出检测方法,并应用于图像处理、网络协议解析等实际场景,帮助开发者深入理解计算机底层数据表示。 阅读详情

我对python大整数的实现,点击查看

  • 在之前的文章,我实现过Python的大整数,可以说,在python中是没有数值类型这一说的, 你可以为一个变量赋值为上千亿,也不会出错。 没有了 如java中的int, short, byte等对位数的限制。已知int由四个字节表示,那么就有4X8 = 32位 可以表示的范围就是 -2^31 到 2^31 -1。但是在Python中
# 参考大整数的实现,Python中的十进制是没有限制的。
>>> a = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000
>>> a
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Python中的二进制

  • 那么问题来了,既然十进制没有限制,那么二进制有没有限制呢? 答案是 没有
  • 首先要知道,在计算机中,数值都是以二进制形式保存的,所以任何编程时输入的10进制,都是转化为 2进制运算。整数不变(整数补码等于源码),负数则是利用其补码。
# 打印a的二进制形式,可以看到根本没有位数限制
>>> bin(a)
'0b1010010010111000110010101011000110100001010101100011111101010010010101110111000000000001101110001001000100011000010110010011100010001010011110100100100011101001101010111000011000111111011001111101010000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
  • 理解这些之后,就可以往下推论了,既然没有位数限制, 那也就是不存在溢出的情况!python的数值类型不存在溢出的情况。 像是java语言,当计算两个int数的和大于 int32位所能表示的时候,就会被截断!只要32位,那么就会返回错误的结果。
在java中:	
// 2^31 - 1 
int a = 2147483647;  
int b = 21474;
System.out.println(a + b);

得到结果将是
-2147462175

接着看,为什么int进制的表示是 -2^31 到 2^31 -1?

举个简单的例子,以4位二进制为例子:
4 位的:最高一位表示符号位
表示正数:
0000    0
0001    1
0010    2
0011    3
0100    4
0101    5
0110    6
0111    7
范围是 0 --> 2^3-1    也就是0 --> 7

负数的表示,原码:      但是在计算机中存储的都是补码形式:补码中用(-128)代替了(-0)!
									原码取反 + 1 --> 补码
1000    -0(-8)(第一个1既是符号位也可以表示数值位)  1111 + 1 --> 1000
1001    -1										1110 + 1 --> 1111
1010    -2										1101 + 1 --> 1110
1011    -3										1100 + 1 --> 1101
1100    -4										1011 + 1 --> 1100
1101    -5										1010 + 1 --> 1011
1110    -6										1001 + 1 --> 1010
1111    -7										1000 + 1 --> 1001
												反码
所以负数的表示是: -1 --> -2^3   也就是 -1 --> -8

总体表示范围是 -2^3 -- 2^3 - 1
  • 这就解释了 32位 int 类型表示数的范围了~

之后看一道位运算的算法题

力扣:371号算法题: 两整数之和

在这里插入图片描述

  • 这道算法题的本质,就是不希望你使用+号,而是了解计算机当中如何使用位运算去求 两个二进制数的 加法和。计算机组成原理中是有讲到的。
  • 思路:
举个例子假如说 4 + 5(正负数规律是一样的)
因为4 和 5的值比较小,方便计算,我们表示成 4位二进制即可
4: 0100
5: 0101

1. 在不考虑进位的条件下: 4 + 5:
	0100
	0101
	------
	0001
	
	1 + 1 = 0 ; 1 + 0 = 1; 0 + 0 = 0 恰好符合 异或的原则(同出0,异出1)
结论:异或运算就相当于是 无进位的加法。 

2. 如何计算进位:
先看看进位是多少, 我们相加得到进位放到下面
	0100
	0101
	------
	0100   # 这个数字表示该位计算后得到的进位
	
	1 + 1 进位是 1;  1 + 0 和 0 + 0 进位是 0,恰好符合 按位&的原则。
	
3. 但是进位是进到下一位的!,所以再执行 左移运算 <<
	 进位: 0100  左移
	 0100  << 1   变为   1000
	 此时左移后的进位 再 和  异或的无进位结果相加,就是 + 法运算的结果了
	 但是! 事情没这么简单,这个进位 和  异或的无进位结果相加 可能仍然产生进位,所以要不断循环这个过程,当进位为 0 时,    异或运算的无进位结果 就是正确的结果!。  就像 十进制中 3 + 4 = 7 一样,不需要考虑进位,结果是正确的,因为没有进位。

进位数值 加上 无进位加法计算的数值,就是最终结果( 所以要保证最终的计算,不再产生进位,那么无进位加法的结果就是正确的!)
  • 这就是整个进位的计算过程,下面上Python代码展示:
    • 代码十分简洁,a , b 表示加数,被加数, carry表示进位,当carry为0时停止(b是被加数,也是进位,因为进位 != 0, 还要加起来)
def getSum(self, a: int, b: int) -> int: 
        """
        :type a: int
        :type b: int
        :rtype: int
        """
        while b != 0:
            # 计算进位
            carry = (a & b) << 1 
            # 计算两数无进位和
            a = (a ^ b)
            b = carry
        return a
  • 分析上述过程就会发现一个致命错误!
假设输入测试用例, 1, -1,调用函数getSum(1, -1)
# 因为 数字较小,我们还是用 4位二进制进行模拟
1: 0001
-1: 1111

(1)
计算进位是否为0: (-1 & 1) << 1 = 2
	0001  &
	1111
	-------------
	0001  << 1  得:0010  结果10进制为: 2

计算无进位和: (-1 ^ 1) << 1 = -2
	0001 ^
	1111
	-------------
	1110   十进制为-2(和)

(2) 结果余数不为0,继续:
计算进位是否为0: (-2 & 2) << 1 = 4
	1110  &
	0010
	-------------
	0010  << 1  得:0100  结果10进制为: 4

计算无进位和: -2 ^ 2 = -2
	1110 ^
	0010
	-------------
	1100   十进制为-4(和)
	
(3)余数不为0继续
计算进位是否为0: (-4 & 4) << 1 = -8
	1100  &
	0100
	-------------
	0100  << 1  得:1000  结果10进制为: -8  (Python计算就开始出错了(按照4位二进制来说),结果会为8)

计算无进位和: -4 ^ 4 = -8
	1100 ^
	0100
	-------------
	1000   十进制为-8(和)

(关键一步到了!)
(4)余数不为0继续
计算进位是否为0: (-8 & -8) << 1 = 16( 正确的四位2进制,结果应该是 0!)
	1000  &
	1000
	-------------
	1000  << 1  注意!!!! 得:10000  结果10进制为: 16 (这里出现问题),本来应该去0的,但是确得到了 16,变为了 5位2进制表示。这就是Python特殊的地方! 无限制表示二进制数。  我们还假设得到的二进制数是0

(此时进位已经变为 0, 得到的最后异或结果(无进位加法),就是最终正确结果!)
计算无进位和: -8 ^ -8 = 0
	1000 ^
	1000
	-------------
	0000   十进制为0(和)
	
结论: 程序返回,得出最终正确结果为 0!!!

但是上面Python中的问题, << 左移 会无限增大一个二进制数,没有位数的限制(即使我们上面假设了4位2进制),
所以数字运算永不为0,永远不会得到结果!! 这就是Python在处理一些 位运算时会产生的问题, 因为没有明确的 2进制表示位数限制。

  • 解决: 就需要模拟带有 位数的限制。
  • 理解位数的意义: 假设32位 2进制(int)。 那么只要是数值运算结果数值不超过32位,都是正确的。 如果是16位的,那么16位以内的数值运算结果,也都是正确的,因为在计算机中存储就是以16位存储,没有多余的位数。
  • 通过掩码,模拟32位整数(只存储32位2进制),举个例子:
>>> bin(123123123123123)
'0b11011111111101011010110000001000111001110110011'
我们只要32位,就要设立一个掩码: mask = 0xFFFFFFFF (16进制表示,32位1)
& mask:
110111111111010 11010110000001000111001110110011
000000000000000 11111111111111111111111111111111  &
-------------------------------------------------
000000000000000 11010110000001000111001110110011
运算结果恰好是取后32位, 当一个二进制位数超过限制时,我们只要后32位。

要注意Python中两个数进行位运算,本身位数是不固定的,但是 哪个长,就以哪个为准,举例子:
>>> 1 ^ -1
-2   
# 结果为 -2 ,可能是
01
11
-----
10 --> 就是 -2
>>> (1 ^ -1) & 0xFFFFFFFF
4294967294

运算
1111 1111 1111 1111 1111 1111 1111 1110    (-2)-2的表示根据 0xFFFFFFFF的长度变长表示
1111 1111 1111 1111 1111 1111 1111 1111		(0xFFFFFFFF)
-----------------------------------------
1111 1111 1111 1111 1111 1111 1111 1110  (这个应该表示的是 -2的补码形式,但是python返回的,直接把他当做整数返回4294967294)

>>> bin(4294967294)
'0b11111111111111111111111111111110'
一样,验证了推论!

要想再得到原来的2,就要将这个反码数,转换为原码让Python输出
>>> ~(4294967294 ^ 0xFFFFFFFF)     
-2

~(a ^ mask) 将a表示的补码转换为原码输出,正数不需要改变。
>>> 2 & 0xFFFFFFFF
2

所以如下解:

def getSum(self, a: int, b: int) -> int:

    # 定义32位最大整数 : [0111 1111 1111 1111 1111 1111 1111 1111]
    MAX = 0x7FFFFFFF
    # 定义获取后32位的掩码
    mask = 0xFFFFFFFF
    while b != 0:
        carry = ((a & b) << 1) & mask 	# 得到32位长,正确进位
        a = (a ^ b) & mask   # 异或结果也是 32位长
        b = carry

    # 如果 a < MAX 说明是个整数, a > MAX, 那上面的第一位一定是1(因为和掩码进行运算,都变为32位长的表示),就代表负数, ~(a ^ mask): 将a的补码转成负数
    return a if a <= MAX else ~(a ^ mask)
  • 就此结束,得到正确结果!
Go数学运算符底层原理与工程避坑指南 数学运算符是编程语言最基础的语法单元,其行为由类型系统、编译器优化和硬件指令共同决定。在Go中,运算符并非简单语法糖,而是严格绑定于静态类型契约,拒绝隐式转换,强制显式类型表达。理解`+ - * / %`等操作符如何触发整数溢出检查、浮点IEEE 754精度约束、位运算模语义及编译期常量折叠,是保障金融、IoT、高并发系统稳定性的关键。本文结合`go tool compile -S`汇编验证、`uint`静默溢出陷阱、`int64`除法性能优势等真实工程现象,揭示运算符从源码到CPU指令的完整链路,为开发者 阅读详情

相关推荐

python之二进制

二进制表示十进制与二进制十进制与八进制字符的二进制表示 十进制与二进制 十进制—>二进制,除2取余倒排列 如十进制的5,表示为二进制101 python实现: d = 5 bin(5) #"0b101" #将当前二进制数据,转为整型 int("0b101",base=2) # 5 小数部分,则乘2取整正排列 如十进制的0.5,表示为二进制0.1 二进制---->十进制,只需加权求和 如二进制101,其十进制表示为1*22+0*21+1*20=5 十进制与八进制 十进制---->八进制,

weixin_45228198的博客 1万+

python的二进制、八进制、十六进制

关于Python的二进制、八进制与十六进制。以及的他们之间与十进制的转化关系,例如,要想将八进制转化为十六进制,就需要先将八进制转化为十进制,再将十进制转化为十六进制,下面我将讲到。

weixin_61057398的博客 1万+

FPGA 高速接口Aurora8B/10B 协议详解与仿真

Aurora 8B/10B 是一种用于高速串行通信的协议,通常用于 FPGA 设计和其他数字通信应用。即一种编码方案,旨在在传输数据时提供可靠性、时钟恢复和错误检测。主要用于在点对点串行链路间移动数据的可扩展轻量级链路层协议,为板对板、芯片对芯片以及一些单向链接提供低成本低资源的解决方案。信号源信号描述ref_clk时钟源GT的外部时钟INIT CLK时钟源全局复位,低电平有效DRP CLK时钟源DRP时钟,动态重配置时钟时钟源用户传输的数据钟及逻辑时钟域。

toonyhe的博客 3996

数据结构与算法--二进制详解 Python二进制算法详解 史上最详细的二进制讲解 彻底搞懂原码、反码、补码 Python的负数二进制表示形式

先详细补充二进制的所有内容,整合二进制涉及的所有算法

storyfull 7008

瑞芯微Android固件修改实战:从解包到root提权完整流程(附工具包)

本文详细解析了瑞芯微Android固件深度定制全流程,涵盖从固件包解包、系统镜像修改到植入root提权与分区调整的实战步骤。通过工具链操作与原理剖析,指导开发者安全实现系统精简、权限获取及存储扩容,最终完成固件重新打包与刷机验证,适用于追求设备完全控制权的技术爱好者。

ujm56789012的博客 697

小米路由器R1D进阶玩法:MIXBOX工具箱安装与插件管理指南

本文详细介绍了为小米路由器R1D安装MIXBOX工具箱的完整指南。通过开启SSH、执行一键安装脚本,用户可以轻松解锁路由器的进阶功能,如安装离线下载、内网穿透等插件,从而将旧设备转变为强大的家庭网络服务中心。

weixin_29292431的博客 1110

python获取数字的二进制值

https://www.cnblogs.com/cocowool/p/8037773.html

Maple丶峰 678

射频功率放大器设计实战:从理论到Layout的全流程解析

本文以一款40W、960MHz LDMOS功率放大器为例,系统解析了从理论分析、仿真设计到版图实现的射频功率放大器设计全流程。内容涵盖AB类放大器选型、核心指标定义、稳定性分析、Load-Pull/源牵引仿真、史密斯圆图匹配、偏置网络设计,以及最终的谐波平衡仿真与版图电磁验证,为工程师提供了一套从理论到实践的完整设计方法论。

weixin_29266007的博客 248

Python笔记(二)位运算

1 原码、反码和补码 二进制有三种不同的表示形式:原码、反码和补码,计算机内部使用补码来表示。 原码:就是其二进制表示(注意:有一位符号位)。 00 00 00 11 -> 3 10 00 00 11 -> -3 反码:正数的反码就是原码,负数的反码是符号位不变,其余位取反。 00 00 00 11 -> 3 11 11 11 00 -> -3 补码:正数的补码就是原码,负数的补码是反码+1。 00 00 00 11 -> 3 11 11 11 01 -> -3 符

奉现的博客 431

基于物联网设计温室水培系统(NBIOT+华为云IOT)_338

本项目设计并实现了一套基于物联网的温室水培系统。系统以STM32F103RCT6单片机为核心控制器,结合SHT30温湿度传感器、SGP30二氧化碳传感器、BH1750光照传感器及液位检测传感器等硬件,实现对温室内环境参数的实时采集。系统支持自动和手动两种控制模式,能够根据传感器数据自动控制补光灯、通风风扇、遮光卷帘、降温水帘及营养液补充电机。通过NBIoT模块,系统可将采集的数据通过MQTT协议上传至华为云IOT平台,用户可通过Android手机APP或Windows上位机进行远程监控与控制。

412

TXS0104EPWR 4通道电平转换模块原理图设计,已量产

在嵌入式系统设计中,不同模块间的电平不兼容是常见问题 —— 比如 1.8V 的 MCU 与 3.3V 的传感器通信,或是 3.3V 的外设与 5V 的主控交互。这类场景下,一款高效、低功耗的双向电平转换器就成了关键组件。本文将结合实际原理图,深度解析 TI TXS0104 这款 4 通道双向电平转换器的设计要点与应用实践。

不脱发的程序猿 486

leetcode | python | 第137题 | 只出现一次的数字Ⅱ

【代码】leetcode | python | 第137题 | 只出现一次的数字Ⅱ。

iCling的博客 240

构建企业级AI税务顾问:优化税收策略与合规

本文深入探讨了构建企业级AI税务顾问的重要性及其在实际应用中的价值。通过分析当前税务领域的挑战和问题,本文详细介绍了AI税务顾问的基本原理、技术架构、核心功能以及实践应用。文章以逐步分析的方式,从背景介绍、核心概念与联系、算法原理讲解、系统分析与架构设计、项目实战到最佳实践与展望,系统性地展示了如何利用AI技术优化税收策略并确保税务合规。文章旨在为企业和税务从业者提供实用的指导,推动AI在税务领域的创新与发展。在当前全球经济一体化的背景下,企业面临着越来越复杂的税务环境。首先,税收法规的复杂性日益增加。

AI天才研究院 1153

【Python基础入门】01 从变量到异常处理

变量;运算符;数据类型;位运算

wyw970624的博客 497

innovus:set_clock_latency与insertion_delay

当1ns clock latency设置在capture上,在report_timing报告中体现在other end arrival time以及capture clock path的Arrival Time上。因为-1ns的insertion delay存在,所以skew group报告中显示的Arrival (ns)是减1ns的结果,即1.819-1=0.819 ns。CTS阶段create_ccopt_clock_tree_spec之后,spec中会产生对应的insertion_delay命令。

m0_61544122的博客 1614

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

python 变量类型和运算符

目录变量类型运算符 变量类型 1.变量的定义 变量:承装数据的小箱子,保存的数据可以被多次修改。 常量:承装数据的小箱子,保存的数据不能被修改。 2.变量的使用 (1)补充概念 声明变量: 有两种情况如下 第一种情况:需要建立存储空间,例如 int a 在声明的时候就已经建立了存储空间。 第二种情况:不需要建立存储空间,例如 extern int a 其中变量a是在别的文件中定义的。 定义变量: ...

L*YUE的博客 730

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

AI学习之Python基础3: 数值类型和数据类型转换

数值类型和数据类型转换

u011615222的博客 480

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

高效判断2的幂次方:位运算解法与应用场景

在计算机科学中,位运算是处理二进制数据的基础操作,通过直接操作内存中的位模式实现高效计算。其核心原理是利用AND、OR、XOR等逻辑运算符对二进制位进行快速操作,这种技术特别适合处理数字的二进制特性。2的幂次方判断是一个经典问题,在内存对齐、哈希表实现等场景有重要应用。通过位运算(n & (n-1)) == 0的特性,可以O(1)时间复杂度高效解决问题,相比循环除法和对数运算方法具有显著性能优势。这种优化技巧在算法竞赛和系统编程中被广泛使用,特别是在需要快速幂次判断的场景如GPU纹理处理、内存分配器中。

weixin_34194359的博客 418

Python学习笔记8

数值对象 再次重申:Python的对象是不能删除或修改的,只能在引用为0时被垃圾回收器回收。数值对象可以被赋值给一个变量。变量是对象的一个引用不等同于对象,数值变量是可以被删除的---使用del函数, 结果是所引用的数值对象的引用数减一,且该变量不再可用,除非重新给该变量赋值一个新的对象。 整型: Python的整型等于C语言的长整型。 Python的长整型所能表达的数值与机器支持的内存有关

z54572的专栏 674

python 函数作用于矩阵_图解NumPy:常用函数的内在机制

原标题:图解NumPy:常用函数的内在机制来源: 机器之心支持大量多维数组和矩阵运算的 NumPy 软件库是许多机器学习开发者和研究者的必备工具,本文将通过直观易懂的图示解析常用的 NumPy 功能和函数,帮助你理解 NumPy 操作数组的内在机制。 NumPy 是一个基础软件库,很多常用的 Python 数据处理软件库都使用了它或受到了它的启发,包括 pandas、PyTorch、TensorF...

weixin_33542634的博客 787

Java运算符全解析:从基础概念到实战避坑指南

运算符是编程语言中用于执行数据操作和逻辑判断的基础指令集,它构成了程序逻辑的核心骨架。从原理层面看,运算符通过特定的符号或关键字,定义了数据如何进行计算、比较和流程控制,是编译器能够理解和执行的基本操作单元。在技术价值上,深入理解运算符的优先级、结合性及底层行为,是编写高效、健壮代码的关键,能有效避免隐蔽的逻辑错误。在实际应用场景中,无论是基础的算术运算、逻辑判断,还是高级的位操作和类型检查,运算符都无处不在。本文聚焦于Java运算符的全面解析,特别针对**自增/减运算符**的陷阱和**复合赋值运算符**的

weixin_34391445的博客 421

Day 2 N06 Python 的数据类型,数字类型的相互转换笔记

Python提供了丰富的数据类型,包括数字类型(int, float, complex)、序列类型(str, list, tuple)、集合类型(set, dict)和布尔类型(bool)。数字类型可相互转换,如int转float、float转int等,复数需单独提取实部和虚部。应用案例包括计算圆面积和处理用户输入,需注意浮点数精度问题、类型转换错误及复数的特殊性,建议使用try-except处理异常。掌握数据类型转换对Python编程至关重要。

qq_31964455的博客 612

计算机考研408算术移位一图流笔记:核心规则、易错点与高效复习路径

移位运算是计算机组成原理中数据表示与运算器设计的基础操作,其核心在于对二进制位的移动与填充规则。算术移位专门针对有符号数,旨在移位过程中保持数值的符号与量级关系,其原理与机器数编码(原码、反码、补码)紧密相关。理解不同编码下的移位规则,尤其是高位补位逻辑,对于掌握计算机底层运算、优化算法性能具有重要技术价值。在计算机考研408科目中,算术移位是数据结构与计算机组成原理的常见考点,常与溢出判断、乘除运算实现等场景结合考查。本文基于**一图流笔记**和**算术移位**这两个核心概念,通过构建可视化的决策逻辑图,

weixin_34038293的博客 313

多选题数据分析:MATLAB建模+R检验+Python部署实战

多选题数据并非简单二分类变量组合,而是具有多重共线性、非独立性、稀疏性与结构化约束的高维离散结构。其建模本质是将用户选择行为映射为联合概率分布、布尔矩阵与组合空间,需突破单变量频次统计的认知局限。MATLAB凭借原生矩阵运算与向量化语法,天然适配多选题的数学表达;R语言依托survey、epiR等专业包,保障统计推断的严谨性;Python则通过pandas与scikit-learn构建可复现、可部署的数据管道。三者协同形成‘建模—验证—落地’闭环,广泛应用于问卷分析、市场调研、用户行为建模及数学建模竞赛等场

weixin_34416754的博客 342

深入CPython源码:揭秘Python浮点数对象的底层实现与设计哲学

浮点数是计算机科学中表示实数的基础数据类型,其核心原理基于IEEE 754二进制浮点数算术标准。该标准定义了浮点数在内存中的存储格式、运算规则及特殊值(如NaN、Infinity)的处理方式,旨在平衡数值范围、精度与硬件效率。理解浮点数的底层实现对于开发高性能计算、科学模拟及金融系统等技术应用至关重要,它能帮助开发者规避精度误差、比较异常等常见陷阱。在Python生态中,CPython解释器通过PyFloatObject结构体将IEEE 754双精度浮点数映射为Python对象,并围绕其设计了完整的算术、比

weixin_34235457的博客 515

java和python内存管理机制_内存管理机制区别

C++内存管理详解:内存分配方式简介在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。栈,在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一...

weixin_34098209的博客 755
上一篇: Python双链表详细讲解实现:模拟计算机缓存淘汰算法,FIFO,LRU以及LFU!
下一篇: 最详细的:数据库的MVCC (并发控制机制)及 ACID 与 事务隔离级别,数据库恢复,知识记录总结!
我是py呀
博客等级 码龄8年 205粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值