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

Docker 搭建 Gogs

Docker 搭建 Gogs

准备工作

  1. 先准备配置目录和持久化目录,举个栗子:mkdir -p /opt/module/gogs/{data,backup}

拉取官方Gogs镜像

# 拉取 gogs:0.13
docker pull gogs/gogs:0.13
# 拉取最新版 gogs 镜像
docker pull gogs/gogs

启动一个临时容器【通过创建一个临时的测试容器,用来复制配置文件,来反推配置】

docker run -d \-p 10022:22 \-p 13000:3000 \-v /opt/module/gogs/data:/data \--name=gogs \gogs/gogs:0.13

参数说明:

  • docker run -d: 启动一个Docker容器并将其设置为在后台(守护进程模式)运行。
  • -p 10022:22: 将主机的端口10022映射到容器内部的端口22,这允许你通过主机的10022端口访问容器内部的SSH服务。
  • -p 13000:3000: 将主机的端口10300映射到容器内部的端口3000,这允许你通过主机的10300端口访问容器内部的Gogs Web应用程序。
  • -v /opt/module/gogs/data:/data: 将主机上的/opt/module/gogs/data目录挂载到容器内部的/data目录,这样可以持久化地存储Gogs的数据,以防容器停止后数据丢失。
  • --name=gogs: 为容器指定一个名称,即"gogs",以便在后续操作中更容易引用该容器。
  • gogs/gogs:0.13: 指定要运行的Docker镜像的名称和标签。在这里,使用的是Gogs官方镜像的0.13版本。
复制gogs的配置文件到宿主机中
# 将容器app.ini文件复制到宿主机
docker cp gogs:/data/gogs/conf/app.ini /opt/module/gogs/conf# 将容器data文件夹下内容复制到宿主机
docker cp gogs:/data /opt/module/gogs/data# 将容器中的log文件夹复制到宿主机【可以不执行】
docker cp gogs:/var/log/nginx /opt/module/nginx/logs
docker cp gogs:/data /opt/module/gogs/data
移除临时容器
docker stop gogs
docker rm gogs

运行镜像

docker run -d \-p 10022:22 \-p 13000:3000 \-v /opt/module/gogs/data:/data \-v /opt/module/gogs/backup:/backup \-e TZ="Asia/Shanghai"\--name=gogs \--restart=always \gogs/gogs:0.13

参数说明:

  • docker run -d: 启动一个Docker容器并将其设置为在后台(守护进程模式)运行。
  • -p 10022:22: 将主机的端口10022映射到容器内部的端口22,这允许你通过主机的10022端口访问容器内部的SSH服务。
  • -p 13000:3000: 将主机的端口10300映射到容器内部的端口3000,这允许你通过主机的10300端口访问容器内部的Gogs Web应用程序。
  • -v /opt/module/gogs/data:/data: 将主机上的/opt/module/gogs/data目录挂载到容器内部的/data目录,这样可以持久化地存储Gogs的数据,以防容器停止后数据丢失。
  • -v /opt/module/gogs/backup:/backup: 将主机上的/opt/module/gogs/backup目录挂载到容器内部的/backup目录,这样可以持久化地存储Gogs的数据,以防容器停止后数据丢失。
  • -e TZ="Asia/Shanghai": 设置容器的时区为"Asia/Shanghai"。
  • --name=gogs: 为容器指定一个名称,即"gogs",以便在后续操作中更容易引用该容器。
  • --restart=always: 指定容器的重启策略为始终自动重启。这意味着如果容器意外停止,Docker将自动重新启动容器。
  • gogs/gogs:0.13: 指定要运行的Docker镜像的名称和标签。在这里,使用的是Gogs官方镜像的0.13版本。

查看启动日志

#docker logs [服务id/服务名]
docker logs gogsdocker logs -f -t --tail 20 gogs

进入gogs容器内部

docker ps     # 查看正在运行的容器,并得到 容器id# 进入tomcat容器内部
docker exec -it [容器id] /bin/bash  # 中间那个是容器id 就是 CONTAINER_ID
docker exec -it [容器id] /bin/sh
#  -it 表示进入
docker exec -it gogs sh
docker exec -it gogs /bin/sh
# 使用 命令别名 开启 ll命令
cat <<EOF >> /etc/profile
alias ll='ls -l --color=tty'
alias grep='grep --color=auto'
EOFsource /etc/profile

查看防火墙【开放端口】

