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

Vue——使用html2pdf插件,下载pdf文档到本地

1.安装
html2pdf官网地址

npm install html2pdf.js
pnpm add html2pdf.js

2.引入

import html2pdf from 'html2pdf.js'

3.我的项目是使用的原生avascript,table tr td画表格然后通过html2pdf插件下载pdf。

问题:下载pdf时内容被截断,如下图所示:

在这里插入图片描述
在这里插入图片描述

出现上述问题,pdf分页时多了边框原因是<table border="1"></table>写了边框。
解决方案:去掉table 上的边框border,给每一行的td 上写上边框。代码如下:<el-button type="success" style="margin-bottom: 10px" @click="downClick">点击下载</el-button><div ref="fileContent"><tablewidth="95%"height="40"style="border-collapse: collapse"><tr><td width="15%" style="border: 1px solid;border-right: none;">文件名称</td><td style="border: 1px solid;">内容</td></tr><tr><td width="15%" style="border: 1px solid;border-right: none;">标题</td><td style="border: 1px solid;">自从我第一次拿起羽毛球拍,这项运动就成了我生活中不可或缺的一部分。每当周末的阳光洒向球场,我和爸爸就会准时出现在那里,开始我们的羽毛球对决。起初,我总是接不到爸爸的高远球,每次跑动都显得笨拙而缓慢。爸爸耐心地一遍遍给我示范,教我如何握拍、站位和挥拍。在他的鼓励下,我逐渐掌握了技巧,从简单的发球到复杂的扣杀,每一次进步都让我兴奋不已。记得有一次,学校举办了一场羽毛球比赛,我毫不犹豫地报名参加了比赛。比赛那天,观众席上坐满了同学和老师,气氛紧张而热烈。我信心满满地走上赛场。对手是一个比我高大的同学,但他显然低估了我的实力。比赛开始,我灵活地移动步伐,精准地击球,很快就占据了上风。我全神贯注地应对每一个来球,时而轻盈吊球,时而迅猛扣杀,每一次得分都让我信心倍增。最终,在激烈的角逐中,我赢得了比赛的冠军。如今,打羽毛球已经成为我最自豪的拿手好戏。它不仅锻炼了我的身体,更培养了我坚韧不拔的精神。每当我在球场上挥洒汗水,那份快乐和成就感总是油然而生。在未来的日子里,我会继续在羽毛球的道路上不断前进,享受每一次跃动带来的快乐。</td></tr><tr><td width="15%" style="border: 1px solid;border-right: none;">格式</td><td style="border: 1px solid;">内容</td></tr><tr><td width="15%" style="border: 1px solid;border-right: none;">参考文献</td><td style="border: 1px solid;">自从我第一次拿起羽毛球拍,这项运动就成了我生活中不可或缺的一部分。每当周末的阳光洒向球场,我和爸爸就会准时出现在那里,开始我们的羽毛球对决。起初,我总是接不到爸爸的高远球,每次跑动都显得笨拙而缓慢。爸爸耐心地一遍遍给我示范,教我如何握拍、站位和挥拍。在他的鼓励下,我逐渐掌握了技巧,从简单的发球到复杂的扣杀,每一次进步都让我兴奋不已。记得有一次,学校举办了一场羽毛球比赛,我毫不犹豫地报名参加了比赛。比赛那天,观众席上坐满了同学和老师,气氛紧张而热烈。我信心满满地走上赛场。对手是一个比我高大的同学,但他显然低估了我的实力。比赛开始,我灵活地移动步伐,精准地击球,很快就占据了上风。我全神贯注地应对每一个来球,时而轻盈吊球,时而迅猛扣杀,每一次得分都让我信心倍增。最终,在激烈的角逐中,我赢得了比赛的冠军。如今,打羽毛球已经成为我最自豪的拿手好戏。它不仅锻炼了我的身体,更培养了我坚韧不拔的精神。每当我在球场上挥洒汗水,那份快乐和成就感总是油然而生。在未来的日子里,我会继续在羽毛球的道路上不断前进,享受每一次跃动带来的快乐。自从我第一次拿起羽毛球拍,这项运动就成了我生活中不可或缺的一部分。每当周末的阳光洒向球场,我和爸爸就会准时出现在那里,开始我们的羽毛球对决。起初,我总是接不到爸爸的高远球,每次跑动都显得笨拙而缓慢。爸爸耐心地一遍遍给我示范,教我如何握拍、站位和挥拍。在他的鼓励下,我逐渐掌握了技巧,从简单的发球到复杂的扣杀,每一次进步都让我兴奋不已。记得有一次,学校举办了一场羽毛球比赛,我毫不犹豫地报名参加了比赛。比赛那天,观众席上坐满了同学和老师,气氛紧张而热烈。我信心满满地走上赛场。对手是一个比我高大的同学,但他显然低估了我的实力。比赛开始,我灵活地移动步伐,精准地击球,很快就占据了上风。我全神贯注地应对每一个来球,时而轻盈吊球,时而迅猛扣杀,每一次得分都让我信心倍增。最终,在激烈的角逐中,我赢得了比赛的冠军。如今,打羽毛球已经成为我最自豪的拿手好戏。它不仅锻炼了我的身体,更培养了我坚韧不拔的精神。每当我在球场上挥洒汗水,那份快乐和成就感总是油然而生。在未来的日子里,我会继续在羽毛球的道路上不断前进,享受每一次跃动带来的快乐。</td></tr><tr><td width="15%" style="border: 1px solid;border-right: none;">文件记录</td><td style="border: 1px solid;">自从我第一次拿起羽毛球拍,这项运动就成了我生活中不可或缺的一部分。每当周末的阳光洒向球场,我和爸爸就会准时出现在那里,开始我们的羽毛球对决。起初,我总是接不到爸爸的高远球,每次跑动都显得笨拙而缓慢。爸爸耐心地一遍遍给我示范,教我如何握拍、站位和挥拍。在他的鼓励下,我逐渐掌握了技巧,从简单的发球到复杂的扣杀,每一次进步都让我兴奋不已。记得有一次,学校举办了一场羽毛球比赛,我毫不犹豫地报名参加了比赛。比赛那天,观众席上坐满了同学和老师,气氛紧张而热烈。我信心满满地走上赛场。对手是一个比我高大的同学,但他显然低估了我的实力。比赛开始,我灵活地移动步伐,精准地击球,很快就占据了上风。我全神贯注地应对每一个来球,时而轻盈吊球,时而迅猛扣杀,每一次得分都让我信心倍增。最终,在激烈的角逐中,我赢得了比赛的冠军。如今,打羽毛球已经成为我最自豪的拿手好戏。它不仅锻炼了我的身体,更培养了我坚韧不拔的精神。每当我在球场上挥洒汗水,那份快乐和成就感总是油然而生。在未来的日子里,我会继续在羽毛球的道路上不断前进,享受每一次跃动带来的快乐。自从我第一次拿起羽毛球拍,这项运动就成了我生活中不可或缺的一部分。每当周末的阳光洒向球场,我和爸爸就会准时出现在那里,开始我们的羽毛球对决。起初,我总是接不到爸爸的高远球,每次跑动都显得笨拙而缓慢。爸爸耐心地一遍遍给我示范,教我如何握拍、站位和挥拍。在他的鼓励下,我逐渐掌握了技巧,从简单的发球到复杂的扣杀,每一次进步都让我兴奋不已。记得有一次,学校举办了一场羽毛球比赛,我毫不犹豫地报名参加了比赛。比赛那天,观众席上坐满了同学和老师,气氛紧张而热烈。我信心满满地走上赛场。对手是一个比我高大的同学,但他显然低估了我的实力。比赛开始,我灵活地移动步伐,精准地击球,很快就占据了上风。我全神贯注地应对每一个来球,时而轻盈吊球,时而迅猛扣杀,每一次得分都让我信心倍增。最终,在激烈的角逐中,我赢得了比赛的冠军。如今,打羽毛球已经成为我最自豪的拿手好戏。它不仅锻炼了我的身体,更培养了我坚韧不拔的精神。每当我在球场上挥洒汗水,那份快乐和成就感总是油然而生。在未来的日子里,我会继续在羽毛球的道路上不断前进,享受每一次跃动带来的快乐。</td></tr><tr><td width="15%" style="border: 1px solid;border-right: none;">会议</td><td style="border: 1px solid;">自从我第一次拿起羽毛球拍,这项运动就成了我生活中不可或缺的一部分。每当周末的阳光洒向球场,我和爸爸就会准时出现在那里,开始我们的羽毛球对决。起初,我总是接不到爸爸的高远球,每次跑动都显得笨拙而缓慢。爸爸耐心地一遍遍给自从我第一次拿起羽毛球拍,这项运动就成了我生活中不可或缺的一部分。每当周末的阳光洒向球场,我和爸爸就会准时出现在那里,开始我们的羽毛球对决。起初,我总是接不到爸爸的高远球,每次跑动都显得笨拙而缓慢。爸爸耐心地一遍遍给我示范,教我如何握拍、站位和挥拍。在他的鼓励下,我逐渐掌握了技巧,从简单的发球到复杂的扣杀,每一次进步都让我兴奋不已。记得有一次,学校举办了一场羽毛球比赛,我毫不犹豫地报名参加了比赛。比赛那天,观众席上坐满了同学和老师,气氛紧张而热烈。我信心满满地走上赛场。对手是一个比我高大的同学,但他显然低估了我的实力。比赛开始,我灵活地移动步伐,精准地击球,很快就占据了上风。我全神贯注地应对每一个来球,时而轻盈吊球,时而迅猛扣杀,每一次得分都让我信心倍增。最终,在激烈的角逐中,我赢得了比赛的冠军。如今,打羽毛球已经成为我最自豪的拿手好戏。它不仅锻炼了我的身体,更培养了我坚韧不拔的精神。每当我在球场上挥洒汗水,那份快乐和成就感总是油然而生。在未来的日子里,我会继续在羽毛球的道路上不断前进,享受每一次跃动带来的快乐。自从我第一次拿起羽毛球拍,这项运动就成了我生活中不可或缺的一部分。每当周末的阳光洒向球场,我和爸爸就会准时出现在那里,开始我们的羽毛球对决。起初,我总是接不到爸爸的高远球,每次跑动都显得笨拙而缓慢。爸爸耐心地一遍遍给我自从我第一次拿起羽毛球拍,这项运动就成了我生活中不可或缺的一部分。每当周末的阳光洒向球场,我和爸爸就会准时出现在那里,开始我们的羽毛球对决。起初,我总是接不到爸爸的高远球,每次跑动都显得笨拙而缓慢。爸爸耐心地一遍遍给我示范,教我如何握拍、站位和挥拍。在他的鼓励下,我逐渐掌握了技巧,从简单的发球到复杂的扣杀,每一次进步都让我兴奋不已。记得有一次,学校举办了一场羽毛球比赛,我毫不犹豫地报名参加了比赛。比赛那天,观众席上坐满了同学和老师,气氛紧张而热烈。我信心满满地走上赛场。对手是一个比我高大的同学,但他显然低估了我的实力。比赛开始,我灵活地移动步伐,精准地击球,很快就占据了上风。我全神贯注地应对每一个来球,时而轻盈吊球,时而迅猛扣杀,每一次得分都让我信心倍增。最终,在激烈的角逐中,我赢得了比赛的冠军。如今,打羽毛球已经成为我最自豪的拿手好戏。它不仅锻炼了我的身体,更培养了我坚韧不拔的精神。每当我在球场上挥洒汗水,那份快乐和成就感总是油然而生。在未来的日子里,我会继续在羽毛球的道路上不断前进,享受每一次跃动带来的快乐。示范,教我如何握拍、站位和挥拍。在他的鼓励下,我逐渐掌握了技巧,从简单的发球到复杂的扣杀,每一次进步都让我兴奋不已。记得有一次,学校举办了一场羽毛球比赛,我毫不犹豫地报名参加了比赛。比赛那天,观众席上坐满了同学和老师,气氛紧张而热烈。我信心满满地走上赛场。对手是一个比我高大的同学,但他显然低估了我的实力。比赛开始,我灵活地移动步伐,精准地击球,很快就占据了上风。我全神贯注地应对每一个来球,时而轻盈吊球,时而迅猛扣杀,每一次得分都让我信心倍增。最终,在激烈的角逐中,我赢得了比赛的冠军。如今,打羽毛球已经成为我最自豪的拿手好戏。它不仅锻炼了我的身体,更培养了我坚韧不拔的精神。每当我在球场上挥洒汗水,那份快乐和成就感总是油然而生。在未来的日子里,我会继续在羽毛球的道路上不断前进,享受每一次跃动带来的快乐。自从我第一次拿起羽毛球拍,这项运动就成了我生活中不可或缺的一部分。每当周末的阳光洒向球场,我和爸爸就会准时出现在那里,开始我们的羽毛球对决。起初,我总是接不到爸爸的高远球,每次跑动都显得笨拙而缓慢。爸爸耐心地一遍遍给我示范,教我如何握拍、站位和挥拍。在他的鼓励下,我逐渐掌握了技巧,从简单的发球到复杂的扣杀,每一次进步都让我兴奋不已。记得有一次,学校举办了一场羽毛球比赛,我毫不犹豫地报名参加了比赛。比赛那天,观众席上坐满了同学和老师,气氛紧张而热烈。我信心满满地走上赛场。对手是一个比我高大的同学,但他显然低估了我的实力。比赛开始,我灵活地移动步伐,精准地击球,很快就占据了上风。我全神贯注地应对每一个来球,时而轻盈吊球,时而迅猛扣杀,每一次得分都让我信心倍增。最终,在激烈的角逐中,我赢得了比赛的冠军。如今,打羽毛球已经成为我最自豪的拿手好戏。它不仅锻炼了我的身体,更培养了我坚韧不拔的精神。每当我在球场上挥洒汗水,那份快乐和成就感总是油然而生。在未来的日子里,我会继续在羽毛球的道路上不断前进,享受每一次跃动带来的快乐。我示范,教我如何握拍、站位和挥拍。在他的鼓励下,我逐渐掌握了技巧,从简单的发球到复杂的扣杀,每一次进步都让我兴奋不已。记得有一次,学校举办了一场羽毛球比赛,我毫不犹豫地报名参加了比赛。比赛那天,观众席上坐满了同学和老师,气氛紧张而热烈。我信心满满地走上赛场。对手是一个比我高大的同学,但他显然低估了我的实力。比赛开始,我灵活地移动步伐,精准地击球,很快就占据了上风。我全神贯注地应对每一个来球,时而轻盈吊球,时而迅猛扣杀,每一次得分都让我信心倍增。最终,在激烈的角逐中,我赢得了比赛的冠军。如今,打羽毛球已经成为我最自豪的拿手好戏。它不仅锻炼了我的身体,更培养了我坚韧不拔的精神。每当我在球场上挥洒汗水,那份快乐和成就感总是油然而生。在未来的日子里,我会继续在羽毛球的道路上不断前进,享受每一次跃动带来的快乐。</td></tr></table></div>methods:{
downClick() {this.$nextTick(() => {const element = this.$refs.fileContent;const options = {margin: 1,filename: "文件" + ".pdf",image: { type: "jpeg", quality: 0.98 },html2canvas: { scale: 2 },jsPDF: {unit: "in",format: "letter",orientation: "portrait",},pagebreak: { mode: "avoid-all", },};html2pdf().from(element).set(options).save();});},}

