3.4_1 java自制小工具 - pdf批量转图片

相关链接

  • 目录
  • 参考文章:pdf转图片(apache pdfbox)
  • 参考文章:GUI界面-awt
  • 参考文章:jar包转exe(exe4j)
  • 参考文章:IDEA导入GIT项目
  • 参考文章:IDEA中使用Gitee管理代码
  • gitee项目链接:pdf_2_image
  • 网盘地址:.jar文件,提取码: ppwr
  • 网盘地址:.exe文件,提取码:jp3y

背景介绍

  最近做标书,涉及到很多批量pdf文件要转图片,再将插入word的使用场景,大概几千份,本着能省就省的原则,下载了四五个app,基本都是要收费,永久会员50~600不等,不付费会受到各种功能限制(禁用批量功能、单个文件页数限制)。
  自己尝试写个小工具,由于之前做的小工具都是打成jar包,只能在有jre环境的电脑上黑窗口操作。这次转为exe文件,用到的GUI和exe4j属于新的尝试,最终效果还比较满意。

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


  • 开发流程

    • 1.单个pdf转图片:Apache PDFbox 开源包,实现pdf转单个图片。
    • 2.批量pdf转图片:结合上面功能,实现批量转文件。
    • 3.GUI可视化界面:awt,设计思路类似于大学的vb编程课,实现界面操作。
    • 4.exe可执行文件:exe4j,可以不安装jre环境,windows系统下双击即可运行。

    两处避坑:
      1. macos M1芯片下载后使用不了,换了台windows才运行成功。
      2. 下载时默认exe4j 9.0,应该是指对应的版本为java9及以上。我的项目使用jdk8,就要下载exe4j 8.0版本,否则会卡在其中一步,点下一步没有反应,进行不下去。
    在这里插入图片描述

      卡住的位置:
    在这里插入图片描述

    • 5.自适应:写死分辨率容易导致在分辨率较高的屏幕下,窗口非常小,通过获取屏幕尺寸,按比例计算各个组件坐标、长宽,实现自适应大小。

  • 功能示例
    • 1.设置dpi清晰度(100~600)
    • 2.图片格式(jpg和png)
    • 3.自动遍历子目录按照 原文件名_序号 格式生成对应图片
      在这里插入图片描述

源码

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/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>pdf_2_image</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><!--pdf2jpg--><dependency><groupId>org.apache.pdfbox</groupId><artifactId>fontbox</artifactId><version>2.0.9</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox --><dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.9</version></dependency><!-- https://mvnrepository.com/artifact/commons-logging/commons-logging --><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>1.4</version><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><filters><filter><artifact>*:*</artifact><excludes><exclude>META-INF/*.SF</exclude><exclude>META-INF/*.DSA</exclude><exclude>META-INF/*.RSA</exclude></excludes></filter></filters><transformers><transformerimplementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"><!-- 程序主入口 --><mainClass>com.groupies.Pdf2ImageIteratorWindowsAdaptive</mainClass></transformer><transformerimplementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"><resource>META-INF/spring.handlers</resource></transformer><transformerimplementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"><resource>META-INF/spring.schemas</resource></transformer></transformers></configuration></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.3.1</version><configuration><source>1.8</source><target>1.8</target><encoding>utf-8</encoding></configuration></plugin></plugins></build>
</project>

Pdf2ImageIteratorWindowsAdaptive

