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

CentOS 7下JumpServer安装及配置(超详细版)

前言

Jumpserver是一种用于访问和管理远程设备的Web应用程序,通常用于对服务器进行安全访问。它基于SSH协议,提供了一个安全和可管理的环境来管理SSH访问。Jumpserver是基于Python开发的一款开源工具,其提供了强大的访问控制功能,可以轻松实现用户、主机、命令和审计日志的管理。

Jumpserver的主要功能包括:

  1. 访问控制:Jumpserver提供了灵活的访问控制,可以根据用户、角色、主机、命令和时间等因素实现精细的控制。

  2. 统一认证:Jumpserver支持LDAP、AD、Radius等认证方式,可以实现与企业内部认证系统的集成。

  3. 会话管理:Jumpserver可以记录所有SSH会话并生成审计日志,以便管理人员了解用户的操作情况。

  4. 实时监控:Jumpserver可以实时监控SSH会话,并提供了实时监控面板,可以随时了解用户的操作情况。

  5. 审计日志:Jumpserver提供了完整的审计日志功能,包括用户登录、会话记录、命令执行情况等,方便管理人员进行安全审计和追溯。

  6. 多租户:Jumpserver支持多租户功能,可以实现不同租户的资源隔离和安全管理。

总之,Jumpserver是一款功能强大的安全访问控制系统,可以为企业提供强大的安全管理和审计功能。

目录

1 环境配置

2 修改字符集

3 安装软件包

4 编译安装

5 克隆(git clone)

6 下载Jumpserver

7 配置Jumpserver

 7.1 安装所需的Python modules

 7.2 安装Redis

 7.3 安装MySQL

 7.4 修改Jumpserver配置文件

 7.5 把配置写入config.yml文件

8 启动/关闭Jumpserver

9 部署koko

 9.1 使用docker部署

 9.2 手工下载部署

  9.2.1 部署

  9.2.2 启动koko 

 10 部署guacamole

 10.1 部署

 10.2 列出本地镜像

11 部署luna

12 配置nginx 

 12.1 nginx的安装

 12.2 配置nginx

 12.3 运行nginx

 12.4 修改nginx的主配置文件

13 Jumpserver登录测试


1 环境配置

(1)关闭防火墙。

systemctl stop firewalld

(2)关闭SELinux。

setenforce 0

# setenforce 1    #设置SELinux为强制模式
# setenforce 0    #设置SELinux为宽容模式

普及:

获取SELinux状态:

getenforce

getenforce是一个Linux命令,用于查看SELinux(Security-Enhanced Linux)安全机制的状态(SELinux是一款基于Linux内核的安全模块)。该命令可以显示当前SELinux的强制模式状态:enforcing(强制模式)、permissive(宽容模式)或disabled(禁用模式)。

2 修改字符集

修改字符集,否则可能报“input/output error”问题,因为日志里打印了中文。【逐个输入并运行以下命令】

localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf

3 安装软件包

yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git

如图,显示“完毕!”即表示我们安装成功!

接下来我们使用wget命令下载个Python的包,下载时间过长,耐心等待。

wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz 

为了确保我们安装成功,我们可以使用ls命令查看下

如图即表示安装成功~接下来我们使用tar命令解压压缩包。

tar xf Python-3.6.1.tar.xz 

 使用ls命令查看,发现有Python-3.6.1即表示我们解压成功!

4 编译安装

首先我们要进入到Python-3.6.1这个目录。

cd Python-3.6.1

 编译安装(时间漫长,耐心等待)

./configure && make && make install

5 克隆(git clone)

进入opt目录下

cd /opt

使用Python3的环境。

python3 -m venv py3
source /opt/py3/bin/activate

运行完毕后会出现:(py3) [root@localhost opt]# 

使用git命令克隆

git clone git://github.com/kennethreitz/autoenv.git

【问题解决】 http://t.csdnimg.cn/OQUcr

问题一:

fatal: unable to connect to github.com:

github.com[0: 20.205.243.166]: errno=???? 

这是因为有些网络环境可能会限制Git 协议默认使用端口的访问,或者直接阻止使用Git协议。因此,我们需要将git://github.com/替换为https://github.com/,这样可以确保与GitHub进行通信。

git clone https://github.com/kennethreitz/autoenv.git

问题二:

fatal: unable to access 'https://github.com/kennethreitz/autoenv.git/': TCP connection reset by peer

我们需要取消http和https代理。 

git config --global --unset http.proxy
git config --global --unset https.proxy

 如图即表示我们成功啦~

克隆完成后,source默认使用bashrc

echo 'source /opt/autoenv/activate.sh' >> ~/.bashrc

 使环境变量生效。

source ~/.bashrc

6 下载Jumpserver

我们还是使用克隆命令(git clone)下载并进入jumpserver目录(cd jumpserver)并将工作目录切换到主分支(git checkout master)。(时间漫长,耐心等待)

git clone https://github.com/jumpserver/jumpserver.git && cd jumpserver && git checkout master

在此过程中遇到同等问题还是取消http、https代理即可。

7 配置Jumpserver

 7.1 安装所需的Python modules

进入 jumpserver 目录时将自动载入 python 虚拟环境.

echo "source /opt/py3/bin/activate" > /opt/jumpserver/.env

安装依赖RPM包

cd requirements/

 输入y

 

yum -y install $(cat rpm_requirements.txt)

 安装Python依赖

pip install --upgrade pip

 阿里云源下载(更快)

pip install -r requirements.txt

【问题解决】

ERROR: Could not open requirements file: [Errno 2] 没有那个文件或目录: 'requirements.txt'

先创建requirements.txt 

pip freeze > requirements.txt

重新执行命令

pip install -r requirement.txt

 7.2 安装Redis

yum -y install redis

设置开机自启

systemctl enable redis

 启动redis

systemctl start redis

 7.3 安装MySQL

在centos里,默认的数据库是mariadb

yum -y install mariadb mariadb-devel mariadb-server

启动mariadb

systemctl start mariadb

设置开机自启

systemctl enable mariadb

进入mariadb

mysql

 创建jumpserver数据库默认使用utf8字符集

create database jumpserver default charset 'utf8';

 给本机授权

grant all on jumpserver.* to 'jumpserveradmin'@'127.0.0.1' identified by 'jumpserverpwd';

刷新数据库

flush privileges;

\q退出

\q

 7.4 修改Jumpserver配置文件

先进入/opt/jumpserver目录下。(因为我们刚才在/opt/jumpserver/requirements下,所以直接cd ..进入上一目录即可。)

cd ..
cp config_example.yml config.yml

生成随机SECRET_KEY
SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`

 注意:A-Za-z0-9 中不能有空格!且符号`不能写错,位置也不能错,否则将会遇到“-bash: /dev/urandom: 权限不够”的情况。

echo $SECRET_KEY

把SECRET_KEY写入bashrc中。

echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc

生成随机BOOTSTRAP_TOKEN
BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`
echo $BOOTSTRAP_TOKEN

 

把BOOTSTRAP_TOKEN写入bashrc中。

echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc

 7.5 把配置写入config.yml文件

逐个运行如下指令

sed -i "s/SECRET_KEY:/SECRET_KEY: $SECRET_KEY/g" /opt/jumpserver/config.yml
sed -i "s/BOOTSTRAP_TOKEN:/BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN/g" /opt/jumpserver/config.yml
sed -i "s/# DEBUG: true/DEBUG: false/g" /opt/jumpserver/config.yml
sed -i "s/# LOG_LEVEL: DEBUG/LOG_LEVEL: ERROR/g" /opt/jumpserver/config.yml
sed -i "s/# SESSION_EXPIRE_AT_BROWSER_CLOSE: false/SESSION_EXPIRE_AT_BROWSER_CLOSE: true/g" /opt/jumpserver/config.yml
sed -i "s/DB_PASSWORD: /DB_PASSWORD: $DB_PASSWORD/g" /opt/jumpserver/config.yml
echo -e "\033[31m 你的SECRET_KEY是 $SECRET_KEY \033[0m"

echo -e "\033[31m 你的BOOTSTRAP_TOKEN是 $BOOTSTRAP_TOKEN \033[0m"

确认内容有没有错误 vi config.yml

vi config.yml

修改如图所示内容

修改成如图所示:

配置完成啦~

8 启动/关闭Jumpserver

在/opt/jumpserver路径下。

启动

./jms start 

【看到一堆ok即表示启动成功,如果没成功显示error则表示配置有问题,则重新vi config.yml配置】

 后台启动(后台运行使用 -d 参数)

./jms start -d

关闭

./jms stop

【问题解决】http://t.csdnimg.cn/8XoNi

Traceback (most recent call last):
  File "./jms", line 11, in <module>
    import django
ModuleNotFoundError: No module named 'django'

 

使用pip install 模块名下载。

pip install Django

下载完成后重新启动就好。

如果下载不成功,出现一堆红色下载不成功。

更新 pip 到最新版本 

pip install --upgrade pip

再执行一次就好了。

pip install Django

 最后一行显示successfully installed等表示成功安装django。

成功啦~

9 部署koko

koko支持终端管理,默认端口(port)为2222。

【提供两种方法,自行选择部署】

 9.1 使用docker部署

下载docker

yum -y install docker

 

启动docker

systemctl start docker

查看自己的IP地址。(IP地址在“2:ens33:”中inet后面)

ip a

Server_IP=自己的IP地址。

Server_IP=192.168.10.111

查看BOOTSTRAP_TOKEN值

echo $BOOTSTRAP_TOKEN

 根据查看的值输入下面指令。(值不一样,不要照搬下面指令)

BOOTSTRAP_TOKEN=BZYt8bkFhzZjAjc2
docker run --name jms_koko -d -p 2222:2222 -p 5000:5000 -e CORE_HOST=http://$Server_IP:8080 -e BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN jumpserver/jms_koko:1.5.5

显示comolete就说明部署完成啦~

 9.2 手工下载部署

【本人采用docker部署,所以手工部署就不附图啦~】

  9.2.1 部署

进入/opt目录。

cd /opt

使用wget命令下载压缩包。【官方网站:https://github.com/jumpserver/koko/releases】

wget https://github.com/jumpserver/koko/releases/download/1.5.2/koko-master-37daa82-linux-amd64.tar.gz

 解压

tar -xf koko-master-37daa82-linux-amd64.tar.gz

 进入/opt/kokodir

cd /opt/kokodir

授权

chown -R root:root /opt/kokodir

先使用cp命令备份一下(cp 源文件路径  目标文件夹)

cp config_example.yml config.yml

 编辑config.yul   https://docs.jumpserver.org/zh/v3/installation/source_install/koko_install/#13

vi config.yml

BOOTSTRAP_TOKEN需要 jumpserver/config.yml 里面获取,保证一致】 

# 项目名称, 会用来向Jumpserver注册, 识别而已, 不能重复
# NAME: {{ Hostname }}# Jumpserver项目的url, api请求注册会使用
CORE_HOST: http://127.0.0.1:8080   # Core 的地址# Bootstrap Token, 预共享秘钥, 用来注册coco使用的service account和terminal
# 请和jumpserver 配置文件中保持一致,注册完成后可以删除
BOOTSTRAP_TOKEN: ********  # 和 Core config.yml 的值保持一致# 启动时绑定的ip, 默认 0.0.0.0
BIND_HOST: 0.0.0.0# 监听的SSH端口号, 默认2222
SSHD_PORT: 2222            # 使用 0.0.0.0:2222# 监听的HTTP/WS端口号,默认5000
HTTPD_PORT: 5000           # 使用 0.0.0.0:5000# 项目使用的ACCESS KEY, 默认会注册,并保存到 ACCESS_KEY_STORE中,
# 如果有需求, 可以写到配置文件中, 格式 access_key_id:access_key_secret
# ACCESS_KEY: null# ACCESS KEY 保存的地址, 默认注册后会保存到该文件中
# ACCESS_KEY_FILE: data/keys/.access_key# 设置日志级别 [DEBUG, INFO, WARN, ERROR, FATAL, CRITICAL]
LOG_LEVEL: DEBUG           # 开发建议设置 DEBUG, 生产环境推荐使用 ERROR# SSH连接超时时间 (default 15 seconds)
# SSH_TIMEOUT: 15# 语言 [en,zh]
# LANGUAGE_CODE: zh# SFTP的根目录, 可选 /tmp, Home其他自定义目录
# SFTP_ROOT: /tmp# SFTP是否显示隐藏文件
# SFTP_SHOW_HIDDEN_FILE: false# 是否复用和用户后端资产已建立的连接(用户不会复用其他用户的连接)
# REUSE_CONNECTION: true# 资产加载策略, 可根据资产规模自行调整. 默认异步加载资产, 异步搜索分页; 如果为all, 则资产全部加载, 本地搜索分页.
# ASSET_LOAD_POLICY:# zip压缩的最大额度 (单位: M)
# ZIP_MAX_SIZE: 1024M# zip压缩存放的临时目录 /tmp
# ZIP_TMP_PATH: /tmp# 向 SSH Client 连接发送心跳的时间间隔 (单位: 秒),默认为30, 0则表示不发送
# CLIENT_ALIVE_INTERVAL: 30# 向资产发送心跳包的重试次数,默认为3
# RETRY_ALIVE_COUNT_MAX: 3# 会话共享使用的类型 [local, redis], 默认local
# SHARE_ROOM_TYPE: local# Redis配置
# REDIS_HOST: 127.0.0.1      # 如果需要部署多个 koko, 需要通过 redis 来保持会话
# REDIS_PORT: 6379
# REDIS_PASSWORD:
# REDIS_CLUSTERS:
# REDIS_DB_ROOM:

  9.2.2 启动koko 

./koko

 10 部署guacamole

【基于HTML5和 JavaScript 的VNC查看器】

 10.1 部署

docker run --name jms_guacamole -d -p 8081:8081 -e JUMPSERVER_SERVER=http://$Server_IP:8080 -e BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN jumpserver/jms_guacamole:1.5.5

显示如图所示内容即表示部署成功!

【问题解决】

/usr/bin/docker-current: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See '/usr/bin/docker-current run --help'.

启动下docker就好啦~

systemctl start docker

或者重新启动下docker服务。

systemctl restart docker.service

 10.2 列出本地镜像

docker images

11 部署luna

与nginx结合支持Web Terminal前端。

进入opt目录。

cd /opt/

wget命令下载luna压缩包。

wget https://github.com/jumpserver/luna/releases/download/1.5.5/luna.tar.gz

 【问题解决】http://t.csdnimg.cn/h1KAe

[root@localhost opt]# wget https://github.com/jumpserver/luna/releases/download/1.5.5/luna.tar.gz
--2023-10-10 10:41:10--  https://github.com/jumpserver/luna/releases/download/1.5.5/luna.tar.gz
正在解析主机 github.com (github.com)... 20.205.243.166
正在连接 github.com (github.com)|20.205.243.166|:443... 已连接。
无法建立 SSL 连接。

原因:

wget在使用HTTPS协议时,默认会去验证其网站的证书,而这个证书验证经常会失败。

问题解决:

方法一:在后面加“--no-check-certificate”。(执行时候不验证SSL)

--no-check-certificate

【在最后加,在wget后面加还会报同样的错误】 

搞定啦~ 

方法二:将https换成http (更换协议,将https协议换成http)

解压

tar xf luna.tar.gz

授权

chown -R root:root luna

12 配置nginx 

 12.1 nginx的安装

http://t.csdnimg.cn/p03bl

1.配置nginx所需环境

yum -y install gcc gcc-c++ make zlib-devel pcre pcre-devel openssl-devel

pcre使nginx支持http rewrite模块

openssl 使nginx支持ssl

zlib提供nginx对http包的内容进行gzip压缩

2.获取nginx压缩包

方法一:在官网(https://nginx.org/en/download.html)直接下载.tar.gz压缩包,然后直接拉到linux里面/使用rz命令上传。(1.如果压缩包拉不进去,使用yum -y install lrzsz指令,再进行拉取。2.rz命令上传需先下载rz)

yum -y install lrzsz

方法二:使用wget命令下载(需要系统提前安装wget,如果没有安装,使用yum install wget进行安装。)

3.解压

解压到 /usr/local 下

tar xzvf nginx-1.23.1.tar.gz -C /usr/local/

4.配置

进入解压后的目录下。

cd /usr/local/nginx-1.23.1/

 可以配置啦~ O(∩_∩)O哈哈~

./configure --prefix=/usr/local/nginx 

5.编译安装

make && make install

 

编译安装成功!

 12.2 配置nginx

cd /usr/local/nginx/conf/

ls命令查看

创建conf.d文件夹

mkdir conf.d

cd conf.d/

 创建并编辑Jumpserver.conf【注意:一定是以.conf结尾。】

vi Jumpserver.conf

写入内容如下:

server {listen 80;client_max_body_size 100m;  # 录像及文件上传大小限制location /luna/ {try_files $uri / /index.html;alias /opt/luna/;  # luna 路径, 如果修改安装目录, 此处需要修改}location /media/ {add_header Content-Encoding gzip;root /opt/jumpserver/data/;  # 录像位置, 如果修改安装目录, 此处需要修改}location /static/ {root /opt/jumpserver/data/;  # 静态资源, 如果修改安装目录, 此处需要修改}location /socket.io/ {proxy_pass       http://localhost:5000/socket.io/;proxy_buffering off;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";proxy_set_header X-Real-IP $remote_addr;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;access_log off;}location /koko/ {proxy_pass       http://localhost:5000/koko/;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;access_log off;}location /guacamole/ {proxy_pass       http://localhost:8081/;proxy_buffering off;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $http_connection;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;access_log off;}location / {proxy_pass http://localhost:8080;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}

 12.3 运行nginx

/usr/local/nginx/sbin/nginx

 后面加-t,显示ok,successful即表示运行成功~

 12.4 修改nginx的主配置文件

cd /usr/local/nginx/conf/

编辑nginx.conf文件。

vi nginx.conf 

编辑前:

在keepalive_timeout  65;下面添加如下命令。

include /usr/local/nginx/conf/conf.d/*.conf;

编辑后: 

编辑完成后保存退出。

重新启动nginx。

/usr/local/nginx/sbin/nginx -s reload

没有报错,就可以开始登录测试吧~

【如果报错,则表示刚才配置文件编写有问题,回去重新检查。】

13 Jumpserver登录测试

浏览器使用IP地址登录。

错误页面

 正确页面会显示Jumpserver开源堡垒机登录页面。

好啦,接下来就可以使用Jumpserver开源堡垒机啦~

创作不易,给个三连吧~

相关文章:

CentOS 7下JumpServer安装及配置(超详细版)

前言 Jumpserver是一种用于访问和管理远程设备的Web应用程序&#xff0c;通常用于对服务器进行安全访问。它基于SSH协议&#xff0c;提供了一个安全和可管理的环境来管理SSH访问。Jumpserver是基于Python开发的一款开源工具&#xff0c;其提供了强大的访问控制功能&#xff0c;…...

基于 ACK Fluid 的混合云优化数据访问(五):自动化跨区域中心数据分发

作者&#xff1a;车漾 前文回顾&#xff1a; 本系列将介绍如何基于 ACK Fluid 支持和优化混合云的数据访问场景&#xff0c;相关文章请参考&#xff1a; -基于 ACK Fluid 的混合云优化数据访问&#xff08;一&#xff09;&#xff1a;场景与架构 -基于 ACK Fluid 的混合云优…...

sentinel的启动与运行

首先我们github下载sentinel Releases alibaba/Sentinel (github.com) 下载好了后输入命令让它运行即可&#xff0c;使用cmd窗口输入一下命令即可 java -Dserver.port8089 -jar sentinel-dashboard-1.8.6.jar 账号密码默认都是sentinel 启动成功后登录进去效果如下...

模拟量采集无线WiFi网络接口TCP Server, UDP, MQTT

● 4-20mA信号转换成标准Modbus TCP协议 ● 支持TCP Server, UDP, MQTT等通讯协议 ● 内置网页功能&#xff0c;可以通过网页查询数据 ● 宽电源供电范围&#xff1a;8 ~ 32VDC ● 可靠性高&#xff0c;编程方便&#xff0c;易于应用 ● 标准DIN35导轨安装&#xff0c;方便…...

五、OSPF动态路由实验

拓扑图&#xff1a; 基本ip的配置已经配置好了&#xff0c;接下来对两台路由器配置ospf协议&#xff0c;两台PC进行跨网段通讯 R1与R2构成单区域OSPF区域0&#xff0c;首先对R1进行配置 首先进入ospf 默认进程1&#xff0c;router id省略空缺&#xff0c;之后进入area 0区域&…...

系统架构设计:16 论软件开发过程RUP及其应用

目录 一 统一过程RUP 1 典型特点 2 四个阶段 (1)构思阶段(初始阶段/初启阶段)...

Gralloc ION DMABUF in Camera Display

目录 Background knowledge Introduction ia pa va and memory addressing Memory Addressing Page Frame Management Memory area management DMA IOVA and IOMMU Introduce DMABUF What is DMABUF DMABUF 关键概念 DMABUF APIS –The Exporter DMABUF APIS –The…...

【LVS】lvs的四种模式的区别是什么?

LVS中的DR模式、NAT模式、TUN模式和FANT模式是四种不同的负载均衡模式&#xff0c;它们之间的主要区别在于数据包转发方式和网络地址转换。 DR模式&#xff08;Direct Routing&#xff09;&#xff1a;此模式通过改写请求报文的目标MAC地址&#xff0c;将请求发给真实服务器&a…...

Android原生实现控件点击弹起效果方案(API28及以上)

之前在实现控件阴影时有提到过&#xff0c;阴影效果的实现采用的是Android原生的View的属性&#xff0c;拔高Z轴。Z轴会让View产生阴影的效果。 Zelevation translationZ 拔高Z轴可以通过控制elevation和translationZ。 我们之前是通过elevation来单纯的控制Z轴&#xff1b;而…...

【数据结构-队列 二】【单调队列】滑动窗口最大值

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【单调队列】&#xff0c;使用【队列】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&…...

如何设置CentOS系统以禁用不必要的网络端口和服务?

要禁用CentOS系统中的不必要的网络端口和服务&#xff0c;可以按照以下步骤进行操作&#xff1a; 1. 查看当前正在运行的服务和端口&#xff1a;使用以下命令可以查看正在运行的服务和对应的端口号。 sudo netstat -tuln 2. 停用不必要的服务&#xff1a;根据netstat命令的输…...

【IDEA项目个别类爆红,但是项目可以正常运行】

打开项目时发现idea个别类爆红,但是项目可以正常运行 问题原因&#xff1a;Idea本身的问题&#xff0c;可能是其缓存问题&#xff0c;导致爆红 解决方案&#xff1a;重置Idea 很多时候排查不出代码问题&#xff0c;就尝试一下此操作。 选择目录&#xff1a;File–>Invalida…...

hive 之select 中文乱码

此处的中文乱码和mysql的库表 编码 latin utf 无关。 直接上案例。 有时候我们需要自定义一列&#xff0c;有时是汉字有时是字母&#xff0c;结果遇到这种情况了。 说实话看到这真是糟心。这谁受得了。 单独select 没有任何问题。 这是怎么回事呢&#xff1f; 经过一番检查&…...

优化|优化处理可再生希尔伯特核空间的非参数回归中的协变量偏移

原文&#xff1a;Optimally tackling covariate shift in RKHS-based nonparametric regression. The Annals of Statistics, 51(2), pp.738-761, 2023.​ 原文作者&#xff1a;Cong Ma, Reese Pathak, Martin J. Wainwright​ 论文解读者&#xff1a;赵进 编者按&#xff1a; …...

Netty深入浅出Java网络编程学习笔记(一) Netty入门篇

目录 一、概述 1、什么是Netty 2、Netty的优势 二、入门案例 1、服务器端代码 2、客户端代码 3、运行流程 组件解释 三、组件 1、EventLoop 处理普通与定时任务 关闭 EventLoopGroup 处理IO任务 服务器代码 客户端代码 分工细化 划分Boss 和Work 增加自定义EventLoopGroup 切换…...

自动化产线集控系统(西门子CNC 840D/840DSL远程控制)

1.1项目背景 RQQ/VF120机组目前为1人操作3台机床&#xff0c;需在机台旁监控。为了改善人员在班中劳动强度非常大的现状&#xff0c;调整好每台机床的节奏&#xff0c;以保证机床的最少的等待时间。本项目旨在通过远程监视设备运行过程关键参数&#xff0c;操作人员人员可远程监…...

MVVM 与 MVC区别和应用场景?

MVVM 和 MVC 1. MVC2. MVVM 1. MVC MVC 是 Model View Controller 的缩写 Model&#xff1a;模型层&#xff0c;是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。View&#xff1a;视图层&#xff0c;用户界面渲染逻辑&#xff0c;通常视图…...

Linux开发-Ubuntu软件源工具

开发&验证环境&#xff1a; 操作系统&#xff1a;ubuntu 20.04 软件源&#xff1a;http://archive.ubuntu.com/ubuntu 开发工具 sudo apt install vim sudo apt install git# gnu工具链 sudo apt install gcc sudo apt install g sudo apt install gdb# llvm工具链 sudo …...

环境下载地址

1. DOTNET环境下载 适用于 Visual Studio 的 .NET SDK 下载 (microsoft.com)https://dotnet.microsoft.com/zh-cn/download/visual-studio-sdks...

E. Block Sequence-Codeforces Round 903 (Div. 3)

E. Block Sequence dp题,设dp[i]表示i~n之间的数&#xff0c;需要最小删除数量 那么每一位数有两种情况&#xff0c;设数a[i]&#xff1a; 1.被删除&#xff1a;dp[i]dp[i1]1,这一位等于上一位的加一。 2.被保留&#xff1a;dp[i]min(dp[i],dp[ia[i]1]); #include<iostream…...

路由router

什么是路由? 一个路由就是一组映射关系&#xff08;key - value&#xff09;key 为路径&#xff0c;value 可能是 function 或 component 2、安装\引入\基础使用 只有vue-router3&#xff0c;才能应用于vue2&#xff1b;vue-router4可以应用于vue3中 这里我们安装vue-router3…...

学习编程-先改变心态

编程失败的天才 林一和我很久以前就认识了——我从五年级就认识他了。他是班上最聪明的孩子。如果每个人在家庭作业或考试准备方面需要帮助&#xff0c;他们都会去那里。 有趣的是&#xff0c;林一不是那种连续学习几个小时的孩子。 他的聪明才智似乎与生俱来&#xff0c;几乎毫…...

【Node.js】http 模块

1. http 模块 import http from http // 创建本地服务器接收数据 const server http.createServer((req, res) > {console.log(req.url)res.writeHead(200, { Content-Type: application/json // Content-Type: text/html;charsetutf-8 // 将内容以 html 标签和 utf-8 的…...

S/4 HANA 大白话 - 财务会计-2 总账主数据

接下来看看财务模块的一些具体操作。 总账相关主数据 公司每天运转&#xff0c;每天办公室有租金&#xff0c;有水电费&#xff0c;有桌椅板凳损坏&#xff0c;鼠标损坏要换&#xff0c;有产品买卖&#xff0c;有收入。那么所有这些都得记下来。记哪里&#xff1f;记在总账里…...

Redis根据中心点坐标和半径筛选符合的数据

目录 1.启动Redis​编辑 2.导入maven依赖 3.添加redis配置 4.编写RedisService 5.使用 6.验证 1.启动Redis 2.导入maven依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifac…...

springboot 集成 zookeeper 问题记录

springboot 集成 zookeeper 问题记录 环境 springboot - 2.7.8 dubbo - 3.1.11 dubbo-dependencies-zookeeper-curator5 - 3.1.11 模拟真实环境&#xff0c;将 windows 上的 zookeeper 迁移到虚拟机 linux 的 docker 环境 failed to connect to zookeeper server 迁移到…...

java中的接口interface

一、面向对象基本概念 Java是一种面向对象的语言&#xff0c;其中「对象」就相当于是现实世界中的一个个具体的例子&#xff0c;而「类」就相当于是一个抽象的模板&#xff0c;将抽象的概念模板转化为具体的例子的过程就叫做「实例化」。 比如说人这个概念就是一个抽象化的「…...

多个git提交,只推送其中一个到远程该如何处理

用新分支去拉取当前分支的指定commit记录&#xff0c;之后推送到当前分支远程仓库实现推送指定历史提交的功能 1.查看当前分支最近五次提交日志 git log --oneline -5 2.拉取远程分支创建临时本地分支 localbranch 为本地分支名 origin/dev 为远程目标分支 git checkout …...

uniapp中input的disabled属性

uniapp中input的disabled属性&#xff1a; 小程序中兼容性好&#xff1b; 在H5中兼容性差&#xff1b; 在H5中使用uniapp的input的disabled属性&#xff0c;属性值只能是true或false&#xff0c;如果为0&#xff0c; "都会为true&#xff1b; <input class"in…...

Jmeter连接mysql数据库详细步骤

一、一般平常工作中使用jmeter 连接数据库的作用 主要包括&#xff1a; 1、本身对数据库进行测试&#xff08;功能、性能测试&#xff09;时会需要使用jmeter连接数据库 2、功能测试时&#xff0c;测试出来的结果需要和数据库中的数据进行对比是否正确一致。这时候可以通过j…...