主頁 >  其他 > tomcat

tomcat

2021-01-12 14:45:59 其他

web服務

nginx: 輕量級、web 反向代理、簡單的負載均衡,處理靜態資料的能力比較好;并發量2.5萬
apache: 重量級,處理動態資料的能力比較好
tomcat: java的web服務,手機app大部分都使用的tomcat
lamp和lnmp 架構 index.html index.php,php作為中間件,php是能夠加載index.php頁面

tomcat

是基于java開發的,它只支持index.html和index.jsp頁面,java能夠決議index.jsp的檔案;

Tomcat服務器是一個免費的開放源代碼的Web應用服務器,Tomcat是Apache軟體基金會(Apache Software Foundation)的Jakarta專案中的一個核心專案,由Apache、Sun和其他一些公司及個人共同開發而成,由于有了Sun的參與和支持,最新的Servlet(java撰寫的一個web程式) 和JSP規范總是能在Tomcat中得到體現,Tomcat 5支持最新的Servlet 2.4和JSP 2.0規范,因為Tomcat技術先進、性能穩定,而且免費,因而深受Java愛好者的喜愛并得到了部分軟體開發商的認可,是目前比較流行的Web應用服務器,
對于一個初學者來說,可以這樣認為,當在一臺機器上配置好Apache 服務器,可利用它回應HTML(標準通用標記語言下的一個應用)頁面的訪問請求,實際上Tomcat是Apache 服務器的擴展,但運行時它是獨立運行的,所以當你運行tomcat 時,它實際上作為一個與Apache 獨立的行程單獨運行的,訣竅是,當配置正確時,Apache 為HTML頁面服務,而Tomcat 實際上運行JSP 頁面和Servlet,另外,Tomcat和IIS等Web服務器一樣,具有處理HTML頁面的功能,另外它還是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的默認模式,
在這里插入圖片描述
Servlet是Java提供的用于開發Web服務器應用程式的一個組件,運行在服務器端,由Servlet容器所管理,用于生成動態的內容,Servlet是平臺獨立的Java類,撰寫一個Servlet,實際上就是按照Servlet規范撰寫一個Java類,
JSP是servlet的擴展,可以認為JSP = HTML + Java代碼 + JSP標簽
Servlet獲取請求資料和處理資料非常方便,但是向頁面輸出并顯示資料(html標簽)非常麻煩,毫無格式
jsp顯示資料非常方便,像html格式一樣,但是封裝資料和處理資料比較麻煩

tomcat的作用:
用來對服務器上的web提供訪問權限控制,并且具有處理HTML頁面的功能

tomcat的優點:
兼有可擴展性和安全性,性能穩定

1、兼有可擴展性和安全性,假如單位時間內訪問請求數急劇增加,可以用相對較低的費用增加前端的能力,
2、比較容易擴展,由于是通過在這臺功能強大的服務器上運行的單個servlet容器,實際上也就不需要考慮session狀態在分布式環境下的維護這類復雜的問題,
3、臺后端服務器在外界不可以訪問,網上的黑客只能訪問前端的web服務器,不能直接訪問后端的應用服務器,這就提高了安全性,但這并不意味著黑客們不能通過網路瀏覽器進行其它形式的攻擊,
這種型別的站點的主要特點是每一個頁面都可能是動態生成的,但這些資料中主要部分還是靜態的(比如,各類影像GIF、JPG、PNG,流式媒體等),想象以下某個站點采用了多個用于負載均衡的硬體設備,這些設備后端連結一組服務器,這些服務器可能是一組相對廉價的運行apache的linux服務器簇,這組位于前端的服務器簇將僅占總訪問請求的10%的真正需要呼叫servlet的訪問請求發送給后段的系統,后鍛系統可以是一臺Sun的E3500,或是IBM的AS/400,在這個后端的系統上運行著Tomcat,可能還包括企業級資料庫,

tomcat的應用:
web應用服務器,可以作為中間件處理index.jsp的檔案

jdk介紹

jdk(java development kit) 是java語言的軟體開發工具包
其中基本組件包括:

javac – 編譯器,將源程式轉成位元組碼 
jar – 打包工具,將相關的類檔案打包成一個檔案 
javadoc – 檔案生成器,從原始碼注釋中提取檔案 
jdb – debugger,查錯工具 
java – 運行編譯后的java程式(.class后綴的) 
appletviewer:小程式瀏覽器,一種執行HTML檔案上的Java小程式的Java瀏覽器, 
Javah:產生可以呼叫Java程序的C程序,或建立能被Java程式呼叫的C程序的頭檔案, 
Javap:Java反匯編器,顯示編譯類檔案中的可訪問功能和資料,同時顯示位元組代碼含義, 
Jconsole: Java進行系統除錯和監控的工具 
xtcheck:一個檢測jar包沖突的工具 
apt:注釋處理工具 
jhat:java堆分析工具 
jstack:堆疊跟蹤程式 
jstat:JVM檢測統計工具 
jstatd:jstat守護行程 
jinfo:獲取正在運行或崩潰的java程式配置資訊 
jmap:獲取java行程記憶體映射資訊 
idlj:idl-to-java編譯器,將IDL語言轉化為java檔案 
policytool:一個GUI的策略穩健和管理工具 
jrunscript:命令列腳本運行 