package com.groupies;import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;/*** @author GroupiesM* @date 2023/11/30* @version 1.2* @introduction pdf转图片工具类,awt可视化界面,会自动遍历所有子目录,窗口大小自适应*/
public class Pdf2ImageIteratorWindowsAdaptive {//公共变量static String filePath;//基础路径static String fileName;//文件名称//用户输入static Integer dpiInput;//dpi清晰度static String imageTypeInput;//图片类型static File fileUrl;//文件目录//循环相关static Integer taskCount = 0;//任务数量static Integer imageCount = 0;//图片数量//主体static Frame frame = new Frame("pdf转图片小工具 -- by GroupiesM");//控制台static TextArea textAreaConsole = new TextArea("");static StringBuffer sb = new StringBuffer("");//按比例获取尺寸static Toolkit toolkit = Toolkit.getDefaultToolkit();static int frameWidth = toolkit.getScreenSize().width * 2 / 5;//宽static int frameHeight = toolkit.getScreenSize().height * 19 / 20;//高static int leftEdge = frameWidth / 10;//左边距static int elementWidth = frameWidth * 4 / 5;//组件宽度static int elementHeight = frameWidth / 20;//组件宽度//字体static Font titleFontLabel = new Font("黑体", Font.BOLD, Math.max((frameWidth / 55), 12));//标签样式static Font bodyFontLabel = new Font("宋体", Font.PLAIN, Math.max((frameWidth / 55), 12));//标签样式/*** @param args* @introduction 程序入口*/public static void main(String[] args) {textAreaConsole.setText("介绍:\nhttps://blog.csdn.net/qq_43529621/article/details/134758957");initGUI();}/*** @param folder* @introduction 遍历目录中的所有pdf、子目录中的所有pdf,发现pdf文件则调用pdf2png方法转换pdf文件为png*/public static void traverseFolder(File folder) {if (folder.isDirectory()) {File[] files = folder.listFiles();if (files != null) {for (File file : files) {if (file.isDirectory()) {traverseFolder(file); // 递归遍历子文件夹} else if (file.getAbsolutePath().endsWith(".pdf")) {//如果是pdf文件,转图片filePath = folder.getAbsolutePath();//文件目录fileName = file.getName();//文件名sb.append("------------Task" + ++taskCount + "------------\r\n");sb.append("目录:" + folder.getAbsolutePath() + "\r\n");sb.append("文件:" + file.getAbsolutePath() + "\r\n");textAreaConsole.setText(sb.toString());System.out.println("------------Task" + taskCount + "------------");System.out.println("目录:" + folder.getAbsolutePath());System.out.println("文件:" + file.getAbsolutePath());try {pdf2png(filePath, filePath, fileName, imageTypeInput);} catch (Exception e) {//e.printStackTrace();sb.append(e.getMessage() + "\r\n");textAreaConsole.setText(sb.toString());}}}}} else {System.out.println("路径有误,请重新输入");}}/*** @introduction 使用pdfbox将整个pdf转换成图片* @param sourceDirectory* @param targetDirectory* @param filename* @param type 图片类型 png 和jpg* @throws Exception*/public static void pdf2png(String sourceDirectory, String targetDirectory, String filename, String type) throws Exception {long startTime = System.currentTimeMillis();// 将文件地址和文件名拼接成路径 注意:线上环境不能使用\\拼接File file = new File(sourceDirectory + "/" + filename);try {// 写入文件PDDocument doc = PDDocument.load(file);PDFRenderer renderer = new PDFRenderer(doc);int pageCount = doc.getNumberOfPages();for (int i = 0; i < pageCount; i++) {// dpi为144,越高越清晰,转换越慢BufferedImage image = renderer.renderImageWithDPI(i, dpiInput); // Windows native DPI// 将图片写出到该路径下sb.append("图片" + ++imageCount + ":" + targetDirectory + "/" + filename.replace(".pdf", "") + "_" + (i + 1) + "." + type + "\r\n");textAreaConsole.setText(sb.toString());System.out.println("图片" + imageCount + ":" + targetDirectory + "/" + filename.replace(".pdf", "") + "_" + (i + 1) + "." + type);File imageTarget = new File(targetDirectory + "/" + filename.replace(".pdf", "") + "_" + (i + 1) + "." + type);//覆盖写文件ImageIO.write(image, type, imageTarget);}long endTime = System.currentTimeMillis();//结束时间doc.close();//关流,否则会报异常 Warning: You did not close a PDF Documentsb.append("共耗时:" + ((endTime - startTime) / 1000.0) + "秒\r\n");textAreaConsole.setText(sb.toString());System.out.println("共耗时:" + ((endTime - startTime) / 1000.0) + "秒");  //转化用时} catch (IOException e) {e.printStackTrace();sb.append(e.getMessage());textAreaConsole.setText(sb.toString());}}/*** @introduction 初始化GUI页面*/public static void initGUI() {//todo 0.创建窗口Frameframe.setVisible(true);frame.setSize(frameWidth, frameWidth * 203 / 200);//设置大小frame.setBackground(new Color(88, 87, 86));//窗口背景色frame.setLayout(null);//todo 1.1 《dpi》标签Label labelDpi = new Label("  一、dpi分辨率(越高越清晰,转换越慢)");labelDpi.setBounds(leftEdge, elementHeight * 3 / 2, elementWidth, elementHeight);//设置位置、大小labelDpi.setBackground(Color.darkGray);//背景色labelDpi.setForeground(Color.WHITE);//字体颜色labelDpi.setFont(titleFontLabel);frame.add(labelDpi);//给窗口添加组件//todo 1.2 《dpi》滚动条Scrollbar scrollbarDpi = new Scrollbar(Scrollbar.HORIZONTAL, 144, elementHeight, 100, 600 + elementHeight); //构造一个具有指定方向,初始值,粗细、最小值、最大值的新滚动条scrollbarDpi.setBounds(leftEdge * 3 / 2, elementHeight * 27 / 10, elementWidth / 2, elementHeight * 2 / 3);//设置位置、大小frame.add(scrollbarDpi);//给窗口添加组件//todo 1.3《dpi回显》标签Label labelDpiValue = new Label("\t\t144");labelDpiValue.setBounds(leftEdge * 3 / 2 + elementWidth / 2, elementHeight * 27 / 10, leftEdge, elementHeight * 2 / 3);//设置位置、大小labelDpiValue.setForeground(Color.WHITE);//字体颜色labelDpiValue.setBackground(Color.darkGray);//字体颜色labelDpiValue.setFont(bodyFontLabel);frame.add(labelDpiValue);//给窗口添加组件//todo 1.4《dpi》滚动条背景Label labelDpiBackGround = new Label();labelDpiBackGround.setBounds(leftEdge, elementHeight * 5 / 2, elementWidth, elementHeight * 6 / 5);//设置大小labelDpiBackGround.setBackground(Color.darkGray);//背景色frame.add(labelDpiBackGround);//给窗口添加组件//todo 2.1《转换类型》标签Label labelImageType = new Label("  二、图片类型(jpg:有损压缩;png:无损压缩)");labelImageType.setBounds(leftEdge, elementHeight * 21 / 5, elementWidth, elementHeight);//设置大小labelImageType.setBackground(Color.darkGray);//设置标签背景色labelImageType.setForeground(Color.white);//设置标签背景色labelImageType.setFont(titleFontLabel);frame.add(labelImageType);//add()给窗口添加标签//todo 2.2《转换类型》单选框CheckboxGroup boxImageType = new CheckboxGroup();Checkbox ck1 = new Checkbox("jpg", boxImageType, true);Checkbox ck2 = new Checkbox("png", boxImageType, false);ck1.setBounds(leftEdge * 3 / 2, elementHeight * 26 / 5, leftEdge * 3 / 2, elementHeight);ck2.setBounds(leftEdge * 6 / 2, elementHeight * 26 / 5, leftEdge * 3 / 2, elementHeight);ck1.setForeground(Color.white);ck2.setForeground(Color.white);ck1.setBackground(Color.darkGray);ck2.setBackground(Color.darkGray);ck1.setFont(bodyFontLabel);ck2.setFont(bodyFontLabel);frame.add(ck1);//给窗口添加组件frame.add(ck2);//给窗口添加组件//todo 2.3《转换类型》背景Label labelImageTypeBackGround = new Label();labelImageTypeBackGround.setBounds(leftEdge, elementHeight * 26 / 5, elementWidth, elementHeight * 6 / 5);//设置大小labelImageTypeBackGround.setBackground(Color.darkGray);//背景色frame.add(labelImageTypeBackGround);//给窗口添加组件//todo 3.1《目录》标签LabelLabel labelUrl = new Label("  三、文件路径,例如:C:\\Users\\GroupiesM\\Desktop");labelUrl.setBounds(leftEdge, elementHeight * 7, elementWidth, elementHeight);//设置大小labelUrl.setBackground(Color.darkGray);//背景色labelUrl.setForeground(Color.WHITE);//字体颜色labelUrl.setFont(titleFontLabel);frame.add(labelUrl);//给窗口添加组件//todo 3.2《目录》输入框TextField textUrl = new TextField(elementHeight);textUrl.setText("C:\\Users\\GroupiesM\\Desktop");textUrl.setFont(bodyFontLabel);textUrl.setBounds(leftEdge, elementHeight * 8, elementWidth, elementHeight);frame.add(textUrl);//给窗口添加组件//todo 4《清空》按钮Button buttonClean = new Button("清空");//创建按钮buttonClean.setBounds(leftEdge * 2, elementHeight * 19 / 2, leftEdge * 7 / 5, elementHeight * 7 / 5);//设置位置buttonClean.setFont(titleFontLabel);frame.add(buttonClean);//给窗口添加组件//todo 5《转换》按钮Button buttonTransform = new Button("转换");//创建按钮buttonTransform.setBounds(leftEdge * 22 / 5, elementHeight * 19 / 2, leftEdge * 7 / 5, elementHeight * 7 / 5);//设置位置buttonTransform.setFont(titleFontLabel);frame.add(buttonTransform);//给窗口添加组件//todo 6《退出》按钮Button buttonExit = new Button("退出");//创建按钮buttonExit.setBounds(leftEdge * 34 / 5, elementHeight * 19 / 2, leftEdge * 7 / 5, elementHeight * 7 / 5);//设置位置buttonExit.setFont(titleFontLabel);frame.add(buttonExit);//给窗口添加组件//todo 7《控制台》textAreaConsole.setBounds(leftEdge, elementHeight * 113 / 10, elementWidth, elementHeight * 9);//设置大小textAreaConsole.setBackground(Color.white);//背景色textAreaConsole.setForeground(Color.black);//背景色textAreaConsole.setFont(bodyFontLabel);frame.add(textAreaConsole);//给窗口添加组件//todo 7.1《dpi滚动条》触发动作scrollbarDpi.addAdjustmentListener(e -> labelDpiValue.setText(String.valueOf("\t\t" + scrollbarDpi.getValue())));//回显滚动条//todo 7.2 《清空》触发动作buttonClean.addActionListener(actionEvent -> textUrl.setText("\b"));//清空输入框//todo 7.3 《转换》触发动作buttonTransform.addActionListener(actionEvent -> startTransform(scrollbarDpi, boxImageType, textUrl));//开始转换,并校验//todo 7.4 《退出》触发动作buttonExit.addActionListener(Pdf2ImageIteratorWindowsAdaptive::actionPerformed);//frame.pack();}/*** @introduction 开始转换,初始化参数,校验文件目录是否存在* @param scrollbarDpi dpi清晰度* @param group 图片类型,单选框* @param textUrl 文件目录*/public static void startTransform(Scrollbar scrollbarDpi, CheckboxGroup group, TextField textUrl) {dpiInput = scrollbarDpi.getValue();//设置dpiimageTypeInput = group.getSelectedCheckbox().getLabel();//设置图片类型fileUrl = new File(textUrl.getText().trim());//创建文件//如果目录不存在,不执行指令if (!fileUrl.exists()) {textUrl.setForeground(Color.red);if (!textUrl.getText().trim().endsWith("(路径不存在)")) textUrl.setText(textUrl.getText().trim() + "(路径不存在)");textUrl.selectAll();return;}//校验通过textUrl.setForeground(Color.black);//初始化参数sb = new StringBuffer();taskCount = 0;//任务数量imageCount = 0;//图片数量//开始转换traverseFolder(fileUrl);}/*** @introduction 退出按钮, 监听* @param e*/private static void actionPerformed(ActionEvent e) {sb = initSB();textAreaConsole.setText("....................正在退出.....................\n" +"===============================================\n" +sb.toString());try {Thread.sleep(1600);} catch (InterruptedException ex) {ex.printStackTrace();}sb = initSB();textAreaConsole.setText("....................正在退出.....................\n" +"===============================================\n" +sb.reverse().toString());try {Thread.sleep(1300);} catch (InterruptedException ex) {ex.printStackTrace();}System.exit(0);}/*** @introduction 退出程序-控制台* @return StringBuffer*/public static StringBuffer initSB() {sb = new StringBuffer();sb.append("                     _oo0oo_                    \n");sb.append("                    o8888888o                    \n");sb.append("                    88” . “88                    \n");sb.append("                   ( |- _ - | )                    \n");sb.append("                   O \\  =  / O                    \n");sb.append("                  __/ ‘---’ \\__                    \n");sb.append("                  '\\|       |/'                    \n");sb.append("              / \\\\|||   :   |||// \\                    \n");sb.append("            / _|||||  -卍- |||||_  \\                    \n");sb.append("           |    |\\\\\\   -    ///  |_ \\                     \n");sb.append("           |  \\_|  ''\\---/''    |_/  |                    \n");sb.append("           \\ ,-\\__    '-'    __/- ,  /              \n");sb.append("          ___'.  .'  /--.--\\   '.  .'___               \n");sb.append("          .”“'< ‘.___\\_<|>_/___.'> ' ”“.             \n");sb.append("         | | : '-\\'.:'\\ _ /' : .'/ - ': | |            \n");sb.append("          \\ \\ '_. \\_ __\\ /__ _/  , - ' / /           \n");sb.append("     ====='-.___'.___ \\____//___.-' ___.-' =====           \n");sb.append("                      '=----='           \n");sb.append("                                                             \n");return sb;}
}