相关文章:

Vue——使用html2pdf插件,下载pdf文档到本地

1.安装 html2pdf官网地址 npm install html2pdf.js pnpm add html2pdf.js2.引入 import html2pdf from html2pdf.js3.我的项目是使用的原生avascript&#xff0c;table tr td画表格然后通过html2pdf插件下载pdf。 问题&#xff1a;下载pdf时内容被截断&#xff0c;如下图所示…...

每日一题:BM1 反转链表

文章目录 [toc]问题描述数据范围示例 C代码实现使用栈实现&#xff08;不符合要求&#xff0c;仅作为思路&#xff09; 解题思路 - 原地反转链表步骤 C语言代码实现 以前只用过C刷过代码题目&#xff0c;现在试着用C语言刷下 问题描述 给定一个单链表的头结点 pHead&#xff…...

CSS 实现字体颜色渐变

在 CSS 中&#xff0c;可以通过 background-clip 和 text-fill-color 等属性来实现字体颜色渐变。以下是实现字体颜色渐变的基本步骤和示例代码&#xff1a; 示例代码 <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8" /&…...

【软考网工笔记】计算机基础理论与安全——网络安全

病毒 Melissa 宏病毒 1. 是一种快速传播的能够感染那些使用MS Word 97 和MS Office 2000 的计算机宏病毒。 2. 前面有**Macro** 表示这是宏病毒&#xff1b; 3. 宏病毒可以感染后缀为.xls的文件&#xff1b;Worm 蠕虫病毒 1. 通常是通过网络或者系统漏洞进行传播。 2. 利用信…...

