深度学习——第03章 Python程序设计语言(3.1 Python语言基础)

无论是在机器学习还是深度学习中,Python已经成为主导性的编程语言。而且,现在许多主流的深度学习框架,例如PyTorch、TensorFlow也都是基于Python。本课程主要是围绕“理论+实战”同时进行,所以本章将重点介绍深度学习中Python的必备知识点。

Python概述

Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。Python具有丰富和强大的库,它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。

为什么人工智能、深度学习会选择Python呢?一方面是因为Python作为一门解释型语言,入门简单、容易上手。另一方面是因为Python的开发效率高,Python有很多库很方便做人工智能,比如Numpy、Scipy做数值计算,Sklearn做机器学习,Matplotlib将数据可视化,等等。总的来说,Python既容易上手,又是功能强大的编程语言。按照《Python学习手册》作者的说法,Python可以支持从航空航天器系统开发到小游戏开发的几乎所有的领域。

其实,人工智能的核心算法的底层还是由C/C++编写的,因为是计算密集型,需要非常精细的优化,还需要GPU、专用硬件之类的接口,这些都只有C/C++能做到。Python实际上是实现API调用的功能,例如所有的深度学习框架PyTorch、TensorFlow等,底层都是由C/C++编写的。由于Python是顶层高级语言,它的缺点就是运行速度慢,但是这丝毫不影响Python的普及。如今,在GPU加速的前提下,Python的运行速度已经很快了。在众多因素影响下,Python毫无疑问成为了人工智能的最主要的编程语言。

!python --version
运行结果:Python 3.8.8

Python语言常用开发环境

  • 最常用的:Anaconda的Jupyter Notebook、Pycharm
  • 其它:IDLE、Anaconda的Spyter、VScode…

变量、关键字、预定义标识符

变量:可变的量,它的概念和代数中定义的变量基本一致,它由变量名表示。

变量用来存储数据,当程序中需要用到某个变量或者修改某个变量时都可以通过这个名字来操作。

Python中的变量不仅值是可变的,类型也是可变的,因为在Python中变量的使用是极为灵活且方便的,当需要使用一个变量时不需要对其提前进行类型声明。

a = 1
a,type(a)#运行结果:(1, int)
b = 1.2
b,type(b)#运行结果:(1.2, float)

变量命名规则(标识符及其命名规则)

命名:Python程序采用“变量”来保存和表示具体的数据值。为了更好地使用变量等程序元素,需要给它们关联一个标识符(名字),这一关联标识符的过程则被称为命名。

命名用于保证程序元素的唯一性。

标识符是变量、函数、类、模块和其他对象的名称,其命名规则为:

Python语言允许采用大小写字母、数字、下画线和汉字等字符及其组合给变量命名,但名字的首字符不能是数字,中间不能出现空格。

如:a2、_a、a_2和student等均为合法变量,但是2a就是一个不合法的变量名;不能有空格以及标点符号,例如a student’s就是一个不合法变量名,因为a和student中有空格,而且出现了不合法的符号单引号;a_int、a_float、str1、_strname、func1为正确的变量名;99var、It’sOK、for(关键字)为错误的变量名。

标识符命名注意事项:

  1. Python标识符区分大小写。例如,python和Python、Apple和apple都是两个不同的名字。
  2. 变量名不能使用Python中已有的保留关键字(2.5节)。
  3. 避免使用Python预定义标识符(2.5节)名作为自定义标识符名。例如:NotImplemented、Ellipsis、int、float、list、str、tuple等。
  4. 以双下划线开始和结束的名称通常具有特殊的含义。例如,__init__为类的构造函数,一般应避免使用。
  5. 变量取名时最好有具体的实意,方便其他人读懂程序。如:求和的变量我们最好命名为sum、最大数的变量最好命名为MAX。
a_2, abc, a3 = 1,2,'abc'
a_2, abc, a3#运行结果:(1, 2, 'abc')

保留关键字

