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

配置Tomcat性能优化

配置Tomcat性能优化

📒博客主页: 微笑的段嘉许博客主页

💻微信公众号:微笑的段嘉许

🎉欢迎关注🔎点赞👍收藏⭐留言📝

📌本文由微笑的段嘉许原创!

📆CSDN首发时间:🌴2022年2月日20🌴

✉️坚持和努力一定能换来诗与远方!

🙏作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!

本文介绍

保姆级教程通过一个综合实验案例手把手教你Tomcat的安装配置与性能优化。


📌导航小助手📌

文章目录

  • 配置Tomcat性能优化
  • 📝理论讲解:
    • 详细介绍
    • 名称由来
  • 📖实验配置与实现:
  • 一、Centos02安装DNS解析www.duan.com,www.jia.com,www.xu.com访问网站客户端访问验证
    • 1、配置网卡服务
    • 2、安装DNS服务
    • 3、修改DNS配置文件
  • 二、Centos02安装tomcat发布动态网站jpress使用www.duan.com访问,配置虚拟主机通过www.jia.con和www.xu.com访问不同的虚拟主机
    • 1、部署tomcat
    • 2、tomcat发布动态网站
    • 3、配置tomcat虚拟主机
  • 三、tomcat性能优化
    • 1、配置tomcat管理控制台监控线程和tomcat的工作模式
    • 2、优化tomcat线程
    • 3、JVM性能调优
    • 4、jmeter压力测试

📝理论讲解:

详细介绍

​ Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为比较流行的Web 应用服务器。

​ Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

​ 诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。Tomcat最新版本为10.0.23。

名称由来

​ Tomcat最初是由Sun的软件架构师詹姆斯·邓肯·戴维森开发的。后来他帮助将其变为开源项目,并由Sun贡献给Apache软件基金会。由于大部分开源项目O’Reilly都会出一本相关的书,并且将其封面设计成某个动物的素描,因此他希望将此项目以一个动物的名字命名。因为他希望这种动物能够自己照顾自己,最终,他将其命名为Tomcat(英语公猫或其他雄性[猫科动物)。而O’Reilly出版的介绍Tomcat的书籍(ISBN 0-596-00318-8)[1]的封面也被设计成了一个公猫的形象。而Tomcat的Logo兼吉祥物也被设计为一只公猫。


📖实验配置与实现:

推荐步骤:

Centos02安装DNS解析www.duan.com,www.jia.com,www.xu.com访问网站客户端访问验证

Cenros01安装tomcat发布动态网站jpress使用www.duan.com访问,配置虚拟主机通过www.jia.com和www.xu.com访问不同的虚拟主机

tomcat性能优化

一、Centos02安装DNS解析www.duan.com,www.jia.com,www.xu.com访问网站客户端访问验证

1、配置网卡服务

1)配置IP地址和DNS

[root@centos02 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32			//进入网卡配置文件
[root@centos02 ~]# systemctl restart network				//重新启动网卡服务
[root@centos02 ~]# cat /etc/resolv.conf 			//查看DNS配置是否生效
# Generated by NetworkManager
nameserver 192.168.100.20

image-20230218190509098

2、安装DNS服务

1)挂载系统光盘

[root@centos02 ~]# mount /dev/cdrom /mnt/			//挂载系统光盘
mount: /dev/sr0 写保护,将以只读方式挂载	
[root@centos02 ~]# ls /mnt/				//查看系统光盘是否挂载成功
CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EULA             isolinux  repodata  TRANS.TBL

2)安装DNS程序包

[root@centos02 ~]# rpm -ivh /mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm 
警告:/mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...1:bind-32:9.9.4-50.el7             ################################# [100%]
[root@centos02 ~]# rpm -ivh /mnt/Packages/bind-chroot-9.9.4-50.el7.x86_64.rpm 
警告:/mnt/Packages/bind-chroot-9.9.4-50.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...1:bind-chroot-32:9.9.4-50.el7      ################################# [100%]

3、修改DNS配置文件

1)修改DNS主配置文件

[root@centos02 ~]# echo "" > /etc/named.conf 			//清空DNS主配置文件
[root@centos02 ~]# vim /etc/named.conf			//进入DNS主配置文件
---
options {listen-on port 53 { any ;};
};
zone "duan.com" IN {type master;file "var/named/duan.com.zone";
};
zone "jia.com" IN {type master;file "var/named/jia.com.zone";
};
zone "xu.com" IN {type master;file "var/named/xu.com.zone";
};
---
[root@centos02 ~]# named-checkconf /etc/named.conf				//检查主配置文件修改是否有误

