亚洲国产精品人久久,亚洲va国产日韩欧美精品色婷婷,久久久久88色偷偷,免费人成黄页在线观看国际

17站長網

17站長網 首頁 網站 服務器 查看內容

Tomcat核心組件及應用架構詳解

2022-12-3 14:48| 查看: 2374 |來源: 互聯網

大家好,現在小編來為大家解答以上問題。Tomcat核心組件及應用架構詳解相信很多人還不知道,現在讓我們一起來看看吧!Web 容器是什么? 讓我們先來簡單回顧一下 Web 技術的發展歷史,可以幫助你理解 Web 容器的由來

大家好,現在小編來為大家解答以上問題。Tomcat核心組件及應用架構詳解相信很多人還不知道,現在讓我們一起來看看吧!

Web 容器是什么?

讓我們先來簡單回顧一下 Web 技術的發展歷史,可以幫助你理解 Web 容器的由來。

早期的 Web 應用主要用于瀏覽新聞等靜態頁面,HTTP 服務器(比如 Apache、Nginx)向瀏覽器返回靜態 HTML,瀏覽器負責解析 HTML,將結果呈現給用戶。

隨著互聯網的發展,我們已經不滿足于僅僅瀏覽靜態頁面,還希望通過一些交互操作,來獲取動態結果,因此也就需要一些擴展機制能夠讓 HTTP 服務器調用服務端程序。

于是 Sun 公司推出了 Servlet 技術。你可以把 Servlet 簡單理解為運行在服務端的 Java 小程序,但是 Servlet 沒有 main 方法,不能獨立運行,因此必須把它部署到 Servlet 容器中,由容器來實例化并調用 Servlet。

而 Tomcat 就是一個 Servlet 容器。為了方便使用,它們也具有 HTTP 服務器的功能,因此 Tomcat 就是一個“HTTP 服務器 + Servlet 容器”,我們也叫它們 Web 容器。

HTTP 的本質

HTTP 協議是瀏覽器與服務器之間的數據傳送協議。作為應用層協議,HTTP 是基于 TCP/IP 協議來傳遞數據的(HTML 文件、圖片、查詢結果等),HTTP 協議不涉及數據包(Packet)傳輸,主要規定了客戶端和服務器之間的通信格式。

假如瀏覽器需要從遠程 HTTP 服務器獲取一個 HTML 文本,在這個過程中,瀏覽器實際上要做兩件事情。

  • 與服務器建立 Socket 連接。
  • 生成請求數據并通過 Socket 發送出去。

0

HTTP 請求響應實例

用戶在登陸頁面輸入用戶名和密碼,點擊登陸后,瀏覽器發出了這樣的 HTTP 請求:

0

HTTP 請求數據由三部分組成,分別是請求行、請求報頭、請求正文。當這個 HTTP 請求數據到達 Tomcat 后,Tomcat 會把 HTTP 請求數據字節流解析成一個 Request 對象,這個 Request 對象封裝了 HTTP 所有的請求信息。接著 Tomcat 把這個 Request 對象交給 Web 應用去處理,處理完后得到一個 Response 對象,Tomcat 會把這個 Response 對象轉成 HTTP 格式的響應數據并發送給瀏覽器。

0

HTTP 的響應也是由三部分組成,分別是狀態行、響應報頭、報文主體。同樣,我還以極客時間登陸請求的響應為例。

Cookie 和 Session

我們知道,HTTP 協議有個特點是無狀態,請求與請求之間是沒有關系的。這樣會出現一個很尷尬的問題:Web 應用不知道你是誰。因此 HTTP 協議需要一種技術讓請求與請求之間建立起聯系,并且服務器需要知道這個請求來自哪個用戶,于是 Cookie 技術出現了。

Cookie 是 HTTP 報文的一個請求頭,Web 應用可以將用戶的標識信息或者其他一些信息(用戶名等)存儲在 Cookie 中。用戶經過驗證之后,每次 HTTP 請求報文中都包含 Cookie,這樣服務器讀取這個 Cookie 請求頭就知道用戶是誰了。Cookie 本質上就是一份存儲在用戶本地的文件,里面包含了每次請求中都需要傳遞的信息。

由于 Cookie 以明文的方式存儲在本地,而 Cookie 中往往帶有用戶信息,這樣就造成了非常大的安全隱患。而 Session 的出現解決了這個問題,Session 可以理解為服務器端開辟的存儲空間,里面保存了用戶的狀態,用戶信息以 Session 的形式存儲在服務端。當用戶請求到來時,服務端可以把用戶的請求和用戶的 Session 對應起來。那么 Session 是怎么和請求對應起來的呢?答案是通過 Cookie,瀏覽器在 Cookie 中填充了一個 Session ID 之類的字段用來標識請求。

具體工作過程是這樣的:服務器在創建 Session 的同時,會為該 Session 生成唯一的 Session ID,當瀏覽器再次發送請求的時候,會將這個 Session ID 帶上,服務器接受到請求之后就會依據 Session ID 找到相應的 Session,找到 Session 后,就可以在 Session 中獲取或者添加內容了。而這些內容只會保存在服務器中,發到客戶端的只有 Session ID,這樣相對安全,也節省了網絡流量,因為不需要在 Cookie 中存儲大量用戶信息。

