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

【发布】Photoshop ICO 文件格式插件 3.0

备注:本文原文首发于博客园:

https://www.cnblogs.com/hoodlum1980/p/17766287.html

【简介】

Photoshop ICO 插件是为 Photoshop 开发的功能扩展插件,使得 Photoshop 可以直接读写 ICO 格式文件。由于 Photoshop 具有强大的像素位图编辑功能,用户众多,用户基础好,这使得使用 Photoshop 制作图标变得方便,简单,快捷。而基本上降低了对多个软件协同合作的需求。也就是说,可以使用 Photoshop 就能完成绝大多数的工作,剩下一点小小的工作,例如图标文件的合并等,就属于比较简单的任务,相应的软件也比较容易开发和提供。

经过一段时间的紧张开发,在 13 年之后(2.0 版本于 2010 年发布)我终于可以发布最新版 (V3.0)的 ICO 文件格式插件了。这一次的更新我做了非常多的功能升级,最主要的新增功能特性包括:

(1)新增 X64 版本,提供这个对开发来说几乎 0 成本,但是对用户来说却很重要的一个需求。因为现在的软件和 PC 已经普遍进入 x64 时代了。

(2)新增对包含 PNG 格式图像的图标的支持,这种格式是由 windows vista 开始引入并支持的,PNG 格式图像采用 zlib 压缩,可以大大减小文件尺寸,但是一些比较古老的软件可能不支持。保存图标时,用户可以选择是否使用 PNG 格式来压缩 32 BPP 图像。

(3)新增对鼠标光标文件(cursor)的读写支持,支持设置 hotspot。

(4)在读写选项对话框上提供更强和更友好的 UI 支持,尤其是在保存图标时,用户可以实时预览到自动生成的其他尺寸和质量的图像。用户可以自由勾选想要包括在文件中的图像。尤其是对 32 BPP 为基础生成其他低质量的图标时,原来 V2.0 版提供的 alpha threshold 参数不能直观预览,使得这个参数的设置十分盲目,现在用户可以通过拖动 slider 滑竿控件,实时看到这个参数对生成图像的影响。

(5)采用质量更佳的我自己写的全像素插值的图像缩小算法。可以使得生成的小图像质量比 2.0 版本的 4 像素插值更好。

(6)生成索引图像依然采用 8 叉树算法。生成 1 BPP 的二元图像,则使用比较简单的灰度阈值方法。

(7)新增 UI 多语言支持。插件已经内置中文和英文语言资源,点击对话框上的国旗图标,可以切换界面语言。用户也可以通过语言资源模板文件,很容易为插件添加第三方语言支持。或者如果用户对内置语言有不满意之处,可以通过增加语言资源的 xml 文件,实现“覆盖”插件的内置语言资源,因为外置的语言资源文件,比插件内置的语言资源优先级更高。实现多语言,增加了很多开发精力。尽管对国人来说这一功能意义不大,但这是我非常看重的一个功能点,所以我尽最大努力将它实现了。

(8)新增对插入 BPP16 R5G6B5 格式图像的支持。V2.0 版本的插件已经支持 BPP16 图像的读取,尽管这种格式的图像在现实中应该是非常罕见,一些图像读取软件可能也不支持这种格式,但这种格式的图像还是有存在的,主要是在特殊的设备(例如比较古老的手机)或者历史时期为了降低图像文件大小的考虑。所以插件同时支持插入 BPP16 的 R5G5B5 (555)和 R5G6B5 (565)两种 BPP 16 的支持。但仅在读取或者用户选择要插入新的图像时,可以选择。保存时,插件默认不会插入 BPP16 的图像。

【下载链接】下面是新版 ICO 插件 V3.0 的下载链接:

ICO V3.0.3icon-default.png?t=N7T8https://files.cnblogs.com/files/hoodlum1980/ICO-V3.0.3.zip?t=1697704176&download=true

版本发布日期文件名md5
3.0.32023-10-19ICO.8BI0a518e2c36d7aae853d53c9de870578d
ICO64.8BIfab002b0ab00144b6776ee022269f8d8
PsPlugInSetup.exe8e6ca3ecd4bf11f711b9ba9c946fae3f

