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

Tonghttpserver6.0.1.3 使用整理(by lqw)

文章目录

  • 1.声明
  • 2.关于单机版控制台和集中管理控制台
  • 3.单机版控制台
    • 3.1安装,启动和查看授权信息
    • 3.2一些常见的使用问题(单机控制台)
    • 3.3之前使用的是nginx,现在要配nginx.conf上的配置,在THS上如何配置
    • 3.4如何配置密码过期时间
    • 3.5关于高可用(单机版控制台)
    • 3.6重置密码
    • 3.7日志切割
  • 4.集中管理控制台
    • 安装和启动集中管控台
    • 通过集中管理安装THS节点
    • 手动安装并识别THS节点
    • 重置集中管理控制台密码
  • 5.手动部署(不使用控制台)
  • 6.容器版安装
    • 方式一:使用已有的镜像包
    • 方式二 使用k8s安装包里的脚本
      • 安装准备
      • 安装
  • 7.各种常用配置和用法(仅供参考)
    • 动静分离
    • 跨域
    • 配置https
    • 强转https
    • 传真实ip到后端
    • THS节点配置为普通用户启动(不包含控制台)
    • THS节点配置开机自启动

1.声明

本帖主要使用的是Tonghttpserver6.0.1.3,以及THSManager6.0.1.2(集中管理控制台)。实际以最新的产品手册为准。

2.关于单机版控制台和集中管理控制台

6013版本的每个THS的安装包里都自带了单机版控制台,如果只是使用单个THS节点,直接使用单机版控制台,如果要用多个THS节点并建立集群,建议使用集中管理控制台。

如果本身不允许使用web页面(也就是控制台的),也有手动部署环节。

之后的章节,会以单机版控制台和集中管理控制台的章节进行介绍,建议根据需求,在开始的安装环节选择好是用单机版控制台,集中管理控制台还是手动部署。

3.单机版控制台

3.1安装,启动和查看授权信息

首先确认cpu,确认是x86还是arrch64:

lscpu

在这里插入图片描述

x86的使用TongHttpServer_6.0.1.3_x86_64.tar.gz,arrch64的使用TongHttpServer_6.0.1.3_aarch64.tar.gz:

在这里插入图片描述

确认好安装包后,直接解压,例如:

tar -zvxf TongHttpServer_6.0.1.3_x86_64.tar.gz

解压后目录:
在这里插入图片描述

放入授权(找销售要)
在这里插入图片描述
cd 到bin目录,执行./start.sh -L,查看过期时间(临时授权一般三个月,永久为-1):

在这里插入图片描述

然后配置一下控制台(找到conf目录下的ths-console.conf):
在这里插入图片描述
在这里插入图片描述

确认没问题后,执行指令先启动单机版控制台:

./startConsole.sh 

在这里插入图片描述

检查防火墙和本地网络,以及进程和端口是否起来了(本次示范直接关闭了防火墙):

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

访问服务器ip:8000/admin,初始账号admin,初始密码Ths#123.com。

初次进入需要修改密码:
在这里插入图片描述

点击这里直接启动:
在这里插入图片描述

点击这里停止:
在这里插入图片描述

也可以自己通过执行脚本进行启动和停止:
在这里插入图片描述

[root@localhost bin]# ./start.sh
Software version: TongHttpServer/6.0.1.3
Build at Nov  25 2024 03:06:35
httpserver start success
[root@localhost bin]# ./start.sh stop
httpserver stop success

3.2一些常见的使用问题(单机控制台)

3.3之前使用的是nginx,现在要配nginx.conf上的配置,在THS上如何配置

实际配置文件在conf目录下,cat一下可以看到,这个httpserver.conf文件跟nginx.conf的配置语法很像:

在这里插入图片描述
在这里插入图片描述

如果使用单机版控制台的话,在这里可以编辑:
在这里插入图片描述

一些常见的配置可以点这里来看:

在这里插入图片描述

在这里插入图片描述

也可以备份和切换备份:
在这里插入图片描述

另外把鼠标放置在对应配置上,会有提示:

在这里插入图片描述

更多配置细节,可参考安装包里的002_TongHttpServer_V6.0监控配置手册_6013A01.pdf。

3.4如何配置密码过期时间

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.5关于高可用(单机版控制台)

一般高可用ha是搭配一主一从来使用的,这种情况下建议直接用集中管理控制台,尽量别用单机版控制台了。

其次可能会遇到这种提示:

在这里插入图片描述
这是因为控制台限制,只能用root操作,所以遇到这种提示,多数是因为文件权限和属主都是普通用户,并非报错。

3.6重置密码

如果没有忘记密码且可以通过控制台登录,则直接在控制台上操作:

在这里插入图片描述

也可以执行指令,例如:

./startConsole.sh -passwd=THS#123.com

在这里插入图片描述

3.7日志切割

在这里插入图片描述
找到这个脚本,把里面的路径改成自己的ths的logs目录:
在这里插入图片描述

定时任务常用指令参考:

# 查看定时任务
crontab -l
# 编辑定时任务
crontab -e
# 启动定时任务
systemctl start crond
# 关闭定时任务
systemctl stop crond
# 重启定时任务
systemctl restart crond

把日志切片脚本加入定时任务:

crontab -e
# 每天凌晨23:59进行日志切片
59 23 * * * /opt/THS/tools/scripts/logrotate.sh
systemctl restart crond

4.集中管理控制台

安装和启动集中管控台

集中管理控制台目前用的是6.0.1.2版本,请根据lscpu查询结果确认使用哪个安装包

在这里插入图片描述
在这里插入图片描述

直接解压:
在这里插入图片描述

conf目录下配置一下grpc.yaml:在这里插入图片描述

然后确认下是采用http还是https的形式来访问控制台,下面会分开说。

先是http的,配置conf目录下的http.yaml:
在这里插入图片描述
之后去bin目录执行./startManager.sh init进行数据库初始化:
在这里插入图片描述
执行./startManager.sh start启动控制台:
在这里插入图片描述

通过集中管理安装THS节点

参考Tonghttpserver6.0.1.0部署指引优化版+基本操作指引+部分问题收集持续更新(by lqw)

手动安装并识别THS节点

参考Tonghttpserver6.0.1.0部署指引优化版+基本操作指引+部分问题收集持续更新(by lqw)

重置集中管理控制台密码

在这里插入图片描述

5.手动部署(不使用控制台)

这种分两种情况,分别是单机和集群高可用的。

两种情况的区别只在于是否配置conf目录下的httpserverHA.conf(里面要配网卡信息,浮动ip信息等),本质都是直接解压THS的安装包(例如x86环境下的TongHttpServer_6.0.1.3_x86_64.tar.gz),解压后放入授权文件,执行脚本启动(单机版和集群高可用都需要执行./start.sh 进行启动 ,高可用的还需要执行./startHA.sh)。

配置高可用,可参考

参考Tonghttpserver6.0.1.0部署指引优化版+基本操作指引+部分问题收集持续更新(by lqw)

备注:
如果是配置高可用(linux下),请留意httpserverHA.conf是否有remote_ip 这个配置,有的删掉,这个是window下用的。

在这里插入图片描述

6.容器版安装

方式一:使用已有的镜像包

请联系东方通的销售或者技术人员提供对应的镜像包,如下图所示:
在这里插入图片描述

备注:
1.已有镜像包是x86的,如果对操作系统有要求的,建议跳过这个方式,参考方式二。
2.这两个包的区别在于是否带了Agent程序,Agent程序跟集中管理控制台有关,一般情况下,没有用到集中管理控制台,可以不用。
3.需要在本地测试并验证license.dat有效(这个可以自行解压一个6013的THS的安装包,把license.dat 丢在解压目录下,cd到bin目录执行./start.sh -L)。
在这里插入图片描述

下载并上传对应的tar.gz到服务器,然后cd到这个安装包的目录,执行docker load -i指令,例如:

docker load -i TongHttpServer_Instance_Image_6.0.1.3_alpine_x86_64.tar

docker load 指令执行完,使用docker images看看是否有对应镜像:

在这里插入图片描述

然后执行以下指令测试是否能跑起来(记得自己在本地解压好对应的THS安装目录并放入授权):
在这里插入图片描述

 docker run -d -v /opt/THS/license.dat:/opt/THS/license.dat -v /opt/THS/conf:/opt/THS/conf -p 8999:8080  IMAGE_ID

CONTAINER ID可通过docker images查看:
在这里插入图片描述

之后执行docker ps -a确认是否创建成功:

在这里插入图片描述
另外可以执行docker exec -it CONTAINER ID /bin/bash 查看容器内部结构(CONTAINER ID用docker ps -a来查看):
在这里插入图片描述

方式二 使用k8s安装包里的脚本

详细可参考TongHttpServer_V6.0K8s 部署手册_6011A01.pdf
在这里插入图片描述

安装准备

1.有docker环境,并且已经拉取对应操作系统的镜像。
2.将对应安装包上传到服务器上:
在这里插入图片描述

在这里插入图片描述

安装

解压TongHttpServer_Kubernetes_6.0.1.1.tar.gz

tar -zvxf TongHttpServer_Kubernetes_6.0.1.1.tar.gz

解压后在解压目录的THS/install-package放入对应的安装包(这里演示的是x86的):

在这里插入图片描述
找到该脚本
在这里插入图片描述

脚本里修改你放入的tar.gz的名字
在这里插入图片描述

然后到这个目录找到dockerfile(这里不需要用到agent,所以选择该的是withoutAgent这个)
在这里插入图片描述
除了要安装的系统,其他的全部不要动(系统镜像需要提前pull下来或者load到docker里,能用docker images查看到):
在这里插入图片描述
在这里插入图片描述
cd 到这个build.sh所在目录
在这里插入图片描述
在这里插入图片描述

这里输入的是:

tongtech.com/images/ths-instance:v6.0.1.3

在这里插入图片描述

在这里插入图片描述

