Docker实战【镜像部署】

文章目录

    • 💥 简介
    • 💡 基础-Tomcat镜像部署
    • 🎖️ 企业实战-制作Tomcat项目镜像
    • 🎯 企业实战-Docker部署SpringBoot项目
    • 🚀 问题复盘
    • 🍓 总结

💥 简介

  由于公司内部机器要做迁移,原系统机器部署在阿里云,要向亚马逊云迁移,由于之前的服务实在windows远程机器部署,并且有些项目因为打包问题,需要远程机器的IDEA做启停控制,本次准备先解决相关打包问题,然后将服务通过镜像方式部署,服务部署后,性能相比之前更快了,下面是相关操作文档。

💡 基础-Tomcat镜像部署

检查本地环境

[root@VM-12-2-opencloudos local]# cat /etc/os-release
NAME="OpenCloudOS"
VERSION="8.6"
ID="opencloudos"
ID_LIKE="rhel fedora"
VERSION_ID="8.6"
PLATFORM_ID="platform:oc8"
PRETTY_NAME="OpenCloudOS 8.6"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:opencloudos:opencloudos:8"
HOME_URL="https://www.opencloudos.org/"
BUG_REPORT_URL="https://bugs.opencloudos.tech/"

检查docker服务状态

[root@VM-12-2-opencloudos local]# systemctl status docker
● docker.service - Docker Application Container EngineLoaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)Active: active (running) since Wed 2023-11-01 21:57:27 CST; 3 weeks 2 days agoDocs: https://docs.docker.comMain PID: 34389 (dockerd)Tasks: 30Memory: 740.3MCGroup: /system.slice/docker.service├─34389 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock├─35838 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 3306 -container-ip 172.17.0.2 -container-port 3306└─35847 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 3306 -container-ip 172.17.0.2 -container-port 3306Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.

检查Docker版本

[root@VM-12-2-opencloudos local]# docker version
Client: Docker Engine - CommunityVersion:           24.0.7API version:       1.43Go version:        go1.20.10Git commit:        afdd53bBuilt:             Thu Oct 26 09:09:18 2023OS/Arch:           linux/amd64Context:           defaultServer: Docker Engine - CommunityEngine:Version:          24.0.7API version:      1.43 (minimum version 1.12)Go version:       go1.20.10Git commit:       311b9ffBuilt:            Thu Oct 26 09:08:20 2023OS/Arch:          linux/amd64Experimental:     falsecontainerd:Version:          1.6.24GitCommit:        61f9fd88f79f081d64d6fa3bb1a0dc71ec870523runc:Version:          1.1.9GitCommit:        v1.1.9-0-gccaecfcdocker-init:Version:          0.19.0GitCommit:        de40ad0

搜索Tomcat镜像版本
tomcat版本地址选择: https://javaforall.cn/179038.html
本次使用tomcat:8.5.46-jdk8-openjdk镜像
拉取镜像

[root@VM-12-2-opencloudos local]# docker pull tomcat:8.5.46-jdk8-openjdk
8.5.46-jdk8-openjdk: Pulling from library/tomcat
092586df9206: Pull complete
ef599477fae0: Pull complete
4530c6472b5d: Pull complete
d34d61487075: Pull complete
272f46008219: Pull complete
12ff6ccfe7a6: Pull complete
f26b99e1adb1: Pull complete
21bec9c8ea28: Pull complete
b8a32f28e27c: Pull complete
94fdd0ba0430: Pull complete
Digest: sha256:bb4ceffaf5aa2eba6c3ee0db46d863c8b23b263cb547dec0942e757598fd0c24
Status: Downloaded newer image for tomcat:8.5.46-jdk8-openjdk
docker.io/library/tomcat:8.5.46-jdk8-openjdk

创建容器挂载目录

[root@VM-12-2-opencloudos local]# mkdir -p /data/tomcat/data
[root@VM-12-2-opencloudos local]# chmod -R 777 /data/tomcat/

运行Tomcat容器

[root@VM-12-2-opencloudos local]# docker run -d  --name my_web --restart always -p 8080:8080 -v /data/tomcat/data:/usr/local/tomcat/webapps/ROOT/   tomcat:8.5.46-jdk8-openjdk
5a8bf43b2c1568d0d72477ae4a8846421533b66a5bd946ac27978980efe908f6

查看tomcat运行状态

