Linux系统——Session ID(负载均衡如何保持会话)

目录

一、实验环境搭建

二、部署Nginx代理服务器配置

三、部署后端真是服务器Tomcat配置

四、配置Tomcat的Session ID会话保持

五、测试


此次实验是Tomcat后端服务器如何做Session ID会话保持

一、实验环境搭建

[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]#setenforce 0
setenforce: SELinux is disabled
[root@localhost ~]#yum install epel-release.noarch -y
#安装epel额外源
[root@localhost ~]#yum install nginx -y
#yum安装Nginx   作为代理服务器
[root@localhost ~]#systemctl start nginx
[root@localhost ~]#systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy serverLoaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)Active: active (running) since 六 2024-03-16 10:21:23 CST; 5s agoProcess: 2055 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)Process: 2051 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)Process: 2049 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)Main PID: 2058 (nginx)CGroup: /system.slice/nginx.service├─2058 nginx: master process /usr/sbin/nginx├─2059 nginx: worker process└─2060 nginx: worker process3月 16 10:21:23 localhost.localdomain systemd[1]: Starting The nginx HTTP ...
3月 16 10:21:23 localhost.localdomain nginx[2051]: nginx: the configuratio...
3月 16 10:21:23 localhost.localdomain nginx[2051]: nginx: configuration fi...
3月 16 10:21:23 localhost.localdomain systemd[1]: Started The nginx HTTP a...
Hint: Some lines were ellipsized, use -l to show in full.
[root@node2 ~]#systemctl stop firewalld
[root@node2 ~]#setenforce 0
[root@node2 ~]#rz -E
rz waiting to receive.
[root@node2 ~]#rz -E
rz waiting to receive.
[root@node2 ~]#ls
anaconda-ks.cfg              Downloads                   Pictures
apache-tomcat-9.0.16.tar.gz  initial-setup-ks.cfg        Public
Desktop                      jdk-8u291-linux-x64.tar.gz  Templates
Documents                    Music                       Videos
[root@node2 ~]#tar xf jdk-8u291-linux-x64.tar.gz  -C /usr/local/
[root@node2 ~]#cd /usr/local/
[root@node2 local]#ls
bin  etc  games  include  jdk1.8.0_291  lib  lib64  libexec  sbin  share  src
[root@node2 local]#ln -s jdk1.8.0_291/  jdk
[root@node2 local]#vim /etc/profile.d/jdk.sh
[root@node2 local]#cat /etc/profile.d/jdk.sh 
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=$JAVA_HOME/lib/:$JRE_HOME/lib/
export PATH=$JAVA_HOME/bin:$PATH
export JRE_HOME=$JAVA_HOME/jre
[root@node2 local]#. /etc/profile.d/jdk.sh 
[root@node2 local]#java -version
java version "1.8.0_291"
Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)
[root@node3 ~]#systemctl stop firewalld
[root@node3 ~]#setenforce 0
[root@node3 ~]#rz -E
rz waiting to receive.
[root@node3 ~]#rz -E
rz waiting to receive.
[root@node3 ~]#ls
anaconda-ks.cfg              jdk-8u291-linux-x64.tar.gz  视频  下载
apache-tomcat-9.0.16.tar.gz  公共                        图片  音乐
initial-setup-ks.cfg         模板                        文档  桌面
[root@node3 ~]#tar xf jdk-8u291-linux-x64.tar.gz  -C /usr/local/
[root@node3 ~]#cd /usr/local/
[root@node3 local]#ls
bin  etc  games  include  jdk1.8.0_291  lib  lib64  libexec  sbin  share  src
[root@node3 local]#ln -s jdk1.8.0_291/  jdk
[root@node3 local]#vim /etc/profile.d/jdk.sh
[root@node3 local]#cat /etc/profile.d/jdk.sh 
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=$JAVA_HOME/lib/:$JRE_HOME/lib/
export PATH=$JAVA_HOME/bin:$PATH
export JRE_HOME=$JAVA_HOME/jre
[root@node3 local]#. /etc/profile.d/jdk.sh 
[root@node3 local]#java -version
java version "1.8.0_291"
Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)

二、部署Nginx代理服务器配置

