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

一键部署ftp脚本

Ubuntu(root) 上搭建标准 FTP(vsftpd)服务器,带被动模式端口、用户创建、目录与权限配置,可直接落地执行


一、部署脚本(保存为 setup_ftp.sh,root 执行)

#!/usr/bin/env bash
set -euo pipefail### ====== 可按需修改的变量 ======
FTP_USER="ftpuser"                 # 要创建的FTP账户
FTP_PASS="MyPassword123!"          # 账户密码(请修改)
FTP_BASE="/srv/ftp"                # FTP根目录(每用户目录 = $FTP_BASE/$FTP_USER)
PASV_MIN=40000                     # 被动模式端口范围(防火墙需放行)
PASV_MAX=40100
# 外网IP(服务器直接暴露公网可自动探测;若在NAT/家庭路由后,务必改成路由器的公网IP)
EXTERNAL_IP="$(hostname -I | awk '{print $1}')"
# EXTERNAL_IP="你的公网IP"          # 若在NAT后面,请取消注释并填写正确公网IP
### =============================echo "[1/7] 安装 vsftpd..."
apt update
DEBIAN_FRONTEND=noninteractive apt install -y vsftpdecho "[2/7] 创建 FTP 用户与目录..."
id -u "$FTP_USER" &>/dev/null || adduser --disabled-password --gecos "" "$FTP_USER"
echo "${FTP_USER}:${FTP_PASS}" | chpasswdmkdir -p "${FTP_BASE}/${FTP_USER}"
chown -R "${FTP_USER}:${FTP_USER}" "${FTP_BASE}/${FTP_USER}"
chmod 755 "${FTP_BASE}"
chmod 755 "${FTP_BASE}/${FTP_USER}"echo "[3/7] 备份并生成 vsftpd 配置..."
cp -a /etc/vsftpd.conf /etc/vsftpd.conf.bak.$(date +%F-%H%M%S)cat >/etc/vsftpd.conf <<EOF
listen=YES
listen_ipv6=NOanonymous_enable=NO
local_enable=YES
write_enable=YES# 允许本地用户被chroot到自己的目录,同时目录可写
chroot_local_user=YES
allow_writeable_chroot=YES# 每用户目录:/srv/ftp/\$USER
user_sub_token=\$USER
local_root=${FTP_BASE}/\$USER# 显示隐藏文件(以点开头)
force_dot_files=YES# 被动模式(配合防火墙/NAT)
pasv_enable=YES
pasv_min_port=${PASV_MIN}
pasv_max_port=${PASV_MAX}
pasv_address=${EXTERNAL_IP}# 更友好的文件名编码
utf8_filesystem=YES# 安全相关(根据需要调整)
pam_service_name=vsftpd
seccomp_sandbox=NO
EOFecho "[4/7] 配置防火墙(如启用UFW)..."
if command -v ufw >/dev/null 2>&1; thenufw allow 21/tcp || trueufw allow ${PASV_MIN}:${PASV_MAX}/tcp || true
fiecho "[5/7] 启动并设为开机自启..."
systemctl enable --now vsftpd
systemctl restart vsftpd
systemctl --no-pager status vsftpd | sed -n '1,10p' || trueecho "[6/7] 打印连接信息:"
cat <<INFO=====================  FTP 信息  =====================
服务器IP: ${EXTERNAL_IP}
端口:     21
协议:     FTP (建议客户端使用 Passive / 被动模式)
账号:     ${FTP_USER}
密码:     ${FTP_PASS}
用户目录: ${FTP_BASE}/${FTP_USER}
被动端口: ${PASV_MIN}-${PASV_MAX} (记得在安全组/路由器放行)
=====================================================INFOecho "[7/7] 快速自检(本机连):"
echo "  ftp -inv ${EXTERNAL_IP} <<'EOF'"
echo "  user ${FTP_USER} ${FTP_PASS}"
echo "  ls"
echo "  bye"
echo "  EOF"echo "完成。若服务器在NAT/路由后,请将 vsftpd.conf 中 pasv_address 改为公网IP后重启: systemctl restart vsftpd"

使用

vi setup_ftp.sh       # 粘贴上面的脚本,按需改 FTP_USER/FTP_PASS 等
chmod +x setup_ftp.sh
./setup_ftp.sh

