当前位置: 首页 > news >正文

Postgresql的三种备份方式_postgresql备份

这种方式可以在数据库正在使用的时候进行完整一致的备份,并不阻塞其它用户对数据库的访问。它会产生一个脚本文件,里面包含备份开始时,已创建的各种数据库对象的SQL语句和每个表中的数据。可以使用数据库提供的工具pg_dumpall和pg_dump来进行备份。pg_dump只备份数据库集群中的某个数据库的数据,它不会导出角色和表空间相关的信息,因为这些信息是整个数据库集群共用的,不属于某个单独的数据库。pg_dumpall,对集簇中的每个数据库调用pg_dump来完成该工作,还会还转储对所有数据库公用的全局对象(pg_dump不保存这些对象)。 目前这包括适数据库用户和组、表空间以及适合所有数据库的访问权限等属性。

例如,在我的计算机上,可使用如下命令对名为dbname的数据库进行备份:

pg_dump –h 127.0.0.1 -p 5432-U postgres -c -C –f dbname.sql dbname

使用如下命令可对全部pg数据库进行备份。

pg_dumpall–h 127.0.0.1–p 5432-U postgres –c -C –f db_bak.sql

恢复方式很简单。执行恢复命令即可:

psql–h 127.0.0.1-p5432-U postgres –f db_bak.sql

3. 连续归档

这种方式的策略是把一个文件系统级别的全量备份和WAL(预写式日志)级别的增量备份结合起来。当需要恢复时,我们先恢复文件系统级别的备份,然后重放备份的WAL文件,把系统恢复到之前的某个状态。这种备份有显著的优点:

  1. 不需要一个完美的一致的文件系统备份作为开始点。备份中的任何内部不一致性将通过日志重放来修正。
  2. 可以结合一个无穷长的WAL文件序列用于重放,可以通过简单地归档WAL文件来达到连续备份。
  3. 不需要重放WAL项一直到最后。可以在任何点停止重放,并使数据库恢复到当时的一致状态。
  4. 可以连续地将一系列WAL文件输送给另一台已经载入了相同基础备份文件的机器,得到一个实时的热备份系统。

如何进行连续归档呢?

下面的实例中,操作系统为windows 10,Postgresql的版本为9.6。

首先,需要修改postgresql.conf文件的几个参数修改如下:

wal_level = ‘replica’

archive_mode = ‘on’

archive_command = ‘copy /y “%p” “D:archive%f”’

archive_command执行时,%p会被要被归档的文件路径所替代,而%f只会被文件名所替代。如果你需要在命令中嵌入一个真正的%字符,可以使用%%。 “D:archive”替换为归档日志的存放路径,要确保归档的目录是存在的。

之后需要重启数据库使配置生效。

接下来需要制作一个非排他的基础备份。Postgresql提供了排他备份和非排他备份两种备份方式,推荐使用非排他的备份方式。

1. 作为一个具有运行 pg_start_backup 权利的用户连接到服务器(不在乎是哪个数据库)并且发出命令:

Select pg_start_backup(‘backup_label’, false, false);

2. 对数据库进行一次文件系统级别的备份。即将postgresql的安装目录下的data目录及其内容复制到其他位置。

3. 在同一个连接中,发出命令:

select * from pg_stop_backup(false);

这个命令代表结束一次非排他的备份。

现在来看基于时间点的恢复。

假如你的数据库出现了故障,需要恢复到之前的某个时刻的一致的状态,就需要进行基于时间点的恢复。

其过程是:

  1. 如果服务器仍在运行,停止它。

  2. 如果你具有足够的空间,将整个集簇数据目录和表空间复制到一个临时位置。注意最好是拷贝而不是移动。如果你没有足够的空间,你至少要保存集簇的pg_xlog子目录的内容,因为它可能包含在系统垮掉之前还未被归档的日志。

  3. 移除data 目录及其所有子文件和子目录。

  4. 从文件系统备份中恢复数据库文件。注意它们要使用正确的用户恢复并且使用正确的权限。如果你在使用表空间,你应该验证pg_tblspc/中的符号链接被正确地恢复。