[root@localhost ~]#vim /etc/nginx/nginx.conf
[root@localhost ~]#sed -n '23,26p' /etc/nginx/nginx.confupstream tomcat {server 192.168.241.22:8080;server 192.168.241.23:8080;}
[root@localhost ~]#sed -n '50,52p' /etc/nginx/nginx.conflocation ~* \.jsp$ {proxy_pass http://tomcat;}
[root@localhost ~]#nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@localhost ~]#nginx -s reload

三、部署后端真是服务器Tomcat配置

[root@node2 local]#cd
[root@node2 ~]#ls
anaconda-ks.cfg              Downloads                   Pictures
apache-tomcat-9.0.16.tar.gz  initial-setup-ks.cfg        Public
Desktop                      jdk-8u291-linux-x64.tar.gz  Templates
Documents                    Music                       Videos
[root@node2 ~]#tar xf apache-tomcat-9.0.16.tar.gz -C /usr/local/
[root@node2 ~]#cd /usr/local/
[root@node2 local]#ls
apache-tomcat-9.0.16  etc    include  jdk1.8.0_291  lib64    sbin   src
bin                   games  jdk      lib           libexec  share
[root@node2 local]#ln -s apache-tomcat-9.0.16/ tomcat
[root@node2 local]#ls
apache-tomcat-9.0.16  etc    include  jdk1.8.0_291  lib64    sbin   src
bin                   games  jdk      lib           libexec  share  tomcat
[root@node2 local]#cd tomcat/
[root@node2 tomcat]#useradd -s /sbin/nologin tomcat
[root@node2 tomcat]#chown tomcat:tomcat tomcat/  -R
chown: cannot access ‘tomcat/’: No such file or directory
[root@node2 tomcat]#chown tomcat:tomcat -R
chown: missing operand after ‘tomcat:tomcat’
Try 'chown --help' for more information.
[root@node2 tomcat]#cd ..
[root@node2 local]#chown tomcat:tomcat tomcat/  -R
[root@node2 local]#cat > /usr/lib/systemd/system/tomcat.service <<EOF
> [Unit]
> Description=Tomcat
> After=syslog.target network.target
> 
> [Service]
> Type=forking
> ExecStart=/usr/local/tomcat/bin/startup.sh
> ExecStop=/usr/local/tomcat/bin/shutdown.sh
> RestartSec=3
> PrivateTmp=true
> User=tomcat
> Group=tomcat
> 
> [Install]
> WantedBy=multi-user.target
> 
> EOF
[root@node2 local]#cd tomcat/webapps/ROOT/
[root@node2 ROOT]#ls
asf-logo-wide.svg  bg-upper.png       tomcat.css        tomcat.svg
bg-button.png      favicon.ico        tomcat.gif        WEB-INF
bg-middle.png      index.jsp          tomcat.png
bg-nav.png         RELEASE-NOTES.txt  tomcat-power.gif
[root@node2 ROOT]#mv index.jsp index.jsp.bak
[root@node2 ROOT]#rz -E
rz waiting to receive.
[root@node2 ROOT]#ls
asf-logo-wide.svg  bg-upper.png   RELEASE-NOTES.txt  tomcat-power.gif
bg-button.png      favicon.ico    tomcat.css         tomcat.svg
bg-middle.png      index.jsp      tomcat.gif         WEB-INF
bg-nav.png         index.jsp.bak  tomcat.png
[root@node2 ROOT]#cat index.jsp
<%@ page import="java.util.*" %>
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>tomcat test</title>
</head>
<body>
<div>On <%=request.getServerName() %></div>
<div><%=request.getLocalAddr() + ":" + request.getLocalPort() %></div>
<div>SessionID = <span style="color:blue"><%=session.getId() %></span></div>
<%=new Date()%>
</body>
</html>
[root@node2 ROOT]#systemctl start tomcat
[root@node3 local]#cd
[root@node3 ~]#ls
anaconda-ks.cfg              jdk-8u291-linux-x64.tar.gz  视频  下载
apache-tomcat-9.0.16.tar.gz  公共                        图片  音乐
initial-setup-ks.cfg         模板                        文档  桌面
[root@node3 ~]#tar xf apache-tomcat-9.0.16.tar.gz -C /usr/local/
[root@node3 ~]#cd /usr/local/
[root@node3 local]#ls
apache-tomcat-9.0.16  etc    include  jdk1.8.0_291  lib64    sbin   src
bin                   games  jdk      lib           libexec  share
[root@node3 local]#ln -s apache-tomcat-9.0.16/ tomcat
[root@node3 local]#ls
apache-tomcat-9.0.16  etc    include  jdk1.8.0_291  lib64    sbin   src
bin                   games  jdk      lib           libexec  share  tomcat
[root@node3 local]#cd tomcat/
[root@node3 tomcat]#useradd -s /sbin/nologin tomcat
[root@node3 tomcat]#chown tomcat:tomcat tomcat/  -R
chown: 无法访问"tomcat/": 没有那个文件或目录
[root@node3 tomcat]#chown tomcat:tomcat -R
chown: "tomcat:tomcat" 后缺少操作数
Try 'chown --help' for more information.
[root@node3 tomcat]#cd ..
[root@node3 local]#chown tomcat:tomcat tomcat/  -R
[root@node3 local]#cat > /usr/lib/systemd/system/tomcat.service <<EOF
> [Unit]
> Description=Tomcat
> After=syslog.target network.target
> 
> [Service]
> Type=forking
> ExecStart=/usr/local/tomcat/bin/startup.sh
> ExecStop=/usr/local/tomcat/bin/shutdown.sh
> RestartSec=3
> PrivateTmp=true
> User=tomcat
> Group=tomcat
> 
> [Install]
> WantedBy=multi-user.target
> 
> EOF
[root@node3 local]#cd tomcat/webapps/ROOT/
[root@node3 ROOT]#ls
asf-logo-wide.svg  bg-upper.png       tomcat.css        tomcat.svg
bg-button.png      favicon.ico        tomcat.gif        WEB-INF
bg-middle.png      index.jsp          tomcat.png
bg-nav.png         RELEASE-NOTES.txt  tomcat-power.gif
[root@node3 ROOT]#mv index.jsp index.jsp.bak
[root@node3 ROOT]#rz -E
rz waiting to receive.
[root@node3 ROOT]#cat index.jsp
<%@ page import="java.util.*" %>
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>tomcat test</title>
</head>
<body>
<div>On <%=request.getServerName() %></div>
<div><%=request.getLocalAddr() + ":" + request.getLocalPort() %></div>
<div>SessionID = <span style="color:blue"><%=session.getId() %></span></div>
<%=new Date()%>
</body>
</html>
[root@node3 ROOT]#systemctl start tomcat

