TOMCAT全解
目录
一 、WEB技术简介
HTTP协议
B/S 结构
前端三大核心技术简介
HTML
CSS
JavaScript
二 、WEB框架
web资源和访问
后台应用架构
三、tomacat的介绍
四、tomcat的部署
tomcat的反向代理
tomcat的负载均衡
memcached的安装与启动
tomcat的session会话保持
一 、WEB技术简介
HTTP协议
基本介绍:
• HTTP:超文本传输协议,是从万维网服务器传输超文本到本地浏览器的传送协议
• HTTP是一种应用层协议,是基于TCP/IP通信协议来传送数据的,其中 HTTP1.0、HTTP1.1、HTTP2.0 均为 TCP 实现,HTTP3.0 基于 UDP 实现。现主流使用 HTTP1.0 和 HTTP3.0
• 协议:为了是数据在网络源头到达目的,网络通信的参与方必须遵守相同的规则,这套规则曾为协议,他的最终体现为在网络上传输的数据报的格式 ,通俗的来讲协议就是要保证网络通信的双方,能够互相对接,互相联系的暗号。
工作过程:
当我们在浏览器输入一个网址,此时浏览器就会给对应的服务器发送一个HTTP请求,对应的服务器收到这个请求之后,经过计算就会返回一个HTTP响应,并且当我们访问一个网站的时候,可能涉及到不止一次的HTTP请求和相应的交互过程。
HTTP协议的特点:一发一收,一问一答。
B/S 结构
B/S架构,即浏览器/服务器架构,是一种网络架构模式,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户端只需要安装一个浏览器,通过Web服务器与数据库服务器进行数据交互。B/S架构利用了Web浏览器技术和Internet协议,实现了异构系统的连接和信息的共享。
B/S架构的分层:
第一层表现层:主要完成用户和后台的交互及最终查询结果的输出功能。
第二层逻辑层:主要是利用服务器完成客户端的应用逻辑功能。
第三层数据层:主要是接受客户端请求后独立进行各种运算。
前端三大核心技术简介
HTML
HTML(全称为“超文本标记语言”)是一种用于创建Web页面的标记语言。它是Web开发的基础,允许开发者定义页面的结构、内容和样式。HTML使用一些标记或“标签”来描述文本和媒体内容的结构和格式,这些标签可以指示网页浏览器如何显示内容,包括标题、段落、列表、超链接、图像、音频、视频等等。HTML还可以与其他Web技术(如CSS和JavaScript)结合使用,以实现更复杂和交互性的Web应用程序。
CSS
CSS通常称为CSS样式表或层叠样式表(级联样式表),主要用于设置HTML页面中的文本内容(字体、大小、对齐方式等)、图片的外形(宽高、边框样式、边距等)以及版面的布局等外观显示样式。
CSS以HTML为基础,提供了丰富的功能,如字体、颜色、背景的控制及整体排版等,而且还可以针对不同的浏览器设置不同的样式。
JavaScript
JavaScript是一门跨平台、面向对象的脚本语言(不需要编译,直接解释运行即可),来控制网页的行为,它能使网页可交互。
二 、WEB框架
web资源和访问
Web 资源的类型
- 静态资源
定义:指内容不随时间变化而变化的资源。 例子:HTML 文件、CSS 样式表、JavaScript 文件、图像文件(如 JPEG、PNG)、音频文件、视频文件等。
特点:一旦创建,在没有人为修改的情况下,每次访问都返回相同的内容。
- 动态资源
定义:其内容是根据特定的请求动态生成的资源。
例子:由服务器端脚本(如 PHP、Python、Java 等语言编写的服务器端程序)生成的网页内容。 特点:每次请求可能会得到不同的响应,因为资源的生成取决于请求的参数、用户身份、数据库状态等多种因素。
Web 资源的访问方式
- 通过浏览器访问 :这是最常见的方式。用户在浏览器的地址栏中输入 URL(统一资源定位符),浏览器向服务器发送请求,服务器返回相应的 Web 资源,浏览器解析并显示这些资源。 例如,当你在浏览器中输入一个网站的地址,如 “www.example.com”,浏览器会向该网站的服务器发送请求,获取 HTML、CSS、JavaScript 等资源,并将其渲染成用户可以看到的网页。
- 通过 API 访问 :许多 Web 应用程序提供 API(应用程序编程接口),允许其他程序以编程的方式访问其资源。 例如,一个天气应用程序可能提供一个 API,让其他开发者可以获取特定地区的天气信息。开发者可以使用编程语言(如 Python、Java、JavaScript 等)发送 HTTP 请求到该 API 的端点,获取以 JSON 或 XML 格式返回的天气数据。
- 命令行工具访问 有些工具可以通过命令行界面访问 Web 资源。例如,使用 “curl” 命令可以发送 HTTP 请求并获取资源的内容。 比如,在命令行中输入 “curl https://www.example.com”,会返回该网站的 HTML 内容。
影响 Web 资源访问的因素
- 网络连接: 稳定的网络连接是确保顺利访问 Web 资源的基础。如果网络速度慢或不稳定,可能会导致资源加载缓慢或失败。 例如,在网络拥堵的情况下,下载大文件或访问视频流可能会变得非常缓慢。
- 服务器性能 :服务器的处理能力、内存、存储等性能因素会影响对 Web 资源的响应速度。 如果服务器负载过高,可能会导致响应时间延长,甚至无法响应请求。
- 安全性设置 :防火墙、代理服务器、HTTPS 加密等安全设置可能会限制对某些 Web 资源的访问。 例如,一些公司的网络可能会设置防火墙,阻止员工访问特定类型的网站。
- 资源权限 :Web 资源可能具有不同的访问权限设置。例如,某些网页可能需要用户登录才能访问,或者某些 API 可能需要授权才能使用。 如果没有正确的权限,用户将无法访问相应的资源。
后台应用架构
单体架构
微服务
三、tomacat的介绍
四、tomcat的部署
常见部署方式
- standalone模式,Tomcat单独运行,直接接受用户的请求,不推荐。
- 反向代理,单机运行,提供了一个Nginx作为反向代理,可以做到静态由nginx提供响应,动态jsp代理给Tomcat LNMT:Linux + Nginx + MySQL + Tomcat ;LAMT:Linux + Apache(Httpd)+ MySQL + Tomcat
- 前置一台Nginx,给多台Tomcat实例做反向代理和负载均衡调度,Tomcat上部署的纯动态页面更 适合 LNMT:Linux + Nginx + MySQL + Tomcat
- 多级代理 LNNMT:Linux + Nginx + Nginx + MySQL + Tomcat
安装tomcat
安装3个主机,分别为nginx、tomcat-node1、tomcat-node2
在两台tomcat主机上安装java环境
yum install java-1.8.0-openjdk.x86_64 -y[root@tomcat-node1 ~]# ll /etc/alternatives//jre_openjdk/
总用量 184
-rw-r--r-- 1 root root 1522 8月 30 2022 ASSEMBLY_EXCEPTION
drwxr-xr-x 2 root root 188 8月 22 09:19 bin
drwxr-xr-x 9 root root 4096 8月 22 09:19 lib
-rw-r--r-- 1 root root 19274 8月 30 2022 LICENSE
-rw-r--r-- 1 root root 157063 8月 30 2022 THIRD_PARTY_README
在两台tomcat主机上安装软件包并启动tomcat
[root@tomcat-node1 ~]# tar zxf apache-tomcat-9.0.93.tar.gz -C /usr/local/
[root@tomcat-node1 ~]# cd /usr/local/
[root@tomcat-node1 local]# ls
apache-tomcat-9.0.93 etc include lib64 sbin src
bin games lib libexec share
[root@tomcat-node1 local]# ln -s apache-tomcat-9.0.93 tomcat
[root@tomcat-node1 local]# cd tomcat/
[root@tomcat-node1 tomcat]# ls
bin CONTRIBUTING.md logs RELEASE-NOTES webapps
BUILDING.txt lib NOTICE RUNNING.txt work
conf LICENSE README.md temp
[root@tomcat-node1 tomcat]# cd bin/
[root@tomcat-node1 bin]# ls
bootstrap.jar configtest.sh shutdown.sh
catalina.bat daemon.sh startup.bat
catalina.sh digest.bat startup.sh
catalina-tasks.xml digest.sh tomcat-juli.jar
ciphers.bat makebase.bat tomcat-native.tar.gz
ciphers.sh makebase.sh tool-wrapper.bat
commons-daemon.jar setclasspath.bat tool-wrapper.sh
commons-daemon-native.tar.gz setclasspath.sh version.bat
configtest.bat shutdown.bat version.sh
[root@tomcat-node1 bin]# ./startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
网页测试:
生成tomcat的启动文件
[root@tomcat-node1 conf]# vim tomcat.conf
[root@tomcat-node1 conf]# vim /lib/systemd/system/tomcat.service
使/usr/bin/tomcat具备可执行的权限
[root@tomcat-node1 conf]# vim /usr/bin/tomcat
[root@tomcat-node1 conf]# chmod +x /usr/bin/tomcat
[root@tomcat-node1 conf]# tomcat start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@tomcat-node1 conf]# vim /lib/systemd/system/tomcat.service
生成启动文件
[root@tomcat-node1 conf]# useradd -s /sbin/nologin -M tomcat
[root@tomcat-node1 conf]# chown -R tomcat.tomcat /usr/local/tomcat/
[root@tomcat-node1 conf]# systemctl daemon-reload
[root@tomcat-node1 conf]# systemctl enable --now tomcat
Created symlink /etc/systemd/system/multi-user.target.wants/tomcat.service → /usr/lib/systemd/system/tomcat.service.
tomcat的反向代理
[root@tomcat-node1 ~]# ls
anaconda-ks.cfg apache-tomcat-9.0.93.tar.gz test.jsp
[root@tomcat-node1 ~]# cp test.jsp /usr/local/tomcat/webapps/ROOT/
[root@tomcat-node1 ~]# scp test,jsp root@172.25.254.20:/usr/local/tomcat/webapps/ROOT/
nginx代理配置
[root@nginx-node1 ~]# vim /usr/local/nginx/conf.d/vhosts.conf
[root@nginx-node1 ~]# nginx -s reload
tomcat的负载均衡
使用源地址哈希算法
[root@nginx-node1 ~]# vim /usr/local/nginx/conf.d/vhosts.conf
[root@nginx-node1 ~]# nginx -s reload
测试:在不同的浏览器测试www.zf.org/test.jsp
memcached的安装与启动
[root@tomcat-node1 ~]# dnf install memcached -y
相关参数
set、add、replace、get、delete
#前三个命令是用于操作存储在 memcached 中的键值对的标准修改命令,都使用如下所示的语法:
command <key> <flags> <expiration time> <bytes>
<value>
#参数说明如下:
command set/add/replace
key key 用于查找缓存值
flags 可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息
expiration time 在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
bytes 在缓存中存储的字节数
value 存储的值(始终位于第二行)
#增加key,过期时间为秒,bytes为存储数据的字节数
add key flags exptime bytes
[root@tomcat-node1 ~]# vim /etc/sysconfig/memcached
[root@tomcat-node1 ~]# systemctl start memcached.service
[root@tomcat-node1 ~]# netstat -antlupe | grep memcached
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 977 77335 33552/memcached
tcp6 0 0 ::1:11211 :::* LISTEN 977 77336 33552/memcached
使用telnet测试
[root@tomcat-node2 ~]# yum install telnet -y
[root@tomcat-node2 ~]# telnet 172.25.254.20 11211
Trying 172.25.254.20...
Connected to 172.25.254.20.
Escape character is '^]'.
add key1 0 20 2
ll
STOREO
get key1
VALUE key1 0 2
ll
END
tomcat的session会话保持
2台tomcat主机传输相关软件包
[root@tomcat-node1 ~]# cd jar/
[root@tomcat-node1 jar]# ls
asm-5.2.jar memcached-session-manager-2.3.2.jar msm-kryo-serializer-2.3.2.jar spymemcached-2.12.3.jar
kryo-3.0.3.jar memcached-session-manager-tc9-2.3.2.jar objenesis-2.6.jar
kryo-serializers-0.45.jar minlog-1.3.1.jar reflectasm-1.11.9.jar
将spymemcached.jar、memcached-session-manage等相关的jar文件都放到Tomcat的lib目录下
[root@tomcat-node1 jar]# cp *.jar /usr/local/tomcat/lib/
[root@tomcat-node1 jar]# cd /usr/local/tomcat/lib/
[root@tomcat-node1 lib]# ls
annotations-api.jar jasper.jar servlet-api.jar tomcat-i18n-ko.jar
asm-5.2.jar jaspic-api.jar spymemcached-2.12.3.jar tomcat-i18n-pt-BR.jar
catalina-ant.jar jsp-api.jar tomcat-api.jar tomcat-i18n-ru.jar
catalina-ha.jar kryo-3.0.3.jar tomcat-coyote-ffm.jar tomcat-i18n-zh-CN.jar
catalina.jar kryo-serializers-0.45.jar tomcat-coyote.jar tomcat-jdbc.jar
catalina-ssi.jar memcached-session-manager-2.3.2.jar tomcat-dbcp.jar tomcat-jni.jar
catalina-storeconfig.jar memcached-session-manager-tc9-2.3.2.jar tomcat-i18n-cs.jar tomcat-util.jar
catalina-tribes.jar minlog-1.3.1.jar tomcat-i18n-de.jar tomcat-util-scan.jar
ecj-4.20.jar msm-kryo-serializer-2.3.2.jar tomcat-i18n-es.jar tomcat-websocket.jar
el-api.jar objenesis-2.6.jar tomcat-i18n-fr.jar websocket-api.jar
jasper-el.jar reflectasm-1.11.9.jar tomcat-i18n-ja.jar
修改tomcat配置 ,其可内容参考官方网址:https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration
[root@tomcat-node1 lib]# vim /usr/local/tomcat/conf/context.xml
[root@tomcat-node1 lib]# systemctl restart tomcat
[root@tomcat-node2 lib]# vim /usr/local/tomcat/conf/context.xml
[root@tomcat-node2 lib]# systemctl restart tomcat
修改nginx配置
[root@nginx-node1 ~]# vim /usr/local/nginx/conf.d/vhosts.conf
测试:
关闭172.25.254.10 的tomcat服务
相关文章:

TOMCAT全解
目录 一 、WEB技术简介 HTTP协议 B/S 结构 前端三大核心技术简介 HTML CSS JavaScript 二 、WEB框架 web资源和访问 后台应用架构 三、tomacat的介绍 四、tomcat的部署 tomcat的反向代理 tomcat的负载均衡 memcached的安装与启动 tomcat的session会话保持 一 、WE…...

UDP+TCP
一、UDP协议 1.recvfrom:recvform(int sockfd,void *buf,size_t len,int flags,struct sockaddr *src_addr,socklen_t *addrlen); 参数:socket的fd; 保存数据的空间地址 ; 空间大小; 默认接收方式(默认阻塞…...

分页查询面试记录和面试详情
文章目录 1.分页查询面试记录1.req和vo1.InterviewHistoryReq.java2.InterviewHistoryVO.java 2.InterviewController.java3.service1.InterviewHistoryService.java2.InterviewHistoryServiceImpl.java 4.测试 2.查询面试详情1.InterviewQuestionHistoryVO.java2.InterviewCon…...

Oracle 同义词SYNONYM 的实战使用
Oracle中的同义词(SYNONYM)是一种数据库对象,它为其他数据库对象(如表、视图、序列、存储过程、函数等)提供了一个别名。这个别名可以在SQL语句中代替原始对象的名称,从而简化查询和引用,提高数…...

实验11-1-8 查找子串
本题要求实现一个字符串查找的简单函数。 函数接口定义: char *search( char *s, char *t );函数search在字符串s中查找子串t,返回子串t在s中的首地址。若未找到,则返回NULL。 输入样例1: The C Programming Language ram输出样…...

Git存储库添加空目录-添加占位文件
Git本身并不会跟踪和管理空目录,它只会记录和管理文件的变化。因此,在操作空目录时,我们需要借助一些技巧来实现我们的需求。通过添加一个空的.gitignore或.gitkeep文件或添加一个占位文件,我们可以欺骗Git,并使其将空…...

基于x86 平台opencv的图像采集和seetaface6的人脸识别功能
目录 一、概述二、环境要求2.1 硬件环境2.2 软件环境三、开发流程3.1 编写测试3.2 配置资源文件3.2 验证功能一、概述 本文档是针对x86 平台opencv的图像采集和seetaface6的人脸识别功能,opencv通过读取本地图像,将采集的本地图像送给seetaface6的人脸识别模块从而实现人脸识…...

Git 的基本使用
1.创建 Git 本地仓库 仓库是进⾏版本控制的⼀个⽂件⽬录。我们要想对⽂件进⾏版本控制,就必须先创建⼀个仓库出来,例如下面代码创建了gitcode_linux的文件夹,之后再对其进行初始化。创建⼀个 Git 本地仓库对应的命令为 git init ,…...

如何解决 Cloudflare | 使用 Puppeteer 和 Node.JS
我认为,现在自动化任务越多,越能体现它们的价值,因此挑战也变得更加明显和困难。例如,Cloudflare 目前提供了强有力的安全措施来保护网站免受所有形式的自动化工具的侵扰。 但对于从事自动化项目(如网络爬虫、数据提取…...

笔记redis
Redis 介绍 Redis(Remote Dictionary Server)是用C语言开发的一个基于内存的键值对数据库 所有数据都在内存中,访问速度非常快:读的速度是110000次/s,写的速度是81000次/s适合存储热点数据(商品、新闻资…...

Django 后端架构开发:手机与邮箱验证码接入、腾讯云短信SDK和网易邮箱
Django 后端架构开发:手机与邮箱验证码接入、腾讯云短信SDK和网易邮箱接入 🌟 手机短信与邮箱短信验证码的应用场景 在现代应用中,短信和邮箱验证码是用户验证和安全管理的关键组成部分。它们广泛应用于注册、登录、找回密码等场景…...

RAID 方案比较
RAID(Redundant Array of Independent Disks)技术用于将多个磁盘驱动器组合成一个逻辑单元,以提高性能、可靠性或两者兼顾。以下是常见 RAID 级别的比较: RAID 0(条带化) 磁盘数量:最少 2 块可…...

零成本搭建个人 APP 和小程序后台
前言 前面也说了,通过 GitHub PagesGitHub Actions 只是解决了动态数据展示,但是要零成本得完成将用户信息存储下来,并实现数据交互呢? 我开始是想用云文档,种种原因,我还是希望有个自己能二次修改的后台…...

LCP 633 平方数之和 [leetcode - 8]
最近是在研究双指针啊,leetcode刷的题都是这方面的。都记录在最近的文章里,大家有兴趣可以去我主页看看 LCP633 平方数之和 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 b2 c 。 示例 1: 输入&…...

c语言试题及答案
1. 一个C程序的组成部分可以是( )。 A) 一个主函数和一至若干个其他函数 B) 一至若干个主函数 C) 一个主程序和一至若干个其他函数 D) 一个主程序和一至若干个子程序 2. 一个C程序的执行是从( )。 (A)本程序的main函数开始,到main函数结束 (B)本程序文件的第一个函…...