JS数组转字符串(3种方法)

JavaScript 允许数组与字符串之间相互转换。其中 Array 方法对象定义了 3 个方法&#xff0c;可以把数组转换为字符串&#xff0c;如表所示。 Array 对象的数组与字符串相互转换方法 数组方法 说明 toString() 将数组转换成一个字符串 toLocalString() 把数组转换成本地约定的…...

云计算安全需求分析与安全防护工程

23.1 概念与威胁分析 1&#xff09;概念 在传统计算环境下&#xff0c;用户构建一个新的应用系统&#xff0c;需要做大量繁杂的工作&#xff0c;如采购硬件设备、安装软件包、编写软件&#xff0c;同时计算资源与业务发展难以灵活匹配&#xff0c;信息系统项目建设周期长。随…...

C/C++的printf会调用malloc()

排查内存问题&#xff08;或相关的疑难杂症&#xff09;时&#xff0c;可能一句printf就能让bug出现&#xff0c;或者赶走bug。你可能觉得很神奇&#xff0c;但这并不神奇。 至少我们可以在 Linux-x64 下&#xff0c;通过 malloc hook&#xff0c;来验证当前的编译环境下&…...

spring mvc源码学习笔记之五

pom.xml 内容如下 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/P…...

3272 小蓝的漆房