image-20230218190635153

2)修改第一个DNS区域配置文件

[root@centos02 ~]# vim /var/named/duan.com.zone			//进入第一个DNS区域配置文件
---
$TTL            86400
@               SOA             duan.com.		root.duan.com. (20230217101H15M1W1D
)
@               NS              centos02.duan.com.
centos02        A               192.168.100.20
www             A               192.168.100.10
---
[root@centos02 ~]# vim /var/named/duan.com.zone
[root@centos02 ~]# named-checkzone duan.com /var/named/duan.com.zone
zone duan.com/IN: loaded serial 2023021710
OK				//检查主配置文件修改是否有误

image-20230218190700105

3)修改第二个DNS区域配置文件

[root@centos02 ~]# cp /var/named/duan.com.zone /var/named/jia.com.zone			//复制第一个区域配置文件到/var/namedjia.com.zone
[root@centos02 ~]# vim /var/named/jia.com.zone 			//进入第二个区域配置文件
---
:%s/duan.com/jia.com/g			//把duan.com替换为jia.com
$TTL            86400
@               SOA             jia.com.        root.jia.com. (20230217101H15M1W1D
)
@               NS              centos02.jia.com.
centos02        A               192.168.100.20
www             A               192.168.100.10
---
[root@centos02 ~]# named-checkzone jia.com /var/named/jia.com.zone			//检查主配置文件修改是否有误
zone jia.com/IN: loaded serial 2023021710
OK

image-20230218190732278

4)修改第三个DNS区域配置文件

[root@centos02 ~]# cp /var/named/duan.com.zone /var/named/xu.com.zone			//复制第一个区域配置文件到/var/named/xu.com.zone
[root@centos02 ~]# vim /var/named/xu.com.zone			//进入第三个区域配置文件
---
:%s/duan.com/xu.com/g			//把duan.com替换为xu.com
$TTL            86400
@               SOA             xu.com. root.xu.com. (20230217101H15M1W1D
)
@               NS              centos02.xu.com.
centos02        A               192.168.100.20
www             A               192.168.100.10
---
[root@centos02 ~]# named-checkzone xu.com /var/named/xu.com.zone
zone xu.com/IN: loaded serial 2023021710
OK

image-20230218190902841

5)启动DNS服务设置开机自启

[root@centos02 ~]# systemctl start named				//启动DNS服务
[root@centos02 ~]# systemctl enable named			//设置开机自启
[root@centos02 ~]# netstat -anptu | grep named			//监听端口
tcp        0      0 192.168.100.20:53       0.0.0.0:*               LISTEN      40870/named         
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      40870/named         
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      40870/named         
tcp6       0      0 ::1:953                 :::*                    LISTEN      40870/named         
udp        0      0 192.168.122.1:53        0.0.0.0:*                           40870/named         
udp        0      0 192.168.100.20:53       0.0.0.0:*                           40870/named         
udp        0      0 127.0.0.1:53            0.0.0.0:*                           40870/named

二、Centos02安装tomcat发布动态网站jpress使用www.duan.com访问,配置虚拟主机通过www.jia.con和www.xu.com访问不同的虚拟主机

1、部署tomcat

1)解压源代码程序

[root@centos01 ~]# rz			//上传tomcat源代码程序
z waiting to receive.**B0100000023be50
[root@centos01 ~]# ls			//查看是否上传成功
anaconda-ks.cfg              initial-setup-ks.cfg  模板  图片  下载  桌面
apache-tomcat-8.5.50.tar.gz  公共                  视频  文档  音乐
---
[root@centos01 ~]# tar zxf ./apache-tomcat-8.5.50.tar.gz -C /usr/src/			//解压tomcat源代码程序
[root@centos01 ~]# mv /usr/src/apache-tomcat-8.5.50/ /usr/local/tomcat			//剪切tomcat源代码程序到/usr/local/tomcatm目录

2)修改tomcat主配置文件

