Python编程语言学习
1.Python 特点
Python是一种简单、易读、易学和高效的编程语言,具有以下特点:
-
简单易学:Python采用清晰简洁的语法,注重代码的可读性和可维护性,使得初学者能够快速上手并编写出清晰的代码。
-
面向对象:Python是一种面向对象的编程语言,支持封装、继承和多态等面向对象的概念,可以更好地组织和管理代码。
-
开放源代码:Python是开源的,拥有庞大的开发者社区,因此可以方便地获得开源库和模块,可以加速开发过程并减少重复劳动。
-
跨平台:Python可以在多个操作系统上运行,包括Windows、Mac OS和Linux等,具有很强的跨平台性。
-
大量的库和框架:Python拥有丰富的标准库,覆盖了各种常用的功能模块。此外,Python还有大量的第三方库和框架,如NumPy、Pandas、Django等,可以满足各种不同领域的需求。
-
强大的数据处理能力:Python提供了很多用于数据处理和科学计算的库,如NumPy、Pandas和Matplotlib等,使得数据分析和数据科学变得更加简单和高效。
-
可扩展性:Python可以与其他语言进行无缝集成,可以轻松地扩展功能,使用C语言编写的扩展模块可以通过Python的接口调用。
2.应用领域
Python 作为一种功能强大且简单易学的编程语言而广受好评,并且在不同的应用域大放异彩,比如:
- Web 开发
- 大数据处理
- 数据分析
- 人工智能
- 自动化运维开发
- 云计算
- 爬虫
- 游戏开发
- 自动化测试
- 测试开发
目前,由于大数据、人工智能(ChatGPT 等 AI 技术)的流行, Python 变得比以往更加流
3.安装 Python 解释器
-
双击
Python-x.x.x-amd64.exe
文件,系统将会开启 Python 安装向导 -
勾选
Add Python.exe to PATH
复选框 ,可以将 Python 命令工具所在 目录 添加到系统Path
环境变量中 -
单击
Customize installation
,可以在安装时指定自定义的安装路径。 单击该选项即可开始安装。 -
在接下来的安装界面中只要改变 Python 的安装路径(建议安装在指定盘符的根路径下,比如 安装在
D:\Python
目录下), 其他地方使用默认选项即可。 -
安装完成后,启动 Windows 的命令行
cmd
程序 , 在命令行窗口中输入Python
命令(字母 p 是小写的)。如果出现 Python 提示符(>>>),就说明安装成功了 。
4.安装PyCharm
-
create desktop shortcut
(创建桌面快捷方式),系统 32 位就选 32-bit,系统 64 位就选 64-bit。当前演示的电脑是 64 位系统,它自动显示 64 位。 -
update path variable(restart needed)
更新路径变量(需要重新启动),Add "bin" folder to the PATH
(将bin目录添加到路径中)。 -
Update Context Menu
(更新上下文菜单),Add "Open Folder as Project
(添加打开文件夹作为项目)。添加鼠标右键菜单,使用打开项目的方式打开此文件架。如果你经常需要下载一些别人的代码查看,可以勾选此选项,这会增加鼠标右键菜单的选项。也就是你双击你电脑上的 py 文件,会默认使用 PyCharm 打开。 -
Create Associations
创建关联,关联.py
文件。将所有py
文件关联到 PyCharm。 -
默认即可,点击 install。然后等待片刻。
-
安装完成后,提示是否立即重启电脑,可以选择“稍后重启”,点击“Finish”即可。
5.python程序-使用 print()输出
在 Python 中,可以通过内置函数 print()
实现向控制台输出 Hello World
。
可以进入 命令行交互模式
或使用 PyCharm
编写代码输出。
- 命令行交交互模式 实时输出程序执行结果,适合简单的逻辑或运算。
- PyCharm开发工具 方便组织管理代码,有代码提示功能,适合复杂逻辑或大型程序的开发。
6.Pycharm常用快捷键
快捷键 | 作用 |
Tab键 | 跳制表域 |
Ctrl + / | 代码注释 |
Ctrl + F | 查找 |
Ctrl + R | 替换 |
Alt + Enter | 问题修复 |
Ctrl + Alt + L | 代码格式化 |
Ctrl + D | 复制当前光标所在行代码 |
Ctrl(Alt) + Shift + 上下方向键 | 上下移动光标所在行代码 |
Ctrl + G / Command + L | 跳转到指定行:列 |
更多快捷键可以查看 PyCharm 帮助手册或查看下图。
- 帮助手册查找路径
菜单-> Help -> Keyboard Shortcuts PDF
- 快捷键图表 Windows版:
7.编码规范
7.1缩进
在 Python 中,缩进是一种非常重要的语法规则,Python 使用缩进来确定代码的层次结构和执行顺序。
- 建议使用
Tab
键实现缩进 - 同一级别的代码块的缩进量必须相同
class Student(object):def __init__(self, name, age):self.name = nameself.age = agedef info(self):print(f"Name: {self.name}")if self.age >= 18:print("已成年")else:print("未成年")
7.2注释
注释,是指在代码中对代码功能进行解释的描述性文字,可以提高代码的可读性。注释的内容将被 Python 解释器忽略,并不会在执行结果中体现出来。
Python 中,提供 3 种类型的注释:
- 单行注释 在 Python 中,使用
#
作为单行注释的符号。注释从符号#
开始直到换行为止,其后面所有的内容都作为注释的内容而被 Python 解释器忽略。# 我是一段注释
-
多行注释 在 Python 中,并没有一个单独的多行注释标记,而是将注释内容包含在一对三引号之间,这样的代码将被解释器忽略。由于这样的代码可以分为多行编写,所以也可以作为多行注释。
''' 可以使用 三单引号 实现 多行 注释 '''""" 可以使用 三双引号 实现 多行 注释 """
-
文档注释 文档注释实际是多行注释的一种特殊使用形式,为 Python 文件、模块、类或者函数等添加版权、功能,说明等信息,例如,下面的代码将使用多行注释为程序添加功能、开发者、版权、开发日期等信息,也经常用来解释代码中重要的函数、参数等信息,利于后续开发者维护代码
def print(self, *args, sep=' ', end='\n', file=None): # known special case of print"""print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)Prints the values to a stream, or to sys.stdout by default.Optional keyword arguments:file: a file-like object (stream); defaults to the current sys.stdout.sep: string inserted between values, default a space.end: string appended after the last value, default a newline.flush: whether to forcibly flush the stream."""pass
7.3命名规范
命名规范在编写代码中起到了很重要的作用,通过使用有意义的命名,可以传达变量、函数和类的用途和含义,使其他人(包括自己)更容易理解代码的意图,避免错误的变量赋值或函数调用。并且当多人合作开发或维护代码时,一致的命名约定使团队成员能够更轻松地理解和修改彼此的代码。
具体包括:
- 包名尽量短小,全小写字母,不推荐使用下划线
- 模块名尽量短小,全小写字母,可以使用下划线分隔多个字母
- 类名采用单词首字母大写形式,即 Pascal 风格。
- 常量命名时全部采用大写字母,可以使用下划线
- 变量、函数名也是全小写字母,多个字母间用下划线
_
进行分隔 - 使用单下划线
_
开头的模块变量或者函数是受保护的 - 使用双下划线
__
开头的实例变量或方法是类私有的
8.函数定义与调用
8.1什么是函数
函数是一段可重复使用的代码块,它执行特定的任务并返回一个结果。
在编程中,函数用于将一段代码逻辑封装起来,以便在需要时可以方便地调用。
函数的主要目的是提高代码的重用性和可维护性。
函数通常由以下几个组成部分构成:
- 函数名:函数名用于标识函数,以便在代码中调用它时使用。
- 参数:参数是函数在执行时所需的数据。
- 函数体:函数体是函数的实际代码逻辑,由若干语句组成。
- 返回值:返回值是函数体代码执行过后的运行结果。
8.2内置函数
内置函数是指开发语言中预先定义好的实现特定功能的函数,可以直接使用。
比如: 输入函数input()
, 输出函数 print()
等
8.3函数定义
虽然系统预先定义好了大量的内置函数,但这些函数,还不能满足实际的开发需求,所以程序中允许根据实际需求自定义函数。
语法格式:
def function_name([parameter_list]): ['''注释信息'''] [function_body]return [result]
说明:
def
: 自定义函数的关键字。function_name
: 函数名称,在调用函数时使用,命名需要符合标识符命名规则。()
: 函数的特征,用来书写参数列表。parameter_list
: 用来接收函数运行时所需的外部数据(此章节不讲解)。:
:Python 固定语法。注释信息
:非必须部分,函数的注释内容,通常是说明该函数的功能、要传递的参数的作用等。function_body
:函数体,用来实现函数功能的逻辑代码。return [result]
: 用来结束函数或将函数运行结果返回(此章节不讲解)。
def show(): """此函数用来输出 Hogwarts """print("Hogwarts")
注意:函数定义完成之后直接运行程序,将不显示任何内容。
8.4函数调用
调用函数也就是执行函数。如果把创建函数理解为理解为创建一个具有某种功能的工具,那么调用函数就相当于使用该工具。
语法格式:
function_name([parameters_value])
function_name
:函数名称,要调用的函数名称,必须是已经创建好的(包括内建的和自定义的)。parameters_value
:参数列表,用来提供函数运行时使用的数据,可省略。()
: 函数的特征,参数列表可省略,但圆括号不能省略。
print("第一次函数调用")
show()
print("第一次函数调用")
show()
print("程序执行结束")
注意:
- 程序在执行到函数调用时,会跳转到函数定义位置执行函数体中的代码。
- 函数体执行结束后,将返回到函数调用处继续向后执行其它代码。
9.标识符
在 Python 中,标识符是用来标识变量、函数、类、模块和其他对象的名称。 需要注意的是,在定义标识符的时候,虽然很自由,但是也不能随心所欲,合法的标识符需要遵从一定的规范。
9.1命名规范
标识符的命名,需要遵从 4 项规范。
9.1.1. 见名知意
一个项目中会存在大量的变量名,函数名,方法名,类名等标识符,所以在对标识符进行命名时,见名知意是第一准则。
例如:get_name
、is_select
、name
、age
等都是符合规则的标识符命名。
切勿在代码中出现大量 a1,a2,a3,b1,b2,b3
的标识符,虽然语法中通过不报错,但在使用时容易混淆。
9.1.2. 不能使用关键字
关键字是 Python 语言中具有特殊含义的单词,例如 if
、else
、for
、def
等等。
9.1.3. 标识符由英文字母、下划线_
和数字组成,但不能以数字开头
hello666
是合法的标识符,而 666hello
则是非法的标识符。
9.1.4. 区分大小写
hello
和 Hello
是两个不同的标识符。
正确使用标识符是 Python 编程的基础之一。
通过遵守标识符的命名规范,我们可以编写出更加清晰、易于理解的 Python 代码,同时,我们也可以避免一些常见的编程错误。
因此,在编写 Python 代码时,请务必注意标识符的命名规范。
10.关键字
关键字是指在 Python 编程语言中具有特殊含义的保留单词。这些关键字被 Python 解释器用于识别程序的结构和语义,从而执行相应的操作。
在 Python 中,关键字不可以用作变量名、函数名或其他标识符的名称,否则会导致语法错误。
10.1查看关键字
Python 的关键字可能会随着版本的更新而变化,Python 3.9 版本共有关键字 36 个, Python3.10 版本的关键字共有 35 个。
可以通过 Python 内置的 keyword 模块,来查看所有的关键字。
# 导入内置关键字模块
import keyword# 打印所有的关键字
print(keyword.kwlist)
执行上面的代码,将会输入以下结果(基于 Python 3.10版本):
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
11.变量
无论使用什么语言编程,总要各种处理数据,比如数字、字符串等等。处理数据就需要使用变量来表示数据。所谓变量,就是用来表示数据的名字。
Python 中定义变量非常简单,只需将数据通过等号(=)赋值给一个符合命名规范的标识符即可。
name="HelloWord"
Python 是动态强类型语言,变量无须声明类型即可直接赋值,并且变量保存的数据类型可以随时在使用过程中进行改变,Python会根据保存数据的不同对变量类型进行动态推导来确定变量的数据类型。
name="HelloWord"
name=123
11.1变量的使用
变量的使用是指在程序中引用一个已经定义的变量。
例如,如果我们想使用之前定义的 name
变量,则可以使用:
print(name)
11.2变量的地址
内置函数 id()
可以获取变量的内存地址,也就是这个变量在计算机内存中的唯一标识,通常是用一串数字表示。
每个变量在内存中都有一个唯一的地址,通过比较两个变量的内存地址,可以判断它们是否是同一个变量。如果两个变量的内存地址相同,那么它们就是同一个变量。
print(id("Hello"))
name = "Hello"
print(id(name))
school = "Hello"
print(id(school))
12.数据类型
数据类型是指定程序在运行过程中,将各种数据根据表示形式和组织形式划分为不同的分类。
例如,一个人的姓名可以用字符类型存储,年龄可以用数值类型存储,而婚否可以用布尔类型存储,这些都是 Python 中的基本数据类型。
12.1标准数据类型
Python3 中标准数据类型有:
- 基本数据类型
- Number(数字)
- String(字符串)
- bool(布尔类型)
- 复合数据类型(容器类型)
- List(列表)
- Tuple(元组)
- Dictionary(字典)
- Set(集合)
- 空类型
- None
Python3 根据数据的特性可分为:
- 不可变数据(3 个):Number(数字)、bool(布尔)、String(字符串)、Tuple(元组);
- 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
12.2类型查看
为了方便检查一个变量的具体类型,可以使用 Python 内置的 type()
函数查看变量的类型。
# 数字类型
num = 666
print(type(num))
# 布尔类型
b = True
print(type(b))
# 字符串类型
s = "开发测试,测试一下"
print(type(s))
# 空类型
x = None
print(type(x))
13.数字类型
Python 中,数字类型(Number) 包括整数(int)、浮点(float)数和复数(complex) 三个子类型。
用来表示程序中不同的数字类型的数据。
13.1整数
整数类型:用来表示整数数值,即没有小数部分的数值,在 Python 中,没有 Long
类型,统一使用 int
类型表示。
n = 10
print(n)
print(type(n))
n = 12312312823547082374508273450823754082374508327540837250982375098273540823750482374508235038247503245
print(n)
print(type(n))
13.2浮点数
浮点类型:用来表示带小数点的数值,在 Python 中,没有 Double
类型,统一使用 float
类型表示。
pi = 3.14
print(pi)
print(type(pi))
pi = 3.141592652346234234346345346345345345345
print(pi)
print(type(pi))
13.3复数
复数类型:一般在数学和物理学中有广泛的应用,例如在电路分析、信号处理和量子力学中,在此了解即可。
n = 4+3j
print(n)
print(type(n))
相关文章:
Python编程语言学习
1.Python 特点 Python是一种简单、易读、易学和高效的编程语言,具有以下特点: 简单易学:Python采用清晰简洁的语法,注重代码的可读性和可维护性,使得初学者能够快速上手并编写出清晰的代码。 面向对象:Py…...