那么 Session 在何時何地創建呢?當然還是在服務器端程序運行的過程中創建的,不同語言實現的應用程序有不同的創建 Session 的方法。在 Java 中,是 Web 應用程序在調用 HttpServletRequest 的 getSession 方法時,由 Web 容器(比如 Tomcat)創建的。

Tomcat 的 Session 管理器提供了多種持久化方案來存儲 Session,通常會采用高性能的存儲方式,比如 Redis,并且通過集群部署的方式,防止單點故障,從而提升高可用。同時,Session 有過期時間,因此 Tomcat 會開啟后臺線程定期的輪詢,如果 Session 過期了就將 Session 失效。

Servlet規范

HTTP 服務器怎么知道要調用哪個 Java 類的哪個方法呢。最直接的做法是在 HTTP 服務器代碼里寫一大堆 if else 邏輯判斷:如果是 A 請求就調 X 類的 M1 方法,如果是 B 請求就調 Y 類的 M2 方法。但這樣做明顯有問題,因為 HTTP 服務器的代碼跟業務邏輯耦合在一起了,如果新加一個業務方法還要改 HTTP 服務器的代碼。

那該怎么解決這個問題呢?我們知道,面向接口編程是解決耦合問題的法寶,于是有一伙人就定義了一個接口,各種業務類都必須實現這個接口,這個接口就叫 Servlet 接口,有時我們也把實現了 Servlet 接口的業務類叫作 Servlet。

但是這里還有一個問題,對于特定的請求,HTTP 服務器如何知道由哪個 Servlet 來處理呢?Servlet 又是由誰來實例化呢?顯然 HTTP 服務器不適合做這個工作,否則又和業務類耦合了。

于是,還是那伙人又發明了 Servlet 容器,Servlet 容器用來加載和管理業務類。HTTP 服務器不直接跟業務類打交道,而是把請求交給 Servlet 容器去處理,Servlet 容器會將請求轉發到具體的 Servlet,如果這個 Servlet 還沒創建,就加載并實例化這個 Servlet,然后調用這個 Servlet 的接口方法。因此 Servlet 接口其實是 Servlet 容器跟具體業務類之間的接口。下面我們通過一張圖來加深理解。

0

Servlet 接口和 Servlet 容器這一整套規范叫作 Servlet 規范。Tomcat 和 Jetty 都按照 Servlet 規范的要求實現了 Servlet 容器,同時它們也具有 HTTP 服務器的功能。作為 Java 程序員,如果我們要實現新的業務功能,只需要實現一個 Servlet,并把它注冊到 Tomcat(Servlet 容器)中,剩下的事情就由 Tomcat 幫我們處理了。

Servlet 接口定義了下面五個方法:

public interface Servlet { void init(ServletConfig config) throws ServletException; ServletConfig getServletConfig(); void service(ServletRequest req, ServletResponse res)throws ServletException, IOException; String getServletInfo(); void destroy(); }

其中最重要是的 service 方法,具體業務類在這個方法里實現處理邏輯。這個方法有兩個參數:ServletRequest 和 ServletResponse。ServletRequest 用來封裝請求信息,ServletResponse 用來封裝響應信息,因此本質上這兩個類是對通信協議的封裝。

HTTP 協議中的請求和響應就是對應了 HttpServletRequest 和 HttpServletResponse 這兩個類。你可以通過 HttpServletRequest 來獲取所有請求相關的信息,包括請求路徑、Cookie、HTTP 頭、請求參數等。此外, 我們還可以通過 HttpServletRequest 來創建和獲取 Session。而 HttpServletResponse 是用來封裝 HTTP 響應的。

你可以看到接口中還有兩個跟生命周期有關的方法 init 和 destroy,這是一個比較貼心的設計,Servlet 容器在加載 Servlet 類的時候會調用 init 方法,在卸載的時候會調用 destroy 方法。我們可能會在 init 方法里初始化一些資源,并在 destroy 方法里釋放這些資源,比如 Spring MVC 中的 DispatcherServlet,就是在 init 方法里創建了自己的 Spring 容器。

你還會注意到 ServletConfig 這個類,ServletConfig 的作用就是封裝 Servlet 的初始化參數。你可以在web.xml給 Servlet 配置參數,并在程序里通過 getServletConfig 方法拿到這些參數。

我們知道,有接口一般就有抽象類,抽象類用來實現接口和封裝通用的邏輯,因此 Servlet 規范提供了 GenericServlet 抽象類,我們可以通過擴展它來實現 Servlet。雖然 Servlet 規范并不在乎通信協議是什么,但是大多數的 Servlet 都是在 HTTP 環境中處理的,因此 Servet 規范還提供了 HttpServlet 來繼承 GenericServlet,并且加入了 HTTP 特性。這樣我們通過繼承 HttpServlet 類來實現自己的 Servlet,只需要重寫兩個方法:doGet 和 doPost。