实际生产环境不允许Session ID不断变动的。

  • 客户第一次访问被调度到后端真实服务器Tomcat1上,由于是第一次访问,客户度的Cookie缓存会记录,不会有SessionID,Tomcat1服务器会生成新的Session ID传输给客户端,客户端会将这个新的Session ID记录下来;
  • 当第二次访问的时候,Nginx代理服务器又可能将服务请求调度到后端真实服务器Tomcat2上,Tomcat2服务器是没有客户端传输来的Session ID1的,Tomcat2服务器认为客户端要生成新的SessionID,于是Tomcat2服务器将新的Session ID2传输给客户端,客户端会更新Session ID,将刚刚的SessionID更改为SessionID2;
  • 当第三次访问的时候,客户端带着SessionID2去Nginx代理服务器,Nginx代理服务器可能将客户端又调度到Tomcat1服务器上,Tomcat1服务器并没有SessionID2,于是又将新生成的SessionID3传输给客户端,这样会有很不好的客户端体验,所以我们可以根据修改Tomcat配置文件来进行会话保持 

四、配置Tomcat的Session ID会话保持

Tomcat会话保持官方说明https://tomcat.apache.org/tomcat-9.0-doc/cluster-howto.html

[root@node2 ROOT]#vim /usr/local/tomcat/conf/server.xml 
[root@node2 ROOT]#sed -n '163,201p' /usr/local/tomcat/conf/server.xml 
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"channelSendOptions="8"><Manager className="org.apache.catalina.ha.session.DeltaManager"expireSessionsOnShutdown="false"notifyListenersOnReplication="true"/><Channel className="org.apache.catalina.tribes.group.GroupChannel"><Membership className="org.apache.catalina.tribes.membership.McastService"address="228.0.0.4"port="45564"frequency="500"dropTime="3000"/><Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"address="192.168.241.22"port="4000"autoBind="100"selectorTimeout="5000"maxThreads="6"/><Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"><Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/></Sender><Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/><Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/></Channel><Valve className="org.apache.catalina.ha.tcp.ReplicationValve"filter=""/><Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/><Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"tempDir="/tmp/war-temp/"deployDir="/tmp/war-deploy/"watchDir="/tmp/war-listen/"watchEnabled="false"/><ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/></Cluster>
[root@node3 ROOT]#vim /usr/local/tomcat/conf/server.xml 
[root@node3 ROOT]#sed -n '163,201p' /usr/local/tomcat/conf/server.xml 
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"channelSendOptions="8"><Manager className="org.apache.catalina.ha.session.DeltaManager"expireSessionsOnShutdown="false"notifyListenersOnReplication="true"/><Channel className="org.apache.catalina.tribes.group.GroupChannel"><Membership className="org.apache.catalina.tribes.membership.McastService"address="228.0.0.4"port="45564"frequency="500"dropTime="3000"/><Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"address="192.168.241.23"port="4000"autoBind="100"selectorTimeout="5000"maxThreads="6"/><Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"><Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/></Sender><Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/><Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/></Channel><Valve className="org.apache.catalina.ha.tcp.ReplicationValve"filter=""/><Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/><Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"tempDir="/tmp/war-temp/"deployDir="/tmp/war-deploy/"watchDir="/tmp/war-listen/"watchEnabled="false"/><ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/></Cluster>
[root@node2 ROOT]#vim /usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml 
[root@node2 ROOT]#sed -n 29p /usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml <distributable/>
[root@node2 ROOT]#systemctl restart tomcat
[root@node2 ROOT]#systemctl status tomcat.service 
● tomcat.service - TomcatLoaded: loaded (/usr/lib/systemd/system/tomcat.service; disabled; vendor preset: disabled)Active: active (running) since Fri 2024-03-15 22:42:31 EDT; 5s agoProcess: 2566 ExecStop=/usr/local/tomcat/bin/shutdown.sh (code=exited, status=0/SUCCESS)Process: 2601 ExecStart=/usr/local/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)Main PID: 2617 (catalina.sh)CGroup: /system.slice/tomcat.service├─2617 /bin/sh /usr/local/tomcat/bin/catalina.sh start└─2618 /usr/bin/java -Djava.util.logging.config.file=/usr/local/...Mar 15 22:42:31 node2.localdomain systemd[1]: Starting Tomcat...
Mar 15 22:42:31 node2.localdomain systemd[1]: Started Tomcat.
[root@node3 ROOT]#vim /usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml 
[root@node3 ROOT]#sed -n 29p /usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml <distributable/>
[root@node3 ROOT]#systemctl restart tomcat
[root@node3 ROOT]#systemctl status tomcat.service 
● tomcat.service - TomcatLoaded: loaded (/usr/lib/systemd/system/tomcat.service; disabled; vendor preset: disabled)Active: active (running) since 六 2024-03-16 18:42:30 CST; 5s agoProcess: 2480 ExecStop=/usr/local/tomcat/bin/shutdown.sh (code=exited, status=0/SUCCESS)Process: 2518 ExecStart=/usr/local/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)Main PID: 2533 (catalina.sh)CGroup: /system.slice/tomcat.service├─2533 /bin/sh /usr/local/tomcat/bin/catalina.sh start└─2534 /usr/bin/java -Djava.util.logging.config.file=/usr/local/...3月 16 18:42:30 node3.node3 systemd[1]: Starting Tomcat...
3月 16 18:42:30 node3.node3 startup.sh[2518]: Using CATALINA_BASE:   /usr...t
3月 16 18:42:30 node3.node3 startup.sh[2518]: Using CATALINA_HOME:   /usr...t
3月 16 18:42:30 node3.node3 startup.sh[2518]: Using CATALINA_TMPDIR: /usr...p
3月 16 18:42:30 node3.node3 startup.sh[2518]: Using JRE_HOME:        /usr
3月 16 18:42:30 node3.node3 startup.sh[2518]: Using CLASSPATH:       /usr...r
3月 16 18:42:30 node3.node3 systemd[1]: Started Tomcat.
Hint: Some lines were ellipsized, use -l to show in full.

