Linux云计算 |【第五阶段】PROJECT3-DAY1

主要内容:

跳板机(堡垒机)的概念、部署JumpeServer

一、跳板机(堡垒机)的概念

跳板机(Jump Server 或 Bastion Host)是一种网络安全设备或服务器,也称堡垒机,是一类可作为跳板批量操作远程设备的网络设备,用于管理和控制对内部网络的访问。它通常位于公共网络和内部网络之间,充当一个中间节点,所有外部用户必须首先通过跳板机才能访问内部网络资源。跳板机的主要目的是增强网络安全性,减少直接暴露在公共网络上的内部资源;也是系统管理员或运维人员常用的操作平台之一。

跳板机的主要功能和用途

1)访问控制:

  • 跳板机可以集中管理用户的访问权限,确保只有经过授权的用户才能访问内部网络资源
  • 通过跳板机,管理员可以实施更严格的访问控制策略,例如多因素认证(MFA)、IP 白名单等

日志记录和审计:

  • 跳板机可以记录所有用户的操作日志,包括登录时间、操作内容、访问的资源等
  • 这些日志可以用于审计和追踪,帮助管理员监控和分析用户的活动,及时发现异常行为

安全隔离:

  • 跳板机将内部网络与外部网络隔离,减少内部网络直接暴露在公共网络上的风险
  • 即使跳板机被攻击,内部网络仍然受到保护,因为攻击者无法直接访问内部资源

会话管理:

  • 跳板机可以管理用户的会话,例如限制会话时长、强制断开会话等
  • 通过会话管理,可以防止用户长时间保持连接,减少潜在的安全风险

网络代理:

  • 跳板机可以作为网络代理,帮助用户访问内部网络资源
  • 通过代理,用户可以隐藏真实的 IP 地址,增加匿名性和安全性

优势:

① 增强安全性:

通过集中管理和控制访问,减少内部网络直接暴露在公共网络上的风险。
提供多层次的安全防护,如访问控制、日志记录、会话管理等。

② 简化管理:

集中管理用户的访问权限和操作日志,简化管理员的工作。
提供统一的访问入口,方便用户访问内部资源。

③ 提高效率:

通过网络代理和会话管理,提高用户访问内部资源的效率。
提供实时的监控和审计功能,帮助管理员及时发现和处理问题。

跳板机最核心的功能是以本机作为跳板来操作远程设备,较为普遍地是通过ssh协议实现远程管理;使用单位一般会自己开发或选择性地使用以下自动化运维工具:puppet、saltstack、ansible、rex

二、JumpServer

JumpServer 文档:https://jumpserver.readthedocs.io/zh/master/

JumpServer 是一款开源的堡垒机,由中国的开发者团队开发,使用 GNU GPL v2.0 开源协议。它是符合 4A 规范(认证 Authentication、授权 Authorization、账号 Account、审计 Audit)的运维安全审计系统。JumpServer 使用 Python 和 Django 框架进行开发,遵循 Web 2.0 规范,提供了美观的交互界面和良好的用户体验。

页面展示:

① 自动部署

# 默认会安装到 /opt/jumpserver-installer-v2.12.0 目录

# 配置文件 /opt/jumpserver/config/config.txt
curl -sSL https://github.com/jumpserver/jumpserver/releases/download/v2.12.0/quick_start.sh | bash

② 手动部署

cd /opt
wget https://github.com/jumpserver/installer/releases/download/v2.12.0/jumpserver-installer-v2.12.0.tar.gz
tar -xf jumpserver-installer-v2.12.0.tar.gz
cd jumpserver-installer-v2.12.0
cat config-example.txt

由于JumpServer是基于容器镜像的服务,需要安装镜像(华为云提供)


Jump server 安装部署示例:

注意:官网已更新版本,请参考新版本部署方式

配置清单

主机名称

IP地址

最低配置

软件名称

版本

jumpserver

192.168.1.251

2CPU,4G内存

jumpserver

v2.10.2

步骤1:采购1台云主机,并绑定弹性公网IP

步骤2:环境准备

① 安装云主机需要软件

[root@jump-server ~]# yum install -y curl wget zip python firewalld

② 开启路由转发