5.现在已经从备份中恢复了整个数据目录,接下来,你需要部分或全部删除数据目录中的下列文件,如果它们存在:

(1) postmaster.pid;(必须)

(2)pg_xlog中的文件;(必须)

(3)pgsql_tmp开头的临时文件;(可选) qwqw

(4)postgresql.auto.conf.tmp;(可选)

(5)pg_replslot目录中的文件;(可选)

(6)pg_stat_tmp目录中的文件。(可选)

  1. 如果你有在第2步中保存的未归档WAL段文件,把它们拷贝到pg_xlog/中或WAL日志的归档目录中。

在集簇数据目录中创建一个恢复命令文件recovery.conf。如果你想恢复到最近的一致状态,在recovery.conf写入如下两行:

restore_command = ‘copy /y D:archive %f%p’

recovery_target_timeline = ‘latest’

其中,restore_command的内容表示将归档日志文件夹中的内容拷贝到pg_xlog,其参数的含义与上文archive_command的参数含义完全相同;recovery_target_timeline = ‘latest’ 表示恢复到最近的时间点。

7. 如果要阻止普通用户在成功恢复之前连接,请修改pg_hba.conf。

8. 启动服务器。服务器将会进入到恢复模式并且进而根据需要读取归档WAL文件。恢复可能因为一个外部错误而被终止,可以简单地重新启动服务器,这样它将继续恢复。恢复过程结束后,服务器将把recovery.conf重命名为recovery.done(为了阻止以后意外地重新进入恢复模式),并且开始正常数据库操作。

9. 检查数据库的内容来确保你已经恢复到了期望的状态。如果没有,返回到第1步。如果一切正常,通过恢复pg_hba.conf为正常来允许用户连接。

这样就完成了一次文件系统级别的全量备份,并实现了WAL文件级别的增量备份。

**附:**pg_start_backup() **pg_stop_backup()**做了什么?

1. pg_start_backup()

pg_start_backup() 的函数原型如下:

pg_start_backup(label text [, fast boolean [, exclusive boolean ]])

其中label是用来唯一标识这次备份操作的任意字符串,fast 表示是否立即执行强制的检查点,exclusive 表示该备份是否是一个排他备份。

使用该函数时,推荐将exclusive设置为false,即非排他方式备份。

执行下面的命令:

Select pg_start_backup(‘backup_label’, false, false);

这条命令会产生三个动作:

1. 在缓冲区中创建两个变量:label_file和tblspc_map_file。前者包含WAL的起始位置、检查点的起始位置、备份方法、备份模式、备份开始时间和备份标签的名称(本例中,名称为“backup_label”)等信息;后者包含 “pg_tblspc/”中表空间符号链接的信息,如果它们存在。

2. 强制发生一次检查点。将检查点开始前提交的事务对数据库的修改刷新到磁盘。

3. 置写日志标志为:XLogCtl->Insert.forcePageWrites = true。把这个标志设置为true后,如果在备份期间时有其他事务修改数据库,那么系统会把被修改的数据页在修改前的完整页面都记录到WAL中,而不仅仅是记录页面中的变化的部分。

为什么要将完整的页面记录到WAL中呢?

原因是在备份过程中,其他事务修改数据库,可能会造成备份后的数据存在新旧数据混合的情况,甚至同一数据页面也会出现这种情况。假如WAL日志中仅仅记录变化的那部分的内容,就无法将数据库恢复到上次备份结束时刻的状态。所以要将修改后的完整页面写入WAL中,以保证数据库恢复后的一致性。

  1. pg_stop_backup()

pg_stop_backup()的函数原型如下:

pg_stop_backup([, exclusive boolean ]);

exclusive 表示该备份是否是一个排他备份。

如果采用非排他方式备份,执行:

相关文章:

Postgresql的三种备份方式_postgresql备份

