Linux通过Docker安装Microsoft Office+RDP远程控制
之前根据B站教程《在linux上安装微软office》:在linux上安装微软office_哔哩哔哩_bilibili
写过一篇使用KVM虚拟机安装Microsoft Office+RDP远程控制的文章,根据B站的教程安装后,发现有远程控制延迟的问题,比如拖动Office窗口时会延迟,搜狗输入法扫一下就闪退,插入形状后无法调整大小,无法调整图片大小等问题。而且最大的问题是,如果你不提前关闭KVM虚拟机,就得等待Linux关机时杀掉KVM虚拟机的'libvirt' 进程,导致关机需要很长时间。已知Linux开机时会同步开启KVM虚拟机的'libvirt' 进程,这个'libvirt' 进程经常导致Linux系统崩溃,开机时黑屏。停留在只有一条白色下杠的页面。
因此,Winapps最新版本提供了解决方案,推荐用户使用Docker或者Podman安装Microsoft Office + RDP远程控制。降低了系统崩溃的概率。接下来我将带大家如何进行安装和设置。
系统:Ubuntu24.04
前提:已经安装了Docker
(不会安装Docker的,请查看《Ubuntu24.04安装Docker》的文章)
一、从github下载winapps
在必应搜索“winapps github”
复制HTTPS的下载链接:https://github.com/Fmstrat/winapps.git
进入/opt目录,通过git clone把winapps下载到/opt目录下
yammie@my-pc >/opt
$ git clone https://github.com/Fmstrat/winapps.git
为了后续执行不受权限的干扰,给winapps中的所有文件授予777权限。
yammie@my-pc >/opt
$ sudo chmod 777 -r ./winapps
此时winapps的所有者和权限如图:
进入winapps/docs,阅读docker.md的安装步骤。里面提示可以通过docker或者podman进行安装,此处我们选择docker。
二、阅读并修改compose.yaml
1. compose.yaml的内容
打开compose.yaml,阅读里面的设置要点。修改为以下内容,复制粘贴即可:
name: "winapps"
volumes: # Linux系统中通过建立'_data'目录来作为Docker镜像的数据卷# 此处默认注释,执行compose.yaml时,它也会默认安装到下面的目录# Located @ '/var/lib/docker/volumes/winapps_data/_data' (Docker).# Located @ '/var/lib/containers/storage/volumes/winapps_data/_data' or '~/.local/share/containers/storage/volumes/winapps_data/_data' (Podman).data:
services: # 服务器windows: # Windows的镜像容器image: dockurr/windows # 指定从github中下载dockur/windows的Docker镜像container_name: WinApps # 创建Docker容器名称为WinAppsenvironment: # 要配置的Windows镜像版本环境。要选择Windows版本,请访问:VERSION: "core11" # https://github.com/dockur/windows ; 下拉即可看到各种Windows版本。RAM_SIZE: "4G" # 内存: 4GCPU_CORES: "4" # CPU核心数:4DISK_SIZE: "64G" # 主硬盘存储空间: 64G#DISK2_SIZE: "32G" # 第二块硬盘存储空间:32G。如果你要取消该注释,需要保证提供了该硬盘给虚拟机运行LANGUAGE: "Chinese" # 此处必须要指定安装语言为Chinese,不然默认安装EnglishREGION: "zh-CN" # 此处必须要指定地区为:zh-CN,不然默认安装EnglishKEYBOARD: "zh-CN" # 此处必须要指定键盘为zh-CN,不然默认安装EnglishUSERNAME: "Docker" # Windows虚拟机的用户名默认是Docker,你可以取消注释,重命名为其他名字。建议默认PASSWORD: "123456me" # Windows虚拟机登录密码,自定义即可。不能为空。HOME: "${HOME}" # 设置Linux用户主文件夹的路径privileged: true # 授予Windows 虚拟机扩展权限ports:- 8006:8006 # 将Linux主机上的“8006”映射到Windows 虚拟机上的“8006”→用于VNC Web界面http://127.0.0.1:8006.- 3389:3389/tcp # 将Linux主机上的“3389”映射到Windows 虚拟机上的“3389”→用于远程桌面协议(RDP)- 3389:3389/udp # 将Linux主机上的“3389”映射到Windows 虚拟机上的“3389”→用于远程桌面协议(RDP)stop_grace_period: 120s # 停止宽限期 ;当你去关闭Windows虚拟机时,等待120秒后才会发送SIGTERM信号去终止Windows的镜像容器进程。SIGTERM 信号提供了一种优雅的方式来终止程序。restart: on-failure # 如果退出代码指示错误,将重新启动Windows VMvolumes: # Windows虚拟机的数据卷- data:/storage # 挂载上面Linux系统中的'_data'数据卷,作为Windows虚拟机的C盘- ${HOME}:/shared # 挂载Linux用户的home目录,作为Windows虚拟机的远程网络共享目录,名称为: \\host.lan\Data'.#- /path/to/second/hard/disk:/storage2 # 确保上面指定了第二块硬盘,取消注释,就会为Windows虚拟机加载第二块硬盘- ./oem:/oem # 自动触发“oem/install.bat”的安装,应用含有'oem/RDPApps.reg'的Windows注册表修改。- /opt/winapps/iso/tiny11_core11.iso:/custom.iso #取消注释,使用自己下载的Windows.iso文件。一旦使用自己的iso文件,上面environment设定的 VERSION: "core11" 将会被忽略。devices: # 设备- /dev/kvm # 启动 KVM.#- /dev/sdX:/disk1 # 取消注释,直接在Windows VM中挂载磁盘(注意:“disk1”将作为主驱动器挂载)#- /dev/sdY:/disk2 # 取消注释,直接在Windows VM中装载磁盘(注意:“disk2”及更高版本将作为辅助驱动器装载
有关文档、常见问题解答、其他配置选项和技术帮助,请访问:GitHub的dockurr/windows的Docker镜像容器
https://github.com/dockur/windows
(1) 注意:请不要使用Tab来调整注释位置,yaml文件不能识别Tab,不然执行会报错:
yaml: line 19: found character that cannot start any token
(2) 原来的compose.yaml中, - ./oem:/oem 和 - /opt/winapps/iso/tiny11_core11.iso:/custom.iso 默认是注释掉的。意味着我们默认从environment设定的 VERSION: "core11" 来下载Tiny 11 Core版本的Win11,网速不够快的情况下,用时超长。
因此,我们建议取消对- ./oem:/oem 和 - /opt/winapps/iso/tiny11_core11.iso:/custom.iso的注释。直接从指定的网站下载我们需要的iso文件。iso文件放在/opt/winapps/iso/目录下。iso目录需要我们自行创建。
指定本地的iso文件后,直接忽略了environment设定的 VERSION: "core11" 的下载 ,加快了加载win11的速度。
(3) image: dockurr/windows是 ‘‘rr’’结尾,但是github里面该项目是dockur/windows,少了1个r,可能是创作者过往遗留的路径名称问题,compose.yaml使用的是"rr"结尾的dockurr/windows!不要写错了。
2、疑难解答
(1) 什么是数据卷(Volumes)
Docker镜像被存储在一系列的只读层中。当我们创建一个容器时,Docker会读取镜像(只读),并在其顶部添加一层读写层。如果正在运行中的容器修改了现有文件,该文件将会被拷贝出底层的只读层,放到最顶层的读写层中。读写层中原来的旧版本文件(未被更改过的文件)仍然存在于镜像中。
所以当Docker容器被删除后,再基于原来的镜像创建容器时,将创建一个没有任何数据更改的容器,在之前那个容器中的数据更改会丢失掉。只读层和读写层的组合被Docker称为联合文件系统(Union File System)。
为了能够持久化这些更改过的数据,并且能够很容易实现容器间共享数据,Docker提出了Volume的概念。Volume是外部默认的联合文件系统或者是存在于宿主文件系统中正常的文件或文件夹。
(2) 为什么需要数据卷
这得从Docker容器的文件系统说起。出于效率等一系列原因,Docker容器的文件系统在宿主机上存在的方式很复杂,这会带来下面几个问题:
不能在宿主机上很方便地访问容器中的文件。
无法在多个容器之间共享数据。
当容器删除时,容器中产生的数据将会丢失。
为了解决这些问题,Docker引入了数据卷(Volume) 机制。数据卷以独立于Docker文件系统的形式存在于宿主机中。数据卷的最大特点是:其生存周期独立于容器的生存周期。
数据卷的设计目的就是数据的持久化,因为其生存周期独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。所以数据卷可以带来以下好处:
数据卷可在容器之间共享或重用数据。
数据卷的更改可以直接生效。
数据卷的生命周期一直持续到没有容器使用它为止。
对数据卷操作不会影响到镜像本身。
数据卷可以完成容器到宿主机、宿主机到容器以及容器到容器之间的数据共享。
(3) 什么是 SIGTERM(信号 15)
SIGTERM(信号 15)在基于 Unix 的操作系统(如 Linux)中用于终止进程。SIGTERM 信号提供了一种优雅的方式来终止程序,使其有机会准备关闭并执行清理任务,或者在某些情况下拒绝关闭。Unix/Linux 进程可以以多种方式处理 SIGTERM,包括阻塞和忽略。
SIGTERM 是 Unix/Linux kill 命令的默认行为,当用户执行 kill 时,操作系统会在后台向进程发送 SIGTERM。如果过程不在 Docker 容器中,通过 SIGTERM 信号终止的容器在其日志中显示退出码 143。如果您是 Kubernetes 用户,本文将帮助您了解 Kubernetes 终止容器时幕后发生的情况,以及如何在 Kubernetes 中使用 SIGTERM 信号。
(4) KVM是什么
KVM,是Keyboard Video Mouse的缩写,KVM 通过直接连接键盘、视频或鼠标 (KVM) 端口,能够访问和控制计算机。KVM 技术无需目标服务器修改软件。这就意味着可以在BIOS环境下,随时访问目标计算机。KVM 提供真正的主板级别访问,并支持多平台服务器和串行设备。
三、下载指定的Windows系统的iso
因为上面compose.yaml默认从下面的网站下载iso文件,所以我们就从这里进去,选定要安装的Windows版本。
dockurr/windows指定的Windows系统下载区https://file.cnxiaobai.com/Windows/%E7%B3%BB%E7%BB%9F%E5%AE%89%E8%A3%85%E5%8C%85/
此处我选择tiny11 core x64 beta 1.iso下载。下载位置为:/opt/winapps/iso/
一定要跟compose.yaml指定的iso文件路径对应上!!
四、通过docker compose启动compose.yaml,安装Windows系统到dockurr/windows的镜像容器
yammie@my-pc >/opt
$ cd ./winappsyammie@my-pc >/opt/winapps
$ docker compose --file ./compose.yaml up
接着终端提示进入http://127.0.0.1:8006的端口,在浏览器中进行Windows系统的安装。
安装过程略。
五、把修改后的compose.yaml复制到~/.config/winapps
安装完毕后,修改 /opt/winapps/compose.yaml,把以下内容注释掉:
# - ./oem:/oem #- /opt/winapps/iso/tiny11_core11.iso:/custom.iso
接着把修改后的compose.yaml复制到~/.config/winapps
yammie@my-pc >/opt
$ sudo mkdir ~/.config/winappsyammie@my-pc >/opt
$ sudo cp ./compose.yaml ~/.config/winapps
六、停掉并删除 /opt/compose.yaml启动的容器,然后通过~/.config/winapps/compose.yaml启动新的容器
yammie@my-pc >/opt
$ docker compose --file ./compose.yaml downyammie@my-pc >/opt
$ docker compose --file ~/.config/winapps/compose.yaml up
打开http://localhost:8006/,看到Windows系统能够运行即可。记住用户名为:Docker,以及你自定义的密码:123456me。等会用来写WinApps的配置文件。
七、进入Windows系统后,进行各种安装和设置
1、设置系统名称为RDPWindows
开始→设置→主页:点击重命名→命名为RDPWindows
2、在微软商店下载浏览器
我下载的是火狐浏览器
3、在浏览器中下载搜狗输入法并安装
4、下载Microsoft Office安装器
office-toolshttps://otp.landian.vip/zh-cn/
安装步骤:
注意!注意!以前安装过office要先卸载旧的才能安装 ,若是没有安装过的 跳过这一步 直接看下面。
安装过的 点击 工具箱---office工具---移除office后即可
① 打开tool plus 按照以下步骤依次执行
② 点击 设置---部署---启用显示内部产品和通道
③ 点击 部署---更新通道---选择最后一个 beta channel 同时安装模块选择office tool plus
④ 点击 添加产品---搜索框中输入 2024 ---选择office LTSC 专业增强版 2024 批量许可 即可( 其他2024 还有专业版同理)同时语言设置中文
⑤ 点击部署即可
5、激活系统和Microsoft Office
6、重点:注销Docker用户,等会进行WinApps的安装时必须要先注销,不然报错。
八、安装WinApps的依赖,并书写配置文件
1、安装WinApps的依赖
yammie@my-pc >/opt
$ sudo apt-get install dialog yammie@my-pc >/opt
$ sudo apt-get install freerdp3-x11
2、书写配置文件
(1) 创建设置文件夹
yammie@my-pc >/opt
$ sudo mkdir ~/.config/winapps
(2) 编辑设置文件
yammie@my-pc >/opt
$ sudo touch ~/.config/winapps/winapps.conf
(3) 授予777权限,方便日后我们修改里面的用户名和密码
yammie@my-pc >/opt
$ sudo chmod 777 ~/.config/winapps/winapps.conf
(4) 写入我们在Win11设置好的用户名和密码
yammie@my-pc >/opt
$ sudo gedit ~/.config/winapps/winapps.conf
九、在用户层级安装WinApps
1、修改/opt/installer.sh
定位到/opt/installer.sh的第76、77行,MyWindowsUser修改为Docker,MyWindowsPassword修改为123456me
2、进入/opt目录,执行./installer.sh,安装WinApps
如果是sudo ./installer.sh安装,安装界面会识别成root用户。
如果是./installer.sh安装,安装界面会识别成当前用户。
我们在执行./installer.sh时,建议不要使用sudo ./installer.sh,在root层级安装WinApps,会涉及权限问题。最好是直接执行./installer.sh,在用户层级安装WinApps。方便日后无需权限去修改WinApps相关的内容。
执行以下命令:
yammie@my-pc >/opt
$ ./installer
按图选择:
安装成功!!此时双击Word可以成功开启。
请注意,Windows虚拟机请保持Docker用户在注销状态,Linux用户才能通过WinApps远程遥控Windows虚拟机的Microsoft Office。
十、如果~/.config/winapps/compose.yaml发生了修改,需要执行以下命令
如果~/.config/winapps/compose.yaml发生了修改,Windows镜像容器需要被移除和重新创建,这并不会影响磁盘里面的数据。注意,通过查看~/.config文件夹的属性,这是用户层级下创建的文件夹,无需sudo去操作。
1、停止并删除存在的Windows镜像容器
yammie@my-pc >/opt/winapps
$ docker compose --file ~/.config/winapps/compose.yaml down
2、删除存在的FreeRDP证书,移除证书后,WinApps不再起作用
yammie@my-pc >/opt/winapps
$ rm ~/.config/freerdp/server/127.0.0.1_3389.pem
3、删除WinApps的远程控制以及图标,但是不删除/home/yammie/.config/winapps,因为里面的配置文件我们等会还要用
yammie@my-pc >/opt/winapps
$ ./installer.sh --user --uninstall
4、重建并启动Windows的镜像容器,此时WinApps并无对该系统进行远程控制
yammie@my-pc >/home/yammie
$ docker compose --file ~/.config/winapps/compose.yaml up
5、进入http://localhost:8006,确保你已经注销Docker用户,接着 缩小或者关闭浏览器都行
6、重新执行WinApps的安装程序,才能生成新的pem证书和远程软件图标快捷方式
yammie@my-pc >/opt/winapps
$ ./installer.sh
按《八、在用户层级安装WinApps》的教程即可
十一、当Windows镜像容器卡死,如何解决
注意:有时候RDP Windows 相关的进程会卡死,通过
docker compose --file ~/.config/winapps/compose.yaml kill
也无法kill掉docker容器的情况下。
需要通过搜索:ps -aux|grep RDP
找到RDP的PID,第二个16677就是了
yammie@my-pc >/home/yammie $ ps -aux|grep RDP yammie 16677 0.0 0.0 9304 2304 pts/0 S+ 02:27 0:00 grep --color=auto RDP |
然后kill -9 <PID>即可。一定要添加-9选项,不然不能强制kill掉RDP进程
yammie@my-pc >/home/yammie
$ kill -9 16677
然后通过容器重启:
yammie@my-pc >/home/yammie
$ docker compose --file ~/.config/winapps/compose.yaml start
十二、docker的其它命令
docker compose --file ~/.config/winapps/compose.yaml start # 启动Windows镜像容器
docker compose --file ~/.config/winapps/compose.yaml pause # 暂停Windows镜像容器
docker compose --file ~/.config/winapps/compose.yaml unpause # 唤醒Windows镜像容器
docker compose --file ~/.config/winapps/compose.yaml restart # 重启Windows镜像容器
docker compose --file ~/.config/winapps/compose.yaml stop #优雅关闭Windows镜像容器,用时很长
docker compose --file ~/.config/winapps/compose.yaml kill #暴力关闭Windows镜像容器,用时很短
docker compose --file ~/.config/winapps/compose.yaml down #停止并删除Windows镜像容器
十三、创建启动和暴力关闭Windows镜像容器的桌面快捷方式
1、创建图标
(1) 进入 /opt/winapps/icons,复制windows.svg 2次,创建两个副本,分别命名为:close_Winapps.svg 和 open_Winapps.svg
(2) 分别编辑close_Winapps.svg 和 open_Winapps.svg的颜色代码,设置如下:
① close_Winapps.svg
<stop offset="0" stop-color="orange"/><stop offset=".4" stop-color="orange"/><stop offset="1" stop-color="orange"/>
② open_Winapps.svg
<stop offset="0" stop-color="#CCFF66"/><stop offset=".4" stop-color="#CCFF66"/><stop offset="1" stop-color="#CCFF66"/>
(3) 在~/桌面创建两个desktop文件
yammie@my-pc >/home/yammie/桌面
$ touch close_Winapps.desktopyammie@my-pc >/home/yammie/桌面
$ touch open_Winapps.desktop
close_Winapps.desktop
[Desktop Entry] Encoding=UTF-8 Type=Application Name=关闭WinApps #图标路径 Icon=/opt/winapps/icons/close_Winapps.svg Terminal=true Exec=bash /opt/winapps/Winapps_close_open/close_Winapps.sh
open_Winapps.desktop
[Desktop Entry] Encoding=UTF-8 Type=Application Name=打开WinApps #图标路径 Icon=/opt/winapps/icons/open_Winapps.svg Terminal=true Exec=/opt/winapps/Winapps_close_open/open_Winapps.sh
此处设置Terminal=true,弹出终端框,是为了让用户看到该程序执行状态。
2、创建脚本
(1) 在/opt/winapps下创建Winapps_close_open目录
yammie@my-pc >/opt/winapps
$ mkdir Winapps_close_open
(2) 创建脚本
yammie@my-pc >/opt/winapps/Winapps_close_open
$ touch close_Winapps.shyammie@my-pc >/opt/winapps/Winapps_close_open
$ touch open_Winapps.sh
close_Winapps.desktop
#!/bin/bash docker compose --file ~/.config/winapps/compose.yaml kill # 暴力关闭WinApps
open_Winapps.desktop
#!/bin/bash docker compose --file ~/.config/winapps/compose.yaml start # 开启WinApps
3、右键图标→允许运行
双击黄色图标,关闭WinApps。
双击绿色图标,开启WinApps。
建议关闭Linux前,先关闭WinApps。不然杀后台进程需要挺长时间,导致关机时间也会延长。
相关文章:

Linux通过Docker安装Microsoft Office+RDP远程控制
之前根据B站教程《在linux上安装微软office》:在linux上安装微软office_哔哩哔哩_bilibili 写过一篇使用KVM虚拟机安装Microsoft OfficeRDP远程控制的文章,根据B站的教程安装后,发现有远程控制延迟的问题,比如拖动Office窗口时会…...

利用Qt实现调用文字大模型的API,文心一言、通义千问、豆包、GPT、Gemini、Claude。
利用Qt实现调用文字大模型的API,文心一言、通义千问、豆包、GPT、Gemini、Claude。 下载地址: AI.xyz 1 Qt实现语言大模型API调用 视频——Qt实现语言大模型API调用 嘿,大家好!分享一个最近做的小项目 “AI.xyz” 基于Qt实现调用各家大模型…...

借助医疗保健专用的 LLM提高诊断支持与准确性
概述 最近的研究表明,大规模语言模型在医疗人工智能应用中非常有效。它们在诊断和临床支持系统中的有效性尤为明显,在这些系统中,它们已被证明能为各种医疗询问提供高度准确的答案(例如,医生在诊断过程中需要用到语言…...
微前端(qiankun)
微前端 特点:独立开发、独立部署,独立运行,增量升级 解决的问题:日常开发过程中,可能有很多老项目需要迭代,但是可能新的一些可能需要使用的依赖或者新的一些框架,老项目已经不满足,…...
速通c++(周二)
前言 Hello,大家好啊,我是文宇,不是文字,是文宇哦。 今天是速通c第二期。 运算符 c里的运算符种类有很多,因为这个教程是入门教程,所以只介绍其中我们会用到的几种。 算数运算 c中的算数运算有九个&a…...

拓扑未来物联网平台简介
拓扑未来物联网平台是基于Thingsboard二次开发的面向产业互联和智慧生活应用的物联网PaaS平台,支持适配各种网络环境和协议类型,可实现各种传感器和智能硬件的快速接入。有效降低物联网应用开发和部署成本,满足物联网领域设备连接、智能化改造…...
软件测试经理工作日常随记【7】-接口+UI自动化(多端集成测试)
软件测试经理工作日常随记【7】-UI自动化(多端集成测试) 自动化测试前篇在此 前言 今天开这篇的契机是,最近刚好是运维开发频繁更新证书的,每次更新都在0点,每次一更新都要走一次冒烟流程。为了不让我的美容觉被阉割…...

软考:软件设计师 — 9.数据流图
九. 数据流图 数据流图是下午场考试中第一个题目,分值 15 分。通常会考察实体名、存储名、加工名的补充,以及找到缺失的数据流并改正等。 1. 数据平衡原则 数据流的分析依赖于数据平衡原则。 父图与子图之间的平衡 父图与子图之间平衡是指任何一张 …...
收银系统源码-门店折扣活动应该怎么做
系统概况: 专门为零售行业的连锁店量身打造的收银系统,适用于常规超市、生鲜超市、水果店、便利店、零食专卖店、服装店、母婴用品、农贸市场等类型的门店使用。同时线上线下数据打通,线下收银的数据与小程序私域商城中的数据完全同步&#…...
Python数值计算(12)——线性插值
1. 概述 插值是根据已知的数据序列(可以理解为你坐标中一系列离散的点),找到其中的规律,然后根据找到的这个规律,来对其中尚未有数据记录的点进行数值估计的方法。最简单直观的一种插值方式是线性插值,它是…...

TypeScript(switch判断)
1.switch 语法用法 switch是对某个表达式的值做出判断。然后决定程序执行哪一段代码 case语句中指定的每个值必须具有与表达式兼容的类型 语法switch(表达式){ case 值1: 执行语句块1 break; case 值2: 执行语句块3 break; dfault: //如…...
血细胞自动检测与分类系统:深度学习与UI界面的结合
一、项目概述 项目背景 在医学实验室中,血细胞的检测和分类是诊断和研究的重要环节。传统方法依赖于人工显微镜检查,费时且容易出现误差。通过深度学习技术,特别是目标检测模型YOLO,可以实现自动化、快速且准确的血细胞检测和分…...

鸿蒙Flex布局
效果: 代码: 换行代码参数设置: wrap:FlexWrap.Wrap Entry Component struct FlexCase {State message: string Hello World;build() {Flex({direction:FlexDirection.Row,justifyContent:FlexAlign.SpaceAround,alignItems:ItemAlign.Cen…...
开发自己的 Web 框架
开发自己的 Web 框架 开发Web服务器主体程序开发Web框架程序使用模板来展示响应内容开发框架的路由列表功能采用装饰器的方式添加路由电影列表页面的开发案例 接收web服务器的动态资源请求,给web服务器提供处理动态资源请求的服务。根据请求资源路径的后缀名进行判断…...

用于自动驾驶的基于立体视觉的语义 3D 对象和自我运动跟踪
Stereo Vision-based Semantic 3D Object and Ego-motion Tracking for Autonomous Driving 论文 摘要: 我们提出了一种基于立体视觉的方法,用于在动态自动驾驶场景中跟踪相机自我运动和 3D 语义对象。我们建议使用易于标记的 2D 检测和离散视点分类以及…...

Spring@Autowired注解
Autowired顾名思义,就是自动装配,其作用是为了消除代码Java代码里面的getter/setter与bean属性中的property。当然,getter看个人需求,如果私有属性需要对外提供的话,应当予以保留。 因此,引入Autowired注解…...

32.x86游戏实战-使用物品call
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 工具下载: 链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…...

Prometheus+Alertmanager+邮件告警
参考node_exporter-CSDN博客,球球不要断更!!!! 大致流程 1.部署promethus 可以写一个自定义的 systemd 服务启动文档,详情见自定义的 systemd 服务启动方式-CSDN博客 [rootlocalhost system]# sudo tee /e…...

upload-labs漏洞靶场~文件上传漏洞
寻找测试网站的文件上传的模块,常见:头像上传,修改上传,文件编辑器中文件上传,图片上传、媒体上传等,通过抓包上传恶意的文件进行测试,上传后缀名 asp php aspx 等的动态语言脚本,查…...
PostgreSQL 高阶函数详解:全面深入的功能与实用示例
PostgreSQL 高阶函数详解 PostgreSQL 是一款功能强大的开源关系数据库管理系统,以其丰富的功能和高扩展性著称。在数据处理和分析方面,PostgreSQL 提供了一系列高阶函数,可以极大地简化和优化各种复杂操作。本文将详细介绍 PostgreSQL 的高阶…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...

使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...

什么是VR全景技术
VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...