[root@jumpserver ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
[root@jumpserver ~]# sysctl -p
...
net.ipv4.ip_forward = 1

③ 安装Docker软件,并开启服务

# 拷贝 kubernets/docker/docker-ce-18.06.3.ce-3.el7.x86_64.rpm软件包到jumpserver主机上

[root@jump-server ~]# yum install -y ./docker-ce-18.06.3.ce-3.el7.x86_64.rpm
[root@jump-server ~]# systemctl enable --now docker firewalld

步骤3:下载JumpServer所需软件包

① 下载umpserver-installer-v2.10.2.tar.gz

[root@jump-server ~]# curl -sSOL https://github.com/jumpserver/installer/releases/download/v2.10.2/jumpserver-installer-v2.10.2.tar.gz

② 下载docker-compose-Linux-x86_64,并指定文件名:docker-compose

docker-composr可以启动多个容器

curl -sSL https://get.daocloud.io/docker/compose/releases/download/1.27.4/docker-compose-Linux-x86_64 -o docker-compose

③ 使用md5sum校验

[root@jump-server ~]# md5sum docker-compose jumpserver-installer-v2.10.2.tar.gz 
bec660213f97d788d129410d047f261f  docker-compose
223415d3cd9777a58fc0dc71c0b579cf  jumpserver-installer-v2.10.2.tar.gz

④ 拷贝文件到/usr/bin/下,并授予755权限

[root@jump-server ~]# cp docker-compose /usr/bin/
[root@jump-server ~]# chmod 755 /usr/bin/docker-compose

步骤4:下载JumpServer所需镜像服务

① 设置国内加速源来安装镜像

[root@jump-server ~]# DOCKER_IMAGE_PREFIX=swr.cn-north-1.myhuaweicloud.com

[root@jump-server ~]# for i in jumpserver/redis:6-alpine jumpserver/mysql:5 
jumpserver/nginx:alpine2 jumpserver/luna:v2.10.2 jumpserver/core:v2.10.2 
jumpserver/koko:v2.10.2 jumpserver/lion:v2.10.2 jumpserver/lina:v2.10.2;do
docker pull ${i}; 
done

步骤5:启动JumpServer服务

① 解压JumpServer软件包到/opt目录下

[root@jump-server ~]# tar -zxf jumpserver-installer-v2.10.2.tar.gz -C /opt/
[root@jump-server ~]# cd /opt/jumpserver-installer-v2.10.2/
[root@jump-server jumpserver-installer-v2.10.2]# vim static.env
export VERSION="v2.10.2"

② 启动安装脚本,完成初始化配置

[root@jump-server jumpserver-installer-v2.10.2]# ./jmsctl.sh install
语言 Language  (cn/en)  (default cn): 

1. 检查配置文件
配置文件位置: /opt/jumpserver/config
/opt/jumpserver/config/config.txt  [ √ ]
/opt/jumpserver/config/nginx/lb_ssh_server.conf  [ √ ]
完成

2. 配置 Nginx
配置文件: /opt/jumpserver/config/nginx/cert
/opt/jumpserver/config/nginx/cert/server.crt  [ √ ]
/opt/jumpserver/config/nginx/cert/server.key  [ √ ]
完成

3. 备份配置文件
备份至 /opt/jumpserver/config/backup/config.txt.2021-05-27_20-09-29
完成

>>> 安装配置 Docker
1. 安装 Docker
完成

2. 配置 Docker
是否需要自定义 docker 存储目录, 默认将使用目录 /var/lib/docker? (y/n)  (默认为 n): 
完成

3. 启动 Docker
完成

>>> 加载 Docker 镜像
[jumpserver/redis:6-alpine]
[jumpserver/mysql:5]
[jumpserver/nginx:alpine2]
[jumpserver/luna:v2.10.2]
[jumpserver/core:v2.10.2]
[jumpserver/koko:v2.10.2]
[jumpserver/lion:v2.10.2]
[jumpserver/lina:v2.10.2]

>>> 安装配置 JumpServer
1. 配置网络
是否需要支持 IPv6? (y/n)  (默认为 n): 
完成

2. 配置加密密钥
SECRETE_KEY:     ZTAwOWYzNDctMjA1ZS00NzM4LThlZDMtYjEwYmY3NDJkZjA4
BOOTSTRAP_TOKEN: ZTAwOWYzNDctMjA1
完成

3. 配置持久化目录
是否需要自定义持久化存储, 默认将使用目录 /opt/jumpserver? (y/n)  (默认为 n): 
完成

4. 配置 MySQL
是否使用外部 MySQL? (y/n)  (默认为 n): 
完成

5. 配置 Redis
是否使用外部 Redis? (y/n)  (默认为 n): 
完成

>>> 安装完成了
1. 可以使用如下命令启动, 然后访问
./jmsctl.sh start

2. 其它一些管理命令
./jmsctl.sh stop
./jmsctl.sh restart
./jmsctl.sh backup
./jmsctl.sh upgrade
更多还有一些命令, 你可以 ./jmsctl.sh --help 来了解

3. Web 访问
http://192.168.1.251:8080
https://192.168.1.251:8443
默认用户: admin  默认密码: admin

4. SSH/SFTP 访问
ssh admin@192.168.1.251 -p2222
sftp -P2222 admin@192.168.1.251

5. 更多信息
我们的官网: https://www.jumpserver.org/
我们的文档: https://docs.jumpserver.org/

③ 启动服务脚本,查看状态

[root@jump-server jumpserver-installer-v2.10.2]# systemctl restart docker
[root@jump-server jumpserver-installer-v2.10.2]# ./jmsctl.sh start
Creating network "jms_net" with driver "bridge"
Creating jms_redis  ... done
Creating jms_mysql  ... done
Creating jms_core   ... done
Creating jms_lina   ... done
Creating jms_lion   ... done
Creating jms_koko   ... done
Creating jms_celery ... done
Creating jms_luna   ... done
Creating jms_nginx  ... done
[root@jump-server jumpserver-installer-v2.10.2]# ./jmsctl.sh status
Name           Command                    State          Ports
---------------------------------------------------------------------------
jms_celery    ./entrypoint.sh start task  Up (healthy)   8070/tcp, 8080/tcp
jms_core      ./entrypoint.sh start web   Up (healthy)   8070/tcp, 8080/tcp
jms_koko      ./entrypoint.sh             Up (healthy)   0.0.0.0:2222->2222/tcp, 5000/tcp
jms_lina      /docker-entrypoint.sh ngin  Up (healthy)   80/tcp
jms_lion      /usr/bin/supervisord        Up (healthy)   4822/tcp
jms_luna      /docker-entrypoint.sh ngin  Up (healthy)   80/tcp
jms_mysql     docker-entrypoint.sh --cha  Up (healthy)   3306/tcp, 33060/tcp
jms_nginx     sh -c crond -b -d 8 && ngi  Up (healthy)   0.0.0.0:8443->443/tcp, 0.0.0.0:8080->80/tcp
jms_redis     docker-entrypoint.sh redis  Up (healthy)   6379/tcp

步骤6:验证服务

根据安装脚本的完成提示,浏览器访问JumpServer页面,账号密码admin(重新修改密码)

# 浏览器访问:http://139.159.245.160:8080/

Jump Server 新版本部署示例:

1)安装方式