二、常见网络与NAT说明

  • 云服务器:在提供商的安全组放行 TCP 21 和 ${PASV_MIN}-${PASV_MAX}
  • 家庭路由/NAT:路由器做端口映射:
    • TCP 21 → 服务器内网IP:21
    • TCP 40000–40100 → 服务器内网IP:40000–40100
      并把脚本里的 EXTERNAL_IP 改成路由器的公网IP。

三、客户端连接建议

  • 推荐 FileZilla Client,连接时选 传输模式:被动(Passive)
  • 纯 FTP 不加密;若需加密可改用 FTPS(显式TLS) 或直接使用 SFTP(更安全,端口22,和本脚本不同)。

四、快捷新增用户脚本(可选)

以后想再加一个用户,保存为 add_ftp_user.sh

#!/usr/bin/env bash
set -euo pipefail
FTP_USER="${1:?用法: $0 用户名}"
FTP_PASS="${2:?用法: $0 用户名 密码}"
FTP_BASE="/srv/ftp"id -u "$FTP_USER" &>/dev/null || adduser --disabled-password --gecos "" "$FTP_USER"
echo "${FTP_USER}:${FTP_PASS}" | chpasswdmkdir -p "${FTP_BASE}/${FTP_USER}"
chown -R "${FTP_USER}:${FTP_USER}" "${FTP_BASE}/${FTP_USER}"
chmod 755 "${FTP_BASE}/${FTP_USER}"echo "已创建用户 ${FTP_USER},目录 ${FTP_BASE}/${FTP_USER}"

使用:

chmod +x add_ftp_user.sh
./add_ftp_user.sh user2 "StrongPass#2"
FTP_USER="ftpuser"                 # 要创建的FTP账户
FTP_PASS="MyPassword123!"          # 账户密码(请修改)
FTP_BASE="/srv/ftp"                # FTP根目录(每用户目录 = $FTP_BASE/$FTP_USER)结果:
root@localhost:~# chmod +x setup_ftp.sh
root@localhost:~# ./setup_ftp.sh
[1/7] 安装 vsftpd...
Hit:1 http://mirrors.aliyun.com/ubuntu focal InRelease
Get:2 http://mirrors.aliyun.com/ubuntu focal-updates InRelease [128 kB]
Get:3 http://mirrors.aliyun.com/ubuntu focal-backports InRelease [128 kB]
Get:4 http://mirrors.aliyun.com/ubuntu focal-security InRelease [128 kB]
Get:5 http://mirrors.aliyun.com/ubuntu focal-updates/main amd64 DEP-11 Metadata [276 kB]
Get:6 http://mirrors.aliyun.com/ubuntu focal-updates/restricted amd64 DEP-11 Metadata [212 B]
Get:7 http://mirrors.aliyun.com/ubuntu focal-updates/universe amd64 DEP-11 Metadata [446 kB]
Get:8 http://mirrors.aliyun.com/ubuntu focal-updates/multiverse amd64 DEP-11 Metadata [940 B]
Get:9 http://mirrors.aliyun.com/ubuntu focal-backports/main amd64 DEP-11 Metadata [8,004 B]
Get:10 http://mirrors.aliyun.com/ubuntu focal-backports/restricted amd64 DEP-11 Metadata [216 B]
Get:11 http://mirrors.aliyun.com/ubuntu focal-backports/universe amd64 DEP-11 Metadata [30.5 kB]
Get:12 http://mirrors.aliyun.com/ubuntu focal-backports/multiverse amd64 DEP-11 Metadata [212 B]
Get:13 http://mirrors.aliyun.com/ubuntu focal-security/main amd64 DEP-11 Metadata [74.6 kB]
Get:14 http://mirrors.aliyun.com/ubuntu focal-security/restricted amd64 DEP-11 Metadata [212 B]
Get:15 http://mirrors.aliyun.com/ubuntu focal-security/universe amd64 DEP-11 Metadata [159 kB]
Get:16 http://mirrors.aliyun.com/ubuntu focal-security/multiverse amd64 DEP-11 Metadata [940 B]
Fetched 1,380 kB in 1s (2,147 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
All packages are up to date.
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:vsftpd
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 115 kB of archives.
After this operation, 334 kB of additional disk space will be used.
Get:1 http://mirrors.aliyun.com/ubuntu focal-updates/main amd64 vsftpd amd64 3.0.5-0ubuntu0.20.04.2 [115 kB]
Fetched 115 kB in 0s (849 kB/s)
Preconfiguring packages ...
Selecting previously unselected package vsftpd.
(Reading database ... 208600 files and directories currently installed.)
Preparing to unpack .../vsftpd_3.0.5-0ubuntu0.20.04.2_amd64.deb ...
Unpacking vsftpd (3.0.5-0ubuntu0.20.04.2) ...
Setting up vsftpd (3.0.5-0ubuntu0.20.04.2) ...
Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service → /lib/systemd/system/vsftpd.service.
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for systemd (245.4-4ubuntu3.24) ...
[2/7] 创建 FTP 用户与目录...
Adding user `ftpuser' ...
Adding new group `ftpuser' (1003) ...
Adding new user `ftpuser' (1003) with group `ftpuser' ...
Creating home directory `/home/ftpuser' ...
Copying files from `/etc/skel' ...
[3/7] 备份并生成 vsftpd 配置...
[4/7] 配置防火墙(如启用UFW)...
Rules updated
Rules updated (v6)
Rules updated
Rules updated (v6)
[5/7] 启动并设为开机自启...
Synchronizing state of vsftpd.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable vsftpd
● vsftpd.service - vsftpd FTP serverLoaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)Active: active (running) since Sun 2025-09-14 03:59:55 CST; 15ms agoProcess: 225256 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/SUCCESS)Main PID: 225257 (vsftpd)Tasks: 1 (limit: 9413)Memory: 620.0KCGroup: /system.slice/vsftpd.service└─225257 /usr/sbin/vsftpd /etc/vsftpd.conf[6/7] 打印连接信息:=====================  FTP 信息  =====================
服务器IP: 172.30.0.6
端口:     21
协议:     FTP (建议客户端使用 Passive / 被动模式)
账号:     ftpuser
密码:     MyPassword123!
用户目录: /srv/ftp/ftpuser
被动端口: 40000-40100 (记得在安全组/路由器放行)
=====================================================[7/7] 快速自检(本机连):ftp -inv 172.30.0.6 <<'EOF'user ftpuser MyPassword123!lsbyeEOF
完成。若服务器在NAT/路由后,请将 vsftpd.conf 中 pasv_address 改为公网IP后重启: systemctl restart vsftpd
root@localhost:~# ls