也称保留字、关键字(keywords),指被编程语言内部定义并保留使用的标识符。程序员编写程序时不能定义与保留字相同的标识符。每种程序设计语言都有一套保留字,保留字一般用来构成程序整体框架、表达关键值和具有结构性的复杂语义等。掌握一门编程语言首先要熟记其所对应的保留字,保留字是编程语言的基本单位。

Python对大小写敏感,if是保留字,If就可以是变量名。

查看Python语言关键字:

import keywordprint(keyword.kwlist,len(keyword.kwlist))

运行结果:

['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'] 35

预定义标识符

Python语言包含许多预定义内置类、异常、函数等,例如,float、ArithmeticError、print等。

用户应该避免使用Python预定义标识符名作为自定义标识符名。

使用Python的内置函数dir(builtins),可以查看所有内置的异常名、函数名等。

print(dir(__builtins__))

运行结果

['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '__IPYTHON__', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'all', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'display', 'divmod', 'enumerate', 'eval', 'exec', 'execfile', 'filter', 'float', 'format', 'frozenset', 'get_ipython', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'range', 'repr', 'reversed', 'round', 'runfile', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']
help(zip)

运行结果:

Help on class zip in module builtins:class zip(object)|  zip(*iterables) --> A zip object yielding tuples until an input is exhausted.|  |     >>> list(zip('abcdefg', range(3), range(4)))|     [('a', 0, 0), ('b', 1, 1), ('c', 2, 2)]|  |  The zip object yields n-length tuples, where n is the number of iterables|  passed as positional arguments to zip().  The i-th element in every tuple|  comes from the i-th iterable argument to zip().  This continues until the|  shortest argument is exhausted.|  |  Methods defined here:|  |  __getattribute__(self, name, /)|      Return getattr(self, name).|  |  __iter__(self, /)|      Implement iter(self).|  |  __next__(self, /)|      Implement next(self).|  |  __reduce__(...)|      Return state information for pickling.|  |  ----------------------------------------------------------------------|  Static methods defined here:|  |  __new__(*args, **kwargs) from builtins.type|      Create and return a new object.  See help(type) for accurate signature.

算术运算

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

加法(+)
在这里插入图片描述
减法(-)

双目运算符:求两数的差值

单目运算符:某数的负数
在这里插入图片描述
除法(/;正斜杠,注意与反斜杠区分)(除数不能为0,否则会报错)

Python中的“/”正斜杠除法运算中,无论除数和被除数为何种类型所得的结果必定是浮点型。如果两个整数正好整除,结果仍是浮点型。

除法想得到整数结果:须使用内置函数int(),或使用整除运算符“//”。
在这里插入图片描述
实例:春游乘车问题

问题描述:

某学校要组织春游活动,总人数由程序输入,假设每辆汽车的座位数为30,请计算至少需要多少辆汽车,以及每辆车的人数分配方案。

备注:要求每辆车的人数尽量平均地分布。

解题思路:

被除数、除数、商、余

以总人数101为例,每车30人,共需要4辆车。

其中3辆车乘坐25人,1辆车乘坐26人。

# 春游乘车问题
s = 30  # 每辆车的座位数
np = int(input("师生总人数为:"))  # 输入乘车人数if np % s == 0:b = np // s
else:b = np // s + 1
"""计算需要的车辆数b,如果人数除以座位的余数为零,
则车辆数为人数除以座位的商,
否则车辆数为人数除以座位的商。"""
print("共需要", b, "辆汽车,乘车方案为:", sep="")r = np % b  # r为人数除以车辆数的余数,也就是平均后剩余的人数
p = np // b  # p为人数除以车辆数的商,也就是每辆车至少平均乘坐的人数
if np % b == 0:print("每辆车坐", p, "人。", sep="")
else:print(r, "辆车坐", p + 1, "人;", b - r, "辆车坐", p, "人。", sep="")

输出结果为:

师生总人数为:121
共需要5辆汽车,乘车方案为:
1辆车坐25人;4辆车坐24人。

程序格式框架

Python采用严格的“缩进”来表明程序的格式框架。

a = 2if a%2 == 1:print('{}是奇数'.format(a))
else:print('{}是偶数'.format(a))

