使用 Inno Setup 打包和处理单个大文件
使用 Inno Setup 打包和处理单个大文件
在软件开发和分发过程中,尤其是涉及到大文件(如模型文件、数据文件等)的场景,如何高效地打包和处理这些文件是一个常见的问题。本文将介绍如何使用 Inno Setup 打包单个大文件,并在安装过程中对其进行处理(如合并分块文件)。
为什么需要分块和合并大文件?
在某些情况下,单个大文件可能需要被拆分成多个小文件进行分发,例如:
文件大小限制:某些文件系统或传输协议对单个文件的大小有限制。
压缩优化:分块文件可以更好地利用压缩算法的优势。
安装灵活性:分块文件可以按需加载或合并,减少安装包的复杂性。
通过 Inno Setup,我们可以轻松实现以下功能:
将分块文件打包到安装包中。
在安装过程中自动合并分块文件为原始大文件。
安装完成后清理分块文件,保持安装目录整洁。
准备工作
1. 拆分大文件
在打包之前,我们需要将大文件拆分为多个分块文件。以下是一个 Python 脚本,用于将大文件拆分为指定大小的分块文件。
Python 拆分脚本
12345678910111213141516171819202122232425262728 ...
Git subtree使用
1. 添加子仓库地址
1git remote add SubTree-origin http://192.168.50.200:3000/330/SubTree.git
2. 使用 subtree 添加子树
1git subtree add -P SubTree SubTree-origin master --squash
注意:--squash 会把所有提交合并成一条提交,如果使用了此选项,在后续的其他命令也应使用 --squash,以保持提交记录的线性,否则可能会出现分支落后的问题。
3. 从子仓库拉取更新
当子仓库有新的提交时,可以使用以下命令将最新的更改拉取到主仓库中:
1git subtree pull -P SubTree SubTree-origin master --squash
说明:
git subtree pull:从指定的远程仓库拉取子树的更新。
-P SubTree:指定子树的路径。
SubTree-origin:远程子仓库的名称。
master:子仓库的目标分支。
--squash:将所有拉取的提交压缩成一个提交,以保持主仓库的提交历史简洁。
...
Doxygen使用 - 自动生成文档
Doxygen 介绍
Doxygen 是一个用于生成文档的工具,主要用于 C++、C、Objective-C、C# 和其他类似语言的代码。它可以根据代码中的注释生成各种格式的文档,包括 HTML、LaTeX、RTF 等。Doxygen 支持多种注释风格,支持 JavaDoc 和 Qt 风格的注释。
通过在代码中添加特定格式的注释,如函数说明、参数说明、返回值说明等,Doxygen 可以根据这些注释生成易于阅读的文档,帮助开发人员更好地理解代码的结构和功能。它还可以生成调用图、继承图等可视化工具,帮助开发人员更好地理解代码之间的关系。
Doxygen 是一个功能强大且灵活的工具,广泛用于各种开源项目和商业项目中,帮助开发团队更好地管理和维护其代码库。
Doxygen的安装(通常只需要一台电脑安装进行文档的生成)
Doxygen官方文档
特定注释风格
这里介绍JavaDoc注释格式。写代码时应遵循以下特定格式进行注释。
JavaDoc注释格式
JavaDoc 注释块以 /** 开始,以 */ 结束,通常位于类、方法、字段、构造函数等的前面。以下是常用的 JavaDoc 标签 ...
git使用规范以及VS的Git图形化操作
团队有使用git的需求,这时我平时的一个流程,记录下来。
git使用规范
1. git clone仓库后应立即建立自己的开发分支,自己命名即可,例如
克隆仓库
1git clone xxxx.git
创建并切换分支
1git checkout -b develop
后续可以在自己分支上就行开发修改。!!!但是一定要注意就行任何操作之前一定要进行提交!!!,如以下命令提交所有文件
12git add .git commit -m "你的提交备注"
只有任何操作之前进行提交才能保证数据安全不会丢失,都可找回!!!
2. git 在本地合并上传自己的代码
!!!在合并之前最规范的行为应该是保证本地master/main分支(即克隆下来的默认分支)和远程仓库保持同步!!!
切换分支并拉取合并最新代码,pull命令会自动和本地合并,也可自己fetch在手动合并,在切换分支之前记得提交当前分支,如上
12git checkout mastergit pull
合并本地开发分支到本地master
1git merge develop
这时会发生冲突,如图
这个时候就需要到对应文件手动合并冲突,可以 ...
MFC中CString转换成C风格字符串宏和string
前言
在MFC中经常需要CString, const char *, string的转换,这里记录一种通过宏转换的方法。
宏函数
12345678#ifdef _UNICODE#define CString2C_Str(pStr, pC_Str) \ CT2A pszConvertedAnsiString##pStr(pStr); \ const char* pC_Str = pszConvertedAnsiString##pStr; #else #define CString2C_Str(pStr, pC_Str) \ const char* pC_Str = pStr.GetString(); #endif
使用
1234CString str = _T("测试");CString2C_Str(str, str_c_str);std::cout << str_c_str;std::string strCpp(str_c_str);
该封面图片由D Muller在Pixabay上发布
Oracle数据库通过oci插入和查询CLOB超长文本数据
前言
在处理大型文本数据时,Oracle 数据库的 CLOB(Character Large Object)类型非常有用。使用 Oracle Call Interface(OCI)可以高效地将超长文本插入到数据库中。本篇文章将展示如何使用 OCI 插入超长文本到 Oracle 数据库的 CLOB 字段中。
插入CLOB数据
建立表
1234CREATE TABLE Components ( name VARCHAR() clob_column CLOB);
插入数据代码
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117#include < ...
C++调用Python程序
由于有用C++调用Python程序的需求,本文记录一种可行的方式,采用cpython打包库,在C++中加载解释器调用程序。
准备工作
安装CPython
1pip install cython
示例过程
建立一个.pyx文件用于暴露接口。如example.pyx
12345678# example.pyxcdef extern from "math.h": double sqrt(double x)def c_sqrt(double x): return sqrt(x)
创建一个setup.py文件,用于构建Cython代码成为一个可被C++调用的扩展模块
1234567from setuptools import setupfrom Cython.Build import cythonizesetup( ext_modules=cythonize("example.pyx"),)
构建生成拓展模块
1python setup.py build_ext --inplace
此时会产生如下文件结构,example.cp39-win_amd64.pyd这将是被 ...
Tensorflow lite for microcontroller keil编译处理
在用keil编译Tensorflow lite for microcontroller时,遇到了一些寻找依赖库的问题,现记录。
123456789$ make -f tensorflow/lite/micro/tools/make/Makefile third_party_downloads$ ls tensorflow/lite/micro/tools/make/downloads/flatbuffers/gemmlowp/kissfft/person_model_grayscale/person_model_int8/pigweed/ruy/
通过上述命令下载第三方抵赖并添加到keil包含目录中。但并未下载gemmlowp库导致编译报错missing include fixedpoint.h。可以通过手动下载gemmlowp储存库添加到包含目录解决。
下载地址可以到E:\tflite-micro\tensorflow\lite\micro\tools\make\third_party_downloads.inc找到。
该封面图片由Tonda Tran在Pixabay上发布
FDTD笔记
FDTD
FDTD简介
时域有限差分方法基本方程
麦克斯韦方程组
本构关系
把电流密度写成导体电流密度和施加电流密度之和,同样对磁流密度也就行分解,重写麦克斯韦方程:
上面的方程仅设计电磁场和,而为涉及通量密度矢量和。公式中出现了四个本构关系参量,所以只能描述任意线性、各向同性的媒质。虽然FDTD公式中未出现散度方程,但是可以用来检测仿真结果。
在三维空间中把方程分解为3个标量方程。得到:
导数的近似差分
前向差分公式
后向差分公式
中心差分公式
其中前向差分和后向差分公式具有一阶精度,但是中心差分公式具有二阶精度。
二阶导数的近似差分
中心差分公式
三维问题的FDTD更新方程
FDTD 技术将三维问题的几何结构分解为单元,以构成相应的网格。下图示出由()个Yee 单元构成的网格。使用矩形 Yee 单元,以单元的大小作为分辨率,用阶跃或阶梯形式来近似表面和内部几何结构。
下图示出了标志为的 Yee 单元方式中离散空间各场分量位置。电场分量放置在 Yee 单元各棱的中间,平行于各;磁场分量放置在 Yee 单元各面的中心,平行于各面的法线。
令Yee单元的尺寸分别为,,,可 ...
外网远程唤醒Windows--群晖
电脑平时虽然不关机,但有时候会因为一些原因关机了,之前设置了来电自启。但是短时间断电或者其他原因造成的关机并不会自动唤醒,故而打算通过群晖实现远程Wake-on-LAN。
准备
一、一台群晖
二、本文的步骤会很详细,但是仍然假设你有一定Windows和Linux使用经验。
BIOS开启WOL
具体操作根据主板厂商操作不同,可自行百度。
Windows设置
右击Windows徽标找到设备管理器
找到网络适配器,双击网卡-->电源管理-->打开图中设置
到这里,Windows的设置基本完成,有的还需要到电源计划里开启快速启动。
群晖通过docker部署WOL
群晖使用docker
1.打开群晖套件中心搜索下载图中软件(docker)。
注册表搜索下载wol,这里我用的jazzdd/wol。
下载好后直接到映像运行。
这里注意不要勾选启用自动重新启动
这里需要设置两个东西,一个是环境里的mac地址,一个是网络使用host网络(忘记标注了图片)
max地址直接打开cmd输入命令ipconfig /all就能看到,但是注意网卡,不要选到虚拟机什么的。
之后直接一直完成 ...
转发Windows远程桌面远程连接--群晖
由于教研室路由器烧了,用了老路由器,并不支持ipv6,但是想实现Windows远程桌面访问,想到还有一台群晖,故用dockers来部署frp实现。
准备
一、三台设备
设备 A, Windows, 为你用来远程连接的电脑。
设备 B, Linux, 有公网 IP,我这里用的是白群晖。
设备 C, Windows, 被远程连接的电脑。
如果不满足第二个条件,那么,拜拜~~
二、本文的步骤会很详细,但是仍然假设你有一定Windows和Linux使用经验。 FRP(Fast Reverse Proxy)是一个高性能的反向代理应用,用于帮助用户快速地将本地服务暴露给互联网或其他网络。它主要用于内网穿透,允许从公网安全访问处于NAT或防火墙后的内网服务。FRP特别适合于个人或小型企业在没有公网IP或者无法进行复杂路由器配置的情况下,实现远程访问内网资源。
FRP的主要组件:
frps(Server端):部署在具有公网IP的服务器上,作为转发的中转。
frpc(Client端):部署在内网的机器上,用于连接frps,并将内网服务通过frps转发出去。
应该重点理解frpc和frps的作用, ...
成电813简答题
1.介质在外电场的作用下发生极化的物理机制是什么?受到极化的介质一般具有什么样的宏观特征(6次)
物理机制:在外电场的作用下,无极分子中的正电荷沿电场方向移动,负电荷逆电场方向移动,导致正负电荷中心不再重合形成许多沿外电场方向有序排列的电偶极子,它们对外产生的电场不再为0。对于有极分子,它的每个电偶极子在外电场的作用下要产生转动,使每个电偶极子沿外电场方向有序排列,它们对外产生的电场也不再为0。
宏观特征(2次):在电介质内部和表面上就可能会出现宏观电荷分布。
2.简述静电场边值问题的唯一性定理,它的意义何在?(3次)
唯一性定理(静电场):在场域的边界面上给定电位函数的值或电位函数的法向导数的值,则电位函数的泊松方程或拉普拉斯方程在场域内具有唯一解。
意义:首先,它指出了静电场边值问题具有唯一解的充分必要条件,只要在边界面 上的每一点给定电位函数的值或法向导数的值,则场域内的电位函数就唯一地确定了。其次,唯一性定理也为静电场边值问题的各种求解方法提供了理论依据,为求解结果的正确性提供了判据。
举例说明唯一性定理在求解边值问题中的重要作用:镜像法,只要镜像电荷与原电荷产生的电场满足原 ...
wslg安装gnome和Qt
前言
在win10安装wsl中我们安装了Ubuntu,这时安装qt会报错
1Full message -- "./gpt4all-0.1.0-Linux.run: error while loading shared libraries: libxcb-xinerama.so.0: cannot open shared object file: No such file or directory"
这时我们运行命令
1sudo apt install libxcb-xinerama0 libxcb-cursor0
并没有任何作用,这时我通过安装gnome桌面解决了此问题。
安装gnome
开启systemd
由于gnome依赖systemd,所以我们应先安装systemd,在新版wsl2中已经支持了systemd,我们可以通过如下方式开启:
方法一:这里我安装之后遇到了其他问题,最后解决了,参考
方法二:
1sudo nano /etc/wsl.conf
添加下述文本
12[boot]systemd=true
关闭wsl
1wsl --shutdown
重新开启虚拟 ...
wslg在win10的安装
前言
WSLg(Windows Subsystem for Linux GUI)是Windows Subsystem for Linux(WSL)的一个增强功能,允许在Windows操作系统上运行Linux图形用户界面(GUI)应用程序。WSLg的目标是提供更好的性能和兼容性,以使Linux GUI应用程序在Windows上的运行更加流畅和自然。
以下是WSLg的一些主要特点和功能:
完整的Linux图形支持: WSLg提供了完整的X服务器支持,允许Linux GUI应用程序在Windows桌面上运行。这包括支持X11和Wayland等图形协议。
性能优化: WSLg针对图形性能进行了优化,以提供更快的图形渲染和更流畅的用户体验。它还支持硬件加速,以进一步提高性能。
集成Windows和Linux桌面: WSLg允许在Windows和Linux之间共享剪贴板内容,并支持文件拖放操作,使得在两个操作系统之间传输数据更加方便。
跨发行版兼容性: WSLg不限于特定的Linux发行版,因此可以在各种不同的WSL发行版上运行。这意味着用户可以选择自己喜欢的Linux发行版,并在其中运行GUI ...
github+cloudflare搭建图床并实现加速
前言
当处于小图床容易跑路,云服务商oss储存又不想花钱的尴尬处境上,故想用GitHub作为免费图床托管,cloudflare进行代理加速实现图床搭建。
方案的主要思路是使用 Cloudflare 的 Workers 来代理 github 私有仓库中文件的地址,并绑定自己的域名进行使用。该方案主要优势是:
Github 服务稳定,不会跑路。
使用的是 Github 的私有仓库,存储里的文件列表并不会像公开仓库一样全部对外暴露,有一定的安全性。
使用自己的域名,方便以后可能的服务迁移。
免费:GitHub和Cloudflare都提供免费的基本服务,这意味着你可以使用它们搭建图床而不需要额外的费用。
稳定性和可靠性:GitHub和Cloudflare都是知名的服务提供商,拥有稳定的基础架构和高可用性。GitHub 文件托管服务,在稳定性和可靠性方面表现良好。Cloudflare的CDN服务可以加速图像加载,提高用户体验。
全球分发:通过使用Cloudflare的CDN,你的图片可以在全球范围内快速分发,减少加载时间并提升访问速度。
自定义域名:你可以使用自己的域名来访问图床,这为你的图床 ...
smms图床图片导出——Python爬虫
前言
由于最近smms不太稳定,有时候会访问慢、加载慢,故决定迁移图床,但是smms没有提供批量操作的功能,故从开发者文档寻找突破,采用爬虫爬取。
coding
开发者文档,从开发者文档我们拿到了请求头部 headers 、url以及返回的数据,这对于我们编写程序就很容易了。
代码
123456789101112131415161718192021222324252627282930313233import requests# 替换为你的smms图床API Tokenapi_token = "****"# API请求地址api_url = "https://sm.ms/api/v2/upload_history?page=1"# 设置请求头部headers = { "Authorization": f"{api_token}", "Content-Type": "multipart/form-data"}# 发送GE ...