Servlet 容器

當客戶請求某個資源時,HTTP 服務器會用一個 ServletRequest 對象把客戶的請求信息封裝起來,然后調用 Servlet 容器的 service 方法,Servlet 容器拿到請求后,根據請求的 URL 和 Servlet 的映射關系,找到相應的 Servlet,如果 Servlet 還沒有被加載,就用反射機制創建這個 Servlet,并調用 Servlet 的 init 方法來完成初始化,接著調用 Servlet 的 service 方法來處理請求,把 ServletResponse 對象返回給 HTTP 服務器,HTTP 服務器會把響應發送給客戶端

0

Web 應用

Servlet 容器會實例化和調用 Servlet,那 Servlet 是怎么注冊到 Servlet 容器中的呢?一般來說,我們是以 Web 應用程序的方式來部署 Servlet 的,而根據 Servlet 規范,Web 應用程序有一定的目錄結構,在這個目錄下分別放置了 Servlet 的類文件、配置文件以及靜態資源,Servlet 容器通過讀取配置文件,就能找到并加載 Servlet。Web 應用的目錄結構大概是下面這樣的:

| - MyWebApp | - WEB-INF/web.xml -- 配置文件,用來配置Servlet等 | - WEB-INF/lib/ -- 存放Web應用所需各種JAR包 | - WEB-INF/classes/ -- 存放你的應用類,比如Servlet類 | - META-INF/ -- 目錄存放工程的一些信息

Servlet 規范里定義了 ServletContext 這個接口來對應一個 Web 應用。Web 應用部署好后,Servlet 容器在啟動時會加載 Web 應用,并為每個 Web 應用創建唯一的 ServletContext 對象。你可以把 ServletContext 看成是一個全局對象,一個 Web 應用可能有多個 Servlet,這些 Servlet 可以通過全局的 ServletContext 來共享數據,這些數據包括 Web 應用的初始化參數、Web 應用目錄下的文件資源等。由于 ServletContext 持有所有 Servlet 實例,你還可以通過它來實現 Servlet 請求的轉發。

擴展機制

引入了 Servlet 規范后,你不需要關心 Socket 網絡通信、不需要關心 HTTP 協議,也不需要關心你的業務類是如何被實例化和調用的,因為這些都被 Servlet 規范標準化了,你只要關心怎么實現的你的業務邏輯。這對于程序員來說是件好事,但也有不方便的一面。所謂規范就是說大家都要遵守,就會千篇一律,但是如果這個規范不能滿足你的業務的個性化需求,就有問題了,因此設計一個規范或者一個中間件,要充分考慮到可擴展性。Servlet 規范提供了兩種擴展機制:Filter 和 Listener

Filter 是過濾器,這個接口允許你對請求和響應做一些統一的定制化處理,比如你可以根據請求的頻率來限制訪問,或者根據國家地區的不同來修改響應內容。過濾器的工作原理是這樣的:Web 應用部署完成后,Servlet 容器需要實例化 Filter 并把 Filter 鏈接成一個 FilterChain。當請求進來時,獲取第一個 Filter 并調用 doFilter 方法,doFilter 方法負責調用這個 FilterChain 中的下一個 Filter。

Listener 是監聽器,這是另一種擴展機制。當 Web 應用在 Servlet 容器中運行時,Servlet 容器內部會不斷的發生各種事件,如 Web 應用的啟動和停止、用戶請求到達等。 Servlet 容器提供了一些默認的監聽器來監聽這些事件,當事件發生時,Servlet 容器會負責調用監聽器的方法。當然,你可以定義自己的監聽器去監聽你感興趣的事件,將監聽器配置在web.xml中。比如 Spring 就實現了自己的監聽器,來監聽 ServletContext 的啟動事件,目的是當 Servlet 容器啟動時,創建并初始化全局的 Spring 容器。

Tomcat下載地址:https://tomcat.apache.org/download-80.cgi

0

/bin:存放 Windows 或 Linux 平臺上啟動和關閉 Tomcat 的腳本文件。 /conf:存放 Tomcat 的各種全局配置文件,其中最重要的是server.xml。 /lib:存放 Tomcat 以及所有 Web 應用都可以訪問的 JAR 文件。 /logs:存放 Tomcat 執行時產生的日志文件。 /work:存放 JSP 編譯后產生的 Class 文件。 /webapps:Tomcat 的 Web 應用目錄,默認情況下把 Web 應用放在這個目錄下。