继续用docker run测试一下:

 docker run -d -v /opt/THS/license.dat:/opt/THS/license.dat -v /opt/THS/conf:/opt/THS/conf -p 8998:8080  IMAGE_ID

在这里插入图片描述

另外可以执行docker exec -it CONTAINER ID /bin/bash 查看容器内部结构(CONTAINER ID用docker ps -a来查看):
在这里插入图片描述

7.各种常用配置和用法(仅供参考)

动静分离

http {upstream backend {server 127.0.0.1:8082;server 127.0.0.1:8083;}server {listen 8080;server_name localhost;access_log logs/access.log main;location / {   root html;try_files $uri $uri/ /index.html;}location /api {proxy_pass http://backend;}}
}

跨域

server {listen 80;server_name example.com;location /api/ {# 允许所有域名跨域add_header 'Access-Control-Allow-Origin' '*';# 允许的 HTTP 方法add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';# 允许的请求头add_header 'Access-Control-Allow-Headers' 'Origin, Authorization, Content-Type, Accept';# OPTIONS 预检请求直接返回成功if ($request_method = 'OPTIONS') {return 204;}proxy_pass http://backend_server;}
}

配置https

http {server {listen 8443 ssl;server_name localhost;access_log logs/access.log main;ssl_protocols TLSv1.3;ssl_gmtls on;ssl_certificate tools/crt_demo/SS.pem tools/crt_demo/SE.pem;ssl_certificate_key tools/crt_demo/SS.key.pem tools/crt_demo/SE.key.pem;ssl_certificate tools/crt_demo/server.crt;ssl_certificate_key tools/crt_demo/server.key;#ssl_session_cache    shared:SSL:1m;#ssl_session_timeout  5m;ssl_ciphers  HIGH:!aNULL:!MD5;#ssl_prefer_server_ciphers  on;location / {root html;index index.html;}}
}

强转https

# HTTP 配置(80端口),将所有 HTTP 请求重定向到 HTTPS
server {listen 80; # HTTP端口server_name tmail.tepon.com.cn; # 绑定域名# 永久重定向到 HTTPSreturn 302 https://tmail.tepon.com.cn$request_uri;
}# HTTPS 配置(443端口),处理加密请求
server {listen 443 ssl; # HTTPS端口server_name tmail.tepon.com.cn; # 绑定域名# 配置 SSL 证书和密钥ssl_certificate crts/tebon2024.pem;ssl_certificate_key crts/tebon2024.key;# 启用最新的 TLS 协议,增强安全性ssl_protocols TLSv1.2 TLSv1.3;# IP透传,保留原始客户端IPproxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Host $host;# 处理来自 HTTPS 的请求location / {proxy_pass http://backend_servers; # 将请求转发到后端服务器# 确保后端知道请求是通过 HTTPS 传输#proxy_set_header X-Forwarded-Proto https; }
}

容易遇到的问题:

使用nginx设置http跳转https,报错:ERR_TOO_MANY_REDIRECTS

传真实ip到后端

proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

备注:

如果应用那边同时使用了Tongweb,Tongweb部分配置可参考以下帖子:

负载场景下TongWeb如何获取真实的客户端IP地址

THS节点配置为普通用户启动(不包含控制台)

之所以单独写这一节,是参考
普通用户权限使用tongTHS的解决方案的时候,发现了以下问题:
1./var/run 这个目录,只要重启了服务器,就需要重新赋权777,否则就会在THS节点的error.log里报can not open file /var/run/xxx (在现场遇到的)。
2.很多人不知道setcap 这个有什么作用,怎么执行,在哪里执行。(这个要在THS节点安装目录的bin目录执行)。

首先我们要知道,THS节点的启动主要是这两个指令(/opt/THStest/THS是我示范用哪个的THS的安装目录):

cd /opt/THStest/THS/bin
./start.sh 
./startHA.sh

所以可以根据自己的情况,在THS的bin目录创建一个脚本Tonghttpserver.sh,脚本内容如下:

#!/bin/bash
#!赋权777到/var/run
sudo chmod 777 /var/run
#!启动THS节点,/opt/THStest/THS为THS节点安装目录
nohup /opt/THStest/THS/bin/httpserver -p  /opt/THStest/THS -c /opt/THStest/THS/conf/httpserver.conf
#!启动THS高可用,/opt/THStest/THS为THS节点安装目录
/bin/bash /opt/THStest/THS/bin/startHA.sh
#!/opt/THStest/THS为THS 安装目录
echo $! > /opt/THStest/THS/bin/web.pid

同时新建一个TonghttpserverStop.sh

#!/bin/bash
pkill httpserver

接下来执行以下操作(/opt/THStest/THS是THS安装节点目录,yehuorufeng是演示创建的普通用户):


[root@localhost THStest]# chmod 755 /opt/THStest/THS/bin/Tonghttpserver.sh
[root@localhost THStest]# chmod 755 /opt/THStest/THS/bin/TonghttpserverStop.sh
[root@localhost ~]# chmod 755 /opt/THStest/THS/conf
[root@localhost ~]# chmod 644 /opt/THStest/THS/conf/*
[root@localhost THStest]# chown -R yehuorufeng:yehuorufeng  /opt/THStest/THS
[root@localhost THStest]# chmod 644 /opt/THStest/THS/conf
[root@localhost THStest]# chmod 755 $(find /opt/THStest/THS/html -type d)
[root@localhost THStest]# chmod 644 $(find /opt/THStest/THS/html -type f)
## 配置后普通用户能用sudo指令,方便后面执行setcap
[root@localhost bin]# usermod -aG wheel yehuorufeng
[root@localhost bin]# su yehuorufeng
[yehuorufeng@@localhost bin]# cd /opt/THStest/THS/bin/
## 必须在普通用户下操作
[yehuorufeng@@localhost bin]# sudo setcap cap_net_bind_service=+ep ./httpserver
## 必须在普通用户下操作
[yehuorufeng@@localhost bin]# sudo  setcap cap_net_raw,cap_net_admin=+ep ./httpserverHA

在这里插入图片描述

如果遇到sudo 需要输入用户密码的,可以用root用户这样配置操作(目的是设置该普通用户使用sudo指令不需要输入用户密码,其中yehuorufeng替换为你的普通用户名):

sudo visudo#在该文件最末尾配置
yehuorufeng ALL=(ALL) NOPASSWD: ALL

在这里插入图片描述

输入ip a看看是否有浮动ip(没配的不用看这里):
在这里插入图片描述

如果有报错,请根据报错信息进行处理,例如:
在这里插入图片描述
在这里插入图片描述

THS节点配置开机自启动

THS节点的tools目录的service下有各种开机脚本的参考(包括THS节点,HA,agent)。

在这里插入图片描述

本次示范的是配置了上一节普通用户的情况下,配置开机自启动(请根据自身情况进行调整),参考了httpserver.service:在这里插入图片描述

在/usr/lib/systemd/system下新建一个tonghttpserver.service,并赋权644

[Unit]
Description=tonghttpserver
StartLimitIntervalSec=0
After=network.target[Service]
Type=forking
Restart=always
RestartSec=30
User=yehuorufeng
Group=yehuorufeng
LimitNOFILE=102400
LimitNPROC=102400
LimitMEMLOCK=infinity
WorkingDirectory=/opt/THStest/THS/bin
ExecStart=/opt/THStest/THS/bin/Tonghttpserver.sh
ExecStop=/opt/THStest/THS/bin/TonghttpserverStop.sh[Install]
WantedBy=multi-user.target

在这里插入图片描述

接下来执行以下指令(用root)

[root@localhost system]# systemctl daemon-reload
[root@localhost system]# systemctl start tonghttpserver.service
[root@localhost system]# systemctl status tonghttpserver
[root@localhost system]# systemctl enable tonghttpserver
Created symlink from /etc/systemd/system/multi-user.target.wants/tonghttpserver.service to /usr/lib/systemd/system/tonghttpserver.service.

重启服务器,重新输入以下指令确认是否启动成功:

[root@localhost ~]# systemctl status tonghttpserver
● tonghttpserver.service - tonghttpserverLoaded: loaded (/usr/lib/systemd/system/tonghttpserver.service; enabled; vendor preset: disabled)Active: active (running) since 一 2024-12-30 12:42:45 CST; 1min 11s agoProcess: 1013 ExecStart=/opt/THStest/THS/bin/Tonghttpserver.sh (code=exited, status=0/SUCCESS)CGroup: /system.slice/tonghttpserver.service├─1146 httpserver: master process /opt/THStest/THS/bin/httpserver -p /opt/THStest/THS -c /opt/THStest/THS/conf/httpserver.conf├─1148 httpserver: worker process├─1150 httpserver: worker process├─1151 httpserver: worker process├─1152 httpserver: worker process├─1191 /opt/THStest/THS/bin/httpserverHA -f /opt/THStest/THS/conf/httpserverHA.conf /opt/THStest/THS/logs/ha_run_log└─1193 /opt/THStest/THS/bin/httpserverHA -f /opt/THStest/THS/conf/httpserverHA.conf /opt/THStest/THS/logs/ha_run_log1230 12:42:42 localhost.localdomain systemd[1]: Starting tonghttpserver...
1230 12:42:42 localhost.localdomain sudo[1017]: yehuorufeng : TTY=unknown ; PWD=/opt/THStest/THS/bin ; USER=root ; COMMAND=/bin/chmod 777 /var/run
1230 12:42:42 localhost.localdomain Tonghttpserver.sh[1013]: Software version: TongHttpServer/6.0.1.3
1230 12:42:42 localhost.localdomain Tonghttpserver.sh[1013]: Build at Nov  25 2024 03:06:35
1230 12:42:42 localhost.localdomain Tonghttpserver.sh[1013]: httpserverHA is startting...
1230 12:42:45 localhost.localdomain Tonghttpserver.sh[1013]: httpserverHA start success!
1230 12:42:45 localhost.localdomain systemd[1]: Started tonghttpserver.
[root@localhost ~]# ps -ef |grep httpserver
yehuoru+  1146     1  0 12:42 ?        00:00:00 httpserver: master process /opt/THStest/THS/bin/httpserver -p /opt/THStest/THS -c /opt/THStest/THS/conf/httpserver.conf
yehuoru+  1148  1146  0 12:42 ?        00:00:00 httpserver: worker process
yehuoru+  1150  1146  0 12:42 ?        00:00:00 httpserver: worker process
yehuoru+  1151  1146  0 12:42 ?        00:00:00 httpserver: worker process
yehuoru+  1152  1146  0 12:42 ?        00:00:00 httpserver: worker process
yehuoru+  1191     1  0 12:42 ?        00:00:00 /opt/THStest/THS/bin/httpserverHA -f /opt/THStest/THS/conf/httpserverHA.conf /opt/THStest/THS/logs/ha_run_log
yehuoru+  1193  1191  0 12:42 ?        00:00:00 /opt/THStest/THS/bin/httpserverHA -f /opt/THStest/THS/conf/httpserverHA.conf /opt/THStest/THS/logs/ha_run_log
root      2489  1549  0 12:44 pts/0    00:00:00 grep --color=auto httpserver

在这里插入图片描述

在这里插入图片描述

相关文章:

Tonghttpserver6.0.1.3 使用整理(by lqw)

文章目录 1.声明2.关于单机版控制台和集中管理控制台3.单机版控制台3.1安装,启动和查看授权信息3.2一些常见的使用问题(单机控制台)3.3之前使用的是nginx,现在要配nginx.conf上的配置,在THS上如何配置3.4如何配置密码过…...

图像坐标导数的表达式 Expression for Image Coordinate Derivate

Title: 图像坐标导数的表达式 Expression for Image Coordinate Derivate 文章目录 I. 图像坐标 Image CoordinatesII. 关于 x \mathbf{x} x 的导数 Derivative wrt x \mathbf{x} x1. 第一部分2. 第二部分3. 两部分合并 III. 关于 H H H 的导数 Derivative wrt H H H1. 第一…...

Jenkins 中自动化部署 Spring Boot 项目

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的全栈工程师 欢迎分享 / 收藏 / 赞 / 在看…...

Live555、FFmpeg、GStreamer介绍

Live555、FFmpeg 和 GStreamer 都是处理流媒体和视频数据的强大开源框架和工具,它们广泛应用于实时视频流的推送、接收、处理和播放。每个框架有不同的设计理念、功能特性以及适用场景。下面将详细分析这三个框架的作用、解决的问题、适用场景、优缺点,并…...

西门子DBX DBD DBB DBW的关系

DB10.DBD0 DB10.DBW0DB10.DBW2 DB10.DBB0DB10.DBB1DB10.DBB2DB10.DBB3 DB10.DBX0.00.7DB10.DBX1.01.7DB10.DBX2.02.7DB10.DBX3.03.7 使用之前需要在DB10中先定义,如果你仅在DB10中定义了一个DBD0,那么原则上你是可以使用上述所有地址的,但…...

语言模型在时间序列预测中的作用

语言模型在时间序列预测中的作用 从目前相关的研究情况来看,大语言模型在时间序列预测中的作用存在争议。 质疑其有用性的方面 消融研究结果:在对一些流行的基于语言模型(LLM)的时间序列预测方法进行消融研究时发现,去除LLM组件或将其替换为基本注意力层,在大多数情况下…...

【centos8 镜像修改】centos8 镜像修改阿里云

要将 CentOS 8 的镜像源修改为阿里云镜像,你需要编辑 /etc/yum.repos.d/ 目录下的 .repo 文件。以下是具体的步骤: 备份原始的 .repo 文件: 在编辑之前,建议备份原始的 .repo 文件,以便在出现问题时可以恢复。 sudo cp…...

2024年12月个人工作生活总结

本文为 2024年12月工作生活总结。 研发编码 Golang语言byte数组赋值 假定有如下变量: var strCode string var bCode [9]byte现需将string类型转换成byte类型,如下: bCode []byte(strCode)无法转换,提示: cannot…...

[cg] android studio 无法调试cpp问题

折腾了好久,native cpp库无法调试问题,原因 下面的Deploy 需要选Apk from app bundle!! 另外就是指定Debug type为Dual,并在Symbol Directories 指定native cpp的so路径 UE项目调试: 使用Android Studio调试虚幻引擎Android项目…...

vulnhub靶场【warzone】之2

前言 靶机:warzone-1,IP地址192.168.1.71 攻击:kali,IP地址192.168.1.16 都采用虚拟机,网卡为桥接模式 主机发现 因为都是同一局域网下,相当于内网环境,所以使用下面的工具,若想…...

MySQL什么情况下会加间隙锁?

目录 一、使用范围条件查询 二、唯一索引的范围查询 三、普通索引的查询 四、间隙锁的锁定规则 五、间隙锁的影响 间隙锁(Gap Lock)是MySQL中的一种锁机制,主要用于防止幻读现象。在MySQL的InnoDB存储引擎中,当事务隔离级别设置为可重复读(Repeatable Read)时,间隙…...

REDIS2.0

string list hash set 无序集合 声明一个key,键里面的值是元素,元素的类型是string 元素的值是唯一的,不能重复 多个集合类型之间可以进行并集,交集,集查的运算 sadd test1 a b c c d :添加5个元素&am…...

Java方法使用详解:从基本概念到进阶技巧

1. 方法介绍 方法是执行特定功能的代码块,可以被多次调用。方法由方法头和方法体组成,方法头包括方法名、参数列表和返回类型。方法体包含实际执行的代码。 2. 无参无返回值方法使用 这种方法没有参数,也不返回任何值。常用于执行一些不需…...

RT-Thread中堆和栈怎么跟单片机内存相联系

现在RT-ThreadMCU的应用方式越来越普遍,RT-Thread需要配置MCU中的RAM到的系统中,进入系统内存管理,才能提供给基于实时系统的应用程序使用,比如给应用程序提供malloc、free等函数调用功能。在嵌入式软件开发中,我们经常…...

对jenkins的rpm进行处理

下载Jenkins RPM包 首先&#xff0c;你需要从Jenkins官方网站&#xff08;https://pkg.jenkins.io/redhat - stable/&#xff09;下载合适的RPM包。通常&#xff0c;对于CentOS等基于RPM的系统&#xff0c;可以选择jenkins - <version>.noarch.rpm这种格式的包&#xff0…...

从Huggingface中下载数据集、模型

报错&#xff1a; 可能原因&#xff1a; 1. 服务器网络连接 这样就显示没有问题 2.访问权限问题 3.连接超时 4.使用镜像 使用镜像的方法在autodl上是可以成功的&#xff0c;但是在一些服务器却不能成功&#xff0c;那么就需要我们下载到本地&#xff0c;然后再把本地的打包…...

设计模式的分类

根据概念性动机分3类设计模式 创建型模式&#xff1a;管理对象的创建。 常用的有单例模式&#xff0c;简单工厂模式&#xff0c;工厂方法模式&#xff0c;另外还有原型模式&#xff0c;抽象工厂模式&#xff0c;建造者模式 结构型模式&#xff1a;将已有对象加入到设计中时…...

【图像去噪】论文精读:DualDn: Dual-domain Denoising via Differentiable ISP

请先看【专栏介绍文章】:【图像去噪(Image Denoising)】关于【图像去噪】专栏的相关说明,包含适配人群、专栏简介、专栏亮点、阅读方法、定价理由、品质承诺、关于更新、去噪概述、文章目录、资料汇总、问题汇总(更新中) 文章目录 前言Abstract1 Introduction2 Related W…...

张量与数据类型

Pytorch最基本的操作对象——张量&#xff08;tensor&#xff09;&#xff0c;张量是Pytorch中重要的数据结构&#xff0c;可认为是一个高维数组。一般的&#xff0c;标量&#xff08;scalar&#xff09;是只有大小没有方向的量&#xff0c;如1、2、3等&#xff1b;向量&#x…...

JavaScript概述

Web网页的三要素&#xff1a;HTML结构、CSS表现、JavaScript行为。 一、JavaScript语言的组成 JS的全称叫JavaScript&#xff0c;它一门面向对象的解释型弱类型语言。 JavaScript也是由3个部分来组成的&#xff1a;ECMAScript、DOM、BOM。 ECMAScript——它是JS的核心部分&a…...

tarjan算法——割边

今天也是小小的学了一个tarjan算法中的割边的一个应用 他和割点很像&#xff0c;都是用来处理无向图的&#xff0c;只不过是不能走反向边罢了 我们首先来说一个割边的定义 割边 当我们在无向图中删除一个边&#xff0c;无向图被分成不联通的两部分&#xff0c;那么这条边就…...

ESP32 I2S音频总线学习笔记(一):初识I2S通信与配置基础

文章目录 简介为什么需要I2S&#xff1f;关于音频信号采样率分辨率音频声道 怎样使用I2S传输音频&#xff1f;位时钟BCLK字时钟WS串行数据SD I2S传输模型I2S通信格式I2S格式左对齐格式右对齐格式 i2s基本配置i2s 底层API加载I2S驱动设置I2S使用的引脚I2S读取数据I2S发送数据卸载…...

Mybatisplus-IService

IService 是 MyBatis-Plus 提供的一个通用 Service 层接口&#xff0c;它封装了常见的 CRUD 操作&#xff0c;包括插入、删除、查询和分页等。通过继承 IService 接口&#xff0c;可以快速实现对数据库的基本操作&#xff0c;同时保持代码的简洁性和可维护性。 IService 接口中…...

深入浅出 Beam Search:自然语言处理中的高效搜索利器

Beam Search 技术详解 1. 引言 Beam Search 是一种广泛应用于自然语言处理&#xff08;NLP&#xff09;、机器翻译、语音识别等序列生成任务中的启发式搜索方法。本文将详细探讨 Beam Search 的原理、实现步骤、应用场景及其优缺点&#xff0c;并通过具体例子帮助读者更好地理…...

MySQL 可重复读隔离级别,完全解决幻读了吗?

什么是事务隔离级别&#xff1f; 事务隔离级别是数据库用来控制多个并发事务之间如何交互的机制。不同的隔离级别提供了不同程度的保护&#xff0c;以防止并发事务之间的相互干扰。MySQL 支持四种隔离级别&#xff1a; 读未提交&#xff08;Read Uncommitted&#xff09;&…...

Nginx知识详解(理论+实战更易懂)

目录 一、Nginx架构和安装 1.1 Nginx 概述 1.1.1 nginx介绍 1.1.2?Nginx 功能介绍 1.1.3?基础特性 1.1.4?Web 服务相关的功能 1.2?Nginx 架构和进程 1.2.1?Nginx 进程结构 1.2.2?Nginx 进程间通信 1.2.3?Nginx 启动和 HTTP 连接建立 1.2.4?HTTP 处理过程 1…...

VScode怎么重启

原文链接&#xff1a;【vscode】vscode重新启动 键盘按下 Ctrl Shift p 打开命令行&#xff0c;如下图&#xff1a; 输入Reload Window&#xff0c;如下图&#xff1a;...

华夏ERP系统部署

JDK安装及环境变量配置 数据库安装 Redis安装部署 Nginx安装部署 后端程序前端程序部署...

实际部署Dify可能遇到的问题:忘记密码、开启HTTPS、知识库文档上传的大小限制和数量限制

背景 前面我们以 docker compose 容器化的方式本地部署了 Dify 社区版&#xff0c;并快速体验了其聊天助手、工作量编排以及智能体&#xff08;Agent&#xff09;功能。不过后续实际生产环境使用时遇到了忘记密码、如何开启SSL以支持HTTPS、如何突破知识库文档上传的大小限制和…...

【C语言】库函数常见的陷阱与缺陷(三):内存分配函数[4]--free

C语言中的free函数用于释放之前通过malloc、calloc或realloc动态分配的内存。然而,在使用free函数时,开发者可能会遇到一些陷阱和缺陷。 一、功能与用法 free 函数是 C 语言中用于释放动态分配内存的关键函数。在程序使用 malloc、calloc 或 realloc 等函数在堆上分配了内存…...

【TypeScript篇】TypeScript命令行编译和自动化编译

目录 1. 命令行编译 步骤一&#xff1a;创建一个demo.ts文件 步骤二&#xff1a;全局安装TypeScript 步骤三&#xff1a;使用命令编译.ts文件 2. 自动化编译 步骤一&#xff1a;生成编译控制文件 步骤二&#xff1a;开启监视 3. 自动化编译的一些其它问题 1. 命令行编译…...

电子应用设计方案78:智能窗户系统设计

智能窗户系统设计 一、引言 智能窗户系统旨在为用户提供更便捷、舒适和节能的窗户控制体验&#xff0c;同时增强家居的安全性和智能化程度。 二、系统概述 1. 系统目标 - 实现窗户的自动开关控制&#xff0c;根据环境条件和用户设定进行操作。 - 具备风雨感应功能&#xff0c…...

数据挖掘笔记 | 插值 | 拉格朗日插值 | 龙格现象 | 埃尔米特插值 | 分段三次埃尔米特插值

Interpolation插值 ​ 对于缺失值的处理&#xff0c;比较常见的是数值分析中的插值和拟合这两种方法。插值指的是在离散数据的基础上补插连续函数&#xff0c;使得这条连续曲线通过全部给定的离散数据点&#xff1b;拟合则是找到一条“最优”的曲线&#xff0c;尽可能地贴近平…...

Ubuntu网络配置(桥接模式, nat模式, host主机模式)

windows上安装了vmware虚拟机&#xff0c; vmware虚拟机上运行着ubuntu系统。windows与虚拟机可以通过三种方式进行通信。分别是桥接模式&#xff1b;nat模式&#xff1b;host模式 一、桥接模式 所谓桥接模式&#xff0c;也就是虚拟机与宿主机处于同一个网段&#xff0c; 宿主机…...

【Linux网络编程】第十七弹---深入理解以太网与ARP协议:从帧格式到数据报解析

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】【Linux网络编程】 目录 1、认识以太网 1.1、以太网帧格式 1.2、认识 MAC 地址 1.3、对比理解 MAC 地址和 IP 地址 1.4、认识 MT…...

AVL 树

1.AVL树的概念 AVL树是最先发明的自平衡二叉查找树&#xff0c;AVL树可以是一棵空树&#xff0c;或者具有以下性质的树&#xff1a;左右子树都是AVL树。且左右子树的高度差的绝对值不超过1。 AVL树是一颗高度平衡搜索二叉树&#xff0c;通过控制高度去控制平衡。 AVL树的发明…...

PHP关键字Self、Static和parent的区别

简介 在使用PHP代码时&#xff0c;您可能经常会遇到parent::、static::和self::。但是当你第一次作为一个开发人员开始的时候&#xff0c;有时候你会很困惑&#xff0c;不知道它们是做什么的&#xff0c;以及它们之间的区别。 在我第一次作为开发人员开始工作后的很长一段时间…...

Vscode左大括号不另起一行、注释自动换行

参考大佬的博客VSCode 格式化 cpp 文件时配置左大括号不换行_vscode大括号不换行-CSDN博客 Clang_format_style {BasedOnStyle: Chromium, IndentWidth: 4}...

golang标准库archive/tar实现打包压缩及解压

文章目录 前言一、单个文件操作1.单个文件打包示例2.单个文件解包示例 二、目录示例1.打包压缩2.解包 补充 前言 这个包就是将文件进行打包和解包&#xff0c;通俗理解就是Linux 下的 tar 命令。 主要是通过 tar.Reader 读取 tar 包&#xff0c;通过 tar.Writer 写入 tar包&am…...

模方匀色功能中,加载的模板文件从哪里来

使用 DasViewerV3.1.2及以上版本导出的颜色调整文件 模方是一款针对实景三维模型的冗余碎片、水面残缺、道路不平、标牌破损、纹理拉伸模糊等共性问题研发的实景三维模型修复编辑软件。模方4.2新增内置“自动UV展开”功能&#xff0c;新增局部调色功能和DOM匀色功能等。同时可与…...

maya 删除 Ctrl + Delete vs Delete

在 Autodesk Maya 中删除选定顶点的步骤&#xff1a; 1. 选择顶点&#xff1a; 进入顶点选择模式&#xff1a; 按 F9 键&#xff08;切换到顶点选择模式&#xff09;。 或者&#xff0c;在工具栏中点击顶点选择图标&#xff08;顶点模式&#xff09;。 在视图中选择您想要删…...

为何String不可变,String的运算符重载

1.为何String不可变 java9之前&#xff0c;String的源码中是用字符数组实现的&#xff0c;同时使用了final和private修饰&#xff0c;被final修饰的结果就是变量不可修改、类不可继承、方法不可重写&#xff0c;被private修饰就无法对外暴露&#xff0c;这就是为何String不可变…...

WebRTC :原理、协议和应用场景

WebRTC&#xff08;Web Real-Time Communication&#xff09;是一种用于在Web浏览器和移动应用程序之间进行实时通信的开放标准。它通过将音频、视频和数据传输集成到Web浏览器中&#xff0c;使得实时通信变得简单且无需任何插件或第三方软件。 一、WebRTC 的原理 WebRTC的实…...

Windows FTP服务器搭建指南

在Windows上搭建FTP服务器可以通过以下步骤完成。这里以Windows 10为例&#xff0c;使用系统自带的IIS&#xff08;Internet Information Services&#xff09;来搭建FTP服务器。 步骤1&#xff1a;安装IIS和FTP服务器组件 打开“控制面板”&#xff1a; 按 Win R&#xff0c…...

DP协议:Link层(二)

书接上文,内容多了难免会有一种知识点零碎感,但是坚持学下去,有一天你会发现已经不知不觉可以链接成一张知识网络了。 AUX提供的services 前面咱刚刚简单的认识了AUX CH的状态和仲裁,这次咱们接着聊聊AUX提供的services。 管理连接和设备:AUX CH就像是一个管家,负责找到…...

HAL 库 HAL_UARTEx_ReceiveToIdle_IT 函数解析

一、存在位置&#xff1a;stm32f1xx_hal_uart.c 二、具体代码 二、返回值&#xff1a;HAL_StatusTypeDef 通过查看返回值HAL_StatusTypeDef在stm32f1xx_hal_edf.h文件中定义为结构体类型。 status&#xff1a;&#xff08;进展的&#xff09;状况&#xff0c;情形 三、函数名…...

C++ 设计模式:职责链模式(Chain of Responsibility)

链接&#xff1a;C 设计模式 链接&#xff1a;C 设计模式 - 组合模式 职责链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许多个对象都有机会处理请求&#xff0c;从而避免请求的发送者和接收者之间的耦合。这些对象通过…...

数据库约束和查询

一 约束意义 这个后面的字段是什么意思呢? 先前说数据类型是一种约束&#xff0c;约束我们只能放该类型的数据&#xff0c;还有其它的约束来保证数据的合法性&#xff0c;下面的字段就和约束有关。 编译器的编译就是一个约束&#xff0c;保证我们的代码一定是语法合格的。我们…...

【文献精读笔记】Explainability for Large Language Models: A Survey (大语言模型的可解释性综述)(二)

****非斜体正文为原文献内容&#xff08;也包含笔者的补充&#xff09;&#xff0c;灰色块中是对文章细节的进一步详细解释&#xff01; 3.1.2 基于注意力的解释&#xff08;Attention-Based Explanation&#xff09; 注意力机制可以揭示输入数据中各个部分之间的关系&#…...

AI大模型-提示工程学笔记1

卷首语&#xff1a;我所知的是我自己非常无知&#xff0c;所以我要不断学习。 写给AI入行比较晚的小白们&#xff08;比如我自己&#xff09;看的&#xff0c;大神可以直接路过无视了。 几个基本概念 1. 给LLM提示 用户可以通过简单的提示词&#xff08;Prompts&#xff09…...