[root@centos01 ~]# vim /usr/local/tomcat/conf/server.xml			//进入tomcat主配置文件
---
73     <Connector port="80" protocol="HTTP/1.1"			//监听80端口74                connectionTimeout="20000"75                redirectPort="8443" />
152       <Host name="www.duan.com"  appBase="webapps"			//域名和网站根目录
153             unpackWARs="true" autoDeploy="true">
154         <Valve className="org.apache.catalina.valves.AccessLogValve" directo    ry="logs"
155                prefix="www.duan.com_access_log" suffix=".txt"
156                pattern="%h %l %u %t &quot;%r&quot; %s %b" />
157       </Host>
---
[root@centos01 ~]# /usr/local/tomcat/bin/startup.sh 			//启动tomcat服务
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@centos01 ~]# netstat -anptu | grep java			//监听端口
tcp6       0      0 :::80                   :::*                    LISTEN      40414/java          
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      40414/java          
tcp6       0      0 :::8009                 :::*                    LISTEN      40414/java

image-20230218191226512

image-20230218191229380

3)使用win10虚拟机验证访问tomcat默认网站

image-20230218191310493

2、tomcat发布动态网站

1)上传项目到tomcat的根目录

[root@centos01 ~]# cd /usr/local/tomcat/webapps/			//切换到tomcat根目录
[root@centos01 webapps]# rz			//上传项目
z waiting to receive.**B0100000023be50
[root@centos01 webapps]# ls			//查看是否上传成功
docs  examples  host-manager  jpress-v5.0.8.war  manager  ROOT
[root@centos01 webapps]# mv jpress-v5.0.8.war jpress.war			//重命名
[root@centos01 webapps]# ls 		//查看
docs  examples  host-manager  jpress  jpress.war  manager  ROOT

2)安装数据库

[root@centos01 ~]# mount /dev/cdrom /mnt/			//挂在系统光盘
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos01 ~]# ls /mnt/				//查看光盘是否挂载成功
CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EULA             isolinux  repodata  TRANS.TBL
[root@centos01 ~]# rm -rf /etc/yum.repos.d/CentOS-*			//删除系统自带的yum源
[root@centos01 ~]# ls /etc/yum.repos.d/			//查看本地yum源目录
local.repo
[root@centos01 ~]# cat /etc/yum.repos.d/local.repo 			//查看本地yum源
[local]
name=centos
baseurl=file:///mnt
enabled=1
gpgcheck=0
---
[root@centos01 ~]# yum -y install mariadb mariadb-server			//安装数据库
[root@centos01 ~]# systemctl start mariadb			//启动数据库
[root@centos01 ~]# systemctl enable mariadb			//设置开机自启
[root@centos01 ~]# mysqladmin -uroot password			//创建管理数据库账户名为root,设置密码
New password: 							//输入密码
Confirm new password:					//确定密码
[root@centos01 ~]# mysql -uroot -ppwd@123			//登录数据库
MariaDB [(none)]> create database jpress charset utf8;			//创建数据库名字支持中文
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all on jpress.* to 'duanjiaxu'@'localhost' identified by 'pwd@123';			//授权用户访问,授权用户为duanjaixu密码为pwd@123
Query OK, 0 rows affected (0.00 sec)

image-20230218191511125

3)在win10客户端安装jdk

image-20230218191534757

image-20230218191539782

等待安装完成:

image-20230218191556901

4)使用win10虚拟机验证

image-20230218191746933

image-20230218191709783

image-20230218191808335

image-20230218191833875

image-20230218191843670

3、配置tomcat虚拟主机

1)创建虚拟主机网站根目录

[root@centos01 ~]# mkdir -p /www/jia			//创建虚拟网站根目录
[root@centos01 ~]# mkdir -p /www/xu
[root@centos01 ~]# echo "www.jia.com" > /www/jia/index.jsp			//设置网站主页
[root@centos01 ~]# echo "www.xu.com" > /www/xu/index.jsp

2)修改tomcat主配置文件

[root@centos01 ~]# vim /usr/local/tomcat/conf/server.xml			//进入tomcat主配置文件
---
152       <Host name="www.duan.com"  appBase="webapps"			//第一虚拟主机
153             unpackWARs="true" autoDeploy="true">
154         <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
155                prefix="www.duan.com_access_log" suffix=".txt"
156                pattern="%h %l %u %t &quot;%r&quot; %s %b" />
157       </Host>
158       <Host name="www.jia.com"  appBase="webapps"			//第二个虚拟主机
159             unpackWARs="true" autoDeploy="true">
160         <Context docBase="/www/jia/" path="" reloadble="fales"/>
161         <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
162                prefix="www.duan.com_access_log" suffix=".txt"
163                pattern="%h %l %u %t &quot;%r&quot; %s %b" />
164       </Host>
165       <Host name="www.xu.com"  appBase="webapps"			//第三个虚拟主机
166             unpackWARs="true" autoDeploy="true">
167         <Context docBase="/www/xu/" path="" reloadble="fales"/>
168         <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
169                prefix="www.duan.com_access_log" suffix=".txt"
170                pattern="%h %l %u %t &quot;%r&quot; %s %b" />
171       </Host>