[root@VM-12-2-opencloudos local]# docker ps
CONTAINER ID   IMAGE                        COMMAND                  CREATED         STATUS         PORTS                                                  NAMES
5a8bf43b2c15   tomcat:8.5.46-jdk8-openjdk   "catalina.sh run"        2 minutes ago   Up 2 minutes   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp              my_web
70c4b01b0631   mysql                        "docker-entrypoint.s…"   3 weeks ago     Up 3 weeks     0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql

🎖️ 企业实战-制作Tomcat项目镜像

tomcat版本选取

参考地址:https://pythonjishu.com/rvyvovkfpggafry/

tomcat 配置调优
参考地址:
https://blog.csdn.net/z20021111/article/details/126666667 https://blog.csdn.net/vnjohn/article/details/125980391
JDK8版本选取
JDK选用JDK 1.8.0_92

  JDK 1.8.0_92是Java Development Kit的最新版本,于2016年12月发布。它是Java SE 8u92的更新版本,包含了许多新的功能和改进,包括:

  • 改进的安全性:Java 8引入了一些安全性改进,包括增强的安全管理器、更强的加密算法、更好的SSL/TLS支持等。

  • 改进的垃圾回收:Java 8引入了一些垃圾回收改进,包括并行垃圾回收、低停顿垃圾回收、更好的内存使用等。

  • 改进的性能:Java 8引入了一些性能改进,包括更快的JIT编译器、更快的字符串操作、更快的数组操作等。

  • 改进的API:Java 8引入了一些新的API,包括Stream API、Optional类、Date/Time API等。

  • 改进的工具:Java 8引入了一些新的工具,包括JavaFX工具箱、Nashorn JavaScript引擎等。

    总的来说,Java 8的改进包括安全性、垃圾回收、性能、API和工具等方面。这些改进使得Java 8更加稳定、可靠和高效

上传文件
上传jdk+tomcat的tar.gz文件

-rw-r--r-- 1 root root 181599521 Nov 25 13:33 jdk1.8.0_92.tar.gz
-rw-r--r-- 1 root root  11582260 Nov 25 11:37 tomcat9.tar.gz
[root@VM-12-2-opencloudos tomcat]# pwd
/usr/local/tomcat

编写DockerFile
jvm参数调优项参考:https://blog.csdn.net/hadues/article/details/132018430