# 查询端口是否开放
firewall-cmd --query-port=10022/tcp
firewall-cmd --query-port=13000/tcp# 开放80、443端口
firewall-cmd --permanent --add-port=10022/tcp
firewall-cmd --permanent --add-port=13000/tcp# 移除端口
firewall-cmd --permanent --remove-port=10022/tcp
firewall-cmd --permanent --remove-port=13000/tcp# 重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload# 查看已经开发那些端口
firewall-cmd --list-ports
firewall-cmd --zone=public --list-ports

测试

#浏览器中服务器
http://虚拟机IP:13000
http://虚拟机IP:10022

在这里插入图片描述

常用Git命令

# 配置
git config --global user.name "Your Name Comes Here"
git config --global user.email you@yourdomain.example.com# 查看
git --version
git status  # 初始仓库
git init# 添加至暂存区
git add ./file (将需要提交的提交到暂存区)# 提交本地仓库
git commit - m 'feat: 注释' (提交到本地)
git commit --amend# 快捷提交
git commit -am 'feat: 注释'# 直接回退
git log --oneline
git checkout filename# 从暂存区回退
git reset HEAD filename
git checkout -- filename# 从本地仓回退
git log --oneline
git reset --hard XXX# 从本地仓重置回退
git reflog
git reset --hard XXX# 查看分支
git branch 查看本地所有分支
git branch -a 查看所有的分支
git branch -r 查看远程所有分支# 创建分支
git branch 分支名称# 切换分支
git checkout 分支名称# 创建并切换
git checkout -b 分支名称# 合并分支
git merge 目标分支 -m "描述"
git rebase 目标分支# 将本地的Test分支推送到远端的master分支
git push origin Test:master# 删除分支
git branch -d 分支
# 删除远程分支
git push origin --delete 分支 # 查看tag
git tag# 查看详情
git show tag名称# 创建tag
git tag -a "v1.0" -m "描述"
git tag -a "v1.0" 标识码 -m "描述"# 删除tag
git tag -d 标签名# 查看远程仓库
git remote [-v]# 删除关联
git remote remove origin# 推送tag
git push origin --tags
git push tag名称# 删除远程tag
git push origin --delete tag名称# 获取远程tag
git fetch origin tag V1.2# 拉取远程代码
git pull <远程主机名> <远程分支名>:<本地分支名># 一、开发分支(develop)上的代码达到上线的标准后,要合并到 master 分支
git checkout develop
git pull
git checkout master
git merge develop
git push -u origin master# 二、当master代码改动了,需要更新开发分支(develop)上的代码
git checkout master 
git pull 
git checkout develop
git merge master 
git push -u origin develop

删除容器

注意: 还有删除数gogs据库

1. 停止和删除Gogs容器
docker stop gogs
docker rm gogs
2.查看数据卷的详细信息,包括挂载到容器的数据卷的名称:
docker inspect gogs

这将提供Gogs容器的详细信息,包括挂载的数据卷的名称。在JSON输出中,寻找"Mounts"字段,其中包含有关挂载的信息。

3.一旦你找到了相关的数据卷名称,你可以使用以下命令删除它:
#查看所有数据卷
docker volume lsdocker volume rm <volume_name>

请将<volume_name>替换为实际的数据卷名称,这样就可以删除与之关联的数据卷。