image-20230218200024006

3)重新启动tomcat服务

[root@centos01 ~]# /usr/local/tomcat/bin/shutdown.sh 			//停止tomcat服务
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@centos01 ~]# /usr/local/tomcat/bin/startup.sh 			//启动tomcat服务
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@centos01 ~]# netstat -anptu | grep java			//监听网卡
tcp6       0      0 :::80                   :::*                    LISTEN      41936/java          
tcp6       0      0 :::8009                 :::*                    LISTEN      41936/java

4)使用win10虚拟机验证

image-20230218200231194

三、tomcat性能优化

1、配置tomcat管理控制台监控线程和tomcat的工作模式

1)修改访问tomcat管理控制台

[root@centos01 ~]# vim /usr/local/tomcat/conf/tomcat-users.xml			//进入tomcat管理控制台配置文件
---
44   <role rolename="manager-gui"/>45   <role rolename="manager-script"/>46   <role rolename="manager-jmx"/>47   <role rolename="manager-status"/>48   <role rolename="admin-gui"/>49   <role rolename="admin-script"/>50   <user username="admin" password="pwd@123" roles="manager-gui,manager-scrip    t,manager-jmx,manager-status,admin-gui,admin-script"/>			//创建用户名和设置密码,授权角色51 </tomcat-users>
---
[root@centos01 ~]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml				//进入访问控制配置文件
---18 <Context antiResourceLocking="false" privileged="true" >19   <Valve className="org.apache.catalina.valves.RemoteAddrValve"20          allow="192\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />			//修改为19221   <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Inte    ger|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter    \$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>22 </Context>
---
[root@centos01 ~]# /usr/local/tomcat/bin/shutdown.sh 			//停止tomcat服务
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@centos01 ~]# /usr/local/tomcat/bin/startup.sh 			//启动tomcat服务
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@centos01 ~]# netstat -anptu | grep java			//监听网卡服务
tcp6       0      0 :::80                   :::*                    LISTEN      42514/java          
tcp6       0      0 :::8009                 :::*                    LISTEN      42514/java 

image-20230218200353361

2)使用win10虚拟机验证

image-20230218200429978

image-20230218200412504

image-20230218200436528

2、优化tomcat线程

1)修改tomcat主配置文件

[root@centos01 ~]# vim /usr/local/tomcat/conf/server.xml			//进入tomcat主配置文件
---73     <Connector port="80" protocol="HTTP/1.1"74                connectionTimeout="20000"			//连接请求超时时间20000毫秒75                redirectPort="8443" 			//加密端口76                maxTheads="15000"			//最大线程1500077                minspareTheads="2000"			//最下空闲线程200078                acceptCount="2000"			//列队保存2000个请求,拉长请求时间79 /> 

image-20230218200508920

3、JVM性能调优

1)设置虚拟机的内存为4GB

image-20230218200538905

2)修改最大内存

[root@centos01 ~]# vim /usr/local/tomcat/bin/catalina.sh			//进入配置文件
---
JAVA_OPTS="-server -Xms1024m -Xmx4096m -XX:NewSize=50m -XX:MaxNewSize=100m"
---
[root@centos01 ~]# /usr/local/tomcat/bin/shutdown.sh 			//停止tomcat服务
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@centos01 ~]# /usr/local/tomcat/bin/startup.sh 			//启动tomcat服务
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@centos01 ~]# netstat -anptu | grep java			//监听网卡服务
tcp6       0      0 :::80                   :::*                    LISTEN      45095/java          
tcp6       0      0 :::8009                 :::*                    LISTEN      45095/java

2)使用win10虚拟机验证

JVM性能优化前:

image-20230218200639350

JVM性能优化后:

4、jmeter压力测试

1)在win10虚拟机上安装jmeter压力测试工具

image-20230218200800868

image-20230218200740700

配置压力测试的服务器域名和端口号、协议、路径

image-20230218200823835

配置线程数

image-20230218200838731

异常百分之零

image-20230218200849467


🙏作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!

img

相关文章:

配置Tomcat性能优化