将devc设置支持编译就能用新的遍历方式 for(auto &x : s)//遍历容器s&#xff0c;变量为x /* 多循环的嵌套&#xff1a; 计数是否需要重置为0; 是否因为ans定义成全局变量导致ans在比较多时候会出现错误*/ /* 1.对于一个标准色&#xff0c;对目标数组遍历&#xff0c; 如…...

MySQL使用触发器进行备份

触发器脚本备份 实现方案&#xff1a; 1.配置mysql调用外部脚本的插件mysqludf 链接&#xff1a;https://pan.baidu.com/s/1MCrf1u_SRWwcZoxM9JDNiw 提取码&#xff1a;kgt0 解压 2.解压后放进&#xff1a; mysql安装路径/lib/plugin/ 3.在mysql执行命令创建自定义函数&…...

数据结构与算法-顺序表

数据结构 顺序表 基本概念 顺序表&#xff1a;顺序存储的线性表链式表&#xff1a;链式存储的线性表&#xff0c;简称链表 顺序存储就是将数据存储到一片连续的内存中&#xff0c;在C语言环境下&#xff0c;可以是具名的栈数组&#xff0c;也可以是匿名的堆数组。 存储方式…...

OpenAI CEO 奥特曼发长文《反思》

OpenAI CEO 奥特曼发长文《反思》 --- 引言&#xff1a;从 ChatGPT 到 AGI 的探索 ChatGPT 诞生仅一个多月&#xff0c;如今我们已经过渡到可以进行复杂推理的下一代模型。新年让人们陷入反思&#xff0c;我想分享一些个人想法&#xff0c;谈谈它迄今为止的发展&#xff0c;…...