python实现链表
什么是链表 链表是由一系列节点组成的元素集合。每个节点包含两部分,数据域item和指向下一个节点的指针next。通过节点之间的相互连接最终串联成一个链表。 python实现一个简单链表 我们可以用python实现一个超级简单的链表 class node:# 初始化数据def __init_…...

Linux Shell 编程基础入门(一)
😀前言 本篇博文是关于自动化工具Shell 编程的基本介绍,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动…...

大白话讲微服务的灾难性雪崩效应
讲在前面,为什么微服务需要有熔断等策略呢?今天我们用大白话来讲讲微服务的灾难性雪崩效应,熔断策略就是解决雪崩效应的有效解决方案。 什么是灾难性雪崩效应? 假设我们有两个访问量比较大的服务A和B,这两个服务分别依…...

配置 K3s 访问私有镜像仓库
1.修改 K3s 配置文件 1)对于较新的 K3s 版本,你可以通过编辑 K3s 的配置文件来指定镜像仓库。编辑 /etc/rancher/k3s/config.yaml 文件(如果不存在则需要创建),添加或修改以下配置: # /etc/rancher/k3s/config.yaml …...

数学建模之数据分析【七】:对Pandas DataFrame 进行切片
文章目录 一、切片简介二、创建Pandas数据框三、使用iloc进行切片3.1 对行进行切片3.2 对列进行切片3.3 Dataframe选中特定单元格 四、使用loc创建切片4.1 使用Python对Dataframe中的行进行切片4.2 指定单元格 五、在Python中使用布尔条件六、结论 对 Pandas DataFrames 进行切…...