实际操作
[root@192 ~]# docker inspect gogs
[{"Id": "aa5966fa1e07c9830a93d146f4eebc0510db4f3d484f1aa74c57fd045a3efd78","Created": "2023-09-08T10:35:12.579405355Z","Path": "/app/gogs/docker/start.sh","Args": ["/bin/s6-svscan","/app/gogs/docker/s6/"],"State": {"Status": "running","Running": true,"Paused": false,"Restarting": false,"OOMKilled": false,"Dead": false,"Pid": 25338,"ExitCode": 0,"Error": "","StartedAt": "2023-09-08T10:35:12.847045044Z","FinishedAt": "0001-01-01T00:00:00Z","Health": {"Status": "healthy","FailingStreak": 0,"Log": [{"Start": "2023-09-08T18:40:43.607286021+08:00","End": "2023-09-08T18:40:43.684070251+08:00","ExitCode": 0,"Output": ""},{"Start": "2023-09-08T18:41:13.687167438+08:00","End": "2023-09-08T18:41:13.76545214+08:00","ExitCode": 0,"Output": ""},{"Start": "2023-09-08T18:41:43.769161045+08:00","End": "2023-09-08T18:41:43.851412268+08:00","ExitCode": 0,"Output": ""},{"Start": "2023-09-08T18:42:13.859782099+08:00","End": "2023-09-08T18:42:13.943519873+08:00","ExitCode": 0,"Output": ""},{"Start": "2023-09-08T18:42:43.951301454+08:00","End": "2023-09-08T18:42:44.023457417+08:00","ExitCode": 0,"Output": ""}]}},"Image": "sha256:4fa5cedc038517695cf354561e6eceec91d1803bc8b8d84744c796f2e47993b4","ResolvConfPath": "/var/lib/docker/containers/aa5966fa1e07c9830a93d146f4eebc0510db4f3d484f1aa74c57fd045a3efd78/resolv.conf","HostnamePath": "/var/lib/docker/containers/aa5966fa1e07c9830a93d146f4eebc0510db4f3d484f1aa74c57fd045a3efd78/hostname","HostsPath": "/var/lib/docker/containers/aa5966fa1e07c9830a93d146f4eebc0510db4f3d484f1aa74c57fd045a3efd78/hosts","LogPath": "/var/lib/docker/containers/aa5966fa1e07c9830a93d146f4eebc0510db4f3d484f1aa74c57fd045a3efd78/aa5966fa1e07c9830a93d146f4eebc0510db4f3d484f1aa74c57fd045a3efd78-json.log","Name": "/gogs","RestartCount": 0,"Driver": "overlay2","Platform": "linux","MountLabel": "","ProcessLabel": "","AppArmorProfile": "","ExecIDs": null,"HostConfig": {"Binds": ["/opt/module/gogs/data:/data"],"ContainerIDFile": "","LogConfig": {"Type": "json-file","Config": {}},"NetworkMode": "default","PortBindings": {"22/tcp": [{"HostIp": "","HostPort": "10022"}],"3000/tcp": [{"HostIp": "","HostPort": "13000"}]},"RestartPolicy": {"Name": "always","MaximumRetryCount": 0},"AutoRemove": false,"VolumeDriver": "","VolumesFrom": null,"ConsoleSize": [41,207],"CapAdd": null,"CapDrop": null,"CgroupnsMode": "host","Dns": [],"DnsOptions": [],"DnsSearch": [],"ExtraHosts": null,"GroupAdd": null,"IpcMode": "private","Cgroup": "","Links": null,"OomScoreAdj": 0,"PidMode": "","Privileged": false,"PublishAllPorts": false,"ReadonlyRootfs": false,"SecurityOpt": null,"UTSMode": "","UsernsMode": "","ShmSize": 67108864,"Runtime": "runc","Isolation": "","CpuShares": 0,"Memory": 0,"NanoCpus": 0,"CgroupParent": "","BlkioWeight": 0,"BlkioWeightDevice": [],"BlkioDeviceReadBps": [],"BlkioDeviceWriteBps": [],"BlkioDeviceReadIOps": [],"BlkioDeviceWriteIOps": [],"CpuPeriod": 0,"CpuQuota": 0,"CpuRealtimePeriod": 0,"CpuRealtimeRuntime": 0,"CpusetCpus": "","CpusetMems": "","Devices": [],"DeviceCgroupRules": null,"DeviceRequests": null,"MemoryReservation": 0,"MemorySwap": 0,"MemorySwappiness": null,"OomKillDisable": false,"PidsLimit": null,"Ulimits": null,"CpuCount": 0,"CpuPercent": 0,"IOMaximumIOps": 0,"IOMaximumBandwidth": 0,"MaskedPaths": ["/proc/asound","/proc/acpi","/proc/kcore","/proc/keys","/proc/latency_stats","/proc/timer_list","/proc/timer_stats","/proc/sched_debug","/proc/scsi","/sys/firmware"],"ReadonlyPaths": ["/proc/bus","/proc/fs","/proc/irq","/proc/sys","/proc/sysrq-trigger"]},"GraphDriver": {"Data": {"LowerDir": "/var/lib/docker/overlay2/92c6c2732f4f260fe37eb1965fc8c0b8b6c012c2b6d643011f8e295161106e14-init/diff:/var/lib/docker/overlay2/e8e4330e6a3c559eb093d7ee19dd92099ed5991c02623e70b288df5682bb99ac/diff:/var/lib/docker/overlay2/fb16d9b7d34cde7249809fec0867f74a96602cbc5e1e41df6e2229c318f1297b/diff:/var/lib/docker/overlay2/e52f016f52d3310c2b79b3cd41283f2fcb87778266b7657175ea11b97138bcf7/diff:/var/lib/docker/overlay2/3f28c4f1444f9c71a36d18744e709da916a7d3aae75fb501d61f3fbf5d504cbd/diff:/var/lib/docker/overlay2/ed08f7907ca663d1c06ccd8f595f7d9e0f0d9e320f4679dc47caf042df8dcc54/diff:/var/lib/docker/overlay2/732dc76ce54ea2e95f6c47811827e647e9739f587f0a6f8cb19c4ae89a6ddc64/diff:/var/lib/docker/overlay2/1f980dc96ce58159f4254a109d3ecf1d55261e37d533dfcbe75bc2c642850fdd/diff","MergedDir": "/var/lib/docker/overlay2/92c6c2732f4f260fe37eb1965fc8c0b8b6c012c2b6d643011f8e295161106e14/merged","UpperDir": "/var/lib/docker/overlay2/92c6c2732f4f260fe37eb1965fc8c0b8b6c012c2b6d643011f8e295161106e14/diff","WorkDir": "/var/lib/docker/overlay2/92c6c2732f4f260fe37eb1965fc8c0b8b6c012c2b6d643011f8e295161106e14/work"},"Name": "overlay2"},"Mounts": [{"Type": "bind","Source": "/opt/module/gogs/data","Destination": "/data","Mode": "","RW": true,"Propagation": "rprivate"},{"Type": "volume","Name": "4c4048a2ae7c1daed9004d6551878050cc8bfa318fcdc08d95ea73021aa17fcb","Source": "/var/lib/docker/volumes/4c4048a2ae7c1daed9004d6551878050cc8bfa318fcdc08d95ea73021aa17fcb/_data","Destination": "/backup","Driver": "local","Mode": "","RW": true,"Propagation": ""}],"Config": {"Hostname": "aa5966fa1e07","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"ExposedPorts": {"22/tcp": {},"3000/tcp": {}},"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["TZ=Asia/Shanghai","PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","GOGS_CUSTOM=/data/gogs"],"Cmd": ["/bin/s6-svscan","/app/gogs/docker/s6/"],"Healthcheck": {"Test": ["CMD-SHELL","(curl -o /dev/null -sS http://localhost:3000/healthcheck) || exit 1"]},"Image": "gogs/gogs:0.13","Volumes": {"/backup": {},"/data": {}},"WorkingDir": "/app/gogs","Entrypoint": ["/app/gogs/docker/start.sh"],"OnBuild": null,"Labels": {}},"NetworkSettings": {"Bridge": "","SandboxID": "09962969d9df5d6ecc24bc036b7b0841236be252a03f478377b9d74043044e4f","HairpinMode": false,"LinkLocalIPv6Address": "","LinkLocalIPv6PrefixLen": 0,"Ports": {"22/tcp": [{"HostIp": "0.0.0.0","HostPort": "10022"},{"HostIp": "::","HostPort": "10022"}],"3000/tcp": [{"HostIp": "0.0.0.0","HostPort": "13000"},{"HostIp": "::","HostPort": "13000"}]},"SandboxKey": "/var/run/docker/netns/09962969d9df","SecondaryIPAddresses": null,"SecondaryIPv6Addresses": null,"EndpointID": "e92cbb6dfd8e64c2dc986bdeb3b4b10871f1117eedfb2d961c819cffc95571e9","Gateway": "172.17.0.1","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"IPAddress": "172.17.0.5","IPPrefixLen": 16,"IPv6Gateway": "","MacAddress": "02:42:ac:11:00:05","Networks": {"bridge": {"IPAMConfig": null,"Links": null,"Aliases": null,"NetworkID": "ddd0a110308f6f26f3a3b4e63faeefc70c565fc776148030a4498acaf49d8937","EndpointID": "e92cbb6dfd8e64c2dc986bdeb3b4b10871f1117eedfb2d961c819cffc95571e9","Gateway": "172.17.0.1","IPAddress": "172.17.0.5","IPPrefixLen": 16,"IPv6Gateway": "","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"MacAddress": "02:42:ac:11:00:05","DriverOpts": null}}}}
]

