python-基本数据类型

news2024/12/27 21:02:06

hello,这里是Token_w的文章,主要讲解python的基础学习,希望对大家有所帮助
整理不易,感觉还不错的可以点赞收藏评论支持,感谢!

有没有一个人,你想给TA传个小纸条?用恺撒密码一展身手吧。

目录

    • 知识点
    • 知识导图
    • 1、数字类型
      • 1.1 数字类型
      • 1.2 整数类型
      • 1.3 浮点数类型
      • 1.4 复数类型
    • 2、数字类型的运算
      • 2.1 数值运算操作符
    • 3、字符串类型及格式化
      • 3.1 字符串类型
    • 3.2 字符串的索引
      • 3.3 字符串的切片
      • 3.4 format()方法的基本使用
      • 3.5 format()方法的格式控制
    • 4、字符串类型的操作
      • 4.1 字符串操作符
      • 4.2 字符串处理函数
      • 4.3 字符串处理方法
    • 5、类型判断和类型间转换
      • 5.1 数字类型的转换
    • 6、实例解析:恺撒密码
      • 6.1 恺撒密码-加密
      • 6.2 恺撒密码-解密
    • 总结

知识点

  • 数字类型:整数类型、浮点数类型和复数类型
  • 数字类型的运算:数值运算操作符、数值运算函数
  • 字符串类型及格式化:索引、切片、基本的format()格式化方法
  • 字符串类型的操作:字符串操作符、处理函数和处理方法
  • 类型判断和类型间转换

知识导图

在这里插入图片描述

1、数字类型

1.1 数字类型

  • Python语言提供3种数字类型:整数类型、浮点数类型和复数类型,分别对应数学中的整数、实数和复数。
  • 1010是一个整数类型,10.10是一个浮点数类型,10 + 10j是一个复数类型。

1.2 整数类型

  • 与数学中的整数概念一致,没有取值范围限制
  • 整数类型有4种进制表示:十进制、二进制、八进制和十六进制。默认情况,整数采用十进制,其他进制需要增加引导符号
    在这里插入图片描述
    注:不同进制的整数之间可以直接运算

1.3 浮点数类型

  • 带有小数点及小数的数字
  • Python语言中的浮点数类型必须带有小数部分,小数部分可以是0。例如:1010是整数,1010.0是浮点数。
  • 浮点数有2种表示方法:十进制形式的一般表示和科学计数法表示。除十进制外,浮点数没有其他进制表示形式。
  • 下面是浮点数类型的例子:
  • 1010.0, -1010., 1.01e3, -1.01E-3
    科学计数法使用字母e或者E作为幂的符号,以10为基数,含义如下:
    e = a*10^b

上例中,1.01e3值为1010.0;-1.01E-3值为0.00101。
Python浮点数类型的数值范围和小数精度受不同计算机系统的限制。除高精度科学计算外的绝大部分运算来说,浮点数类型的数值范围和小数精度足够“可靠”。

print(1234567890.987654321 * 1234567890.987654321)
# 1.5241578774577044e+18
print(9876543210.123456789 / 1234567890.987654321)
# 8.000000066600002

1.4 复数类型

  • 复数类型表示数学中的复数。复数有一个基本单位元素j,叫作“虚数单位”。含有虚数单位的数被称为复数。例如:
    11.3+4j -5.6+7j 1.23e-4+5.67e+89j

  • Python语言中,复数可以看作是二元有序实数对(a, b),表示为:a + bj,其中,a是实数部分,简称实部,b是虚数部分,简称虚部。虚数部分通过后缀“J”或者“j”来表示。需要注意,当b为1时,1不能省略,即 1j表示复数,而j则表示Python程序中的一个变量。

  • 复数类型中实部和虚部都是浮点类型,对于复数z,可以用z.real和z.imag分别获得它的实数部分和虚数部分