23/12/3

M

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

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

相关文章

Mysql安全之基础合规配置

一、背景 某次某平台进行安全性符合型评估时&#xff0c;列出了数据库相关安全选项&#xff0c;本文特对此记录&#xff0c;以供备忘参考。 二、安全配置 2.1、数据库系统登录时的用户进行身份标识和鉴别&#xff1b; 1&#xff09;对登录Mysql系统用户的密码复杂度是否有要…

Nacos 客户端版本从1.x 升级到 2.x 的排坑记

问题描述 应用引入 Nacos Config 配置管理功能&#xff0c;应用启动时读取 Nacos 配置中心的配置作为启动参数&#xff0c;其中包括数据源信息 url 。 当 Nacos 正在进行 GC 操作、无法响应客户端请求时&#xff0c;应用端刚启动时发送的登录认证请求 http://IP:PORT/nacos/v…

Azure Machine Learning - 使用 Python 进行语义排名

在 Azure AI 搜索中&#xff0c;语义排名是查询端功能&#xff0c;它使用 Microsoft AI 对搜索结果重新评分&#xff0c;将具有更多语义相关性的结果移动到列表顶部。 关注TechLead&#xff0c;分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验&am…

单链表的模拟实现

单链表的模拟实现 一&#xff1a;单链表的概念&#xff1a;二&#xff1a;单链表中的方法&#xff1a;1&#xff1a;得到单链表的长度2&#xff1a;查找是否包含关键字key是否在单链表当中3&#xff1a;打印单链表中的数据&#xff1a;display&#xff08;&#xff09;3&#x…