五、测试

此时后端真实服务器Tomcat调优完成,SessionID会话保持完成,客户端体验绝佳!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一起学数据分析_3(模型建立与评估_2)

为什么要评估? 在进行数据分析时&#xff0c;尤其是在使用像sklearn这样的机器学习库建立模型后&#xff0c;模型评估的重要性不言而喻。模型评估不仅是对模型性能的一次全面检验&#xff0c;更是确保模型在实际应用中能够达到预期效果的关键步骤。 首先&#xff0c;模型评估…

Linux 自动备份 mysql 脚本

这个脚本会将数据库备份为一个SQL文件&#xff0c;并将其保存在指定的目录中。 #!/bin/bash# MySQL配置 DB_USER"your_mysql_username" DB_PASS"your_mysql_password" DB_NAME"your_database_name" DB_HOST"localhost"# 备份目录 BAC…

一款比 K8S 更好用的编排工具——Nomod

今天给笔友们推荐一款最近发现的服务编排工具Nomad。综合感觉就是功能很强大&#xff0c;姿势很优雅&#xff0c;相比 K8S 更加轻量级&#xff0c;相比 Docker-Compose 能轻松支持分布式。 Nomad 能做什么&#xff1f; Nomad 采用统一的工作流程&#xff0c;既可以轻松部署和管…

