当前位置: 首页 > news >正文

【开源安全保护】如何安装JumpServer堡垒机

【开源安全保护】如何安装JumpServer堡垒机

什么是堡垒机

大家好,我是星哥,今天我以前来认识堡垒机

堡垒机(Bastion Host),也称为跳板机(Jump Server),是指在计算机网络中,作为一个中介的安全服务器,它位于内外网之间,主要用于集中管理和审计远程访问企业内部重要系统的操作。堡垒机通过严格的访问控制、日志审计和身份认证等手段,确保只有授权用户可以通过它访问企业内部的敏感服务器,并对访问过程进行全面监控。

堡垒机可以有效地降低内部系统暴露在公网中的风险,成为防止外部攻击和内部滥用的重要安全防线。

未添加堡垒机,如下图

image-20241203162947055

使用堡垒机,如下图

image-20241203163107285

堡垒机的优点

增强安全性:堡垒机可以作为一道额外的防线,保护服务器免受直接连接的风险。只有堡垒机可以直接与服务器通信,从而减少了服务器直接暴露在公共网络中的风险。

严格的权限控制:堡垒机可以充当访问控制的关口,只有经过授权的用户才能连接到目标服务器。管理员可以在堡垒机上配置严格的访问规则,确保只有合适的人员可以访问目标服务器。

跟踪访问日志:堡垒机通常会记录连接和操作日志,这使得可以跟踪谁连接了服务器以及他们执行了哪些操作。这对于审计和安全审查非常重要。

集中管理:堡垒机提供了一个集中的访问点,管理员可以在这里管理所有对服务器的访问。这使得在一个地方控制访问权限和监控访问活动变得更加方便。

什么是JumpServer

JumpServer 是广受欢迎的开源堡垒机,是符合 4A 规范的专业运维安全审计系统。JumpServer 帮助企业以更安全的方式管控和登录所有类型的资产,实现事前授权、事中监察、事后审计,满足等保合规要求。

官方文档: https://docs.jumpserver.org/

开源地址:https://github.com/jumpserver/jumpserver

安装JumpServer

实验环境

