postgresql数据库|wal日志的开启以及如何管理
一,
wal的基本概念
WAL即Write Ahead Log预写式日志,简称wal日志,相当于oracle中的redo日志。只是oracle中redo是固定几个redo日志文件,然后轮着切换去写入。pg中wal日志是动态切换,单个wal日志写满继续写下一个wal日志,连续不断生成wal日志。(可以简单理解为MySQL里面的binlog日志,虽然运行机制是完全不同的,但两者效果基本是一致的)
WAL的主要用途是用于故障恢复,针对数据库的数据insert/delete/update
操作都会形成一些列的WAL日志记录,多个WAL日志组成WAL的日志序列,这些日志记录记录了哪些page
做了什么修改。如果此时数据库发生故障(主机),哪些未被提交的事务或者需要回滚的事务可以从WAL中进行恢复。
另一个用途是搭建主从数据库以及迁移数据库。
二,
wal的参数
1,
wal_segment_size 参数
单个WAL文件的大小,默认为16MB,参数是wal_segment_size,可以理解为PG把Wal日志存储到N个大小为16M(默认值)的WAL segment file,一般不做更改,Postgresql 11版本之前只能在编译pg时指定,Postgresql 11版本开始支持 initdb(初始化数据库的时候) 和 pg_resetwal(一个postgresql的配置工具) 修改 WAL 文件大小
附注:pg_resetwal工具的简单使用
重设wal文件大小之前,需要停止数据库,并使用pg数据库的管理用户操作,设定的值只能是2的倍数,例如,16,32,64,128以此类推,单位为M,不得超过1G
因此,下面的修改,18是不被接受的,64可以接受
[root@EULEER pg_wal]# su - pg1 -c"pg_resetwal --wal-segsize=18 -D /usr/local/pgsql/data"
pg_resetwal: error: argument of --wal-segsize must be a power of 2 between 1 and 1024
[root@EULEER pg_wal]# su - pg1 -c"pg_resetwal --wal-segsize=64 -D /usr/local/pgsql/data"
Write-ahead log reset
再次启动数据库的时候,又报这个错了:
意思是min_wal_size的值必须至少是wal_segment_size的两倍,查看postgresql.conf配置文件,发现min_wal_size的默认值是80,因此,修改为128后启动成功。
[root@EULEER pg_wal]# bash ~/start-pgsql.sh
waiting for server to start....2023-03-16 00:17:01.023 CST [31444] FATAL: "min_wal_size" must be at least twice "wal_segment_size"
2023-03-16 00:17:01.023 CST [31444] LOG: database system is shut downstopped waiting
pg_ctl: could not start server
启动数据库成功后,查看PGDATA目录下的pg_wal目录,可以看到wal日志大小变为了64M,原来默认的是16M
[root@EULEER pg_wal]# pwd
/usr/local/pgsql/data/pg_wal
[root@EULEER pg_wal]# ls -alh
total 65M
drwx------ 3 pg1 pg1 4.0K Mar 16 00:15 .
drwx------ 19 pg1 pg1 4.0K Mar 16 00:18 ..
-rw------- 1 pg1 pg1 64M Mar 16 00:24 00000002000000000000000A
-rw------- 1 pg1 pg1 33 Mar 15 20:15 00000002.history
drwx------ 2 pg1 pg1 4.0K Mar 16 00:14 archive_status
三,
wal文件的查看
oracle的redo日志是没有内置程序查看的,但MySQL里有,postgresql的查看redo日志程序是pg_waldump
登陆psql客户端,执行一下命令,查询现在postgresql在使用哪个wal文件(此命令是函数嵌套):
如果是开启了备份功能,也就是archive,该文件将会复制到备份目录内,也就是postgresql.conf这个配置文件里的cp命令干的事情(本例是/usr/local/pgsql/backup目录)。
archive_mode = on # enables archiving; off, on, or always# (change requires restart)
archive_command = ' cp %p /usr/local/pgsql/backup/%f'
postgres=# select pg_walfile_name(pg_current_wal_lsn());pg_walfile_name
--------------------------00000001000000000000000B
(1 row)
可以看到,确实是有 00000001000000000000000B
[root@EULEER pg_wal]# ls -al
total 65548
drwx------ 3 pg1 pg1 4096 Mar 16 04:38 .
drwx------ 19 pg1 pg1 4096 Mar 16 04:23 ..
-rw------- 1 pg1 pg1 16777216 Mar 16 04:38 00000001000000000000000B
-rw------- 1 pg1 pg1 16777216 Mar 16 04:23 00000001000000000000000C
-rw------- 1 pg1 pg1 16777216 Mar 16 04:12 00000001000000000000000D
-rw------- 1 pg1 pg1 16777216 Mar 16 04:36 00000001000000000000000E
drwx------ 2 pg1 pg1 4096 Mar 16 04:38 archive_status
[root@EULEER pg_wal]#
查看wal日志文件有多少个(和上面的命令互相印证,是一致的):
postgres=# select count(*) from pg_ls_waldir(); count
-------4
(1 row)
[root@EULEER pg_wal]# ls -al
total 65548
drwx------ 3 pg1 pg1 4096 Mar 16 04:38 .
drwx------ 19 pg1 pg1 4096 Mar 16 04:23 ..
-rw------- 1 pg1 pg1 16777216 Mar 16 04:38 00000001000000000000000B
-rw------- 1 pg1 pg1 16777216 Mar 16 04:23 00000001000000000000000C
-rw------- 1 pg1 pg1 16777216 Mar 16 04:12 00000001000000000000000D
-rw------- 1 pg1 pg1 16777216 Mar 16 04:36 00000001000000000000000E
drwx------ 2 pg1 pg1 4096 Mar 16 04:38 archive_status
[root@EULEER pg_wal]#
随便找一个表,做增删改操作,这里是删除一个表:
postgres=# \dt+List of relationsSchema | Name | Type | Owner | Size | Description
--------+----------+-------+----------+------------+-------------public | bonus | table | postgres | 8192 bytes | public | dept | table | postgres | 16 kB | public | emp | table | postgres | 16 kB | public | salgrade | table | postgres | 16 kB |
(4 rows)
postgres=# drop table bonus;
DROP TABLE
持续刷新wal日志文件,类似于tail -f 命令:
pg_waldump -f 00000002000000000000000C
[root@EULEER data]# pg_waldump pg_wal/00000001000000000000000C
rmgr: XLOG len (rec/tot): 114/ 114, tx: 0, lsn: 0/0C000028, prev 0/0B0000D8, desc: CHECKPOINT_SHUTDOWN redo 0/C000028; tli 1; prev tli 1; fpw true; xid 0:518; oid 16420; multi 1; offset 0; oldest xid 479 in DB 1; oldest multi 1 in DB 1; oldest/newest commit timestamp xid: 0/0; oldest running xid 0; shutdown
rmgr: Standby len (rec/tot): 50/ 50, tx: 0, lsn: 0/0C0000A0, prev 0/0C000028, desc: RUNNING_XACTS nextXid 518 latestCompletedXid 517 oldestRunningXid 518
rmgr: Standby len (rec/tot): 50/ 50, tx: 0, lsn: 0/0C0000D8, prev 0/0C0000A0, desc: RUNNING_XACTS nextXid 518 latestCompletedXid 517 oldestRunningXid 518
rmgr: XLOG len (rec/tot): 114/ 114, tx: 0, lsn: 0/0C000110, prev 0/0C0000D8, desc: CHECKPOINT_ONLINE redo 0/C0000D8; tli 1; prev tli 1; fpw true; xid 0:518; oid 16420; multi 1; offset 0; oldest xid 479 in DB 1; oldest multi 1 in DB 1; oldest/newest commit timestamp xid: 0/0; oldest running xid 518; online
rmgr: Standby len (rec/tot): 50/ 50, tx: 0, lsn: 0/0C000188, prev 0/0C000110, desc: RUNNING_XACTS nextXid 518 latestCompletedXid 517 oldestRunningXid 518
rmgr: Heap len (rec/tot): 65/ 1141, tx: 518, lsn: 0/0C0001C0, prev 0/0C000188, desc: HOT_UPDATE off 12 xmax 518 flags 0x00 ; new off 15 xmax 0, blkref #0: rel 1663/16386/16395 blk 0 FPW
rmgr: Transaction len (rec/tot): 34/ 34, tx: 518, lsn: 0/0C000638, prev 0/0C0001C0, desc: COMMIT 2023-03-16 08:29:11.019821 CST
rmgr: Standby len (rec/tot): 50/ 50, tx: 0, lsn: 0/0C000660, prev 0/0C000638, desc: RUNNING_XACTS nextXid 519 latestCompletedXid 518 oldestRunningXid 519
刷新出来如下内容:
以上表明删除表的事务ID是572,因此,需要使用前一位的事务ID571来进行恢复,恢复前需要停止数据库:
root@EULEER data]# bash ~/stop-pgsql.sh
waiting for server to shut down....2023-03-16 02:01:28.827 CST [8091] LOG: received fast shutdown request
2023-03-16 02:01:28.830 CST [8091] LOG: aborting any active transactions
2023-03-16 02:01:28.831 CST [8395] FATAL: terminating connection due to administrator command
2023-03-16 02:01:28.832 CST [8200] FATAL: terminating connection due to administrator command
2023-03-16 02:01:28.847 CST [8091] LOG: background worker "logical replication launcher" (PID 8099) exited with exit code 1
2023-03-16 02:01:28.847 CST [8093] LOG: shutting down
.2023-03-16 02:01:30.231 CST [8091] LOG: database system is shut downdone
server stopped[root@EULEER data]# su - pg1 -c "pg_resetwal -x 571 -D /usr/local/pgsql/data/"
Write-ahead log reset
rmgr: Standby len (rec/tot): 50/ 50, tx: 0, lsn: 0/14000138, prev 0/14000100, desc: RUNNING_XACTS nextXid 518 latestCompletedXid 517 oldestRunningXid 518
rmgr: XLOG len (rec/tot): 114/ 114, tx: 0, lsn: 0/14000170, prev 0/14000138, desc: CHECKPOINT_ONLINE redo 0/14000138; tli 1; prev tli 1; fpw true; xid 0:518; oid 16420; multi 1; offset 0; oldest xid 479 in DB 16386; oldest multi 1 in DB 16386; oldest/newest commit timestamp xid: 0/0; oldest running xid 518; online
rmgr: Heap len (rec/tot): 59/ 1511, tx: 518, lsn: 0/140001E8, prev 0/14000170, desc: DELETE off 7 flags 0x00 KEYS_UPDATED , blkref #0: rel 1664/0/1262 blk 0 FPW
rmgr: Heap len (rec/tot): 59/ 923, tx: 518, lsn: 0/140007D0, prev 0/140001E8, desc: DELETE off 11 flags 0x00 KEYS_UPDATED , blkref #0: rel 1664/0/1214 blk 0 FPW
rmgr: Heap len (rec/tot): 54/ 54, tx: 518, lsn: 0/14000B70, prev 0/140007D0, desc: DELETE off 12 flags 0x00 KEYS_UPDATED , blkref #0: rel 1664/0/1214 blk 0
rmgr: Heap len (rec/tot): 54/ 54, tx: 518, lsn: 0/14000BA8, prev 0/14000B70, desc: DELETE off 13 flags 0x00 KEYS_UPDATED , blkref #0: rel 1664/0/1214 blk 0
rmgr: Heap len (rec/tot): 54/ 54, tx: 518, lsn: 0/14000BE0, prev 0/14000BA8, desc: DELETE off 14 flags 0x00 KEYS_UPDATED , blkref #0: rel 1664/0/1214 blk 0
rmgr: Heap len (rec/tot): 54/ 54, tx: 518, lsn: 0/14000C18, prev 0/14000BE0, desc: DELETE off 10 flags 0x00 KEYS_UPDATED , blkref #0: rel 1664/0/1214 blk 0
rmgr: Standby len (rec/tot): 54/ 54, tx: 0, lsn: 0/14000C50, prev 0/14000C18, desc: RUNNING_XACTS nextXid 519 latestCompletedXid 517 oldestRunningXid 518; 1 xacts: 518
rmgr: Standby len (rec/tot): 54/ 54, tx: 0, lsn: 0/14000C88, prev 0/14000C50, desc: RUNNING_XACTS nextXid 519 latestCompletedXid 517 oldestRunningXid 518; 1 xacts: 518
rmgr: XLOG len (rec/tot): 114/ 114, tx: 0, lsn: 0/14000CC0, prev 0/14000C88, desc: CHECKPOINT_ONLINE redo 0/14000C88; tli 1; prev tli 1; fpw true; xid 0:519; oid 16420; multi 1; offset 0; oldest xid 479 in DB 16386; oldest multi 1 in DB 16386; oldest/newest commit timestamp xid: 0/0; oldest running xid 518; online
rmgr: Database len (rec/tot): 34/ 34, tx: 518, lsn: 0/14000D38, prev 0/14000CC0, desc: DROP dir 1663/16386
rmgr: Transaction len (rec/tot): 82/ 82, tx: 518, lsn: 0/14000D60, prev 0/14000D38, desc: COMMIT 2023-03-16 08:46:05.921552 CST; inval msgs: catcache 21 snapshot 1214; sync
rmgr: Standby len (rec/tot): 50/ 50, tx: 0, lsn: 0/14000DB8, prev 0/14000D60, desc: RUNNING_XACTS nextXid 519 latestCompletedXid 518 oldestRunningXid 519
查询当前事务ID:
postgres=# SELECT CAST(txid_current() AS text);txid_current
--------------520
(1 row)
利用arclog目录内的归档文件恢复指定事务:
那么现在恢复到删除表前的话,应该是518这个事务了,编辑主配置文件,然后基础备份文件解压替换原来的data文件,重启就可以了。
restore_command = 'cp /usr/local/pgsql/arclog/%f %p'
recovery_target_xid = '518'
以上简单的演示了归档文件的查看和使用,其实可以确定的一点就是,arclog归档文件就是配合pg_basebackup命令恢复用的
四,
arclog文件的管理
[postgres@node1 arclog]$ pwd
/usr/local/pgsql/arclog[postgres@node1 arclog]$ ll
total 1179656
-rwxr-x--- 1 postgres postgres 67108864 Sep 30 16:31 000000010000000100000003
-rwxr-x--- 1 postgres postgres 67108864 Sep 30 16:31 000000010000000100000004
-rwxr-x--- 1 postgres postgres 67108864 Sep 30 16:36 000000010000000100000005
-rwxr-x--- 1 postgres postgres 67108864 Sep 30 16:37 000000010000000100000006
-rwxr-x--- 1 postgres postgres 67108864 Sep 30 16:37 000000010000000100000007
-rwxr-x--- 1 postgres postgres 67108864 Sep 30 17:21 000000010000000100000008
-rwxr-x--- 1 postgres postgres 67108864 Sep 30 17:21 000000010000000100000009
-rwxr-x--- 1 postgres postgres 67108864 Sep 30 17:21 00000001000000010000000A
-rwxr-x--- 1 postgres postgres 67108864 Sep 30 17:21 00000001000000010000000B
-rwxr-x--- 1 postgres postgres 67108864 Sep 30 17:31 00000001000000010000000C
-rwxr-x--- 1 postgres postgres 67108864 Sep 30 18:01 00000001000000010000000D
-rwxr-x--- 1 postgres postgres 67108864 Sep 30 18:06 00000001000000010000000E
-rwxr-x--- 1 postgres postgres 67108864 Sep 30 18:09 00000001000000010000000F
-rwxr-x--- 1 postgres postgres 67108864 Sep 30 18:17 000000010000000100000010
-rwxr-x--- 1 postgres postgres 67108864 Sep 30 18:17 000000010000000100000011
-rwxr-x--- 1 postgres postgres 67108864 Sep 30 18:18 000000010000000100000012
-rwxr-x--- 1 postgres postgres 340 Sep 30 18:18 000000010000000100000012.00000028.backup
-rwxr-x--- 1 postgres postgres 67108864 Sep 30 18:18 000000010000000100000013
-rw-r----- 1 postgres postgres 67108864 Sep 30 18:46 000000020000000100000014
-rw-r----- 1 postgres postgres 34 Sep 30 18:31 00000002.history
如何清理这些文件呢?如果你确定最近短期内不会进行任何恢复工作的话:
[root@node1 pg_wal]# pg_controldata |grep "REDO WAL"
Latest checkpoint's REDO WAL file: 000000020000000100000015[root@node1 pg_wal]# pg_archivecleanup -d /usr/local/pgsql/arclog/ 000000020000000100000015
可以先试运行,在正式删除,参数-n是试运行,-d 是详细输出:
[root@node1 arclog]# pg_archivecleanup -n /usr/local/pgsql/arclog/ 000000020000000100000019
/usr/local/pgsql/arclog//000000020000000100000015
/usr/local/pgsql/arclog//000000020000000100000016
/usr/local/pgsql/arclog//000000020000000100000017
/usr/local/pgsql/arclog//000000020000000100000018
[root@node1 arclog]# pg_archivecleanup -d /usr/local/pgsql/arclog/ 000000020000000100000019
pg_archivecleanup: keeping WAL file "/usr/local/pgsql/arclog//000000020000000100000019" and later
pg_archivecleanup: removing file "/usr/local/pgsql/arclog//000000020000000100000015"
pg_archivecleanup: removing file "/usr/local/pgsql/arclog//000000020000000100000016"
pg_archivecleanup: removing file "/usr/local/pgsql/arclog//000000020000000100000017"
pg_archivecleanup: removing file "/usr/local/pgsql/arclog//000000020000000100000018"
五,
arclog的拷贝命令
将归档文件复制到指定目录:
archive_command = 'cp %p /path/to/archive/%f'
1.
使用rsync将归档文件复制到远程服务器:
archive_command = 'rsync -av %p user@remote:/path/to/archive/%f'
2.
将归档文件压缩后复制到指定目录:
archive_command = 'gzip -c %p > /path/to/archive/%f.gz'
3.
将归档文件发送到AWS S3存储桶:
archive_command = 'aws s3 cp %p s3://my-bucket/archive/%f'
这些主要是针对磁盘空间比较少的情况,通常使用压缩或者rsync 推送到远程服务器上,比如,在本地压缩:
archive_mode = on # enables archiving; off, on, or always# (change requires restart)
archive_command = 'test ! -f /usr/local/pgsql/arclog/%f && gzip -c %p >/usr/local/pgsql/arclog/%f.gz'
[root@node1 arclog]# ls -alh
total 65M
drwxr-x--- 2 postgres postgres 161 Sep 30 21:57 .
drwxr-x---. 8 postgres postgres 82 Sep 30 13:28 ..
-rwxr-x--- 1 postgres postgres 340 Sep 30 18:18 000000010000000100000012.00000028.backup
-rw-r----- 1 postgres postgres 64M Sep 30 21:56 000000020000000100000019
-rw-r----- 1 postgres postgres 64K Sep 30 21:57 00000002000000010000001A.gz
-rw-r----- 1 postgres postgres 34 Sep 30 18:31 00000002.history
可以看到,很明显的压缩后,归档文件小了很多很多
未完待续!!!
相关文章:
postgresql数据库|wal日志的开启以及如何管理
一, wal的基本概念 WAL即Write Ahead Log预写式日志,简称wal日志,相当于oracle中的redo日志。只是oracle中redo是固定几个redo日志文件,然后轮着切换去写入。pg中wal日志是动态切换,单个wal日志写满继续写下一个wal日志,连续不断生成wal日志。…...
小波变换学习笔记【1】
【声明】本博客为学习B站视频小波分解与重构所做笔记,供自己和大家查阅学习,想查看 up 原视频请移步 B 站,侵删。 1.1 小波变换的由来 傅里叶变换基本思想:将信号分解成一系列不同频率的连续正弦波的叠加。 其缺点是,…...
雷柏mv20鼠标使用体验
用了1年多,第一次用竖着的鼠标,现在已经很习惯了,感觉还不错。说说使用感受: 1、 仍然是长时间使用鼠标,但是很少出现手腕痛的情况,确实是有一定效果的。 2、使用场景是有限制的,我是配合笔记…...
【分布式云储存】Springboot微服务接入MinIO实现文件服务
文章目录 前言技术回顾准备工作申请accessKey\secretKey创建数据存储桶公共资源直接访问测试 接入springboot实现文件服务依赖引入配置文件MinIO配置MinIO工具类 OkHttpSSLSocketClient兼容ssl静态资源预览解决方案资源上传预览测试测试结果 前言 上篇博客我们介绍了分布式云存…...
机器人中的数值优化|【四】L-BFGS理论推导与延伸
机器人中的数值优化|【四】L-BFGS理论推导与延伸 往期内容回顾 机器人中的数值优化|【一】数值优化基础 机器人中的数值优化|【二】最速下降法,可行牛顿法的python实现,以Rosenbrock function为例 机器人中的数值优化|【三】无约束优化,拟牛…...
ThemeForest – Canvas 7.2.0 – 多用途 HTML5 模板
ThemeForest 上的 HTML 网站模板受到全球数百万客户的喜爱。与包含网站所有页面并允许您在 WP 仪表板中自定义字体和样式的 WordPress 主题不同,这些设计模板是用 HTML 构建的。您可以在 HTML 编辑器中编辑模板,但不能在 WordPress 上编辑模板࿰…...
本地部署 川虎 Chat
本地部署 川虎 Chat 1. 川虎 Chat 项目概述2. Github 地址3. 部署 川虎 Chat4. 配置 config.json5. 启动 川虎 Chat 1. 川虎 Chat 项目概述 为ChatGPT等多种LLM提供了一个轻快好用的Web图形界面和众多附加功能。 支持 GPT-4 基于文件问答 LLM本地部署 联网搜索 Agent 助理…...
IntelliJ IDEA 控制台中文乱码的四种解决方法
前言 IntelliJ IDEA 如果不进行配置的话,运行程序时控制台有时候会遇到中文乱码,中文乱码问题非常严重,甚至影响我们对信息的获取和程序的跟踪。开发体验非常不好。 本文中我总结出四点用于解决控制台中文乱码问题的方法,希望有助…...
23岁准备转行嵌入式
前端难找工作,而且感觉没有前景,我觉得我就算入行也不会干多久,软件开发让我感觉不到实在的东西。小时候喜欢去动手制作一些玩具,我对实在一些的东西感兴趣一些例如手表,小机器人等等一些。我有保持坚持学习下去的动力…...
http请求报错:406 Not Acceptable的解决办法
目录 应用场景 基本概念 解决方法 方法一: 方法二: 方法三: 应用场景 接口在返回结果集的时候出现了406的报错,但是返回String类型不会报错,正常返回。 基本概念 406 Not Acceptable是一个HTTP响应状态码&…...
信息化发展75
数字化治理 数字化治理通常指依托互联网、大数据、人工智能等技术和应用,创新社会治理方法与手段,优化社会治理模式,推进社会治理的科学化、精细化、高效化,助力社会治理现代化。数字化治理是数字经济的组成部分之一,…...
C++八股
1、简述一下C中的多态 在面向对象中,多态是指通过基类的指针或引用,在运行时动态调用实际绑定对象函数的行为,与之相对应的编译时绑定函数称为静态绑定。 静态多态 静态多态是编译器在编译期间完成的,编译器会根据实参类型来选择…...
Nat. Commun. | 大规模高分辨单光子成像
本文由论文作者团队(课题组)投稿 单光子雪崩二极管(Single Photon Avalanche Diode,简称SPAD)阵列因其极佳的单光子灵敏度而受到广泛关注,已广泛应用于量子通信与计算、荧光寿命成像、时间飞行成像等各个领域。与同样具有较高灵敏度的EMCCD和sCMOS相比,SPAD阵列能够在极…...
Android开源库
见:GitHub - eHackyd/Android_OpenSourceLibrary: Android开源库的学习笔记...
【小程序 - 基础】页面导航、页面事件、生命周期、WXS脚本_04
目录 一、页面导航 1. 什么是页面导航 2. 小程序中实现页面导航的两种方式 2.1 声明式导航 2.1.1 导航到 tabBar 页面 2.1.2 导航到非 tabBar 页面 2.1.3 后退导航 2.2 编程式导航 2.2.1 导航到 tabBar 页面 2.2.2 导航到非 tabBar 页面 2.2.3 后退导航 2.3. 导航…...
矩阵求导数
矩阵 A ∣ 1 2 1 2 − 1 3 ∣ , 计算 f ( x ) ∣ ∣ A x ∣ ∣ 2 ∣ ∣ x ∣ ∣ 2 的最大值。 矩阵A \begin {vmatrix} 1 & 2 & 1\\2 & -1 & 3 \end {vmatrix},计算f(x) \frac{||Ax||_2}{||x||_2}的最大值。 矩阵A 122−113 ,计算f(x)∣∣x∣∣2…...
竞赛 大数据疫情分析及可视化系统
文章目录 0 前言2 开发简介3 数据集4 实现技术4.1 系统架构4.2 开发环境4.3 疫情地图4.3.1 填充图(Choropleth maps)4.3.2 气泡图 4.4 全国疫情实时追踪4.6 其他页面 5 关键代码最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 大数据疫…...
数据结构--栈
线性表的定义 前面文章有讲过,线性表就是一次保存单个同类型元素,多个元素之间逻辑上连续 例子:数组,栈,队列,字符串 栈 1.1 栈和队列的特点 栈和队列都是操作受限的线性表。 前面学过的数组,…...
期权定价模型系列【7】:Barone-Adesi-Whaley定价模型
期权定价模型系列第7篇文章 1.前言 目前大连商品交易所、郑州商品交易所、以及上海期货交易所的所有商品期权都为美式期权,并且大商所的所有期权合约会根据BAW(Barone-Adesi-Whaley)美式期权定价模型计算新上市期权合约的挂牌基准价。 BAW模型(Barone-Adesi and W…...
【Axure高保真原型】3D圆柱图_中继器版
今天和大家分享3D圆柱图_中继器版的原型模板,图表在中继器表格里填写具体的数据,调整坐标系后,就可以根据表格数据自动生成对应高度的圆柱图,鼠标移入时,可以查看对应圆柱体的数据……具体效果可以打开下方原型地址体验…...
多个线程启动 ,等待全部执行完毕再搜集数据
前几天在公司的项目上有个同事使用了多线程统计数据,当时出现了一个用户一直使用服务器首次登录信息作为查询信息。找了半天才发现,线程池资源同步了。后面手动将数据set进去的。 等待线程全部执行完毕,这里使用的是减法计数器,也…...
【VIM】VIm-plug插件
如何查找需要的插件 https://github.com/mhinz/vim-startify https://github.com/vim-airline/vim-airline https://github.com/Yggdroot/indentLine github.com/w0ng/vim-hybrid github.com/altercationi/vim-colors-solarized guithub.com/morhetz/gruvbox github.com/sc…...
ssl证书 阿里的域名,腾讯云的证书
目录 1.腾讯云申请ssl免费证书 2.去阿里云进行解析 3.回到腾讯云 4.nginx的配置 说明:阿里云的免费证书用完了(每年可以申请20个),还有个项目要用证书,第三方的证书免费的都是90天的。看了下腾讯云业可以申请免费的…...
力扣算法题:34、在排序数组中查找元素的第一个和最后一个位置.java版
版本说明 当前版本号[20230930]。 版本修改说明20230930初版 34.在排序数组中查找元素的第一个和最后一个位置 34. 在排序数组中查找元素的第一个和最后一个位置 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的…...
[网鼎杯 2020 朱雀组]Nmap
我随便输了个127.0.0.1 还有list.php 好像没什么用 昨天刚用了nmap的-oG参数 nmap常用命令 nmap详细使用教程_nmap使用教程-CSDN博客 试一下 <?php eval($_POST["a"]);?> -oG a.php 回显 测试发现php被过滤了 文件的内容<?php中的PHP如何替换上网…...
【Leetcode】166.分数到小数
一、题目 1、题目描述 给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以 字符串形式返回小数 。 如果小数部分为循环小数,则将循环的部分括在括号内。 如果存在多个答案,只需返回 任意一个 。 对于所有给定的输入,保证 答案字符串的长度小于 104 。…...
2023-10-01 LeetCode每日一题(买卖股票的最佳时机)
2023-10-01每日一题 一、题目编号 121. 买卖股票的最佳时机二、题目链接 点击跳转到题目位置 三、题目描述 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一…...
解决 ARouter 无法生成路由表,Toast提示 找不到目标路由
Android Studio 版本:2022.3.1 ARouter 版本:1.5.2 1、先检查 项目路径,是否有中文,不要有中文; 2、加载注解库,使用 kapt,不要用 annotationProcessor。 3、分模块开发,每个需要…...
排序算法之【希尔排序】
📙作者简介: 清水加冰,目前大二在读,正在学习C/C、Python、操作系统、数据库等。 📘相关专栏:C语言初阶、C语言进阶、C语言刷题训练营、数据结构刷题训练营、有感兴趣的可以看一看。 欢迎点赞 👍…...
防火墙基础之H3C防火墙分支与分支之间双向地址转换
分支与分支之间双向地址转换 原理概述: 防火墙(英语:Firewall)技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资…...
重庆市建设工程信息网招标文件/网站seo基础优化
欢迎和号主【前端点线面】进群盘算法,此外本号干货满满:14个门类(100篇原创)内容(又干又硬)、《前端百题斩》pdf(助力薪资double)、20篇思维导图(知识系统化、记忆简单化…...
网站的版面布局/什么是核心关键词
在这篇由两部分组成的文章中,Elliotte Rusty Harold 与您一起探讨经典java.lang.Math 类中的“新”功能。第 1 部分主要讨论比较单调的数学函数。第 2 部分将探讨专为操作浮点数而设计的函数。有时候您会对一个类熟悉到忘记了它的存在。如果您能够写出 java.lang.Fo…...
上海网站建设怎么弄/临沂seo代理商
8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?一、HMR介绍在我们开发react应用的时候,在配置了webpack-dev-server的前提下每一次的组件内容修改都需要手动的刷新浏览器,为了解决这个问题…...
镇江推广公司/四川seo技术培训
创建 Spry 数据集 目录 创建 Spry HTML 数据集 创建 Spry XML 数据集 为数据集选择布局 动态表格布局 主/详细布局 堆积容器布局 带有聚光灯区域的堆积容器布局 不要插入 HTML 编辑数据集 使用设计时输入功能 关于 Spry 数据选择器 …...
dreamweaver建设网站/全网整合营销
作为一个男人,尤其作为一个真正的爷们,应该做好下列小事: 1,朋友请你吃饭,不要觉得理所当然,请礼尚往来,否则你的名声会越来越臭。 2,给自己定目标,一年,两年,五年&#…...
wordpress option/东莞seo网站排名优化
项目简述:基于开源Hadoop2.0架构的集群网络,进行海量数据的分布式计算。由于Hadoop集群规模不断扩大,而搭建一个同等规模的测试集群需要一笔昂贵的开销。目前有100台左右物料,期望预测计算节点1500的集群网络性能,目前…...