安裝tomcat前要先安裝jdk環境
因為版本的原因 需要重新安裝一個新的jdk工具包 也就是java環境
準備一臺虛擬機,拖入相關的軟體包

[root@localhost ~]# java -version
openjdk version "1.8.0_102"
OpenJDK Runtime Environment (build 1.8.0_102-b14)
OpenJDK 64-Bit Server VM (build 25.102-b14, mixed mode)
[root@localhost ~]# rm -rf /usr/bin/java #洗掉原本主機上的Java程式
[root@localhost ~]# java -version
-bash: /usr/bin/java: 沒有那個檔案或目錄
[root@localhost ~]# tar -zxf jdk-8u201-linux-x64.tar.gz 
[root@localhost ~]# mv jdk1.8.0_201/ /usr/local/java

能夠讓命令全域使用的方法:
1、制作軟鏈接

ln  -s  /usr/local/java/bin/*   /usr/bin/

2、添加環境變數(通常情況我們使用第二種方法)

[root@localhost bin]# vim /etc/profile
#末尾添加
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
#釋義:
#export:宣告一個變數
#jre   java  runtime   environment : java的運行環境
#class   java  依賴庫檔案
#path  環境變數
[root@localhost bin]# source /etc/profile
[root@localhost bin]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/java/bin:/usr/local/java/jre/bin
[root@localhost bin]# java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

注:
自己添加的環境變數,只能針對當前的shell和其子shell,如果另打開一個shell環境則需要重新生效

安裝tomcat

[root@localhost ~]# tar -zxf apache-tomcat-8.5.35.tar.gz 
[root@localhost ~]# mv apache-tomcat-8.5.35 /usr/local/tomcat
[root@localhost ~]# cd /usr/local/tomcat/
[root@localhost tomcat]# cd bin/
[root@localhost bin]# ./startup.sh  #啟動
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@localhost bin]# netstat -anput | grep java
tcp6       0      0 :::8080                 :::*                    LISTEN      58093/java          
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      58093/java          
tcp6       0      0 :::8009                 :::*                    LISTEN      58093/java

訪問192.168.10.30:8080(本機ip)
在這里插入圖片描述
tomcat軟體目錄結構功能
bin: 服務相關的腳本檔案,可執行的檔案,例如:關閉、開啟腳本
conf:里面存放的是組態檔,xml結尾
lib:tomcat運行需要的依賴庫檔案
logs:運行的日志檔案
webapps:web應用程式部署的目錄,也就是站點根目錄,頁面是jsp或html結尾
work:存放著jsp編譯后的class檔案;class類檔案也就是java程式編譯后生成的檔案

tomcat的多主機實體
虛擬主機,讓一臺主機可以運行多個tomcat

[root@localhost ~]# cp -r /usr/local/tomcat/ /usr/local/tomcat1
[root@localhost ~]# ls /usr/local/
bin  etc  games  include  java  lib  lib64  libexec  sbin  share  src  tomcat  tomcat1
[root@localhost ~]# cd /usr/local/tomcat1/conf/
[root@localhost conf]# vim server.xml
22 <Server port="8006" shutdown="SHUTDOWN">
69     <Connector port="8081" protocol="HTTP/1.1"
71                redirectPort="8444" />
116     <Connector port="8010" protocol="AJP/1.3" redirectPort="8444" />
[root@localhost conf]# cd ..
[root@localhost tomcat1]# ./bin/startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat1
Using CATALINA_HOME:   /usr/local/tomcat1
Using CATALINA_TMPDIR: /usr/local/tomcat1/temp
Using JRE_HOME:        /usr/local/java/jre
Using CLASSPATH:       /usr/local/tomcat1/bin/bootstrap.jar:/usr/local/tomcat1/bin/tomcat-juli.jar
Tomcat started.
[root@localhost tomcat1]# netstat -anput | grep 8081
tcp6       0      0 :::8081                 :::*                    LISTEN      58441/java

訪問8081埠進行驗證
在這里插入圖片描述

Tomcat架構

1 server
提供一個介面讓其他程式能夠訪問到service集合、同時要維護它所包含的所有service的生命周期,包括如何初始化、如何結束服務、如何找到別人要訪問的service
2 service
Service是server下一個集合,service包含多個接收請求的connector并有一個處理所有連接的容器container
3 connector
Connector作用是監聽客戶端請求,并將請求封裝提交container處理,然后將處理結果回傳客戶端,

Tomcat有兩個典型的connector,一個用來監聽瀏覽器的http請求,另一個是用來監聽來自其他服務器的請求coyote http/1.1 connector 在埠8080處偵聽來自客戶browser的http請求,
Coyote AJP/1.3 connector 在埠8009處偵聽來自其他webserver(apache)的servlet/jsp代理請求

4 container
1 engine
Engine下可以配置多個虛擬主機virtual host,每個虛擬主機都有一個域名,當engine獲得一個請求時,它把該請求匹配到某個host上,然后把該請求交給host來處理,
Engine 有一個默認虛擬主機,當請求無法匹配到任何一個host上的時候,將交給該默認host來處理localhost

2 host
代表一個virtual host ,虛擬主機,每個虛擬主機和某個網路域名domain name相匹配,
每個虛擬主機下都可以部署(deploy)一個或者多個web app,每個web app對應一個context,有一個context path,
當host獲得一個請求時,將把該請求匹配到某個context上,然后把該請求交給該context來處理,
所有無法和其他context的路徑名匹配的請求都將最終和該默認context匹配,

3 context
一個context對應于一個web application
一個web application 由一個或者多個servlet組成,

tomcat的工作原理:

在這里插入圖片描述
server:最頂層元素,也就是tomcat服務,一個server可以包含至少一個service,用于具體提供服務
8005:負責關閉tomcat的埠
service分為兩個部分:
1、connector:負責接收請求,并提供Socket與Request和Response相關的轉化
2、container:用于封裝和管理servlet,以及具體處理Request請求
connector分為兩個部分:
1、監聽埠8080 http1.1:監聽來自客戶端的請求
2、監聽埠8009 ajp:接收其他服務的請求
3、監聽埠8443:監聽https
例:
http://localhost:8080/kgc/index.jsp
connector的8080埠接收–container----engine處理引擎----虛擬主機----context
context可以有多個,相當于多個目錄,多個頁面

一個Tomcat中只有一個Server,一個Server可以包含多個Service,一個Service只有一個Container,但是可以有多個Connectors,這是因為一個服務可以有多個連接,如同時提供Http和Https鏈接,也可以提供向相同協議不同埠的連接,示意圖如下(Engine、Host、Context下邊會說到):
在這里插入圖片描述
多個 Connector 和一個 Container 就形成了一個 Service,有了 Service 就可以對外提供服務了,但是 Service 還要一個生存的環境,必須要有人能夠給她生命、掌握其生死大權,那就非 Server 莫屬了!所以整個 Tomcat 的生命周期由 Server 控制,
另外,上述的包含關系或者說是父子關系,都可以在tomcat的conf目錄下的server.xml組態檔中看出

撰寫一個自定義的頁面

[root@localhost tomcat1]#  ./bin/shutdown.sh 
Using CATALINA_BASE:   /usr/local/tomcat1
Using CATALINA_HOME:   /usr/local/tomcat1
Using CATALINA_TMPDIR: /usr/local/tomcat1/temp
Using JRE_HOME:        /usr/local/java/jre
Using CLASSPATH:       /usr/local/tomcat1/bin/bootstrap.jar:/usr/local/tomcat1/bin/tomcat-juli.jar
[root@localhost tomcat1]# cd 
[root@localhost ~]# rm -rf /usr/local/tomcat1

[root@localhost ~]# cd /usr/local/tomcat/
[root@localhost tomcat]# vim conf/server.xml
148       <Host name="localhost"  appBase="webapps"
149             unpackWARs="true" autoDeploy="true">
#添加
150       <Context path="/kgc" docBase="/usr/local/tomcat/webapps/hello"
151             reloadable="false" crossContext="true"/>
#釋義:
host name:域名
appbase:站點根目錄, java開發的一個web專案 war
unpackwars:是否解壓war包,這里開發寫好的頁面會打成war包
autodeploy:是否自動部署
<Context path="/kgc":    #訪問的具體路徑
 docBase="/usr/local/tomcat/webapps/hello" :   #具體的目錄
reloadeable="false":    #是否自動重啟
crossContext="true"/>  : #是否共享會話
[root@localhost tomcat]# mkdir webapps/hello
[root@localhost tomcat]# echo "1111" > webapps/hello/index.jsp
[root@localhost tomcat]# ./bin/shutdown.sh #先關閉
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@localhost tomcat]# ./bin/startup.sh #再啟用
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@localhost tomcat]# netstat -anput | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      59324/java          
tcp6       0      0 ::1:44070               ::1:8080                TIME_WAIT   -                   
[root@localhost tomcat]# curl 192.168.10.30:8080/kgc/index.jsp #訪問驗證
1111

tomcat的默認索引頁 index.jsp

[root@localhost tomcat]# cd /usr/local/tomcat/webapps/hello/
[root@localhost hello]# mv index.jsp index1.jsp 
[root@localhost hello]# curl 192.168.10.30:8080/kgc/  #這兒會訪問不到,會出現404
<!doctype html><html lang="en"><head><title>HTTP Status 404 – Not Found</title><style type="text/css">h1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} h2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} h3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} body {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} b {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} p {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;} a {color:black;} a.name {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 404 – Not Found</h1><hr class="line" /><p><b>Type</b> Status Report</p><p><b>Message</b> &#47;kgc&#47;</p><p><b>Description</b> The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.</p><hr class="line" /><h3>Apache Tomcat/8.5.35</h3></body></html>

[root@localhost hello]# curl 192.168.10.30:8080/kgc/index1.jsp
1111

目錄瀏覽功能
當訪問一個目錄,沒有默認索引頁,會展示出這個目錄中所有的頁面,前提需要開啟目錄瀏覽的功能
必須當前目錄下沒有默認索引頁

[root@localhost ~]# cd /usr/local/tomcat/webapps/hello/
[root@localhost hello]# touch index{2..10}.jsp
[root@localhost hello]# ls
index10.jsp  index2.jsp  index4.jsp  index6.jsp  index8.jsp
index1.jsp   index3.jsp  index5.jsp  index7.jsp  index9.jsp
[root@localhost hello]# vim /usr/local/tomcat/conf/web.xml
111             <param-name>listings</param-name>
 112             <param-value>true</param-value>  #開啟目錄瀏覽功能
 
[root@localhost hello]# /usr/local/tomcat/bin/shutdown.sh  #先關閉
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

[root@localhost hello]# /usr/local/tomcat/bin/startup.sh #再啟用
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@localhost hello]# netstat -anput | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      59567/java          
tcp6       0      0 192.168.10.30:8080      192.168.10.1:60129      ESTABLISHED 59567/java          
tcp6       0      0 192.168.10.30:8080      192.168.10.1:60128      FIN_WAIT2

訪問http://192.168.10.30:8080/kgc/進行驗證查看
在這里插入圖片描述
修改默認索引頁

[root@localhost hello]# vim /usr/local/tomcat/conf/web.xml 
4696         <welcome-file>aa.jsp</welcome-file>
[root@localhost hello]# /usr/local/tomcat/bin/shutdown.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@localhost hello]# /usr/local/tomcat/bin/startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@localhost hello]# netstat -anput | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      59873/java          
tcp6       0      0 ::1:44088               ::1:8080                TIME_WAIT   -                   
[root@localhost hello]# echo aa > aa.jsp
[root@localhost hello]# ls
aa.jsp       index1.jsp  index3.jsp  index5.jsp  index7.jsp  index9.jsp
index10.jsp  index2.jsp  index4.jsp  index6.jsp  index8.jsp
[root@localhost hello]# curl 192.168.10.30:8080/kgc/
aa

這個實驗做完之后再把剛剛改的配置更改回來,以便于后面接著使用

jvm記憶體監控頁面
jvm(java vritual machine)java的虛擬主機

[root@localhost hello]# vim meminfo.jsp
#添加
<%
Runtime rtm = Runtime.getRuntime();
long mm = rtm.maxMemory()/1024/1024;
long fm = rtm.freeMemory()/1024/1024;
long tm = rtm.totalMemory()/1024/1024;
out.println("JVM memory info:<br>");
out.println("Max memory:"+mm+"MB"+"<br>");
out.println("Free memory:"+fm+"MB"+"<br>");
out.println("Total memory:"+tm+"MB"+"<br>");
out.println("Available memory can be used:"+(mm+fm-tm)+"MB"+"<br>");
%>

訪問http://192.168.10.30:8080/kgc/meminfo.jsp進行驗證
在這里插入圖片描述
jvm的記憶體分配方式:
堆記憶體和堆疊記憶體

堆記憶體的方式: jvm最大占用235M,但是tomcat不會使用全部,會先申請一塊空間25M,然后使用了21M,剩余4M,所以tomcat還可以使用
mm-(tm-fm)也就是mm+fm-tm所得到的214M
jvm的堆記憶體分配是先分配一小塊,然后在使用
堆記憶體是現在的jvm的分配方式

堆疊記憶體: 使用多少占用多少,現在不常用

JVM遠程呼叫(jvm遠程監控)
JMX是Java Management Extensions 的簡寫,即Java管理擴展,這門技術是對Java應用程式和JVM進行監控和管理的,在企業實際開發程序中,所有的程式都是需要進行監控的,沒有監控,程式就相當于是裸奔,
在一些小公司可能沒有監控,只注重于功能,但是在大公司中,沒有監控是絕對不可能的,JMX是Java官方提供的一套用于監控Java程式和JVM運行時狀態的標準API,
通過JMX,我們可以監控的內容包括:
1、服務器中各種資源的使用情況:如CPU、記憶體等
2、JVM記憶體使用情況
3、JVM中的執行緒情況
4、JVM中加載的類

很多開源軟體都是用JMX來實作性能監控的,比如大名鼎鼎的Kafka:
Kafka 的每個監控指標都是以 JMX MBean 的形式定義的,具體來說,Kafka 使用基于 Metrics 的監控指標體系在方法呼叫的程序中設定埋點來統計 broke 端和 clients 端的各種監控指標,然后將采集的指標通過Metrics的JmxReporter送往JMX中,

實驗:

主機ip
tomcat192.168.10.30
遠程監控192.168.10.40

tomcat主機:

[root@localhost ~]# cd /usr/local/tomcat/
[root@localhost tomcat]# vim bin/catalina.sh
307 CATALINA_OPTS="-Djava.rmi.server.hostname=192.168.10.30 #jmx監控的主機(本機)
308 -Dcom.sun.management.jmxremote #開啟遠程監控
309 -Dcom.sun.management.jmxremote.port=8080 #監控的埠
310 -Dcom.sun.management.jmxremote.ssl=false #不使用https
311 -Dcom.sun.management.jmxremote.authenticate" #認證登錄

[root@localhost tomcat]# cd /usr/local/java/jre/lib/management/
[root@localhost management]# cp jmxremote.password.template jmxremote.password
[root@localhost management]# vim jmxremote.password
62 monitorRole  123456
 63 controlRole  123456
 [root@localhost management]# chmod 600 jmxremote.*
 
[root@localhost management]# /usr/local/tomcat/bin/shutdown.sh 

[root@localhost management]# /usr/local/tomcat/bin/startup.sh 

[root@localhost management]# netstat -anput | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      61598/java          
tcp6       0      0 ::1:44102               ::1:8080                TIME_WAIT   -        
[root@localhost bin]# systemctl stop firewalld
[root@localhost bin]# setenforce 0  

遠程主機:驗證

[root@localhost ~]# jconsole  #執行完后會彈出以下視窗

在這里插入圖片描述
在這里插入圖片描述
看到這兒就證明監控部署成功
在這里插入圖片描述

tomcat的管理平臺

tomcat的應用管理平臺:
用于部署頁面,tomcat本身自帶的一個管理平臺

[root@localhost management]# cd /usr/local/tomcat/
[root@localhost tomcat]# cd webapps/
[root@localhost webapps]# ls
docs  examples  hello  host-manager  manager  ROOT
[root@localhost webapps]# cd manager/
[root@localhost manager]# vim /usr/local/tomcat/bin/catalina.sh
#將307-311注釋
307 #CATALINA_OPTS="-Djava.rmi.server.hostname=192.168.10.30
308 #-Dcom.sun.management.jmxremote
309 #-Dcom.sun.management.jmxremote.port=8080
310 #-Dcom.sun.management.jmxremote.ssl=false
311 #-Dcom.sun.management.jmxremote.authenticate"

[root@localhost manager]# cd /usr/local/tomcat/
[root@localhost tomcat]# vim webapps/manager/META-INF/context.xml
#修改
20          allow="192.168.10.*" /> #允許這個網段的ip能查看應用管理平臺
[root@localhost tomcat]# vim conf/tomcat-users.xml 
#在倒數第二行添加以下內容
44   <role rolename="manager-gui"/>
45   <role rolename="manager-script"/>
46   <user username="manager" password="123456" roles="manager-gui"/>
47   <user username="managerscript" password="123456" roles="manager-script"/>
#引數釋義
manager-gui:可以去訪問html介面
manager-script:可以去訪問純文本的介面
Manager-remote    jmx代理的介面
manager-status:可以查看tomcat的狀態

[root@localhost tomcat]# /usr/local/tomcat/bin/shutdown.sh 

[root@localhost tomcat]# /usr/local/tomcat/bin/startup.sh 

[root@localhost tomcat]# netstat -anput | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      62671/java          
tcp6       0      0 ::1:44118               ::1:8080                TIME_WAIT   -            

訪問192.168.10.30:8080/manager/html驗證
在這里插入圖片描述
在這里插入圖片描述

第一種:部署使用圖形界面 部署web專案,也就是war包
在這里插入圖片描述
訪問驗證
在這里插入圖片描述
把這個使用圖形界面部署的web專案洗掉掉
在這里插入圖片描述
第二種:使用命令部署war包

[root@localhost ~]# cp bdqnweb.war /usr/local/tomcat/webapps/
[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh
[root@localhost ~]# netstat -anput | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      63351/java          
[root@localhost ~]# curl 192.168.10.30:8080/bdqnweb/
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>

第三種:命令來部署war專案

[root@localhost ~]# rm -rf /usr/local/tomcat/webapps/bdqnweb*
[root@localhost ~]# unzip bdqnweb.war -d /usr/local/tomcat/webapps/bdqnweb
Archive:  bdqnweb.war
   creating: /usr/local/tomcat/webapps/bdqnweb/META-INF/
  inflating: /usr/local/tomcat/webapps/bdqnweb/META-INF/MANIFEST.MF  
   creating: /usr/local/tomcat/webapps/bdqnweb/WEB-INF/
   creating: /usr/local/tomcat/webapps/bdqnweb/WEB-INF/classes/
  inflating: /usr/local/tomcat/webapps/bdqnweb/WEB-INF/web.xml  
  inflating: /usr/local/tomcat/webapps/bdqnweb/index.jsp  
   creating: /usr/local/tomcat/webapps/bdqnweb/META-INF/maven/
   creating: /usr/local/tomcat/webapps/bdqnweb/META-INF/maven/cn.bdqn.bdqnweb/
   creating: /usr/local/tomcat/webapps/bdqnweb/META-INF/maven/cn.bdqn.bdqnweb/bdqnweb/
  inflating: /usr/local/tomcat/webapps/bdqnweb/META-INF/maven/cn.bdqn.bdqnweb/bdqnweb/pom.xml  
  inflating: /usr/local/tomcat/webapps/bdqnweb/META-INF/maven/cn.bdqn.bdqnweb/bdqnweb/pom.properties
 
[root@localhost ~]# cd /usr/local/tomcat/webapps/
[root@localhost webapps]# ls
bdqnweb docs  examples  hello  host-manager  manager  ROOT
[root@localhost webapps]# curl 192.168.10.30:8080/bdqnweb/
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>

java寫的web界面 web專案 打包之后 會變成war包
bdqnweb/
├── index.jsp #頁面
├── META-INF 應用程式的配置目錄 加載的程式 資料 擴展的包
│ ├── MANIFEST.MF
│ └── maven
└── WEB-INF 頁面的配置
├── classes 類檔案 index.jsp編譯后生成的檔案
└── web.xml 組態檔
java web專案 web(程式) war包(jar包 )

在這里插入圖片描述

1.jar包的介紹
JAR(Java Archive,Java 歸檔檔案)是與平臺無關的檔案格式,它允許將許多檔案組合成一個壓縮檔案,JavaSE程式可以打包成Jar包(J其實可以理解為Java了),

JAR 檔案格式以流行的 ZIP 檔案格式為基礎,與 ZIP 檔案不同的是,JAR 檔案不僅用于壓縮和發布,而且還用于部署和封裝庫、組件和插件程式,并可被像編譯器和 JVM 這樣的工具直接使用,在 JAR 中包含特殊的檔案,如 manifests 和部署描述符,用來指示工具如何處理特定的 JAR,

簡單來說,Java編譯好之后生成class檔案,但如果直接發布這些class檔案的話會很不方便,所以就把許多的class檔案打包成一個jar,jar中除了class檔案還可以包括一些資源和組態檔,通常一個jar包就是一個java程式或者一個java庫,可以將這些jar包引入到你的專案中,可以直接使用這些jar包中的類和屬性,這些jar包一般放在lib目錄下,

2.war包的介紹

war(Web application Archive),與jar基本相同,它通常表示這是一個Java的Web應用程式的包,是一個可以直接運行的web模塊,通常用于網站,打成包部署到容器中,以Tomcat來說,將war包放置在其\webapps\目錄下,然后啟動Tomcat,這個包就會自動解壓,就相當于發布了,tomcat這種Servlet容器會認出war包并自動部署,

war包中的檔案按照一定目錄結構來組織,其根目錄下包含有html和jsp檔案,或者包含有這兩種檔案的目錄,另外還有WEB-INF目錄,通常在WEB-INF目錄下含有一個web.xml檔案和一個classes目錄,web.xml是這個應用的組態檔,而classes目錄下則包含編譯好的servlet類和jsp,或者servlet所依賴的其他類(如JavaBean),通常這些所依賴的類也可以打包成jar包放在WEB-INF下的lib目錄下,

簡單來說,war包是JavaWeb程式打的包,war包里面包括寫的代碼編譯成的class檔案,依賴的包,組態檔,所有的網站頁面,包括html,jsp等等,一個war包可以理解為是一個web專案,里面是專案的所有東西,

3.區別

WAR檔案代表了一個Web應用程式,JAR是類的歸檔
所有的包都是jar打的,只不過目標檔案的擴展名不一樣

tomcat的主機管理平臺: 可以制作虛擬主機

[root@localhost ~]# vim /usr/local/tomcat/webapps/host-manager/META-INF/context.xml
20          allow="192.168.10.*" />
[root@localhost ~]# vim /usr/local/tomcat/conf/tomcat-users.xml
#添加
 49   <role rolename="admin-gui"/>
 50   <role rolename="admin-script"/>
 51   <user username="admin" password="123456" roles="admin-gui"/>
 52   <user username="adminscript" password="123456" roles="admin-script"/>
[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh 
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh 

訪問http://192.168.10.30:8080/host-manager/html驗證
輸入的用戶名和密碼也就是組態檔中的設定
在這里插入圖片描述
在這里插入圖片描述
創建虛擬主機
在這里插入圖片描述
在這里插入圖片描述

[root@localhost ~]# cd /usr/local/tomcat/webapps/
[root@localhost webapps]# ls
aaa  bdqnweb    docs  examples  hello  host-manager  manager  ROOT
[root@localhost webapps]# cd aaa/
[root@localhost aaa]# echo AAAAAA > index.jsp
[root@localhost aaa]# vim /etc/hosts
#添加
192.168.10.30 www.kgc.com
[root@localhost aaa]# /usr/local/tomcat/bin/shutdown.sh
[root@localhost aaa]# /usr/local/tomcat/bin/startup.sh
[root@localhost aaa]# curl www.kgc.com:8080/aaa/index.jsp
AAAAAA

tomcat的優化

tomcat的一個加固,用于安全方面

1、服務器的埠改為非8080埠
主組態檔中修改

[root@localhost ~]# cd /usr/local/tomcat1/conf/
[root@localhost conf]# vim server.xml
69     <Connector port="8081" protocol="HTTP/1.1"

2、禁用目錄瀏覽功能

[root@localhost ~]# cd /usr/local/tomcat/webapps/hello/
[root@localhost hello]# vim /usr/local/tomcat/conf/web.xml
111             <param-name>listings</param-name>   
112             <param-value>false</param-value>   #開啟目錄瀏覽功能

3、在生產環境中,要禁用應用管理平臺和主機管理平臺

[root@localhost ~]# rm -rf /usr/local/tomcat/webapps/manager/
[root@localhost ~]# rm -rf /usr/local/tomcat/webapps/host-manager/

4、隱藏服務版本的資訊
在這里插入圖片描述
沒有找到對應的頁面時,會顯示版本的資訊,可以隱藏版本資訊

[root@localhost ~]# vim /usr/local/tomcat/conf/web.xml
23 <error-page>
  24    <error-code>404</error-code>
  25    <location>/notfound.jsp</location>
  26 </error-page>
[root@localhost ~]# cd /usr/local/tomcat/webapps/hello/
[root@localhost hello]# echo "page no found" > notfound.jsp
[root@localhost hello]# /usr/local/tomcat/bin/shutdown.sh 
[root@localhost hello]# /usr/local/tomcat/bin/startup.sh

當再次訪問不存在的頁面時,將不會出現版本資訊
在這里插入圖片描述

5、腳本權限識訓,防止爆破

chmod -R 700 /usr/local/tomcat/bin/*

tomcat引數的優化

1、內核的優化,調整內核的引數

[root@www ~]# cd /usr/local/tomcat/webapps/hello/
[root@www hello]# vim /etc/sysctl.conf 
#末尾添加
net.ipv4.ip_local_port_range = 2048 65535    #65535個連接     32768-65535
net.ipv4.tcp_syn_retries = 3    #請求三次連接不上  就斷開
net.ipv4.tcp_synack_retries = 2   回應連接建立2次   沒有應答  就斷開
net.ipv4.tcp_fin_timeout = 15    第三次    超時連接15s
net.ipv4.tcp_keepalive_time = 1500    tcp長連接斷開的時間
net.ipv4.tcp_max_syn_backlog = 1000    網卡的請求大于cpu的請求的處理 設定佇列中的最大數量

[root@www hello]# sysctl -p

2、jvm記憶體的優化

[root@www hello]# vim /usr/local/tomcat/bin/catalina.sh
307 CATALINA_OPTS="-server -Xms512m -Xmx1024m"
#引數釋義:
-server:對記憶體的優化
-Xms512m:初始記憶體的大小
-Xms1024m:最大記憶體的大小
[root@www hello]# /usr/local/tomcat/bin/shutdown.sh
[root@www hello]# /usr/local/tomcat/bin/startup.sh
[root@www hello]# netstat -anput | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      67550/java          
tcp6       0      0 ::1:31644               ::1:8080                TIME_WAIT   -          

3、模型優化
tomcat有3個模型

[root@locathost apr-1.7.0]# vim /etc/profile
#末尾添加
export LD_LIBRARY_PATH=$LD_LIBARB_PATH:/usr/local/apr/lib
[root@locathost apr-1.7.0]# source /etc/profile
[root@locathost ~]# cd /usr/local/tomcat/bin/
[root@locathost bin]# tar -zxf tomcat-native.tar.gz -C /usr/src/
[root@locathost bin]# cd /usr/src/tomcat-native-1.2.18-src/native/
[root@locathost native]# ./configure --prefix=/usr/local/apr --with-java-home=/usr/local/java && make && make install
[root@locathost native]# vim /usr/local/tomcat/conf/server.xml
69     <Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
[root@locathost native]# cat /usr/local/tomcat/logs/catalina.out | grep http-apr-8080
12-Jan-2021 10:04:26.918 資訊 [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-apr-8080"]
12-Jan-2021 10:04:27.397 資訊 [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-apr-8080"]

2、

 [root@localhost native]# vim /usr/local/tomcat/conf/server.xml
69     <Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
 70                connectionTimeout="20000"    #連接超時時間
 71                maxThreads="1000"       #并發量
 72                maxProcessors="1000"   #最大行程數量
 73                minProcessors="500"   #最小行程數量
 74                maxSpareThreads="500"   #最大空閑行程數
 75                minSpareThreads="200"    #最小空閑行程數
 76                acceptCount="1000"   #tomcat處理速度沒有請求速度快 最大排隊量
 77                UIREncoding="utf-8"   #編碼型別
 78                enableLookups="false"   #不允許反向域名決議
 79                disableUploadTimeout="true"    #不對上傳頁面進行超時設定
80                redirectPort="8443" />         #重定向埠  https的連接
[root@localhost native]# /usr/local/tomcat/bin/shutdown.sh 
[root@localhost native]# /usr/local/tomcat/bin/startup.sh 
[root@localhost native]# netstat -anput | grep 8080

日志

[root@locathost native]# vim /usr/local/tomcat/conf/server.xml 
164                pattern="%h %l %u %t %r %s %b %{Referer} i %{User-Agent} i %D" />

[root@locathost native]# /usr/local/tomcat/bin/shutdown.sh
[root@locathost native]# /usr/local/tomcat/bin/startup.sh
[root@locathost native]# netstat -anput | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      79341/java

日志切割:

[root@locathost ~]# tar -zxf cronolog-1.6.2.tar.gz 
[root@locathost ~]# cd cronolog-1.6.2/
[root@locathost cronolog-1.6.2]# ./configure && make && make install
[root@locathost cronolog-1.6.2]# which cronolog 
/usr/local/sbin/cronolog
[root@locathost cronolog-1.6.2]# cd /usr/local/tomcat/
[root@locathost tomcat]# vim bin/catalina.sh 
#注釋掉451
451   #touch "$CATALINA_OUT" 
#洗掉這行原本的內容,然后再添加
466       2>&1 | /usr/local/sbin/cronolog "$CATALINA_BASE/logs/catalina-%Y-%m-%d.log" &
[root@locathost tomcat]# /usr/local/tomcat/bin/shutdown.sh
[root@locathost tomcat]# /usr/local/tomcat/bin/startup.sh
[root@locathost tomcat]# cd /usr/local/tomcat/logs/
[root@locathost logs]# ls
catalina.2021-01-10.log      host-manager.2021-01-12.log          localhost_access_log.2021-01-12.txt
catalina.2021-01-11.log      localhost.2021-01-10.log             manager.2021-01-10.log
catalina.2021-01-12.log      localhost.2021-01-11.log             manager.2021-01-11.log
catalina.out                 localhost.2021-01-12.log             manager.2021-01-12.log
host-manager.2021-01-10.log  localhost_access_log.2021-01-10.txt
host-manager.2021-01-11.log  localhost_access_log.2021-01-11.txt

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/247757.html

標籤:其他

上一篇:了解庫開發,我們從STM32標準庫開發學起

下一篇:安裝linux中遇到的問題二進制/無法安裝tools/共享檔案不出現/檔案不能拖拽

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more