输出结果为:

2是偶数

缩进:每行代码开始前的空白区域,用来表示代码之间的包含和层次关系。严格的缩进可以约束程序结构,有利于维护代码结构的可读性。缩进是表达代码间包含和层次关系的唯一手段。

不需要缩进的代码顶行编写,不留空白。

缩进是语法的一部分,缩进不正确程序会运行错误。

缩进可以用Tab键实现,也可以用多个空格。程序内一致即可,一般是4个空格或Tab,建议采用4个空格方式书写代码。
缩进表达了所属关系。

单层缩进:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

多层缩进
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

单层缩进代码属于之前最邻近的一行非缩进代码,多层缩进代码根据缩进关系决定所属范围。

不是所有代码都可以通过缩进包含其他代码,一般来说,判断、循环、函数、类等语法形式能够通过缩进来包含一批代码,进而表达对应的语义。如print()这样简单的语句不表达包含关系,不能使用缩进。

表达式和运算符

表达式

表达式指程序中产生或计算新数据值的一行代码,由操作数和操作符组成。

操作数、运算符和圆括号按一定规则组成表达式。

表达式通过运算后产生运算结果,运算结果的数据类型由操作数和运算共同决定。

表达式是Python语言的基础,表达式类似文章中的名字,可以用空格增加可读性。

表达式即可以非常简单,也可以非常复杂。当表达式包含多个运算符时,运算符的优先级控制各个运算符的计算顺序。

表达式示例:
在这里插入图片描述
表达式的书写规则

  1. 表达式从左到右在同一个基准上书写

例如:数学公式 a 2 + b 2 a^2+b^2 a2+b2应该写为:
在这里插入图片描述
操作数

操作数包括文本常量(没有名称的常数值,如1、“abc”)、变量(如i=123)、类成员变量/函数等,也可以包含子表达式。
运算符:运算符指示对操作数适用什么样的运算。

Python 有如下几种运算符:

  • 算术运算符(Arithmetic operator)
  • 赋值运算符 (Assignment operator)
  • 比较(关系)运算符 (Comparison operator)
  • 逻辑运算符 (Logic operator)
  • 成员运算符 (Membership operator)
  • 身份运算符 (Identity operator)
  • 位运算符 (Bitwise operator)
  • 海象运算符 (Python 3.8 新出)

Python运算符及其优先级别

运算符用于在表达式中对一个或多个操作数进行计算并返回结果值。接受一个操作数的运算符称作一元运算符,例如,正负号运算符或-。接受两个操作数的运算符被称作二元运算符,例如,算术运算符±*/等。

表达式计算顺序取决于运算符的结合顺序和优先级。

可以使用圆括号“()”强制改变运算顺序。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Python语句

语句是Python程序的过程构造块,用于定义函数、定义类、创建对象、变量赋值、调用函数、控制分支、创建循环等

通俗一点:语句就是一行一行的代码

Python语句分为简单语句和复合语句

简单语句:

表达式语句、赋值语句、assert语句、pass空语句、del语句、return语句、yield语句、raise语句、break语句、continue语句、import语句、global语句、nonlocal语句等。

复合语句:
if语句、while语句、for语句、try语句、with语句、函数定义、类定义等。

Python语句的书写规则

  1. 使用换行符分隔,一般情况下一行一条语句。

  2. 从第一列开始,前面不能有任何空格,否则会产生语法错误。注意,注释语句可以从任意位置开始;复合语句构造体必须缩进。

  3. 反斜杠(\)用于一个代码跨越多行的情况

  4. 分号(;)用于在一行书写多条语句

  5. 要与Python进行英文交互,要使用半角字符。标识符虽然可以用中文字符,但并不推荐。
    复合语句及其缩进书写规则

