Day01-postgresql数据库基础入门培训
Day01-postgresql数据库基础入门培训
- 1、PostgresQL数据库简介
- 2、PostgreSQL行业生态应用
- 3、PostgreSQL版本发展与特性
- 4、PostgreSQL体系结构介绍
- 5、PostgreSQL与MySQL的区别
- 6、PostgreSQL与Oracle、MySQL的对比
1、PostgresQL数据库简介
-
PostgreSQL【简称:PG】是加州大学伯克利分校计算机系开发的,一个开源免费的关系式数据库管理系统,经过长达15年以上的积极开发和不断改进,PostgreSQL已在可靠性、稳定性、数据一致性等获得了业内相对高的声誉。
-
PostgreSQL可以运行在所有主流操作系统上,包括Linux、AIX、HP-UX、Solaris和Windows等34种平台。
-
PostgreSQL是完全的事务安全性数据库,完整地支持外键、联合、视图、触发器和存储过程(并支持多种语言开发存储过程)。
-
PostgreSQL支持了大多数SQL标准的数据类型,包括整型、数值型、布尔型、字节型、字符型、日期型、时间型、二进制的大对像(图片、声音和视频)。
-
PostgreSQL的存储过程开发可以使用众多的程序语言,包括Java、Perl、Python、Ruby、Tcl、C/C++和自带的PL/pgSQL,其中的PL/pgSQL与Oracle的PL/SQL很相似,内置了数百个函数,功能从基本的算术计算和字符串处理到加密逻辑计算并与Oracle有高度兼容性。
-
PostgreSQL支持国际字符集、多字节编码并支持使用当地语言进行排序、大小写处理和格式化等操作。
-
PostgreSQL对很多高级开发语言有原生的编程接口,如C/C++、Java、.Net、Perl、Python、Ruby、Tcl和ODBC以及其他语言等,也包含各种文档。
-
PostgreSQL有很多高级功能,像多版本并发控制(MVCC)、按时间点恢复(PITR)、表空间、异步复制、嵌套事务、在线热备、复杂查询的规划和优化以及为容错而进行的预写日志等。
-
PostgreSQL有很多高品质的图形化的PostgreSQL管理工具软件,包括开源和商业性质的。
-
PostgreSQL的源代码可以自由获取,它的授权是在非常自由的开源授权下,这种授权允许用户在各种开源或是闭源项目中使用、修改和发布PostgreSQL的源代码。用户对源代码的可以按用户意愿进行任何修改、改进。
-
PostgreSQL的快速发展是由于MySQL被Oracle公司收购导致的,同时在2019年微软官宣收购PostgreSQL初创公司Citus Data(OLAP:citus分布式插件)。
2、PostgreSQL行业生态应用
-
PostgreSQL被称为“世界上最先进的开源关系型数据库”,属于一专多长的全栈数据库,主要场景应用如下:
- OLTP交易系统
- OLAP、批处理、数据仓库
- 空间与地理数据库(PostGIS)
- 缓存系统、消息队列/流处理
- 搜索索引、图数据库
- NoSOL数据库
- 时序数据库 【MySQL被称为“世界上最流行的开源关系型数据库”】
-
在全球数据库排名中,PostgreSQL排名全球第四(统计时间:2023.06)
- 在商业数据库当中,Oracle属于多专多长的全数据库,全球最强。
- 在开源数据库当中,MySQL主要应用于互联网业务的OLTP,所以PostgreSQL弥补了MySOL在传统行业不擅长的方向,又解决了商业数据库的成本问题。
- 随着信创项目的推动,国产数据库主要以Oracle、MySQL、PostgreSQL三个方向为主,目前以PostgreSQL开源进行二次开发的国产数据库应用越来越广,同时国内外使用的客户越来越多,比如:平安、苏宁、人寿、招商,DELL,富士通,SAP苹果,本田,丰田等。
- PostgreSQL基于云平台的使用,如AWS、阿里云、腾讯、华为都有用到PG的社区版作为数据库可选方案之一
根据中国信通院发布的数据库发展研究报告2021,我国关系型数据库基于MySQL和PostgreSQL二次开发的数量依次占关系型数据库比例为28.40%和29.63%。
- 从目前国内发布的产品来说,大部分都高度兼容Oracle。
- 未来国内市场数据库主流的产品线为3种模式:
- Oracle
- PostgreSQL
- MySQL(MySQL+MongoDB+Redis)
从国内外数据库源流分支来说(依托开源协议来构建或二次开发),源流于PostgreSQL的开源协议框架,据不完全准确统计,列举部分-Part1:
- EDB(Enterprise Postgres Database)
- PostGlS、Citus、Timescaledb、PipelineDB
- GreenPlum
- 电信TeleDB
- 腾讯TDSQL PostgreSQL版(原TBase)
- 阿里PolarDB for PostgreSQL/AnalyticDB PostgreSQL
- 人大金仓KingBase
源流于PostgreSQL的开源协议框架,据不完全准确统计,列举部分-Part2:
- 瀚高HighGo DB
- 酷克HASHDATA
- 优炫UXDB
- 亚信AntDB
- 偶数HAWQ
- 华为GaussDB A(200+300)
- 华为openGauss
源流于PostgreSQL的开源协议框架,据不完全准确统计-Part3
其中基于华为openGauss又包括-Part1:
- 中国移动-磐维数据库
- 中国联通-CUDB
- 海量Vastbase
- 恩墨MogDB
- 神舟通用
- 南大通用Gbase 8c/8s
- 恒生电子LightDB
源流于PostgreSQL的开源协议框架,据不完准确统计-Part4
其中基于华为openGauss又包括-Part2:
- 超聚变FusionDB
- 虚谷伟业-有蓉数据库
- 北京太阳塔LNXDB-RDS
- 沐融信息MuDB
- 天曦TXDB
3、PostgreSQL版本发展与特性
PostgreSQL最新正式版15.3(2023.6),2023年发布正式版16.1。
各版本发布的时间与生命周期如下:
postgresql各版本特性介绍:https://www.postgresql.org/about/featurematrix/
PostgreSQL各版本特性介绍:
-
1986年:Postgre诞生
-
1989年:Postgres 1 发布
-
1990年:Postgres 2 发布,重写了规则系统
-
1991年:Postgres 3 发布,改进了规则系统,增加了对多种存储系统支持的能力,并且改进了查询引擎。
-
1993年:Postgres 4 发布,随便用户与特性需求急剧增加,随后该项目正式终止
-
1994年:新增SQL语言解释器,建立了Postgres95。
-
1996年:Postgres改名PostgreSQL,正式社区化发展。
-
1997年:PostgreSQL 6.0 发布,第一个正式版本,后续1997年~1999年期间陆续发布了6.1/6.2/6.3/6.4/6.5,新增的功能有:
- 多列索引、序列、货币和时间数据类型,GEQO。
- JDBC接口、触发器、服务端编程接口、约束,SOL92标准的子查询
- 增加了可读视图、PL/pgTGL。
- MVCC、临时表、更多的SOL语句支持。
-
2001年:PostgreSQL7.0发布,增加了外键、JOIN连接。
-
2001年:PostgreSQL7.1发布,增加了WAL预写式日志、外连接。
-
2002年:PostgreSQL7.2发布,支持PostGlS,索引,函数,增加了PL/Python。
-
2003年:PostgreSQL7.3发布,增加了模式、表函数、prepared query。
-
2004年:PostgreSQL7.4发布,优化了JOIN和数据仓库函数。
-
2005年:PostgreSQL8.0发布,支持Win平台/增加savepoints/表空间/时间点恢复。
-
2005年:PostgreSQL8.1发布,性能增强、增加了两阶段提交、表分区、位图索引扫描、共享行锁、角色。
-
2006年:PostgreSQL8.2发布,性能增强,增加了在线重建索引/咨询锁/热备
-
2008年:PostgreSQL8.3发布,增加全文搜索、SQL/XML、枚举类型、UUID类型等
-
2009年:PostgreSQL8.4发布,窗口查询,数据透视,递归查询,并行恢复,列级权限,CTE公用表表达式。
-
2010年:PostgreSQL9.0发布,支持Windows 64位系统,增加内置二进制流复制、热备、内置升级功能。
-
2011年:PostgreSQL9.1发布,增加同步复制、无日志表、序列快照隔离级别、SELinux集成、扩展、外部表,可写CTE公用表表达式。
-
2012年:PostgreSQL9.2发布,增加级联流复制、原生JSON支持、增强锁管理、range类型、索引扫描、空间分区GIST索引。
-
2013年:PostgreSQL9.3发布,增加触发器、视图、可写外部表、物化视图、复制功能增强,横向连接LATERAL JOIN、。
-
2014年:PostgreSQL9.4发布,Linux大页支持,增加了JSONB、RANGE类型,ALTER SYSTEM语法、不阻塞读的刷新物化视图、动态注册/起停后台进程、逻辑API、GIN索引增强。
-
2016年:PostgreSQL9.5发布,新的BRIN索引,增加UPSERT插入更新、CUBE/ROLLUP/GROUPING SETS分组集合等语法,行级安全
-
2016年:PostgreSOL9.6发布,支持并行查询,FDW功能增强,多机同步standby,快速清空大表。
为了加快市场推广,跟进Oracle版本策略,平均每年发布一个大版本:
-
2017年:PostgreSQL 10发布,支持逻辑复制,内置分区表,增强并行查询机制,数据库编程能力,并行功能增强,全文检索支持JSON和JSONB数据类型,估值计算,文本挖掘,物联网优化,GIS业务优化,图像搜索,基因测序,3D数据处理,机器学习UDF库等。
-
2018年:PostgreSQL 11发布,分区表的改进与增强,存储过程支持事务,并行能力的增强,增加对JIT编译的支持,其它功能完善。
-
2019年:PostgreSQL 12发布,分区性能提升,B树索引增强,公用表表达式(CTE),准备好的计划控制,即时编译,校验和控制,在线重建索引,支持SQL/JSONpath,支持生成列,新增 Pluggable Table Storage Interface等。
-
2020年:PostgreSQL 13发布,Btree索引优化,支持增量排序,支持并行vacuum index,支持可信插件,支持扩展统计信息,支持hash aggregation使用磁盘存储,逻辑复制对分区表的支持。
-
2021年:PostgreSQL 14发布,数据类型与函数更多支持,管理功能增强,复制和恢复增强,索引功能改进,性能提升,安全增强等。
-
2022年:PostgreSQL 15发布,大数据集的排序性能提升,各类查询也进行了优化,支持使用LZ4、Zstandard算法进行压缩备份,引入了jsonlog数据格式用于日志记录,安全性增强,删除public模式的创建权限。
-
2023年:PostgreSQL 16发布,可以实现级联逻辑复制,支持更多的并行查询,安全增强,监控管理增强。
4、PostgreSQL体系结构介绍
应用程序的访问架构
PostgreSQL体系结构
它由共享内存、一系列后台进程和数据文件组成。
PostgreSQL进程分为主进程与辅助进程。
主进程:
- Postmaster进程是整个数据库实例的总控进程,负责启动关闭该数据库实例。
辅助进程:
- SysLogger(系统日志)进程
- BgWriter(后台写)进程
- WALWrite(预写式日志)进程
- PgArch(归档)进程
- AutoVacuum(系统自动清理)进程
- PgStat(统计收集)进程
- CheckPoint(检查点)进程
PostgreSQL的逻辑结构分为实例、数据库、schema、对象;
实例中允许创建多个数据库,每个数据库中可以创建多个schema,每个schema下面可以创建多个对象。对象包括表、索引、视图、序列、函数等。
表空间是物理结构,同一表空间下可以有多个数据库。
数据库是逻辑结构,是表、索引、视图、存储过程、函数等对象的集合,一个数据库下可以有多个schema。
模式是逻辑结构,是对数据库的逻辑划分。
在oracle中用户和schema基本上可以画上等同关系,但是pg中两者没有这样严格的对应关系
将数据文件中的空间从逻辑上划分成一个个页面(数据块)
数据页大小:默认为8K
(可支持4K=16TB,8K=32TB,16K=64TB,32K=128TB)
页面可以分成两种:
- 数据页面:数据页面是用来存储用户数据的
- 控制页面:控制页面用来管理这些数据页面
数据库共享缓存中的空间划分也是按页为基本单位,一个页的大小与数据文件中页的大小一致,这样便于整页读取数据文件,并放入到数据库Buffer中,从Buffer写入数据文件也同理,保证了缓存与数据文件结构和内容上的一致性。
数据库包含的文件种类:
- 数据库文件:数据库对象,如:数据库、表,索引,序列等对象。
- 控制文件:用来记录数据库集群的状态信息,如:版本信息、集群所管理的各种文件信息、检查点信息、事务状态信息等
- 参数文件:存放数据库运行参数
- 日志文件:记录数据修改操作的日志,用于系统发生故障时进行数据恢复。
- 临时文件:存放数据库进行计算的过程中,生成的各种中间对象,如排序运算的外存归并单元。
PostgreSQL由一系列数据库组成。
一套PostgreSQL程序称之为一个数据库群集。
当initdb()命令执行后,template0,template1,和postgres数据库被创建。
template0和template1数据库是创建用户数据库时使用的模版数据库,他们包含系统元数据表。
initdb()刚完成后,template0和template1数据库中的表是一样的。但是template1数据库可以根据用户需要创建对象。用户数据库是通过克隆template1数据库来创建的;
一个表空间可以被多个数据库同时使用。此时,每一个数据库都会在表空间路径下创建为一个新的子路径。
创建一个用户表空间会在$PGDATA\pg_tblspc目录下面创建一个软连接,连接到表空间制定的目录位置。
PostgreSQL内存主要为分共享内存与本地内存。
共享内存
PostgreSQL启动后,会生成一块共享内存,用于做数据块的缓冲区,以便提高读写性能。WAL日志缓冲区和Clog缓冲区也存在共享内存中,除此之外还有全局信息比如进程、锁、全局统计等信息也保存在共享内存中。
其中最重要的组成部分是Shared Buffer和WAL Buffer。
本地内存
非全局存储的数据都存在本地内存中,主要包括:
临时缓冲区:用于访问临时表的缓冲区
work_mem:内部排序操作和Hash表在使用临时操作文件之前使用的存储缓冲区。
manintance_work mem:在维护操作比如:VACUUM(收集表和索引的统计信息,整理表和索引)、CREATE INDEX、ALTER TABLE ADD FOREIGN Key等中使用的内存缓冲区。
5、PostgreSQL与MySQL的区别
序号 | 特性类型 | MySQL | PostgreSQL |
---|---|---|---|
1 | 实例与数据库 | 1.通过MySQL命令(mysqld)启动实例); 2.一个实例可以管理一个或多个数据库; 3.一台服务器可以运行多个 mysqld 实例; 4.一个MySQL实例中的所有数据库共享同一个系统编目。 | 1.通过Postmaster 进程(pg_ctl)启动实例; 2.一个实例可以管理一个或多个数据库,这些数据库组成一个集群; 3.集群是磁盘上的一个区域,这个区域在安装时初始化并由一个目录组成,所有数据都存储在这个目录中; 4.使用 initdb 创建第一个数据库。一台机器上可以启动多个实例; 5.每个数据库有自己的系统编目,但所有数据库共享pg_databases |
2 | 配置文件 | my.conf | Postgresgl.conf |
3 | 数据库连接 | 使用 CONNECT或 USE 语句连接数据库,这时要指定数据库名,还可以指定用户id和密码。 | 使用 connect 语句连接数据库,这时要指定数据库名,还可以指定用户 id 和密码。 |
4 | 客户机连接文件 | my.conf | pg_hba.conf |
5 | 数据缓冲区 | 通过 innodb_buffer_pool _size参数设置数据缓冲区,这个参数最高可以设置为机器物理内存量的 80%。 | 通过Shared_buffers参数设置数据缓冲区。在默认情况下分配64个缓冲区。默认的块大小是 8K。可以通过设置postgresql.conf 文件中的 shared_buffers 参数来更新缓冲冲区缓存。 |
6 | 执行计划 | 使用 EXPLAIN 命令查看查询的解释计划。 | 使用 EXPLAIN 命令查看查询的解释计划,返回丰富的信息, |
7 | 备份恢复 | InnoDB 使用重做日志记录,支持在线和离线完全备份以及崩溃和事务恢复,也支持热备份。 | 在数据目录的一个子目录中维护重做日志。支持在线和离线完全备份以及崩溃、时间点和事务恢复,可以支持热备份。 |
8 | 表 | 取决于存储引擎。例如,NDB存储引擎支持分区表,内存引擎支持内存表。 | 支持临时表、常规表以及范围和列表类型的分区表,不支持哈希分区表。由于PostgreSQL的表分区是通过表继承和规则系统完成了,所以可以实现更复杂的分区方式。 |
9 | 索引 | 1.取决存储引擎。MyISAM与InnoDB都支持BTREE 2.不支持函数索引,只能在创建基于具体列的索引 | 1.支持 B-树、哈希、R-树和 Gist 索引。 2.支持函数索引,同时还支持部分数据索引。 |
10 | 约束 | 支持主键、外键、唯一和非空约束。对检查约束进行解析,但是不强制实施。 | 支持主键、外键、唯一、非空和检查约束。 |
11 | 存储过程 | 支持 CREATE PROCEDURE 和 CREATE FUNCTION 语句。存储过程可以用 SQL 和C++ 编写。 | 没有单独的存储过程,都是通过函数实现的。 |
12 | 函数 | 用户定义函数可以用 SQL、c 和 C++编写 | 用户定义函数可以用 PL/pgSQL(专用的过程语言)、PL/TcI、PL/Perl、PL/Python、SQL和C编写。 |
13 | 触发器 | 支持事前、事后触发器和语句触发器,触发器语句用过程语言复合语句编写。 | 支持事前、事后触发器和语句触发器,触发器过程用C编写。 |
14 | 物化视图 | 不支持物化视图。 | 通过规则系统可以实现物化视图的功能。 |
15 | 事务与锁 | 支持表级和行级锁。 InnoDB 存储引擎支持读未提交(read-uncommitted)、不可重复读(read-committed)、可重复读(repeatable-read)、串行化(serializable)。 使用 SET TRANSACTION ISOLATION LEVEL语句在事务级设置隔离级别。 | 支持表级和行级锁。 支持的隔离级别是Read Committed(默认-看到查询启动时数据库的快照)和 Serialization(与 Repeatable Read 相似,只能看到在事务启动之前提交的结果)。 使用 SET TRANSACTION 语句在事务级设置隔离级别。 使用 SET SESSION 在会话级进行设置。 |
16 | DBLINK | 不支持database link。 | 有dblink、FDW,可以连接到oracle和mysql上。 |
6、PostgreSQL与Oracle、MySQL的对比
相关文章:

Day01-postgresql数据库基础入门培训
Day01-postgresql数据库基础入门培训 1、PostgresQL数据库简介2、PostgreSQL行业生态应用3、PostgreSQL版本发展与特性4、PostgreSQL体系结构介绍5、PostgreSQL与MySQL的区别6、PostgreSQL与Oracle、MySQL的对比 1、PostgresQL数据库简介 PostgreSQL【简称:PG】是加…...

打卡第四天 P1081 [NOIP2012 提高组] 开车旅行
今天是我打卡第四天,做个省选/NOI−题吧(#^.^#) 原题链接:[NOIP2012 提高组] 开车旅行 - 洛谷 题目描述 输入格式 输出格式 输入输出样例 输入 #1 4 2 3 1 4 3 4 1 3 2 3 3 3 4 3 输出 #1 1 1 1 2 0 0 0 0 0 输入 #2 10 4 5 6 1 …...

Jenkins Pipline流水线
提到 CI 工具,首先想到的就是“CI 界”的大佬--]enkjns,虽然在云原生爆发的年代,蹦出来了很多云原生的 CI 工具,但是都不足以撼动 Jenkins 的地位。在企业中对于持续集成、持续部署的需求非常多,并且也会经常有-些比较复杂的需求,此时新生的 CI 工具不足以支撑这些很…...

