From 0b7918b0a8fd7cbaf0e33f0021fd7f001a0daaf6 Mon Sep 17 00:00:00 2001
From: yz_08 <yz_0812@outlook.com>
Date: 星期二, 23 二月 2021 17:17:13 +0800
Subject: [PATCH] 新增员工基本信息,图片上传
---
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IEmpBaseInfoService.java | 6 +
/dev/null | 0
febs-server/febs-server-hr/src/main/resources/febs-server-hr.properties | 1
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpBaseInfoController.java | 17 ++++-
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpBaseInfo.java | 14 +++-
febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/MyUtil.java | 76 +++++++++++++++++++++++++
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/properties/FebsServerHrProperties.java | 2
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java | 53 ++++++++++++++++-
8 files changed, 156 insertions(+), 13 deletions(-)
diff --git a/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/MyUtil.java b/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/MyUtil.java
index aee937c..944c378 100644
--- a/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/MyUtil.java
+++ b/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/MyUtil.java
@@ -6,6 +6,8 @@
import cn.hutool.core.lang.Dict;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.multipart.MultipartFile;
+import sun.misc.BASE64Decoder;
+
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -124,6 +126,80 @@
//上传
file.transferTo(new File(uploadPpath + newName));
return Dict.create().set("fileName",fileName).set("suffix",suffix).set("newName",newName);
+ }
+ /**
+ * 对字节数组字符串进行Base64解码并生成图片
+ */
+ public static boolean generateImage(String imgStr,String url) {
+ if (imgStr == null) {
+ // 图像数据为空
+ return false;
+ }
+ imgStr = imgStr.split(",")[1];
+ BASE64Decoder decoder = new BASE64Decoder();
+ try {
+ // Base64解码
+ byte[] b = decoder.decodeBuffer(imgStr);
+ for (int i = 0; i < b.length; ++i) {
+ // 调整异常数据
+ if (b[i] < 0) {
+ b[i] += 256;
+ }
+ }
+ // 生成jpeg图片
+ String imgFilePath = url;
+ OutputStream out = new FileOutputStream(imgFilePath);
+ out.write(b);
+ out.flush();
+ out.close();
+ return true;
+ } catch (Exception e) {
+ return false;
+ }
+ }
+
+
+ /**
+ * 将base64字符串,生成文件
+ */
+ public static File convertBase64ToFile(String fileBase64String, String filePath, String fileName) {
+
+ BufferedOutputStream bos = null;
+ FileOutputStream fos = null;
+ File file = null;
+ try {
+ File dir = new File(filePath);
+ if (!dir.exists() && dir.isDirectory()) {//判断文件目录是否存在
+ dir.mkdirs();
+ }
+
+ BASE64Decoder decoder = new BASE64Decoder();
+ byte[] bfile = decoder.decodeBuffer(fileBase64String);
+
+ file = new File(filePath + File.separator + fileName);
+ fos = new FileOutputStream(file);
+ bos = new BufferedOutputStream(fos);
+ bos.write(bfile);
+ return file;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ } finally {
+ if (bos != null) {
+ try {
+ bos.close();
+ } catch (IOException e1) {
+ e1.printStackTrace();
+ }
+ }
+ if (fos != null) {
+ try {
+ fos.close();
+ } catch (IOException e1) {
+ e1.printStackTrace();
+ }
+ }
+ }
}
}
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpBaseInfoController.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpBaseInfoController.java
index c8e92f1..31cf086 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpBaseInfoController.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpBaseInfoController.java
@@ -110,12 +110,11 @@
@ApiOperation(value = "人员基本信息增加")
@PostMapping
@PreAuthorize("hasAuthority('empBaseinfo:add')")
- public void addEmpBaseInfo( MultipartFile file,@Valid EmpBaseInfo empBaseinfo) throws FebsException {
+ public void addEmpBaseInfo(@Valid EmpBaseInfo empBaseinfo) throws FebsException {
if(this.empBaseInfoService.verifyEmpNumb(empBaseinfo)){
throw new FebsException("已存在此员工编号");
}
try {
- //EmpBaseInfo tempInfo = this.empBaseInfoService.
this.empBaseInfoService.createEmpBaseInfo(empBaseinfo);
} catch (Exception e) {
String message = "新增员工基本信息失败";
@@ -153,7 +152,7 @@
@ApiOperation(value = "人员基本信息修改")
@PutMapping
@PreAuthorize("hasAuthority('empBaseinfo:update')")
- public void updateEmpBaseInfo(MultipartFile file,@Valid EmpBaseInfo empBaseinfo) throws FebsException {
+ public void updateEmpBaseInfo(@Valid EmpBaseInfo empBaseinfo) throws FebsException {
if(this.empBaseInfoService.verifyEmpNumb(empBaseinfo)){
throw new FebsException("已存在此员工编号:" + empBaseinfo.getEmpNumb());
}
@@ -239,4 +238,16 @@
throw new FebsException(message);
}
}
+
+ @GetMapping("image/{empId}")
+ public void getImage(@PathVariable String empId, HttpServletResponse response) throws FebsException {
+ try {
+ this.empBaseInfoService.getImage(empId,response);
+ } catch (Exception e) {
+ String message = "获取员工图片异常";
+ log.error(message, e);
+ throw new FebsException(message);
+ }
+
+ }
}
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpBaseInfo.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpBaseInfo.java
index aaebe7a..5f7ee44 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpBaseInfo.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpBaseInfo.java
@@ -291,12 +291,12 @@
@TableField(exist = false)
@ExcelField(value = "相关证件")
private String certificateListName = "";
-
+
@FieldInfo(name = "empStatus", type = "varchar", explain = "员工状态")
@TableField("empStatus")
@ExcelField(value = "员工状态",writeConverterExp = "0=在职,1=离职,2=退休" )
private String empStatus = "";
-
+
@FieldInfo(name = "dimissionType", type = "varchar", explain = "离职类型")
@@ -342,10 +342,10 @@
@TableField(exist = false)
private String ageStr = "";
-
+
@TableField(exist = false)
private String entryDateStr= "";
-
+
@TableField(exist = false)
private String dimissionDateStr= "";
@@ -397,4 +397,8 @@
@TableField(exist = false)
private String reporter;
-}
\ No newline at end of file
+ @FieldInfo(name = "imagePath", type = "varchar", explain = "图片路径")
+ @TableField("imagePath")
+ private String imagePath = "";
+
+}
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/properties/FebsServerHrProperties.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/properties/FebsServerHrProperties.java
index 9d83604..52527e7 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/properties/FebsServerHrProperties.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/properties/FebsServerHrProperties.java
@@ -20,4 +20,6 @@
private String uploadSinglePath = "C:/upload/hr/singlefile/";
+ private String empBaseInfoPath = "C:/upload/hr/empBaseInfo/";
+
}
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IEmpBaseInfoService.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IEmpBaseInfoService.java
index 90804b4..e021384 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IEmpBaseInfoService.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IEmpBaseInfoService.java
@@ -8,6 +8,8 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
+import javax.servlet.http.HttpServletResponse;
+import java.io.FileNotFoundException;
import java.util.List;
import java.util.Map;
@@ -29,7 +31,7 @@
* @return IPage<EmpBaseinfo>
*/
IPage<EmpBaseInfo> findEmpBaseInfos(QueryRequest request, EmpBaseInfo empBaseInfo);
-
+
/**
*智搜 查询(分页)
*
@@ -174,4 +176,6 @@
* @param listObject
*/
void importEmpBaseInfo(List<List<Object>> listObject);
+
+ void getImage(String empId, HttpServletResponse response) throws Exception;
}
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java
index 25736f0..40f13ae 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java
@@ -1,15 +1,22 @@
package cc.mrbird.febs.server.hr.service.impl;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.io.OutputStream;
import java.util.*;
import cc.mrbird.febs.common.core.entity.system.SysConfig;
+import cc.mrbird.febs.common.core.utils.MyUtil;
import cc.mrbird.febs.server.hr.entity.EmpDimissionLog;
import cc.mrbird.febs.server.hr.entity.EmpJobChange;
+import cc.mrbird.febs.server.hr.properties.FebsServerHrProperties;
import cc.mrbird.febs.server.hr.service.IEmpDimissionLogService;
import cc.mrbird.febs.server.hr.service.IEmpJobChangeService;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cc.mrbird.febs.server.hr.entity.*;
+import cn.hutool.core.util.StrUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
@@ -35,6 +42,9 @@
import cc.mrbird.febs.server.hr.mapper.EmpBaseInfoMapper;
import cc.mrbird.febs.server.hr.service.IEmpBaseInfoService;
import lombok.RequiredArgsConstructor;
+import org.springframework.util.FileSystemUtils;
+
+import javax.servlet.http.HttpServletResponse;
/**
* name:EmpBaseinfo
@@ -54,7 +64,7 @@
private final EmpBaseInfoMapper empBaseInfoMapper;
private final IEmpDimissionLogService dimissionLogService;
private final IEmpJobChangeService jobChangeService;
-
+ private final FebsServerHrProperties properties;
private final String operatorId = Optional.ofNullable(FebsUtil.getCurrentUser())
.map(u -> u.getUserId().toString())
.orElse("1");
@@ -152,7 +162,7 @@
iPage.setRecords(list);
return iPage;
}
-
+
@Override
public IPage<EmpBaseInfo> findZsEmpBaseInfos(QueryRequest request, EmpBaseInfo empBaseInfo) {
LambdaQueryWrapper<EmpBaseInfo> queryWrapper = new LambdaQueryWrapper<>();
@@ -261,6 +271,12 @@
} else{
empBaseInfo.setEmpId(dbInfo.getEmpId());
}
+ if (StrUtil.isNotBlank(empBaseInfo.getImagePath())){
+ String path = properties.getEmpBaseInfoPath()+empBaseInfo.getEmpId()+".png";
+ if ( MyUtil.generateImage(empBaseInfo.getImagePath(),path)) {
+ empBaseInfo.setImagePath(empBaseInfo.getEmpId()+".png");
+ };
+ }
empBaseInfo.setCreator(operatorId);
empBaseInfo.setModifier(operatorId);
this.saveOrUpdate(empBaseInfo);
@@ -269,6 +285,13 @@
@Override
@Transactional(rollbackFor = Exception.class)
public void updateEmpBaseInfo(EmpBaseInfo empBaseInfo) {
+ if (StrUtil.isNotBlank(empBaseInfo.getImagePath())){
+ String path = properties.getEmpBaseInfoPath()+empBaseInfo.getEmpId()+".png";
+ if ( MyUtil.generateImage(empBaseInfo.getImagePath(),path)) {
+ empBaseInfo.setImagePath(empBaseInfo.getEmpId()+".png");
+ }
+
+ }
EmpBaseInfo dbData = this.getById(empBaseInfo.getEmpId());
empBaseInfo.setCreateTime(dbData.getCreateTime());
empBaseInfo.setCreator(dbData.getCreator());
@@ -333,7 +356,7 @@
if (tempEmpBaseInfo == null) {
return false;
}
- return !empBaseInfo.getEmpId().equals(tempEmpBaseInfo.getEmpId());
+ return !empBaseInfo.getEmpNumb().equals(tempEmpBaseInfo.getEmpNumb());
}
@Override
@@ -485,6 +508,28 @@
this.save(empBaseInfo);
}
}
+
+ @Override
+ public void getImage(String empId, HttpServletResponse response) throws Exception {
+ EmpBaseInfo empBaseInfo = this.getById(empId);
+ if (StrUtil.isBlank(empBaseInfo.getImagePath())){
+ return;
+ }
+ String path = properties.getEmpBaseInfoPath()+empBaseInfo.getEmpId()+".png";
+ try (InputStream inputStream = new FileInputStream(path); OutputStream out = response.getOutputStream()) {
+
+ //byte数组用于存放图片字节数据
+ byte[] buff = new byte[inputStream.available()];
+
+ inputStream.read(buff);
+ inputStream.close();
+
+ //设置发送到客户端的响应内容类型
+ response.setContentType("image/png");
+
+ out.write(buff);
+ }
+ }
@Override
@@ -809,4 +854,4 @@
}
return stringObjectMap;
}
-}
\ No newline at end of file
+}
diff --git a/febs-server/febs-server-hr/src/main/resources/febs-server-hr.properties b/febs-server/febs-server-hr/src/main/resources/febs-server-hr.properties
index 47377c8..a86643b 100644
--- a/febs-server/febs-server-hr/src/main/resources/febs-server-hr.properties
+++ b/febs-server/febs-server-hr/src/main/resources/febs-server-hr.properties
@@ -1,2 +1,3 @@
febs.server.hr.uploadCommonPath=C:/upload/hr/commonfile/
febs.server.hr.uploadSinglePath=C:/upload/hr/singlefile/
+febs.server.hr.empBaseInfoPath=C:/upload/hr/empBaseInfo/
diff --git a/images/1.png b/images/1.png
deleted file mode 100644
index e8ebcb1..0000000
--- a/images/1.png
+++ /dev/null
Binary files differ
diff --git a/images/2.png b/images/2.png
deleted file mode 100644
index 0fa5772..0000000
--- a/images/2.png
+++ /dev/null
Binary files differ
diff --git a/images/3.png b/images/3.png
deleted file mode 100644
index 0130b2a..0000000
--- a/images/3.png
+++ /dev/null
Binary files differ
diff --git a/images/4.png b/images/4.png
deleted file mode 100644
index 8f25871..0000000
--- a/images/4.png
+++ /dev/null
Binary files differ
diff --git a/images/5.png b/images/5.png
deleted file mode 100644
index 88a59a1..0000000
--- a/images/5.png
+++ /dev/null
Binary files differ
diff --git a/images/6.png b/images/6.png
deleted file mode 100644
index 549407e..0000000
--- a/images/6.png
+++ /dev/null
Binary files differ
diff --git a/images/7.png b/images/7.png
deleted file mode 100644
index dd3f22e..0000000
--- a/images/7.png
+++ /dev/null
Binary files differ
diff --git a/images/PrometheusAPM.svg b/images/PrometheusAPM.svg
deleted file mode 100644
index 3b489bd..0000000
--- a/images/PrometheusAPM.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg id="SvgjsSvg1172" width="926" height="386.90625" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.com/svgjs"><defs id="SvgjsDefs1173"><pattern id="SvgjsPattern1196" x="0" y="0" width="46" height="45" patternUnits="userSpaceOnUse"><image id="SvgjsImage1197" xlink:href="https://cdn.iconscout.com/icon/free/png-512/prometheus-282488.png" width="46" height="45" preserveAspectRatio="none" x="0" y="0"></image></pattern><pattern id="SvgjsPattern1210" x="0" y="0" width="48.450404820353924" height="52.16666666666629" patternUnits="userSpaceOnUse"><image id="SvgjsImage1211" xlink:href="https://image.flaticon.com/icons/svg/660/660478.svg" width="48.450404820353924" height="52.16666666666629" preserveAspectRatio="none" x="0" y="0"></image></pattern><pattern id="SvgjsPattern1222" x="0" y="0" width="49.537511870845265" height="49.56808740821157" patternUnits="userSpaceOnUse"><image id="SvgjsImage1223" xlink:href="https://image.flaticon.com/icons/svg/1980/1980263.svg" width="49.537511870845265" height="49.56808740821157" preserveAspectRatio="none" x="0" y="0"></image></pattern><pattern id="SvgjsPattern1248" x="0" y="0" width="34.48011363636368" height="23.91855568427323" patternUnits="userSpaceOnUse"><image id="SvgjsImage1249" xlink:href="https://spring.io/img/homepage/icon-spring-cloud.svg" width="34.48011363636368" height="23.91855568427323" preserveAspectRatio="none" x="0" y="0"></image></pattern><pattern id="SvgjsPattern1252" x="0" y="0" width="34" height="29.902641173857205" patternUnits="userSpaceOnUse"><image id="SvgjsImage1253" xlink:href="https://spring.io/img/homepage/icon-spring-boot.svg" width="34" height="29.902641173857205" preserveAspectRatio="none" x="0" y="0"></image></pattern><pattern id="SvgjsPattern1256" x="0" y="0" width="33.95833333333326" height="29.902641173857205" patternUnits="userSpaceOnUse"><image id="SvgjsImage1257" xlink:href="https://cn.vuejs.org/images/logo.png" width="33.95833333333326" height="29.902641173857205" preserveAspectRatio="none" x="0" y="0"></image></pattern><pattern id="SvgjsPattern1260" x="0" y="0" width="52.5" height="36.913204002316235" patternUnits="userSpaceOnUse"><image id="SvgjsImage1261" xlink:href="https://steemitimages.com/p/o1AJ9qDyyJNSpZWhUgGYc3MngFqoAMwKgoMwPPRpp1oj1jxBQ?format=match&mode=fit&width=640" width="52.5" height="36.913204002316235" preserveAspectRatio="none" x="0" y="0"></image></pattern><pattern id="SvgjsPattern1318" x="0" y="0" width="36.666666666666515" height="34.583333333333144" patternUnits="userSpaceOnUse"><image id="SvgjsImage1319" xlink:href="https://exchange.icinga.com/cark/Grafana%20Module/logo" width="36.666666666666515" height="34.583333333333144" preserveAspectRatio="none" x="0" y="0"></image></pattern></defs><g id="SvgjsG1174" transform="translate(308.3892045454545,188.5)"><path id="SvgjsPath1175" d="M 0 0L 237 0L 237 65L 0 65Z" stroke="#d44c30" stroke-width="2" fill-opacity="1" fill="#ffffff"></path><g id="SvgjsG1176"><foreignObject id="SvgjsForeignObject1177" width="217" height="16" x="10" style="overflow:visible;" y="24.5"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 400; line-height: 16px; width: 217px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1178" transform="translate(376.84375,201)"><path id="SvgjsPath1179" d="M 0 0L 160 0L 160 40L 0 40Z" stroke="none" fill="none"></path><g id="SvgjsG1180"><foreignObject id="SvgjsForeignObject1181" width="160" height="19" x="0" style="overflow:visible;" y="10.5"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(212, 76, 48); font-weight: 700; line-height: 19px; width: 160px; word-break: break-word; border: 0px;">Prometheus Server</div></foreignObject></g></g><g id="SvgjsG1182" transform="translate(334.2225378787881,298.91666666666686)"><path id="SvgjsPath1183" d="M 0 0L 185.4545454545455 0L 185.4545454545455 63L 0 63Z" stroke="#323232" stroke-width="2" fill-opacity="1" fill="#e5e5e5"></path><g id="SvgjsG1184"><foreignObject id="SvgjsForeignObject1185" width="165.4545454545455" height="16" x="10" style="overflow:visible;" y="23.5"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 400; line-height: 16px; width: 165.455px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1186" transform="translate(413.76420454545485,312.41666666666686)"><path id="SvgjsPath1187" d="M 0 0L 90.5 0L 90.5 36L 0 36Z" stroke="#323232" stroke-width="2" fill-opacity="1" fill="#5c5c5c"></path><g id="SvgjsG1188"><foreignObject id="SvgjsForeignObject1189" width="70.5" height="18" x="10" style="overflow:visible;" y="9"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 14px; vertical-align: middle; color: rgb(255, 255, 255); font-weight: 700; line-height: 18px; width: 70.5px; word-break: break-word; border: 0px;">HDD/SSD</div></foreignObject></g></g><g id="SvgjsG1190" transform="translate(334.2225378787881,315.91666666666686)"><path id="SvgjsPath1191" d="M 0 0L 71 0L 71 29L 0 29Z" stroke="none" fill="none"></path><g id="SvgjsG1192"><foreignObject id="SvgjsForeignObject1193" width="71" height="16" x="0" style="overflow:visible;" y="6.5"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 16px; width: 71px; word-break: break-word; border: 0px;">Node</div></foreignObject></g></g><g id="SvgjsG1194" transform="translate(322.84375,198.5)"><path id="SvgjsPath1195" d="M 0 0L 46 0L 46 45L 0 45Z" stroke="none" fill="url(#SvgjsPattern1196)"></path></g><g id="SvgjsG1198" transform="translate(25.0104166666664,270.56376277262643)"><path id="SvgjsPath1199" d="M 0 4Q 0 0 4 0L 142.6666666666672 0Q 146.6666666666672 0 146.6666666666672 4L 146.6666666666672 69.70580778808085Q 146.6666666666672 73.70580778808085 142.6666666666672 73.70580778808085L 4 73.70580778808085Q 0 73.70580778808085 0 69.70580778808085Z" stroke-dasharray="3,4" stroke="#5ca0d3" stroke-width="2" fill-opacity="1" fill="#eaf5ff"></path><g id="SvgjsG1200"><foreignObject id="SvgjsForeignObject1201" width="136.6666666666672" height="16" x="5" style="overflow:visible;" y="-1.7352994437085112"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 400; line-height: 16px; width: 136.667px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1202" transform="translate(49.34375,285)"><path id="SvgjsPath1203" d="M 0 0L 160 0L 160 40L 0 40Z" stroke="none" fill="none"></path><g id="SvgjsG1204"><foreignObject id="SvgjsForeignObject1205" width="160" height="19" x="0" style="overflow:visible;" y="10.5"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 160px; word-break: break-word; border: 0px;">MySQL</div></foreignObject></g></g><g id="SvgjsG1206"><path id="SvgjsPath1207" d="M308.3892045454545 221L240.03314393939405 221L240.03314393939405 307.41666666666686L171.6770833333336 307.41666666666686" stroke-dasharray="8,5" stroke="#323232" stroke-width="1" fill="none"></path></g><g id="SvgjsG1208" transform="translate(41.11854758982304,278.91666666666686)"><path id="SvgjsPath1209" d="M 0 0L 48.450404820353924 0L 48.450404820353924 52.16666666666629L 0 52.16666666666629Z" stroke="none" fill="url(#SvgjsPattern1210)"></path></g><g id="SvgjsG1212" transform="translate(179.6770833333336,243.5)"><path id="SvgjsPath1213" d="M 0 4Q 0 0 4 0L 119.1666666666664 0Q 123.1666666666664 0 123.1666666666664 4L 123.1666666666664 31.416666666666856Q 123.1666666666664 35.416666666666856 119.1666666666664 35.416666666666856L 4 35.416666666666856Q 0 35.416666666666856 0 31.416666666666856Z" stroke="#ffffff" stroke-width="2" fill-opacity="1" fill="#ffffff"></path><g id="SvgjsG1214"><foreignObject id="SvgjsForeignObject1215" width="103.1666666666664" height="16" x="10" style="overflow:visible;" y="9.708333333333428"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 16px; width: 103.167px; word-break: break-word; border: 0px;">mysql_exporter</div></foreignObject></g></g><g id="SvgjsG1216" transform="translate(25.0104166666664,88.5883844238383)"><path id="SvgjsPath1217" d="M 0 4Q 0 0 4 0L 142.6666666666672 0Q 146.6666666666672 0 146.6666666666672 4L 146.6666666666672 69.70580778808085Q 146.6666666666672 73.70580778808085 142.6666666666672 73.70580778808085L 4 73.70580778808085Q 0 73.70580778808085 0 69.70580778808085Z" stroke-dasharray="10,6" stroke="#ff8080" stroke-width="2" fill-opacity="1" fill="#ffffff"></path><g id="SvgjsG1218"><foreignObject id="SvgjsForeignObject1219" width="136.6666666666672" height="16" x="5" style="overflow:visible;" y="-1.7352994437085112"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 400; line-height: 16px; width: 136.667px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1220" transform="translate(40.57499406457737,100.79928962922736)"><path id="SvgjsPath1221" d="M 0 0L 49.537511870845265 0L 49.537511870845265 49.56808740821157L 0 49.56808740821157Z" stroke="none" fill="url(#SvgjsPattern1222)"></path></g><g id="SvgjsG1224" transform="translate(90.11250593542263,108.08333333333314)"><path id="SvgjsPath1225" d="M 0 0L 69.26875593542263 0L 69.26875593542263 35L 0 35Z" stroke="none" fill="none"></path><g id="SvgjsG1226"><foreignObject id="SvgjsForeignObject1227" width="69.26875593542263" height="19" x="0" style="overflow:visible;" y="8"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 69.2688px; word-break: break-word; border: 0px;">Redis</div></foreignObject></g></g><g id="SvgjsG1228"><path id="SvgjsPath1229" d="M171.6770833333336 125.44128831787873L240.03314393939405 125.44128831787873L240.03314393939405 221L308.3892045454545 221" stroke-dasharray="8,5" stroke="#323232" stroke-width="1" fill="none"></path></g><g id="SvgjsG1230" transform="translate(179.6770833333336,143.08333333333314)"><path id="SvgjsPath1231" d="M 0 4Q 0 0 4 0L 119.1666666666664 0Q 123.1666666666664 0 123.1666666666664 4L 123.1666666666664 31.416666666666856Q 123.1666666666664 35.416666666666856 119.1666666666664 35.416666666666856L 4 35.416666666666856Q 0 35.416666666666856 0 31.416666666666856Z" stroke="#ffffff" stroke-width="2" fill-opacity="1" fill="#ffffff"></path><g id="SvgjsG1232"><foreignObject id="SvgjsForeignObject1233" width="103.1666666666664" height="16" x="10" style="overflow:visible;" y="9.708333333333428"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 16px; width: 103.167px; word-break: break-word; border: 0px;">redis_exporter</div></foreignObject></g></g><g id="SvgjsG1234" transform="translate(310.84375,25)"><path id="SvgjsPath1235" d="M 0 0L 211.9090909090909 0L 211.9090909090909 90.3440366972477L 0 90.3440366972477Z" stroke="#c3e5b5" stroke-width="2" fill-opacity="1" fill="#ffffff"></path><g id="SvgjsG1236"><foreignObject id="SvgjsForeignObject1237" width="191.9090909090909" height="19" x="10" style="overflow:visible;" y="35.67201834862385"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 191.909px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1238" transform="translate(320.93465909090907,32.1559633027523)"><path id="SvgjsPath1239" d="M 0 0L 211.9090909090909 0L 211.9090909090909 90.3440366972477L 0 90.3440366972477Z" stroke="#c3e5b5" stroke-width="2" fill-opacity="1" fill="#ffffff"></path><g id="SvgjsG1240"><foreignObject id="SvgjsForeignObject1241" width="191.9090909090909" height="19" x="10" style="overflow:visible;" y="35.67201834862385"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 191.909px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1242" transform="translate(325.9801136363636,41.10091743119267)"><path id="SvgjsPath1243" d="M 0 0L 201.8181818181818 0L 201.8181818181818 35.77981651376147L 0 35.77981651376147Z" stroke="none" fill="none"></path><g id="SvgjsG1244"><foreignObject id="SvgjsForeignObject1245" width="201.8181818181818" height="36" x="0" style="overflow:visible;" y="-0.11009174311926628"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 14px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 18px; width: 201.818px; word-break: break-word; border: 0px;">FEBS Cloud Docker Container</div></foreignObject></g></g><g id="SvgjsG1246" transform="translate(330.3636363636363,84.16477764905991)"><path id="SvgjsPath1247" d="M 0 0L 34.48011363636368 0L 34.48011363636368 23.91855568427323L 0 23.91855568427323Z" stroke="none" fill="url(#SvgjsPattern1248)"></path></g><g id="SvgjsG1250" transform="translate(375.84375,81.17273490426794)"><path id="SvgjsPath1251" d="M 0 0L 34 0L 34 29.902641173857205L 0 29.902641173857205Z" stroke="none" fill="url(#SvgjsPattern1252)"></path></g><g id="SvgjsG1254" transform="translate(421.88541666666674,81.17273490426794)"><path id="SvgjsPath1255" d="M 0 0L 33.95833333333326 0L 33.95833333333326 29.902641173857205L 0 29.902641173857205Z" stroke="none" fill="url(#SvgjsPattern1256)"></path></g><g id="SvgjsG1258" transform="translate(462.34375,77.66745349003844)"><path id="SvgjsPath1259" d="M 0 0L 52.5 0L 52.5 36.913204002316235L 0 36.913204002316235Z" stroke="none" fill="url(#SvgjsPattern1260)"></path></g><g id="SvgjsG1262"><path id="SvgjsPath1263" d="M426.8892045454545 188.5L426.8892045454545 122.5" stroke-dasharray="8,5" stroke="#323232" stroke-width="1" fill="none"></path></g><g id="SvgjsG1264" transform="translate(364.84375,136.08333333333314)"><path id="SvgjsPath1265" d="M 0 4Q 0 0 4 0L 128.37499999999977 0Q 132.37499999999977 0 132.37499999999977 4L 132.37499999999977 31.416666666666856Q 132.37499999999977 35.416666666666856 128.37499999999977 35.416666666666856L 4 35.416666666666856Q 0 35.416666666666856 0 31.416666666666856Z" stroke="#ffffff" stroke-width="2" fill-opacity="1" fill="#ffffff"></path><g id="SvgjsG1266"><foreignObject id="SvgjsForeignObject1267" width="112.37499999999977" height="32" x="10" style="overflow:visible;" y="1.708333333333428"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 16px; width: 112.375px; word-break: break-word; border: 0px;">google_cadvisor<div>node_exporter</div></div></foreignObject></g></g><g id="SvgjsG1268" transform="translate(605.84375,81.17273490426794)"><path id="SvgjsPath1269" d="M 0 0L 132 0L 132 59.72201595850751L 0 59.72201595850751Z" stroke="#d44c30" stroke-width="2" fill-opacity="1" fill="#ffffff"></path><g id="SvgjsG1270"><foreignObject id="SvgjsForeignObject1271" width="112" height="19" x="10" style="overflow:visible;" y="20.361007979253756"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(212, 76, 48); font-weight: 700; line-height: 19px; width: 112px; word-break: break-word; border: 0px;">Alertmanager</div></foreignObject></g></g><g id="SvgjsG1272"><path id="SvgjsPath1273" d="M605.84375 111.03374288352168L575.6164772727273 111.03374288352168L575.6164772727273 221L545.3892045454545 221" stroke-dasharray="8,5" stroke="#323232" stroke-width="1" fill="none"></path></g><g id="SvgjsG1274" transform="translate(519.6770833333336,150.36737703743893)"><path id="SvgjsPath1275" d="M 0 4Q 0 0 4 0L 119.1666666666664 0Q 123.1666666666664 0 123.1666666666664 4L 123.1666666666664 31.416666666666856Q 123.1666666666664 35.416666666666856 119.1666666666664 35.416666666666856L 4 35.416666666666856Q 0 35.416666666666856 0 31.416666666666856Z" stroke="#ffffff" stroke-width="2" fill-opacity="1" fill="#ffffff"></path><g id="SvgjsG1276"><foreignObject id="SvgjsForeignObject1277" width="103.1666666666664" height="16" x="10" style="overflow:visible;" y="9.708333333333428"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 16px; width: 103.167px; word-break: break-word; border: 0px;">push alerts</div></foreignObject></g></g><g id="SvgjsG1278" transform="translate(776.0104166666665,35.599550078748166)"><path id="SvgjsPath1279" d="M 0 4Q 0 0 4 0L 120.8333333333336 0Q 124.8333333333336 0 124.8333333333336 4L 124.8333333333336 41.573184825519775Q 124.8333333333336 45.573184825519775 120.8333333333336 45.573184825519775L 4 45.573184825519775Q 0 45.573184825519775 0 41.573184825519775Z" stroke="#5ca0d3" stroke-width="2" fill-opacity="1" fill="#ffffff"></path><g id="SvgjsG1280"><foreignObject id="SvgjsForeignObject1281" width="114.8333333333336" height="16" x="5" style="overflow:visible;" y="-3.7447725124628732"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 400; line-height: 16px; width: 114.833px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1282" transform="translate(776.0104166666665,88.24715047076182)"><path id="SvgjsPath1283" d="M 0 4Q 0 0 4 0L 120.8333333333336 0Q 124.8333333333336 0 124.8333333333336 4L 124.8333333333336 41.573184825519775Q 124.8333333333336 45.573184825519775 120.8333333333336 45.573184825519775L 4 45.573184825519775Q 0 45.573184825519775 0 41.573184825519775Z" stroke="#42b983" stroke-width="2" fill-opacity="1" fill="#ffffff"></path><g id="SvgjsG1284"><foreignObject id="SvgjsForeignObject1285" width="114.8333333333336" height="16" x="5" style="overflow:visible;" y="-3.7447725124628732"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 400; line-height: 16px; width: 114.833px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1286"><path id="SvgjsPath1287" d="M737.84375 111.03374288352171L756.9270833333333 111.03374288352171L756.9270833333333 58.38614249150805L776.0104166666665 58.38614249150805" stroke-dasharray="8,5" stroke="#323232" stroke-width="1" fill="none"></path></g><g id="SvgjsG1288"><path id="SvgjsPath1289" d="M737.84375 111.03374288352171L756.9270833333333 111.03374288352171L756.9270833333333 111.03374288352171L776.0104166666665 111.03374288352171" stroke-dasharray="8,5" stroke="#323232" stroke-width="1" fill="none"></path></g><g id="SvgjsG1290" transform="translate(804.6770833333335,45.18660120710439)"><path id="SvgjsPath1291" d="M 0 0L 63.1666666666664 0L 63.1666666666664 26.39908256880733L 0 26.39908256880733Z" stroke="none" fill="none"></path><g id="SvgjsG1292"><foreignObject id="SvgjsForeignObject1293" width="63.1666666666664" height="18" x="0" style="overflow:visible;" y="4.199541284403665"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 14px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 18px; width: 63.1667px; word-break: break-word; border: 0px;">Email</div></foreignObject></g></g><g id="SvgjsG1294" transform="translate(801.6770833333335,100.79928962922736)"><path id="SvgjsPath1295" d="M 0 0L 63.1666666666664 0L 63.1666666666664 26.39908256880733L 0 26.39908256880733Z" stroke="none" fill="none"></path><g id="SvgjsG1296"><foreignObject id="SvgjsForeignObject1297" width="63.1666666666664" height="18" x="0" style="overflow:visible;" y="4.199541284403665"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 14px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 18px; width: 63.1667px; word-break: break-word; border: 0px;">企业微信</div></foreignObject></g></g><g id="SvgjsG1298" transform="translate(778.0104166666665,145.28911795801247)"><path id="SvgjsPath1299" d="M 0 4Q 0 0 4 0L 116.83333333333348 0Q 120.83333333333348 0 120.83333333333348 4L 120.83333333333348 41.573184825519775Q 120.83333333333348 45.573184825519775 116.83333333333348 45.573184825519775L 4 45.573184825519775Q 0 45.573184825519775 0 41.573184825519775Z" stroke="#a1a1a1" stroke-width="2" fill-opacity="1" fill="#ffffff"></path><g id="SvgjsG1300"><foreignObject id="SvgjsForeignObject1301" width="110.83333333333348" height="16" x="5" style="overflow:visible;" y="-3.7447725124628732"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 400; line-height: 16px; width: 110.833px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1302"><path id="SvgjsPath1303" d="M778.0104166666665 168.07571037077236L756.84375 168.07571037077236L756.84375 111.07537607812515" stroke-dasharray="8,5" stroke="#323232" stroke-width="1" fill="none"></path></g><g id="SvgjsG1304" transform="translate(806.84375,150.36737703743893)"><path id="SvgjsPath1305" d="M 0 0L 63.1666666666664 0L 63.1666666666664 26.39908256880733L 0 26.39908256880733Z" stroke="none" fill="none"></path><g id="SvgjsG1306"><foreignObject id="SvgjsForeignObject1307" width="63.1666666666664" height="21" x="0" style="overflow:visible;" y="2.699541284403665"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 17px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 21px; width: 63.1667px; word-break: break-word; border: 0px;">.....</div></foreignObject></g></g><g id="SvgjsG1308" transform="translate(609.4270833333333,278.91666666666686)"><path id="SvgjsPath1309" d="M 0 4Q 0 0 4 0L 120.8333333333336 0Q 124.8333333333336 0 124.8333333333336 4L 124.8333333333336 41.573184825519775Q 124.8333333333336 45.573184825519775 120.8333333333336 45.573184825519775L 4 45.573184825519775Q 0 45.573184825519775 0 41.573184825519775Z" stroke="#ff8080" stroke-width="2" fill-opacity="1" fill="#ffffff"></path><g id="SvgjsG1310"><foreignObject id="SvgjsForeignObject1311" width="114.8333333333336" height="16" x="5" style="overflow:visible;" y="-3.7447725124628732"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 400; line-height: 16px; width: 114.833px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1312" transform="translate(661.9270833333337,288.5037177950231)"><path id="SvgjsPath1313" d="M 0 0L 63.1666666666664 0L 63.1666666666664 26.39908256880733L 0 26.39908256880733Z" stroke="none" fill="none"></path><g id="SvgjsG1314"><foreignObject id="SvgjsForeignObject1315" width="63.1666666666664" height="18" x="0" style="overflow:visible;" y="4.199541284403665"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 14px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 18px; width: 63.1667px; word-break: break-word; border: 0px;">Grafana </div></foreignObject></g></g><g id="SvgjsG1316" transform="translate(619.4270833333337,284.41159241276017)"><path id="SvgjsPath1317" d="M 0 0L 36.666666666666515 0L 36.666666666666515 34.583333333333144L 0 34.583333333333144Z" stroke="none" fill="url(#SvgjsPattern1318)"></path></g><g id="SvgjsG1320"><path id="SvgjsPath1321" d="M609.4270833333333 301.70325907942674L575.4081439393939 301.70325907942674L575.4081439393939 221L545.3892045454545 221" stroke-dasharray="8,5" stroke="#323232" stroke-width="1" fill="none"></path></g><g id="SvgjsG1322"><path id="SvgjsPath1323" d="M426.8892045454545 253.5L426.8892045454545 276.2083333333334L426.94981060606085 276.2083333333334L426.94981060606085 298.91666666666686" stroke-dasharray="8,5" stroke="#323232" stroke-width="1" fill="none"></path></g></svg>
\ No newline at end of file
diff --git a/images/QQ.jpg b/images/QQ.jpg
deleted file mode 100644
index 56634a3..0000000
--- a/images/QQ.jpg
+++ /dev/null
Binary files differ
diff --git a/images/SkywalkingAPM.svg b/images/SkywalkingAPM.svg
deleted file mode 100644
index 67b8757..0000000
--- a/images/SkywalkingAPM.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg id="SvgjsSvg1006" width="637.953125" height="414.75" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.com/svgjs"><defs id="SvgjsDefs1007"><pattern id="SvgjsPattern1022" x="0" y="0" width="34.48011363636368" height="23.91855568427323" patternUnits="userSpaceOnUse"><image id="SvgjsImage1023" xlink:href="https://spring.io/img/homepage/icon-spring-cloud.svg" width="34.48011363636368" height="23.91855568427323" preserveAspectRatio="none" x="0" y="0"></image></pattern><pattern id="SvgjsPattern1026" x="0" y="0" width="34" height="29.902641173857205" patternUnits="userSpaceOnUse"><image id="SvgjsImage1027" xlink:href="https://spring.io/img/homepage/icon-spring-boot.svg" width="34" height="29.902641173857205" preserveAspectRatio="none" x="0" y="0"></image></pattern><pattern id="SvgjsPattern1030" x="0" y="0" width="52.5" height="36.913204002316235" patternUnits="userSpaceOnUse"><image id="SvgjsImage1031" xlink:href="https://steemitimages.com/p/o1AJ9qDyyJNSpZWhUgGYc3MngFqoAMwKgoMwPPRpp1oj1jxBQ?format=match&mode=fit&width=640" width="52.5" height="36.913204002316235" preserveAspectRatio="none" x="0" y="0"></image></pattern><pattern id="SvgjsPattern1078" x="0" y="0" width="120.5" height="29" patternUnits="userSpaceOnUse"><image id="SvgjsImage1079" xlink:href="http://skywalking.apache.org/assets/logo.svg" width="120.5" height="29" preserveAspectRatio="none" x="0" y="0"></image></pattern><pattern id="SvgjsPattern1092" x="0" y="0" width="48" height="48" patternUnits="userSpaceOnUse"><image id="SvgjsImage1093" xlink:href="https://user-images.githubusercontent.com/9143253/47912437-f749bc00-de98-11e8-9669-e97f58b8be2e.png" width="48" height="48" preserveAspectRatio="none" x="0" y="0"></image></pattern></defs><g id="SvgjsG1008" transform="translate(323.5,25)"><path id="SvgjsPath1009" d="M 0 0L 211.9090909090909 0L 211.9090909090909 90.3440366972477L 0 90.3440366972477Z" stroke="#c3e5b5" stroke-width="2" fill-opacity="1" fill="#ffffff"></path><g id="SvgjsG1010"><foreignObject id="SvgjsForeignObject1011" width="191.9090909090909" height="19" x="10" style="overflow:visible;" y="35.67201834862385"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 191.909px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1012" transform="translate(333.59090909090907,32.1559633027523)"><path id="SvgjsPath1013" d="M 0 0L 211.9090909090909 0L 211.9090909090909 90.3440366972477L 0 90.3440366972477Z" stroke="#c3e5b5" stroke-width="2" fill-opacity="1" fill="#ffffff"></path><g id="SvgjsG1014"><foreignObject id="SvgjsForeignObject1015" width="191.9090909090909" height="19" x="10" style="overflow:visible;" y="35.67201834862385"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 191.909px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1016" transform="translate(338.6363636363636,41.10091743119267)"><path id="SvgjsPath1017" d="M 0 0L 201.8181818181818 0L 201.8181818181818 35.77981651376147L 0 35.77981651376147Z" stroke="none" fill="none"></path><g id="SvgjsG1018"><foreignObject id="SvgjsForeignObject1019" width="201.8181818181818" height="32" x="0" style="overflow:visible;" y="1.8899082568807337"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 16px; width: 201.818px; word-break: break-word; border: 0px;">FEBS MicroService<div>Skywalking Agent</div></div></foreignObject></g></g><g id="SvgjsG1020" transform="translate(364.0198863636363,84.16477764905994)"><path id="SvgjsPath1021" d="M 0 0L 34.48011363636368 0L 34.48011363636368 23.91855568427323L 0 23.91855568427323Z" stroke="none" fill="url(#SvgjsPattern1022)"></path></g><g id="SvgjsG1024" transform="translate(423,81.17273490426794)"><path id="SvgjsPath1025" d="M 0 0L 34 0L 34 29.902641173857205L 0 29.902641173857205Z" stroke="none" fill="url(#SvgjsPattern1026)"></path></g><g id="SvgjsG1028" transform="translate(475,77.66745349003844)"><path id="SvgjsPath1029" d="M 0 0L 52.5 0L 52.5 36.913204002316235L 0 36.913204002316235Z" stroke="none" fill="url(#SvgjsPattern1030)"></path></g><g id="SvgjsG1032" transform="translate(457,126.75)"><path id="SvgjsPath1033" d="M 7.92 0L 16.080000000000002 0L 16.080000000000002 65L 24 65L 12 77L 0 65L 7.92 65L 7.92 0Z" stroke="#323232" stroke-width="2" fill-opacity="1" fill="#ffffff"></path><g id="SvgjsG1034"><foreignObject id="SvgjsForeignObject1035" width="33.599999999999994" height="16" x="-4.800000000000001" style="overflow:visible;" y="26.65"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 400; line-height: 16px; width: 33.6px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1036" transform="translate(384.5,126.75)"><path id="SvgjsPath1037" d="M 7.92 0L 16.080000000000002 0L 16.080000000000002 65L 24 65L 12 77L 0 65L 7.92 65L 7.92 0Z" stroke="#323232" stroke-width="2" fill-opacity="1" fill="#ffffff"></path><g id="SvgjsG1038"><foreignObject id="SvgjsForeignObject1039" width="33.599999999999994" height="16" x="-4.800000000000001" style="overflow:visible;" y="26.65"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 400; line-height: 16px; width: 33.6px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1040" transform="translate(245.9545454545455,233.75)"><path id="SvgjsPath1041" d="M 0 0L 367 0L 367 156L 0 156Z" stroke="#323232" stroke-width="2" fill-opacity="1" fill="#ffffff"></path><g id="SvgjsG1042"><foreignObject id="SvgjsForeignObject1043" width="347" height="16" x="10" style="overflow:visible;" y="70"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 400; line-height: 16px; width: 347px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1044" transform="translate(342.5,203.75)"><path id="SvgjsPath1045" d="M 0 0L 182 0L 182 30L 0 30Z" stroke="#323232" stroke-width="2" fill-opacity="1" fill="#ffffff"></path><g id="SvgjsG1046"><foreignObject id="SvgjsForeignObject1047" width="162" height="16" x="10" style="overflow:visible;" y="7"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 400; line-height: 16px; width: 162px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1048" transform="translate(354.5,206.25)"><path id="SvgjsPath1049" d="M 0 0L 158 0L 158 25L 0 25Z" stroke="none" fill="none"></path><g id="SvgjsG1050"><foreignObject id="SvgjsForeignObject1051" width="158" height="16" x="0" style="overflow:visible;" y="4.5"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 16px; width: 158px; word-break: break-word; border: 0px;">Receiver gRPC/HTTP</div></foreignObject></g></g><g id="SvgjsG1052" transform="translate(317,251.5806574923547)"><path id="SvgjsPath1053" d="M 0 0L 90 0L 90 24.169342507645297L 0 24.169342507645297Z" stroke="#f5b297" stroke-width="2" fill-opacity="1" fill="#f5b297"></path><g id="SvgjsG1054"><foreignObject id="SvgjsForeignObject1055" width="70" height="18" x="10" style="overflow:visible;" y="3.0846712538226484"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 14px; vertical-align: middle; color: rgb(255, 255, 255); font-weight: 700; line-height: 18px; width: 70px; word-break: break-word; border: 0px;">Tracing</div></foreignObject></g></g><g id="SvgjsG1056" transform="translate(460,251.5806574923547)"><path id="SvgjsPath1057" d="M 0 0L 90 0L 90 24.169342507645297L 0 24.169342507645297Z" stroke="#fed78b" stroke-width="2" fill-opacity="1" fill="#fed78b"></path><g id="SvgjsG1058"><foreignObject id="SvgjsForeignObject1059" width="70" height="18" x="10" style="overflow:visible;" y="3.0846712538226484"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 14px; vertical-align: middle; color: rgb(255, 255, 255); font-weight: 700; line-height: 18px; width: 70px; word-break: break-word; border: 0px;">Metric</div></foreignObject></g></g><g id="SvgjsG1060" transform="translate(317,289.07537607812515)"><path id="SvgjsPath1061" d="M 0 0L 233 0L 233 25.169342507645297L 0 25.169342507645297Z" stroke="#9fb0db" stroke-width="2" fill-opacity="1" fill="#9fb0db"></path><g id="SvgjsG1062"><foreignObject id="SvgjsForeignObject1063" width="213" height="18" x="10" style="overflow:visible;" y="3.5846712538226484"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 14px; vertical-align: middle; color: rgb(255, 255, 255); font-weight: 700; line-height: 18px; width: 213px; word-break: break-word; border: 0px;">Analysis Core</div></foreignObject></g></g><g id="SvgjsG1064" transform="translate(317,326.5806574923547)"><path id="SvgjsPath1065" d="M 0 0L 233 0L 233 25.169342507645297L 0 25.169342507645297Z" stroke="#a3c1e4" stroke-width="2" fill-opacity="1" fill="#a3c1e4"></path><g id="SvgjsG1066"><foreignObject id="SvgjsForeignObject1067" width="213" height="18" x="10" style="overflow:visible;" y="3.5846712538226484"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 14px; vertical-align: middle; color: rgb(255, 255, 255); font-weight: 700; line-height: 18px; width: 213px; word-break: break-word; border: 0px;">Query Core</div></foreignObject></g></g><g id="SvgjsG1068" transform="translate(267.0454545454545,351.75)"><path id="SvgjsPath1069" d="M 0 0L 332.909090909091 0L 332.909090909091 36L 0 36Z" stroke="none" fill="none"></path><g id="SvgjsG1070"><foreignObject id="SvgjsForeignObject1071" width="332.909090909091" height="18" x="0" style="overflow:visible;" y="9"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 14px; vertical-align: middle; color: rgb(102, 102, 255); font-weight: 700; line-height: 18px; width: 332.909px; word-break: break-word; border: 0px;">Skywalking Observability Analysis System</div></foreignObject></g></g><g id="SvgjsG1072" transform="translate(25,278.66532874617735)"><path id="SvgjsPath1073" d="M 0 0L 163 0L 163 60.1693425076453L 0 60.1693425076453Z" stroke="#1890ff" stroke-width="2" fill-opacity="1" fill="#ffffff"></path><g id="SvgjsG1074"><foreignObject id="SvgjsForeignObject1075" width="143" height="16" x="10" style="overflow:visible;" y="22.08467125382265"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 400; line-height: 16px; width: 143px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1076" transform="translate(32.25,291.66532874617735)"><path id="SvgjsPath1077" d="M 0 0L 120.5 0L 120.5 29L 0 29Z" stroke="none" fill="url(#SvgjsPattern1078)"></path></g><g id="SvgjsG1080" transform="translate(145,296.66532874617735)"><path id="SvgjsPath1081" d="M 0 0L 43 0L 43 29L 0 29Z" stroke="none" fill="none"></path><g id="SvgjsG1082"><foreignObject id="SvgjsForeignObject1083" width="43" height="23" x="0" style="overflow:visible;" y="3"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 18px; vertical-align: middle; color: rgb(24, 144, 255); font-weight: 700; line-height: 23px; width: 43px; word-break: break-word; border: 0px;">UI</div></foreignObject></g></g><g id="SvgjsG1084"><path id="SvgjsPath1085" d="M245.9545454545455 311.75L188 311.16532874617735" stroke="#323232" stroke-width="2" fill="none"></path></g><g id="SvgjsG1086" transform="translate(32.25,122.5)"><path id="SvgjsPath1087" d="M 0 0L 199.75 0L 199.75 57L 0 57Z" stroke="#171717" stroke-width="2" fill-opacity="1" fill="#ffffff"></path><g id="SvgjsG1088"><foreignObject id="SvgjsForeignObject1089" width="179.75" height="16" x="10" style="overflow:visible;" y="20.5"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 400; line-height: 16px; width: 179.75px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1090" transform="translate(41.454545454545496,127)"><path id="SvgjsPath1091" d="M 0 0L 48 0L 48 48L 0 48Z" stroke="none" fill="url(#SvgjsPattern1092)"></path></g><g id="SvgjsG1094" transform="translate(68.4545454545455,131)"><path id="SvgjsPath1095" d="M 0 0L 160 0L 160 40L 0 40Z" stroke="none" fill="none"></path><g id="SvgjsG1096"><foreignObject id="SvgjsForeignObject1097" width="160" height="21" x="0" style="overflow:visible;" y="9.5"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 17px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 21px; width: 160px; word-break: break-word; border: 0px;">elasticsearch</div></foreignObject></g></g><g id="SvgjsG1098"><path id="SvgjsPath1099" d="M232 151L299 151L299 233.75" stroke="#323232" stroke-width="2" fill="none"></path></g></svg>
\ No newline at end of file
diff --git a/images/docker_container_monitor.png b/images/docker_container_monitor.png
deleted file mode 100644
index 839839b..0000000
--- a/images/docker_container_monitor.png
+++ /dev/null
Binary files differ
diff --git a/images/febs-cloud.png b/images/febs-cloud.png
deleted file mode 100644
index bb45177..0000000
--- a/images/febs-cloud.png
+++ /dev/null
Binary files differ
diff --git a/images/febs-cloud.svg b/images/febs-cloud.svg
deleted file mode 100644
index ed6b964..0000000
--- a/images/febs-cloud.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg id="SvgjsSvg1006" width="1772.734375" height="1157.90625" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.com/svgjs"><defs id="SvgjsDefs1007"><pattern id="SvgjsPattern1058" x="0" y="0" width="59.5" height="39" patternUnits="userSpaceOnUse"><image id="SvgjsImage1059" xlink:href="https://spring.io/img/homepage/icon-spring-cloud.svg" width="59.5" height="39" preserveAspectRatio="none" x="0" y="0"></image></pattern><pattern id="SvgjsPattern1072" x="0" y="0" width="42.9166666666666" height="40.83333333333303" patternUnits="userSpaceOnUse"><image id="SvgjsImage1073" xlink:href="https://cn.vuejs.org/images/logo.png" width="42.9166666666666" height="40.83333333333303" preserveAspectRatio="none" x="0" y="0"></image></pattern><pattern id="SvgjsPattern1112" x="0" y="0" width="45.08333333333303" height="29.42814399225881" patternUnits="userSpaceOnUse"><image id="SvgjsImage1113" xlink:href="https://spring.io/img/homepage/icon-spring-cloud.svg" width="45.08333333333303" height="29.42814399225881" preserveAspectRatio="none" x="0" y="0"></image></pattern><pattern id="SvgjsPattern1116" x="0" y="0" width="40.916666666666856" height="35.886726663441095" patternUnits="userSpaceOnUse"><image id="SvgjsImage1117" xlink:href="https://spring.io/img/homepage/icon-spring-boot.svg" width="40.916666666666856" height="35.886726663441095" preserveAspectRatio="none" x="0" y="0"></image></pattern><pattern id="SvgjsPattern1132" x="0" y="0" width="45.08333333333303" height="29.42814399225881" patternUnits="userSpaceOnUse"><image id="SvgjsImage1133" xlink:href="https://spring.io/img/homepage/icon-spring-cloud.svg" width="45.08333333333303" height="29.42814399225881" preserveAspectRatio="none" x="0" y="0"></image></pattern><pattern id="SvgjsPattern1136" x="0" y="0" width="40.916666666666856" height="35.886726663441095" patternUnits="userSpaceOnUse"><image id="SvgjsImage1137" xlink:href="https://spring.io/img/homepage/icon-spring-boot.svg" width="40.916666666666856" height="35.886726663441095" preserveAspectRatio="none" x="0" y="0"></image></pattern><pattern id="SvgjsPattern1154" x="0" y="0" width="51.486693861691265" height="31.864930780830093" patternUnits="userSpaceOnUse"><image id="SvgjsImage1155" xlink:href="https://spring.io/img/homepage/icon-spring-cloud.svg" width="51.486693861691265" height="31.864930780830093" preserveAspectRatio="none" x="0" y="0"></image></pattern><pattern id="SvgjsPattern1202" x="0" y="0" width="40.916666666666856" height="35.886726663441095" patternUnits="userSpaceOnUse"><image id="SvgjsImage1203" xlink:href="https://spring.io/img/homepage/icon-spring-boot.svg" width="40.916666666666856" height="35.886726663441095" preserveAspectRatio="none" x="0" y="0"></image></pattern><pattern id="SvgjsPattern1210" x="0" y="0" width="40.916666666666856" height="35.886726663441095" patternUnits="userSpaceOnUse"><image id="SvgjsImage1211" xlink:href="https://spring.io/img/homepage/icon-spring-boot.svg" width="40.916666666666856" height="35.886726663441095" preserveAspectRatio="none" x="0" y="0"></image></pattern><pattern id="SvgjsPattern1214" x="0" y="0" width="38.555555555555316" height="40.86243649565142" patternUnits="userSpaceOnUse"><image id="SvgjsImage1215" xlink:href="https://cdn.iconscout.com/icon/free/png-256/rabbitmq-282296.png" width="38.555555555555316" height="40.86243649565142" preserveAspectRatio="none" x="0" y="0"></image></pattern><pattern id="SvgjsPattern1222" x="0" y="0" width="56.387572718791034" height="56.94444444444446" patternUnits="userSpaceOnUse"><image id="SvgjsImage1223" xlink:href="https://user-images.githubusercontent.com/9143253/47912437-f749bc00-de98-11e8-9669-e97f58b8be2e.png" width="56.387572718791034" height="56.94444444444446" preserveAspectRatio="none" x="0" y="0"></image></pattern><pattern id="SvgjsPattern1236" x="0" y="0" width="48.450404820353924" height="52.16666666666629" patternUnits="userSpaceOnUse"><image id="SvgjsImage1237" xlink:href="https://image.flaticon.com/icons/svg/660/660478.svg" width="48.450404820353924" height="52.16666666666629" preserveAspectRatio="none" x="0" y="0"></image></pattern><pattern id="SvgjsPattern1256" x="0" y="0" width="49.537511870845265" height="49.56808740821157" patternUnits="userSpaceOnUse"><image id="SvgjsImage1257" xlink:href="https://image.flaticon.com/icons/svg/1980/1980263.svg" width="49.537511870845265" height="49.56808740821157" preserveAspectRatio="none" x="0" y="0"></image></pattern><pattern id="SvgjsPattern1280" x="0" y="0" width="77.88931117490802" height="20" patternUnits="userSpaceOnUse"><image id="SvgjsImage1281" xlink:href="https://nacos.io/img/nacos_colorful.png" width="77.88931117490802" height="20" preserveAspectRatio="none" x="0" y="0"></image></pattern><pattern id="SvgjsPattern1284" x="0" y="0" width="77.88931117490802" height="20" patternUnits="userSpaceOnUse"><image id="SvgjsImage1285" xlink:href="https://nacos.io/img/nacos_colorful.png" width="77.88931117490802" height="20" preserveAspectRatio="none" x="0" y="0"></image></pattern><pattern id="SvgjsPattern1288" x="0" y="0" width="54.5" height="59.763284530177486" patternUnits="userSpaceOnUse"><image id="SvgjsImage1289" xlink:href="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQMnOJ-MrkfsP6EmgDEU79sljYCWL6e4ktq36f_NerPa0A0qWrozA" width="54.5" height="59.763284530177486" preserveAspectRatio="none" x="0" y="0"></image></pattern><pattern id="SvgjsPattern1292" x="0" y="0" width="63.95065752655523" height="63.553910049328465" patternUnits="userSpaceOnUse"><image id="SvgjsImage1293" xlink:href="https://cdn.freebiesupply.com/logos/large/2x/elastic-kibana-logo-png-transparent.png" width="63.95065752655523" height="63.553910049328465" preserveAspectRatio="none" x="0" y="0"></image></pattern></defs><g id="SvgjsG1008" transform="translate(385.0141369047619,25.00223214285711)"><path id="SvgjsPath1009" d="M 0 4Q 0 0 4 0L 1338.3492063492065 0Q 1342.3492063492065 0 1342.3492063492065 4L 1342.3492063492065 904.5714285714289Q 1342.3492063492065 908.5714285714289 1338.3492063492065 908.5714285714289L 4 908.5714285714289Q 0 908.5714285714289 0 904.5714285714289Z" stroke-dasharray="10,6" stroke="#c3e5b5" stroke-width="2" fill-opacity="1" fill="#ffffff"></path><g id="SvgjsG1010"><foreignObject id="SvgjsForeignObject1011" width="1322.3492063492065" height="19" x="10" style="overflow:visible;" y="444.78571428571445"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 1322.35px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1012" transform="translate(692.5962458729197,137.23688032310093)"><path id="SvgjsPath1013" d="M 0 0L 609.5317805647244 0L 609.5317805647244 497.5573186035268L 0 497.5573186035268Z" stroke="#a1a1a1" stroke-width="2" fill-opacity="1" fill="#ffffff"></path><g id="SvgjsG1014"><foreignObject id="SvgjsForeignObject1015" width="589.5317805647244" height="16" x="10" style="overflow:visible;" y="240.7786593017634"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 400; line-height: 16px; width: 589.532px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1016" transform="translate(593.6478365384615,64.41604458587386)"><path id="SvgjsPath1017" d="M 0 4Q 0 0 4 0L 229.8546246541273 0Q 233.8546246541273 0 233.8546246541273 4L 233.8546246541273 148.9671399379357Q 233.8546246541273 152.9671399379357 229.8546246541273 152.9671399379357L 4 152.9671399379357Q 0 152.9671399379357 0 148.9671399379357Z" stroke-dasharray="10,6" stroke="#c3e5b5" stroke-width="2" fill-opacity="1" fill="#ffffff"></path><g id="SvgjsG1018"><foreignObject id="SvgjsForeignObject1019" width="213.8546246541273" height="19" x="10" style="overflow:visible;" y="66.98356996896786"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 213.855px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1020" transform="translate(730.8818016005963,271.2565314049957)"><path id="SvgjsPath1021" d="M 0 4Q 0 0 4 0L 523.1784334854443 0Q 527.1784334854443 0 527.1784334854443 4L 527.1784334854443 258.09734671553997Q 527.1784334854443 262.09734671553997 523.1784334854443 262.09734671553997L 4 262.09734671553997Q 0 262.09734671553997 0 258.09734671553997Z" stroke-dasharray="10,6" stroke="#c3e5b5" stroke-width="2" fill-opacity="1" fill="#ffffff"></path><g id="SvgjsG1022"><foreignObject id="SvgjsForeignObject1023" width="507.1784334854443" height="19" x="10" style="overflow:visible;" y="121.54867335776999"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 507.178px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1024" transform="translate(1452.1606570512815,481.1315241644295)"><path id="SvgjsPath1025" d="M 0 4Q 0 0 4 0L 142.6666666666672 0Q 146.6666666666672 0 146.6666666666672 4L 146.6666666666672 69.70580778808085Q 146.6666666666672 73.70580778808085 142.6666666666672 73.70580778808085L 4 73.70580778808085Q 0 73.70580778808085 0 69.70580778808085Z" stroke-dasharray="3,4" stroke="#5ca0d3" stroke-width="2" fill-opacity="1" fill="#eaf5ff"></path><g id="SvgjsG1026"><foreignObject id="SvgjsForeignObject1027" width="136.6666666666672" height="16" x="5" style="overflow:visible;" y="-1.7352994437085112"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 400; line-height: 16px; width: 136.667px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1028" transform="translate(1443.7154203376138,263.11112621034124)"><path id="SvgjsPath1029" d="M 0 0L 264.17173244016453 0L 264.17173244016453 75.89236565426177L 0 75.89236565426177Z" stroke-dasharray="3,4" stroke="#8a8a8a" stroke-width="2" fill-opacity="1" fill="#ffffff"></path><g id="SvgjsG1030"><foreignObject id="SvgjsForeignObject1031" width="244.17173244016453" height="16" x="10" style="overflow:visible;" y="29.946182827130883"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 400; line-height: 16px; width: 244.172px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1032" transform="translate(909.726970057683,692.5048640895747)"><path id="SvgjsPath1033" d="M 0 4Q 0 0 4 0L 170.36058633097508 0Q 174.36058633097508 0 174.36058633097508 4L 174.36058633097508 76.22857038522943Q 174.36058633097508 80.22857038522943 170.36058633097508 80.22857038522943L 4 80.22857038522943Q 0 80.22857038522943 0 76.22857038522943Z" stroke-dasharray="3,4" stroke="#ff8080" stroke-width="2" fill-opacity="1" fill="#fae3d9"></path><g id="SvgjsG1034"><foreignObject id="SvgjsForeignObject1035" width="164.36058633097508" height="16" x="5" style="overflow:visible;" y="-1.2693878296264698"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 400; line-height: 16px; width: 164.361px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1036" transform="translate(630.0743637709901,109.84052535952588)"><path id="SvgjsPath1037" d="M 0 0L 147.79312354312367 0L 147.79312354312367 85L 0 85Z" stroke="#c3e5b5" stroke-width="2" fill-opacity="1" fill="#e1f2da"></path><g id="SvgjsG1038"><foreignObject id="SvgjsForeignObject1039" width="127.79312354312367" height="19" x="10" style="overflow:visible;" y="33"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 127.793px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1040" transform="translate(755.0499344405597,349.0594896147146)"><path id="SvgjsPath1041" d="M 0 0L 168 0L 168 101L 0 101Z" stroke="#c3e5b5" stroke-width="2" fill-opacity="1" fill="#e1f2da"></path><g id="SvgjsG1042"><foreignObject id="SvgjsForeignObject1043" width="148" height="19" x="10" style="overflow:visible;" y="41"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 148px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1044" transform="translate(421.64783653846155,340.9210920089)"><path id="SvgjsPath1045" d="M 0 0L 168 0L 168 101L 0 101Z" stroke="#c3e5b5" stroke-width="2" fill-opacity="1" fill="#e1f2da"></path><g id="SvgjsG1046"><foreignObject id="SvgjsForeignObject1047" width="148" height="19" x="10" style="overflow:visible;" y="41"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 148px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1048" transform="translate(429.64783653846155,348.9210920089)"><path id="SvgjsPath1049" d="M 0 0L 168 0L 168 101L 0 101Z" stroke="#c3e5b5" stroke-width="2" fill-opacity="1" fill="#e1f2da"></path><g id="SvgjsG1050"><foreignObject id="SvgjsForeignObject1051" width="148" height="19" x="10" style="overflow:visible;" y="41"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 148px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1052" transform="translate(433.64783653846155,358.9210920089)"><path id="SvgjsPath1053" d="M 0 0L 160 0L 160 40L 0 40Z" stroke="none" fill="none"></path><g id="SvgjsG1054"><foreignObject id="SvgjsForeignObject1055" width="160" height="19" x="0" style="overflow:visible;" y="10.5"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 160px; word-break: break-word; border: 0px;">FEBS Gateway</div></foreignObject></g></g><g id="SvgjsG1056" transform="translate(483.89783653846155,398.9210920089)"><path id="SvgjsPath1057" d="M 0 0L 59.5 0L 59.5 39L 0 39Z" stroke="none" fill="url(#SvgjsPattern1058)"></path></g><g id="SvgjsG1060" transform="translate(188.17022642927228,346.44814024234347)"><path id="SvgjsPath1061" d="M 0 4Q 0 0 4 0L 161.45454545454547 0Q 165.45454545454547 0 165.45454545454547 4L 165.45454545454547 86.24793388429748Q 165.45454545454547 90.24793388429748 161.45454545454547 90.24793388429748L 4 90.24793388429748Q 0 90.24793388429748 0 86.24793388429748Z" stroke="#b8b8b8" stroke-width="2" fill-opacity="1" fill="#ecf4f3"></path><g id="SvgjsG1062"><foreignObject id="SvgjsForeignObject1063" width="155.45454545454547" height="16" x="5" style="overflow:visible;" y="-0.5537190082644656"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 400; line-height: 16px; width: 155.455px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1064"><path id="SvgjsPath1065" d="M353.6247718838183 391.5721071844922L421.64783653846155 391.4210920089" stroke="#b8b8b8" stroke-width="2" fill="none"></path></g><g id="SvgjsG1066" transform="translate(187.81450320512815,350.6710920089)"><path id="SvgjsPath1067" d="M 0 0L 160 0L 160 40L 0 40Z" stroke="none" fill="none"></path><g id="SvgjsG1068"><foreignObject id="SvgjsForeignObject1069" width="160" height="19" x="0" style="overflow:visible;" y="10.5"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 160px; word-break: break-word; border: 0px;">FEBS Cloud Web</div></foreignObject></g></g><g id="SvgjsG1070" transform="translate(245.14265336615887,388.08775867556653)"><path id="SvgjsPath1071" d="M 0 0L 42.9166666666666 0L 42.9166666666666 40.83333333333303L 0 40.83333333333303Z" stroke="none" fill="url(#SvgjsPattern1072)"></path></g><g id="SvgjsG1074" transform="translate(57.749186864663656,297.3018598966519)"><path id="SvgjsPath1075" d="M 0 4Q 0 0 4 0L 69.75291375291403 0Q 73.75291375291403 0 73.75291375291403 4L 73.75291375291403 35.420386361305816Q 73.75291375291403 39.420386361305816 69.75291375291403 39.420386361305816L 4 39.420386361305816Q 0 39.420386361305816 0 35.420386361305816Z" stroke="#b8b8b8" stroke-width="2" fill-opacity="1" fill="#ecf4f3"></path><g id="SvgjsG1076"><foreignObject id="SvgjsForeignObject1077" width="63.752913752914026" height="16" x="5" style="overflow:visible;" y="-4.184258117049584"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 400; line-height: 16px; width: 63.7529px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1078" transform="translate(62.543879351664,299.9965465035266)"><path id="SvgjsPath1079" d="M 0 0L 65.38461538461539 0L 65.38461538461539 33.84615384615381L 0 33.84615384615381Z" stroke="none" fill="none"></path><g id="SvgjsG1080"><foreignObject id="SvgjsForeignObject1081" width="65.38461538461539" height="18" x="0" style="overflow:visible;" y="7.923076923076906"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 14px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 18px; width: 65.3846px; word-break: break-word; border: 0px;">Browser</div></foreignObject></g></g><g id="SvgjsG1082" transform="translate(56.7898749767279,370.8779784042554)"><path id="SvgjsPath1083" d="M 0 4Q 0 0 4 0L 69.75291375291403 0Q 73.75291375291403 0 73.75291375291403 4L 73.75291375291403 35.420386361305816Q 73.75291375291403 39.420386361305816 69.75291375291403 39.420386361305816L 4 39.420386361305816Q 0 39.420386361305816 0 35.420386361305816Z" stroke="#b8b8b8" stroke-width="2" fill-opacity="1" fill="#ecf4f3"></path><g id="SvgjsG1084"><foreignObject id="SvgjsForeignObject1085" width="63.752913752914026" height="16" x="5" style="overflow:visible;" y="-4.184258117049584"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 400; line-height: 16px; width: 63.7529px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1086" transform="translate(61.58456746372826,373.5726650111301)"><path id="SvgjsPath1087" d="M 0 0L 65.38461538461539 0L 65.38461538461539 33.84615384615381L 0 33.84615384615381Z" stroke="none" fill="none"></path><g id="SvgjsG1088"><foreignObject id="SvgjsForeignObject1089" width="65.38461538461539" height="18" x="0" style="overflow:visible;" y="7.923076923076906"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 14px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 18px; width: 65.3846px; word-break: break-word; border: 0px;">Mobile</div></foreignObject></g></g><g id="SvgjsG1090" transform="translate(57.294794850311746,445.8848929138767)"><path id="SvgjsPath1091" d="M 0 4Q 0 0 4 0L 69.75291375291403 0Q 73.75291375291403 0 73.75291375291403 4L 73.75291375291403 35.420386361305816Q 73.75291375291403 39.420386361305816 69.75291375291403 39.420386361305816L 4 39.420386361305816Q 0 39.420386361305816 0 35.420386361305816Z" stroke="#b8b8b8" stroke-width="2" fill-opacity="1" fill="#ecf4f3"></path><g id="SvgjsG1092"><foreignObject id="SvgjsForeignObject1093" width="63.752913752914026" height="16" x="5" style="overflow:visible;" y="-4.184258117049584"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 400; line-height: 16px; width: 63.7529px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1094" transform="translate(61.73034421798795,448.63394990351685)"><path id="SvgjsPath1095" d="M 0 0L 65.38461538461539 0L 65.38461538461539 33.84615384615381L 0 33.84615384615381Z" stroke="none" fill="none"></path><g id="SvgjsG1096"><foreignObject id="SvgjsForeignObject1097" width="65.38461538461539" height="18" x="0" style="overflow:visible;" y="7.923076923076906"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 14px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 18px; width: 65.3846px; word-break: break-word; border: 0px;">Pad</div></foreignObject></g></g><g id="SvgjsG1098"><path id="SvgjsPath1099" d="M188.37920738835993 390.38972115900117L130.54278872964196 390.5881715849083" stroke="#b8b8b8" stroke-width="2" fill="none"></path></g><g id="SvgjsG1100"><path id="SvgjsPath1101" d="M131.5021006175777 317.0120530773048L161.5021006175777 317.0120530773048L161.5021006175777 465.5950860945296L131.04770860322577 465.5950860945296" stroke="#b8b8b8" stroke-width="2" fill="none"></path></g><g id="SvgjsG1102" transform="translate(762.3242563599791,356.65752096102517)"><path id="SvgjsPath1103" d="M 0 0L 168 0L 168 101L 0 101Z" stroke="#c3e5b5" stroke-width="2" fill-opacity="1" fill="#e1f2da"></path><g id="SvgjsG1104"><foreignObject id="SvgjsForeignObject1105" width="148" height="19" x="10" style="overflow:visible;" y="41"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 148px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1106" transform="translate(770.3249129792054,363.710017003061)"><path id="SvgjsPath1107" d="M 0 0L 160 0L 160 40L 0 40Z" stroke="none" fill="none"></path><g id="SvgjsG1108"><foreignObject id="SvgjsForeignObject1109" width="160" height="19" x="0" style="overflow:visible;" y="10.5"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 160px; word-break: break-word; border: 0px;">FEBS Server System</div></foreignObject></g></g><g id="SvgjsG1110" transform="translate(789.8885125291381,410.44981954979755)"><path id="SvgjsPath1111" d="M 0 0L 45.08333333333303 0L 45.08333333333303 29.42814399225881L 0 29.42814399225881Z" stroke="none" fill="url(#SvgjsPattern1112)"></path></g><g id="SvgjsG1114" transform="translate(859.5213796620044,406.46851340940964)"><path id="SvgjsPath1115" d="M 0 0L 40.916666666666856 0L 40.916666666666856 35.886726663441095L 0 35.886726663441095Z" stroke="none" fill="url(#SvgjsPattern1116)"></path></g><g id="SvgjsG1118" transform="translate(1040.5953889860127,351.8052047627657)"><path id="SvgjsPath1119" d="M 0 0L 168 0L 168 101L 0 101Z" stroke="#c3e5b5" stroke-width="2" fill-opacity="1" fill="#e1f2da"></path><g id="SvgjsG1120"><foreignObject id="SvgjsForeignObject1121" width="148" height="19" x="10" style="overflow:visible;" y="41"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 148px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1122" transform="translate(1047.8681162587397,359.190198076462)"><path id="SvgjsPath1123" d="M 0 0L 168 0L 168 101L 0 101Z" stroke="#c3e5b5" stroke-width="2" fill-opacity="1" fill="#e1f2da"></path><g id="SvgjsG1124"><foreignObject id="SvgjsForeignObject1125" width="148" height="19" x="10" style="overflow:visible;" y="41"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 148px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1126" transform="translate(1055.8713055521243,366.0589160864364)"><path id="SvgjsPath1127" d="M 0 0L 160 0L 160 40L 0 40Z" stroke="none" fill="none"></path><g id="SvgjsG1128"><foreignObject id="SvgjsForeignObject1129" width="160" height="19" x="0" style="overflow:visible;" y="10.5"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 160px; word-break: break-word; border: 0px;">FEBS Server Test</div></foreignObject></g></g><g id="SvgjsG1130" transform="translate(1077.7416593822845,410.17001039915704)"><path id="SvgjsPath1131" d="M 0 0L 45.08333333333303 0L 45.08333333333303 29.42814399225881L 0 29.42814399225881Z" stroke="none" fill="url(#SvgjsPattern1132)"></path></g><g id="SvgjsG1134" transform="translate(1145.0668342074607,406.8869021738517)"><path id="SvgjsPath1135" d="M 0 0L 40.916666666666856 0L 40.916666666666856 35.886726663441095L 0 35.886726663441095Z" stroke="none" fill="url(#SvgjsPattern1136)"></path></g><g id="SvgjsG1138"><path id="SvgjsPath1139" d="M929.9892076267498 402.65344747646884L1040.5953889860127 402.3052047627657" stroke="#b8b8b8" stroke-width="2" fill="none"></path></g><g id="SvgjsG1140" transform="translate(949.193873834499,368.15445491500077)"><path id="SvgjsPath1141" d="M 0 0L 83.33333333333337 0L 83.33333333333337 35.833333333333314L 0 35.833333333333314Z" stroke="none" fill="none"></path><g id="SvgjsG1142"><foreignObject id="SvgjsForeignObject1143" width="83.33333333333337" height="19" x="0" style="overflow:visible;" y="8.416666666666657"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 83.3333px; word-break: break-word; border: 0px;">Feign</div></foreignObject></g></g><g id="SvgjsG1144" transform="translate(638.901861504738,116.30427292334326)"><path id="SvgjsPath1145" d="M 0 0L 147.79312354312367 0L 147.79312354312367 85L 0 85Z" stroke="#c3e5b5" stroke-width="2" fill-opacity="1" fill="#e1f2da"></path><g id="SvgjsG1146"><foreignObject id="SvgjsForeignObject1147" width="127.79312354312367" height="19" x="10" style="overflow:visible;" y="33"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 127.793px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1148" transform="translate(630.5751488655252,117.73086081994524)"><path id="SvgjsPath1149" d="M 0 0L 160 0L 160 40L 0 40Z" stroke="none" fill="none"></path><g id="SvgjsG1150"><foreignObject id="SvgjsForeignObject1151" width="160" height="19" x="0" style="overflow:visible;" y="10.5"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 160px; word-break: break-word; border: 0px;">FEBS Auth</div></foreignObject></g></g><g id="SvgjsG1152" transform="translate(687.3357274073553,157.9606228437101)"><path id="SvgjsPath1153" d="M 0 0L 51.486693861691265 0L 51.486693861691265 31.864930780830093L 0 31.864930780830093Z" stroke="none" fill="url(#SvgjsPattern1154)"></path></g><g id="SvgjsG1156"><path id="SvgjsPath1157" d="M630.9189231467986 145.3672244563092L630.9189231467986 145.3672244563092" stroke="#323232" stroke-width="2" fill="none"></path></g><g id="SvgjsG1158"><path id="SvgjsPath1159" d="M1032.2901950707515 401.45107952367005L1032.2901950707515 401.45107952367005" stroke="#b8b8b8" stroke-width="2" fill="none"></path></g><g id="SvgjsG1160" transform="translate(1200.7988714496755,109.67258246084685)"><path id="SvgjsPath1161" d="M 0 0L 147.79312354312367 0L 147.79312354312367 85L 0 85Z" stroke="#c3e5b5" stroke-width="2" fill-opacity="1" fill="#e1f2da"></path><g id="SvgjsG1162"><foreignObject id="SvgjsForeignObject1163" width="127.79312354312367" height="19" x="10" style="overflow:visible;" y="33"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 127.793px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1164" transform="translate(1209.6263691834235,116.13633002466423)"><path id="SvgjsPath1165" d="M 0 0L 147.79312354312367 0L 147.79312354312367 85L 0 85Z" stroke="#c3e5b5" stroke-width="2" fill-opacity="1" fill="#e1f2da"></path><g id="SvgjsG1166"><foreignObject id="SvgjsForeignObject1167" width="127.79312354312367" height="19" x="10" style="overflow:visible;" y="33"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 127.793px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1168" transform="translate(1200.7988714496755,117.79267994503107)"><path id="SvgjsPath1169" d="M 0 0L 160 0L 160 40L 0 40Z" stroke="none" fill="none"></path><g id="SvgjsG1170"><foreignObject id="SvgjsForeignObject1171" width="160" height="18" x="0" style="overflow:visible;" y="11"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 14px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 18px; width: 160px; word-break: break-word; border: 0px;">Nacos Discovery</div></foreignObject></g></g><g id="SvgjsG1172"><path id="SvgjsPath1173" d="M1201.142645730949 145.42904358139504L1201.142645730949 145.42904358139504" stroke="#b8b8b8" stroke-width="2" fill="none"></path></g><g id="SvgjsG1174"><path id="SvgjsPath1175" d="M752.589515286141 157.55174767081792L752.589515286141 157.55174767081792" stroke="#323232" stroke-width="2" fill="none"></path></g><g id="SvgjsG1176" transform="translate(647.5776718974195,588.2519935242107)"><path id="SvgjsPath1177" d="M 0 0L 170.65662618073793 0L 170.65662618073793 89.607381475789L 0 89.607381475789Z" stroke="#c3e5b5" stroke-width="2" fill-opacity="1" fill="#e1f2da"></path><g id="SvgjsG1178"><foreignObject id="SvgjsForeignObject1179" width="150.65662618073793" height="19" x="10" style="overflow:visible;" y="35.3036907378945"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 150.657px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1180"><path id="SvgjsPath1181" d="M639.2095142359914 617.4916850754572L639.2095142359914 617.4916850754572" stroke="#323232" stroke-width="2" fill="none"></path></g><g id="SvgjsG1182" transform="translate(1209.5467252737092,581.3688885886166)"><path id="SvgjsPath1183" d="M 0 0L 147.79312354312367 0L 147.79312354312367 85L 0 85Z" stroke="#c3e5b5" stroke-width="2" fill-opacity="1" fill="#e1f2da"></path><g id="SvgjsG1184"><foreignObject id="SvgjsForeignObject1185" width="127.79312354312367" height="19" x="10" style="overflow:visible;" y="33"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 127.793px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1186" transform="translate(1218.374223007457,587.832636152434)"><path id="SvgjsPath1187" d="M 0 0L 147.79312354312367 0L 147.79312354312367 85L 0 85Z" stroke="#c3e5b5" stroke-width="2" fill-opacity="1" fill="#e1f2da"></path><g id="SvgjsG1188"><foreignObject id="SvgjsForeignObject1189" width="127.79312354312367" height="19" x="10" style="overflow:visible;" y="33"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 127.793px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1190" transform="translate(1209.6622910647557,589.4359640673166)"><path id="SvgjsPath1191" d="M 0 0L 160 0L 160 40L 0 40Z" stroke="none" fill="none"></path><g id="SvgjsG1192"><foreignObject id="SvgjsForeignObject1193" width="160" height="19" x="0" style="overflow:visible;" y="10.5"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 160px; word-break: break-word; border: 0px;">Nacos Config</div></foreignObject></g></g><g id="SvgjsG1194"><path id="SvgjsPath1195" d="M1210.0060653460291 617.0723277036806L1210.0060653460291 617.0723277036806" stroke="#b8b8b8" stroke-width="2" fill="none"></path></g><g id="SvgjsG1196" transform="translate(923.1084247394523,814.9305838132736)"><path id="SvgjsPath1197" d="M 0 0L 148.54546069163507 0L 148.54546069163507 94.33530917232554L 0 94.33530917232554Z" stroke="#c3e5b5" stroke-width="2" fill-opacity="1" fill="#e1f2da"></path><g id="SvgjsG1198"><foreignObject id="SvgjsForeignObject1199" width="128.54546069163507" height="19" x="10" style="overflow:visible;" y="37.66765458616277"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 128.545px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1200" transform="translate(712.25084625897,631.0431023955784)"><path id="SvgjsPath1201" d="M 0 0L 40.916666666666856 0L 40.916666666666856 35.886726663441095L 0 35.886726663441095Z" stroke="none" fill="url(#SvgjsPattern1202)"></path></g><g id="SvgjsG1204" transform="translate(917.0558214403583,817.9515739873411)"><path id="SvgjsPath1205" d="M 0 0L 160 0L 160 40L 0 40Z" stroke="none" fill="none"></path><g id="SvgjsG1206"><foreignObject id="SvgjsForeignObject1207" width="160" height="19" x="0" style="overflow:visible;" y="10.5"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 160px; word-break: break-word; border: 0px;">Zipkin Server</div></foreignObject></g></g><g id="SvgjsG1208" transform="translate(976.9228217519365,858.4814492619328)"><path id="SvgjsPath1209" d="M 0 0L 40.916666666666856 0L 40.916666666666856 35.886726663441095L 0 35.886726663441095Z" stroke="none" fill="url(#SvgjsPattern1210)"></path></g><g id="SvgjsG1212" transform="translate(936.516463856874,712.2573459770535)"><path id="SvgjsPath1213" d="M 0 0L 38.555555555555316 0L 38.555555555555316 40.86243649565142L 0 40.86243649565142Z" stroke="none" fill="url(#SvgjsPattern1214)"></path></g><g id="SvgjsG1216" transform="translate(946.1831305235406,712.5983247993825)"><path id="SvgjsPath1217" d="M 0 0L 160 0L 160 40L 0 40Z" stroke="none" fill="none"></path><g id="SvgjsG1218"><foreignObject id="SvgjsForeignObject1219" width="160" height="20" x="0" style="overflow:visible;" y="10"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 16px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 20px; width: 160px; word-break: break-word; border: 0px;">RabbitMQ</div></foreignObject></g></g><g id="SvgjsG1220" transform="translate(1463.7298061775791,270.6066996071329)"><path id="SvgjsPath1221" d="M 0 0L 56.387572718791034 0L 56.387572718791034 56.94444444444446L 0 56.94444444444446Z" stroke="none" fill="url(#SvgjsPattern1222)"></path></g><g id="SvgjsG1224" transform="translate(1587.7317504159128,283.96110145738453)"><path id="SvgjsPath1225" d="M 0 0L 160 0L 160 40L 0 40Z" stroke="none" fill="none"></path><g id="SvgjsG1226"><foreignObject id="SvgjsForeignObject1227" width="160" height="20" x="0" style="overflow:visible;" y="10"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 16px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 20px; width: 160px; word-break: break-word; border: 0px;">ELK</div></foreignObject></g></g><g id="SvgjsG1228"><path id="SvgjsPath1229" d="M996.9072632231706 772.7334344748042L997.3811550852698 814.9305838132736" stroke="#a1a1a1" stroke-width="2" fill="none"></path></g><g id="SvgjsG1230"><path id="SvgjsPath1231" d="M996.9072632231706 692.5048640895747L997.3621361552819 634.7941989266278" stroke="#a1a1a1" stroke-width="2" fill="none"></path></g><g id="SvgjsG1232"><path id="SvgjsPath1233" d="M597.6478365384614 399.4210920089L755.0499344405597 399.5594896147146" stroke="#b8b8b8" stroke-width="2" fill="none"></path></g><g id="SvgjsG1234" transform="translate(1467.0435855642615,491.7166763391324)"><path id="SvgjsPath1235" d="M 0 0L 48.450404820353924 0L 48.450404820353924 52.16666666666629L 0 52.16666666666629Z" stroke="none" fill="url(#SvgjsPattern1236)"></path></g><g id="SvgjsG1238" transform="translate(1474.6962695868951,497.78854206775804)"><path id="SvgjsPath1239" d="M 0 0L 160 0L 160 40L 0 40Z" stroke="none" fill="none"></path><g id="SvgjsG1240"><foreignObject id="SvgjsForeignObject1241" width="160" height="20" x="0" style="overflow:visible;" y="10"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 16px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 20px; width: 160px; word-break: break-word; border: 0px;">MySQL</div></foreignObject></g></g><g id="SvgjsG1242"><path id="SvgjsPath1243" d="M1558.8273237179494 481.9157288398694L1557.7162126068383 481.9157288398694" stroke="#323232" stroke-width="2" fill="none"></path></g><g id="SvgjsG1244" transform="translate(1449.9384348290594,372.1232803375341)"><path id="SvgjsPath1245" d="M 0 4Q 0 0 4 0L 142.6666666666672 0Q 146.6666666666672 0 146.6666666666672 4L 146.6666666666672 69.70580778808085Q 146.6666666666672 73.70580778808085 142.6666666666672 73.70580778808085L 4 73.70580778808085Q 0 73.70580778808085 0 69.70580778808085Z" stroke-dasharray="3,4" stroke="#ff8080" stroke-width="2" fill-opacity="1" fill="#ffffff"></path><g id="SvgjsG1246"><foreignObject id="SvgjsForeignObject1247" width="136.6666666666672" height="16" x="5" style="overflow:visible;" y="-1.7352994437085112"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 13px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 400; line-height: 16px; width: 136.667px; word-break: break-word; border: 0px;"></div></foreignObject></g></g><g id="SvgjsG1248" transform="translate(1472.474047364673,388.78029824086263)"><path id="SvgjsPath1249" d="M 0 0L 160 0L 160 40L 0 40Z" stroke="none" fill="none"></path><g id="SvgjsG1250"><foreignObject id="SvgjsForeignObject1251" width="160" height="21" x="0" style="overflow:visible;" y="9.5"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 17px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 21px; width: 160px; word-break: break-word; border: 0px;">Redis</div></foreignObject></g></g><g id="SvgjsG1252"><path id="SvgjsPath1253" d="M1556.6051014957272 372.907485012974L1555.4939903846162 372.907485012974" stroke="#323232" stroke-width="2" fill="none"></path></g><g id="SvgjsG1254" transform="translate(1467.1587174734448,388.4140424051519)"><path id="SvgjsPath1255" d="M 0 0L 49.537511870845265 0L 49.537511870845265 49.56808740821157L 0 49.56808740821157Z" stroke="none" fill="url(#SvgjsPattern1256)"></path></g><g id="SvgjsG1258"><path id="SvgjsPath1259" d="M1449.9384348290594 408.9761842315745L1215.8681162587397 409.690198076462" stroke="#a1a1a1" stroke-width="2" fill="none"></path></g><g id="SvgjsG1260"><path id="SvgjsPath1261" d="M1443.7154203376138 301.0573090374721L1376.3820870042803 301.0573090374721L1376.3820870042803 517.9844280584699L1452.1606570512815 517.9844280584699" stroke="#a1a1a1" stroke-width="2" fill="none"></path></g><g id="SvgjsG1262" transform="translate(652.9059849877884,591.1019160823935)"><path id="SvgjsPath1263" d="M 0 0L 160 0L 160 40L 0 40Z" stroke="none" fill="none"></path><g id="SvgjsG1264"><foreignObject id="SvgjsForeignObject1265" width="160" height="19" x="0" style="overflow:visible;" y="10.5"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: 微软雅黑; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(50, 50, 50); font-weight: 700; line-height: 19px; width: 160px; word-break: break-word; border: 0px;">FEBS Monitor Admin</div></foreignObject></g></g><g id="SvgjsG1266" transform="translate(903.1569940476193,283.96110145738453)"><path id="SvgjsPath1267" d="M 0 0L 160 0L 160 40L 0 40Z" stroke="none" fill="none"></path><g id="SvgjsG1268"><foreignObject id="SvgjsForeignObject1269" width="160" height="19" x="0" style="overflow:visible;" y="10.5"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(104, 189, 69); font-weight: 700; line-height: 19px; width: 160px; word-break: break-word; border: 0px;">Resource Server</div></foreignObject></g></g><g id="SvgjsG1270" transform="translate(626.9668944680993,64.30367767952856)"><path id="SvgjsPath1271" d="M 0 0L 160 0L 160 40L 0 40Z" stroke="none" fill="none"></path><g id="SvgjsG1272"><foreignObject id="SvgjsForeignObject1273" width="160" height="19" x="0" style="overflow:visible;" y="10.5"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 15px; vertical-align: middle; color: rgb(104, 189, 69); font-weight: 700; line-height: 19px; width: 160px; word-break: break-word; border: 0px;">Authorization Server</div></foreignObject></g></g><g id="SvgjsG1274" transform="translate(1532.7665783029538,50.01796339381423)"><path id="SvgjsPath1275" d="M 0 0L 160 0L 160 40L 0 40Z" stroke="none" fill="none"></path><g id="SvgjsG1276"><foreignObject id="SvgjsForeignObject1277" width="160" height="21" x="0" style="overflow:visible;" y="9.5"><div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial; text-align: center; font-size: 17px; vertical-align: middle; color: rgb(104, 189, 69); font-weight: 700; line-height: 21px; width: 160px; word-break: break-word; border: 0px;">FEBC Cloud</div></foreignObject></g></g><g id="SvgjsG1278" transform="translate(1244.498631457817,157.79267994503107)"><path id="SvgjsPath1279" d="M 0 0L 77.88931117490802 0L 77.88931117490802 20L 0 20Z" stroke="none" fill="url(#SvgjsPattern1280)"></path></g><g id="SvgjsG1282" transform="translate(1250.7176354773017,631.1019160823935)"><path id="SvgjsPath1283" d="M 0 0L 77.88931117490802 0L 77.88931117490802 20L 0 20Z" stroke="none" fill="url(#SvgjsPattern1284)"></path></g><g id="SvgjsG1286" transform="translate(1516.69622934429,267.78785952139987)"><path id="SvgjsPath1287" d="M 0 0L 54.5 0L 54.5 59.763284530177486L 0 59.763284530177486Z" stroke="none" fill="url(#SvgjsPattern1288)"></path></g><g id="SvgjsG1290" transform="translate(1564.1587174734448,267.78785952139987)"><path id="SvgjsPath1291" d="M 0 0L 63.95065752655523 0L 63.95065752655523 63.553910049328465L 0 63.553910049328465Z" stroke="none" fill="url(#SvgjsPattern1292)"></path></g></svg>
\ No newline at end of file
diff --git a/images/febs-k8s.png b/images/febs-k8s.png
deleted file mode 100644
index 89dfc0b..0000000
--- a/images/febs-k8s.png
+++ /dev/null
Binary files differ
diff --git a/images/jvm_monitor.png b/images/jvm_monitor.png
deleted file mode 100644
index cf483e6..0000000
--- a/images/jvm_monitor.png
+++ /dev/null
Binary files differ
diff --git a/images/mysql_monitor.png b/images/mysql_monitor.png
deleted file mode 100644
index 5dea79f..0000000
--- a/images/mysql_monitor.png
+++ /dev/null
Binary files differ
diff --git a/images/prometheus_apm.png b/images/prometheus_apm.png
deleted file mode 100644
index c630ded..0000000
--- a/images/prometheus_apm.png
+++ /dev/null
Binary files differ
diff --git a/images/redis_monitor.png b/images/redis_monitor.png
deleted file mode 100644
index a79d0d6..0000000
--- a/images/redis_monitor.png
+++ /dev/null
Binary files differ
diff --git a/images/skywalking_apm.png b/images/skywalking_apm.png
deleted file mode 100644
index 7767169..0000000
--- a/images/skywalking_apm.png
+++ /dev/null
Binary files differ
diff --git a/images/skywalking_global.png b/images/skywalking_global.png
deleted file mode 100644
index 85e3aeb..0000000
--- a/images/skywalking_global.png
+++ /dev/null
Binary files differ
diff --git a/images/skywalking_service.png b/images/skywalking_service.png
deleted file mode 100644
index 111434f..0000000
--- a/images/skywalking_service.png
+++ /dev/null
Binary files differ
diff --git a/images/skywalking_topology.png b/images/skywalking_topology.png
deleted file mode 100644
index 0f9a3c0..0000000
--- a/images/skywalking_topology.png
+++ /dev/null
Binary files differ
diff --git a/images/skywalking_trace.png b/images/skywalking_trace.png
deleted file mode 100644
index 8c43a6a..0000000
--- a/images/skywalking_trace.png
+++ /dev/null
Binary files differ
--
Gitblit v1.8.0