根据实机环境选择安装方式,支持 在线安装 和 离线安装,安装过程可以参考 安装演示视频

2)环境要求

OS/ArchArchitectureLinux KernelSoft RequirementMinimize Hardware
linux/amd64x86_64>= 4.0wget curl tar gettext iptables python2Core/8GB RAM/60G HDD
linux/arm64aarch64>= 4.0wget curl tar gettext iptables python2Core/8GB RAM/60G HDD
linux/loong64loongarch64== 4.19wget curl tar gettext iptables python2Core/8GB RAM/60G HDD
apt-get update
apt-get install -y wget curl tar gettext iptables

 JumpServer 需要使用 MySQL 或 MariaDB 存储数据,使用 Redis 缓存数据,如果希望使用自建数据库或云数据库请参考此处的要求,支持 数据库 SSL 连接 和 Redis SSL 连接

1)MySQL

create database jumpserver default charset 'utf8';
mysql> show create database jumpserver;
+------------+---------------------------------------------------------------------+
| Database   | Create Database                                                     |
+------------+---------------------------------------------------------------------+
| jumpserver | CREATE DATABASE `jumpserver` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+------------+---------------------------------------------------------------------+
1 row in set (0.00 sec)


2)MariaDB

create database jumpserver default charset 'utf8';
MariaDB> show create database jumpserver;
+------------+-----------------------------------------------------------------------+
| Database   | Create Database                                                       |
+------------+-----------------------------------------------------------------------+
| jumpserver | CREATE DATABASE `jumpserver` /*!40100 DEFAULT CHARACTER SET utf8mb3*/ |
+------------+-----------------------------------------------------------------------+
1 row in set (0.001 sec)