鸿蒙harmonyos next flutter混合开发之开发FFI plugin
创建FFI plugin summation,默认创建的FFI plugin是求两个数的和 flutter create --templateplugin_ffi summation --platformsandroid,ios,ohos 创建my_application flutter create --org com.example my_application 在my_application项目中文件pubspec.yaml引…...
oracle数据库安装和配置
Oracle数据库安装 一、安装前的准备 系统要求: 硬件:内存至少1GB(推荐2GB以上),硬盘至少10GB的可用空间,CPU至少2核心。 操作系统:支持Oracle版本的Windows(如Windows 10或更高版本…...
猫玖破密啦
题目: 终究还是猫哥:3d5a3a0cfff7fb2e29194c0b7a89f284ff19a8 玖离:收到消息Oh,what_is_the_flag 玖离:7468655f666c61675f69735f666c13556d2cf2faec1e2d0f330b7dcceea1c62cb2 终究还是猫哥:收到消息************************************ 已…...
SpringBoot框架:服装生产管理的现代化工具
摘 要 本协力服装厂服装生产管理系统设计目标是实现协力服装厂服装生产的信息化管理,提高管理效率,使得协力服装厂服装生产管理作规范化、科学化、高效化。 本文重点阐述了协力服装厂服装生产管理系统的开发过程,以实际运用为开发背景&#…...

Android Preference的使用以及解析
简单使用 values.arrays.xml <?xml version"1.0" encoding"utf-8"?> <resources><string-array name"list_entries"><item>Option 1</item><item>Option 2</item><item>Option 3</item&…...

HCIP——GRE和MGRE
目录 VPN GRE GRE环境的搭建 GRE的报文结构 GRE封装和解封装报文的过程 GRE配置编辑 R1 R2 GRE实验编辑 MGRE 原理 MGRE的配置 R1 R2 R3 R4 查看映射表 抓包 MGRE环境下的RIP网络 综合练习编辑 VPN 说到GRE,我们先来说个大…...

微信小程序——音乐播放器
一、界面设计 播放页面: 显示当前播放歌曲的封面图片、歌曲名称、歌手名称。有播放 / 暂停按钮、上一首、下一首按钮。进度条显示播放进度,可以拖动进度条调整播放位置。音量调节滑块。 歌曲列表页面: 展示歌曲列表,包括歌曲名称、…...

OceanBase 4.x 部署实践:如何从单机扩展至分布式部署
OceanBase 4.x 版本支持2种部署模式:单机部署与分布式部署,同时支持从单机平滑扩展至分布式架构。这样,可以有效解决小型业务向大型业务转型时面临的扩展难题,降低了机器资源的成本。 以下将详述如何通过命令行,实现集…...

大数据新视界 --大数据大厂之TeZ 大数据计算框架实战:高效处理大规模数据
💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...
docker详解介绍+基础操作 (三)
1.docker 存储引擎 Overlay: 一种Union FS文件系统,Linux 内核3.18后支持 Overlay2:Overlay的升级版,docker的默认存储引擎,需要磁盘分区支持d-type功能,因此需要系统磁盘的额外支持。 关于 d-type 传送…...

【大语言模型-论文精读】谷歌-BERT:用于语言理解的预训练深度双向Transformers
【大语言模型-论文精读】谷歌-BERT:用于语言理解的预训练深度双向Transformers 目录 文章目录 【大语言模型-论文精读】谷歌-BERT:用于语言理解的预训练深度双向Transformers目录0. 引言1. 简介2 相关工作2.1 基于特征的无监督方法2.2 无监督微调方法2.3…...

【Java】集合中单列集合详解(一):Collection与List
目录 引言 一、Collection接口 1.1 主要方法 1.1.1 添加元素 1.1.2 删除元素 1.1.3 清空元素 1.1.4 判断元素是否存在 1.1.5 判断是否为空 1.1.6 求取元素个数 1.2 遍历方法 1.2.1 迭代器遍历 1.2.2 增强for遍历 1.2.3 Lambda表达式遍历 1.2.4 应用场景 二、…...

【Fine-Tuning】大模型微调理论及方法, PytorchHuggingFace微调实战
Fine-Tuning: 大模型微调理论及方法, Pytorch&HuggingFace微调实战 文章目录 Fine-Tuning: 大模型微调理论及方法, Pytorch&HuggingFace微调实战1. 什么是微调(1) 为什么要进行微调(2) 经典简单例子:情感分析任务背景微调 (3) 为什么微调work, 理论解释下 2…...

清华系“仓颉”来袭:图形起源:用AI颠覆字体设计,推动大模型商业化落地
大模型如何落地?又该如何实现商业化?这一议题已成为今年科技领域的焦点话题。 在一个鲜为人知的字体设计赛道上,清华创业公司“图形起源”悄然实现了商业变现:他们帮助字体公司将成本降低了80%,生产速度提升了10倍以上…...
分布式一致性协议的深度解析:Paxos与Raft
分布式系统的复杂性源于节点失效、网络分区、消息丢失等诸多不确定性。在这种背景下,分布式一致性问题应运而生,成为解决这些问题的核心。本文将从理论到实践,深入探讨两种经典的一致性协议:Paxos与Raft。文章适合有一定分布式系统…...

ai写作,五款软件助你快速写作!
在这个信息爆炸的时代,内容创作成为了连接用户、传递价值的桥梁。然而,面对日益增长的创作需求,如何在保证质量的同时提升效率,成为了每位创作者面临的难题。幸运的是,随着人工智能技术的飞速发展,AI写作软…...
解决JavaScript 数学运算精度丢失的问题
JavaScript 中执行浮点数运算时可能会遇到精度丢失的问题。这通常是因为浮点数的表示遵循IEEE 754标准,而这种表示法只能精确地表示有限的数字。对于大多数程序员来说,这不是一个问题,因为它允许计算机处理超出精度范围之外的数字。然而&…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...

AD学习(3)
1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分: (1)PCB焊盘:表层的铜 ,top层的铜 (2)管脚序号:用来关联原理图中的管脚的序号,原理图的序号需要和PCB封装一一…...
js 设置3秒后执行
如何在JavaScript中延迟3秒执行操作 在JavaScript中,要设置一个操作在指定延迟后(例如3秒)执行,可以使用 setTimeout 函数。setTimeout 是JavaScript的核心计时器方法,它接受两个参数: 要执行的函数&…...

aurora与pcie的数据高速传输
设备:zynq7100; 开发环境:window; vivado版本:2021.1; 引言 之前在前面两章已经介绍了aurora读写DDR,xdma读写ddr实验。这次我们做一个大工程,pc通过pcie传输给fpga,fpga再通过aur…...