本文完整的方案会用到服务器(或者虚拟机)

  • 服务器一台(必须,安装 Centos7.2 以上版本系统,如果没有备案域名请购买香港或海外区域,http://y.xgss.net/aliyun)
  • 域名或IP一个,下文以 域名 jms.xgss.net 代替(非必须,本文用用内网ip 192.168.1.121代替)
  • SSL 证书一个(非必须,可以免费证书)

环境要求

  • 支持主流 Linux 发行版本(基于 Debian / RedHat,包括国产操作系统)
  • Gentoo / Arch Linux 请通过源码安装
操作系统架构Linux 内核软件要求最小化硬件配置
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

Ubuntu

apt-get update
apt-get install -y wget curl tar gettext iptables

CentOS

yum update
yum install -y wget curl tar gettext iptables

离线安装

为什么选择离线安装,因为在线安装jumpserver很考验服务器的网络,有时候会因为网络的问题导致安装失败。

还有一种方法是docker all in one。

从飞致云社区 下载最新的 linux/amd64 [地址: community.fit2cloud.com/#/products/jumpserver/downloads ]离线包, 并上传到部署服务器的 /opt 目录。

关注公众号’星哥玩云’,回复’jumpserver’,获得jumpserver的下载地址。

cd /opt
tar -xf jumpserver-ce-v4.4.1-x86_64.tar.gz
cd jumpserver-ce-v4.4.1-x86_64# 安装
./jmsctl.sh install# 启动
./jmsctl.sh start

安装成功

>>> The Installation is Complete
1. You can use the following command to start, and then visit
cd /opt/jumpserver-ce-v4.4.1-x86_64
/opt/jumpserver-ce-v4.4.1-x86_64/jmsctl.sh start2. Other management commands
/opt/jumpserver-ce-v4.4.1-x86_64/jmsctl.sh stop
/opt/jumpserver-ce-v4.4.1-x86_64/jmsctl.sh restart
/opt/jumpserver-ce-v4.4.1-x86_64/jmsctl.sh backup
/opt/jumpserver-ce-v4.4.1-x86_64/jmsctl.sh upgrade
For more commands, you can enter ./jmsctl.sh --help to understand3. Web access
http://192.168.1.121:80
Default username: admin  Default password: ChangeMe

docker ps

查看正在运行的容器

[root@node121 ~]# docker ps
CONTAINER ID   IMAGE                       COMMAND                  CREATED       STATUS                 PORTS                                       NAMES
27241322b803   jumpserver/koko:v4.4.1-ce   "./entrypoint.sh ./k…"   5 hours ago   Up 5 hours (healthy)   0.0.0.0:2222->2222/tcp, :::2222->2222/tcp   jms_koko
76dda2c4c06c   jumpserver/core:v4.4.1-ce   "./entrypoint.sh sta…"   5 hours ago   Up 5 hours (healthy)   8080/tcp                                    jms_core
df05a6e1df0e   jumpserver/chen:v4.4.1-ce   "./entrypoint.sh wisp"   5 hours ago   Up 5 hours (healthy)   8082/tcp                                    jms_chen
099a575dc8a9   redis:7.0-bullseye          "docker-entrypoint.s…"   5 hours ago   Up 5 hours (healthy)   6379/tcp                                    jms_redis
716f50d4f2f0   jumpserver/web:v4.4.1-ce    "/docker-entrypoint.…"   5 hours ago   Up 5 hours (healthy)   0.0.0.0:80->80/tcp, :::80->80/tcp           jms_web
5afd8a649cc4   jumpserver/lion:v4.4.1-ce   "./entrypoint.sh sup…"   5 hours ago   Up 5 hours (healthy)   4822/tcp, 8081/tcp                          jms_lion
421b962cb795   postgres:16.3-bullseye      "docker-entrypoint.s…"   5 hours ago   Up 5 hours (healthy)   5432/tcp                                    jms_postgresql
72521dbb2adc   jumpserver/core:v4.4.1-ce   "./entrypoint.sh sta…"   5 hours ago   Up 5 hours (healthy)   8080/tcp                                    jms_celery

浏览器访问

http://192.168.1.121:80 访问 jumpserver

输入用户和默认的密码,username: admin Default password: ChangeMe,提示修改初始密码。

image-20241203164439583

至此离线安装jumpserver安装成功。

JumpServer all-in-one安装方法

这里用容器all-in-one有个好处就是方便,不会破坏宿主机原来的服务(如果是全新机就可以考虑这个问题),但是安装之后有两个BUG。

一个是nginx的一个报错,“nginx: [emerg] host not found in upstream “facelive” in /etc/nginx/includes/facelive.conf:2”

一个是需要配置配置文件,“配置文件有问题,无法登录,请联系管理员或查看最新文档,如果你是管理员,可以更新配置文件解决,设置配置项”

所以不建议没有Docker操作的小白用这个方法。

至少官方没有修复之前不建议用。

安装docker

省略

Quick start

docker volume create jsdata
docker volume create pgdatadocker run --name jms_all \
-e SECRET_KEY=PleaseChangeMe \
-e BOOTSTRAP_TOKEN=PleaseChangeMe \
-v jsdata:/opt/data \
-v pgdata:/var/lib/postgresql \
-p 2222:2222 \
-p 82:80 jumpserver/jms_all

报错

mv: inter-device move failed: '/opt/jumpserver/data/logs' to '/opt/data/jumpserver/logs'; unable to remove target: Directory not empty
rm: cannot remove '/var/log/nginx': Device or resource busy
>> Init database
>> Start database postgre
Removed stale pid file./opt/web/entrypoint.sh: Configuration complete; ready for start up
nginx: [emerg] host not found in upstream "facelive" in /etc/nginx/includes/facelive.conf:2
2024-12-03 16:55:49,570 INFO exited: web (exit status 1; not expected)
2024-12-03 16:55:50,571 INFO gave up: web entered FATAL state, too many start retries too quickly

image-20241203170109111

修复nginx配置bug

进入docker

# docker exec -it jms_all /bin/bash

编辑

vim /etc/nginx/includes/facelive.conf
把
proxy_pass http://facelive:9999;
改成:
proxy_pass http://127.0.0.1:9999;
保存退出,再重启容器

重启docker容器

root@415e8fb4b1cd:/opt# exit
exit
[root@node121 ~]# docker restart jms_all

浏览器访问

输入用户和默认的密码,username: admin Default password: ChangeMe

依然报错:

配置文件有问题,无法登录,请联系管理员或查看最新文档
如果你是管理员,可以更新配置文件解决,设置配置项
DOMAINS=192.168.1.121:82

image-20241203171218906

修复bug

修复: 配置文件有问题,无法登录,请联系管理员或查看最新文档,如果你是管理员,可以更新配置文件解决,设置配置项

在网上找到的解决办法,这个方法不管用。

# docker exec -it jms_all /bin/bash1.服务器上找到  
mkdir /opt/jumpserver/config/
vim /opt/jumpserver/config/config.txt2.vi进去,找到这里,如何找。可以进入冒号模式:/DOMAINS,来进行查找。DOMAINS="192.168.1.121:82"

这个方法可以修复

# docker exec -it jms_all /bin/bashvim /opt/jumpserver/apps/jumpserver/conf.py
找到 'DOMAINS': '', 这一行。
把改为:
'DOMAINS': '192.168.1.121:82', # 这里换成你的地址。
保存退出
再重启容器
exit
docker restart jms_all

至此all-in-one安装方法可以成功登录jumpserver。

系统内存占用到2G。

参考: https://github.com/jumpserver/Dockerfile/tree/master/allinone

结尾

JumpServer 的安装(离线安装)和配置并不复杂,但却能显著提升企业的运维安全性和操作规范化程度。通过合理的权限划分和全面的审计功能,

下一篇文章星哥会讲如何使用JumpServer堡垒机,保护你的服务器的安全。

相关文章:

【开源安全保护】如何安装JumpServer堡垒机

【开源安全保护】如何安装JumpServer堡垒机 什么是堡垒机 大家好,我是星哥,今天我以前来认识堡垒机 堡垒机(Bastion Host),也称为跳板机(Jump Server),是指在计算机网络中&#x…...

log4j漏洞复现--vulhub靶场

声明:学习过程参考了同站的B1g0rang大佬的文章 Web网络安全-----Log4j高危漏洞原理及修复(B1g0rang) CVE-2021-44228 RCE漏洞 Log4j 即 log for java(java的日志) ,是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输…...

K8s面试系列:K8s常用 API 资源总结速记

写在前面 博文内容为 K8s 中常用的API 资源简单总结适合对K8s 有基本认知,温习,面试准备的小伙伴内容涉及:API 资源组成 ,SSA 和 CSA 资源操作方式,以及下面资源类别简单描述 工作负载:Deployments,StatefulSets,HorizontalPodAutoscaler (HPA)…服务: Service,Ingress,E…...

汽车免拆案例 | 2007款宝马650i车发动机偶尔无法起动

故障现象 一辆2007款宝马650i车,搭载N62B48B发动机,累计行驶里程约为26万km。车主反映,发动机偶尔无法起动,故障频率较低,十几天出现1 次,且故障出现时起动机不工作。 故障诊断  接车后试车,…...

前端(三)html标签(2)

html标签(2) 文章目录 html标签(2)一、列表标签二、表格三、form表单 一、列表标签 html中的列表分为无序列表、有序列表和自定义列表。 <!--无序列表的使用--> <!--pycharm中可以用ul>li*3tab的快捷键快速生成无序列表--> <ul><li>秒杀</li&g…...

D91【python 接口自动化学习】- pytest基础用法

day91 pytest的setup&#xff0c;setdown详解&#xff08;三&#xff09; 学习日期&#xff1a;20241207 学习目标&#xff1a;pytest基础用法 -- pytest的setup&#xff0c;setdown详解&#xff08;三&#xff09; 学习笔记&#xff1a; setup、teardown详解&#xff08;三…...

云桌面:云计算桌面

目录 云桌面的定义和核心概念 技术架构详解 主流架构详解 管理成本分析 安全性措施 应用场景详解 云桌面的定义和核心概念 云桌面是一种通过云计算技术提供的虚拟桌面服务&#xff0c;它允许用户通过网络访问远程服务器上的虚拟机&#xff0c;这些虚拟机为用户提供了一个…...

Word处理表格的一些宏

目录 1、表格首行居中2、表格内容靠左上下居中&#xff08;排除首行&#xff09; 1、表格首行居中 说明&#xff1a; 遇到错误将进行捕获&#xff0c;然后继续处理下一个表格 宏&#xff1a; Sub 表格首行居中()Dim tbl As tableOn Error Resume Next 错误时继续执行下一个…...

Linux网络编程---本地套接字

1.概述 本地套接字 1&#xff1a;作用:本地的进程间通信 2.有关系的进程间通信 3.没有关系的进程间的通信 本地套结字实现流程和网络套结字实现相似&#xff0c;一般采用tcp 二.通信流程 本地套结字通信的流程:1.服务器端:1.1 int fd socket(AF_UNIX/AF_LOCAL,…...

C#自动验证发票真假的程序

C#自动验证发票真假的程序 using Microsoft.Azure.CognitiveServices.Vision.ComputerVision; using Microsoft.Azure.CognitiveServices.Vision.ComputerVision.Models; using System; using System.IO; using System.Threading.Tasks;namespace InvoiceValidation {class Pr…...

后端技术进阶知识总结

前端开发、后端开发、AI算法与应用等技术进阶知识总结 前言1.前端开发2.后端开发3.AI算法3.1 Studio级别的AI工具使用 前言 本文不记录基础性问题和详细解决方案。只记录key idea。 1.前端开发 2.后端开发 依赖注入&#xff08;Dependency Injection&#xff0c;简称DI&…...

opencv复习

目录 1.core 1.图像变换 1.1 affine仿射变换 1.2 透视变换 2.四元数&#xff08;旋转&#xff09; 2.1 轴角转四元数 2.2 旋转矩阵转四元数 2.3 欧拉角转旋转矩阵 2.4 四元数转旋转矩阵 2.5 四元数用eigen用的比较多 2. imgproc. Image Processing 2.1 bilateralF…...

【Unity高级】在编辑器中如何让物体围绕一个点旋转固定角度

本文介绍如何在编辑器里让物体围绕一个点旋转固定角度&#xff0c;比如上图里的Cube是围绕白色圆盘的中心旋转45度的。 目标&#xff1a; 创建一个在 Unity 编辑器中使用的旋转工具&#xff0c;使开发者能够在编辑模式下快速旋转一个物体。 实现思路&#xff1a; 编辑模式下…...

通过IP远程连接MySQL服务时不允许连接到这个MySQL服务器

当你在连接Mysql时报这个错误时 is not allowed to connect to this MySQL server&#xff0c;意思是 MySQL 服务器不允许来自 IP 地址的连接。这通常是由于 MySQL 服务器的访问控制列表&#xff08;ACL&#xff09;限制了特定主机的连接。 要解决这个问题&#xff0c;你需要授…...

试题转excel;pdf转excel;试卷转Excel,word试题转excel

一、问题描述 一名教师朋友&#xff0c;偶尔会需要整理一些高质量的题目到excel中 以往都是手动复制搬运&#xff0c;几百道题几乎需要一个下午的时间 关键这些事&#xff0c;枯燥无聊费眼睛&#xff0c;实在是看起来就很蠢的工作 就想着做一个工具&#xff0c;可以自动处理…...

wordpress网站使用Linux宝塔面板和SQL命令行导入导出超过50M限制的数据库

wordpress网站使用Linux宝塔面板添加mysql数据库&#xff0c;使用phpMyAdmin工具导入sql数据库文件&#xff0c;会有最大限制50M。即使把sql数据库文件压缩为gzip或zip压缩包&#xff0c;压缩包也超过50M&#xff0c;该怎么办&#xff1f;怎样导入超过50M数据库呢&#xff1f; …...

VCP-CLIP A visual context prompting modelfor zero-shot anomaly segmentation

GitHub - xiaozhen228/VCP-CLIP: (ECCV 2024) VCP-CLIP: A visual context prompting model for zero-shot anomaly segmentation 需要构建正样本&#xff0c;异常样本&#xff0c;以及对应的Mask...

【原生js案例】webApp实现鼠标移入移出相册放大缩小动画

图片相册这种动画效果也很常见&#xff0c;在我们的网站上。鼠标滑入放大图片&#xff0c;滑出就恢复原来的大小。现在我们使用运动定时器来实现这种滑动效果。 感兴趣的可以关注下我的系列课程【webApp之h5端实战】&#xff0c;里面有大量的css3动画效果制作原生知识分析&…...

杂谈随笔-关于unity开发游戏

最近有在做unity的游戏开发&#xff0c;都是自学&#xff0c;甚至没有完整的课程体系…… 在犹豫要不要出系列教程&#xff0c;帮助新手快速入门的同时算是巩固一下基础知识。 那这篇文章先谈谈我对于引擎开发游戏的一些小观点&#xff0c;算是做了这么十几个星期的微不足道的…...

base64转file文件对象

1.base64转file文件对象 //将base64转换为文件 dataURLtoFile(dataurl, filename) { var arr dataurl.split(,),mime arr[0].match(/:(.*?);/)[1],bstr atob(arr[1]),n bstr.length,u8arr new Uint8Array(n);while (n--) {u8arr[n] bstr.charCodeAt(n);}return new Fil…...

【jvm】为什么要有GC

目录 1. 自动内存管理2. 提升程序稳定性3. 优化性能4. 跨平台能力5. 分代回收策略 1. 自动内存管理 1.JVM中的GC机制负责自动管理内存&#xff0c;这意味着开发人员不需要手动分配和释放内存。2.这一特性大大简化了Java程序的内存管理&#xff0c;降低了内存泄漏和内存溢出等问…...

开发指南085-大号版elementUI

ElementUI有些地方显示实在太小&#xff0c;不方便操作&#xff0c;需要放大&#xff1a; 1、el-dialog的标题栏那个关闭符号 使用如下方法放大 ::v-deep .el-dialog__headerbtn { font-size: 40px; font-weight: 700; top: 0px; } 2、el-table-column 设置sor…...

#渗透测试#红蓝对抗#SRC漏洞挖掘# Yakit(5)进阶模式-MITM中间人代理与劫持(下)

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…...

使用WebStorm开发Vue3项目

记录一下使用WebStorm开发Vu3项目时的配置 现在WebStorm可以个人免费使用啦&#xff01;?? 基本配置 打包工具&#xff1a;Vite 前端框架&#xff1a;ElementPlus 开发语言&#xff1a;Vue3、TypeScript、Sass 代码检查&#xff1a;ESLint、Prettier IDE&#xff1a;WebSt…...

Mac 录制电脑系统内的声音的具体方法?

1.第一步&#xff1a;下载BlackHole 软件 方式1&#xff1a;BlackHole官方下载地址 方式2&#xff1a; 百度云下载 提取码: n5dp 2.第二步&#xff1a;安装BlackHole 双击下载好的BlackHole安装包&#xff0c;安装默认提示安装。 3.第三步&#xff1a;在应用程序中找到音频…...

计算机网络

1.网络协议是什么&#xff1f; 在计算机网络要做到有条不紊地交换数据&#xff0c;就必须遵守一些约定好的规则&#xff0c;比如交换数据地格式&#xff0c;是否需要发送一个应答信息。这些规则被称为网络协议。 分层结构 应用层&#xff1a;为计算机用户提供服务表示层&…...

爬取某市KFC餐厅信息(POST请求+PYMYSQL)

# 简介 本教程将指导您如何使用Python爬取石家庄市的KFC门店信息&#xff0c;并将这些信息存储到MySQL数据库中。我们将使用requests库来发送网络请求&#xff0c;pymysql库来操作MySQL数据库。 环境准备 在开始之前&#xff0c;请确保您已经安装了以下Python库&#xff1a…...

109.【C语言】数据结构之二叉树层序遍历

目录 1.知识回顾 2.代码实现 准备工作 LevelOrder函数 代码框架 关键代码 3.执行结果 1.知识回顾 层序遍历参见106.【C语言】数据结构之二叉树的三种递归遍历方式文章 截取的部分内容 定义:按层的方式遍历(,设n为树的深度,h1-->h2-->h3-->...-->hn) 以下面…...

Java转C之内存管理

从 Java 转向 C 语言开发&#xff0c;内存管理和指针是两个核心且关键的概念。这些概念在 Java 中被抽象和自动化处理&#xff0c;而在 C 语言中则需要开发者手动管理和操作。 目录 内存管理概述指针基础 指针的定义与初始化地址运算符 & 和解引用运算符 *指针运算 动态内…...

共享内存和信号量

一、共享内存原理 1、基础前提 共享内存是为了进程之间通信服务的。进程间的通信的核心是要让两个不同的进程看到同一份资源。之前的匿名管道通过父子进程继承的关系&#xff0c;让父子进程看到同一份资源&#xff0c;进而进行通信&#xff1b;命名管道则是通过唯一的路径让两…...

SED命令

基本用法&#xff1a; sed命令具体应用&#xff1a; 1.删除第2-5行 nl regular_express.txt | sed 2d结果&#xff1a; 2.在第二行之后新增两行&#xff0c;分别为"drink tea…" 和"drink beer?" nl regular_express.txt | sed 2 a\ drink tea...\…...

洛谷 P6368 [COCI2006-2007#6] MAGIJA C语言

题目&#xff1a;https://www.luogu.com.cn/problem/P6368 题目背景 知名魔术师 AlDimi Kartimi 需要你帮助他来设计他扑克牌的背面图案。 题目描述 众所周知&#xff0c;扑克牌的背面是一个矩形&#xff0c;通过做两边的中垂线可以将矩形分成相等的四部分。 AlDimi Karti…...

TDesign:Picker 选择器

Picker 选择器 API文档地址 单列选择器用法 /// view onTap:(){TDPicker.showMultiPicker(context,data: [controller.coinList],title: ,rightTextStyle: TextStyle(color: AppColors.ColorMain),onConfirm: (selected) {controller.onTapCoin(selected);Navigator.of(contex…...

LLMs之Agent之Lares:Lares的简介、安装和使用方法、案例应用之详细攻略

LLMs之Agent之Lares&#xff1a;Lares的简介、安装和使用方法、案例应用之详细攻略 导读&#xff1a;这篇博文介绍了 Lares&#xff0c;一个由简单的 AI 代理驱动的智能家居助手模拟器&#xff0c;它展现出令人惊讶的解决问题能力。 >> 背景痛点&#xff1a;每天都有新的…...

实验3-实时数据流处理-Flink

1.前期准备 &#xff08;1&#xff09;Flink基础环境安装 参考文章&#xff1a; 利用docker-compose来搭建flink集群-CSDN博客 显示为这样就成功了 &#xff08;2&#xff09;把docker&#xff0c;docker-compose&#xff0c;kafka集群安装配置好 参考文章&#xff1a; …...

axios笔记

一、axios是什么 前端最流行的ajax请求库 二、json-server json-server可以帮助我们搭建http服务 为什么要搭建http服务&#xff1f; &#xff1a;是因为我们用axios的时候&#xff0c;需要向服务端发送请求 我们需要服务端这样一个角色&#xff0c;来与axios结合做实践 1.…...

python拆分Excel文件

按Sheet拆分Excel 或 按照某一列的不同值拆分Excel。文档样式如下&#xff1a; 结果&#xff1a;红色是按照Sheet名拆出的&#xff0c;蓝色和橙色是某个Sheet按照某列的不同值拆分的。 代码&#xff1a; # -*- coding: utf-8 -*- """ 拆分excel文件——按照…...

使用IntelliJ IDEA开发Gradle插件并发布到本地

博主所用软件版本为&#xff1a; IntelliJ IDEA 2024.1.4 (Community Edition) Android Studio Ladybug Feature Drop | 2024.2.2 Beta 1 1、制作gradle插件&#xff08;IntelliJ IDEA 2024.1.4&#xff09; 新建groovy工程&#xff0c;File–>New–>Project… 右键点…...

C# 通过smtp发送邮件(配置好了参数可以直接用)

可以直接用 using System; using System.Net; using System.Net.Mail;class EmailSender {// 发送邮件的函数&#xff0c;接收SMTP配置作为参数public static void SendEmail(string smtpServer, int smtpPort, string senderEmail, string senderPassword, string subject, s…...

【数据结构】栈和队列

目录 1.栈 1.1.栈的概念及结构 1.2.栈的实现 2.队列 2.1.队列的概念及结构 2.2.队列的实现 3.运用栈理解一道题 4.使用两个队列实现一个栈 1.栈 1.1.栈的概念及结构 首先&#xff0c;我们来了解一种新的数据结构——栈。栈是一种特殊的线性表&#xff0c;其只允许在固…...

使用 Spring Doc 为 Spring REST API 生成 OpenAPI 3.0 文档

Spring Boot 3 整合 springdoc-openapi 概述 springdoc-openapi 是一个用于自动生成 OpenAPI 3.0 文档的库&#xff0c;它支持与 Spring Boot 无缝集成。通过这个库&#xff0c;你可以轻松地生成和展示 RESTful API 的文档&#xff0c;并且可以使用 Swagger UI 或 ReDoc 进行…...

网络数据库安全和数据安全概述

1、数据安全的三要素 完整性&#xff0c;机密性&#xff0c;可用性 2、安全技术和措施 数据完整性技术、数据备份和恢复技术、数据加密技术、访问控制技术、用户管理和身份验证技术 3、数据库安全 数据库安全是指数据库的任何部分都不允许受到侵害&#xff0c;或未经授权的…...

STM32F10X与GD32工程创建区别

1.宏定义区别 GD32虽然与STM32F10X的管脚兼容&#xff0c;但是用keil创建工程时&#xff0c;GD32在选择芯片型号的时候就已经自己定义了宏。STM32F10x需要手动定义宏。在以下界面定义用到的单片机。 2.时钟区别。GD32最大时钟为120Mhz,所用的hal库里面的系统初始化会初始化时钟…...

cmakelist使用总结

支持能编译成在不同系统上运行程序的方法 我们代码就一份&#xff0c;但有时需要编译成arm32&#xff0c;有时需要编译成x86_64,或更多 1、首先先将代码定义一个名称&#xff1a; #将所有的源文件列为一个集合&#xff0c;集合名字叫做SRC_LISTS set(SRC_LISTS main.cpp A.cpp…...

【论文阅读】国际开源发展经验及其对我国开源创新体系建设的启示

作者&#xff1a;包云岗老师 包云岗老师是计算机体系结构方向的大牛&#xff0c;推动了体系结构方面的开源事业! 欢迎对本栏目感兴趣的人学习"一生一芯"~ 学习体会&#xff1a; 承接前文&#xff0c;唐志敏老师讲到已有的软硬件生态系统和开发成本制约了对新结构的探…...

React 初学者指南:从零开始构建第一个 React 应用

React 是一个用于构建用户界面的 JavaScript 库&#xff0c;它能够让我们高效地构建复杂的 UI。对于 React 初学者来说&#xff0c;最重要的就是理解它的基本概念以及如何开始使用它。本文将引导你从零开始构建你的第一个 React 应用 1.1. 安装 React 环境 首先&#xff0c…...

力扣93题:复原 IP 地址

力扣93题&#xff1a;复原 IP 地址&#xff08;C语言实现详解&#xff09; 题目描述 给定一个只包含数字的字符串 s&#xff0c;复原它并返回所有可能的 IP 地址格式。 有效的 IP 地址需满足以下条件&#xff1a; IP 地址由四个整数&#xff08;每个整数位于 0 到 255 之间…...

字符编码发展历史

文章目录 发展历史- ASCII- ISO-8859- Unicode- UTF系列- UTF-8- UTF-16- UTF-32 - 中文编码- GB2312- GBK- GB18030 - 其他编码 归纳总结 发展历史 计算机的基础是二进制数字&#xff08;0和1&#xff09;。虽然人类日常使用的是各种字符&#xff08;如字母、数字、符号等&am…...

aws codepipeline + github + sonarqube + jenkins实践CI/CD

https://blog.csdn.net/u011564831/article/details/144007981文章浏览阅读1.2k次&#xff0c;点赞31次&#xff0c;收藏21次。本文使用 Jenkins 结合 CodeBuild, CodeDeploy 实现 Serverless 的 CI/CD 工作流&#xff0c;用于自动化发布已经部署 lambda 函数。在 AWS 海外区&a…...

KNN_识别图片数字

1.实验过程省略灰度化处理过程&#xff0c;用已经处理好的txt数据进行训练 3.jpg from PIL import Image def imgtotxt(imgfile,txtfile,size (32,32)):image_file Image.open(imgfile).resize(size,Image.LANCZOS).convert(L)width,height image_file.sizef open(txtfile,…...