根据Docker容器的详细信息,你的Gogs容器在挂载了两个卷(volumes):

  1. /opt/module/gogs/data目录挂载到容器的/data目录,这个卷用于持久化存储Gogs的数据。

  2. 还有一个匿名卷,它被挂载到容器的/backup目录。这个卷通常由Gogs用于备份目的,可能包含一些历史数据。

要删除与Gogs相关的历史数据,你可以执行以下步骤:

  1. 停止和删除Gogs容器(如果尚未完成):

    docker stop gogs
    docker rm gogs
    
  2. 删除Gogs数据卷:

    对于/opt/module/gogs/data目录的数据卷,你可以使用以下命令删除它:

    docker volume rm gogs_data
    

    如果你想删除备份目录的匿名卷,可以使用以下命令:

    docker volume rm 4c4048a2ae7c1daed9004d6551878050cc8bfa318fcdc08d95ea73021aa17fcb
    

    请谨慎操作,确保你不再需要这些数据。

  3. 然后,重新创建Gogs容器(使用之前的命令):

    docker run -d \-p 10022:22 \-p 10300:3000 \--name=gogs \gogs/gogs:0.13
    

通过执行以上步骤,你将删除与Gogs相关的历史数据,并重新启动一个新的Gogs容器,以确保不再使用旧的数据。