Shell编程详解

文章目录 一、Linux系统结构二、Shell介绍1、Shell简介2、Shell种类3、Shell查询和切换 三、Shell基础语法1、注释2、本地变量3、环境变量3.1、查看环境变量3.2、临时设置环境变量3.3、永久设置环境变量 4、特殊变量5、控制语句5.1、shell中的中括号5.2、if语句5.3、for循环5.4…...

跨站脚本攻击(XSS)详解

跨站脚本攻击&#xff08;XSS&#xff09;详解 跨站脚本攻击&#xff08;XSS&#xff0c;Cross-Site Scripting&#xff09;是一种通过在网页中注入恶意脚本&#xff0c;攻击用户浏览器的漏洞。攻击者可以利用XSS窃取用户敏感信息、劫持会话、或在受害者浏览器中执行恶意操作。…...

03-QT中的QMainWindow+对话框QDialog

文章目录 1.QMainWindow1.1菜单栏1.2 工具栏1.3 状态栏1.4 铆接部件1.5 核心部件&#xff08;中心部件&#xff09;1.6 资源文件 2.对话框2.1 基本概念2.2 标准对话框2.3 自定义消息框2.4 消息对话框2.5 标准文件对话框 1.QMainWindow QMainWindow是一个为用户提供主窗口程序的…...