WPF实现文字纵向排布的TabItem

文章目录 基本用法文字竖排显示 WPF布局 基本用法 WPF中的TabControl是一个容器控件&#xff0c;用于在单个窗体或页面中承载多个选项卡。每个选项卡可以包含不同的控件&#xff0c;用于显示不同的内容&#xff0c;其最简单的调用方法如下&#xff0c;只需在TabControl中无脑…

1.3 Linux文件系统

一、Linux文件系统结构 Linux下都是文件&#xff0c;所以没有Windows一样的盘&#xff0c;有的只有文件夹。 cd /    // 进入根目录 ls     // 查看根目录"/"下的文件及文件夹 /bin    &#xff1a;存储了很多系统命令&#xff0c; /usr/sbin 也存储了…

未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序报错的解决办法

当在本地计算机上使用Microsoft Office相关库时&#xff0c;可能会出现“未在本地计算机上注册microsoft.ACE.oledb.12.0”提供程序的报错。这是由于缺少相关的驱动程序或者未安装相应的软件所导致的。下面是解决该问题的完整攻略。 可能是因为没有安装数据访问组件&#xff0…

[蓝桥杯 2019 省 B] 特别数的和-C语言的解法

小明对数位中含有 2、0、1、9 的数字很感兴趣&#xff08;不包括前导 0&#xff09;&#xff0c;在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40&#xff0c;共 28 个&#xff0c;他们的和是 574。 请问&#xff0c;在 1 到 n 中&#xff0c;所有这样的数的和是多少&…