配置Tomcat性能优化 &#x1f4d2;博客主页&#xff1a; 微笑的段嘉许博客主页 &#x1f4bb;微信公众号&#xff1a;微笑的段嘉许 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐留言&#x1f4dd; &#x1f4cc;本文由微笑的段嘉许原创&#xff01; &#x1f4…...

Hive3 安装方式详解,datagrid自定义驱动连接hive

1 Hive的安装方式 hive的安装一共有三种方式:内嵌模式、本地模式、远程模式。 元数据服务(metastore&#xff09;作用是&#xff1a;客户端连接metastore服务&#xff0c;metastore再去连接MySQL数据库来存取元数据。有了metastore服务&#xff0c;就可以有多个客户端同时连接…...

约束优化:约束优化的三种序列无约束优化方法(罚函数法)

文章目录约束优化&#xff1a;约束优化的三种序列无约束优化方法&#xff08;罚函数法&#xff09;外点罚函数法L2-罚函数法&#xff1a;非精确算法对于等式约束对于不等式约束L1-罚函数法&#xff1a;精确算法内点罚函数法&#xff1a;障碍函数法参考文献约束优化&#xff1a;…...

你真的会做APP UI自动化测试吗?我敢打赌百分之九十的人都不知道这个思路

目录 前言 一&#xff0c;开发语言选择 二&#xff0c;UI测试框架选择 1&#xff0c;Appium 2&#xff0c;Airtest 3&#xff0c;选择框架 三&#xff0c;单元测试框架选择 四&#xff0c;测试环境搭建 1&#xff0c;测试电脑选择 2&#xff0c;测试手机选择 3&#…...

GIT:【基础三】Git工作核心原理

目录 一、Git本地四个工作区域 二、Git提交文件流程 一、Git本地四个工作区域 工作目录(Working Directory)&#xff1a;电脑上存放开发代码的地方。暂存区(Stage/Index)&#xff1a;用于l临时存放改动的文件&#xff0c;本质上只是一个文件&#xff0c;保存即将提交到文件列…...

【1.12 golang中的指针】

1. 指针 区别于C/C中的指针&#xff0c;Go语言中的指针不能进行偏移和运算&#xff0c;是安全指针。 要搞明白Go语言中的指针需要先知道3个概念&#xff1a;指针地址、指针类型和指针取值。 1.1. Go语言中的指针 Go语言中的函数传参都是值拷贝&#xff0c;当我们想要修改某…...

十五.程序环境和预处理

文章目录一.程序翻译环境和执行环境1.ANSI C 标准2.程序的翻译环境和执行环境二.程序编译和链接1.翻译环境2.编译本身的几个阶段3.运行环境三.预处理1.预定义符号2.#define&#xff08;1&#xff09;#define定义标识符&#xff08;2&#xff09;#define定义宏&#xff08;3&…...

高并发系统设计之负载均衡

本文已收录至Github&#xff0c;推荐阅读 &#x1f449; Java随想录 文章目录DNS负载均衡Nginx负载均衡负载均衡算法负载均衡配置超时配置被动健康检查与主动健康检查LVS/F5Nginx当我们的应用单实例不能支撑用户请求时&#xff0c;此时就需要扩容&#xff0c;从一台服务器扩容到…...

嵌入式Linux从入门到精通之第十四节:Linux IO控制技术

目录 设备控制概述 操作设备文件函数 监听文件描述符 示例 设备控制概述 对于硬件设备,Linux采用了与裸机完全不同的机制进行管理。 Linux下的所有硬件(IO、键盘、鼠标等)均是以文件的形式进行统一管理的,每个设备在/dev/目录下都有一个设备文件与之对应。操作相应的文件…...

/etc/fstab文件

文件/etc/fstab存放的是系统中的文件系统信息&#xff0c;当系统启动的时候&#xff0c;系统会自动地从这个文件读取信息&#xff0c;并且会自动将此文件中指定的文件系统挂载到指定的目录。当正确的设置了该文件&#xff0c;则可以通过mount /directoryname命令来加载一个文件…...

深度学习神经网络基础知识(一) 模型选择、欠拟合和过拟合

专栏&#xff1a;神经网络复现目录 深度学习神经网络基础知识(一) 本文讲述神经网络基础知识&#xff0c;具体细节讲述前向传播&#xff0c;反向传播和计算图&#xff0c;同时讲解神经网络优化方法&#xff1a;权重衰减&#xff0c;Dropout等方法&#xff0c;最后进行Kaggle实…...

同样做软件测试,为什么有人月入3k-5k,有人能拿到17-20k?

同样做软件测试&#xff0c;为什么有人月入3k-5k&#xff0c;有人能拿到17-20k&#xff1f; 虽然各大培训机构一直鼓吹软件测试行业薪资高&#xff0c;但是依旧有一些拿着3-5k薪资&#xff0c;甚至找不到软件测试工作的人。 先来看一些例子&#xff1a; 小A在一家培训机构学完…...

如何运行YOLOv5的代码,实现目标识别

YOLOv5和v8都由Ultralytics这家创业公司开发的https://github.com/ultralytics/yolov5环境配置git clone https://github.com/ultralytics/yolov5.git作者要求python3.6&#xff08;我用的3.8也能跑通&#xff09;torch1.7.0pip install -r requirements_my_version.txtrequire…...

【正点原子FPGA连载】第十四章SD卡读写TXT文本实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第十四章SD卡读写…...

【人工智能AI :Open AI】我想写一本书,书名是《中国文学史》,帮我列一下目录,细化到三级目录,不少于2000字。

我想写一本书&#xff0c;书名是《中国文学史》&#xff0c;帮我列一下目录&#xff0c;细化到三级目录&#xff0c;不少于2000字。 中国文学史 第一章 经典文学 1.1 先秦文学 1.1.1 先秦诗歌 1.1.1.1 小雅 1.1.1.2 大雅 1.1.1.3 颂 1.1…...

「文档数据库之争」MongoDB和CouchDB的比较

MongoDB和CouchDB都是基于文档的NoSQL数据库类型。文档数据库又称mdocument store&#xff0c;通常用于存储半结构化数据的文档格式及其详细描述。它允许创建和更新程序&#xff0c;而不需要引用主模式。移动应用程序中的内容管理和数据处理是可以应用文档存储的两个字段。Mong…...

c++11 标准模板(STL)(std::unordered_set)(三)

定义于头文件 <unordered_set> template< class Key, class Hash std::hash<Key>, class KeyEqual std::equal_to<Key>, class Allocator std::allocator<Key> > class unordered_set;(1)(C11 起)namespace pmr { templ…...

事件循环机制eventLoop?Js事件流?JavaScript如何实现异步编程?

单线程模式&#xff1a;由用户交互和修改dom的问题&#xff0c;只能决定js就是单线程任务异步模式诞生&#xff1a;同步模式遇到耗时操作页面便会阻塞&#xff0c;就像图片加载&#xff0c;接口获取&#xff0c;页面会一直等待&#xff1b;在执行主线程时&#xff0c;先执行同步…...

视频播放器倍速、清晰度切换、m3u8下载

视频上很容易就可以做到倍速播放&#xff0c;一般的视频格式都是每秒固定的帧数&#xff0c;按比例跳帧就可以了。音频上其实也可以用这种方式来直接删除一些周期&#xff0c;因为电脑里的音频也是数字化离散化地储存的。但是为了使声音不失真&#xff0c;应该都用了稍复杂一点…...

将Nginx 核心知识点扒了个底朝天(五)

什么叫 CDN 服务&#xff1f; CDN &#xff0c;即内容分发网络。 其目的是&#xff0c;通过在现有的 Internet中 增加一层新的网络架构&#xff0c;将网站的内容发布到最接近用户的网络边缘&#xff0c;使用户可就近取得所需的内容&#xff0c;提高用户访问网站的速度。 一般…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

【C++进阶篇】智能指针

C内存管理终极指南&#xff1a;智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发&#xff0c;其初衷是为了满足他自己的一个项目需求&#xff0c;即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源&#xff0c;Redis凭借其简单易用、…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...

Vue 模板语句的数据来源

&#x1f9e9; Vue 模板语句的数据来源&#xff1a;全方位解析 Vue 模板&#xff08;<template> 部分&#xff09;中的表达式、指令绑定&#xff08;如 v-bind, v-on&#xff09;和插值&#xff08;{{ }}&#xff09;都在一个特定的作用域内求值。这个作用域由当前 组件…...

基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)

引言 在嵌入式系统中&#xff0c;用户界面的设计往往直接影响到用户体验。本文将以STM32微控制器和OLED显示屏为例&#xff0c;介绍如何实现一个多级菜单系统。该系统支持用户通过按键导航菜单&#xff0c;执行相应操作&#xff0c;并提供平滑的滚动动画效果。 本文设计了一个…...