3)一键安装

支持主流 Linux 发行版本(基于 Debian / RedHat,包括国产操作系统)。Gentoo / Arch Linux 请通过 源码安装

root@localhost:/opt#
curl -sSL https://github.com/jumpserver/jumpserver/releases/download/v2.28.8/quick_start.sh | bash

████████████████████████████████████████ 100%
[Success]: download install script to /opt/jumpserver-installer-v2.28.8
[Info]: Start executing the installation script.
[Info]: In an automated script deployment, note the message prompts on the screen.
████████████████████████████████████████ 100%
[Success]: The Installation is Complete.

For more commands, you can enter jmsctl --help to view help information.

4)标准部署

cd /opt
wget https://github.com/jumpserver/installer/releases/download/v2.28.8/jumpserver-installer-v2.28.8.tar.gz
tar -xf jumpserver-installer-v2.28.8.tar.gz
cd jumpserver-installer-v2.28.8

# 根据需要修改配置文件模板, 如果不清楚用途可以跳过修改
cat config-example.txt

# 以下设置如果为空系统会自动生成随机字符串填入
## 迁移请修改 SECRET_KEY 和 BOOTSTRAP_TOKEN 为原来的设置
## 完整参数文档 https://docs.jumpserver.org/zh/master/admin-guide/env/

## Docker 镜像配置
# DOCKER_IMAGE_MIRROR=1

## 安装配置
VOLUME_DIR=/opt/jumpserver
SECRET_KEY=
BOOTSTRAP_TOKEN=
LOG_LEVEL=ERROR

##  MySQL 配置, 如果使用外置数据库, 请输入正确的 MySQL 信息
DB_HOST=mysql
DB_PORT=3306
DB_USER=root
DB_PASSWORD=
DB_NAME=jumpserver

##  Redis 配置, 如果使用外置数据库, 请输入正确的 Redis 信息
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=

# JumpServer 容器使用的网段, 请勿与现有的网络冲突, 根据实际情况自行修改
DOCKER_SUBNET=192.168.250.0/24

## IPV6 设置, 容器是否开启 ipv6 nat, USE_IPV6=1 表示开启, 为 0 的情况下 DOCKER_SUBNET_IPV6 定义不生效
USE_IPV6=0
DOCKER_SUBNET_IPV6=fc00:1010:1111:200::/64

## 访问配置
HTTP_PORT=80
SSH_PORT=2222
RDP_PORT=3389
MAGNUS_PORTS=30000-30100

## HTTPS 配置, 参考 https://docs.jumpserver.org/zh/master/admin-guide/proxy/ 配置
# HTTPS_PORT=443
# SERVER_NAME=your_domain_name
# SSL_CERTIFICATE=your_cert
# SSL_CERTIFICATE_KEY=your_cert_key

## Nginx 文件上传大小
CLIENT_MAX_BODY_SIZE=4096m

## Task 配置, 是否启动 jms_celery 容器, 单节点必须开启
USE_TASK=1

# Core 配置, Session 定义, SESSION_COOKIE_AGE 表示闲置多少秒后 session 过期, SESSION_EXPIRE_AT_BROWSER_CLOSE=True 表示关闭浏览器即 session 过期
# SESSION_COOKIE_AGE=86400
SESSION_EXPIRE_AT_BROWSER_CLOSE=True

# Koko Lion XRDP 组件配置
CORE_HOST=http://core:8080
JUMPSERVER_ENABLE_FONT_SMOOTHING=True