这种方式可以在数据库正在使用的时候进行完整一致的备份,并不阻塞其它用户对数据库的访问。它会产生一个脚本文件,里面包含备份开始时,已创建的各种数据库对象的SQL语句和每个表中的数据。可以使用数据库提供的工具pg_dumpall和pg_dump来进行…...

Linux 配置 MySQL 定时自动备份到另一台服务器

Linux 配置 MySQL 定时自动备份到另一台服务器这里写自定义目录标题 前言1、配置服务器通信1.1:配置过程 2、编写自动备份sh脚本文件3:设置定时自动执行 前言 此方案可使一台服务器上的 MySQL 中的所有数据库每天 0 点自动转储为 .sql 文件,…...

CCF-GESP 等级考试 2024年6月认证C++二级真题解析

2024年6月真题 一、单选题(每题2分,共30分) 正确答案:C 考察知识点:计算机基础与编程环境 解析:CCF 组织的 GESP 认证考试第 1 级可选择的认证语言有 Scratch、Python、C ,共 3 种。答案为C。 …...

vm虚拟机的一些操作命令

PowerShell命令 // 获取虚拟机列表: get-vm // 创建虚拟机: new-vm -Name "BrioDev75" -MemoryStartupBytes 16GB -Path "D:\Hyper-V" // 删除虚拟机: remove-vm -Name "BrioDev75" -Force (-Force参数是…...

sql难点

一、 假设你有一个查询&#xff0c;需要根据 id 是否为 null 来动态生成 SQL 条件&#xff1a; xml复制 <select id"getResources" resultType"Resource">SELECT * FROM resources<where><if test"id ! null">and id <!…...

【多模态大模型】系列1:Transformer Encoder——ViLT、ALBEF、VLMO

目录 1 ViLT2 ALBEF3 VLMO 1 ViLT ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision 图文多模态任务&#xff0c;关键是提取视觉特征和文本特征&#xff0c;然后对齐。在之前的多模态研究工作中&#xff0c;视觉侧通常需要一个目标检测器来…...

2.4 测试数据与初始化

测试数据与初始化 在 Spring Test 中&#xff0c;合理管理测试数据的初始化和清理是保证测试可靠性的关键。本章将介绍多种数据准备方式&#xff0c;涵盖 SQL 脚本执行、编程式初始化 和 动态数据生成&#xff0c;并提供最佳实践示例。 1. 使用 Sql 执行 SQL 脚本 作用 在测…...

DataBase【MySQL基础夯实使用说明(中)】

MySQL数据库 &#x1f3c6;当领导问你忙不忙&#xff0c;您怎么回复&#xff1f; &#x1f514;要让领导知道你很忙&#xff0c;但是你的事情紧急&#xff0c;我可以优先处理&#xff01; 文章目录 MySQL数据库前言一、SQL&#xff08;Structured Query Language&#xff09;1…...

Unity3D Shader 简析:变体与缓存详解

引言 在 Unity3D 中&#xff0c;Shader 是渲染管线的核心部分&#xff0c;负责控制物体的外观和材质表现。Shader 的变体&#xff08;Variants&#xff09;和缓存机制是优化渲染性能的关键。本文将深入探讨 Unity3D 中 Shader 变体的概念、缓存机制以及如何通过代码实现和管理…...

vuex基础介绍