相关文章:

Docker 搭建 Gogs

Docker 搭建 Gogs 准备工作 先准备配置目录和持久化目录&#xff0c;举个栗子&#xff1a;mkdir -p /opt/module/gogs/{data,backup} 拉取官方Gogs镜像 # 拉取 gogs:0.13 docker pull gogs/gogs:0.13 # 拉取最新版 gogs 镜像 docker pull gogs/gogs启动一个临时容器【通过创…...

PostgreSQL的备份方式

PostgreSQL 提供多种方式进行备份&#xff0c;适用于不同需求的场景。常用的备份方法如下&#xff1a; 1. 逻辑备份&#xff08;pg_dump 和 pg_dumpall&#xff09; 1.1 使用 pg_dump 备份单个数据库 pg_dump 是 PostgreSQL 内置的逻辑备份工具&#xff0c;可以将数据库导出为…...

Springboot 3项目整合Knife4j接口文档(接口分组详细教程)

文章目录 前言一、Spring Boot 3.0整合Knife4j二、OpenApi 3注解的使用规范三、使用步骤 1.Spring Boot 3.0项目中使用knife4j2.在application.yml中添加knife4j相关配置3.设置WebMvc相关配置&#xff08;解决封装统一异常处理后doc.html无法打开的问题&#xff09;4.创建Knif…...

深入解析 Conda 安装的默认依赖包及其作用:conda create安装了哪些包(中英双语)

深入解析 Conda 安装的默认依赖包及其作用 当我们使用 Conda 创建新环境时&#xff0c;例如执行命令&#xff1a; conda create -n olmes python3.10Conda 会自动为我们安装一系列基础依赖包&#xff0c;保证 Python 环境能够正常运行。这些包不仅是我们开发的基础工具&#…...

Redis核心技术知识点全集

Redis数据结构和常用命令 1. String字符串2. Hash哈希3. List列表4. Set集合5. Sorted Set有序集合6. Redis常用命令参考Redis事务机制...

【Unity3D】ECS入门学习(九)SystemBase

SystemBase&#xff1a;支持主线程或多线程执行筛选实体任务。 主要介绍是内部成员&#xff1a;Entities的各种筛选方法&#xff0c;其内部成员还有EntityManager ForEach方法筛选&#xff0c;传递一个有参委托函数进去&#xff0c;参数ref xxx组件类&#xff08;可填多个&…...

【Triton-ONNX】如何使用 ONNX 模型服务与 Triton 通信执行推理任务上-Triton快速开始

模型部署系列文章 前置-docker 理解:【 0 基础 Docker 极速入门】镜像、容器、常用命令总结前置-http/gRPC 的理解: 【HTTP和gRPC的区别】协议类型/传输效率 /性能等对比【保姆级教程附代码】Pytorch (.pth) 到 TensorRT (.plan) 模型转化全流程【保姆级教程附代码(二)】Pytor…...

CertiK《Hack3d:2024年度安全报告》(附报告全文链接)

CertiK《Hack3d&#xff1a;2024年度安全报告》现已发布&#xff0c;本次报告深入分析了2024年Web3.0领域的安全状况。2024年损失总额超过23亿美元&#xff0c;同比增幅高达31.61%&#xff1b;其中&#xff0c;12月的损失金额最少。过去一年&#xff0c;网络钓鱼攻击和私钥泄露…...

TIOBE 指数 12 月排行榜公布,VB.Net排行第九

IT之家 12 月 10 日消息&#xff0c;TIOBE 编程社区指数是一个衡量编程语言受欢迎程度的指标&#xff0c;评判的依据来自世界范围内的工程师、课程、供应商及搜索引擎&#xff0c;今天 TIOBE 官网公布了 2024 年 12 月的编程语言排行榜&#xff0c;IT之家整理如下&#xff1a; …...