# 引入基础centos
FROM centos:7
# 时区
ENV TZ=Asia/Shanghai
#将dk和tomcat加入到容器
ADD jdk1.8.0_92.tar.gz /usr/local/tomcat
ADD tomcat9.tar.gz /usr/local/tomcat
RUN rm -rf /usr/local/tomcat/tomcat9/webapps/*
COPY ROOT.war /usr/local/tomcat/tomcat9/webapps/
#安装vim命令
RUN yum -y install vim
#设置环境
ENV MYPATH /usr/local
ENV JAVA_OPTS="-XX:+HeapDumpOnOutOfMemoryError -Xmx2g -Xms2g -Xmn768m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -Xss256k -XX:+UseG1GC -XX:+AlwaysPreTouch -XX:-ResizePLAB -XX:+ParallelRefProcEnabled -XX:+ExplicitGCInvokesConcurrent -XX:MaxGCPauseMillis=200  -XX:ParallelGCThreads=4 -XX:ConcGCThreads=2"
#设置工作目录
WORKDIR $MYPATH
#设置JAVA_HOME 环境变量,后边版本对应上方安装包
ENV JAVA_HOME /usr/local/tomcat/jdk1.8.0_92
#设置CLASSPATH 环境变量
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#设置CATALINA_HOME 环境变量
ENV CATALINA_HOME /usr/local/tomcat/tomcat9
#设置CATALINA_BASE 环境变量
ENV CATALINA_BASE /usr/local/tomcat/tomcat9
#设置PATH
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#指定容器启动后执行的命令
# 初始化文件上传目录
RUN mkdir /usr/local/zhixiao
RUN mkdir /usr/local/zhixiao/file
RUN chmod a+rwx /usr/local/zhixiao/
VOLUME [ "/usr/usr/local/zhixiao/file/",  "/usr/local/tomcat/tomcat9/webapps/"]
# 指定容器启动时执行的脚本
ENTRYPOINT [ "/usr/local/tomcat/tomcat9/bin/catalina.sh", "run" ]
# EXPOSE 映射端口
EXPOSE 8080

构建Docker镜像

docker build -t zxht:1.0 .

启动镜像

docker run -d --name zxht -p 8080:8080  zxht:1.0

查看启动结果

进入容器

docker exec -it 3e703eea724e /bin/bash
cd /usr/local/tomcat/tomcat9/logs
tail -f -n 1000  catalina.2023-11-25.log

可以看到配置的JVM参数生效了,同时项目启动成功,访问服务成功!

25-Nov-2023 07:16:47.710 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/tomcat9/conf/logging.properties
25-Nov-2023 07:16:47.710 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
25-Nov-2023 07:16:47.710 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+HeapDumpOnOutOfMemoryError
25-Nov-2023 07:16:47.710 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx2g
25-Nov-2023 07:16:47.710 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xms2g
25-Nov-2023 07:16:47.710 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmn768m
25-Nov-2023 07:16:47.711 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:MetaspaceSize=256m
25-Nov-2023 07:16:47.711 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:MaxMetaspaceSize=256m
25-Nov-2023 07:16:47.711 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xss256k
25-Nov-2023 07:16:47.711 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+UseG1GC
25-Nov-2023 07:16:47.711 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+AlwaysPreTouch
25-Nov-2023 07:16:47.711 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:-ResizePLAB
25-Nov-2023 07:16:47.711 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+ParallelRefProcEnabled
25-Nov-2023 07:16:47.711 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:+ExplicitGCInvokesConcurrent
25-Nov-2023 07:16:47.711 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:MaxGCPauseMillis=200
25-Nov-2023 07:16:47.712 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:ParallelGCThreads=4
25-Nov-2023 07:16:47.712 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:ConcGCThreads=2
25-Nov-2023 07:16:47.712 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
25-Nov-2023 07:16:47.712 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
25-Nov-2023 07:16:47.712 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
25-Nov-2023 07:16:47.712 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
25-Nov-2023 07:16:47.712 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/local/tomcat/tomcat9
25-Nov-2023 07:16:47.712 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/local/tomcat/tomcat9
25-Nov-2023 07:16:47.712 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/tomcat9/temp
25-Nov-2023 07:16:47.714 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The Apache Tomcat Native library which allows using OpenSSL was not found on the java.library.path: [/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib]
25-Nov-2023 07:16:48.044 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio2-8080"]
25-Nov-2023 07:16:48.099 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [585] milliseconds
25-Nov-2023 07:16:48.125 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
25-Nov-2023 07:16:48.125 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/9.0.64]
25-Nov-2023 07:16:48.145 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/usr/local/tomcat/tomcat9/webapps/ROOT.war]
25-Nov-2023 07:16:55.093 INFO [main] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
25-Nov-2023 07:17:03.556 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/usr/local/tomcat/tomcat9/webapps/ROOT.war] has finished in [15,411] ms
25-Nov-2023 07:17:03.559 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio2-8080"]
25-Nov-2023 07:17:03.562 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [15462] milliseconds

退出容器

ctrl+D 

🎯 企业实战-Docker部署SpringBoot项目

DockerFile文件编写

FROM centos:7
#将dk加入到容器
ADD jdk1.8.0_92.tar.gz /usr/local/jdk
# 声明工作目录
WORKDIR /opt
RUN mkdir -p /opt
#设置JAVA_HOME 环境变量,后边版本对应上方安装包
ENV JAVA_HOME /usr/local/jdk/jdk1.8.0_92
#设置CLASSPATH 环境变量
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#设置PATH
ENV PATH $PATH:$JAVA_HOME/bin
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 传包
COPY *.jar /opt/app.jar
EXPOSE 8080
# JVM启动参数设置
ENV JAVA_OPTS="\
-server \
-Xss256k \
-XX:MaxMetaspaceSize=256m \
-XX:+UseG1GC \
-XX:+AlwaysPreTouch \
-XX:-ResizePLAB \
-XX:+ParallelRefProcEnabled \
-XX:+ExplicitGCInvokesConcurrent \
-XX:MaxGCPauseMillis=200 \
-XX:ParallelGCThreads=4 \
-XX:ConcGCThreads=2 \
-Xmn768m \
-Xmx2g \
-Xms2g \
-XX:+PrintGCDetails \
-XX:+PrintTenuringDistribution \
-XX:+PrintGCTimeStamps \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=/opt \
-XX:+UseGCLogFileRotation \
-XX:NumberOfGCLogFiles=5 \
-XX:GCLogFileSize=20M"
ENTRYPOINT java ${JAVA_OPTS} -jar /opt/app.jar

-XX:+HeapDumpOnOutOfMemoryError 是指OOM时,自动生成dump文件。

倒数第二行的RUN命令,创建start.sh及授权,这里是为解决容器启动运行后,java应用进程号等于1的问题,进程号等于1会导致jstack等命令无法运行。

构建镜像
[root@VM-12-2-opencloudos tomcat]# docker build -t pc:1.0 .

启动镜像

docker run -d -p 8080:8080 --name pc pc:1.0

🚀 问题复盘

1、only whitespace content allowed before start tag and not ^ (position: START_DOCUMENT seen ^… @1:1)
重新删除问题jar包所在目录文件,重新刷新mvn下载文件即可
2、Groovy和java并存的web项目,打包失败
参考地址: https://blog.csdn.net/zzfengxia/article/details/81978714

🍓 总结

1.编写Dockerfile:这是镜像构建的说明文件。它包含了构建步骤、依赖项、环境变量、命令和其它需要在运行时配置的信息。

2.构建镜像:当Dockerfile编写完毕后,使用docker build命令构建镜像。

3.运行容器:使用docker run命令启动容器并运行应用程序。

4.配置网络和端口:在容器内部以及容器和外部网络之间传输数据需要配置网络和端口。

5.数据管理:在容器内部生成的文件和数据需要跨容器和主机存储和管理。

6.监控和日志:当容器运行时,需要监控日志和性能指标来确保正常运行。

7.更新和维护:镜像和容器需要不断更新和维护,以确保应用程序始终保持在最新的环境中运行。

总之,使用Docker镜像部署可以更加轻松、快捷地部署应用程序,并且可以帮助开发团队更好地管理和维护应用程序。

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

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

相关文章

深度学习优化器

不断优化 Example:for input, target in dataset:optimizer.zero_grad()output model(input)loss loss_fn(output, target)loss.backward()optimizer.step() import torch import torchvision.datasets from torch import nn from torch.nn import Sequential,Conv2d,MaxPoo…

题目:小明的彩灯(蓝桥OJ 1276)

题目描述&#xff1a; 解题思路&#xff1a; 一段连续区间加减&#xff0c;采用差分。最终每个元素结果与0比较大小&#xff0c;比0小即负数输出0。 题解&#xff1a; #include<bits/stdc.h> using namespace std;using ll long long; const int N 1e5 10; ll a[N],…

跨语种「AI同传」颠覆语音翻译!Meta谷歌连发重大突破

Meta谷歌接连放出重磅成果&#xff01;Meta开源无缝交流语音翻译模型&#xff0c;谷歌放出无监督语音翻译重大突破Translation 3。 就在Meta AI成立10周年之际&#xff0c;研究团队重磅开源了在语音翻译领域的突破性进展——「无缝交流」&#xff08;Seamless Communication&a…

Spring Cloud NetFlix

文章目录 Spring Cloud NetFlix1 介绍2 Eureka&#xff08;服务注册与发现&#xff09;2.1 介绍2.2 服务注册与发现示例2.2.1 Eureka Server&#xff1a;springcloud-eureka2.2.2 Eureka Client&#xff1a;springcloud-provider2.2.3 Eureka Client&#xff1a;springcloud-co…

激光炸弹(二维前缀和)-Java版

import java.io.*;/** 题目分析:一个最大5000 * 5000 的矩阵, 爆炸范围在 [0,10e9]* 地图上的目标是随机分布,如果要暴力计算每一个区间R的权值,会很麻烦* 可以用二维前缀和先将权值存起来* for(int i 1;i < n;i ) {for(int j 1;j < m;j ) {g[i][j] g[i][j-1] g[i-1]…

二叉树的前序中序后序遍历

二叉树的前序中序后序遍历-含递归和迭代代码 前序(中左右)中序(左中右)后序(左右中) 前序(中左右) 对于二叉树中的任意一个节点&#xff0c;先打印该节点&#xff0c;然后是它的左子树&#xff0c;最后右子树 A-B-D-E-C-F //递归 const preorderTraversal (root) > {const…

11.29 知识回顾(视图层、模板层)

一、视图层 1.1 响应对象 响应---》本质都是 HttpResponse -HttpResponse---》字符串 -render----》放个模板---》模板渲染是在后端完成 -js代码是在客户端浏览器里执行的 -模板语法是在后端执行的 -redirect----》重定向 -字符串参数不是…

用友NC JiuQiClientReqDispatch反序列化RCE漏洞复现

0x01 产品简介 用友NC是一款企业级ERP软件。作为一种信息化管理工具,用友NC提供了一系列业务管理模块,包括财务会计、采购管理、销售管理、物料管理、生产计划和人力资源管理等,帮助企业实现数字化转型和高效管理。 0x02 漏洞概述 用友 NC JiuQiClientReqDispatch 接口存在…

CETN03 - The Evolution of Computers

文章目录 I. IntroductionII. First Modern Digital Computer: ENIAC (1946)III. First Generation ComputerIV. Second Generation ComputerV. Third Generation ComputerVI. Fourth Generation ComputerVII. ConclusionI. 引言II. 第一台现代数字计算机&#xff1a;ENIAC&…

很全面 影响无人机自动返航的因素总结

在无人机技术不断成熟的今天&#xff0c;自主返航技术成为保障飞行安全的一种重要工具。无人机在多种情况下能够智能判断&#xff0c;主动实施返航动作&#xff0c;为用户提供更加可靠的飞行保障。以下是一些常见的无人机自动返航场景&#xff0c;让我们深入了解这项技术背后的…

【Maven】安装和使用

1. Maven 概述 Maven 是一款用于管理和构建 java 项目的工具&#xff0c;可以进行依赖管理、统一项目结构和项目构建。 1.1 Maven 模型 项目对象模型 (Project Object Model)依赖管理模型(Dependency)构建生命周期/阶段(Build lifecycle & phases) 1.2 Maven 仓库 仓库的…

HarmonyOS与AbilitySlice路由配置

上一章我有教到鸿蒙应用开发——Ability鸿蒙应用开发的基础知识&#xff0c;那么今天我们来讲一下AbilitySlice路由配置 AbilitySlice路由配置 虽然一个Page可以包含多个AbilitySlice&#xff0c;但是Page进入前台时界面默认只展示一个AbilitySlice。默认展示的AbilitySlice是…

Unity 网格布局控件-Grid Layout Group

Unity 网格布局控件-Grid Layout Group是Unity中的UGUI控件&#xff0c;用于在 UI 中创建网格布局&#xff0c; 它的作用是&#xff1a;自动将子对象排列成网格&#xff0c;即我们可以通过该组件对子对象按行和列的形式排列&#xff0c;根据指定的约束条件自动调整它们的大小和…

前缀和列题AcWing795-Java版

import java.io.*;//前缀和:改题目要求 求一串整数数列中l~r中的数的和 //可以提前算好前n项的和s[n],然后用s[n] - s[n - 1]public class Main {static int n,m,l,r;static int N 100010;static BufferedReader in new BufferedReader(new InputStreamReader(System.in));st…

git解决冲突

记录一次 git 解决冲突的过程。 情况是前一段时间我基于本地的 master 分支上新建了一个分支比如叫做 weight_linear: git checkout -b weight_linear 然后我已经在这个分支上进行了修改并上传到 github 上了&#xff0c;比如&#xff1a; git add . git commit -m "u…

流媒体音视频/安防视频云平台/可视化监控平台EasyCVR无法启动且打印panic报错,是什么原因?

国标GB视频监控管理平台/视频集中存储/云存储EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。AI智能大数据视频分析EasyCVR平台已经广泛应用在工地、工厂、园…

《TrollStore巨魔商店》TrollStore2安装使用教程

TrollStore(巨魔商店) 简单的说就相当于一个永久的免费证书&#xff0c;它可以给你的iPhone和iPad安装任何你想要安装的App软件&#xff0c;而且不需要越狱,不用担心证书签名过期的问题&#xff0c;不需要个人签名和企业签名。 支持的版本&#xff1a; TrollStore安装和使用教…

坚鹏:中国工商银行内蒙古分行数字化转型发展现状与成功案例培训

中国工商银行围绕“数字生态、数字资产、数字技术、数字基建、数字基因”五维布局&#xff0c;深入推进数字化转型&#xff0c;加快形成体系化、生态化实施路径&#xff0c;促进科技与业务加速融合&#xff0c;以“数字工行”建设推动“GBC”&#xff08;政务、企业、个人&…

pthread学习遇到的问题

1.pthread_t 是个类型&#xff0c;指的是线程ID。pthread_create&#xff08;&#xff09;的时候穿地址进去&#xff0c;线程创建好后就会成为线程ID&#xff08;即输出型参数&#xff09; 2.pthread_self() pthread_self()获得是调用这个函数的线程ID &#xff08;我以为是…

Shell数组函数:数组(二)

关联数组 注意&#xff1a;先声明关联数组 一、定义关联数组 方法一 #一次赋一值 #数组名[索引]变量值 [rootlocalhost ~]# declare -A ass_array1 [rootlocalhost ~]# ass_array1[index1]pear [rootlocalhost ~]# ass_array1[index2]apple [rootlocalhost ~]# ass_array1[ind…