由多行代码组成的语句称为复合语句。复合语句(条件语句、循环语句、函数定义和类定义,例如if、for、while、def、class等)由头部语句(header line)和构造体语句块(suites)组成。构造体语句块由一条或多条语句组成。复合语句和构造体语句块的缩进书写规则如下:

  1. 头部语句由相应的关键字(例如,if)开始,构造体语句块则为下一行开始的一行或多行缩进代码。

  2. 通常缩进是相对头部语句缩进四个空格,也可以是任意空格,但同一构造体代码块的多条语句缩进的空格数必须一致对齐。如果语句不缩进,或缩进不一致,将导致编译错误。

  3. 如果条件语句、循环语句、函数定义和类定义比较短,可以放在同一行。

for i in range(1,11): print(i, end=' ')

运行结果:

1 2 3 4 5 6 7 8 9 10 

注释语句

注释是程序员在代码中加入的一行或多行信息,用来对语句、函数、数据结构或方法等进行说明,提升代码的可读性,或起到标明作者和版权信息、解释代码原理或用途、辅助程序调试的作用。

注释是辅助性文字,会被编译或解释器略去,不被计算或执行,也不会影响程序的执行结果。Python语言有单行和多行两种注释方法:

单行注释

以符号“#”开始,到行末结束,它可以出现在任何位置。

多行注释

以三个单引号“‘’'”开头和结尾。

空语句pass

表示一个空的代码块,一般用于语法要求的点位使用。

def abc():pass
class MyClass:def __init__(self):passdef myfunc(self):pass

赋值语句

数据必须放入内存才能让计算机程序进行处理。机器语言和汇编语言直接通过内存地址访问这些数据,而高级语言则通过内存单元命名(即变量)来访问这些数据。Python3中,一切皆为对象。对象是某个类(类型)的实例,对象由唯一的id标识。对象可以通过标识符来引用,对象引用即指向具体对象实例的标识符,也称之为“变量”。

变量的声明和赋值

变量的声明和赋值用于把一个变量绑定到某个对象,其语法格式为:

变量名 = 字面量或表达式

变量的声明和赋值示例:

x=0; y=0; z=0    #变量x、y和z均指向int对象0
str1 = "abc"     #变量str1指向值为"abc"的str型实例对象

解包赋值

Python支持将系列数据类型解包为对应相同个数的变量。

系列(sequence)数据类型(bytes、bytearray、list、str、tuple)是Python内置的组合数据类型。

系列解包示例:

a,b=1,2     #变量a指向int对象1,变量b指向int对象2
a          #输出:1
b          #输出:2

输出结果:

2

说明:变量的个数必须与系列的元素个数一致,否则会产生错误。

使用系列解包实现变量交换:

a,b=(1,2)     #变量a指向int对象1,变量b指向int对象2
a,b=b,a      #两个变量a和b的值进行交换
a           #输出:2
b           #输出:1

说明:在Python语言中,使用 a,b=b,a 的语句方式,可以优雅地实现两个变量的值交换

Python程序的输入和输出

  • 输入函数input()

input()函数用于从键盘获得用户输入,并以字符串数据类型格式保存。

使用格式:

<变量> = input(“提示信息字符串”)

结果:

用户输入的信息以字符串类型保存在<变量> 中,并输出到屏幕上等待用户输入。

示例:
在这里插入图片描述
在这里插入图片描述
实例:温度转换

刻画温度的两个体系:摄氏度(Celsius)、华氏度(Fabrenheit)。

不同国家采用不同的体系。

问题描述:

根据输入,识别温度体系和温度,转换为另一个温度体系并按格式输出。

解题思路:

输入:带华氏或摄氏标识的温度值

处理:根据温度标识选择转换算法

输出:带摄氏或华氏标志的温度值

程序实现:

#将带温度体系标记的温度值在摄氏和华氏之间进行转换
t = input('请输入温度值(末尾带温度类型标识C或F):')
if t[-1] in ['c','C']:C = (eval(t[0:-1])*1.8 + 32)print('{0}转换为华氏温度为:{1:.2f}F'.format(t,C))
elif t[-1] in ['f','F']:C = ((eval(t[0:-1]) - 32)/1.8)print('{0}转换为摄氏温度为:{1:.2f}C'.format(t,C))
else:print('格式输入错误!')