打開 Tomcat 的日志目錄,也就是 Tomcat 安裝目錄下的 logs 目錄。Tomcat 的日志信息分為兩類 :一是運行日志,它主要記錄運行過程中的一些信息,尤其是一些異常錯誤日志信息 ;二是訪問日志,它記錄訪問的時間、IP 地址、訪問的路徑等相關信息。

  • catalina.***.log 主要是記錄 Tomcat 啟動過程的信息,在這個文件可以看到啟動的 JVM 參數以及操作系統等日志信息。
  • catalina.out是 Tomcat 的標準輸出(stdout)和標準錯誤(stderr),這是在 Tomcat 的啟動腳本里指定的,如果沒有修改的話 stdout 和 stderr 會重定向到這里。所以在這個文件里可以看到我們在MyServlet.java程序里打印出來的信息
  • localhost.**.log主要記錄 Web 應用在初始化過程中遇到的未處理的異常,會被 Tomcat 捕獲而輸出這個日志文件。
  • localhost_access_log.**.txt存放訪問 Tomcat 的請求日志,包括 IP 地址以及請求的路徑、時間、請求協議以及狀態碼等信息。
  • manager.***.log/host-manager.***.log存放 Tomcat 自帶的 Manager 項目的日志信息。

概要:

  1. Tomcat各核心組件認知
  2. server.xml 配置詳解

一、Tomcat各組件認知

知識點:

  1. Tomcat架構說明
  2. Tomcat組件及關系詳情介紹
  3. Tomcat啟動參數說明
  4. Tomcat架構說明

Tomcat是一個基于JAVA的WEB容器,其實現了JAVA EE中的 Servlet 與 jsp 規范,與Nginx apache 服務器不同在于一般用于動態請求處理。在架構設計上采用面向組件的方式設計。即整體功能是通過組件的方式拼裝完成。另外每個組件都可以被替換以保證靈活性。

0

2.Tomcat 各組件及關系

Server 和 Service
Connector 連接器
HTTP 1.1
SSL https
AJP( Apache JServ Protocol) apache 私有協議,用于apache 反向代理Tomcat
Container 
Engine 引擎 catalina
Host 虛擬機 基于域名 分發請求
Context 隔離各個WEB應用 每個Context的 ClassLoader都是獨立
Component 
Manager (管理器)
logger (日志管理)
loader (載入器)
pipeline (管道)
valve (管道中的閥)

0

二、Tomcat server.xml 配置詳解


server

root元素:server 的頂級配置 主要屬性: port:執行關閉命令的端口號 shutdown:關閉命令

演示shutdown的用法 #基于telent 執行SHUTDOWN 命令即可關閉(必須大寫) telnet 127.0.0.1 8005 SHUTDOWN

service

服務:將多個connector 與一個Engine組合成一個服務,可以配置多個服務。

Connector

連接器:用于接收 指定協議下的連接 并指定給唯一的Engine 進行處理。 主要屬性:

  • protocol 監聽的協議,默認是http/1.1
  • port 指定服務器端要創建的端口號
  • minSpareThreads服務器啟動時創建的處理請求的線程數
  • maxThreads 最大可以創建的處理請求的線程數
  • enableLookups 如果為true,則可以通過調用request.getRemoteHost()進行DNS查詢來得到遠程客戶端的實際主機名,若為false則不進行DNS查詢,而是返回其ip地址
  • redirectPort 指定服務器正在處理http請求時收到了一個SSL傳輸請求后重定向的端口號
  • acceptCount 指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求將不予處理
  • connectionTimeout 指定超時的時間數(以毫秒為單位)
  • SSLEnabled 是否開啟 sll 驗證,在Https 訪問時需要開啟。生成證書: keytool -genkey -v -alias testKey -keyalg RSA -validity 3650 -keystore D:\test.keystore
  • [ ] 演示配置多個Connector

Engine

引擎:用于處理連接的執行器,默認的引擎是catalina。一個service 中只能配置一個Engine。 主要屬性:name 引擎名稱 defaultHost 默認host

Host

虛擬機:基于域名匹配至指定虛擬機。類似于nginx 當中的server,默認的虛擬機是localhost. 主要屬性:

演示配置多個Host

Context

應用上下文:一個host 下可以配置多個Context ,每個Context 都有其獨立的classPath。相互隔離,以免造成ClassPath 沖突。 主要屬性:

演示配置多個Context

Valve 閥門:可以理解成

的過濾器,具體配置要基于具體的Valve 接口的子類。以下即為一個訪問日志的Valve

三、Tomcat 部署腳本編寫

Tomcat啟動參數說明

我們平時啟動Tomcat過程是怎么樣的?

  1. 復制WAR包至Tomcat webapp 目錄。
  2. 執行starut.bat 腳本啟動。
  3. 啟動過程中war 包會被自動解壓裝載。

但是我們在Eclipse 或idea 中啟動WEB項目的時候 也是把War包復雜至webapps 目錄解壓嗎?顯然不是,其真正做法是在Tomcat程序文件之外創建了一個部署目錄,在一般生產環境中也是這么做的 即:Tomcat 程序目錄和部署目錄分開 。 我們只需要在啟動時指定CATALINA_HOME 與 CATALINA_BASE 參數即可實現。