相关文章:

一键部署ftp脚本

在 Ubuntu(root) 上搭建标准 FTP(vsftpd)服务器,带被动模式端口、用户创建、目录与权限配置,可直接落地执行。一、部署脚本(保存为 setup_ftp.sh,root 执行) #!/usr/bin/env bash set -euo pipefail### ====== 可按需修改的变量 ====== FTP_USER="ftpuser" …...

PySimpleGUI安装4.60.5老版本安装教程!

PySimpleGUI安装4.60.5老版本安装教程! ━━━━━━━━━━━━━━━━━━━━━━ https://download.csdn.net/download/mzl_18353516147/89506033?utm_medium=distribute.pc_relevant_download.none-task-download-2defaultBlogCommendFromBaiduRate-2-89506033-downlo…...

PySimpleGUI-免注册版本

PySimpleGUI 开始注册了,怎样能免注册使用早期版本? 若需免注册使用 PySimpleGUI 早期版本,可通过以下两种方法实现,具体操作及原理如下: 方法一:通过 pip 指定版本安装(推荐) 操作步骤:卸载现有版本(若已安装新版):pip uninstall PySimpleGUI安装指定旧版本(如 4…...

高三闲话 #1

APJ 三个银牌高考 699,我一个银牌考个 233 不过分吧高三生活还是如期而至了,写点高三闲话感觉太有道理了。不过我得先说明这篇文章的目的不是传播负能量,事实上我最近还是蛮积极的,只不过我无法回避这些我内心里的真实想法,而且感觉写出来很有意思,所以写一写。如果让我用…...

三大免费CDN推荐:安全防护强、稳定性卓越、加载飞速,长期使用超安心

三大免费CDN推荐:安全防护强、稳定性卓越、加载飞速,长期使用超安心1. 将盾CDN:防御与速度双卓越,建站首选利器 将盾CDN是一款专注于安全与性能的CDN服务,其免费版本在防御强度、国内访问速度及功能实用性上表现亮眼,无论是企业官网还是个人站点,都能提供可靠保障,是当…...

PySimpleGUI 开始注册了,怎样能免注册使用早期版本?

若需免注册使用 PySimpleGUI 早期版本,可通过以下两种方法实现,具体操作及原理如下: 方法一:通过 pip 指定版本安装(推荐) 操作步骤:卸载现有版本(若已安装新版):pip uninstall PySimpleGUI安装指定旧版本(如 4.60.5):pip install PySimpleGUI==4.60.5该版本在官方…...

全屏与退出全屏功能

全屏与退出全屏功能 📄 Fullscreen API 使用说明 通过浏览器提供的 Fullscreen API,你可以实现在任意 HTML 元素上的全屏展示与退出全屏效果,适用于视频播放器、看图模式、报表展示等场景。🧩 功能说明支持进入全屏 支持退出全屏 支持检测当前是否处于全屏状态 兼容多浏览…...

二十多年.NET老兵重返技术博客

缘起:博客园,我们的技术家园 自2005年入驻博客园,2006年开始撰写技术博客,直至2013年,我将博客园视为.NET技术交流的圣地。这里纯净、专注的技术氛围,以及众多技术精英的真诚分享,使其成为我们共同的网上家园。然而,由于工作性质的变化,我在2013年后逐渐淡出了技术博客…...

5月杂题

一点骨灰?臭不要脸的回到了机房,感觉大家越来越强了,膜拜。 想到什么写什么。多校清北营训练「清华场」B. 绕口令/gym100162B题意:定义一个字符串为好的当且仅当其中没有两个相邻字符相同,问你对 \(k\in[1,n]\),能否删去原字符串中连续 \(k\) 个字符得到一个好的字符串。…...

uv,下一代Python包管理工具

uv,下一代Python包管理工具 https://segmentfault.com/a/1190000047202911 什么是uv uv(Universal Virtual)是由Astral团队(知名Python工具Ruff的开发者)推出的下一代Python包管理工具,使用Rust编写。它集成了包管理、虚拟环境、依赖解析、Python版本控制等功能,它聚焦于…...

阅读 |《虚空》观后感以及一些想法——万物简史

保持学习,保持记录,保持思考—————— 啊啊啊,真的有好多想要去做的事情,好多想要体验的事情,真的没法同时去学习所有的事物,那是多么的令人感到幸福 这篇文主要就记下看完《虚空》之后的想法以及之后和AI的讨论 首先呢我初读这本书感觉很枯燥,但一整篇看下来之后还是…...

Python进阶必看:深入解析yield的强大功能

https://segmentfault.com/a/1190000045317342?utm_source=sf-similar-article Python进阶必看:深入解析yield的强大功能 头像 涛哥聊Python 2024-10-22 四川 阅读 3 分钟 头图 大家好,我是涛哥,本文内容来自 涛哥聊Python ,转载请标原创。 更多Python学习内容:http://ip…...

polyglot,一个有趣的 Python 库!

https://segmentfault.com/a/1190000045317129 polyglot,一个有趣的 Python 库! 头像 涛哥聊Python 2024-10-02 四川 阅读 4 分钟 头图 大家好,我是涛哥,本文内容来自 涛哥聊Python ,转载请标原创。 更多Python学习内容:http://ipengtao.com 今天为大家分享一个有趣的 Py…...

个人介绍与博客初建

大家好!我是 李祺,很高兴能通过博客园这个平台和大家交流。我是一名计算机相关专业的学生,在平时生活里,音乐、旅途和美食是三大支柱。耳机里永远循环着不同语言的旋律:华语流行的细腻歌词、K-pop 的强劲节奏、英文歌的叙事感,都能让我在忙碌时快速切换状态。 旅游是我探…...

PySimpleGUI,一个神奇的 Python 库!

https://segmentfault.com/a/1190000045317132?utm_source=sf-similar-article#item-3-3 大家好,我是涛哥,本文内容来自 涛哥聊Python ,转载请标原创。 更多Python学习内容:http://ipengtao.com 今天为大家分享一个神奇的 Python 库 - PySimpleGUI。 Github地址:https://…...

c++ 的拷贝构造函数

当类成员变量有指针类型的时候,要自定义拷贝函数,不要使用默认的拷贝构造函数.因为默认的拷贝构造构造函数是浅拷贝是位拷贝的,只拷贝指针指向的空间而没有把空间里的内容一起拷贝过来,这样会导致改变其中的一个,另一个也会跟着一起改变(老婆也都一样的了)class Teacher{ publi…...

变异

n可以理解成特征的对比 是的,完全可以这么理解!✅ 一句话总结:n 就是“你用多少种不同的视角/特征去衡量这两段区间的关系”。✅ 举个例子: 你把两条 150 kb 区间(X 和 Y)拿来比较,可以问:视角(特征) 具体问法 对应通道覆盖度视角 “X 和 Y 哪边 reads 更多?” read…...

【笔记】类欧几里得算法

类欧几里得算法(之后或许会加上万欧)直接用例子开始吧: \[给定 a,b,c,n,求解\sum_{i = 0}^n\left\lfloor\frac{ai+b}{c}\right\rfloor \]我们记 \(f(a,b,c,n) = \sum_{i = 0}^n\left\lfloor\frac{ai+b}{c}\right\rfloor\) 首先考虑 \(a \ge c\) 或 \(b \ge c\) 的情况: 先…...

AQS的一些思考

AQS-AI问答AQS是怎么实现CountDown AQS 为 CountDownLatch 提供了核心的 状态管理(state 作为计数器) 和 线程排队 / 唤醒机制(CLH 队列):通过 tryAcquireShared 检查计数器是否为 0,决定线程是否需要等待; 通过 tryReleaseShared 原子递减计数器,当计数器归零时唤醒所…...

DearPyGui-最强大的一款Python GUI工具

https://zhuanlan.zhihu.com/p/200754892 其实,在Python中不乏知名的UI构建工具包,例如,Tkinter,PyQT / PySide,wxPython,Kivy,PySimpleGui。这些工具包都很强大,但是,也非常繁琐。 开发一个框架要付出的精力和代码量几乎和核心逻辑相差无几,这与Python崇尚的简单是相…...

2 模型评估与选择

目录P18P23P25 P18 可以好好想一下ROC曲线是如何形成的:我们设置不同的二分类的阈值,就会有不同的(TPR,FPR)对;如果我们将所有数据按照其置信度从大到小排序,然后让阈值逐渐减小,并在ROC曲线上进行描点,那么我们可以发现,如果遇到一个正例,那么当前点会竖直向上走\(\fr…...

TY-290ES计算器屏幕逆向

刷拼多多时看到个便宜的TY-290ES计算器,到手价只需要人民币11块多,还是个点阵屏,真是难以想象国产计算器能做这么便宜,买一个来研究下。廉价小商品大本营(浙江)发的货,,,先点亮看看,功能很少,比82ES还差点意思。屏幕点阵粗略估了下,应该是96x31像素的,顶部有一行图标…...

CF1559E

时间限制 \(2\,\text{sec}\) 空间限制 \(256\,\text{MB}\) 题目来源 CodeForces。 题目大意 给定 \(n\) 个区间 \([l_i,\, r_i]\) 和一个常数 \(m\) ,在每个区间内选出一个正整数 \(a_i\) 构成一个数列 ,满足\(\displaystyle\sum^{n}_{i=1}a_i \leq m\) , \(\gcd \{a_i \} …...

笔记 哈希

A - Description 给定字符串 \(S\) 和 \(T\),问你在 \(S\) 中 \(T\) 出现了几次。 \(1\le |S|,|T|\le 2\times 10^6\) A - Solution 首先暴力地来想。在 \(S\) 中找出所有长度为 \(|T|\) 的子串,然后暴力逐字符匹配,复杂度显然是 \(O(n^2)\) 的,考虑优化。(此处假设 \(|T|…...

题解:CF566A Matching Names

题意 有 \(n\) 名同学,每位同学有一个真名与一个笔名,都是一个由小写英文字母组成的字符串。每位同学可以选择一位同学,使自己的真名与那位同学的笔名相匹配,产生的贡献为其最长公共前缀,每位同学的笔名只能与一人匹配,求贡献总和的最大值。 思路 把笔名插入字典树,并在…...

Tarjan 求连通性相关

复健发现自己对于 Tarjan 的一些东西都有些搞不清了啊。整理一下。 如有错误/不足,欢迎指出。 先给一些定义:\(u\) 表示某个子树的根节点。 \(v\) 表示与 \(u\) 相连的点。如果是无向图那么不包含父亲。 \(fa\) 表示 \(u\) 在 DFS 生成树上的父亲节点。 \(dfn_u\),表示 \(u\…...

暑假学习笔记

Hadoop 生态:实时 + 离线一体化 Flink on YARN 初体验 使用 Flink 1.17.1 提交 yarn-session 模式,队列 queue.stream 独享 4G 堆、2 vcore;编写 Kafka → Hive 的流式入湖作业,消费 user_behavior Topic,Checkpoint 30 s,Exactly-Once 写入 Hive 表 ods_log_rt,实现分钟…...

qoj #8557. Goldberg Machine 题解

有意思原题:https://qoj.ac/problem/8557 弱化版:https://www.luogu.com.cn/problem/P7830 但是弱化版要求做到更优复杂度,但是没有修改。 本文的 参考文章钦定树以 \(1\) 为根。钦定所有点 \(u\neq 1\) 的 \(e,t\) 循环位移成 \(e_{u,k_u-1}=fa_u\),就是把父亲丢到最后。 …...

centos7云主机磁盘清理过程纪要

云主机总磁盘大小为120G,在阿里云控制台配置了磁盘使用达90%告警 1. 收到告警短信 2. 当前磁盘占用情况 df -h | grep dev 已达到 89% 3. 开始排查 3-1. 查看哪个目录占用最大 du -sh /* 或者 du -sh /* | sort -h 发现 /www 目录占用 69G 3-2. 查看 /www du -sh /www/* /ww…...

『随笔』我的唱歌练习史

继续加油!因为热爱。...

2025浙江省信息通信业职业技能竞赛-数据安全管理员竞赛-决赛wp

通信证-签到flag{data_security_is_very_interesting}数据加密与解密-KeekKey题目描述:在数据安全领域,弱密钥和不安全的加密方式如同数字世界的 "隐形杀手",可能引发严重安全漏洞,威胁个人、企业甚至国家网络安全。如金融交易系统使用弱密钥,会被黑客暴力破解篡…...

Java基础核心问题解析

Java基础核心问题解析:方法、数组与类的深度探讨 在Java学习过程中,方法参数传递、数组特性、类与对象的关系等是基础且核心的知识点,也是容易产生困惑的地方。本文将围绕课前提出的一系列问题,逐一解析,帮助大家深入理解这些概念。 一、方法相关问题解析 先看这段代码,我…...

2025年浙江省信息通信业职业技能竞赛-数据安全管理员竞赛-初赛WriteUp

数据传输-网恋需谨慎:你是一个管理员,在一个名为orwell.freenode.net的服务器上结识了用户RiotCard85,RiotCard85主动联系了你,询问近况并提到他最近在做一个项目想让你看看。项目中隐藏了一些有趣的信息和内容,不幸的是黑客截获了你们的的网恋聊天记录,请分析找出RiotCa…...

九三阅兵实时记录+次日补

激动啊!情绪有点激动。...

铸网-2025”山东省工业互联网网络安全职业技能竞赛wp(职工组)

ICS失窃的工艺下载后test.PCZ文件,需要使用力控软件打开。但电脑没有安装这个软件,尝试把后缀名改为.zip,解压后直接搜索flag文本:成功在文件中找到flag:flag{D076-4D7E-92AC-A05ACB788292}。工控协议分析WireShark打开分析,追踪TCP流,flag被逐字符藏在流量中:拼凑起来…...

视洞R33定制版改造自制IPC网络摄像头(可rtsp可web)

这期的主角是视洞R33智能摄像头,LT定制版。我们通过修改启动命令让它运行开放系统,并且搭建rkipc平台,通过WEB/VLC预览视频画面 硬件配置很高啊,主控使用RV1106G2(带0.5T NPU),传感器gc4023,宽视角分辨率2560x1440@30fps,实测4M分辨率能跑满。能连WiFi,支持双向对讲、红…...

二十一、流水线的冒险与处理

目录总览:冒险的类型1. 结构冒险 (Structural Hazard)2. 数据冒险 (Data Hazard)3. 控制冒险 (Control Hazard)总结表流水线的冒险(Hazard)是破坏流水线顺畅执行,导致流水线不得不停顿(Stall)或清空(Flush)的主要因素。处理这些冒险是流水线设计的核心挑战。我们将详细…...

java线程的一些思考

java线程AI问答join是怎么实现的 1.join() 方法被 synchronized 修饰,意味着当前线程调用 t.join() 时,必须先获取目标线程 t 的对象锁(即进入 t 的同步代码块)。 2.方法内部通过 while (isAlive()) 循环检查目标线程是否存活: -若存活,当前线程调用 wait(0)(在目标线程…...

2025智能数据分类分级产品选型指南:构建数据治理的智能基座

2025智能数据分类分级产品选型指南:构建数据治理的智能基座在《数据安全法》《个人信息保护法》以及《数据安全技术 数据分类分级规则》(GB/T 43697-2024)等法规标准的推动下,数据分类分级已从“可选项”变为企业数据安全治理的“必答题”。面对金融、运营商、政务等行业中…...

这是我的第一个博客

这是我的第一个博客...

3

12...

eqw

qwe...

第一个c语言项目

1.打开vs 2.创建项目 3.创建源文件 .c 源文件 .h 头文件 注意后缀: .cpp 编译器会按照C++语法来编译代码 .C 编译器会按照C语言来编译代码 4.写代码 C语言一定要有(主函数)main函数 C语言规定:main函数是程序的入口 一个工程中nain函数有且仅有一个 include.h s…...

GitHub Copilot 2025年8月最新更新!

GitHub Copilot 2025年8月最新更新!GitHub Copilot迎来2025年8月重大更新,新增自动模型选择功能,可根据可用性智能匹配最优AI模型,提升开发效率。安全方面增加敏感文件编辑确认机制,同时优化了代理工作流程和终端自动批准功能。更新还支持AGENTS.md文件指导团队协作,并改…...

NOIP 模拟赛十五

Ds+计数DP+计数DP/容斥+根号重构range 将所有值以及除以二所能得到的所有值插入一个数据结构里,如果变为 \(0\) 就停止。 那么答案即为第 \(m+1\) 大的值减去第 \(m\) 大的值和前缀最小值取 \(\min\) 的差。 维护这个使用权值树状数组做到小常数 \(O(n\log^2 n)\) 。 注意查排…...

面试必备进程调度:fg,bg,jobs,ctrl+z,

面试必备进程调度:fg,bg,jobs,ctrl+z,& linux提供的fg和bg命令,可以让我们轻松调度正在运行的任务 假如你发现前天运行的一个程序需要很长的时间,但是需要干前天的事情,你就可以用ctrl-z挂起这个程序,然后可以看到系统的提示: [1]+ Stopped /root/bin/rsync.sh然后我们…...

完整教程:计算机毕设 java 多媒体教室管理系统 基于 Java+SSM 的多媒体教室运维平台 Java+MySQL 的教室预约与设备管理系统

完整教程:计算机毕设 java 多媒体教室管理系统 基于 Java+SSM 的多媒体教室运维平台 Java+MySQL 的教室预约与设备管理系统pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "C…...

笔记一

大家好!我是一名计算机相关专业的学生,平常做的最多的事情就是坐在电脑前敲代码解决各种 “小难题”。但写代码让我养成了 “遇到问题不逃避” 的思维,毕竟调试 BUG 时,多试一次可能就会有新突破。 说到值得分享的记忆,那就是我对于一些体育项目的热衷,比如打排球比赛,你…...

二十、指令流水线的基本实现

目录一、设计原则 (Design Principles)二、逻辑结构 (Logical Structure)三、时空图表示 (Space-Time Diagram Representation)总结一、设计原则 (Design Principles) 流水线的设计遵循几个核心原则,以确保其正确性和高效性。任务分解 (Decomposition)原则: 将指令的完整执行…...

物料模板匹配成功后,自动跟随的逻辑

问题简介 在对物料进行模板匹配时,往往是去匹配物料最突出的部分。然后在根据匹配到的位置。再去找我们需要测量或者检测部分。那么,这里就涉及到一个问题。该如何根据我们模板匹配到的特定位置,计算偏差值,并进行一些测量工具(卡尺,ROI)的跟随移动。 获取相对位置 此处…...