四、若依(前后端分离)项目构建docker 镜像

news2024/11/15 9:01:23

若依(前后端分离)项目构建docker 镜像

1. 构建好ruoyi-admin.jar包,上传到服务器项目目录下

在这里插入图片描述

2. 创建conf目录将若依项目(Spring boot )配置文件修改好,上传存入conf目录

注意:这里的地址不能写127.0.0.1和localhost 这两个地址是容器内部的地址,容器(ruoyi-admin.jar访问mysql、redis)之间相互访问需要 宿主机ip +映射出的端口号

修改配置文件参数,数据库ip和账号密码
在这里插入图片描述
修改端口号,这个修改不修改都无所谓,docker run时端口映射时修改也可以的
在这里插入图片描述
redis ip和端口修改
在这里插入图片描述
输入目录 rz 上传

在这里插入图片描述

在这里插入图片描述
退出conf 目录,在/home/ruoyi 目录下,已传统的方式java -jar 方式执行看看能不能启动成功
在这里插入图片描述

java -jar  ruoyi-admin.jar --spring.config.location=conf/application.yml,conf/application-druid.yml
[root@mojin ruoyi]# java -jar  ruoyi-admin.jar --spring.config.location=conf/application.yml,conf/application-druid.yml
Application Version: 3.8.5
Spring Boot Version: 2.5.14

//                          _ooOoo_                               //
//                         o8888888o                              //
//                         88" . "88                              //
//                         (| ^_^ |)                              //
//                         O\  =  /O                              //
//                      ____/`---'\____                           //
//                    .'  \\|     |//  `.                         //
//                   /  \\|||  :  |||//  \                        //
//                  /  _||||| -:- |||||-  \                       //
//                  |   | \\\  -  /// |   |                       //
//                  | \_|  ''\---/''  |   |                       //
//                  \  .-\__  `-`  ___/-. /                       //
//                ___`. .'  /--.--\  `. . ___                     //
//              ."" '<  `.___\_<|>_/___.'  >'"".                  //
//            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 //
//            \  \ `-.   \_ __\ /__ _/   .-` /  /                 //
//      ========`-.____`-.___\_____/___.-`____.-'========         //
//                           `=---='                              //
//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //
//             佛祖保佑       永不宕机      永无BUG               //