python自动化之(django)(2)

1、创建应用 python manage.py startapp apitest 这里还是从上节开始也就是命令行在所谓的autotest目录下来输入 然后可以清楚的看到 多了一个文件夹 2、创建视图 在views中加入test函数&#xff08;所建应用下&#xff09; from django.http import HttpResponse def tes…

基于CNN多阶段图像超分+去噪(超级简单版)

这是之前的一项工作&#xff0c;非常简单&#xff0c;简单的复现了两个算法&#xff0c;然后把它们串起来了。 可执行的程序链接&#xff1a;CSDN; Github 我们分成两部分进行讲解&#xff1a; 1. 图像去噪 1.1 基本思路 图像的去噪工作基于很普通的CNN去噪&#xff0c;效…

Swift 面试题及答案整理,最新面试题

Swift 中如何实现单例模式&#xff1f; 在Swift中&#xff0c;单例模式的实现通常采用静态属性和私有初始化方法来确保一个类仅有一个实例。具体做法是&#xff1a;定义一个静态属性来存储这个单例实例&#xff0c;然后将类的初始化方法设为私有&#xff0c;以阻止外部通过构造…

Ubuntu Desktop - gnome-calculator (计算器)

Ubuntu Desktop - gnome-calculator [计算器] 1. Ubuntu Software -> gnome-calculator -> Install -> Continue2. Search your computer -> Calculator -> Lock to LauncherReferences 1. Ubuntu Software -> gnome-calculator -> Install -> Continu…

STM32中MicroLIB的关闭为什么会导致卡死----解析

STM32MicroLIB 大家好我是 MHZ 。最近又开始往回捡单片机的知识了~ 之前大学的时候都没用过 STM 的 CubeMX&#xff0c;这会拿来用着感觉很方便啊~ 果然科技在进步&#xff01; 在开发使用 Keil 对 STM32 进行开发的时候在会有一个叫做 MicroLIB 的选项。 这个的具体原因我搜…

C语言 内存函数

目录 前言 一、memcpy()函数 二、memmove()函数 三、memset函数 四、memcmp()函数 总结 前言 在C语言中内存是我们用来存储数据的地址&#xff0c;今天我们来讲一下C语言中常用的内存函数。 一、memcpy()函数 memcpy()函数与我们之前讲的strcpy()函数类似&#xff0c;只…

Android FrameWork 学习路线

目录 前言 学习路线&#xff1a; 1.基础知识 2、AOSP 源码学习 3. AOSP 源码编译系统 4. Hal与硬件服务 5.基础组件 6. Binder 7. 系统启动过程分析 8. 应用层框架​编辑 9. 显示系统 10. Android 输入系统 11. 系统应用 前言 Android Framework 涉及的行业相当广…