检查文件 MD5 以确保这些文件是源自作者发布的版本且未收到他人改动。

其中 x86 (32 位)版本是我主要调试的版本,使用 Photoshop CS (8.0.1)测试。x64 版本简单经过 Photoshop CS4(11.0,64 bit )的测试。

【功能简介】

(1)从 PE 文件中抽取图标

从 PE 文件中抽取图标或光标文件。打开一个含有图标,光标文件的 PE 文件,注意,如果文件是 EXE 后缀,需要先把文件后缀改为 DLL,才能打开,这点和 V2.0 时的要求一样。例如,打开 shell32.dll 时,将弹出图标资源列表。如果同时有图标和光标资源,则他们被分组显示,其中第一组是图标,第二组是光标,如下图所示:

用户可以选定一个资源,导入到 PS 中进行编辑。但是由于每次只能导入 PS 一个资源,且每个资源只能导入其中的一个图像,这使得保存时,将和 PE 文件中的资源产生差别,或者说有损的另存。为了规避这一点,所以这里也可以选择不经过 PS,而是直接把图标按照 PE 中的原样导出到硬盘文件。用户可以一次选择一个 PE 文件中的所有图标和光标,然后选择一个文件夹,点击“好”,就可以将这个 PE 文件中的所有图标和光标全部原样导出了。

在比较新的 windows 版本中,一些 DLL 的图标等不变资源被分离到了另一个以 mun 为后缀的文件(实质也是 DLL 文件,只是后缀不同)中,并放在 "C:\Windows|SystemResources" 目录下。可能是因为这些 DLL 针对不同语言可以有多个版本,但是这些图标之类的资源是不变的,所以为了避免让这些资源跟随 DLL 形成多份副本,而把这些不变的资源从原  DLL 中剥离到另一个 DLL 中进行”共享“。所以 ICO 插件新增了支持打开 ”mun“ 后缀的文件,如下图所示:

(2)选取图像

当用户选择一个图标文件,或者从 PE 中选取了一个图标导出时,如果这个资源包含多个图像,则会弹出图像选择对话框,要求用户选择要读取的图像:

在这里,用户可以选择图像,可以对图像进行放大和缩小的操作,还可以设置图标的背景,查看图标和不同背景色合成的效果。也可以显示像素网格(只有放大倍数 >= 400% 时才会显示像素网格)。插件将默认先选中图标中质量最佳的图像。如果图标只有一个图像,则这个对话框就不会显示,而是直接将唯一的图像打开到 Photoshop 文档中。打开图标之后,如果图像具有 AND MASK(非 PNG 图像),则 AND MASK 被添加到 Photoshop 的一个新建通道,之前在 V2.0 中,这个通道是和图标中的数据一致,但是会和用户对通道的自觉不符,(AND MASK 中的白色代表透明像素,黑色代表不透明像素),因此为了更符合用户直觉,在 V3.0 中,我反转了这个通道。现在 Alpha 通道对应选区,将成为代表 AND MASK 的通道的选区的子集。