输出结果:

请输入温度值(末尾带温度类型标识C或F):23F
23F转换为摄氏温度为:-5.00C

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

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

相关文章

Python遥感开发之快速判断TIF数据为空

Python遥感开发之快速判断TIF数据为空 前言&#xff1a;介绍一下如何使用python下的gdal读取tif数据的时候&#xff0c;快速判断该tif数据是否为空&#xff0c;如果为空的话就把当前的tif删掉。 如图所示&#xff0c;通过arcgis查看箭头指向的为空值。 仅通过文件的大小无法判…

人工智能中的模型评估

1 概述 1.1 定义 人工智能&#xff08;AI&#xff09;模型评估是一个关键的过程&#xff0c;用于确定模型在特定任务上的性能和有效性。这个过程涉及使用各种技术和指标来衡量模型的准确度、可靠性、泛化能力以及其他重要特性。在不同的应用场景中&#xff0c;模型评估的具体…

Qt Creator 11.0.3同时使用Qt6.5和Qt5.14.2

Qt Creator 11.0.3同时使用Qt6.5和Qt5.14.2 概要方法1.打开Qt Creator中的Kit&#xff0c;这里我直接附上几张截图&#xff0c;不同的版本打开位置可能有所不同&#xff0c;总之最终目的是要打开构建套件&#xff08;Kit&#xff09;2.可以看到构建套件里面有包含了“构建套件K…

深度学习记录--计算图(前向后向传播)

什么是计算图&#xff1f; 从一个例子入手&#xff1a; 将函数J的计算用流程图表示出来&#xff0c;这样的流程图被称为计算图 简单来说&#xff0c;计算图是用来显示每个变量间的关系的一种图 两种传播方式 计算图有两种传播方式&#xff1a;前向传播 和 后向传播 什么是前…

使用dirmap命令行时报错,提示缺少gevent模块

记得以前是可以的&#xff0c;可能是时间长了重装了系统&#xff0c;引起的。 修复方法。升级pip&#xff0c;然后重新下载安装gevent模块。 具体&#xff1a; python -m pip install --upgrade pip 使用下面命令解决下载慢的问题。 pip config set global.index-url http…

【WPF.NET开发】WPF.NET桌面应用开发概述

本文内容 为何从 .NET Framework 升级使用 WPF 进行编程标记和代码隐藏输入和命令控件布局数据绑定图形和动画文本和版式自定义 WPF 应用 Windows Presentation Foundation (WPF) 是一个与分辨率无关的 UI 框架&#xff0c;使用基于矢量的呈现引擎&#xff0c;构建用于利用现…

图片处理OpenCV IMDecode模式说明【生产问题处理】

OpenCV IMDecode模式说明【生产问题处理】 1 前言 今天售后同事反馈说客户使用我们的图片处理&#xff0c;将PNG图片处理为JPG图片之后&#xff0c;变为了白板。 我们图片处理使用的是openCV来进行处理 2 分析 2.1 图片是否损坏&#xff1a;非标准PNG头部 于是&#xff0c;马…

SHAP(六):使用 XGBoost 和 HyperOpt 进行信用卡欺诈检测

SHAP&#xff08;六&#xff09;&#xff1a;使用 XGBoost 和 HyperOpt 进行信用卡欺诈检测 本笔记本介绍了 XGBoost Classifier 在金融行业中的实现&#xff0c;特别是在信用卡欺诈检测方面。 构建 XGBoost 分类器后&#xff0c;它将使用 HyperOpt 库&#xff08;sklearn 的 …

【U8+】用友U8删除固定资产卡片,提示:当前卡片不是本月录入的卡片,不能删除。

【问题描述】 用友U8软件&#xff0c;参照已有账套新建账套的时候&#xff0c;选择结转期初余额。 例如&#xff1a;参照已有账套的2022年新建2023年的账套。 结转期初的时候勾选了固定资产模块&#xff0c; 建立成功后登录23年新的账套后&#xff0c;删除固定资产卡片&#xf…