| 啟動參數 | 描述說明 | |:----|:----| | JAVA_OPTS | jvm 啟動參數 , 設置內存 編碼等 -Xms100m -Xmx200m -Dfile.encoding=UTF-8 | | JAVA_HOME | 指定jdk 目錄,如果未設置從java 環境變量當中去找。 | | CATALINA_HOME | Tomcat 程序根目錄 | | CATALINA_BASE | 應用部署目錄,默認為$CATALINA_HOME | | CATALINA_OUT | 應用日志輸出目錄:默認$CATALINA_BASE/log | | CATALINA_TMPDIR | 應用臨時目錄:默認:$CATALINA_BASE/temp |

可以編寫一個腳本 來實現自定義配置:

ln -s /home/wukong/apache-tomcat-8.5.56 apache-tomcat

更新 啟動 腳本

#!/bin/bash  export JAVA_OPTS="-Xms100m -Xmx200m" export CATALINA_HOME=/home/wukong/apache-tomcat export CATALINA_BASE="`pwd`" case $1 in         start)         $CATALINA_HOME/bin/catalina.sh start                 echo start success!!         ;;         stop)                 $CATALINA_HOME/bin/catalina.sh stop                 echo stop success!!         ;;         restart)         $CATALINA_HOME/bin/catalina.sh stop                 echo stop success!!                 sleep 3         $CATALINA_HOME/bin/catalina.sh start         echo start success!!         ;;         version)         $CATALINA_HOME/bin/catalina.sh version         ;;         configtest)         $CATALINA_HOME/bin/catalina.sh configtest         ;;         esac exit 0

docker 啟動tomcat

docker run -id --name=test_tomcat -e JAVA_OPTS='-Xmx128m' -p 8888:8080 -v /usr/local/tuling-project/tomcat-test/webapps:/usr/local/tomcat/webapps -v /usr/local/tuling-project/tomcat-test/logs:/usr/local/tomcat/logs -v /usr/local/tuling-project/tomcat-test/conf:/usr/local/tomcat/conf --privileged=true tomcat:8

源碼構建

下載地址:https://tomcat.apache.org/download-80.cgi

配置

1.解壓源碼 apache-tomcat-8.5.57-src

2.apache-tomcat-8.5.57-src目錄下添加pom文件

4.0.0 org.apache.tomcat Tomcat8.0 Tomcat8.0 8.0 Tomcat8.0 java test java test org.apache.maven.plugins maven-compiler-plugin 2.3 UTF-8 1.8 1.8 junit junit 4.12 test org.easymock easymock 3.4 ant ant 1.7.0 wsdl4j wsdl4j 1.6.2 javax.xml jaxrpc 1.1 org.eclipse.jdt.core.compiler ecj 4.5.1

3.在apache-tomcat-8.5.57-src 同級目錄新建 catalina-home并保證目錄下面文件如下

0

注意: 上面文件夾apache-tomcat-8.5.57-src里面有的,就剪切過來,沒有的就新建一個, bin conf webapps 應該是從apache-tomcat-8.5.57-src剪切過來的

4.idea引入項目

File->Open 選擇解壓的C:\Users\wukong\Downloads\apache-tomcat-8.5.57-src\apache-tomcat-8.5.57-src

配置啟動

MainClass: org.apache.catalina.startup.BootstrapVmOptions: -Dcatalina.home=C:\Users\wukong\Downloads\apache-tomcat-8.5.57-src\apache-tomcat-8.5.57-src\catalina-home

0

啟動報錯

TestCookieFilter 報錯找不到這個類CookieFilter

解決方法:

1. 刪除:TestCookieFilter

啟動后,訪問localhost:8080 報錯 org.apache.jasper.JasperException: java.lang.NullPointerException

解決方案:

org.apache.catalina.startup.Bootstrap 添加代碼塊

{ JasperInitializer initializer =new JasperInitializer(); }

以上Tomcat核心組件及應用架構詳解就是小編為大家收集整理的全部內容了,希望對大家有所幫助。如果您喜歡這篇文章,可以收藏或分享給您的小伙伴們吧!歡迎持續關注我們的后續更新。

本文最后更新于 2022-12-3 14:48,某些文章具有時效性,若有錯誤或已失效,請在網站留言或聯系站長:17tui@17tui.com
·END·
站長網微信號:w17tui,關注站長、創業、關注互聯網人 - 互聯網創業者營銷服務中心

免責聲明:本站部分文章和圖片均來自用戶投稿和網絡收集,旨在傳播知識,文章和圖片版權歸原作者及原出處所有,僅供學習與參考,請勿用于商業用途,如果損害了您的權利,請聯系我們及時修正或刪除。謝謝!

17站長網微信二維碼

始終以前瞻性的眼光聚焦站長、創業、互聯網等領域,為您提供最新最全的互聯網資訊,幫助站長轉型升級,為互聯網創業者提供更加優質的創業信息和品牌營銷服務,與站長一起進步!讓互聯網創業者不再孤獨!

掃一掃,關注站長網微信