极智一周 | AI 算力国产化、MR、Cybertruck、华为造车、登月“造假“ And so on

欢迎关注我的公众号 [极智视界]&#xff0c;获取我的更多技术分享 大家好&#xff0c;我是极智视界&#xff0c;带来本周的 [极智一周]&#xff0c;关键词&#xff1a;AI 算力国产化、MR、Cyberturck、华为造车、登月"造假" And so on。 邀您加入我的知识星球「极智…

蓝桥杯第1037题子串分值和 C++ 字符串 逆向思维 巧解

题目 思路和解题方法 方案一——遍历哈希表 仅能过60%样例,大多数同学都用的该方法&#xff0c;就不过多赘述 #include <iostream> #include <unordered_map> using namespace std; int main() {string s;cin >> s;int n s.size();int res n;for (int i 0…

各类声音数据集大合集—乐器、车辆、鸟鸣、蜜蜂声音、歌曲、喇叭、人类声音不同等类型的声音数据集

最近收集了一大波关于各类声音的数据集&#xff0c;包含乐器、车辆、鸟鸣、蜜蜂声音、歌曲、喇叭、人类声音不同等类型的声音数据集&#xff0c;废话不多说&#xff0c;给大家逐一介绍&#xff01;&#xff01; 1、吉他和弦大调、小调数据集 吉他和弦大调、小调数据集&#x…