## 终端使用宿主 HOSTNAME 标识
SERVER_HOSTNAME=${HOSTNAME}

# 额外的配置
CURRENT_VERSION=

# 安装
./jmsctl.sh install

# 启动
./jmsctl.sh start

# 安装完成后配置文件 /opt/jumpserver/config/config.txt

cd /opt/jumpserver-installer-v2.28.8

# 启动
./jmsctl.sh start

# 停止
./jmsctl.sh down

# 卸载
./jmsctl.sh uninstall

# 帮助
./jmsctl.sh -h

5)离线部署

离线包解压需要 tar 命令, 参考 环境要求 手动安装

OS/ArchArchitectureLinux KernelOffline Name
linux/amd64x86_64>= 4.0jumpserver-offline-installer-v2.28.8-amd64-7.tar.gz
linux/arm64aarch64>= 4.0jumpserver-offline-installer-v2.28.8-arm64-7.tar.gz
linux/loong64loongarch64== 4.19jumpserver-offline-installer-v2.28.8-loong64-7.tar.gz
cd /opt
tar -xf jumpserver-offline-installer-v2.28.8-amd64-7.tar.gz
cd jumpserver-offline-installer-v2.28.8-amd64-7

# 根据需要修改配置文件模板, 如果不清楚用途可以跳过修改
cat config-example.txt

# 以下设置如果为空系统会自动生成随机字符串填入
## 迁移请修改 SECRET_KEY 和 BOOTSTRAP_TOKEN 为原来的设置
## 完整参数文档 https://docs.jumpserver.org/zh/master/admin-guide/env/

## Docker 镜像配置
# DOCKER_IMAGE_MIRROR=1

## 安装配置
VOLUME_DIR=/opt/jumpserver
SECRET_KEY=
BOOTSTRAP_TOKEN=
LOG_LEVEL=ERROR

##  MySQL 配置, 如果使用外置数据库, 请输入正确的 MySQL 信息
DB_HOST=mysql
DB_PORT=3306
DB_USER=root
DB_PASSWORD=
DB_NAME=jumpserver

##  Redis 配置, 如果使用外置数据库, 请输入正确的 Redis 信息
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=

# JumpServer 容器使用的网段, 请勿与现有的网络冲突, 根据实际情况自行修改
DOCKER_SUBNET=192.168.250.0/24

## IPV6 设置, 容器是否开启 ipv6 nat, USE_IPV6=1 表示开启, 为 0 的情况下 DOCKER_SUBNET_IPV6 定义不生效
USE_IPV6=0
DOCKER_SUBNET_IPV6=fc00:1010:1111:200::/64

## 访问配置
HTTP_PORT=80
SSH_PORT=2222
RDP_PORT=3389
MAGNUS_PORTS=30000-30100

## HTTPS 配置, 参考 https://docs.jumpserver.org/zh/master/admin-guide/proxy/ 配置
# HTTPS_PORT=443
# SERVER_NAME=your_domain_name
# SSL_CERTIFICATE=your_cert
# SSL_CERTIFICATE_KEY=your_cert_key

## Nginx 文件上传大小
CLIENT_MAX_BODY_SIZE=4096m

## Task 配置, 是否启动 jms_celery 容器, 单节点必须开启
USE_TASK=1

# Core 配置, Session 定义, SESSION_COOKIE_AGE 表示闲置多少秒后 session 过期, SESSION_EXPIRE_AT_BROWSER_CLOSE=True 表示关闭浏览器即 session 过期
# SESSION_COOKIE_AGE=86400
SESSION_EXPIRE_AT_BROWSER_CLOSE=True

# Koko Lion XRDP 组件配置
CORE_HOST=http://core:8080
JUMPSERVER_ENABLE_FONT_SMOOTHING=True

## 终端使用宿主 HOSTNAME 标识
SERVER_HOSTNAME=${HOSTNAME}

# 额外的配置
CURRENT_VERSION=

# 安装
./jmsctl.sh install

# 启动
./jmsctl.sh start

安装完成后配置文件 /opt/jumpserver/config/config.txt

cd jumpserver-offline-release-v2.28.8-amd64-7