Django 解决新建表删除后无法重新创建等问题

Django 解决新建表删除后无法重新创建等问题 问题发生描述处理办法首先删除了app对应目录migrations下除 __init__.py以外的所有文件:然后&#xff0c;删除migrations中关于你的app的同步数据数据库记录最后&#xff0c;重新执行迁移插入 问题发生描述 Django创建的表&#xf…

HCIP—OSPF课后练习一

本实验模拟了一个企业网络场景&#xff0c;R1、R2、R3为公司总部网络的路由器&#xff0c;R4、R5分别为企业分支机构1和分支机构2的路由器&#xff0c;并且都采用双上行方式与企业总部相连。整个网络都运行OSPF协议&#xff0c;R1、R2、R3之间的链路位于区域0&#xff0c;R4与R…

uniapp 利用uni-list 和 uni-load-more 组件上拉加载列表

列表的加载动作&#xff0c;在移动端开发中随处可见&#xff0c;笔者也是经常用到。今天正好有空&#xff0c;做一个总结&#xff0c;方便以后使用。uniapp 利用uni-list 和 uni-load-more 组件上拉加载列表操作步骤如下&#xff1a;1、资料准备 1&#xff09;、uni-load-more…

JavaWeb--HTML

一&#xff1a;HTML简介 *HTML是一门语言&#xff0c;所有的网页都是用HTML这门语言编写出来的&#xff1b; *HTML&#xff1a;超文本标记语言&#xff1b; 超文本&#xff1a;超越了文本的限制&#xff0c;比普通文本更强大。除了文字信息&#xff0c;还能定义图片&#xff…

C#对ListBox控件中的数据进行的操作

目录 1.添加数据&#xff1a; 2.删除数据&#xff1a; 3.清空数据&#xff1a; 4.选择项&#xff1a; 5.排序&#xff1a; 6.获取选中的项&#xff1a; 7.获取ListBox中的所有项&#xff1a; 8.综合示例 C#中对ListBox控件中的数据进行的操作主要包括添加、删除、清空、…

zookeeper快速入门二:zookeeper基本概念

本文是zookeeper系列之快速入门中的第二篇&#xff0c;欢迎大家观看与指出不足。 目录 一、zookeeper的存储结构 二、什么是znode 三、znode节点的四种类型 四、权限控制ACL&#xff08;Access Control List&#xff09; 五、事件监听watcher 一、zookeeper的存储结构 z…

Tomcat Session 集群 ---------会话保持

一、 负载均衡、反向代理 环境搭建&#xff1a; nginx服务器192.168.246.7 tomcat 1服务器192.168.246.8 tomcat 2服务器192.168.246.9 7-1 nginx服务器搭建 [rootzzcentos1 ~]#systemctl stop firewalld [rootzzcentos1 ~]#setenforce 0 [rootzzcentos1 ~]#yum install …

springboot“财来财往”微信小程序

摘 要 相比于以前的传统手工管理方式&#xff0c;智能化的管理方式可以大幅降低理财公司的运营人员成本&#xff0c;实现了“财来财往”的标准化、制度化、程序化的管理&#xff0c;有效地防止了“财来财往”的随意管理&#xff0c;提高了信息的处理速度和精确度&#xff0c;能…

NeRF学习——NeRF-Pytorch的源码解读

学习 github 上 NeRF 的 pytorch 实现项目&#xff08;https://github.com/yenchenlin/nerf-pytorch&#xff09;的一些笔记 1 参数 部分参数配置&#xff1a; 训练参数&#xff1a; 这段代码是在设置一些命令行参数&#xff0c;这些参数用于控制NeRF&#xff08;Neural Radi…

OpenCV 图像重映射函数remap()实例详解

OpenCV 图像重映射函数remap()对图像应用通用几何变换。其原型如下&#xff1a; void remap(InputArray src, OutputArray dst, InputArray map1, InputArray map2, int interpolation&#xff0c; int borderMode BORDER_CONSTANT&#xff0c; const Scalar & borde…