删除 Docker 容器的日志文件
删除 Docker 容器的日志文件可以帮助释放磁盘空间。以下是步骤: 1、查找日志文件路径: Docker 容器的日志通常存储在 /var/lib/docker/containers/<container_id>/ 目录下。日志文件通常名为 container_id-json.log。 通过以下命令找到日志文件的位置: docker ins…...

DevOps入门(上)
1: DevOps概念 DevOps: Development 和 Operations 的组合 DevOps 看作开发(软件工程)、技术运营和质量保障(QA)三者的交集。 突出重视软件开发人员和运维人员的沟通合作,通过自动化流程来使…...

基于Python的网易民谣歌词数据分析的设计与实现
基于Python的网易民谣歌词数据分析的设计与实现 Design and Implementation of Data Analysis for NetEase Folk Song Lyrics Based on Python 完整下载链接:基于Python的网易民谣歌词数据分析的设计与实现 文章目录 基于Python的网易民谣歌词数据分析的设计与实现摘要第一章…...

趋动科技联合云轴科技推出GPU云原生超融合解决方案
近日,趋动科技VirtAITech携手云轴科技ZStack推出GPU云原生超融合联合解决方案,提供全面、可扩展的云原生GPU存算一体化解决方案。 该方案基于云原生超融合及GPU资源池化技术,使得GPU资源管理变得更加简便易用,能够帮助企业用户在…...