# 启动
./jmsctl.sh start

# 停止
./jmsctl.sh down

# 卸载
./jmsctl.sh uninstall

# 帮助
./jmsctl.sh -h

小结:

本篇章节为【第五阶段】PROJECT3 的学习笔记,也是本专栏的最后一篇学习笔记,希望这篇笔记可以让您初步了解到 跳板机概念、部署JumpeServer。

  • 安装部署 - JumpServer 文档
  • 快速入门 - JumpServer 文档

Tip:毕竟两个人的智慧大于一个人的智慧,如果你不理解本章节的内容或需要相关笔记、视频,可私信小安,请不要害羞和回避,可以向他人请教,花点时间直到你真正的理解。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一款根据图片内的文字,把图片分类的软件

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

文件操作:Xml转Excel

1 添加依赖 Spire.Xls.jar <dependency><groupId>e-iceblue</groupId><artifactId>spire.xls</artifactId><version>5.3.3</version></dependency>2 代码使用 package cctd.controller;import com.spire.xls.FileFormat; im…

从底层技术到实际应用:Claude与ChatGPT谁更适合学术写作?

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 使用大模型智能AI进行学术写作和科研已经成为学者、研究人员和高校学生的强大助手。Anthropic的Claude和OpenAI的ChatGPT作为该领域的两个主要参与者&#xff0c;正在不断发展和完善。随…

linux 磁盘配额 quota

增加一个facl的的知识点&#xff1a; linux中默认的文件系统支持facl&#xff0c;如果是新挂载的分区&#xff0c;则不支持facl应用。需要在挂载文件系统时使用-o acl选项来启用facl支持。如下图显示 在/etc/fstab添加defaults,acl 1.启用磁盘配额功能&#xff1a;修改/etc/f…

qt QMessageBox详解

1、概述 QMessageBox是Qt库中的一个类&#xff0c;它用于在图形用户界面&#xff08;GUI&#xff09;程序中显示消息框。消息框是一种用于向用户显示信息、警告、错误或询问用户确认的对话框。QMessageBox可以显示文本、图标和按钮&#xff0c;并允许自定义按钮的文本和功能。…

qt QResizeEvent详解

1、概述 QResizeEvent是Qt框架中用于处理窗口或控件大小变化事件的一个类。当用户调整窗口或控件的尺寸时&#xff0c;Qt会生成一个QResizeEvent事件&#xff0c;并将其发送到相应的窗口或控件。开发者可以通过重载窗口或控件的resizeEvent()方法来响应这个事件&#xff0c;并…

黑科技安利 | 超好用的背景去除软件

背景 如果一幅主图里存在其它颜色的背景色调&#xff0c;希望变成白色或者特定色彩/背景图片 推荐 1. Microsoft PowerPoint里自带的“清除背景”/设置透明色 这个功能超级好用&#xff0c;基本满足我日常涉及的90%的清除白色背景的需求 2. https://www.remove.bg/ 这个网…

PyCharm中pylint安装与使用

目录 1. 安装插件2. pycharm中使用该功能3. 命令行使用 1. 安装插件 然后重启 2. pycharm中使用该功能 3. 命令行使用 前提是先 pip install pylint pylint demo01.py下面红框内容的意思是&#xff0c;得到10分/ 满分10分&#xff0c;上次运行获得8.33分&#xff0c;经调整…

Git遇到“fatal: bad object refs/heads/master - 副本”问题的解决办法

Git遇到“fatal: bad object refs/heads/master - 副本”问题的解决办法 起源 让我们从一个常见的Git错误开始&#xff1a; fatal: bad object refs/heads/master - 副本这个错误提示通常意味着Git在引用&#xff08;ref&#xff09;中发现了不一致或损坏的数据。引用是Git用…

Android13 系统/用户证书安装相关分析总结(三) 增加安装系统证书的接口遇到的问题和坑

一、前言 接上回说到&#xff0c;修改了程序&#xff0c;增加了接口&#xff0c;却不知道有没有什么问题&#xff0c;于是心怀忐忑等了几天。果然过了几天&#xff0c;应用那边的小伙伴报过来了问题。用户证书安装没有问题&#xff0c;系统证书(新增的接口)还是出现了问题。调…