Vue基础知识点梳理

在Vue中&#xff0c;被用来响应地更新HTML属性的指令是v-model页面挂载成功之后会触发哪一个钩子函数mounted挂载之后会进行页面的渲染v-on是动作元素不属于条件渲染指令 在Vue中&#xff0c;下列关于Vue实例对象说法不正确的是&#xff08;&#xff09;。A.Vue实例对象是通过n…

Linux docker批量安装软件

1.前提 具备docker-compose.yml 和 prometheus.yml 文件 常见报错&#xff1a; 1.没有配置network 配置network即可&#xff1a; 2.缺少相关依赖 docker-compose.yml加入相关配置 3.重复项 删除掉重复的 最后 执行 等待完成 下载后相当于有了这些软件包的镜像 启动的每…

思维模型 同体效应

本系列文章 主要是 分享 思维模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。我们是自己人。 1 同体效应的应用 1.1 同体效应在市场营销上的应用-耐克的“Just Do It”营销活动 耐克是一家全球知名的运动品牌&#xff0c;其“Just Do It”营销活动是市场营销领域的经…

深度学习常见回归分支算法逐步分析,各种回归之间的优缺点,适用场景,举例演示

文章目录 1、线性回归&#xff08;Linear Regression&#xff09;1.1 优点1.2 缺点1.3 适用场景1.4 图例说明 2、多项式回归&#xff08;Polynomial Regression&#xff09;2.1 优点2.2 缺点2.3 适用场景2.4 图例说明 3、决策树回归&#xff08;Decision Tree Regression&#…

Beta冲刺随笔-DAY6-橘色肥猫

这个作业属于哪个课程软件工程A这个作业要求在哪里团队作业–站立式会议Beta冲刺作业目标记录Beta冲刺Day6团队名称橘色肥猫团队置顶集合随笔链接Beta冲刺笔记-置顶-橘色肥猫-CSDN博客 文章目录 SCRUM部分站立式会议照片成员描述 PM报告项目程序&#xff0f;模块的最新运行图片…

制作一个RISC-V的操作系统二-RISC-V ISA介绍

文章目录 ISA的基本介绍啥是ISA为什么要设计ISACISCvsRISCISA的宽度知名ISA介绍 RISC-V历史和特点RISC-V发展RISC-V ISA 命名规范模块化的ISA通用寄存器Hart特权级别Control and Status Register&#xff08;CSR&#xff09;内存管理与保护异常和中断 ISA的基本介绍 啥是ISA …

【UE】UEC++获取屏幕颜色GetPixelFromCursorPosition()

目录 【UE】UE C 获取屏幕颜色GetPixelFromCursorPosition() 一、函数声明与定义 二、函数的调用 三、运行结果 【UE】UE C 获取屏幕颜色GetPixelFromCursorPosition() 一、函数声明与定义 创建一个蓝图方法库方法 GetPixelFromCursorPosition()&#xff0c;并给他指定UF…

【MATLAB】RLMD分解+FFT+HHT组合算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 RLMD分解FFTHHT组合算法是一种强大的分析方法&#xff0c;结合了局部均值分解&#xff08;LMD&#xff09;、快速傅里叶变换&#xff08;FFT&#xff09;和希尔伯特-黄变换&#xff08;H…

WIN10 WIN11 关闭更新的绝佳办法(极简单无副作用)

WIN10 WIN11 关闭更新的绝佳办法&#xff08;极简单无副作用&#xff09; 极其简单用实用可以关闭更新20年 winr&#xff0c;输入regedit 打开注册表打开注册表的这个路径&#xff1a; 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings 右键空白的地方…