c# 中Parallel.ForEach 对其中一个变量进行赋值 引发报错

在 C# 中使用 Parallel.ForEach 方法时&#xff0c;如果你尝试在并行循环中对共享变量进行赋值&#xff0c;很可能会遇到线程安全问题或竞争条件&#xff08;race conditions&#xff09;&#xff0c;这可能导致数据不一致、程序崩溃或其他不可预测的行为。 问题描述 假设你有…...

ElasticSearch备考 -- 整体脉络梳理

1、 search 、Update、reindex ElasticSearch 备考 -- 查询&高亮&排序 ElasticSearch 备考 -- 聚合查询 ElasticSearch 备考 -- 异步检索 2、search temple ElasticSearch备考 -- Search template 3、custom analyzer ElasticSearch 备考 -- 自定义分词 2、…...

vue Element Ui Upload 上传 点击一个按钮,选择多个文件后直接上传,使用防抖解决多次上传的问题。

问题&#xff1a; 在使用Element Ui Upload 上传文件时&#xff0c;选择多个文件上传时&#xff0c;on-change事件会一个一个返回上传的文件&#xff0c;导致前端不知道什么时候可以拿到全部上传的文件&#xff0c;再一起调后台接口。 解决方法&#xff1a; 上传文件后&…...

【HF设计模式】05-单例模式

声明&#xff1a;仅为个人学习总结&#xff0c;还请批判性查看&#xff0c;如有不同观点&#xff0c;欢迎交流。 摘要 《Head First设计模式》第5章笔记&#xff1a;结合示例应用和代码&#xff0c;介绍单例模式&#xff0c;包括遇到的问题、采用的解决方案、以及达到的效果。…...

运维人员的Python详细学习路线

以下是一条适合运维人员的Python详细学习路线&#xff1a; 一、基础入门阶段&#xff08;第1 - 2个月&#xff09; 环境搭建与基础语法&#xff08;第1个月&#xff09; 安装与配置 在运维常用的操作系统&#xff08;如Linux或Windows&#xff09;上安装Python。对于Linux系统…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…...

倒装芯片凸点成型工艺

UBM&#xff08;Under Bump Metallization&#xff09;与Bump&#xff08;焊球&#xff09;形成工艺流程。我们可以将整张流程图分为三大阶段来理解&#xff1a; &#x1f527; 一、UBM&#xff08;Under Bump Metallization&#xff09;工艺流程&#xff08;黄色区域&#xff…...

Python的__call__ 方法

在 Python 中&#xff0c;__call__ 是一个特殊的魔术方法&#xff08;magic method&#xff09;&#xff0c;它允许一个类的实例像函数一样被调用。当你在一个对象后面加上 () 并执行时&#xff08;例如 obj()&#xff09;&#xff0c;Python 会自动调用该对象的 __call__ 方法…...