19:52:20.608 [background-preinit] INFO  o.h.v.i.util.Version - [<clinit>,21] - HV000001: Hibernate Validator 6.2.3.Final
19:52:20.622 [main] INFO  c.r.RuoYiApplication - [logStarting,55] - Starting RuoYiApplication using Java 1.8.0_181 on mojin with PID 31304 (/home/ruoyi/ruoyi-admin.jar started by root in /home/ruoyi)
19:52:20.624 [main] DEBUG c.r.RuoYiApplication - [logStarting,56] - Running with Spring Boot v2.5.14, Spring v5.3.20
19:52:20.625 [main] INFO  c.r.RuoYiApplication - [logStartupProfileInfo,686] - The following 1 profile is active: "druid"
19:52:28.074 [main] INFO  o.a.c.h.Http11NioProtocol - [log,173] - Initializing ProtocolHandler ["http-nio-8025"]
19:52:28.085 [main] INFO  o.a.c.c.StandardService - [log,173] - Starting service [Tomcat]
19:52:28.086 [main] INFO  o.a.c.c.StandardEngine - [log,173] - Starting Servlet engine: [Apache Tomcat/9.0.63]
19:52:28.302 [main] INFO  o.a.c.c.C.[.[.[/] - [log,173] - Initializing Spring embedded WebApplicationContext
19:52:29.820 [main] DEBUG c.r.f.s.f.JwtAuthenticationTokenFilter - [init,242] - Filter 'jwtAuthenticationTokenFilter' configured for use
19:52:34.555 [main] INFO  c.a.d.p.DruidDataSource - [init,996] - {dataSource-1} inited
19:52:34.572 [main] DEBUG c.r.s.m.S.selectConfigList - [debug,137] - ==>  Preparing: select config_id, config_name, config_key, config_value, config_type, create_by, create_time, update_by, update_time, remark from sys_config
19:52:34.612 [main] DEBUG c.r.s.m.S.selectConfigList - [debug,137] - ==> Parameters: 
19:52:34.645 [main] DEBUG c.r.s.m.S.selectConfigList - [debug,137] - <==      Total: 6
19:52:36.720 [main] DEBUG c.r.s.m.S.selectDictDataList - [debug,137] - ==>  Preparing: select dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark from sys_dict_data WHERE status = ? order by dict_sort asc
19:52:36.751 [main] DEBUG c.r.s.m.S.selectDictDataList - [debug,137] - ==> Parameters: 0(String)
19:52:36.811 [main] DEBUG c.r.s.m.S.selectDictDataList - [debug,137] - <==      Total: 29
19:52:37.578 [main] INFO  o.q.i.StdSchedulerFactory - [instantiate,1220] - Using default implementation for ThreadExecutor
19:52:37.615 [main] INFO  o.q.c.SchedulerSignalerImpl - [<init>,61] - Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
19:52:37.615 [main] INFO  o.q.c.QuartzScheduler - [<init>,229] - Quartz Scheduler v.2.3.2 created.
19:52:37.619 [main] INFO  o.q.s.RAMJobStore - [initialize,155] - RAMJobStore initialized.
19:52:37.622 [main] INFO  o.q.c.QuartzScheduler - [initialize,294] - Scheduler meta-data: Quartz Scheduler (v2.3.2) 'quartzScheduler' with instanceId 'NON_CLUSTERED'
  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
  NOT STARTED.
  Currently in standby mode.
  Number of jobs executed: 0
  Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
  Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.

19:52:37.622 [main] INFO  o.q.i.StdSchedulerFactory - [instantiate,1374] - Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance.
19:52:37.623 [main] INFO  o.q.i.StdSchedulerFactory - [instantiate,1378] - Quartz scheduler version: 2.3.2
19:52:37.624 [main] INFO  o.q.c.QuartzScheduler - [setJobFactory,2293] - JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@2a39fe6a
19:52:37.690 [main] DEBUG c.r.q.m.S.selectJobAll - [debug,137] - ==>  Preparing: select job_id, job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark from sys_job
19:52:37.692 [main] DEBUG c.r.q.m.S.selectJobAll - [debug,137] - ==> Parameters: 
19:52:37.697 [main] DEBUG c.r.q.m.S.selectJobAll - [debug,137] - <==      Total: 3
19:52:41.485 [main] INFO  o.a.c.h.Http11NioProtocol - [log,173] - Starting ProtocolHandler ["http-nio-8025"]
19:52:42.497 [main] INFO  o.q.c.QuartzScheduler - [start,547] - Scheduler quartzScheduler_$_NON_CLUSTERED started.
19:52:42.525 [main] INFO  c.r.RuoYiApplication - [logStarted,61] - Started RuoYiApplication in 23.409 seconds (JVM running for 24.861)
(♥◠‿◠)ノ゙  若依启动成功   ლ(´ڡ`)゙  
 .-------.       ____     __        
 |  _ _   \      \   \   /  /    
 | ( ' )  |       \  _. /  '       
 |(_ o _) /        _( )_ .'         
 | (_,_).' __  ___(_ o _)'          
 |  |\ \  |  ||   |(_,_)'         
 |  | \ `'   /|   `-'  /           
 |  |  \    /  \      /           
 ''-'   `'-'    `-..-'              

启动成功完成

3. 编写Dockerfile

FROM openjdk:8
MAINTAINER mojin
VOLUME  /tmp
RUN mkdir -p /home/ruoyi/conf
ADD  ruoyi-admin.jar  /home/ruoyi/ruoyi-admin.jar
ADD  conf   /home/ruoyi/conf
EXPOSE  8025
RUN bash -c 'touch /home/ruoyi/ruoyi-admin.jar'
ENTRYPOINT  ["java", "-Xms256m", "-Xmx256m", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/home/ruoyi/ruoyi-admin.jar", "--spring.config.location=/home/ruoyi/conf/application.yml,/home/ruoyi/conf/application-druid.yml"]

输入命令:vim Dockerfile,复制粘贴上面的Dockerfile信息

在这里插入图片描述
按Esc 按键退出编辑模式,输入Shift+: 键 输入wq 回车 保存退出 Dockerfile

在这里插入图片描述
在这里插入图片描述

4. 构件镜像 docker build -t ruoyi-admin .

命令行输入docker build -t ruoyi-admin . 注意后面的 “.” 不能少,ruoyi-admin为镜像名称,只能小写

docker build -t ruoyi-admin  .
[root@mojin ruoyi]# docker build -t ruoyi-admin  .
Sending build context to Docker daemon 81.92 MB
Step 1/9 : FROM openjdk:8
 ---> e24ac15e052e
Step 2/9 : MAINTAINER mojin
 ---> Running in 6d54bf8b8ed8
 ---> 76b98c33030c
Removing intermediate container 6d54bf8b8ed8
Step 3/9 : VOLUME /tmp
 ---> Running in 121335e918d8
 ---> 8417ca2768e2
Removing intermediate container 121335e918d8
Step 4/9 : RUN mkdir -p /home/ruoyi/conf
 ---> Running in ee4f755e8611

 ---> 64828e4e808c
Removing intermediate container ee4f755e8611
Step 5/9 : ADD ruoyi-admin.jar /home/ruoyi/ruoyi-admin.jar
 ---> 37a006cbfb4f
Removing intermediate container 224e5f7c1251
Step 6/9 : ADD conf /home/ruoyi/conf
 ---> 1dcd5b8698e1
Removing intermediate container ad623d02c2be
Step 7/9 : EXPOSE 8025
 ---> Running in be1a4cff2c88
 ---> 7ffddf0c8d30
Removing intermediate container be1a4cff2c88
Step 8/9 : RUN bash -c 'touch /home/ruoyi/ruoyi-admin.jar'
 ---> Running in 29fcca7b4579

 ---> 2ce681171412
Removing intermediate container 29fcca7b4579
Step 9/9 : ENTRYPOINT java -Xms256m -Xmx256m -Djava.security.egd=file:/dev/./urandom -jar /home/ruoyi/ruoyi-admin.jar --spring.config.location=/home/ruoyi/conf/application.yml,/home/ruoyi/conf/application-druid.yml
 ---> Running in 567b91eb3c6c
 ---> d9a5fabe40d7
Removing intermediate container 567b91eb3c6c
Successfully built d9a5fabe40d7

在这里插入图片描述

5. 运行构建好的docker 镜像

运行构建的docker镜像
-v /home/ruoyi/conf:/home/ruoyi/conf # 挂载配置文件数据卷
-v /home/ruoyi/logs:/home/ruoyi/logs # 挂载日志文件数据卷

docker run -p 8025:8025 --name=ruoyi-admin -v /home/ruoyi/conf:/home/ruoyi/conf -v /home/ruoyi/logs:/home/ruoyi/logs  --restart=always --privileged=true  -d ruoyi-admin

查看镜像运行日志

docker logs -f ruoyi-admin

在这里插入图片描述
启动成功

在这里插入图片描述

6. 写个shell 脚本,一键执行卸载镜像、构建镜像、运行镜像步骤

vim ruoyi_build.sh 创建脚本 复制粘贴
chmod 777 ruoyi_build.sh 给读写执行权限

ruoyi_build.sh

#!/bin/bash

echo "开始部署…………"



prot_r=8025
prot_c=8025
BASE_PATH=/home/ruoyi
#docker 镜像/容器名字或者jar名字 这里都命名为这个【必须为小写】
SERVER_NAME=ruoyi-admin
#容器id
CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
#镜像idls
IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')



echo "修改*.jar文件的权限"
chmod 777 $BASE_PATH/ruoyi-admin.jar
#echo "迁移完成"

# 构建docker镜像
        if [ -n "$IID" ]; then
                echo "存在$SERVER_NAME镜像,IID=$IID"
				echo "停止运行中的容器:docker stop $CID"
                 docker stop $CID   # 停止运行中的容器
				 echo "删除原来的容器:docker rm $CID"
                 docker rm $CID     ##删除原来的容器
				 echo "删除原来的镜像:docker rmi $IID"
                 docker rmi $IID   ## 删除原来的镜像
				 

        else
                echo "不存在$SERVER_NAME镜像,开始构建镜像"
                     
       fi
       

 # 构建镜像 
echo "构建镜像"
cd $BASE_PATH
echo "docker build -t $SERVER_NAME ."  
docker build -t $SERVER_NAME .
echo "$SERVER_NAME 容器创建完成"

# 运行容器
echo "$SERVER_NAME 容器开始运行:docker run -p $prot_r:$prot_c --name=$SERVER_NAME -v /home/ruoyi/conf:/home/ruoyi/conf -v /home/ruoyi/logs:/home/ruoyi/logs  --restart=always --privileged=true  -d $SERVER_NAME"
#docker run -d -p $prot_r:$prot_c --name $SERVER_NAME $SERVER_NAME
docker run -p $prot_r:$prot_c --name=$SERVER_NAME -v /home/ruoyi/conf:/home/ruoyi/conf -v /home/ruoyi/logs:/home/ruoyi/logs  --restart=always --privileged=true  -d $SERVER_NAME
echo "完成部署。"

执行 sh ruoyi_build.sh

sh ruoyi_build.sh 
[root@mojin ruoyi]# sh ruoyi_build.sh 
开始部署…………
修改*.jar文件的权限
存在ruoyi-admin镜像,IID=d9a5fabe40d7
停止运行中的容器:docker stop 33a7462a936d
33a7462a936d
删除原来的容器:docker rm 33a7462a936d
33a7462a936d
删除原来的镜像:docker rmi d9a5fabe40d7
Untagged: ruoyi-admin:latest
Deleted: sha256:d9a5fabe40d7cbf30b339802f8432399e07aeeb0f6d49fbfbfa5bf14b4f75525
Deleted: sha256:2ce681171412b87e523e4787b22b5281dd43c50f80ec24ff6cb54655c6f9aa72
Deleted: sha256:5ba4fd7161b5e4eee9c58b2872b046dae6e3af132b96eab90bd607533af746fc
Deleted: sha256:7ffddf0c8d3090a97cc003645a5a33afcdacd5703e6fccf09be461cf9d131498
Deleted: sha256:1dcd5b8698e113965e67975f80f92ac53f0f9d84d86246563dba3a5d5eca30eb
Deleted: sha256:46e8207dc296c28820f6192a80ef37fd0dc500d7d6f3c4f5a7e125532ac6bde0
Deleted: sha256:37a006cbfb4f865b9ea9a0183ead41ee96b93a8634c6a081fbf109e49fee9e74
Deleted: sha256:d180d02654db0116c202adcbf2dd5068e713274da5227d8a46e7354f7811aba2
Deleted: sha256:64828e4e808c3500c89bdf98243fbbf3c9fa6e5fd195f94dedba0bfbfaf5ab7d
Deleted: sha256:3e2c9395641a718b4e9df92f8c3c8c98fc1f8c5afbcddbc52398713b03b519ad
Deleted: sha256:8417ca2768e2c90973514401943232b72765e1a41345fa3b26474988a566d405
Deleted: sha256:76b98c33030cef61c3ae28235809d1b34dee4644299da3f132c9550f6ac23996
构建镜像
docker build -t ruoyi-admin .
Sending build context to Docker daemon 81.93 MB
Step 1/9 : FROM openjdk:8
 ---> e24ac15e052e
Step 2/9 : MAINTAINER mojin
 ---> Running in 10af79bd5d2f
 ---> 4a54b9c7cba3
Removing intermediate container 10af79bd5d2f
Step 3/9 : VOLUME /tmp
 ---> Running in 42084c2ccadc
 ---> ac4c26eaafbd
Removing intermediate container 42084c2ccadc
Step 4/9 : RUN mkdir -p /home/ruoyi/conf
 ---> Running in 1fc136faa2ea

 ---> 9d9e0655e7a3
Removing intermediate container 1fc136faa2ea
Step 5/9 : ADD ruoyi-admin.jar /home/ruoyi/ruoyi-admin.jar
 ---> 7cc83c234549
Removing intermediate container 3679596388a5
Step 6/9 : ADD conf /home/ruoyi/conf
 ---> ffb7a25069db
Removing intermediate container 9cf1b163d593
Step 7/9 : EXPOSE 8025
 ---> Running in 26c1da0acd48
 ---> 6c253c004c37
Removing intermediate container 26c1da0acd48
Step 8/9 : RUN bash -c 'touch /home/ruoyi/ruoyi-admin.jar'
 ---> Running in 9057e0a827e5

 ---> 4dcfbca7b051
Removing intermediate container 9057e0a827e5
Step 9/9 : ENTRYPOINT java -Xms256m -Xmx256m -Djava.security.egd=file:/dev/./urandom -jar /home/ruoyi/ruoyi-admin.jar --spring.config.location=/home/ruoyi/conf/application.yml,/home/ruoyi/conf/application-druid.yml
 ---> Running in 42323d6c5d62
 ---> 1141cacdf794
Removing intermediate container 42323d6c5d62
Successfully built 1141cacdf794
ruoyi-admin 容器创建完成
ruoyi-admin 容器开始运行:docker run -p 8025:8025 --name=ruoyi-admin -v /home/ruoyi/conf:/home/ruoyi/conf -v /home/ruoyi/logs:/home/ruoyi/logs  --restart=always --privileged=true  -d ruoyi-admin
01d74c9f1888417f37dc31c3480d150767f7fa800fef337b9ee95958a2228866
完成部署。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/605778.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ur5在gazebo中仿真的官方源码浅析

一 复现 好久之前初学rosgazebo机械臂仿真的时候总有些懵&#xff0c;用的是ur5机械臂&#xff0c;现在回过头来看好像看懂了一些&#xff0c;故重新理清了一下功能包的逻辑&#xff0c;方便查阅。 官方源码 本文参考 ubuntu16.04安装UR3/UR5/UR10机械臂的ROS驱动并实现gazebo…

chatgpt赋能python:Python列表从后往前遍历

Python列表从后往前遍历 作为一门广泛应用于数据科学、机器学习和Web开发的高级编程语言&#xff0c;Python为开发人员和科学家们提供了很多便利。在Python里面&#xff0c;列表是一种非常常见的数据结构&#xff0c;它允许开发人员存储和处理多个元素。但是&#xff0c;有时候…

5款提高工作效率的无广告软件

今天推荐一些可以大幅度提升办公效率的小软件&#xff0c;安全无毒&#xff0c;下载简单&#xff0c;最重要的是没有广告&#xff01; 1.照片处理——Darktable Darktable是一款用于处理和管理数码照片的工具。它可以让你对RAW格式的照片进行非破坏性的编辑,并提供多种模块和…

Nginx 启动成功无法访问网页

查看是否有Nginx进程 ps -ef | grep nginx 如下图有三个进程就是启动成功了 端口 因为Nginx我配置的是80端口&#xff0c;所以只要检查80端口是否开放即可 netstat -lnt | grep 80tcp: 这表示所显示的连接是基于TCP协议的。0.0.0.0:80: 这是本地监听的IP地址和端口号。在这…

Zabbix5通过脚本自定义Nginx监控

1、客户端配置 1.1、nginx开启nginx status 使用 zabbix 监控 nginx&#xff0c;首先 nginx 需要配置 ngx_status&#xff0c;nginx.conf加入以下配置&#xff0c;并重启Nginx或reload location /ngx_status { stub_status on; access_log off; #allow 127.0.0.1; #deny all…

C语言---初识结构体

1、结构体的声明 1.1、结构的基础知识 结构是一些值得集合&#xff0c;这些值称为成员变量。结构的每一个成员可以是不同类型的变量。 char、short、int、long、long、float、double是内置类型。 比如说&#xff0c;我们想要描述单一的成绩&#xff0c;身高我们直接用int类型就…

FPGA时序约束--基础理论篇

FPGA开发过程中&#xff0c;离不开时序约束&#xff0c;那么时序约束是什么&#xff1f;简单点说&#xff0c;FPGA芯片中的逻辑电路&#xff0c;从输入到输出所需要的时间&#xff0c;这个时间必须在设定的时钟周期内完成&#xff0c;更详细一点&#xff0c;即需要满足建立和保…

MokaPeople 上线 300 天:主打管理者视角和全员体验

当前&#xff0c;我们是身处的时代已从 VUCA 向 BANI 转变&#xff0c;在政策、经济和技术等多方面因素的驱动下&#xff0c;数字化转型已成为企业发展的必然趋势。 尤其在当下对于人才环境中的竞争态势也不得不迫使 HR 转型也进入了关键性的时刻。 6 月 2 日&#xff0c;国内…

TCP协议的相关特性

目录 TCP特点概要 TCP协议段格式 TCP原理 确认应答 超时重传 连接管理(三次握手,四次挥手) 三次握手 四次挥手 流水线传输 滑动窗口 滑动窗口ACK丢失 滑动窗口数据报丢失 流量控制 拥塞控制 延迟应答 停止等待协议 回退N帧协议 面向字节流 缓冲区 粘包问题 TCP异常 &…

手撕源码(三)ArrayList(JDK8)

目录 1.使用示例2.new ArrayList<>() 解析2.1 空列表2.2 默认大小的共享数组实例2.3 构造方法 3.new ArrayList<>(initialCapacity) 解析3.1 指定大小的共享数组实例3.2 构造方法 4.add() 解析4.1 容量大小4.2 add() 解析4.3 ensureCapacityInternal() 解析1&#…

【吴恩达GANs】【C1W4】Conditional Controllabel Generation

视频链接&#xff1a;吴恩达DeepLearning.ai之生成对抗网络&#xff08;GANS&#xff09;专业化〔Andrew Ng〕 4-2 Conditional generation intuition Unconditional Generation&#xff1a;从随机类中得到输出&#xff0c;每次输出的类也都是随机的&#xff0c;无法得到指定…

Redis和Mysql数据同步方案---延迟双删

一般场景下数据库和redis的同步机制&#xff1a; 针对有请求来读取数据库的场景&#xff1a; 但是如果有想要修改数据库内容的场景该怎么保持同步呢&#xff1f; 在我们访问redis时&#xff0c;redis中的数据可能不是热点数据&#xff0c;即此时数据库的更新操作已经完成&…

chatgpt赋能python:Python几行代码:打造高效SEO工具

Python几行代码&#xff1a;打造高效SEO工具 Python作为一种易用、可靠的编程语言&#xff0c;在数据处理、网页爬取等方面都有广泛应用。而对于SEO工作者来说&#xff0c;利用Python写几行简单的代码&#xff0c;可以帮助我们更高效地分析网站数据、监控关键词排名、抓取竞争…

测试工程师:“ 这锅我不背 ” ,如何回怼开发....?

前言 在一个周末的早餐我被同事小周叫出去跑步&#xff0c;本想睡个懒觉&#xff0c;但是看他情绪不太稳定的样子&#xff0c;无奈艰难爬起陪他去跑步。 只见她气冲冲的对着河边大喊&#xff1a;真是冤枉啊&#xff01;!&#xff01; 原来是在工作中被莫名其妙背锅&#xff0…

计算机存储体系

目录 一、基本概念 二、主存储器的基本组成 三、SRAM和DRAM 四、只读存储器ROM 五、主存储器与CPU的连接 六、双端口RAM和多模块存储器 七、磁盘存储器 八、固态硬盘SSD 九、Cache高速缓冲存储器 十、虚拟存储系统 一、基本概念 存储器的层次结构 主存——辅存&…

1_5 光流法计算VO(optical_flow)

采用特征点法做VO存在耗时较大的问题&#xff0c;一般耗时情况&#xff1a;如下 (1) 在图像中提取特征点并计算特征描述&#xff0c; 非常耗时 ~10ms ORB&#xff0c;shift耗时更多&#xff1b; (2) 在不同图像中寻找特征匹配&#xff0c; 非常耗时 …

centos上搭建以太坊私有链

第一步 安装go语言环境 root用户下新建一个soft目录(相关目录可以随意) 去golang官网找到链接&#xff0c;在soft目录下下载golang压缩包 wget --no-check-certificate https://go.dev/dl/go1.20.4.linux-amd64.tar.gz其中如果出现Unable to establish SSL connection.&am…

Redis持久化、主从与哨兵架构-02

RDB快照&#xff08;snapshot&#xff09; 在默认情况下&#xff0c; Redis 将内存数据库快照保存在名字为 dump.rdb 的二进制文件中。 你可以对 Redis 进行设置&#xff0c; 让它在“ N 秒内数据集至少有 M 个改动”这一条件被满足时&#xff0c; 自动保存一次 数据集…

QLoRA | 48G内存训练24小时,改进版4-bit量化技术微调650亿参数的模型达到chatgpt99.3%的效果

一、概述 title&#xff1a;QLORA: Efficient Finetuning of Quantized LLMs 论文地址&#xff1a;https://arxiv.org/pdf/2305.14314.pdf 代码&#xff1a;GitHub - artidoro/qlora: QLoRA: Efficient Finetuning of Quantized LLMs and https://github.com/TimDettmers/bi…

【搭建服务器】Python一行命令搭建HTTP服务器并外网访问

文章目录 1.前言2.本地http服务器搭建2.1.Python的安装和设置2.2.Python服务器设置和测试 3.cpolar的安装和注册3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 Python作为热度比较高的编程语言&#xff0c;其语法简单且语句清晰&#xff0c;而且python有…