print((1.23e4+5.67e4j).real)
# 12300.0
print((1.23e4+5.67e4j).imag)
# 56700.0
print(1.23e4+5.67e4j.imag     # 先获得5.67e4j的虚部,再与1.23e4进行求和计算)
# 69000.0

2、数字类型的运算

2.1 数值运算操作符

  • Python提供了9个基本的数值运算操作符

在这里插入图片描述

x op= y 等价于 x = x op y

x = 99
x **= 3   # 与x = x**3等价
print(x)
# 970299

数值运算可能改变结果的数据类型,类型的改变与运算符有关,有如下基本规则:

  • 整数和浮点数混合运算,输出结果是浮点数;
  • 整数之间运算,产生结果类型与操作符相关,/ 运算的结果是浮点数;
  • 整数或浮点数与复数运算,输出结果是复数。
print(1010 / 10 )        # / 运算的结果是浮点数
# 101.0
print(1010.0 // 3 )      # 浮点数与整数运算,产生结果是浮点数
# 336.0
print(1010.0 % 3 )       # 浮点数与整数运算,产生结果是浮点数
# 2.0
print(10 - 1 + 1j  )
# (9+1j)
  • Python解释器提供了一些内置函数,在这些内置函数之中,有6个函数与数值运算相关
    在这里插入图片描述

3、字符串类型及格式化

3.1 字符串类型

  • 字符串是字符的序列表示,根据字符串的内容多少分为单行字符串和多行字符串。
  • 单行字符串可以由一对单引号(')或双引号(")作为边界来表示,单引号和双引号作用相同。
  • 多行字符串可以由一对三单引号(‘’')或三双引号(“”")作为边界来表示,两者作用相同。
print('这是"单行字符串"')
# 这是"单行字符串"
print("这是'单行字符串'")
# 这是'单行字符串'
print("""这是'多行字符串'的第一行
这是'多行字符串'的第二行
""")
'''
这是'多行字符串'的第一行
这是'多行字符串'的第二行
'''
  • Python语言转义符: \
  • 例如:\n表示换行、\表示反斜杠、'表示单引号、"表示双引号、\t表示制表符(TAB)等。
print("既需要'单引号'又需要\"双引号\"")
# 既需要'单引号'又需要"双引号"

3.2 字符串的索引

  • 字符串是一个字符序列:字符串最左端位置标记为0,依次增加。对字符串中某个字符的检索被称为索引。索引的使用方式如下:
    <字符串或字符串变量>[序号]

  • 如果字符串长度为L,正向递增需要以最左侧字符序号为0,向右依次递增,最右侧字符序号为L-1;反向递减序号以最右侧字符序号为-1,向左依次递减,最左侧字符序号为-L。

  • 字符串以Unicode编码存储,字符串的英文字符和中文字符都算作1个字符。

print("青青子衿,悠悠我心。"[-5])
# '悠'
print(s = "青青子衿,悠悠我心。")
print(s[5])
# '悠'

3.3 字符串的切片

  • 对字符串中某个子串或区间的检索被称为切片。切片的使用方式如下:
    <字符串或字符串变量>[N: M] #包含N不包含M
print("青青子衿,悠悠我心。"[8:4])
# ''
print("青青子衿,悠悠我心。"[:4])
# '青青子衿'
print("青青子衿,悠悠我心。"[5:])
# '悠悠我心。'
print(print("青青子衿,悠悠我心。"[5:]))
# 悠悠我心。

3.4 format()方法的基本使用

  • 字符串format()方法的基本使用格式是:
    <模板字符串>.format(<逗号分隔的参数>)

其中,模板字符串是一个由字符串和槽组成的字符串,用来控制字符串和变量的显示效果。槽用大括号({})表示,对应format()方法中逗号分隔的参数。

print("{}曰:学而时习之,不亦说乎。".format("孔子"))
# '孔子曰:学而时习之,不亦说乎。'
  • 如果模板字符串有多个槽,且槽内没有指定序号,则按照槽出现的顺序分别对应.format()方法中的不同参数。
print("{}曰:学而时习之,不亦{}。".format("孔子","说乎"))
# '孔子曰:学而时习之,不亦说乎。'
  • 可以通过format()参数的序号在模板字符串槽中指定参数的使用,参数从0开始编号
print("{1}曰:学而时习之,不亦{0}。".format("说乎","孔子"))
# '孔子曰:学而时习之,不亦说乎。'

print("{1}曰:{{学而时习之,不亦{0}}}。".format("说乎","孔子"))
# '孔子曰:{学而时习之,不亦说乎}。'

3.5 format()方法的格式控制

  • format()方法中模板字符串的槽除了包括参数序号,还可以包括格式控制信息。
    {<参数序号>: <格式控制标记>}

  • 其中,格式控制标记用来控制参数显示时的格式 。格式控制标记包括:<填充><对齐><宽度>,<.精度><类型>6个字段,这些字段都是可选的,可以组合使用
    在这里插入图片描述

  • <填充>、<对齐>和<宽度>主要用于对显示格式的规范。

  • 宽度指当前槽的设定输出字符宽度,如果该槽参数实际值比宽度设定值大,则使用参数实际长度。如果该值的实际位数小于指定宽度,则按照对齐指定方式在宽度内对齐,默认以空格字符补充。

  • 对齐字段分别使用<、>和^三个符号表示左对齐、右对齐和居中对齐。

  • 填充字段可以修改默认填充字符,填充字符只能有一个。

s = "等级考试"
print("{:25}".format(s)) #左对齐,默认
# '等级考试                     '
print("{:^25}".format(s)) #居中对齐
# '          等级考试           '
print("{:>25}".format(s)) #右对齐
# '                     等级考试'
print("{:*^25}".format(s)) #居中对齐且填充*号
# '**********等级考试***********'
print("{:+^25}".format(s)) #居中对齐且填充+号
# '++++++++++等级考试+++++++++++'
print("{:十^25}".format(s)) #居中对齐且填充汉字“十”
# '十十十十十十十十十十等级考试十十十十十十十十十十十'
print("{:^1}".format(s)) #z指定宽度为1,不足变量s的宽度
# '等级考试'
  • <.精度><类型>主要用于对数值本身的规范
  • <.精度>由小数点(.)开头。对于浮点数,精度表示小数部分输出的有效位数。对于字符串,精度表示输出的最大长度。小数点可以理解为对数值的有效截断。
print("{:.2f}".format(12345.67890))
# '12345.68'
print("{:>25.3f}".format(12345.67890))
# '                12345.679'
print("{:.5}".format("全国计算机等级考试"))
# '全国计算机'
  • <类型>表示输出整数和浮点数类型的格式规则。
  • n 对于整数类型,输出格式包括6种:
    • b: 输出整数的二进制方式;

• c: 输出整数对应的Unicode字符;

• d: 输出整数的十进制方式;

• o: 输出整数的八进制方式;

• x: 输出整数的小写十六进制方式;

• X: 输出整数的大写十六进制方式;

print("{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425))
# '110101001,Ʃ,425,651,1a9,1A9'
  • 对于浮点数类型,输出格式包括4种:
    • e: 输出浮点数对应的小写字母e的指数形式;

• E: 输出浮点数对应的大写字母E的指数形式;

• f: 输出浮点数的标准浮点形式;

• %: 输出浮点数的百分形式。

print("{0:e},{0:E},{0:f},{0:%}".format(3.14))
# '3.140000e+00,3.140000E+00,3.140000,314.000000%'
print("{0:.2e},{0:.2E},{0:.2f},{0:.2%}".format(3.14)) # 对比输出
# '3.14e+00,3.14E+00,3.14,314.00%'
  • 常用的format()方法格式控制信息
print("{:.2f}".format(3.1415926)) # 输出小数点后两位
# '3.14'
print("{:x}".format(1010)) # 输出整数的十六机制形式
# '3f2'
print("{:.5}".format("这是一个很长的字符串")) # 输出字符串的前5位
# '这是一个很'
print("{:-^10}".format("PYTHON")) # 居中并填充
# '--PYTHON--'

4、字符串类型的操作

4.1 字符串操作符

  • 针对字符串,Python语言提供了几个基本操作符
    在这里插入图片描述
name = "Python语言" + "程序设计"
print(name)
# 'Python语言程序设计'
print("等级考试!" * 3)
# '等级考试!等级考试!等级考试!'
print("语言" in name)
# True
print('Y' in name)
# False

4.2 字符串处理函数

  • Python语言提供了一些对字符串处理的内置函数
    在这里插入图片描述
print(len("全国计算机等级考试Python语言科目"))
# 19
print(chr(10000))
# '✐‘
print(hex(1010))
# '0x3f2'

4.3 字符串处理方法

  • 方法也是一个函数,只是调用方式不同。函数采用func(x)方式调用,而方法则采用.func(x)形式调用。方法仅作用于前导对象。
    在这里插入图片描述
  • str.split(sep) 能够根据sep分隔字符串str,分割后的内容以列表类型返回。
print("Python is an excellent language.".split())
# ['Python', 'is', 'an', 'excellent', 'language.']
print("Python is an excellent language.".split('a'))
# ['Python is ', 'n excellent l', 'ngu', 'ge.']
print("Python is an excellent language.".split('an'))
# ['Python is ', ' excellent l', 'guage.']
  • str.count(sub)方法返回字符串str中出现sub的次数,sub是一个字符串。
print("Python is an excellent language.".count('a'))
# 3
  • str.replace(old, new)方法将字符串str中出现的old字符串替换为new字符串,old和new的长度可以不同。
print("Python is an excellent language.".replace('a', '#'))
# 'Python is #n excellent l#ngu#ge.'
print("Python is an excellent language.".replace('Python', 'C'))
# 'C is an excellent language.'
  • str.center(width, fillchar)方法返回长度为width的字符串,其中,str处于新字符串中心位置,两侧新增字符采用fillchar填充,当width小于字符串长度时,返回str。其中,fillchar是单个字符。
print("Python".center(20, "="))
# '=======Python======='
print("Python".center(2, "="))
# 'Python'
  • str.strip(chars)从字符串str中去掉在其左侧和右侧chars中列出的字符。chars是一个字符串,其中出现的每个字符都会被去掉。
print(" ==Python== ".strip(' '))
# '==Python=='
print(" ==Python== ".strip(' ='))
# 'Python'
print(" ==Python== ".strip(' =n'))
# 'Pytho'
  • str.join(iter)中iter是一个具备迭代性质的变量,该方法将str字符串插入iter变量的元素之间,形成新的字符串。
print(" ".join('PYTHON'))
# 'P Y T H O N'
print(",".join('12345'))
# '1,2,3,4,5'
print(",".join(['1', '2', '3', '4', '5']))
# '1,2,3,4,5'

5、类型判断和类型间转换

5.1 数字类型的转换

  • Python语言提供type(x)函数对变量x进行类型判断,适用于任何数据类型。
n = eval(input('请输入一个数字:'))
if type(n) == type(123):
    print("输入的数字是整数。")
elif type(n) == type(11.3):
    print("输入的数字是浮点数。")
else:
    print("无法判断输入类型。")
  • 数值运算操作符可以隐式地转换输出结果的数字类型,例如,两个整数采用运算符“/”的除法将可能输出浮点数结果。
  • 此外,通过内置的数字类型转换函数可以显式地在数字类型之间进行转换
    在这里插入图片描述

6、实例解析:恺撒密码

  • 恺撒撒密码是古罗马恺撒大帝用来对军事情报进行加密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列该字符后面第三个字符:
    原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

  • 原文字符P,其密文字符C满足如下条件:
    C = ( P + 3 ) mod 26

  • 解密方法反之,满足:
    P = ( C – 3 ) mod 26

6.1 恺撒密码-加密

  • 恺撒密码的加密算法程序首先接收用户输入的文本,然后对字母a-z和字母A-Z按照密码算法进行转换
# CaesarEncode.py
ptxt = input("请输入明文文本: ")
for p in ptxt:
        if "a" <= p <= "z":
                print(chr(ord("a")+(ord(p)-ord("a")+3)%26), end='')
        elif "A" <= p <= "Z":
                print(chr(ord("A")+(ord(p)-ord("A")+3)%26), end='')
        else:
                print(p, end='')
>>>
请输入明文文本: This is an excellent Python book.
Wklv lv dq hafhoohqw Sbwkrq errn.

6.2 恺撒密码-解密

  • 恺撒密码的解密算法程序首先接收用户输入的加密文本,然后对字母a-z和字 母A-Z按照密 码算法进行反向转换
# CaesarDecode.py
etxt = input("请输入加密后文本: ")
for p in etxt:
        if "a" <= p <= "z":
                print(chr(ord("a")+(ord(p)-ord("a")-3)%26), end='')
        elif "A" <= p <= "Z":
                print(chr(ord("A")+(ord(p)-ord("A")-3)%26), end='')
        else:
                print(p, end='')
>>>
请输入加密后文本: Wklv lv dq hafhoohqw Sbwkrq errn.
This is an excellent Python book.

总结

具体讲解了计算机中常用的数字类型及操作,包括Python数值运算操作符和数值运算函数。进一步讲解了字符串类型及格式化、字符串操作符、字符串处理函数和字符串处理方法等。最后,还介绍了类型判断和类型转换的基本方法,通过对恺撒密码及其变种若干实例的讲解帮助读者加深对数据类型操作的理解。

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

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

相关文章

【Docker】Docker Compose的配置与部署

文章目录 一、Docker Compose1. Docker Compose 的概述2. Docker Compose 三大的概念3. Docker Compose 环境安装 二、YAML 文件格式及编写注意事项1. YAML 文件格式2. YAML 格式的注意事项3. YAML 数据结构3.1 基本类型3.2 实例3.3 YAML 特殊类型文本块锚点与引用 三、Docker …

【【直流电机驱动PWN】】

直流电机驱动PWN 前面都是沙县小吃&#xff0c;这里才是满汉全席 直流电机是一种电能转化成机械能的装置 直流电机有两个电极 当电机正接 电机正转 当电机负接 电机倒转 电机还有步进电机 舵机 无刷电机 空心杯电机 因为电机是一个大功率器件并不太好直接接在IO端口上所以我…

2023 年牛客多校第一场题解(上)

A Almost Correct 题意&#xff1a;给定长度为 n n n 的 01 01 01 串 s s s&#xff0c;构造一个排序网络&#xff0c;使得能够将除 s s s 之外的任意 01 01 01 序列正确排序&#xff0c;且 s s s 无法被正确排序。 T T T 组测试&#xff0c; 1 ≤ T ≤ 1 0 4 1 \le T \…

ASEMI代理海矽美快恢复二极管SFP6002的特性和应用分析

编辑-Z 二极管SFP6002是一种常见的电子元件&#xff0c;也被称为快恢复二极管。它具有快速恢复时间和低反向恢复电流的特点&#xff0c;适用于高频电路和开关电源等应用。 SFP6002的主要特性包括&#xff1a; 1. 快速恢复时间&#xff1a;SFP6002具有快速的恢复时间&#xff…

Git Gui相关术语

文章目录 Git Gui主界面相关术语- Amend Last Commit&#xff08;修正最后一次提交&#xff09;- Rescan&#xff08;重新扫描&#xff09;- Sign Off&#xff08;签名&#xff09;- Stage Changed Git Gui Commit菜单相关术语- Stage to Commit&#xff08;暂存到提交&#xf…

Ceph组件

Ceph组件 无论是想向云平台提供Ceph 对象存和 Ceph 块设备服务、部署Ceph 文件系统,或者是将 Ceph 用于其他目的,所有 Ceph 存储集群部署都从设置每个 Ceph 节点、网络开始。 一个Ceph 存储集群至少需要一个Ceph Monitor、Ceph Manager和 Ceph OSD (OBJECT STORAGE DAEMON对象存…

【MySQL】十三,索引的代价、MySQL数据结构选择的合理性

索引的代价 空间上的代价 每建立一个索引都要为它建立一棵B树&#xff0c;每一棵B树的每一个节点都是一个数据页&#xff0c;一个页默认会占用 16KB 的存储空间&#xff0c;一棵很大的B树由许多数据页组成&#xff0c;那就是很大的一片存储空间。 时间上的代价 每次对表中的…

前端开发中的常见优化

目录 外观 兼容 不同尺寸&#xff08;包裹&#xff0c;height:100%&#xff09; 不同 浏览器 隐藏滚动条 的 不同属性名 重排->重绘 不显示 display:none->禁用disable 性能 导航重复&#xff08;修改原型push、replace方法&#xff09; 搜索防抖 import { debo…

【Docker】Docker私有仓库管理

目录 一 、Harbor 简介1.1 什么是Harbor1.2Harbor的特性1.3Harbor的构成 二、Harbor部署2.1 部署 Docker-Compose 服务2.2 部署 Harbor 服务2.3启动Harbor2.4 创建一个新项目2.5 在其他客户端上传镜像 三、配置Harbor 高可用四、维护管理Harbor4.1. 通过 Harbor Web 创建项目4.…

提升Web3安全性和用户体验:元事务和加密技术的应用

在Web3中&#xff0c;去中心化应用程序&#xff08;DApps&#xff09;是一种基于区块链技术的应用程序&#xff0c;它们通过智能合约实现透明、安全、去中心化的业务逻辑。然而&#xff0c;DApps的使用门槛比传统的中心化应用程序更高&#xff0c;需要用户具备一定的技术知识&a…

python简单入门

python简单入门 文章目录 python简单入门[toc] 地址链接1. 官网2. 下载地址3. 官方文档 1. 第一章1.1 python解释器1.2 基础语法1.2.1 常见数据类型1.2.2 强制类型转换1.2.3 注释1.2.4 运算符1.2.5 字符串1.2.5.1 字符串的定义1.2.5.2 字符串拼接1.2.5.3 格式化字符串1.2.5.3 精…

profinet 调试记录

一、 树莓派运行codesys runtime Codesys control for Raspberry Pi (外网) 链接&#xff1a;https://pan.baidu.com/s/1vgURlEG_y4C5rj7rALdOdQ?pwdfkhr 提取码&#xff1a;fkhr 1. 用户名称要以 root 登录 若是普通用户&#xff0c;会提示&#xff1a;脚本必须以 root 身…

Facebook Messenger市场营销,跨境电商不可忽略的营销手段

营销始于广告。广告仍然是不可或缺的&#xff0c;但广告的方式正在发生变化。以前商家会使用广告邮件或者直接转到网站上的产品页面&#xff0c;但是这两种方法都存在很大问题。虽然企业可以通过电子邮件与潜在客户保持联系&#xff0c;但不能保证这些潜在客户会真正看广告邮件…

【算法与数据结构】104、111、LeetCode二叉树的最大/最小深度

文章目录 一、题目二、层序遍历法三、递归法四、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、层序遍历法 思路分析&#xff1a;两道题都可以用层序遍历&#xff08;迭代法&#xff09;来做&#xff0c;遍历完…

通付盾获苏州市工业互联网产业联盟“工业互联网看苏州”先锋企业

近日&#xff0c;苏州市工业互联网产业联盟公布2022年度苏州市工业互联网产业联盟系列评选获评名单&#xff0c;通付盾荣获“工业互联网看苏州”先锋企业。 为加快推动工业互联网在数字赋能产业创新集群融合发展中发挥更显著作用&#xff0c;进一步完善苏州市工业互联网产业生态…

Docker Compose 容器编排 + Docker--harbor私有仓库部署与管理

目录 一、Docker Compose简介 1、Docker Compose 的YAML 文件格式及编写注意事项 2、Docker compose 使用的三个步骤 3、 Docker Compose配置常用字段 4、 Docker Compose 常用命令 5、 Docker Compose 文件结构 二&#xff1a; Docker Compose 安装 1、Docker Compose…

【C#】并行编程实战:基于任务的异步编程基础(下)

第八章介绍了 C# 中可用异步编程的实践和解决方案&#xff0c;还讨论了何时适合使用异步编程等。本章主要介绍 async 和 await 关键字。 其实在之前的学习中&#xff0c;大家都已经了解过这两个关键字了&#xff0c;用得非常多。其实我觉得没有必要再赘述了&#xff0c;不过这里…

Git简介与工作原理:了解Git的基本概念、版本控制系统和分布式版本控制的工作原理

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

Centos安装postgresql数据库以及postgis扩展的安装

这几天项目上的数据库迁移差点没把我弄死 &#xff0c;因为项目上的使用的是postgis来处理地理数据 &#xff0c;而开发环境的数据库以及postgis扩展并不是我安装的。所以在迁移的时候造成了不小的麻烦。记录一下迁移过程中遇到的。下面以Centos操作系统为例 文章目录 卸载post…

微信小程序——实现手机振动效果

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…