vault backup: 2026-01-23 10:13:08

This commit is contained in:
2026-01-23 10:13:08 +08:00
parent 3008b13223
commit 95eca20d0d
34 changed files with 686 additions and 45 deletions

View File

@@ -8,18 +8,18 @@
"type": "tabs",
"children": [
{
"id": "53c9f5efa5aa3efd",
"id": "fc295192ba96dde5",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "Collection/YoudaoyunNotes/02C语言/04-运算符.md",
"mode": "source",
"file": "Article/Studyroad/vivado_ip.md",
"mode": "preview",
"source": false,
"backlinks": false
},
"icon": "lucide-file",
"title": "04-运算符"
"title": "vivado_ip"
}
}
]
@@ -89,13 +89,13 @@
"state": {
"type": "outline",
"state": {
"file": "Collection/YoudaoyunNotes/02C语言/04-运算符.md",
"file": "Article/Studyroad/vivado_ip.md",
"followCursor": true,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-list",
"title": "04-运算符 的大纲"
"title": "vivado_ip 的大纲"
}
},
{
@@ -243,13 +243,44 @@
"pdf-plus:PDF++: 切换自动粘贴": false,
"pdf-plus:PDF++: 切换自动对焦": false,
"pdf-plus:PDF++: 切换自动复制": false,
"i18n:I18N": false,
"publish:发布更改": false
"i18n:I18N": false
}
},
"active": "53c9f5efa5aa3efd",
"active": "fc295192ba96dde5",
"lastOpenFiles": [
"Article/Studyroad/vivado_ip_img/IPCore17.png",
"YueQian/相关网站.md",
"Diary/2026-1/2026-1-23 周五.md",
"Collection/YoudaoyunNotes/02C语言/03-数据类型及IO流.md",
"Article/Studyroad/vivado_ip_img/IPCore02.png",
"Article/Studyroad/vivado_ip_img/IPCore03.png",
"Article/Studyroad/vivado_ip_img/IPCore09.png",
"Article/Studyroad/vivado_ip_img/IPCore08.png",
"Article/Studyroad/vivado_ip_img/IPCore06.png",
"Article/Studyroad/vivado_ip_img/IPCore10.png",
"Article/Studyroad/vivado_ip_img/IPCore13.png",
"Article/Studyroad/vivado_ip_img/IPCore16.png",
"Article/Studyroad/vivado_ip_img/IPCore01.png",
"Article/Technology/飞牛搭配mtphotos使用passnet内网穿透服务优雅快速的分享照片访问.md",
"Article/Technology/在ARM架构的Ubuntu中使用Docker Compose部署MTPhotos.md",
"Article/Technology/navidrome.md",
"Article/Technology/Debian从零开始使用pnpm部署项目.md",
"Article/Technology/MarkdownTest.md",
"Article/Technology/NFC_Card.md",
"Article/Technology/安装AD2025学习版.md",
"Article/Technology/通过SSH密钥连接LINUX服务器.md",
"Article/Technology/docker的容器和镜像的删除操作.md",
"Article/Studyroad/vivado_ip.md",
"Page/友情链接.md",
"Page/关于与声明.md",
"README(Acer的冲突副本1_2026-01-23 08-56-09).md",
"Article/Studyroad/vivado_ip_img",
"Article/Record",
"Article/Technology",
"Article/Studyroad",
"Page",
"Article",
"Collection/YoudaoyunNotes/02C语言/04-运算符.md",
"Collection/YoudaoyunNotes/02C语言/02-C语言入门.md",
"Collection/YoudaoyunNotes/02C语言/14-预处理与文件组织.md",
"Collection/YoudaoyunNotes/02C语言/15-静态库与动态库.md",
@@ -258,42 +289,10 @@
"Collection/YoudaoyunNotes/02C语言/11-内存管理.md",
"Collection/YoudaoyunNotes/02C语言/10-函数进阶.md",
"Collection/YoudaoyunNotes/02C语言/09-数组与指针进阶.md",
"Collection/YoudaoyunNotes/02C语言/08-指针.md",
"Collection/YoudaoyunNotes/02C语言/07-数组.md",
"Collection/YoudaoyunNotes/02C语言/06-函数基础.md",
"Collection/YoudaoyunNotes/02C语言/05-控制与分支.md",
"Collection/YoudaoyunNotes/02C语言/04-运算符.md",
"Collection/YoudaoyunNotes/02C语言/attachments/WEBRESOURCE40a76a7d230733292ec04717f3f6f254编程规范.pdf",
"Collection/YoudaoyunNotes/02C语言/01-C语言概述.md",
"Collection/YoudaoyunNotes/02C语言/[01-拓展]printf输出颜色与字体控制.md",
"YueQian/MarkdownNotes/CQ2605/01Linux基础/06_常用Shell命令.md",
"Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCEf9401753ae5405e97b73dbc1662bfc9001416f17412c415232ef6faf014cdff5.png",
"Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCEfb6a239bed5b462a85fa7ec4382c92210d7713ba345e0119c37b9a76eb31bf65.png",
"Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCEf54011d029f949fe3f754b46aa3853cbfc1fc8c6aeff83d2c08b1198d0df3ed6.png",
"Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCEf305530c183d4d1682bc4b1fe628e14fstickPicture.png",
"Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCEf043bb345ce02a43791f1afe7466e30dimage.png",
"Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCEed95cb4bf9a6bdd870ada0859f790dcastickPicture.png",
"Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCEebddd934ca1e421cb558c4c92f7d53f3截图.png",
"Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCEeb0dc101742ac85592adc21845b91dab6f8df56f18a43f648269080ac22c4c87.png",
"Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCEea237a3e83f613d86fdfed8580c001c5image.png",
"Collection/YoudaoyunNotes/02C语言/images/WEBRESOURCEe80dc3d48db078411a57b515668d8e57image.png",
"Collection/YoudaoyunNotes/02C语言/attachments/WEBRESOURCEf8f411dd54c53da227a89fc7031bb0c7terminal_colors.h",
"Collection/YoudaoyunNotes/02C语言/attachments/WEBRESOURCEd71090e9d6659f19f9b36c93099793f4指针与数组作业.doc",
"Collection/YoudaoyunNotes/02C语言/attachments/WEBRESOURCEd160cdba37fb5f6e6e853a57af52b227数组与指针作业.doc",
"Collection/YoudaoyunNotes/02C语言/attachments/WEBRESOURCEc2ef36702a6ecf7e2169723a2d147b08结构体测试题.docx",
"Collection/YoudaoyunNotes/02C语言/attachments/WEBRESOURCEbbcc325c1c1c565fa7dbe4f13a3f2f9d运算符1.docx",
"Collection/YoudaoyunNotes/02C语言/attachments/WEBRESOURCEa2d88b6292b52c177b4bc6323a5bdd07函数作业题.docx",
"Collection/YoudaoyunNotes/02C语言/attachments/WEBRESOURCE94606765850c0696e801236ba49014a2函数练习题.docx",
"Collection/YoudaoyunNotes/02C语言/attachments/WEBRESOURCE757c8acbaa371ecec8cc55fab8756448运算符测试.docx",
"Collection/YoudaoyunNotes/02C语言/attachments/WEBRESOURCE224e5f8aa53ceb5fc88f45d79932378a内存管理测试题.docx",
"Collection/YoudaoyunNotes/01Linux基础/06_常用Shell命令.md",
"Collection/YoudaoyunNotes/01Linux基础/05_网络配置.md",
"Collection/YoudaoyunNotes/01Linux基础/04_命令行编辑与编译.md",
"Collection/YoudaoyunNotes/01Linux基础/03_文件互通.md",
"Collection/YoudaoyunNotes/01Linux基础/02_Linux概述.md",
"Collection/YoudaoyunNotes/01Linux基础/01-开发环境安装.md",
"Collection/YoudaoyunNotes/01Linux基础/00-简介.md",
"Collection/CQ2605/02C语言/[01-拓展]printf输出颜色与字体控制.md",
"YueQian/Homework/未命名.canvas",
"Excalidraw/未命名.canvas",
"未命名.canvas"

View File

@@ -0,0 +1,112 @@
# Vivado使用乘法器、除法器IP核实现乘除取余仿真
### 环境
Vivado 20.2
## 添加并配置IP核
1. 打开vivado找到对应IP核如下图
![](./vivado_ip_img/IPCore01.png)
2. 先双击除法器IP核进入配置页面如下图
![](./vivado_ip_img/IPCore02.png)
![](./vivado_ip_img/IPCore03.png)
除法器配置默认即可点击OK后弹出界面点击Generate
如下图即配置完成
![](./vivado_ip_img/IPCore04.png)
3. 配置乘法器IP核
![](./vivado_ip_img/IPCore05.png)
上图使用十六位有符号数与十六位无符号数进行运算
![](./vivado_ip_img/IPCore06.png)
上图输出32位间隔一个周期得到结果电脑性能不佳可适当增加
4. 如下图即配置完成
![](./vivado_ip_img/IPCore07.png)
## 添加并编写仿真代码文件
1. 选择一个文件夹创建例如ipcore_test.v文件
2. 添加文件到vivado
![](./vivado_ip_img/IPCore08.png)
![](./vivado_ip_img/IPCore09.png)
找到自己创建的.v文件路径并添加
3. 完成如下图
![](./vivado_ip_img/IPCore10.png)
4. 复制示例代码
![](./vivado_ip_img/IPCore11.png)
双击打开.veo 示例代码文件
![](./vivado_ip_img/IPCore12.png)
复制上图红框中的代码到自己的仿真文件,如下图我这是外部编辑器vivado自带编辑器同理
![](./vivado_ip_img/IPCore13.png)
上图的module与endmodule需要自己添加
如下图可以看到除法器IP核在你自己的代码文件之下表示被正确调用
![](./vivado_ip_img/IPCore14.png)
乘法器同理,打开.veo文件复制代码
![](./vivado_ip_img/IPCore15.png)
![](./vivado_ip_img/IPCore16.png)
示例代码复制完成后如下图这里我更改了实例名称u_ 开头,不改没影响)
![](./vivado_ip_img/IPCore17.png)
5. 最后自己补全仿真代码,我这里这样写
```verilog
`timescale 1ns / 1ps
module tb_ipcore_test();
reg clk; //时钟变量
reg signed [15:0] A; //有符号因数数据
reg unsigned [15:0] B; //无符号因数数据
wire signed [31:0] P; //乘法器结果
reg dividend_tvalid; //被除数有效使能,高为有效,低为无效
reg signed [15:0] dividend_tdata; //被除数数据
reg divisor_tvalid; //除数有效使能,高为有效,低为无效
reg signed [15:0] divisor_tdata; //除数数据
wire dout_tvalid; //输出电平,高为正确输出,低为错误输出
wire [31:0] dout_tdata; //除法器结果
wire signed [15:0] quotient; //商
wire signed [15:0] remainder; //余数
mult_gen_0 u_mult_gen_0 (
.CLK(clk), // input wire CLK
.A(A), // input wire [15 : 0] A
.B(B), // input wire [15 : 0] B
.P(P) // output wire [31 : 0] P
);
div_gen_0 u_div_gen_0 (
.aclk(clk), // input wire aclk
.s_axis_divisor_tvalid(divisor_tvalid), // input wire s_axis_divisor_tvalid
.s_axis_divisor_tdata(divisor_tdata), // input wire [15 : 0] s_axis_divisor_tdata
.s_axis_dividend_tvalid(dividend_tvalid), // input wire s_axis_dividend_tvalid
.s_axis_dividend_tdata(dividend_tdata), // input wire [15 : 0] s_axis_dividend_tdata
.m_axis_dout_tvalid(dout_tvalid), // output wire m_axis_dout_tvalid
.m_axis_dout_tdata(dout_tdata) // output wire [31 : 0] m_axis_dout_tdata
);
assign quotient = dout_tdata[31:16]; //除法器16位余数模式高16位是商低十六位是余数
assign remainder = dout_tdata[15:0];
always #5 clk = ~clk; //10ns周期时钟
initial begin
clk = 0;
A = 16'h7FFF;
B = 16'hFFFF;
dividend_tvalid = 1;
dividend_tdata = 16'h7FFF;
divisor_tvalid = 1;
divisor_tdata = 16'hFFFF;
#300;
A = 16'h8001;
B = 16'h0001;
dividend_tvalid = 1;
dividend_tdata = 16'h8001;
divisor_tvalid = 1;
divisor_tdata = 16'hFFFF;
#300;
$finish;
end
endmodule
```
6. 结果分析
选中除B之外的所有变量调整为有符号的十进制B调整为无符号的十进制数
![](./vivado_ip_img/IPCore19.png)
下图可以看到,乘法器得到数据(一开始),在第一个周期得到结果,除法器得到数据,在第二十个周期得到结果
![](./vivado_ip_img/IPCore18.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

View File

@@ -0,0 +1,48 @@
## 安装nodejs22+环境
### 使用使用 NodeSource
首先,添加 NodeSource 的 PPA个人包存档
```shell
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
```
然后安装nodejs
```shell
apt-get install -y nodejs
```
### 使用n管理器
如果你想使用 n 管理器安装最新版本,可以先安装 n
```shell
npm install -g n
```
然后使用 n 安装 Node.js 22
```shell
n 22
```
### 验证安装
安装完成后,可以通过以下命令验证 Node.js 是否安装成功
```shell
node -v
```
## 安装pnpm
### 若已安装npm
版本不确定
```shell
npm install -g pnpm
```
### 使用独立脚本安装不用安装nodejs
Windows PowerShell
```shell
Invoke-WebRequest https://get.pnpm.io/install.ps1 -UseBasicParsing | Invoke-Expression
```
在POSIX系统上
```shell
curl -fsSL https://get.pnpm.io/install.sh | sh -
# 或者使用
# wget -qO- https://get.pnpm.io/install.sh | sh -
```
安装特定的版本
在运行安装脚本之前,你可以选择设置环境变量 PNPM_VERSION 来安装特定版本的 pnpm
```shell
curl -fsSL https://get.pnpm.io/install.sh | env PNPM_VERSION=<version> sh -
```

View File

@@ -0,0 +1,71 @@
# 这是一级标题
## 这是二级标题
### 这是三级标题
- 无序列表项1
- 无序列表项2
- 嵌套无序列表项
- 无序列表项3
1. 有序列表项1
2. 有序列表项2
3. 有序列表项3
**加粗文本**
*斜体文本*
***加粗斜体文本***
~~删除线文本~~
==高亮文本1==
<mark>高亮文本2</mark>
^上角标^ 角标 ~下角标~
<u>下划线</u>
- [ ] 代办
- [x] 已办
> 这是一段引用内容
> 引用内容可以换行
>>引用嵌套
行内公式: $f(x)=a-b$
公式:
$$
f(x)=a-b
$$
| 表头1 | 表头2 | 表头3 |
|-------|-------|-------|
| 内容1 | 内容2 | 内容3 |
| 内容4 | 内容5 | 内容6 |
[链接文字](https://example.com)
`单行代码`
```python
# 多行代码块
def hello\_world():
print("Hello, World!")
```
---
分割线以上是测试内容
分割线以下也是测试内容
![图片替代文本](https://picsum.photos/200/300 "随机的图片")

View File

@@ -0,0 +1,2 @@
# 前言
最近迷上了三角洲

View File

@@ -0,0 +1,30 @@
# Docker容器和镜像的删除操作
## 容器和镜像的关系
简单来说,镜像是文件,容器是进程。
容器是基于镜像创建的,即容器中的进程依赖于镜像中的文件。
docker利用容器来运行应用docker容器是由docker镜像创建的运行实例。
![容器与镜像](https://i-blog.csdnimg.cn/blog_migrate/1239ccc5a805c44d9ecb6bc844ac9457.jpeg)
### 删除镜像的操作步骤
#### 一、停止正在运行的镜像创建的容器
查看正在运行的容器
```shell
docker ps
```
停止对应容器
```shell
docker stop xxx
```
xxx 是 docker ps 命令出来的容器 CONTAINER ID 的前三位
删除对应的容器
```shell
docker rm xxx
```
查看镜像
```shell
docker images
```
同理yyy 是 docker images 命令出来的镜像 IMAGE ID 的前三位
删除对应的镜像
```shell
docker rmi yyy
```

View File

@@ -0,0 +1,5 @@
# 启用用户界面中的转码配置
ND_ENABLETRANSCODINGCONFIG = true
# 配置ffmpeg路径
FFmpegPath = "/usr/bin/ffmpeg"

View File

@@ -0,0 +1,166 @@
# 在ARM架构的Ubuntu中使用Docker Compose部署MTPhotos
## 前言
之前我总是使用1panel面板的Docker进行图形化的操作直到有一天我遇到了一个需要三个镜像配合的项目——MTPhotos
为什么会使用mtphotos呢我以前都是使用老电脑装飞牛OS当作NAS使用但是飞牛OS哪哪都挺好就是不支持vivo的动态图片相册里的动态图片是一张jpg一段MP4看得我脑阔痛而且用X86的核显老电脑安装飞牛OS视频转码压根跑不动如此一来偌大个飞牛就只用来当云相册用有点心疼电费我就把目光投向了角落的Nanopi-R5S
好在[友善官方](https://wiki.friendlyelec.com/wiki/index.php/NanoPi_R5S/zh "友善官方R5S中文文档")一直在更新R5S的各种固件有OpenWRT有Ubuntu有Debian甚至还有Proxmox的固件我就准备用Ubuntu装个MTPhotos来试试
## 准备工作
### 将R5S刷入ubuntu-noble-core固件
线刷方便得鸭皮,没有 USBA-A 的线材也可以使用卡刷,具体看上方友善官方文档
### 装个m.2硬盘进去当docker的镜像盘
mtphotos有三个镜像文件需要七八个G
### 安装个[Mobaxtrem汉化版](https://github.com/RipplePiam/MobaXterm-Chinese-Simplified "Mobaxtrem汉化版GitHub仓库")方便文件传输和SSH连接
SSH用户是 pi 密码也是
## 正式开始部署
### 初始化Ubuntu
首先当然是Linux初始化套路
登录切root用户懒得加sudo密码是 pi
```shell
sudo -i
```
#### 改时区
```shell
timedatectl set-timezone Asia/Shanghai
```
#### 换源
Ubuntu 24.04 换源方式有变
```shell
vim /etc/apt/sources.list.d/ubuntu.sources
```
用 # 注释掉之前的所有内容,添加如下内容
```shell
Types: deb
URIs: http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/
Suites: noble noble-updates noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
```
X86架构不需要添加 URIs 条目后的 -ports
#### 更新
```shell
apt update && apt upgrade -y
```
### 挂载m.2硬盘
安装 curl 和 fdisk
```shell
apt install curl fdisk -y
```
查看当前m.2硬盘路径
```shell
fdisk -l
```
格式化硬盘
```shell
mkfs.ext4 /dev/nvme0n1
```
/dev/nvm10n1 是上一步查看到的对应的m.2硬盘路径
获取硬盘UUID
```shell
blkid /dev/nvme0n1
```
创建挂载文件夹
```shell
mkdir /nvme
```
编辑自动挂载文件
```shell
vim /etc/fstab
```
格式如下
```shell
UUID=xxxx /nvme ext4 defaults 0 0
```
xxxx 为 blkid /dev/nvme0n1 命令获取的 UUID="xxxx" 的内容
重启
```shell
reboot
```
### 安装并启动Docker和Docker compose
更新包管理工具
```shell
apt-get update
```
使用官方一键安装脚本配合阿里云镜像一键安装
```shell
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
```
启动并查看运行状态
```shell
service docker start
docker version
docker compose version
systemctl status docker
```
### 配置Docker镜像加速和镜像存放路径
```shell
vim /etc/docker/daemon.json
```
按 I 进入编辑模式,配置如下
```shell
{
"registry-mirrors": ["https://docker.xuanyuan.me","https://docker.1panel.live"],
"data-root": "/nvme/docker"
}
```
按 Esc 退出编辑模式,输入 :wq 保存并退出
重载daemon.json文件
```shell
systemctl daemon-reload
systemctl restart docker
```
### 如果一切顺利那么该安装mtphotos了
创建个目录
```shell
mkdir /opt/mtphotos
```
进入
```shell
cd /opt/mtphotos
```
创建并编辑docker-compose.yaml文件
```shell
vim docker-compose.yaml
```
按 I 进入编辑模式并填入以下内容
```yaml
version: "3"
services:
mtphotos:
image: registry.cn-hangzhou.aliyuncs.com/mtphotos/mt-photos:arm-latest
container_name: mtphotos
restart: unless-stopped
network_mode: host
volumes:
- /opt/mtphotos/config:/config
- /nvme/mtphotos/upload:/upload
environment:
- TZ=Asia/Shanghai
- LANG=C.UTF-8
dns:
- 114.114.114.114
depends_on:
- mtphotos_ai
- mtphotos_face_api
mtphotos_ai:
image: registry.cn-hangzhou.aliyuncs.com/mtphotos/mt-photos-ai:arm-latest
container_name: mtphotos_ai
restart: unless-stopped
network_mode: host
environment:
- API_AUTH_KEY=mt_photos_ai_extra
mtphotos_face_api:
image: crpi-gcuyquw9co62xzjn.cn-guangzhou.personal.cr.aliyuncs.com/devfox101/mt-photos-insightface-unofficial:arm-latest
container_name: mtphotos_face_api
restart: unless-stopped
network_mode: host
environment:
- API_AUTH_KEY=mt_photos_ai_extra
```
按 Esc 退出编辑模式,输入 :wq 保存并退出
拉取运行
```shell
docker compose up -d
```
## 如果一切顺利,那么到此结束

View File

@@ -0,0 +1,9 @@
# 安装Altium Designer 25.4.2 Build 15 (x64)学习版
### 确认文件
打开Altium Designer 25.4.2 Build 15 (x64).rar压缩包确认里面有 !Lic 文件夹和 Installer.Exe安装程序 !Lic 文件夹中应有四个 .alf 证书文件和一个shfolder.dll文件以及一个Lic.rar压缩包防误删备份
### 安装AD
进入解压出的Altium Designer 25.4.2 Build 15 (x64)文件夹右键以管理员身份运行Installer.Exe安装程序记住安装的路径完成安装后退出AD25程序。
### 添加学习补丁
进入开始解压出的Altium Designer 25.4.2 Build 15 (x64)文件夹,打开 !Lic 文件夹复制shfolder.dll和AD25_Pro.alf文件到AD25安装文件夹没改路径一般是 C:\Program Files\Altium\AD25内有X2.EXE文件
### 添加证书文件
打开AD25程序点击右上角人形图标(Not Signed In)右边的三角形出现菜单选项选择Licenses选项点击 Add License -> Add Standalone License File,选择AD25安装路径下粘贴的AD25_Pro.alf文件。

View File

@@ -0,0 +1,112 @@
# SSH舍弃密码拥抱密钥
## 前提条件
使用**ROOT**用户个人喜好、客户端使用Windows PowerShell终端、服务端使用Debian12+或是Ubuntu24+
## 客户端操作
### 创建密钥对
随便在哪按 WIN + X 再按 I 打开PowerShell终端
进入用户的.ssh文件夹
```shell
cd ~\.ssh
```
创建密钥对使用椭圆加密算法相比RSA更加短小精悍
```shell
ssh-keygen -t ed25519
```
输出Enter file in which to save the key是对密钥对进行命名我这里输入test
之后输出Enter passphrase (empty for no passphrase)是对私钥进行加密输入私钥的密码不会显示不设置就按Enter跳过
然后确认密码依旧按Enter跳过
出现一个方框图形,表示创建成功
之后 ~\.ssh 文件夹中会出现一个 test 私钥文件和一个 test.pub 公钥文件
至此,客户端的操作暂时结束
## 服务端操作
### 上传公钥至服务器
#### 创建实例阶段
在创建实例阶段,如阿里云服务器,可以在**管理设置-登录凭证**中选择密钥对;**登录名**选择root**密钥**对选择右边创建密钥对
创建密钥对界面,密钥对名称随意;创建类型选择导入已有密钥对,
在客户端Windows电脑中进入 ~\.ssh文件夹中找到第一步创建的test.pub,用任意编辑器打开后,复制其内容到公钥内容框中,标签键随意,
然后回到实例创建页面,在密钥对选择刚刚创建的密钥对即可
#### 已有服务器
使用SSH密码登录到服务器切换到ROOT用户
```shell
sudo -i
```
##### 复制公钥到服务器
进入/root/.ssh文件夹
```shell
cd /root/.ssh
```
创建或编辑 authorized_keys 文件
```shell
vim authorized_keys
```
按 I 进入编辑模式,将公钥内容复制进去
按 Esc ,输入 :wq 保存并退出
##### 编辑SSH-SERVER配置文件
进入/etc/ssh文件夹
```shell
cd /etc/ssh
```
编辑sshd_config文件
```shell
vim sshd_config
```
同样按 I 进入编辑模式,并确保下列三个参数如下
```shell
PermitRootLogin yes #允许使用ROOT用户登录
PubkeyAuthentication yes #使用密钥对
PasswordAuthentication no #禁用密码
```
按 Esc 退出编辑模式,输入 :wq 保存并退出
##### 重启SSH-SERVER服务
一般使用
```shell
systemctl restart sshd
```
不行就试试
```shell
service ssh restart
```
##### **不要断开SSH连接防止配置有问题连接不上**
## 使用密钥对进行连接
### 直接连接
新开一个PowerShell终端
```shell
ssh -i ~/.ssh/test root@192.168.21.5
```
输出 Enter passphrase for key 提示输入私钥密码(输入的内容不会显示),之前没设置就直接按 Enter ;不出意外就可以连接上了
### 编辑config文件进行简便连接
**注意:** 只用使用Windows的终端才能简便连接使用mobaxterm等ssh软件这个配置是没用的
在Windows客户端中进入 ~\.ssh 文件夹
```shell
cd ~\.ssh
```
使用记事本编辑config文件
```shell
noteapd config
```
格式如
```shell
Host test
HostName 192.168.21.5
IdentityFile ~/.ssh/test
User root
```
如果端口不是22则需要加上端口如ssh使用222端口
```shell
Host test
HostName 192.168.21.5
IdentityFile ~/.ssh/test
Port 222
User root
```
保存
然后在PowerShell终端中就可以进行简便连接如
```shell
ssh test
```
这里的test是 config 文件 Host 后的字符可以用Emoji表情
**注意:** 在使用SSH密钥对克隆GitHub或是其他git相关网站时Host最好设置为网站的域名你问为什么时间的教训罢了~
## 至此教程结束

View File

@@ -0,0 +1,30 @@
## 依旧前言
### 瞎比比
博主在八月下旬去川西耍了一耍小环线自驾游也是拍了很多照片用之前的arm搭建的mtphotos实现图片备份跟共享的还是非常舒服的但是呢博主用的是ipv6的网络朋友们使用流量呢还是很顺滑的就是连上wifi后呢基本就不行了现在大部分wifi呢依旧只提供ipv4而且博主用的还是ddns众所周知呢国内服务器没有备案呢是用不了80跟443一类的标准端口的所以博主跟朋友们分享的链接后面跟了个端口看着就非常的不优雅正好飞牛和零刻联合出了个小NAS正好就能解决博主之前的一大堆问题废话不多说下面是正文。
### 准备和费用
1. 飞牛NAS一台高级内网穿透权益可有可无
2. 域名(如博主的顶级域名一年几十块)(依旧可有可无)
3. mtphotos(免费试用一个月后续3元一个月买断118元)更新频率高主要是可以支持vivo的动态图片
4. passnet内网穿透服务优雅的关键一月最便宜的是20Mbps速度,50GB流量6块钱它可以提供域名就是不那么自由
## 正式开始
### 实现方案
博主使用的方案呢是mtphotos通过挂载飞牛相册备份文件夹路径而不是单独再使用文件夹来存放照片这样只需要飞牛手机端备份一次然后两个相册就能都看到。
ps:飞牛的相册还是需要继续优化的我直接把照片复制进对应的备份文件夹中它竟然扫描不出来不同文件夹中的完全相同的图片它的重复检查也查不出来但是mtphotos里是可以检查到的。
连接呢使用ipv6飞牛DDNS域名加ipv4passnet内网穿透服务mtphotos手机端主地址填飞牛的ipv6DDNS域名加mtphotos的端口默认8063备用地址填内网穿透服务的域名。
ps:使用ipv4的原因的一个是ipv6的普及度其实并不是很高特别是各种地方的wifi我的朋友们的家里的wifi就没有ipv6这样他们访问还需要切换到手机流量就很麻烦另一个原因是家里的服务器部署服务默认是没法用标准端口的80 443域名后面加一串端口号看到真的不是很舒服。
### 实现步骤
#### 本地操作
一、安装好飞牛OS并成功进入系统创建好储存空间在文件管理->我的文件页面创建docker文件夹创建mtphotos子目录,创建config子子目录。
二、配置好飞牛自带相册可以在文件管理中新建备份文件夹然后在相册设置的文件夹管理中更改一下路径手机端飞牛相册备份配置页面备份目录偏好建议选择按设备目录其他备份设置中的按拍摄日期重命名不要打开不要打开不要打开会导致vivo的动态图片的视频跟图片的名称不一样会导致mtphotos识别不了动态图片打开备份先备份一些照片进去。
三、点开Docker选择好存储位置直接在镜像仓库中搜索mtphotos并下载500K+那个就是在本地镜像中找到mt-photos点三角形创建容器勾上开机自动启动下一步中存储位置添加两个路径选择创建的config文件夹右边装载路径填写 /config
再添加路径,选择相册备份的文件夹中的手机的型号那个文件夹上级文件夹也行,右边装载路径填写 /upload然后下一步完成创建。
四、浏览器地址栏IP:8063进入mtphotos网页端初始化mtphotos后图库管理里面添加图库文件夹选择 /upload 或者以手机型号命名的文件夹,然后确定后自动回到上级菜单,勾上 仅管理员有权限修改或删除该图库的照片 并选择可使用该图库的用户自己的账号然后确定会自动扫描一次图库。之后在飞牛备份完成所有照片或者新照片后建议手动点击一次扫描图库mtphotos默认会间隔15min自动扫描一次图库
#### 配置DDNS和内网穿透
##### DDNS
进入飞牛网页端,打开系统设置->远程访问->DDNS->新增上面四项自己填写外部IPv4地址禁用大内网地址没啥用外部IPv6地址自动获取就行填好后点击测试连接成功保存。
##### 内网穿透
一、打开飞牛应用商店下载并启用frpc客户端和lucky
二、点击lucky进入后台设置选项根据需要更改安全入口和密码不改可以选择禁用安全入口设置检查和禁用默认账号密码检查SSL/TLS证书选项添加证书证书备注建议填子域名添加方式选择ACME证书颁发机构Let's Encrypt比较快和稳定验证方式根据自己的域名服务商自己填写滑动到最下面打开证书映射选项映射路径自己先在飞牛中创建好要有写入权限然后点击添加等待添加完成后到飞牛看看对应映射目录下有没有证书文件。
三、进入passnet网页隧道管理->隧道列表->创建新隧道选择一个近一点用户少一点的服务器隧道名称随意本地IP一般不用动需要改动自己应该知道传输协议选择HTTPS本地端口没改就是8063源站协议HTTP子域名是lucky申请的证书的子域名顶级域名需要在passnet隧道管理->域名管理中添加并加入白名单crt证书路径就是lucky映射的后缀为 .crt 的证书文件(在飞牛的文件管理中找到并点击选中文件,更多->详细信息->复制原始路径key密钥路径同理提交后在隧道列表中点击对应隧道有个蓝底注意事项提醒右边的蓝色<mark>点我获取</mark>点击后复制到剪贴板然后到飞牛打开frpc粘贴复制内容回到passnet隧道列表对应的隧道显示绿底在线就说明配置成功。
<mark>ps:</mark>在配置文件中可以看到服务器地址,需要提前在域名服务商处做好解析。

48
Page/关于与声明.md Normal file
View File

@@ -0,0 +1,48 @@
## 关于这个博客
### 🌱 为什么会有这个博客?
这个小小的角落,诞生于 2025 年的一个周末。当时我发现自己在学习和生活中积累了很多零散的思考 —— 可能是一段代码调试的心得、一本好书的批注、一次旅行中的观察,或是对某个社会现象的浅见。
与其让这些想法淹没在备忘录里,不如搭建一个公开的空间:**既为自己留下可回溯的成长轨迹,也期待与同频的陌生人产生微小的共鸣。**
### 📝 这里会写些什么?
内容没有严格的边界,但始终围绕「真实」和「有用」两个原则:
**技术与工具:**作为一名电子专业大学生会分享代码优化技巧、实用工具推荐、编程思维训练等比如最近在研究的嵌入式UI设计、性能调优和 AI 工具等);
**生活观察:**可能是对城市角落的记录、一本旧书的重读感悟,或是关于时间管理、极简生活的实践心得;
**学习笔记:**非专业领域的探索过程,比如摄影入门、数据分析自学、心理学通识等(允许自己写得笨拙,毕竟成长需要试错);
**偶尔的碎碎念:**对热点事件的个人视角,或是某个深夜突然冒出来的奇怪想法(不追求绝对正确,只保证真诚表达)。
### 👋 关于博主
你可以叫我布莱特,一个在学习网站搭建的电子专业大学生。
无聊刷刷视频,打打游戏,偶尔看到有趣的项目,就想动手实践一下。
如果你在文章里发现错误,或者有不同观点,非常欢迎通过评论区或邮件 zibright@qq.com 指出,真理越辩越明,我不怕被打脸。
### 📮 如何联系与互动?
**评论区:**所有留言都会尽量回复(除非涉及广告或恶意言论);
**邮件:**适合长对话或合作提议。
### ✨ 最后想说的话
这个博客没有商业合作,没有流量焦虑,更不会为了迎合热点说违心的话。它更像一个在线日记本,记录一个普通人的思考与成长。
如果你觉得某篇文章对你有启发,点个「在看」或分享给朋友,就是对我最大的鼓励。
感谢你来过,愿我们都能在各自的轨道上,慢慢靠近自己想要的生活。
---------------------------------------------------------
## 声明
### 本网站兼具个人博客内容分享与资源交流功能,为明确内容责任边界,保障用户与网站权益,特作如下声明:
#### 一、内容性质与适用范围
博客板块发布的文字、图片、观点等内容,均为作者个人经验与思想的记录,仅代表个人立场,不构成法律、医疗、金融等领域的专业建议,仅供参考交流。
资源分享板块的内容(包括但不限于文档、工具、素材等),部分来自网络收集或用户上传,仅作为学习交流媒介,不涉及商业用途。
#### 二、信息准确性与时效性
作者已尽力核实博客内容的真实性,但不对信息的绝对准确性、完整性作出承诺。因政策调整、知识更新等导致内容过时的,网站无强制更新义务,建议用户结合实际情况验证。
资源分享板块的文件版本、兼容性等信息可能随技术发展变化,网站不对资源的可用性、安全性提供担保,用户下载前需自行评估风险。
#### 三、用户使用责任
任何用户因参考博客内容或使用分享资源产生的决策与行动,其风险由用户自行承担。因内容误差、资源失效等导致的直接或间接损失,网站及作者不承担赔偿责任。
用户需确保使用分享资源的行为符合法律法规,不得用于侵权、违法活动。若因滥用资源引发纠纷,与网站无关。
#### 四、知识产权与转载规范
博客原创内容受版权保护,未经许可,禁止擅自转载、摘编或用于商业用途;转载非原创内容时,已尽力标注来源,如有侵权请联系删除。
分享资源的版权归原作者所有,网站仅提供临时存储与交流渠道,不拥有所有权。若原作者认为资源侵权,可通过联系方式提交证明,网站将在 24 小时内移除相关内容。
#### 五、第三方链接与内容
网站可能包含指向第三方平台的链接,此类链接仅为便利提供,不代表对第三方内容的认可。第三方平台的服务条款、隐私政策与本网站无关,用户访问时需自行承担风险。
#### 六、禁止性内容与法律责任
严禁在评论区、资源上传区发布反动、色情、暴力等违法违规内容,一经发现立即删除,情节严重者将上报相关部门。
用户因违反本声明或相关法律规定导致的任何法律责任,由用户自行承担,网站不承担连带责任。
#### 七、声明的修改与解释
本声明内容可根据实际运营情况调整,修改后将在网站公示并即时生效,建议用户定期查阅。网站作者对本声明拥有最终解释权。
#### 如有疑问,可通过网站联系方式沟通。感谢您的理解与支持。

7
Page/友情链接.md Normal file
View File

@@ -0,0 +1,7 @@
!!!
[icon]https://mono.imakashi.eu.org/overall/headicon2.webp
[link]https://imakashi.eu.org/blog
[name]明石博客
[desc]一个互联网海洋中的小岛
[end]
!!!

View File

@@ -0,0 +1,5 @@
## 博客的文章备份
#### 上一世,由于服务器升级失败导致我的所有文章都没了;这一世我定要记下属于我的一切~
现在这个仓库同时作为obsidian的仓库用来作学习笔记以及博客网站的页面和文章管理

View File

@@ -1,5 +1,2 @@
## 博客的文章备份
#### 上一世,由于服务器升级失败导致我的所有文章都没了;这一世我定要记下属于我的一切~
现在这个仓库同时作为obsidian的仓库用来作学习笔记以及博客网站的页面和文章管理
#### 上一世,由于服务器升级失败导致我的所有文章都没了;这一世我定要记下属于我的一切~