/store/index.js import Vue from vue import Vuex from vuexVue.use(Vuex)/*** 创建并导出一个 Vuex 仓库实例* 仓库是一个存储应用所有状态的容器&#xff0c;并且提供了修改和获取状态的方法*/ export default new Vuex.Store({// state 是一个对象&#xff0c;用于存储应…...

OpenWRT中常说的LuCI是什么——LuCI介绍(一)

我相信每个玩openwrt的小伙伴都或多或少看到过luci这个东西&#xff0c;但luci到底是什么东西&#xff0c;可能还不够清楚&#xff0c;今天就趁机来介绍下&#xff0c;openwrt中的luci&#xff0c;到底是个什么东西。 什么是LuCI&#xff1f; 首先&#xff0c;LuCI是OpenWRT中…...

singleTaskAndroid的Activity启动模式知识点总结

一. 前提知识 1.1. 任务栈知识 二. Activity启动模式的学习 2.1 standard 2.2 singleTop 2.3.singleTask 2.4.singleInstance 引言&#xff1a; Activity作为四大组件之一&#xff0c;也可以说Activity是其中最重要的一个组件&#xff0c;其负责调节APP的视图&#xff…...

DeepSeek-V3 技术报告

1.摘要 为了减少开源模型与闭源模型的能力差距&#xff0c;我们提出了DeepSeek-V3&#xff0c;一个大的混合专家模型&#xff08;Mixture-of-Experts (MoE) &#xff09;&#xff0c;有6710亿参数&#xff0c;每个token会激活370亿参数。 DeepSeek-V3采用多头隐注意力&#xf…...

Vue 3 30天精进之旅:Day 22 - 构建和部署

欢迎回来&#xff01;在我们的Vue 3学习旅程的第22天&#xff0c;我们将探讨应用的构建和部署。在完成了我们的应用开发后&#xff0c;下一步就是如何将其部署到服务器&#xff0c;使得用户可以访问。 1. 构建Vue应用 构建Vue应用是将我们在本地开发的代码打包成生产环境可用…...

Ansible中Playbook的逻辑控制语句-when

playbook的逻辑控制语句 when 条件判断语句&#xff0c;类似if loop 循环语句&#xff0c;类似loop block 将几个任务组成一个代码块&#xff0c;便于针对一组操作的异常进行处理 when的基本用法 when的运算符操作 when关键字可以配合各种运算符进行操作&#xff0c;如下&…...

制造业物联网的十大用例

预计到 2026 年&#xff0c;物联网制造市场价值将达到 4000 亿美元。实时收集和分析来自联网物联网设备与传感器的数据&#xff0c;这一能力为制造商提供了对生产流程前所未有的深入洞察。物联网&#xff08;IoT&#xff09;有潜力彻底改变制造业&#xff0c;使工厂能够更高效地…...

InfiniBand与IP over InfiniBand(IPOIB):实现高性能网络通信的底层机制

在现代高性能计算(HPC)和数据中心环境中,网络通信的效率和性能至关重要。InfiniBand(IB)作为一种高性能的串行计算机总线架构,以其低延迟、高带宽和高可靠性而广泛应用于集群计算和数据中心。IP over InfiniBand(IPOIB)则是在InfiniBand网络上实现IP协议的一种方式,它…...

【通俗易懂说模型】一篇弄懂几个经典CNN图像模型(AlexNet、VGGNet、ResNet)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;深度学习_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. …...

机器学习 | scikit-learn中分块拟合vs一次性拟合所有数据

Scikit-learn是一个广泛使用的机器学习Python库&#xff0c;提供了一系列分类、回归、聚类等算法。机器学习的关键挑战之一是处理无法一次性放入内存的大型数据集。本文探讨了使用scikit-learn将数据分块拟合与一次性拟合的策略&#xff0c;讨论了每种方法的优点和局限性。 大…...

两个同一对象targetList和 sourceList 去重

我现在需要解决的问题是从一个Java的源列表`sourceList`中移除所有在目标列表`targetList`中存在的数据,并且还要去除`targetList`中的重复数据。让我先理清楚这两个问题的思路。 首先,如何快速从`sourceList`中移除含有`targetList`的数据。这里的“含有”应该是指两个列表中…...

小游戏源码开发之可跨app软件对接是如何设计和开发的

专业小游戏开发的团队往往会面临跨领域和不同平台客户需要追加同一款游戏的需求&#xff0c;所以就要设计和开发一款可任意对接不同 App 软件的小游戏&#xff0c;那么针对这类需求小游戏开发团队早已有了成熟的解决方案&#xff0c;针对设计和开发可跨平台游戏对接大概流程简单…...

掌握正则表达式_模式匹配的艺术

当然,以下是《掌握正则表达式:模式匹配的艺术》文章内容,使用 Java 正则表达式,并包含丰富的代码示例: 1. 引言 1.1 正则表达式的定义与历史 正则表达式(Regular Expression,简称 regex 或 regexp)是一种用于描述文本模式的强大工具。它最初由数学家 Stephen Kleene…...

FacePoke详细使用指南:如何利用开源AI工具优化照片人物表情

文章目录 前言1. 本地使用FacePoke1.1 整合包方式安装1.2 Docker方式部署 2. FacePoke功能演示3. 公网使用FacePoke3.1 创建远程连接公网地址 4. 固定远程访问公网地址 前言 在数字创意的世界里&#xff0c;一款名为FacePoke的工具正以其风趣而强大的功能吸引着无数创作者的目…...

本地部署【LLM-deepseek】大模型 ollama+deepseek/conda(python)+openwebui/docker+openwebui

通过ollama本地部署deepseek 总共两步 1.模型部署 2.[web页面] 参考官网 ollama:模型部署 https://ollama.com/ open-webui:web页面 https://github.com/open-webui/open-webui 设备参考 Mac M 芯片 windows未知 蒸馏模型版本:deepseek-r1:14b 运行情况macminim2 24256 本地…...

分发饼干(力扣455)

从这道题开始我们就进入贪心算法的学习了。这个算法没有固定的套路&#xff0c;甚至题目之间的联系也很少&#xff0c;基本上每一道题都要当新题来写。我们能做的只有见多识广&#xff0c;这样才有机会在考试中根据以往经验解决贪心的题目。贪心的本质上就是找到局部最优解&…...

信息收集-主机服务器系统识别IP资产反查技术端口扫描协议探针角色定性

知识点&#xff1a; 1、信息收集-服务器系统-操作系统&IP资产 2、信息收集-服务器系统-端口扫描&服务定性 一、演示案例-应用服务器-操作系统&IP资产 操作系统 1、Web大小写(windows不区分大小写&#xff0c;linux区分大小写) 2、端口服务特征(22就是linux上的服…...

建筑兔零基础自学python记录18|实战人脸识别项目——视频检测07

本次要学视频检测&#xff0c;我们先回顾一下图片的人脸检测建筑兔零基础自学python记录16|实战人脸识别项目——人脸检测05-CSDN博客 我们先把上文中代码复制出来&#xff0c;保留红框的部分。 ​ 然后我们来看一下源代码&#xff1a; import cv2 as cvdef face_detect_demo(…...

vue-点击生成动态值,动态渲染回显输入框

1.前言 动态点击生成数值&#xff0c;回显输入框&#xff0c;并绑定。 2.实现 <template><div style"display:flex;align-items: center;flex-direction:row"><a-input:key"inputKey"v-model"uploadData[peo.field]"placehold…...

Idea 插件 Quickly-Code-Toolkit

使用说明 &#xff08;一&#xff09;全局设置 Paging Wrapper Setting&#xff08;分页设置&#xff09; 功能&#xff1a;主要用于在方法写入时&#xff0c;为返回参数提供分页包装类。设置方式&#xff1a;需准确填写分页包装类的全限定名&#xff0c;例如&#xff1a;com…...

fun-transformer学习笔记-Task1——Transformer、Seq2Seq、Encoder-Decoder、Attention之间的关系

Transformer、Seq2Seq、Encoder-Decoder、Attention由这四者之间的关系可以从模型架构的发展脉络来理解&#xff1a; Seq2Seq 与 Encoder–Decoder 模型 “Seq2Seq”&#xff08;sequence‐to‐sequence&#xff09;是一类用于将一个变长序列映射为另一个变长序列的任务&#x…...

使用瑞芯微RK3588的NPU进行模型转换和推理

使用边缘设备进行算法落地时&#xff0c;通常要考虑模型推理速度&#xff0c;NVIDA系列平台可以使用TensorRT和CUDA加速&#xff0c;瑞芯微RK3588的板子上都是Arm的手机GPU&#xff0c;虽然没有类似CUDA的加速计算方式&#xff0c;但是提供了NPU进行加速推理&#xff0c;本文说…...

mysql读写分离与proxysql的结合

上一篇文章介绍了mysql如何设置成主从复制模式&#xff0c;而主从复制的目的&#xff0c;是为了读写分离。 读写分离&#xff0c;拿spring boot项目来说&#xff0c;可以有2种方式&#xff1a; 1&#xff09;设置2个数据源&#xff0c;读和写分开使用 2&#xff09;使用中间件…...

Vue笔记(九)

一、文章分类架子--PageContainer 学习PageContainer组件的封装&#xff0c;这一组件用于搭建页面基础结构&#xff0c;为后续内容展示提供统一布局。它可能包含通用的页面样式、导航栏、侧边栏等基础元素的结构搭建。 在Vue组件中&#xff0c; <template> 标签内定义基础…...

YOLO11框架使用

YOLO11 1. Frame Understanding2. What can YOLO11 do?3.如何训练自己数据集?3.1 配置环境3.2 制作自己数据集3.3 配置文件3.3.1 数据集配置文件3.3.2 网络模块配置文件4.修改训练参数配置文件5. 训练脚本编写6.结果展示1. Frame Understanding 2. What can YOLO11 do? Ult…...

RK3588视觉控制器与AI 算法:开启工业视觉检测新境界

在实际应用中&#xff0c;工业相机拍摄产品的图像&#xff0c;RK3588 迅速接收并进行预处理。AI 算法随即对图像进行深入分析&#xff0c;提取特征并与预设的标准进行对比&#xff0c;从而准确判断是否存在缺陷。 例如&#xff0c;在电子元件生产线上&#xff0c;RK3588 和 AI…...

C语言基础入门:2.5基础输入输出

【C语言基础】输入输出完全指南&#xff1a;从printf到缓冲区安全 文章目录 【C语言基础】输入输出完全指南&#xff1a;从printf到缓冲区安全一、格式化输出艺术&#xff1a;printf函数详解二、scanf输入安全与缓冲区处理三、字符级交互&#xff1a;getchar与putchar实战程序员…...

压缩stl文件大小

1、MeshLab下载界面&#xff0c;从MeshLab下载适合自己系统的最新版本。 2、打开 MeshLab软件&#xff0c;将stl文件拖入其中。 3、 4、Percentage reduction参数即为缩放比例&#xff0c;根据自身想要将文件压缩到多大来。 然后点击apply 5、CtrlE弹出窗口保存文件后&…...

二、交换机的vlan子设备接入

一、交换机的vlan设置-CSDN博客 二、交换机的vlan子设备接入-CSDN博客 接上篇的文章&#xff0c;本文接入了子设备 网络结构如下&#xff1a; 用路由器A和POE交换机B代替第一篇中的笔记本电脑&#xff0c;路由器A和交换机B都关闭DHCP服务&#xff0c;并分别接入一个IPC&#…...

KEPServerEX 的接口类型与连接方式的详细说明

目录 一、KEPServerEX 核心架构 二、KEPServerEX 支持的接口类型 三、KEPServerEX 支持的连接类型 1. 通用工业协议 2. 品牌专属协议 3. 行业专用协议 4. 数据库与文件接口 四、配置示例 1. 接口配置&#xff08;以OPC UA为例&#xff09; 2. 连接配置&#xff08;以…...

Stack(栈)

定义&#xff1a;在Java编程语言中&#xff0c;栈(Stack)是一种非常重要的数据结构&#xff0c;具有后进先出的特性&#xff0c;即最后入栈的元素最先出栈。栈通常用于存储临时性的数据&#xff0c;如方法调用过程中的局部遍历、操作数栈等。 图像理解&#xff1a; 我们在这里要…...

【Vue3 Computed 与 Watch 维护对比】

让我们从开发体验和维护性的角度深入对比 computed 和 watch&#xff0c;通过具体场景分析它们的差异&#xff1a; 一、维护成本对比 1. 依赖管理差异 // 原始代码 const productFilter computed(() > {return products.value.filter((p) > p.price > minPrice.val…...

在node.js环境中使用web服务器http-server运行html静态文件

http-server http-server是一个超轻量级web服务器&#xff0c;它可以将任何一个文件夹当作服务器的目录供自己使用。 当我们想要在服务器运行一些代码&#xff0c;但是又不会配置服务器的时候&#xff0c;就可以使用http-server就可以搞定了。 使用方法 因为http-server需要…...

详解电子邮箱工作原理|SMTP、POP3、IMAP、SPF、MIME

写在前面 电子邮件&#xff08;Email&#xff09;是一种通过互联网进行异步通信的技术&#xff0c;工作原理涉及多个协议、服务器和客户端协同工作。 接下来我们来介绍一下电子邮箱的工作原理 1. 电子邮件的核心组成部分 邮件客户端&#xff1a;用户直接交互的软件&#xf…...

算法学习笔记之并查集

简介 问题描述&#xff1a;将编号为1-N的N个对象划分为不相交集合&#xff0c;在每个集合中&#xff0c;选择其中的某个元素代表所在集合。 常见两种操作&#xff1a; 1.合并两个集合 2.查找某元素属于哪个集合 实现方法1 用编号最小的元素标记所在集合&#xff1b; 定义…...

【开源项目】ShowDoc适合IT团队的在线API文档、技术文档工具

1. 介绍 通过showdoc&#xff0c;可以方便地使用markdown语法来书写出美观的API文档、数据字典文档、技术文档、在线excel文档等等。还可以利用showdoc的自动化能力&#xff0c;从程序注释中自动生成API文档&#xff0c;或者从搭配的RunApi客户端&#xff08;类似postman的api…...

Tomcat添加到Windows系统服务中,服务名称带空格

要将Tomcat添加到Windows系统服务中&#xff0c;可以通过Tomcat安装目录中“\bin\service.bat”来完成&#xff0c;如果目录中没有service.bat&#xff0c;则需要使用其它方法。 打到CMD命令行窗口&#xff0c;通过cd命令跳转到Tomcat安装目录的“\bin\”目录&#xff0c;然后执…...

SQL最佳实践(笔记)

写在前面&#xff1a; 之前baeldung的Java Weekly &#xfeff;Reviews里面推荐了一篇关于SQL优化的文章&#xff0c;正好最近在学习数据库相关知识&#xff0c;记一些学习笔记 原文地址&#xff1a;SQL Best Practices Every Java Engineer Must Know 1. 使用索引 使用索引…...

历史性突破!DeepSeek双模型GitHub热度超OpenAI,展现中国AI力量

在2025年2月7日&#xff0c;中国AI领域传来了一则振奋人心的消息&#xff1a;DeepSeek旗下的两大开源项目在GitHub平台上实现了历史性突破&#xff0c;其Star数成功超越了OpenAI的明星项目。这一成就不仅标志着DeepSeek在技术研发和市场影响力上的重大飞跃&#xff0c;也为中国…...

deepseek+kimi一键生成PPT

1、deepseek生成大纲内容 访问deepseek官方网站&#xff1a;https://www.deepseek.com/ 将你想要编写的PPT内容输入到对话框&#xff0c;点击【蓝色】发送按钮&#xff0c;让deepseek生成内容大纲&#xff0c;并以markdown形式输出。 等待deepseek生成内容完毕后&#xff0c…...

Java学习

一、赋值 赋值表达式&#xff0c;左边一定是变量&#xff0c;右边是变量或者数值&#xff0c;变量与数值都有类型&#xff0c;(数值里整数默认int,小数默认double) 类型由小转大&#xff0c;存储空间变大&#xff0c;数据不会丢失&#xff0c;是安全的&#xff0c;在需要时编译…...