用户选择预览合成效果和 Alpha 通道的信息,当鼠标在图像中移动时,对话框底部将会显示鼠标的位置和像素的 BGRA 信息。

 在这个对话框上,支持使用快捷键 [CTRL] [+] 和 [CTRL] [-] 缩放图像,支持 [CTRL] ['] 切换显示像素网格状态,熟悉 Photoshop 的用户可以知道,这些快捷键和 Photoshop 的快捷键是一致的。

(3)显示光标热点

当用户打开一个光标(CURSOR)文件时,这个对话框还将增加一个选项:“突出显示光标热点”,开启时,光标热点将会用一个红色十字表示其所在位置,如下图所示:

在打开光标文件时,热点将作为一个独立的通道,被添加到 Photoshop 文档中,用户能够通过通道,查看光标的 hotspot 所在位置。

(4)保存图标

保存图标时,将会弹出保存图标对话框:

这个对话框是 3.0 版本插件中最重要的功能增强。首先,对话框已经插入了其他的大小和质量的建议图像,用户可以勾选自己需要的图像。如果这些图像不满足用户需求,也可以点击“插入新图像”按钮,插入其他尺寸和质量的图像。这里最重要的就是,当从一个 32 BPP 的图像,生成其他 BPP 图像时,相当于从反锯齿图像,生成锯齿图像,这里很重要的一个参数就是对透明像素和不透明像素的区分参数:Alpha 阈值。在 32 BPP 图像中,每个像素都具有一个 alpha 信息(在 0 - 255 之间),控制和背景的 alpha 合成。0 代表完全透明,255 代表完全不透明,中间值则是半透明的合成。当降级到 BPP 小于 32 时,这些处于 0 和 255 中间的 alpha 值的像素,就必须选择要么成为透明,要么不透明,这就是 alpha threshold 这个参数的作用。插件的逻辑是:设定一个 alpha threshold:

如果 Alpha < Alpha Threshold,则这个像素将变为透明。

否则这个像素将不透明。

因此,如果 AlphaThreshold = 0,则图像将完全不透明。如果 AlphaThreshold = 256, 则图像将完全透明。

在对话框上提供了 alpha threshold 的 slider 滑竿,用户可以通过拖动滑竿,实时看到这个参数的改变,对生成图像结果的影响。它最重要的作用就是控制锯齿图像的黑边的大小,我们可以从下图看出 alpha threshold 参数对生成图像的影响:

我们可以看到当 AlphaThresh = 1 (默认值)时,生成的图像保留了最多的原图像素,也就使得阴影比较大。当增加 AlphaThresh 时,图像的阴影部分将会逐渐缩小。当拖动调节滑竿时,用户将可以实时看到生成图像的效果,因此可以更好的调节生成图像的质量。而在 v2.0 版本插件中,这个参数不能实时预览,因此只能凭感觉设置,导致生成的图像效果难以控制。

(5)设置光标热点

保存光标文件时,用户可以设置光标热点:

用户可以选择要保存到的文件类型,当选中“光标”类型时,对话框将会显示“热点”设置的按钮,点击设置热点按钮,就可以通过鼠标在图像上按下来设置热点了(这个操作和在 Visual Studio 中一致),或者直接在文本框中输入对应的数值即可。但这里我没有提供突出显示热点的功能选项,因为这个并不是那么重要。

(6)主图像(源图像)

在保存时,所有图像中有一个图像,是直接来自于 Photoshop 文档的数据,这个图像就被称之为主图像,或者源图像,所有其他图像都是从这个主图像的数据为基础,而后生成出来的。所以主图像具有很重要的作用,它在 listview 列表中,尺寸后面被加上一个感叹号,备注中也特别标明了“源自 PS 文档”,来表示这是主图像。主图像的主要作用是,对主图像的 alpha threshold 和 hotspot 的设置,将会自动传播到其他“子图像”中。因此,当选中主图像时,alpha threshold 和 hotspot 对应的控件都会用粗体字体显示,这表示这时的设置将会自动传播给其他所有图像。当选中非主图像时,这些设置将只会对当前选中的这一个图像有效,其他图像不会受到影响。

(7)设置透明色

对没有透明信息的图像,保存时,将显示设置透明色的按钮。这里对 V2.0 版本有所不同的是,我对这里的透明设置做了简化,因为 V2.0 版本在这里的设置透明色的选项有些花里胡哨,但是作用并不是很大,因为这个需求本身没那么重要和常用,所以在 V3.0 版本里我对这个功能简化成只提供设置透明色的功能,用户设置一个透明色,来把图像变为部分透明,因为在开发中有一些资源是使用透明色贴图的,所以这里可以比较方便的将其转化为图标。

(8)设置图像编码

对每个 32 BPP 的图像,用户可以自主选择是否使用 PNG 编码,这里建议是对超过 48 像素尺寸的图像,使用 PNG 编码,以使得图像尺寸较小。但是有些图像软件可能不支持 PNG 编码的图像,所以这里需要用户自行考虑。要修改图像编码设置,只需要双击对应图像的编码列,将会弹出一个 combobox,用户可以切换编码,如果没有选择 PNG 编码,则插件使用非压缩格式的 BI_RGB (Windows 位图格式)方式进行编码。

需要注意的是,只有 32 BPP 的图像才能修改编码。非 32 BPP 的图像,只能采用 BMP 存储,这是因为如果把 BPP1 - BPP 24 的图像使用 PNG 编码,将会丢失图标 AND MASK 中携带的透明信息,因此其他 BPP 不支持采用 32 BPP。

(9)全像素插值缩小算法

ICO 3.0 采用的全像素插值缩小算法,和 ICO 2.0 采用的删除像素或四像素插值算法的结果对比,如下图所示:

这里的算法是把一个 256 x 256 的 32 BPP 图像,缩小至 48 x 48 像素的 32  BPP 小图像,这里的比对效果可能不是很明显的区分“优劣”,但可以说明一些问题。那就是 ICO 2.0 算法采用的不管是删除像素(COLOR ON COLOR),还是四像素插值的方法,都因为丢失大量中间像素的颜色信息,而产生了一种“锐化”的尖锐感,如果特定图像和特定缩放比例不巧的话,还会丢失掉重要颜色信息,而使得结果不理想。而 ICO 3.0 因为是对原图所有像素都参与插值,所以结果会显得依然比较平滑,视觉效果会更加自然,给人的主观感受会更接近原图。

【常见问题】

(1)保存的时候,为什么文件类型中没有出现 ICO 格式?

答:因为 ICO 和 CURSOR 文件的最大尺寸是 256 x 256 像素。因此如果 Photoshop 文档的高度和宽度有任何一项超过 256 像素,则保存的时候,ICO 文件格式就会被 Photoshop 自动隐藏,这是因为插件的 PIPL 属性中指定了文档的最大尺寸为 256 X 256 像素。因此,如果要保存为 ICO 格式,请先把 Photoshop 文档的图像大小缩放到 256 x 256 像素以下,保存的时候就可以选择 ICO 格式了。

(2)保存为 ICO 的时候,怎样修改图像编码为 PNG 编码,或者禁止使用 PNG 编码?

答:只有 BPP = 32 的图像,支持使用 PNG 编码保存。对 32 BPP 图像,用鼠标双击保存选项对话框右下角的 ListView 的 ”编码“ 一列,在弹出的组合框中选择编码,”-“代表不使用 PNG 编码,然后鼠标点击其他位置,使组合框失去输入焦点,即完成对该图像编码的设置。可以对每个 32 BPP 的图像进行编码设置。注意,一些古老的软件可能不支持解码含有 PNG 编码图像的 ICO 文件。

(3)能不能在保存选项对话框上,直接编辑某个图像某个像素的颜色和 Alpha 值,或者选择一个文件作为插入图像?

答:目前版本(ICO V3.0.2 ) 尚不支持。未来在评估需求和实现比较合理的情况下有可能引入类似功能。

(4)如何为插件增加新的语言支持?

答:编辑压缩包内的 "ICO_LANG_TEMPL.xml",把文件中的 elements 的 Text 翻译到对应语言,然后把这个文件更名到 "ICO.LANG.<your-language>.xml' ,并复制到插件被安装到的目录,这时,如果文件内容能够正确加载,在对话框上点击图标将能看到相应的菜单项被添加,这时就可以使用这种语言资源了。其中,语言 ID 也就是国旗 ID,可以查阅压缩包内的 FLAGS_00_3F.png 等文件得到,插件已经内置了这 200 多个国家或地区的旗帜图标。

(5)如何手动安装插件?

答:以 x86 为例,x64 于此类似:把 ICO.8BI (32 位版本)文件复制到Photoshop的文件格式插件目(例如 C:\Program Files\Adobe\Photoshop CS\增效工具\文件格式 )文件夹下面,重新启动Photoshop即可。在PS的菜单中如果有下面的菜单:帮助-关于增效工具-ICO...,则说明插件安装成功。

(6)如何卸载 ICO 插件:
答:从插件安装目录中删除 ICO.8BI 或 ICO64.8BI。然后打开注册表编辑器,删除以下注册表键(如果存在),这些注册表键用于存储用户选择的界面语言信息:
    "HKEY_USERS\<your user id class>\SOFTWARE\Classes\VirtualStore\MACHINE\SOFTWARE\Wow6432Node\Adobe\Photoshop\hoodlum1980\ICO"
    "HKEY_USERS\<your user id class>\SOFTWARE\Classes\VirtualStore\MACHINE\SOFTWARE\Adobe\Photoshop\hoodlum1980\ICO"
    "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Adobe\Photoshop\hoodlum1980\ICO"
    "HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Photoshop\hoodlum1980\ICO"

【参考资料】

(1)A Simple Method for Color Quantization: Octree Quantization. (生成索引图像的八叉树算法)

(2)flag icons (by mjames@gmail.com). (国旗图标)

【版本更新历史】

(1)V3.0.3: 选择图像对话框:去除 “显示图像边框” checkbox,因为这个选项的存在意义不大。增加 [Ctrl]-['] 快捷键,用来切换显示像素网格状态。2023-10-19。

相关文章:

【发布】Photoshop ICO 文件格式插件 3.0

备注&#xff1a;本文原文首发于博客园&#xff1a; https://www.cnblogs.com/hoodlum1980/p/17766287.html 【简介】 Photoshop ICO 插件是为 Photoshop 开发的功能扩展插件&#xff0c;使得 Photoshop 可以直接读写 ICO 格式文件。由于 Photoshop 具有强大的像素位图编辑功…...

负载均衡、代理和动静分离的战略

一、Nginx简介 1.1 概述 Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理服务器,特点是占有内存少,并发能力强,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数 。 1.2正向代理与反向代理 1.2.1正向代理 正向代理:如果把局域网外的 Internet 想象…...

Gitlab用户角色权限Guest、Reporter、Developer、Master、Owner

Gitlab用户在组中有角色权限&#xff1a;Guest、Reporter、Developer、Master、Owner Gitlab权限管理 Guest&#xff1a;可以创建issue、发表评论&#xff0c;不能读写版本库 Reporter&#xff1a;可以克隆代码&#xff0c;不能提交&#xff0c;QA、PM可以赋予这个权限 Deve…...

C#上位机序列9: 批量读写+事件广播+数据类型处理

一、源码结构&#xff1a; 二、运行效果&#xff1a; 三、源码解析 1. 读取配置文件及创建变量信息&#xff08;点位名称&#xff0c;地址&#xff0c;数据类型&#xff08;bool/short/int/float/long/double&#xff09;&#xff09; 2. 异步任务处理&#xff1a;读任务&…...

科技资讯|2023全球智能手表预估出货1.3亿块,智能穿戴提升AI功能

根据集邦咨询公布的最新报告&#xff0c;受全球经济低迷影响&#xff0c;2023 年全球智能手表出货量预估为 1.3 亿块。苹果以超过 30% 的份额领先&#xff0c;其次是三星&#xff08;接近 10%&#xff09;、华为、Garmin、Fitbit 等。 报告认为苹果、三星和华为等主要智能手表…...

技术架构之术

架构特征 1、结构性特征 易理解、可复用、可移植、可扩展、可配置、可维护、可测试 2、运行时特征 可靠性、稳定性、高安全、可伸缩、易用性、可用性、高性能、可观测 3、交付性特征 高效率、高适配、标准化、灵活性、易定制、统一性、开放性 如何开展我们的架构工作 价值分…...

【自用重要】概率论中θ和θ尖的区别【计算时的一般方法】

θ就相当于x&#xff0c;是一个值。 θ尖就相当于X&#xff0c;是一个量。 在做分布函数的时候&#xff0c;最好把θ尖换成Z的形式&#xff0c;因为他们都是量&#xff0c;这样比较好看。 在做不等式的时候&#xff0c;一般把量放在中间进行计算&#xff0c;因为随机变量有分…...

Redis设计与实现笔记 - 数据结构篇

Redis设计与实现笔记 - 数据结构篇 相信在我们日常使用中&#xff0c;会经常跟 Redis 打交道。数据结构 String、Hash、List、Set 和 ZSet 都是常用的数据类型。对于使用场景&#xff0c;我们可以滔滔不绝地说很多&#xff0c;但是我们从来就没有关心过它们的底层实现&#xf…...

线性代数-Python-01:向量的基本运算 -手写Vector -学习numpy的基本用法

文章目录 代码目录结构Vector.py_globals.pymain_vector.pymain_numpy_vector.py 一、创建属于自己的向量1.1 在控制台测试__repr__和__str__方法1.2 创建实例测试代码 二、向量的基本运算2.1 加法2.2 数量乘法2.3 向量运算的基本性质2.4 零向量2.5 向量的长度2.6 单位向量2.7 …...

数字图像处理实验记录二(直方图和直方图均衡化)

文章目录 一、基础知识1&#xff0c;什么是直方图2&#xff0c;直方图有什么用3&#xff0c;直方图均衡化4、原理代码实现 二、实验要求任务1&#xff1a;任务2&#xff1a; 三、实验记录任务1&#xff1a;任务2&#xff1a; 四、结果展示任务1&#xff1a;任务2&#xff1a; 五…...

大数据Flink(九十九):SQL 函数的解析顺序和系统内置函数

文章目录 SQL 函数的解析顺序和系统内置函数 一、​​​​​​​SQL 函数...

TODO Vue typescript forEach的bug,需要再核實

forEach 一個string[]&#xff0c;只有最後一個匹配條件有效&#xff0c;其它條件無效。 所以&#xff0c;只能替換成普通的for循環。 console.log(taskList)// for (const _task of taskList.value) {// if (_task invoiceSendEmail) {// form.value.invoiceSendEmail…...

简记一个错误

简记一个Flutter错误&#xff1a; Using hardware rendering with device sdk gphone64 x86 64. If you notice graphics artifacts, consider enabling software rendering with “–enable-software-rendering”. Launching lib\main.dart on sdk gphone64 x86 64 in debug …...

第四次作业

1.打印各种图形 A.矩形 a int(input("请输入行数: ")) i 0 while i < a:print("*"*10)i1 结果&#xff1a; B.直角三角形 a int(input("请输入行数: ")) i 0 while i<a:print("*"*(i1))i1 结果&#xff1a; C.反直角三角形 …...

面试问题整理总结

1.自我介绍 2.为什么想转测试 想换一个方向&#xff0c;测试开发在一定程度上也是属于开发&#xff0c;而且站在测试的角度能看到全局的东西更多&#xff0c;对需求的理解需要更深”&#xff0c;之前的开发工作比较专一&#xff0c;测试的视野更加开阔&#xff0c;想要站在更高…...

进阶JAVA篇- Collection 类的常用的API与 Collection 集合的遍历方式

目录 1.0 Collection 类的说明 1.1 Collection 类中的实例方法 2.0 Collection 集合的遍历方式&#xff08;重点&#xff09; 2.1 使用迭代器&#xff08; Iterator &#xff09;进行遍历 2.2 使用增强型 for 循环进行遍历 2.3 使用 Java 8的 Stream API 进行遍历&#xff08;使…...

CentOS | 添加普通用户并授权sudo

sudo -i adduser peter passwd peter whereis sudoers nano /etc/sudoers添加一行新用户到root组 ## Allow root to run any commands anywhere root ALL(ALL) ALL peter ALL(ALL) ALL如果提升权限后无法cd到其他目录等&#xff0c;修改 /etc/passwd 文件&…...

【MyBatis】mybatis工具类迭代

目录 MyBatis工具类的迭代 ThreadLocal使用 mybatis工具类终极版&#xff1a; MyBatis工具类的迭代 public class MyBatisUtil {//工具类构造方法私有化private void MyBatisUtil() {}//方法一public static SqlSession getSqlSession(){try {SqlSessionFactoryBuilder sql…...

MSQL系列(六) Mysql实战-SQL语句优化

Mysql实战-SQL语句优化 前面我们讲解了索引的存储结构&#xff0c;BTree的索引结构&#xff0c;以及索引最左侧匹配原则&#xff0c;Explain的用法&#xff0c;可以看到是否使用了索引&#xff0c;今天我们讲解一下SQL语句的优化及如何优化 文章目录 Mysql实战-SQL语句优化1.…...

kaggle新赛:UBC卵巢癌亚型分类和异常检测大赛【图像分类】

赛题名称&#xff1a;UBC Ovarian Cancer Subtype Classification and Outlier Detection (UBC-OCEAN) 赛题链接&#xff1a;https://www.kaggle.com/competitions/UBC-OCEAN 赛题背景 卵巢癌是女性生殖系统最致命的癌症。目前&#xff0c;卵巢癌诊断依赖病理学家评估亚型。…...

基于nodejs+vue云旅青城系统

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…...

《孙哥说Spring5》笔记汇总

时隔两个多月&#xff0c;终于将《孙哥说Spring5》的笔记文章全部整理完了&#xff0c;在这里做个汇总。孙哥的Spring课讲的非常好&#xff0c;深度和广度都有所兼顾&#xff0c;推荐大家去看 点击学习《孙哥说Spring5》 基础铺垫 1️⃣ Spring5应用之基础扫盲2️⃣ Spring5应…...

在使用了spring-cloud-starter-gateway后,为什么还会发生cors问题

//1.需要配置类 import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.reactive.CorsWebFilter; import org.sp…...

CentOS7安装MySQL8.0.28

CentOS7安装MySQL8.0.28 一、下载MySQL安装包二、安装配置mysql 一、下载MySQL安装包 点击以下链接可以自动跳转&#xff1a;MySQL官网 接下来按如图所示依次点击进入。 选择自己所需要版本 此处如需下载历史版本可以点击 二、安装配置mysql 1、登录ssh或其他相关软件上…...

AutoSAR入门:应用背景及简介

1、应用背景 在我们现在的汽车行业里面&#xff0c;汽车电子的发展过程中&#xff0c;我们发现有一些新的趋势汽车电子系统的复杂性不断增长。 我们现在可以看到车辆有越来越多的功能&#xff0c;那么这些功能呢&#xff0c;也在往这个控制器上进行集中&#xff0c;比如说我们现…...

C++初阶(三)

文章目录 一、auto关键字(C11)1、auto简介2、auto使用规则1、 auto与指针和引用结合起来使用2、 在同一行定义多个变量 3、auto不能推导的场景1、 auto不能作为函数的参数2、 auto不能直接用来声明数组3、特性总结 二、基于范围的for循环(C11)1、范围for的语法2、 范围for的使用…...

PHP的学习入门建议

学习入门PHP的步骤如下&#xff1a; 确定学习PHP的目的和需求&#xff0c;例如是为了开发网站还是为了与数据库交互等。学习PHP的基础语法和程序结构&#xff0c;包括变量、数据类型、循环、条件等。学习PHP的面向对象编程&#xff08;OOP&#xff09;概念和技术。学习与MySQL…...

骰子涂色(Cube painting, UVa 253)rust解法

输入两个骰子&#xff0c;判断二者是否等价。每个骰子用6个字母表示&#xff0c;如图4-7所示。 例如rbgggr和rggbgr分别表示如图4-8所示的两个骰子。二者是等价的&#xff0c;因为图4-8&#xff08;a&#xff09;所示的骰子沿着竖直轴旋转90之后就可以得到图4-8&#xff08;b&a…...

elasticsearch的docker安装与使用

安装 docker network create elasticdocker pull docker.elastic.co/elasticsearch/elasticsearch:8.10.4# 增加虚拟内存&#xff0c; 此处适用于linux vim /etc/sysctl.conf # 添加 vm.max_map_count262144 # 重新启动 sysctl vm.max_map_countdocker run --name es01 --net …...

ELK 单机安装

一丶软件下载 elasticsearch: https://www.elastic.co/downloads/past-releases kibana: https://www.elastic.co/downloads/past-releases 选择对应的版本的下载即可 二、es 安装es比较简单 rpm -ivh elasticsearch-2.4.2.rpm 修改配置文件 /etc/elasticsearch/elas…...