大家都在看

  • 當我們在共享網絡訪問的時候,可能會遇到提示指定的網絡名不再可用的問題,這可能是由于我們的共享網絡出現了錯誤,也可能是被共享的對象所拒絕了。指定的網絡名 ......

    故障排除 2023-03-10
  • 1、首先進入到“百度”軟件中, 2、然后在其中輸入“百度識圖”, 3、之后點擊圖中的“開始使用”按鈕, 4、緊接著點擊右下角的“相冊”功能, 5、在相冊下 ......

    軟件教程 2023-02-17
  • 一、軟件沖突1、首先確認是否是應用程序沖突導致的。2、查看是否只有特定幾個游戲或應用會導致該問題。3、如果是應用沖突,那么只要卸載這些app就可以解決了。二 ......

    軟件教程 2022-12-27
  •   文/曹楊  原標題:誰還看電視?  爸爸戴一副老花鏡,媽媽戴一副近視鏡,一人坐在沙發,一人躺在床上,各自刷著自己關注的博主更新的短視頻。電視也許開著,但只是背景。  這樣的畫面,幾乎成了洛奇家的常 ...

    站長 2020-12-09
  • 圖片來源于簡書  文/郭開森 楊帆  陸玖財經準備開新欄目了,每周一創始人郭開森和楊帆合體郭德帆,對行業進行一些觀察和評論,第一篇我們仍是打算寫社區團購,這是當下最火的話題。  來過陸玖財經做客的朋友們...

    熱議 2020-12-07
  • 一、N100對比intel i3 1、N100的跑分達到了147210分,這個數據可以達到i3的七代級別。 2、在跑分上也是超越了大部分的I3七代CPU,不過比I3八代要弱勢一些。 3 ......

    硬件知識 2023-04-26
  • 電腦端:1、大家可以點擊右邊鏈接進入網頁版的百度網盤,進入之后點擊“去登錄”。https://pan.baidu.com/2、之后正確的輸入賬號密碼進行登錄就好啦。手機端:1 ......

    軟件教程 2022-12-27
  • 在填寫一些項目申請書中,總是免不了要選擇一些數字,但是在方框中如何插入數字,該怎么辦呢?那么下面就由學習啦小編給大家分享下word在方框里輸入數字的技巧, ......

    Word教程 2023-04-27
  • 8月15日消息 上周,有媒體報道前身為百度圖片的“榴蓮”APP含有大量不雅視頻內容被用戶舉報。對此,百度圖片官方進行了回應,百度圖片表示已經對報道中所涉及的“生吃旋風哥”等爭議內容進行了下線處理。 此外,百度...

    站長 2016-08-15
  • 迅雷前綴是什么 答:迅雷前綴是(magnet:?xt=urn:btih:)括號里的就是了。 我們只要在這段文字之后輸入后續的內容,就可以創建下載鏈接了。 1、磁力鏈接不基于文 ......

    軟件教程 2023-06-03
  • WPS Office手機版怎么加橫線?很多用戶還不知道WPS Office手機版怎么加橫線,WPS Office手機版怎么加橫線,WPS Office手機版怎么打橫線,WPS Office手機版怎么弄 ......

    WPS教程 2023-03-31
  • 一、內容特權。 1、半價點播。 許多站內視頻都需要付費觀看,而大會員用戶可以直接半價享受; 購買成功后的48h內無限次觀看。有部分的內容是只限在中國大陸內觀 ......

    軟件教程 2023-05-05
  • 藍奏云怎么打開別人分享的鏈接1、當我們獲得了鏈接以后,首先需要把鏈接粘貼進瀏覽器里回車進入。2、進入以后就會轉到這樣一個頁面,如果有密碼的話我們就輸入給 ......

    軟件教程 2023-03-16
  • 1、首先打開小米運動的“實驗室功能”。 2、接著點擊“門卡模擬”。 3、然后點擊“我知道了”。 4、最后貼近就可以刷卡成功了。...

    硬件知識 2023-05-17
  • 1、打開手機輕顏相機app,點擊“我的”,點擊“設置”,2、點擊“幫助與反饋”,3、點擊右下角“在線咨詢”即可聯系客服,詢問自己的問題啦!...

    軟件教程 2023-03-16
  • 答:華為P系列: 華為p40,華為p40plus,華為p50,華為p50e,華為p60 華為mate系列: 華為mate40,華為mate50,華為mate50e,華為mate60 華為nova系列: 華為n ......

    鴻蒙系統 2023-04-24
  • 近期有用戶反映,電腦在更新Windows 11 Insider Preview 25252.1000后,出現了應用和已壓縮的文件點擊毫無反應,拖拽都不行,只能從開始菜單打開的情況,這是怎 ......

    windows11 2022-12-13
  • 可見單元格就是不包括隱藏或者篩選篩選后隱藏起來的單元格區域。方法:篩選或隱藏數據,復制需要粘貼的值,在目標單元格區域左上角的第一個單元格處右擊,選擇【 ......

    WPS教程 2022-12-10
  • 答:驍龍8+更好。 驍龍7+gen2實際上就是驍龍8+的低配版本。 在一些其他的核心架構方面都是保持一致的,比如說CPU的架構、GPU的架構等等。 驍龍7+和驍龍8+具體 ......

    硬件知識 2023-04-06
  • 1、先打開機頂盒進入主界面,并且使用遙控器打開設置。 2、然后選擇“賬號與安全”,并且進入。 3、最后往下面翻就可以看到“ADB調試”的選項,直接開啟就行了 ......

    軟件教程 2023-06-01
  • 答:在3DMark壓力測試當中,顯卡需要超高97%才能夠算合格,證明顯卡的穩定性是過關的。 1、一般的默認情況下在2500~3000分就算很正常的了。 2、分數越高說明顯卡 ......

    軟件教程 2023-06-01
  • 文件被win10系統誤報病毒自動刪除了如何進行恢復?有用戶下載了某些破解軟件卻被Win10系統誤認為是病毒文件而自動刪除,當然系統自帶殺毒軟件其實挺不錯的,就是有時候會誤報,大家遇到這種情況的時候就希望把誤刪的...

    windows10 2022-11-20
  • win11系統如何釋放掉系統默認保留的存儲空間?一般情況下,Windows會保留一些存儲空間,以便設備獲得良好性能和成功更新。但是當出現系統盤儲存空間不足時,我們會將幾個G的保留空間釋放出來,以解燃眉之急。本期教...

    windows11 2022-11-17
  •   文/黎明  一場針對中國互聯網巨頭的反壟斷風暴正在醞釀,而且這次動真格了。  11月10日,國家市場監管總局發布《關于平臺經濟領域的反壟斷指南(征求意見稿)》,要加大對互聯網巨頭涉嫌壟斷的調查和監管。 ...

    熱議 2020-11-14
  • 我們經常用WPS的時候,如果需要輸入波浪號~,會發現鍵盤上的波浪號輸入之后在最上面,但是為了美觀,我們希望波浪號顯示在中間。這里總結了三個方法分享給大家 ......

    WPS教程 2023-02-18
  • 答:不一樣。 字類不同、數量不同、使用也不同。 1、字類不同 仿宋gb2312只包含符合GB2312標準的簡體字,仿宋包含所有的簡體字,包括特殊的繁體字。 2、版本不 ......

    軟件教程 2023-02-17
  • 1、下載番茄作家助手,登錄你自己的賬號進入。2、在首頁這里可以看到你創建的書籍,或者新建一個小說,點擊這個黃色的編輯圖標。3、進入以后,再點擊“創建章節 ......

    軟件教程 2023-03-16
  • 答:中高端水平 i513500hx在處理器當中是處于一個中高端的水平。 i513500hx是第十一代酷睿處理器系列的一員,基礎頻率為2.4GHz,表現十分的不錯。 i513500hx介 ......

    硬件知識 2023-04-27
  • 羅技g304dpi燈顏色代表什么:1、藍色:這種情況是正常工作的顯示,如果說是常亮或者閃爍,那都沒有問題這是在正常工作呢。2、紅色:如果說是紅燈閃爍的話那就是 ......

    硬件知識 2023-03-16
  • 打開軟件,直接填寫就可以。 1、下載安裝easyconnect軟件, 2、打開easyconnect應用,在如圖所示的“服務器地址”一欄輸入如圖所示網址,點擊“連接”, 3、等 ......

    軟件教程 2023-04-03