基于Eclipse+SDK+ADT+DDMS的安卓开发环境完整搭建过程

基于EclipseSDKADTDDMS的安卓开发环境完整搭建过程 1 基本概念2 SDK安装3 Eclipse安装4 ADT插件安装4.1 在线安装&#xff08;太慢不建议选择&#xff09;4.2 离线安装&#xff08;建议选择&#xff09; 5 配置SDK6 集成安装7 创建安卓虚拟设备8 创建并启动安卓虚拟机8 关于DDM…

nextjs入门

创建项目 npx create-next-app 项目名 体验文件路由 nextjs提供了文件路由的功能, 根据文件系统的目录结构, 可以识别为对应的页面路由 创建页面 首先, 在src下创建pages目录, 然后创建一个about文件(对应about页面)和main/index.js文件(对应首页) pages/main/index con…

c语言:整数与浮点数在内存中的存储方式

整数在内存中的存储&#xff1a; 在计算机内存中&#xff0c;整数通常以二进制形式存储。计算机使用一定数量的比特&#xff08;bit&#xff09;来表示整数&#xff0c;比如32位或64位。在存储整数时&#xff0c;计算机使用补码形式来表示负数&#xff0c;而使用原码形式来表示…

【计算机网络学习之路】URL概念及组成

目录 一. URL是什么 二. URL的组成 三. encode和decode 前言 本系列文章是计算机网络学习的笔记&#xff0c;欢迎大佬们阅读&#xff0c;纠错&#xff0c;分享相关知识。希望可以与你共同进步。 本篇讲解使用浏览器不可或缺的部分——URL 一. URL是什么 域名及DNS 我们在…

43 - 什么是数据的强、弱一致性?

说到一致性&#xff0c;其实在系统的很多地方都存在数据一致性的相关问题。除了在并发编程中保证共享变量数据的一致性之外&#xff0c;还有数据库的 ACID 中的 C&#xff08;Consistency 一致性&#xff09;、分布式系统的 CAP 理论中的 C&#xff08;Consistency 一致性&…

Android studio Load error:undefined path variables

android stuido 报错 Load error&#xff1a;undefined path variables Gson is undefined 处理方法&#xff1a; 点击进行Sync Project with Gradle Files

Redis——某马点评day02——商铺缓存

什么是缓存 添加Redis缓存 添加商铺缓存 Controller层中 /*** 根据id查询商铺信息* param id 商铺id* return 商铺详情数据*/GetMapping("/{id}")public Result queryShopById(PathVariable("id") Long id) {return shopService.queryById(id);} Service…

文心版吴恩达课程:语义核心(Semantic Kernel)插件的商业应用

文心版吴恩达课程&#xff1a;语义核心&#xff08;Semantic Kernel&#xff09;插件的商业应用 Semantic Kernel is an SDK that integrates Large Language Models (LLMs) like OpenAI, Azure OpenAI, and Hugging Face with conventional programming languages like C#, P…

leetcode:225. 用队列实现栈

一、题目 链接&#xff1a;225. 用队列实现栈 - 力扣&#xff08;LeetCode&#xff09; 函数原型&#xff1a; typedef struct { } MyStack; MyStack* myStackCreate() void myStackPush(MyStack* obj, int x) int myStackPop(MyStack* obj) int myStackTop(MyStack* obj) …

代码随想录刷题题Day4

刷题的第四天&#xff0c;希望自己能够不断坚持下去&#xff0c;迎来蜕变。&#x1f600;&#x1f600;&#x1f600; 刷题语言&#xff1a;C / Python Day4 任务 ● 24. 两两交换链表中的节点 ● 19.删除链表的倒数第N个节点 ● 面试题 02.07. 链表相交 ● 142.环形链表II 1 …

大数据技术之Flume(超级详细)

大数据技术之Flume&#xff08;超级详细&#xff09; 第1章 概述 1.1 Flume定义 Flume是Cloudera提供的一个高可用的&#xff0c;高可靠的&#xff0c;分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构&#xff0c;灵活简单。 1.2 Flume组成架构 Flume组成架构如…