【网络协议】开放式最短路径优先协议OSPF详解(一)

OSPF 是为取代 RIP 而开发的一种无类别的链路状态路由协议&#xff0c;它通过使用区域划分以实现更好的可扩展性。 文章目录 链路状态路由协议OSPF 的工作原理OSPF 数据包类型Dijkstra算法、管理距离与度量值OSPF的管理距离OSPF的度量值 链路状态路由协议的优势拓扑结构路由器O…...

嵌入式Linux驱动开发的基本知识(驱动程序的本质、常见的设备类型、设备号的本质理解、设备实例的注册过程)

基本概念之什么是驱动程序()&#xff1f; 驱动程序本质上是代码逻辑的集合&#xff0c;通常用于管理、驱动多个设备实例。某个设备要想使用驱动程序&#xff0c;需要实例化相应的驱动程序的结构体&#xff0c;并在系统中注册&#xff0c;获得主设备号、次设备号&#xff0c;并…...

爱死机第四季(秘密关卡)4KHDR国语字幕

通过网盘分享的文件&#xff1a;love_death_robot 链接: https://pan.baidu.com/s/1bG3Xtdopenil2O_y93hY_g?pwd8kib 提取码: 8kib...

kubelet状态错误报错

journalctl -xeu kubelet 执行后的日志如下: -- -- The process exit code is exited and its exit status is 1. Jan 02 14:20:06 iv-ydipyqxfr4wuxjsij0bd systemd[1]: kubelet.service: Failed with result exit-code. -- Subject: Unit failed -- Defined-By: system…...

<div>{{ $t(“collectionPlan“) }}</div> 中的$t是什么

$t是Vue I18n插件提供的一种方法&#xff0c;用于根据当前应用的语言环境来获取相应的翻译文本。 以下是一个简单的示例&#xff0c;展示如何在Vue I18n中定义消息&#xff1a; const i18n new VueI18n({locale: en, // 设置默认语言messages: {en: {collectionPlan: Collec…...

[C++刷题] 求回文素数

求回文素数 题目 素数回文数的个数 题目描述 求 11 11 11 到 n n n 之间&#xff08;包括 n n n&#xff09;&#xff0c;既是素数又是回文数的整数有多少个。 输入格式 一个大于 11 11 11 小于 10000 10000 10000 的整数 n n n。 输出格式 11 11 11 到 n n n 之…...

SQLALchemy如何将SQL语句编译为特定数据库方言

最近在一个使用fastapitortoise-orm的项目中&#xff0c;需要将orm的语句编译成特定数据库方言&#xff0c;但是查询了官方文档及一些资料却找不到合适的方法论&#x1f614;&#xff0c;于是乎我就把目光放到了sqlalchemy身上&#xff0c;东找西找给我找着了。话不多说&#x…...

[卫星遥感] 解密卫星目标跟踪:挑战与突破的深度剖析

目录 [卫星遥感] 解密卫星目标跟踪&#xff1a;挑战与突破的深度剖析 1. 卫星目标跟踪的核心挑战 1.1 目标的高速与不确定性 1.2 卫星传感器的局限性 1.3 数据处理与融合问题 1.4 大尺度与实时性要求 2. 当前卫星目标跟踪的主流技术 2.1 卡尔曼滤波&#xff08;Kalman …...

I2C(一):存储器模式:stm32作为主机对AT24C02写读数据

存储器模式&#xff1a;在HAL库中&#xff0c;I2C有专门对存储器外设设置的库函数 I2C&#xff08;一&#xff09;&#xff1a;存储器模式的使用 1、I2C轮询式写读AT24C02一页数据2、I2C轮询式写读AT24C02多页数据3、I2C中断式写读AT24C02一页数据4、I2C使用DMA式写读AT24C02一…...

scrapy 教程

Scrapy Tutorial In this tutorial, we’ll assume that Scrapy is already installed on your system. If that’s not the case, see Installation guide. We are going to scrape quotes.toscrape.com, a website that lists quotes from famous authors. This tutorial …...

2025元旦源码免费送

我们常常在当下感到时间慢&#xff0c;觉得未来遥远&#xff0c;但一旦回头看&#xff0c;时间已经悄然流逝。对于未来&#xff0c;尽管如此&#xff0c;也应该保持一种从容的态度&#xff0c;相信未来仍有许多可能性等待着我们。 免费获取源码。 更多内容敬请期待。如有需要可…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...