一文速学-知识图谱从零开始构建实战:知识图谱搭建构架实践-知识展示

前言 系列文章的上一篇我们已经进行了UIE抽取&#xff0c;非结构化知识抽取整理&#xff0c;转化。但是目前仅在于通过分词提取实体、属性、关系&#xff0c;还没有通过大模型来进一步高效率高精准度来提取这些关键字段&#xff0c;因此后续我们都整个流程优化空间都很大&…

自由学习记录(19)

unity核心也算是看完了吧&#xff0c;但觉得的确是少了点东西&#xff0c;之后再看mvc框架&#xff0c;和网络开发&#xff0c;&#xff0c;感觉有必要想想主次顺序了&#xff0c;毕竟在明年的3月之前尽量让自己更有贴合需求的能力 先了解一些相关概念&#xff0c;不用看懂&am…

「Mac畅玩鸿蒙与硬件22」鸿蒙UI组件篇12 - Canvas 组件的动态进阶应用

在鸿蒙应用中&#xff0c;Canvas 组件可以实现丰富的动态效果&#xff0c;适合用于动画和实时更新的场景。本篇将介绍如何在 Canvas 中实现动画循环、动态进度条、旋转和缩放动画&#xff0c;以及性能优化策略。 关键词 Canvas 组件动态绘制动画效果动态进度条旋转和缩放性能优…

大家知道输电线路微风振动在线监测有哪些先进技术?

特力康TLKS-PMG-WD输电线路微风振动在线监测装置&#xff08;输电线路北斗导线舞动在线监测装置&#xff09;集成了多项先进技术&#xff0c;堪称输电线路监测领域的佼佼者&#xff01;它利用高精度的舞动传感器实时监测导线数据&#xff0c;并通过无线网络发送到监控中心&…

WPF+MVVM案例实战(十七)- 自定义字体图标按钮的封装与实现(ABC类)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1、案例效果1、按钮分类2、ABC类按钮实现1、文件创建2、字体图标资源3、自定义依赖属性4、按钮特效样式实现 3、按钮案例演示1、页面实现与文件创建2、依赖注入3 运…

【算法】(Python)贪心算法

贪心算法&#xff1a; 又称贪婪算法&#xff0c;greedy algorithm。贪心地追求局部最优解&#xff0c;即每一步当前状态下最优选择。试图通过各局部最优解达到最终全局最优解。但不从整体最优上考虑&#xff0c;不一定全局最优解。步骤&#xff1a;从初始状态拆分成一步一步的…

01简介——基于全志V3S的Linux开发板教程笔记

声明&#xff1a;本笔记内容为个人在使用自制的基于全志V3S的Linux开发板的学习笔记文章&#xff0c;仅用于记录学习与开发过程中的问题处理过程、方法操作记录、参考的网络资源等内容。 一、前言 一次偶然的机会&#xff0c;发现了全志V3S这款芯片&#xff0c;基于Cortex-A7内…

【数据库】elasticsearch

1、架构 es会为每个索引创建一定数量的主分片和副本分片。 分片&#xff08;Shard&#xff09;&#xff1a; 将索引数据分割成多个部分&#xff0c;每个部分都是一个独立的索引。 主要目的是实现数据的分布式存储和并行处理&#xff0c;从而提高系统的扩展性和性能。 在创建索…

C6.【C++ Cont】cout的格式输出

目录 1.头文件 2.使用 1.控制宽度和填充 setw函数(全称set field width设置字段宽度) setfill函数(全称Set fill character设置填充字符) 2.控制数值格式 3.控制整数格式 4.控制对齐方式 1.头文件 用cout进行格式化输出前,先引用头文件iomanip(全称input&output m…

【Unity】Unity拖拽在Android设备有延迟和卡顿问题的解决

一、介绍 在制作Block类游戏时&#xff0c;其核心的逻辑就是拖拽方块放入到地图中&#xff0c;这里最先想到的就是Unity的拖拽接口IDragHandler,然后通过 IPointerDownHandler, IPointerUpHandler 这两个接口判断按下和松手&#xff0c;具体的实现逻辑就是下面 public void On…