Dooring智图,一款开箱即用的图片海报编辑器
嗨, 大家好, 我是徐小夕. 之前一直在社区分享零代码&低代码的技术实践,也陆陆续续设计并开发了多款可视化搭建产品,比如: Nocode/Doc,可视化 零代码打造下一代文件编辑器爆肝1000小时, Dooring零代码搭建平台3.5正式上线可视化…...

苹果macbook电脑怎么玩《黑神话:悟空》游戏教程来了
火爆全网《黑神话:悟空》是一款基于中国神话故事《西游记》改编的动作角色扮演游戏,它在PC平台上的系统要求已经公布,但目前官方尚未发布Mac版本。不过,Mac用户可以通过使用系统兼容工具如CrossOver来尝试在Mac上运行这款游戏。Cr…...

git 目录提交代码
初始化 Git 仓库(如果尚未初始化): 如果还没有初始化 Git 仓库,运行以下命令: git init将远程仓库添加到目录 b 中: 如果尚未关联远程仓库,添加远程仓库: git remote add origin <…...

多商户商品下单限购问题修复
问题: 当商品设置限购为 1 时,够买数量未超过限购,但是还是提示超出限购数量 修复方法: 修改代码路径: app\common\repositories\store\order\StoreOrderCreateRepository.php 修改代码一: i s p a y s a r r a y u n i q u e ( a r r a y c o l u m n ( is_pays array_un…...

eNSP 华为ACL配置
华为ACL配置 需求: 公司保证财务部数据安全,禁止研发部门和互联网访问财务服务器,但总裁办不受影响 R1: <Huawei>sys [Huawei]sys Router1 [Router1]undo info-center enable [Router1]int g1/0/0 [Router1-GigabitEth…...

实现高效研发运营一体化:深度落地DevOps解决方案的探索与实践
前言与概述 伴随着企业业务的快速发展,为了支撑业务发展,提高 IT 对业务的支撑能力建设。在研发工程协同方面,希望加强代码管理,实现持续构建、自动化测试、自动化部署、自动化运维,同时加强产品的安全和质量管理&…...