Cartographer框架简述
catographer框架分为前端和后端 前端包括雷达数据处理;位姿预测;扫描匹配和栅格地图更新。 后端包括后端:线程池任务与调度;向位姿图添加节点,计算节点的子图内约束和子图间约束(回环检测)&…...

适用于 Linux、Windows 和 macOS 的免费 ONLYOFFICE 桌面应用程序
前言: 最近也是发现了一款特别好用的免费ONLYOFFICE 桌面应用程序忍不住分享给大家,这款编辑器能够打开、阅读和编辑多种文件类型,包括.docx文档、.pptx幻灯片和.xlsx表格等开放XML格式的Office文档。此外,ONLYOFFICE桌面编辑器还…...

C++面向对象程序设计-北京大学-郭炜【课程笔记(四)】
C面向对象程序设计-北京大学-郭炜【课程笔记(四)】 1、this指针1.1、this指针的作用1.2、this指针和静态成员函数 2、静态成员变量和静态成员函数2.1、基本概念2.2、基本概念总结2.3、如何访问静态成员2.4、静态成员变量的使用场景(重要&…...

前端构建效率优化之路
项目背景 我们的系统(一个 ToB 的 Web 单页应用)前端单页应用经过多年的迭代,目前已经累积有大几十万行的业务代码,30 路由模块,整体的代码量和复杂度还是比较高的。 项目整体是基于 Vue TypeScirpt,而构…...
react实现拖拽的插件
插件一:dnd-kit 插件官网链接https://docs.dndkit.com/introduction/installation 插件二:react-beautiful-dnd https://github.com/atlassian/react-beautiful-dnd/tree/master 两个插件的区别: 插件一可以做到从区域A拖住到区域B 插件二…...

解决Uncaught SyntaxError: Cannot use import statement outside a module(at XXX)报错
报错原因:这个错误通常是因为你正在尝试在一个不支持 ES6 模块语法的环境中使用 import 语句。这可能是因为你的代码是在一个只支持 CommonJS 或 AMD 模块系统的环境中运行的,或者你的代码运行的环境没有正确配置以支持 ES6 模块。如果是在浏览器环境&am…...
PHP如何利用post与get方式传值接收数据
目录 一、POST传值1. 使用curl库发送 POST 请求:2. 使用file_get_contents()函数发送 POST 请求:3. 使用stream_socket_client()函数发送 POST 请求:4. 利用from表单提交数据: 二、GET传值1. 使用http_build_query()函数构建 URL …...

在Mac上搭建MongoDB环境
最近工作中需要装MongoDB环境,搭建过程中遇到了一些问题,在这里记录一下安装MongoDB环境的方法以及问题的解决方法。有两种安装MongoDB的方法:brew安装和手动安装。 目录 使用Homebrew安装MongoDB 手动安装MongoDB(不使用Homebr…...

第三十九天| 62.不同路径、63. 不同路径 II
Leetcode 62.不同路径 题目链接:62 不同路径 题干:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “…...

提高代码质量的 10 条编码原则
提高代码质量的 10 条编码原则 本文转自 公众号 ByteByteGo,如有侵权,请联系,立即删除 今天来聊聊提高代码质量的 10 条编码原则。 软件开发需要良好的系统设计和编码标准。我们在下图中列出了 10 条良好的编码原则。 01 遵循代码规范 我们…...
SHERlocked93 的 2017 年终总结
回家的路上有点无聊,简短回顾一下2017年的得失收获 开始两个月3月到5月用C#完结了一个烂尾的wpf小项目,对自己前半年的.net生涯也算是一个句号(虽然不知道最后有没有采用),后面由于项目组转变技术栈,选择了…...

【FreeRTOS基础入门】任务通知
文章目录 前言一、任务通知介绍1.1 任务通知怎么通信1.2 任务通知与其他通信方式的区别1.3 优势及限制任务通知的优势任务通知的限制 1.4 内部原理 二、任务通知的使用2.1 发出与接收通知简化版2.1 发出与接收通知专业版 总结 前言 FreeRTOS 提供了丰富而灵活的任务通知机制&a…...
python opencv比较图片相似度
目录 一:均值哈希算法 二:三直方图算法 三:单通道直方图 一:均值哈希算法 均值哈希算法是一种快速比较图像相似度的方法。它首先将图像转化为灰度图像,然后计算图像的均值,接着将每个像素的...

校园兼职|大学生校园兼职小程序|基于微信小程序的大学生校园兼职系统设计与实现(源码+数据库+文档)
大学生校园兼职小程序目录 目录 基于微信小程序的大学生校园兼职系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户微信端功能模块 2、管理员服务端功能模块 (1) 兼职管理 (2)论坛管理 (3&…...
linux系统离线安装docker服务教程
1、下载、上传docker-20.10.0.tgz压缩包至服务器,其中,docker下载地址https://download.docker.com/linux/static/stable/x86_64/ 2、新建安装docker脚本docker-install.sh #!/usr/bin/env bash tar -xvf docker-20.10.0.tgzcp docker/* /usr/bin/cat …...

【青龙】快速搭建青龙面板,部署属于你自己的应用!
青龙面板是一个支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台。 废话不多说,直接开始。 这里使用一台 雨云 的云服务器作为演示。雨云注册地址:https://www.rainyun.com/ 优惠码:lz932 使用优惠码注册后绑定微信可获得8折…...

shell脚本实现Mysql分库分表备份
一.数据库的分库分表? 12张图把分库分表讲的明明白白!阿里面试:我们为什么要分库分表https://mp.weixin.qq.com/s?__bizMzU0OTE4MzYzMw&mid2247547792&idx2&sn91a10823ceab0cb9db26e22783343deb&chksmfbb1b26eccc63b784879…...
【算法 - 动态规划】从零开始学动态规划!(总纲)
动态规划 动态规划(Dynamic Programming,DP)是一种优化问题求解方法,通常用于解决具有 重叠子问题 和 最优子结构 性质的问题。它的基本思想是将原问题分解成更小的子问题,通过求解和保存这些子问题的解,避…...

从 Elasticsearch 到 Apache Doris,统一日志检索与报表分析,360 企业安全浏览器的数据架构升级实践
导读:随着 360 企业安全浏览器用户规模的不断扩张,浏览器短时间内会产生大量的日志数据。为了提供更好的日志数据服务,360 企业安全浏览器设计了统一运维管理平台,并引入 Apache Doris 替代了 Elasticsearch,实现日志检…...

Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...

HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...

EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...