熱門排行

    最近更新

      返回頂部
      亚洲国产精品人久久,亚洲va国产日韩欧美精品色婷婷,久久久久88色偷偷,免费人成黄页在线观看国际
      一区二区三区不卡视频在线观看| 国产日产精品1区| 亚洲欧美欧美一区二区三区| 成人av手机在线观看| 久久精品一区蜜桃臀影院| 久草精品在线观看| 精品久久一区二区| 国产精品一区二区黑丝| 国产精品另类一区| 日本久久电影网| 天天综合网 天天综合色| 欧美一三区三区四区免费在线看 | 在线播放亚洲一区| 麻豆91小视频| 一区在线播放视频| 欧美日韩国产综合一区二区三区| 日韩av午夜在线观看| 国产午夜精品理论片a级大结局| caoporn国产精品| 婷婷成人综合网| 国产欧美日韩麻豆91| 色悠悠久久综合| 精品一区二区三区视频| 综合网在线视频| 制服丝袜国产精品| av成人免费在线观看| 日本特黄久久久高潮| 国产精品日日摸夜夜摸av| 欧美午夜精品免费| 粉嫩嫩av羞羞动漫久久久| 日韩影视精彩在线| 亚洲三级在线观看| 久久久亚洲精品一区二区三区| 色综合久久久久久久久| 国产一区二区三区电影在线观看| 亚洲精品国产第一综合99久久| 2020国产精品| 欧美日本乱大交xxxxx| 99久久国产综合精品色伊| 另类欧美日韩国产在线| 亚洲综合男人的天堂| 国产精品剧情在线亚洲| www久久久久| 日韩视频一区在线观看| 在线视频国内自拍亚洲视频| 成人深夜在线观看| 国内精品国产成人| 免费在线看一区| 午夜影视日本亚洲欧洲精品| 亚洲老司机在线| 亚洲天堂中文字幕| 中文字幕一区二区三区在线不卡| 久久久久国产免费免费 | 亚洲午夜精品一区二区三区他趣| 国产精品乱人伦一区二区| 久久久久九九视频| 欧美国产成人在线| 亚洲国产高清在线观看视频| 亚洲国产激情av| 综合久久给合久久狠狠狠97色| 国产精品毛片无遮挡高清| 国产女人aaa级久久久级| 国产目拍亚洲精品99久久精品 | 久久精品国产一区二区三| 偷拍与自拍一区| 日韩成人一区二区| 九一九一国产精品| 国产精品一区二区果冻传媒| 丁香五精品蜜臀久久久久99网站| 国产乱子轮精品视频| 懂色一区二区三区免费观看 | 精品国产区一区| 国产亚洲精品超碰| 久久综合视频网| 国产精品久久毛片| 亚洲人成精品久久久久久| 亚洲精品菠萝久久久久久久| 一区二区三区.www| 美女视频黄免费的久久| 粉嫩av一区二区三区| 欧美午夜精品一区| 26uuu国产一区二区三区| 国产精品久久久久久久久快鸭 | 国产91综合网| 92精品国产成人观看免费 | 中文字幕欧美国产| 亚洲一级二级在线| 国产美女在线精品| 91久久免费观看| 精品欧美乱码久久久久久1区2区| 中文在线一区二区| 图片区小说区国产精品视频| 成人爽a毛片一区二区免费| 欧美亚洲日本一区| 欧美经典一区二区三区| 亚洲不卡一区二区三区| 国产精品一线二线三线| 欧洲av一区二区嗯嗯嗯啊| 日韩一区二区在线观看| 成人欧美一区二区三区1314| 久久精品国产精品亚洲精品| 99国产精品99久久久久久| 精品久久久久久久久久久久久久久| 中文字幕亚洲精品在线观看| 另类小说视频一区二区| gogo大胆日本视频一区| 精品动漫一区二区三区在线观看| 一区二区三区在线观看国产| 国产一区二区美女诱惑| 欧美乱妇23p| 亚洲黄色小视频| 99久久婷婷国产综合精品电影| 日韩免费观看高清完整版| 午夜精彩视频在线观看不卡| 99久久伊人网影院| 欧美韩日一区二区三区四区| 精品亚洲免费视频| 日韩午夜激情视频| 日韩电影在线免费看| 欧美私模裸体表演在线观看| 亚洲乱码日产精品bd| youjizz久久| 国产精品国产成人国产三级| 国产99精品国产| 欧美激情一区不卡| 国产成人精品亚洲日本在线桃色 | 亚洲一区二区三区在线看| av动漫一区二区| 国产精品乱人伦一区二区| 不卡的av网站| 国产精品电影一区二区| 久久爱另类一区二区小说| 欧美一区二区视频在线观看2020| 图片区小说区区亚洲影院| 91精品在线观看入口| 日本美女一区二区三区视频| 日韩欧美一二区| 国产精品18久久久久| 国产农村妇女毛片精品久久麻豆 | 精品一区二区三区免费观看| 日韩亚洲电影在线| 国产原创一区二区三区| 国产精品视频免费| 91猫先生在线| 亚洲精品一卡二卡| 91片黄在线观看| 中文字幕一区在线观看视频| 99国产精品久久| 丝袜a∨在线一区二区三区不卡| 日韩一级二级三级精品视频| 国产乱色国产精品免费视频| 亚洲视频一区在线| 欧美日产在线观看| 精品在线视频一区| 国产精品久久久久久久裸模| 欧美日韩一区二区在线视频| 麻豆国产欧美一区二区三区| 中文字幕精品三区| 欧美少妇一区二区| 国产a级毛片一区| 亚洲国产精品欧美一二99| 久久夜色精品一区| 欧美自拍丝袜亚洲| 免费精品视频在线| 国产精品久线在线观看| 欧美成人一区二区三区片免费| eeuss鲁片一区二区三区| 蜜桃精品视频在线| 亚洲人成网站影音先锋播放| 日韩免费性生活视频播放| 91麻豆国产自产在线观看| 国产一区二区三区精品欧美日韩一区二区三区| 国产精品成人免费| 精品免费国产一区二区三区四区| 一本大道久久a久久综合婷婷| 精品一区二区在线观看| 一卡二卡三卡日韩欧美| 国产三级精品在线| 精品三级在线看| 欧美一区二区三区视频免费 | 色乱码一区二区三区88| 韩国成人福利片在线播放| 午夜视频在线观看一区| 伊人性伊人情综合网| 国产精品久久久久一区二区三区共| 日韩欧美高清在线| 欧美精品第1页| 欧美午夜影院一区| 99精品一区二区| 国产盗摄视频一区二区三区| 蜜臀av国产精品久久久久| 亚洲一区二区五区| 一区二区三区丝袜| 综合久久国产九一剧情麻豆| 国产精品久久久久影视| 久久免费的精品国产v∧| 精品va天堂亚洲国产| 久久综合狠狠综合| 国产校园另类小说区| 国产精品素人视频|