日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

netty实现高性能文件服务器,通用文件服务组件(Netty实现版本)

發布時間:2023/12/9 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 netty实现高性能文件服务器,通用文件服务组件(Netty实现版本) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文所述文件服務組件在筆者此前一篇文章中已有闡述(基于netty的文件上傳下載組件),不過本文將基于之前這個實現再次進行升級改造,利用基于注解的方式進行自動裝配。

1. 簡介

1.1 Netty簡介

Netty是一個異步事件驅動的網絡應用程序框架,用于快速開發可維護的高性能協議服務器和客戶端。關于其詳細的介紹可以參考Netty官方網站。

Netty is a NIO client server framework which enables quick and easy development of network applications such as protocol servers and clients. It greatly simplifies and streamlines network programming such as TCP and UDP socket server.

Netty主要特點:

Unified API for various transport types - blocking and non-blocking socket(統一API)

Based on a flexible and extensible event model which allows clear separation of concerns(事件模型)

Highly customizable thread model - single thread, one or more thread pools such as SEDA(線程模型)

True connectionless datagram socket support (since 3.1)(無連接數據報文Socket支持)

1.2 組件功能介紹

該組件基于netty3.6.3實現,具有如下功能:文件上傳,文件替換,文件刪除,如果是圖片的話,還可以生成縮略圖等功能。使用簡單,只需要引入commons-doc-client-netty,即可以實現文件的以上操作。

本組件分為三個module,分別為:

commons-doc-server-netty:Netty實現文件服務組件的服務端

commons-doc-common:Netty文件服務組件公共組件

commons-doc-client-netty:Netty文件服務組件的客戶端

2. 服務端

2.1 功能簡介

服務端組件實現以下功能:文件上傳,文件替換,文件刪除,如果是圖片的話,還可以生成縮略圖等功能。代碼結構如下圖所示,

所有的文件服務都是基于接口DocServerProcessor進行的,主要有以下幾個實現類:

UploadDocServerHandler實現文件上傳服務

ReplaceDocServerHandler實現文件替換服務

DeleteDocServerHandler實現文件刪除服務

CreateThumbPictureServerHandler實現創建圖片縮略圖服務

2.2 實現步驟

具體實現步驟以文件上傳為例。

首先 org.fortune.doc.server.support.DocServerHandler類會持續監聽客戶端的請求,如果是文件處理動作,則會進入messageReceived方法進行相應的處理邏輯。該類定義了以下成員變量:

//http請求

private HttpRequest request;

//是否需要斷點續傳作業

private boolean readingChunks;

//接收到的文件內容

private final StringBuffer responseContent = new StringBuffer();

//解析收到的文件

private static final HttpDataFactory factory = new DefaultHttpDataFactory(DefaultHttpDataFactory.MINSIZE); //16384L

//post請求的解碼類,它負責把字節解碼成Http請求。

private HttpPostRequestDecoder decoder;

//請求參數

private RequestParam requestParams = new RequestParam();

該方法實現中,如果文件大小小于chunked的最小值,則直接進行文件上傳操作。否則,需要進行分塊處理。然后進行文件上傳操作。

文件大小小于1k的操作:

if (request.isChunked()) { //說明還沒有請求完成,繼續

this.readingChunks = true;

LOGGER.info("文件分塊操作....");

} else {

LOGGER.info("文件大小小于1KB,文件接收完成,直接進行相應的文件處理操作....");

//請求完成,則接收請求參數,進行初始化請求參數

RequestParamParser.parseParams(this.decoder, this.requestParams);

//根據請求參數進行相應的文件操作

LOGGER.info("文件處理開始....requestParams參數解析:{}",requestParams);

String result = DocServerHandlerFactory.process(this.requestParams);

LOGGER.info("文件處理結束....FileServerHandlerFactory處理結果:{}",result);

this.responseContent.append(result);

//給客戶端響應信息

writeResponse(e.getChannel());

e.getFuture().addListener(ChannelFutureListener.CLOSE);

}

需要分塊處理操作:

HttpChunk chunk = (HttpChunk) e.getMessage();

try {

//chunk.getContent().capacity();

LOGGER.info("文件分塊操作....文件大小:{} bytes",chunk.getContent().capacity());

this.decoder.offer(chunk);

} catch (HttpPostRequestDecoder.ErrorDataDecoderException e1) {

e1.printStackTrace();

this.responseContent.append(e1.getMessage());

writeResponse(e.getChannel());

Channels.close(e.getChannel());

return;

}

if (chunk.isLast()) {

//文件末尾

this.readingChunks = false;

LOGGER.info("到達文件內容的末尾,進行相應的文件處理操作....start");

RequestParamParser.parseParams(this.decoder, this.requestParams);

LOGGER.info("文件處理開始....requestParams參數解析:{}",requestParams);

String result = DocServerHandlerFactory.process(this.requestParams);

LOGGER.info("文件處理結束....FileServerHandlerFactory處理結果:{}",result);

this.responseContent.append(result);

//給客戶端響應信息

writeResponse(e.getChannel());

e.getFuture().addListener(ChannelFutureListener.CLOSE);

LOGGER.info("到達文件內容的末尾,進行相應的文件處理操作....end");

}

以上操作主要有兩個注意點:

請求參數的解析工作(根據HttpDataType進行相應參數的賦值操作)

根據解析的參數進行相應的文件處理操作(根據文件操作類型,選擇相應的處理句柄進行文件處理)

3. 客戶端

3.1 功能簡介

客戶端組件主要提供對外訪問服務端組件的接口,提供以下接口:文件上傳,文件替換,文件刪除,如果是圖片的話,還可以生成縮略圖等功能。代碼結構如下:

org.fortune.doc.client.DocClient類是對外提供接口的工具類,具有以下主要方法:

uploadFile 文件上傳,對應文件處理句柄類為:org.fortune.doc.client.handler.UploadDocClientHandler

deleteFile 刪除服務端文件,對應文件處理句柄類為:org.fortune.doc.client.handler.DeleteDocClientHandler

replaceFile 替換服務端文件,對應文件處理句柄類為:org.fortune.doc.client.handler.ReplaceDocClientHandler

createThumbPicture 生成縮略圖,對應文件處理句柄類為:org.fortune.doc.client.handler.CreateThumbPictureClientHandler

3.2 實現步驟

實現步驟以上傳文件為例,其他類似實現。直接上代碼:

/**

* 文件上傳

* @param file 需要上傳的文件

* @param fileName 文件名稱

* @param thumbMark 是否需要生成縮略圖

* @return

* @author:landyChris

*/

public static String uploadFile(File file, String fileName,

boolean thumbMark) {

DocClientPipelineFactory clientPipelineFactory = new DocClientPipelineFactory();

//輔助類。用于幫助我們創建NETTY服務

ClientBootstrap bootstrap = createClientBootstrap(clientPipelineFactory);

String strThumbMark = Constants.THUMB_MARK_NO;

if (thumbMark) {

strThumbMark = Constants.THUMB_MARK_YES;

}

//具體處理上傳文件邏輯

uploadFile(bootstrap, DocClientContainer.getInstance().getHost(),

DocClientContainer.getInstance().getPort(), file, fileName, strThumbMark,

DocClientContainer.getInstance().getUserName(),

DocClientContainer.getInstance().getPassword());

Result result = clientPipelineFactory.getResult();

if ((result != null) && (result.isSuccess())) {

return result.getFilePath();

}

return null;

}

具有三個參數,前面幾行代碼都是很一些netty的初始化工作,具體看一個私有方法uploadFile,如下代碼所示:

private static void uploadFile(ClientBootstrap bootstrap, String host,

int port, File file, String fileName, String thumbMark,

String userName, String pwd) {

//1.構建uri對象

URI uri = getUri(host, port);

//2.連接netty服務端

ChannelFuture future = bootstrap.connect(new InetSocketAddress(host,

port));

//3.異步獲取Channel對象

Channel channel = future.awaitUninterruptibly().getChannel();

if (!future.isSuccess()) {

future.getCause().printStackTrace();

bootstrap.releaseExternalResources();

return;

}

//4.初始化文件上傳句柄對象

AbstractDocClientHandler handler = new UploadDocClientHandler(host, uri,

file, fileName, thumbMark, userName, pwd);

//5.獲取Request對象

HttpRequest request = handler.getRequest();

//6.獲取Http數據處理工廠

HttpDataFactory factory = getHttpDataFactory();

//7.進行數據的包裝處理,主要是進行上傳文件所需要的參數的設置,此時調用的句柄是具體的UploadFileClientHandler對象

HttpPostRequestEncoder bodyRequestEncoder = handler

.wrapRequestData(factory);

//8.把request寫到管道中,傳輸給服務端

channel.write(request);

//9.做一些關閉資源的動作

if (bodyRequestEncoder.isChunked()) {

channel.write(bodyRequestEncoder).awaitUninterruptibly();

}

bodyRequestEncoder.cleanFiles();

channel.getCloseFuture().awaitUninterruptibly();

bootstrap.releaseExternalResources();

factory.cleanAllHttpDatas();

}

主要有以下實現步驟:

構建uri對象

連接netty服務端

異步獲取Channel對象

初始化文件上傳句柄對象

獲取Request對象

獲取Http數據處理工廠

進行數據的包裝處理,主要是進行上傳文件所需要的參數的設置,此時調用的句柄是具體的UploadFileClientHandler對象

把request寫到管道中,傳輸給服務端

做一些關閉資源的動作

具體細節實現請參考github上的代碼。如果各位讀者喜歡的話,可以加個star哈。

4. 操作指引

該文件服務組件的使用需要分為兩個部分,一個是服務端配置與啟動,一個是客戶端的配置與啟動。

4.1 服務端配置與啟動

4.1.1 配置

服務端的配置采用yml文件的配置,更加的簡潔明了,主要的注意點是文件存放位置的配置,在開發過程中,可以有兩種方式配置:

Idea自啟動方式:如果采用此種方式則需要把rootPath配置到工程路徑下(target目錄),如下所示:

# 在idea中執行的話,需要配置target目錄下的打包文件

rootPath: C:\03_code\idea_workspace\fortune-commons\commons-doc-server-netty\target\commons-doc-server-netty\ #上傳文件的根目錄,實際工作環境按照實際情況更改即可

打包后在tomcat獨立啟動方式

# 也可以單獨把打包后的war包拷貝到tomcat webapp目錄下直接運行也可以

rootPath: C:\05_webserver\apache-tomcat-8.5.42\webapps\doc-server #上傳文件的根目錄,實際工作環境按照實際情況更改即可

4.1.2 啟動

本文采用的是idea自啟動方式,則需要配置一下tomcat路徑,以及引入相應的module即可,如下圖所示:

需要注意的是,在Deployment頁簽,需要配置該項目訪問的Application Context,否則有可能啟動后出現404的情況。如下圖所示:

配置完成即可啟動文件服務組件,如下圖即為啟動信息日志:

....

2019-07-20 23:48:56.174 [RMI TCP Connection(3)-127.0.0.1] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'mvcViewResolver'

2019-07-20 23:48:56.182 [RMI TCP Connection(3)-127.0.0.1] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'viewResolver'

2019-07-20 23:48:56.208 [RMI TCP Connection(3)-127.0.0.1] INFO org.fortune.commons.core.help.BeanInitializeCompletedListener - spring conf 容器初始化完畢..處理啟動之后事件--start

2019-07-20 23:48:56.212 [RMI TCP Connection(3)-127.0.0.1] INFO org.fortune.doc.server.DocServerContainer - 加入賬戶:fortune

2019-07-20 23:48:56.212 [RMI TCP Connection(3)-127.0.0.1] INFO org.fortune.doc.server.DocServerContainer - 加入賬戶:fortune0

2019-07-20 23:48:56.213 [RMI TCP Connection(3)-127.0.0.1] INFO org.fortune.doc.server.DocServerContainer - 加入默認賬戶:Account{userName='default_account', password='lyx', rootPath='C:\05_webserver\apache-tomcat-8.5.42\bin\', level=1, thumbHeight=20, thumbWidth=20}

2019-07-20 23:48:56.296 [RMI TCP Connection(3)-127.0.0.1] INFO org.fortune.commons.core.help.BeanInitializeCompletedListener - spring conf 容器初始化完畢..處理啟動之后事件--end

2019-07-20 23:48:56.302 [RMI TCP Connection(3)-127.0.0.1] DEBUG org.springframework.jndi.JndiTemplate - Looking up JNDI object with name [java:comp/env/spring.liveBeansView.mbeanDomain]

2019-07-20 23:48:56.303 [RMI TCP Connection(3)-127.0.0.1] DEBUG org.springframework.jndi.JndiLocatorDelegate - Converted JNDI name [java:comp/env/spring.liveBeansView.mbeanDomain] not found - trying original name [spring.liveBeansView.mbeanDomain]. javax.naming.NameNotFoundException: Name [spring.liveBeansView.mbeanDomain] is not bound in this Context. Unable to find [spring.liveBeansView.mbeanDomain].

2019-07-20 23:48:56.303 [RMI TCP Connection(3)-127.0.0.1] DEBUG org.springframework.jndi.JndiTemplate - Looking up JNDI object with name [spring.liveBeansView.mbeanDomain]

2019-07-20 23:48:56.304 [RMI TCP Connection(3)-127.0.0.1] DEBUG org.springframework.jndi.JndiPropertySource - JNDI lookup for name [spring.liveBeansView.mbeanDomain] threw NamingException with message: Name [spring.liveBeansView.mbeanDomain] is not bound in this Context. Unable to find [spring.liveBeansView.mbeanDomain].. Returning null.

2019-07-20 23:48:56.307 [RMI TCP Connection(3)-127.0.0.1] INFO org.springframework.web.context.ContextLoader - Root WebApplicationContext initialized in 2216 ms

2019-07-20 23:48:56.311 [RMI TCP Connection(3)-127.0.0.1] DEBUG org.springframework.web.filter.CharacterEncodingFilter - Filter 'characterEncodingFilter' configured for use

2019-07-20 23:48:56.320 [RMI TCP Connection(3)-127.0.0.1] INFO org.springframework.web.servlet.DispatcherServlet - Initializing Servlet 'doc-server'

....

然后就可以訪問如下頁面,顯示如下:

不過我們配置的netty端口是9999,我們試著訪問一下,

此時我們就可以不依賴客戶端,直接在網頁端進行文件上傳的測試操作了。輸入賬戶,密碼,選擇相應的文件即可上傳,上傳成功的返回頁面如下:

后臺控制臺打印出的日志信息如下:

2019-07-20 23:52:12.833 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分塊操作....

2019-07-20 23:52:12.835 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分塊操作....文件大小:1024 bytes

2019-07-20 23:52:12.849 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分塊操作....文件大小:2048 bytes

2019-07-20 23:52:12.849 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分塊操作....文件大小:2048 bytes

2019-07-20 23:52:12.850 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分塊操作....文件大小:3072 bytes

2019-07-20 23:52:12.850 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分塊操作....文件大小:4096 bytes

2019-07-20 23:52:12.850 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分塊操作....文件大小:6144 bytes

2019-07-20 23:52:12.852 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分塊操作....文件大小:8192 bytes

2019-07-20 23:52:12.852 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分塊操作....文件大小:8192 bytes

2019-07-20 23:52:12.852 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分塊操作....文件大小:3072 bytes

2019-07-20 23:52:12.853 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分塊操作....文件大小:8192 bytes

2019-07-20 23:52:12.853 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分塊操作....文件大小:7168 bytes

2019-07-20 23:52:12.853 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分塊操作....文件大小:8192 bytes

2019-07-20 23:52:12.854 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分塊操作....文件大小:8192 bytes

2019-07-20 23:52:12.854 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分塊操作....文件大小:6144 bytes

2019-07-20 23:52:12.856 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分塊操作....文件大小:8157 bytes

2019-07-20 23:52:12.862 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件分塊操作....文件大小:0 bytes

2019-07-20 23:52:12.862 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 到達文件內容的末尾,進行相應的文件處理操作....start

2019-07-20 23:52:12.865 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件處理開始....requestParams參數解析:

NETTY WEB Server

===================================

UserName=fortune

pwd=fortune

action=uploadFile

fileContentType=image/jpeg

fileSize=81 KB

getform=POST

Send=Send

2019-07-20 23:52:12.867 [New I/O worker #1] INFO org.fortune.doc.server.handler.factory.DocServerHandlerFactory - 進行文件上傳操作....

2019-07-20 23:52:12.869 [New I/O worker #1] INFO org.fortune.doc.server.handler.UploadDocServerHandler - --srcFileName--psb.jpg

2019-07-20 23:52:12.871 [New I/O worker #1] INFO org.fortune.doc.server.handler.UploadDocServerHandler - 文件上傳成功,保存路徑為:fortune\l\190720235212_1027.jpg,真實路徑為:C:\03_code\idea_workspace\fortune-commons\commons-doc-server-netty\target\commons-doc-server-netty\/fortune\l\190720235212_1027.jpg

2019-07-20 23:52:12.871 [New I/O worker #1] DEBUG org.fortune.doc.server.handler.UploadDocServerHandler - 生成縮略圖

2019-07-20 23:52:12.872 [New I/O worker #1] INFO org.fortune.doc.server.handler.UploadDocServerHandler - 生成縮略圖的名稱為:190720235212_1027_thumb.jpg,路徑為:C:\03_code\idea_workspace\fortune-commons\commons-doc-server-netty\target\commons-doc-server-netty\/fortune\l\190720235212_1027_thumb.jpg

2019-07-20 23:52:13.130 [New I/O worker #1] DEBUG org.fortune.doc.server.handler.factory.DocServerHandlerFactory - 執行結果:{"action":"uploadFile","code":1,"filePath":"fortune\\l\\190720235212_1027.jpg","msg":"文件上傳成功","success":true}

2019-07-20 23:52:13.130 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 文件處理結束....FileServerHandlerFactory處理結果:{"action":"uploadFile","code":1,"filePath":"fortune\\l\\190720235212_1027.jpg","msg":"文件上傳成功","success":true}

2019-07-20 23:52:13.133 [New I/O worker #1] INFO org.fortune.doc.server.support.DocServerHandler - 到達文件內容的末尾,進行相應的文件處理操作....end

再觀察一下netty 代碼中的target目錄下就有上傳的文件了,如下所示:

我們可以通過如下地址進行訪問,

http://localhost:8080/doc-server/fortune//l//190720235212_1027.jpg,關于如何得到圖片地址,則在客戶端工具類中有相應的方法獲取。

4.2 客戶端配置與啟動

4.2.1 配置

客戶端的配置比較簡單,也是采用yml文件方式配置如下:

#上傳成功后,在需要訪問文件web工程中配置以下服務器地址,正確格式為:

# ${host}/${port}/${appName}/${path}

# appName為遠程文件服務app名稱,比如doc-server

# path為文件上傳后服務端返回的文件相對路徑

#http://localhost:8080/doc-server/fortune//p//190629082821_8300.jpg

upload:

server:

port: 9999 #需要配置的是遠程文件服務器netty服務端口號

host: 127.0.0.1

access: #訪問文件

port: 8080 #訪問文件 web 服務端口號

domainName: doc-server #訪問文件 web 服務應用名稱

userName: fortune

password: fortune

需要注意的是,文件訪問的端口號跟遠程文件服務器netty對應的端口是不一樣的,這點需要特別注意。在調用文件服務返回的路徑的時候,需要用到服務端訪問文件的地址,進而訪問相應的文件內容。可通過方法 org.fortune.doc.client.DocClientContainer#getDocServerUrl得到相應的服務端地址,再拼接上返回的相對路徑,即可得到文件的完整地址了。

4.2.2 啟動/調用

客戶端單元測試用例如下:

/**

* @author: landy

* @date: 2019/5/30 23:37

* @description:

*/

@RunWith(SpringJUnit4ClassRunner.class) //調用Spring單元測試類

@ContextConfiguration(classes = {

SettingsConfiguration.class, // common settings configuration

DocClientConfiguration.class,

ApplicationContextHelperConfiguration.class

}) //加載Spring配置文件

public class DocClientTest {

@Test

public void test() {

DocClient.uploadFile(new File("C:\\06_temp\\psb.jpg"), "psb.jpg",false);

}

}

同樣的服務端也會顯示出上述相似的日志信息,

2019-07-21 00:04:26.704 [New I/O worker #4] INFO org.fortune.doc.server.handler.UploadDocServerHandler - --srcFileName--psb.jpg

2019-07-21 00:04:26.705 [New I/O worker #4] INFO org.fortune.doc.server.handler.UploadDocServerHandler - 文件上傳成功,保存路徑為:fortune\w\190721000426_6348.jpg,真實路徑為:C:\03_code\idea_workspace\fortune-commons\commons-doc-server-netty\target\commons-doc-server-netty\/fortune\w\190721000426_6348.jpg

2019-07-21 00:04:26.705 [New I/O worker #4] DEBUG org.fortune.doc.server.handler.factory.DocServerHandlerFactory - 執行結果:{"action":"uploadFile","code":1,"filePath":"fortune\\w\\190721000426_6348.jpg","msg":"文件上傳成功","success":true}

2019-07-21 00:04:26.705 [New I/O worker #4] INFO org.fortune.doc.server.support.DocServerHandler - 文件處理結束....FileServerHandlerFactory處理結果:{"action":"uploadFile","code":1,"filePath":"fortune\\w\\190721000426_6348.jpg","msg":"文件上傳成功","success":true}

2019-07-21 00:04:26.706 [New I/O worker #4] INFO org.fortune.doc.server.support.DocServerHandler - 到達文件內容的末尾,進行相應的文件處理操作....end

2019-07-21 00:05:50.539 [http-nio-8080-exec-6] DEBUG org.springframework.web.servlet.DispatcherServlet - GET "/doc-server/fortune//w//190721000426_6348.jpg", parameters={}

2019-07-21 00:05:50.540 [http-nio-8080-exec-6] DEBUG org.springframework.web.servlet.handler.SimpleUrlHandlerMapping - Mapped to org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler@4fcd8ee1

2019-07-21 00:05:50.542 [http-nio-8080-exec-6] DEBUG org.springframework.web.servlet.DispatcherServlet - Completed 200 OK

觀察服務端target目錄下,又多了一個文件,顯示如下,

跟日志信息打印出來的路徑是一致的,我們可以通過返回的地址信息進行訪問文件,

5. 常見問題

5.1 Maven依賴問題

如果某些jar包無法下載的話,可以手動下載然后自己手動執行maven命令安裝到本地倉庫即可(Then, install it using the command)。

mvn install:install-file -DgroupId=com.fasterxml.jackson.core -DartifactId=jackson-core -Dversion=2.9.9.1 -Dpackaging=jar -Dfile=/path/to/file

或者直接利用遠程倉庫地址進行安裝也可( Alternatively, if you host your own repository you can deploy the file there: ),

mvn deploy:deploy-file -DgroupId=com.fasterxml.jackson.core -DartifactId=jackson-core -Dversion=2.9.9.1 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]

5.2 Tomcat 版本問題

如果使用Tomcat7則會出現以下問題,經過對比發現,需要采用Tomcat8以上版本即可,JDK版本需要為1.8+。

七月 23, 2019 11:25:52 下午 org.apache.catalina.startup.ContextConfig processAnnotationsJar

嚴重: Unable to process Jar entry [module-info.class] from Jar [jar:file:/C:/03_code/idea_workspace/fortune-commons/commons-doc-server-netty/target/commons-doc-server-netty/WEB-INF/lib/asm-7.0.jar!/] for annotations

org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19

at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:133)

at org.apache.tomcat.util.bcel.classfile.ConstantPool.(ConstantPool.java:60)

at org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:209)

at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:119)

at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2104)

at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1980)

at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1946)

at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1931)

at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1325)

at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878)

at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:369)

at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)

at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)

at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5173)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)

at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)

at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)

at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1553)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)

at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)

at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)

at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:622)

at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:569)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)

at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)

at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)

at com.sun.jmx.remote.security.MBeanServerAccessController.invoke(MBeanServerAccessController.java:468)

at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)

at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)

at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)

at java.security.AccessController.doPrivileged(Native Method)

at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1408)

at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357)

at sun.rmi.transport.Transport$1.run(Transport.java:200)

at sun.rmi.transport.Transport$1.run(Transport.java:197)

at java.security.AccessController.doPrivileged(Native Method)

at sun.rmi.transport.Transport.serviceCall(Transport.java:196)

at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:573)

at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:834)

at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:688)

at java.security.AccessController.doPrivileged(Native Method)

at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:687)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at java.lang.Thread.run(Thread.java:748)

23:25:53,087 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]

23:25:53,088 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]

總結

以上是生活随笔為你收集整理的netty实现高性能文件服务器,通用文件服务组件(Netty实现版本)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

亚洲精品国产日韩 | 国产亚洲精品久久久久久 | 国产免费又爽又刺激在线观看 | 91九色蝌蚪在线 | 亚洲一级黄色av | av成人免费在线看 | 在线观看中文字幕亚洲 | 国产精品国产三级国产专区53 | 久草精品免费 | 日本中文字幕系列 | 日韩av在线免费播放 | 国产又粗又猛又黄又爽 | 91成人小视频 | 精品在线播放视频 | 日日夜夜天天人人 | 国产精品成| 日本久久片 | 欧美天天射 | 97国产小视频| 日本公妇色中文字幕 | 黄a在线看 | 久久免费观看少妇a级毛片 久久久久成人免费 | 久草视频在线免费播放 | 一区二区三区免费 | 久久久91精品国产 | 免费看成年人 | 蜜臀久久99精品久久久无需会员 | 国产精品综合在线观看 | 国产成人三级在线播放 | av日韩在线网站 | 99久热在线精品视频观看 | 午夜国产福利在线 | 欧美日韩视频在线观看免费 | 免费大片黄在线 | 2018好看的中文在线观看 | 特级西西444www大精品视频免费看 | 狠狠激情中文字幕 | 亚州欧美精品 | 91麻豆精品国产午夜天堂 | 2024国产在线| 视频国产区 | 午夜精品区 | 国产精品久久一卡二卡 | 久久激情五月婷婷 | 在线免费色 | 91精品一区二区三区蜜桃 | 日韩r级电影在线观看 | 日韩激情网 | 免费又黄又爽 | 国产一二三区在线观看 | 啪啪午夜免费 | 天天躁天天躁天天躁婷 | 中文在线字幕观看电影 | 亚洲国产剧情av | 99精品国产一区二区三区不卡 | 91日韩在线专区 | 国产97碰免费视频 | 免费合欢视频成人app | 国产精品永久在线 | 国产涩涩在线观看 | 久久99精品久久久久久 | 人人射av| 看片黄网站 | 狠狠干夜夜爽 | 亚洲国产日韩av | 三级毛片视频 | 久久久国产精品麻豆 | 国产字幕在线看 | av丁香花| 国内揄拍国产精品 | 超碰在线免费97 | 色婷婷av一区二 | 欧美日韩p片 | 日韩理论电影在线观看 | 国产 日韩 欧美 中文 在线播放 | 国产黄网站在线观看 | 欧美在线视频免费 | 国产美女久久久 | 成人a视频在线观看 | 激情久久久久久久久久久久久久久久 | 成人影视免费看 | 国产精品一区久久久久 | 色在线免费视频 | 欧美日韩精品在线一区二区 | 九九九视频在线 | 久久成人高清视频 | 五月天激情视频在线观看 | 91福利社在线观看 | 操操操日日日干干干 | 国产在线国偷精品产拍免费yy | 国内精品视频久久 | 久久精品99国产国产精 | 国语麻豆 | 在线 影视 一区 | av高清影院 | 五月天婷婷综合 | 欧美a级免费视频 | japanesexxxhd奶水 91在线精品一区二区 | 久久久久综合视频 | 久久免费视频网 | 在线免费黄网站 | 999视频精品 | 日韩黄色免费在线观看 | 亚洲视频免费在线观看 | 黄色软件在线观看 | 欧美成年黄网站色视频 | 999久久a精品合区久久久 | 国产一卡久久电影永久 | 久久99精品久久久久久久久久久久 | www..com黄色片 | 久久99深爱久久99精品 | 99在线免费观看视频 | 国产精品久久久久久久久久白浆 | 全久久久久久久久久久电影 | 午夜精品久久久久久99热明星 | 日韩欧美在线一区二区 | 99高清视频有精品视频 | 日韩a级黄色片 | 亚洲精品免费观看 | 欧美91精品 | 尤物97国产精品久久精品国产 | 日韩性xxxx| 永久免费在线 | 午夜国产福利在线观看 | 综合久久久久久久久 | 亚洲天天摸日日摸天天欢 | 三级av小说 | 欧美性生交大片免网 | 久久久精品国产免费观看一区二区 | 国产五月婷 | 岛国av在线不卡 | 国产一级片网站 | 欧美日韩中文另类 | 综合天堂av久久久久久久 | 91在线麻豆 | 二区视频在线 | 国产精品欧美久久久久无广告 | 88av色| 午夜婷婷综合 | 四川妇女搡bbbb搡bbbb搡 | 欧美激情第一区 | 亚洲精品国偷拍自产在线观看 | 久久av电影| 免费久久99精品国产婷婷六月 | 久久精品视频国产 | 人人干狠狠干 | 日韩午夜三级 | 精品国产理论片 | 91九色网站| 在线一级片 | 亚洲天堂免费视频 | 成人性生爱a∨ | 探花视频免费在线观看 | 射久久| 97干com| av大片免费 | 精品视频亚洲 | 草久久av| 曰本免费av | 一区二区毛片 | 色综合久久久久久中文网 | av电影不卡| 操久| 五月婷影院 | 久久免费视频精品 | 久久国产精品99精国产 | 成片人卡1卡2卡3手机免费看 | 国产精品成人一区二区 | 久久国产精品区 | 免费在线色 | 国产资源免费在线观看 | 岛国av在线| 中文字幕在线看 | 午夜精品电影 | 麻豆91在线看 | 69国产成人综合久久精品欧美 | 成人影视免费看 | 中文字幕一区二区三区久久 | www.精选视频.com | 亚洲视屏一区 | 国产在线不卡一区 | 欧美成人黄色 | 国产一级免费片 | 草免费视频| 99视频这里只有 | 美女福利视频网 | 免费日韩一级片 | 久久成人在线 | 久久久久欠精品国产毛片国产毛生 | 婷婷视频在线播放 | 999成人| www.狠狠操.com | 最新影院 | 久久国产精品影视 | 毛片网在线播放 | 91手机电视 | 欧美一级免费 | 天天干,天天干 | www.婷婷com| 欧美a影视 | 九九欧美 | 中文字幕免费观看全部电影 | 夜夜躁天天躁很躁波 | 久久免费看a级毛毛片 | 日日摸日日碰 | 久久免费黄色大片 | 97精品在线观看 | 久久亚洲精品电影 | 日韩大片免费在线观看 | 999抗病毒口服液 | 日本三级全黄少妇三2023 | 国产 欧美 日韩 | 91网站免费观看 | 天天草天天干天天 | 狠狠插狠狠干 | 五月天丁香亚洲 | 婷婷色在线播放 | 久久免费国产电影 | 又大又硬又黄又爽视频在线观看 | 亚洲精品视频偷拍 | 三日本三级少妇三级99 | 麻豆你懂的| 麻豆精品视频在线观看免费 | 一区二区三区四区五区在线 | 中文字幕国内精品 | 免费能看的黄色片 | 日本精品视频网站 | 免费观看性生交大片3 | 毛片网站免费 | 日韩精品一区二区三区水蜜桃 | 婷婷色站| 国产香蕉97碰碰碰视频在线观看 | 亚洲精品国偷拍自产在线观看蜜桃 | 天天爱天天射天天干天天 | 日韩免费电影网站 | 国产 中文 日韩 欧美 | 久久综合国产伦精品免费 | 成人在线免费av | 国产精品一区二区精品视频免费看 | 欧美一级视频免费 | 国产精品无av码在线观看 | 久久草在线精品 | 91热在线 | 亚洲人精品午夜 | 亚洲国产中文字幕在线视频综合 | 99在线视频观看 | 婷婷色网 | 精品亚洲一区二区 | 欧美日韩一区二区三区在线免费观看 | 日韩免费中文字幕 | 色在线中文字幕 | 处女av在线 | 激情开心网站 | 欧美日韩视频在线一区 | 国产一区二区日本 | 91免费视频网站在线观看 | 中文字幕一区二区三区四区视频 | 日本资源中文字幕在线 | 成人电影毛片 | 四虎国产精品成人免费影视 | 青青河边草免费观看完整版高清 | 一区二区免费不卡在线 | 中文字幕在线播放日韩 | 日韩精品无码一区二区三区 | 亚洲美女免费精品视频在线观看 | 人人澡澡人人 | 美女视频黄免费网站 | 亚洲理论视频 | 国产91在线播放 | 国产精品黑丝在线观看 | 久草久 | 国产麻豆果冻传媒在线观看 | 久久视频在线 | 99视频在线精品免费观看2 | 久久伦理电影 | 99久久婷婷国产一区二区三区 | 日韩一级黄色片 | 久久你懂的 | 超碰99人人| 中文字幕资源站 | aaaaaa毛片| 91看片淫黄大片91 | 综合网久久 | 国产色视频一区二区三区qq号 | 一区二区三区精品久久久 | 在线观看免费一区 | 天天综合天天做天天综合 | 日韩电影在线视频 | 人人玩人人添人人澡97 | 伊人亚洲综合 | 在线观看色网 | 日韩在线观看第一页 | 欧美一区二区在线免费观看 | 日韩av快播电影网 | 久久激情视频免费观看 | 国产资源站 | 国产小视频精品 | 久草在线在线精品观看 | 久久国产精品久久精品国产演员表 | 国产97av | 国产精品免费视频观看 | 久久免费精品视频 | 日韩xxxx视频| 日韩久久精品一区二区三区下载 | 亚洲日日夜夜 | 欧美极品少妇xbxb性爽爽视频 | 美女国产网站 | 国产免费黄视频在线观看 | 香蕉在线视频播放网站 | 国产美女精品久久久 | 日本精品久久久一区二区三区 | 亚洲成人免费在线观看 | 精品二区久久 | 国产精品精品久久久久久 | 伊人欧美 | 日韩四虎 | 国产美女在线免费观看 | 最新黄色av网址 | 国产aaa大片 | 欧美日韩视频一区二区三区 | 亚洲欧洲一区二区在线观看 | 九九久久久 | 九九久久成人 | 国产成本人视频在线观看 | 99久久影院 | 久热爱| 亚洲人人射 | 香蕉免费在线 | 婷婷日| 91九色视频观看 | 很黄很色很污的网站 | 激情动态 | av.com在线 | 久久久久久久久爱 | 91精品国产入口 | 一区在线电影 | 国产.精品.日韩.另类.中文.在线.播放 | 日韩亚洲国产中文字幕 | 成人在线一区二区 | 国产伦理久久精品久久久久_ | 日韩欧美网站 | 日韩久久久久久久 | 欧美大片在线观看一区 | 欧美孕交vivoestv另类 | 97视频总站 | 日韩高清国产精品 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 久久精品三 | 免费无遮挡动漫网站 | 欧美日韩二区在线 | 日韩欧美国产精品 | 国产视频精品免费 | 欧美人人 | 亚洲高清91 | 成人在线一区二区 | 高清不卡毛片 | 国产精品免费在线播放 | 日韩高清一 | 操夜夜操 | 亚洲精品在线网站 | 最近的中文字幕大全免费版 | 免费久久精品视频 | 国内精品久久久久久久久久 | 亚洲精品在线视频观看 | 欧美少妇xxxxxx | 亚洲欧美成人在线 | 久久久久日本精品一区二区三区 | 99热这里有| 在线视频你懂得 | 国内精品视频在线播放 | 亚洲黄色小说网址 | 97超碰资源总站 | 97超碰人人网| 99久久99久久免费精品蜜臀 | 在线免费中文字幕 | 999久久久久久久久久久 | 一区二区三区四区五区在线 | 日本精品中文字幕在线观看 | 免费一级日韩欧美性大片 | 日韩精品一区二区在线观看视频 | 麻豆国产精品va在线观看不卡 | 欧美视频国产视频 | 最近2019中文免费高清视频观看www99 | 欧美亚洲一区二区在线 | 天天干com| 欧美a视频 | 91精品啪在线观看国产线免费 | 欧美日韩精品影院 | 国产精品无av码在线观看 | 免费日韩一区二区三区 | 日本深夜福利视频 | 日韩欧美高清免费 | 狠狠操狠狠干天天操 | 欧美日韩一区二区免费在线观看 | 国产一级免费播放 | 日日夜夜中文字幕 | 国产成人一二三 | 亚洲视频 中文字幕 | 青青河边草观看完整版高清 | 在线国产99 | 日韩欧美视频在线播放 | 久久国产品 | 日日爽夜夜操 | 97在线视频免费播放 | 国产亚洲精品无 | 日韩 精品 一区 国产 麻豆 | 黄色成人免费电影 | 色网站在线免费观看 | 国产亚洲小视频 | 国产1区2区3区精品美女 | 国产成人久久精品77777综合 | 中文字幕资源站 | 亚洲 欧美 另类人妖 | 国产不卡在线 | 精品视频成人 | 国产精品久久久久久久毛片 | 日韩精品一区二区三区免费观看 | 久久久久福利视频 | www.狠狠色| 啪啪凸凸 | 国产99一区视频免费 | 中文字幕在线视频一区二区三区 | 国产精品一区二区你懂的 | 亚洲成aⅴ人在线观看 | 97视频中文字幕 | 亚洲年轻女教师毛茸茸 | 亚洲国产免费网站 | 久久这里只有精品首页 | 久久久久亚洲精品男人的天堂 | 久久黄色小说视频 | 日韩av一区二区在线播放 | 91视频免费观看 | 久久久精品福利视频 | 操碰av | 人人爽人人爽人人爽 | 玖玖国产精品视频 | 激情综合婷婷 | 久久综合久久伊人 | 久久综合免费视频影院 | 欧美福利网址 | 国产二区视频在线观看 | 毛片.com| 五月天久久婷婷 | 亚洲天天综合 | 亚洲天堂网视频在线观看 | 久久久美女| 91精品视频免费观看 | 成人毛片一区 | 国产小视频在线免费观看 | 亚洲精品综合欧美二区变态 | 国产在线美女 | 欧美91视频 | 在线免费观看黄色 | 欧美精品一区在线发布 | 91日韩精品 | 91精品国产麻豆国产自产影视 | 欧美国产日韩激情 | 久久免费观看少妇a级毛片 久久久久成人免费 | 国产精品久久中文字幕 | 久草在线久 | 久久爱992xxoo | 西西4444www大胆视频 | 久久国产综合视频 | 四虎成人精品永久免费av | 一级性视频 | 欧美精品少妇xxxxx喷水 | 夜夜操夜夜干 | 精品免费国产一区二区三区四区 | 午夜123| 美女露久久 | 国产视频每日更新 | 国产精品免费久久久久久久久久中文 | 视频国产区 | 久久精品在线视频 | 久久色视频 | 欧美黄色成人 | 久久天天躁夜夜躁狠狠85麻豆 | 午夜视频99 | 麻豆视频入口 | 成人综合婷婷国产精品久久免费 | 成年人在线 | 性色av免费看 | 婷婷成人在线 | 在线观看免费色 | 久久99影院 | 国际精品网 | 亚洲最大成人免费网站 | 日韩视频一区二区三区 | 婷婷六月天在线 | 亚洲激情校园春色 | 免费一级片观看 | 91看片淫黄大片一级在线观看 | 深夜免费小视频 | 玖玖视频免费在线 | 亚洲 欧美 国产 va在线影院 | 日韩网站中文字幕 | 久久超碰网| 久久免费在线观看视频 | 人人cao | 午夜久久视频 | 免费三级大片 | 97超碰人人网 | 精品一区二区三区在线播放 | 国产精品久久久久久久毛片 | 最新国产福利 | 6080yy午夜一二三区久久 | 国产精品免费视频观看 | 一级黄色电影网站 | 在线天堂8√ | 91亚洲网站 | 黄色av电影免费观看 | 九九热在线免费观看 | 日韩精品在线视频免费观看 | 91自拍视频在线观看 | 国产成人精品久久亚洲高清不卡 | www.久草视频 | 九九热精品国产 | av国产网站 | 91观看视频 | 国产精品福利av | 综合色站| 国产一级免费视频 | 日韩精品一区二区在线视频 | 久久精品国产一区二区三 | 久久视影| 国产又黄又爽又猛视频日本 | 国产成人精品av久久 | 在线观看岛国片 | 欧美99久久| 这里有精品在线视频 | 中文字幕色网站 | 日韩 在线a | 午夜视频黄 | 国产日产亚洲精华av | 综合精品在线 | 在线 视频 亚洲 | 亚洲欧美日韩不卡 | 天天色天天操综合网 | 在线观看成人av | 亚洲精选视频在线 | 伊人久久一区 | 五月天六月婷 | 日韩在线观看你懂得 | 成人午夜免费福利 | 免费成视频 | 久久亚洲私人国产精品va | 亚洲一区二区视频在线播放 | 99久精品视频| 在线视频日韩欧美 | 国产成人一区二 | 亚洲3级 | 久久久久久久久久亚洲精品 | 97超碰人人网 | 国产香蕉97碰碰碰视频在线观看 | 久久久久综合精品福利啪啪 | 国产在线看 | 中文字幕在线视频一区 | 欧美影院久久 | 免费在线成人 | 亚洲精品综合一二三区在线观看 | 日日麻批40分钟视频免费观看 | 夜又临在线观看 | 精品国产一区二区久久 | 免费人人干 | 91免费黄视频 | 五月天综合网站 | 日韩在线免费电影 | 中文字幕三区 | 超碰成人免费电影 | 9ⅰ精品久久久久久久久中文字幕 | 精品一区二区在线看 | 日本久久电影网 | 一区二区三区在线视频观看58 | 国产精品都在这里 | 国产成人精品亚洲a | 在线看中文字幕 | 99视频免费| 精品在线观看视频 | 久久久久电影网站 | 久久理论片 | 成人免费视频视频在线观看 免费 | 欧美日韩首页 | 欧美美女一级片 | 二区在线播放 | 丁香花在线视频观看免费 | 成人在线免费视频观看 | 欧美三人交 | 日韩在线中文字幕 | 免费观看国产精品 | 色综合激情网 | 又紧又大又爽精品一区二区 | 亚洲综合精品视频 | 日韩在线观看精品 | 人人玩人人添人人澡97 | 欧美在线18| 久久久久久久久久国产精品 | 亚洲资源在线观看 | 亚洲国产欧美一区二区三区丁香婷 | 国产96在线 | 夜夜操天天 | 日本中文在线 | 国产a视频免费观看 | 久久国产99 | 久久av高清| 婷婷六月综合网 | 久久久久女人精品毛片九一 | 在线免费观看黄色 | 中文字幕在线观看视频网站 | 天天操狠狠操夜夜操 | 亚洲免费成人av电影 | 亚洲精品久 | 日本天天操 | 久久中文字幕导航 | 色视频 在线 | 最新国产福利 | 国产精品一区二区果冻传媒 | 亚洲天堂网视频 | 久久久免费毛片 | 久久天天躁夜夜躁狠狠85麻豆 | 99精品在线直播 | 中文字幕第一页在线播放 | 国产美女精品视频免费观看 | 久久久久久国产精品免费 | 欧美日韩高清一区二区 | 日韩特级黄色片 | 精品麻豆入口免费 | 91伊人影院| 色综合欧洲 | 视频在线一区 | 97碰在线视频 | 国产精品a久久久久 | 麻豆国产在线视频 | 国产精品美女久久久久久久久久久 | 日韩高清一区二区 | 国产免费一区二区三区网站免费 | 在线 日韩 av| 国产一区二区电影在线观看 | 日本久久久久久科技有限公司 | 欧美一级艳片视频免费观看 | 又色又爽的网站 | 精品一区二区免费 | www.久热 | 黄色软件网站在线观看 | 激情视频91 | 精品国自产在线观看 | a在线一区| 中文字幕一区二区三区久久 | 国产在线小视频 | 亚洲激情| 国产永久网站 | 久久综合狠狠综合久久激情 | www色| 狂野欧美激情性xxxx | 亚洲欧美日韩国产 | 亚洲精品影视 | 超碰97人人在线 | 亚洲色图激情文学 | 亚洲精品国产品国语在线 | 久久久精品国产免费观看一区二区 | 天天干 天天摸 天天操 | 免费三级av | 国产999精品视频 | 黄色在线看网站 | 国产乱码精品一区二区蜜臀 | 亚洲婷婷在线 | 国产亚洲在 | 亚洲精品视频网 | 中文在线字幕免 | 久草综合在线 | 亚洲高清在线视频 | 精品国产激情 | 国产精品久久久久影院日本 | 黄色亚洲| 亚州欧美精品 | 日韩色一区二区三区 | 亚洲精品看片 | 中文字幕 在线 一 二 | www黄色av | 黄网站免费大全入口 | 国产免费xvideos视频入口 | 日日噜噜噜噜夜夜爽亚洲精品 | 中文字幕成人在线 | 亚洲欧美日韩精品久久奇米一区 | 日韩专区视频 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 国产精品免费视频观看 | 一区二区三区四区在线免费观看 | 亚在线播放中文视频 | 丁香婷婷久久 | 国产成人免费精品 | 久久夜色精品国产欧美乱极品 | 成人精品国产免费网站 | 一区二区三区高清不卡 | 国内外成人在线 | 探花视频在线观看免费 | 天天操夜夜叫 | 久久久www成人免费精品 | 免费在线观看av片 | 区一区二区三在线观看 | 免费高清在线视频一区· | 少妇av网| 特级西西444www大精品视频免费看 | 欧美精品午夜 | 高清av不卡| 91精品久久久久久综合乱菊 | 久久中文精品视频 | 三级黄色网络 | 午夜精品久久久久久 | 在线观看视频国产 | 亚洲国产剧情 | 欧美aⅴ在线观看 | 久久国产99 | 国产字幕在线观看 | 国产在线一线 | 天天操夜夜想 | av三级av| 欧美成人播放 | www.com在线观看 | 久操中文字幕在线观看 | 国产精品一区在线播放 | 欧美性生交大片免网 | 亚洲激情六月 | 免费看国产曰批40分钟 | 国产一区二区不卡视频 | 精品二区久久 | www.国产在线视频 | 黄色aaaaa| 99久久国产免费,99久久国产免费大片 | 亚洲黄色成人网 | 国产精品久久久久久久久久 | 欧美精品久久久久久久久老牛影院 | 欧洲一区精品 | 91福利视频久久久久 | 一级黄色片网站 | 久久久久久免费毛片精品 | www.色国产| 久久视频这里有久久精品视频11 | 成人av一区二区兰花在线播放 | 国产精品久久久久毛片大屁完整版 | 91视频a| 欧美日韩国产精品一区 | 丝袜足交在线 | www日韩| 81国产精品久久久久久久久久 | 精品国产福利在线 | 激情网五月 | 婷婷亚洲五月 | 超碰国产在线 | 一级黄色片在线 | 久久综合精品国产一区二区三区 | 在线小视频国产 | 中文字幕 国产视频 | 亚洲欧洲精品一区二区精品久久久 | 久久只有精品 | 亚洲专区视频在线观看 | 日韩在线观看第一页 | 国产又粗又硬又爽的视频 | 天天综合狠狠精品 | 精品免费99久久 | 蜜臀av在线一区二区三区 | 在线观看中文字幕视频 | 香蕉国产91 | 自拍超碰在线 | 麻豆国产在线播放 | 正在播放亚洲精品 | 日批视频在线观看免费 | 人人舔人人爱 | 国产精品久久久久久久久大全 | 福利视频入口 | 最新国产精品亚洲 | 草久草久| 不卡国产视频 | 天天操天天射天天插 | a午夜电影| 国产精品18久久久久久久久 | 黄色一级在线观看 | 国产精品视频大全 | 欧美日韩另类在线观看 | 天天干夜夜 | 免费看污在线观看 | 玖玖玖国产精品 | 亚洲dvd | 欧美成人影音 | 欧美另类性 | 欧美ⅹxxxxxx | 午夜久久视频 | 九九热精品国产 | 免费又黄又爽视频 | 久草在线一免费新视频 | 伊人色综合久久天天网 | 日韩理论片| 亚洲精品视频免费 | 亚洲首页 | 色姑娘综合天天 | 久久精品国产成人 | 三级小视频在线观看 | 久久久久区 | 国产成人在线免费观看 | 久久a热6| 一区二区三区免费在线观看 | 亚洲va欧美va | 国产二区精品 | 欧美一级电影在线观看 | 日韩欧美视频一区 | 久久中文字幕在线视频 | 少妇搡bbbb搡bbb搡忠贞 | 91成人精品 | 日韩精品1区2区 | 黄色小网站在线观看 | 日本特黄一级 | 在线高清av | 成人免费视频观看 | 三级免费黄色 | www91在线观看 | av看片网| www·22com天天操 | 久久久久久久久久久久国产精品 | 欧美在线视频不卡 | 丁香影院在线 | 日韩动漫免费观看高清完整版在线观看 | 99精品福利 | 色香com. | 国产一区福利在线 | av黄色免费在线观看 | 国产女人免费看a级丨片 | 天天天色综合a | 69国产在线观看 | 色婷婷av一区二 | 久久久久国产精品免费网站 | 国产大陆亚洲精品国产 | 国产一卡在线 | 亚洲激情校园春色 | 日韩在线视频网址 | 日韩精品免费专区 | 久久久久久久av麻豆果冻 | 福利在线看片 | 91九色在线视频观看 | 国产1区在线观看 | 91.dizhi永久地址最新 | 免费观看久久久 | 欧美激情综合色 | 91最新视频 | 久久国产精品一国产精品 | 午夜资源站 | 色全色在线资源网 | 久久精久久精 | 日韩精品三区四区 | 麻豆视频入口 | 精品国产亚洲一区二区麻豆 | 日韩三级中文字幕 | 久久久久国产视频 | 中文字幕av免费观看 | 久久人人爽人人爽 | 国产成人精品999在线观看 | 亚洲精品男女 | 91久久精品日日躁夜夜躁国产 | 亚洲国产人午在线一二区 | 国产不卡一二三区 | 亚洲视频一 | 色成人亚洲| 亚洲春色综合另类校园电影 | 午夜精品久久一牛影视 | av在线电影播放 | 国产精品网站一区二区三区 | 日日夜夜精品免费 | 久久96国产精品久久99软件 | 99热这里精品 | 五月婷婷亚洲 | 在线视频 一区二区 | 99国产精品| 久久国产精品99国产精 | 亚洲成a人片在线观看网站口工 | 91完整版观看 | 精品国内自产拍在线观看视频 | 中文字幕在线观看一区二区三区 | 97成人精品 | 国产剧情久久 | 天天操天天操天天操天天操天天操天天操 | 中文在线免费观看 | 91在线www| 狠狠干激情 | 国产v在线 | 中文字幕一区二区三区视频 | 少妇bbw搡bbbb搡bbbb | 99r在线播放 | 国产麻豆剧传媒免费观看 | 日本在线观看一区二区三区 | 91网址在线看 | 亚洲欧美视频在线观看 | 黄色免费网 | 又紧又大又爽精品一区二区 | 区一区二区三在线观看 | 六月丁香六月婷婷 | 视频91| 黄污视频网站 | 日韩精品中文字幕在线观看 | 欧美性精品 | av片在线观看免费 | 久久久久久国产精品免费 | 色永久免费视频 | 亚洲国产字幕 | 久草视频免费观 | 中文字幕精品在线 | 一本一本久久a久久精品综合小说 | 2023年中文无字幕文字 | 国产成人久久av免费高清密臂 | 久久成电影| 精品一区中文字幕 | 视频在线观看99 | 国产视频 久久久 | 亚洲黄a| 91.麻豆视频 | 精品亚洲成人 | 欧美日韩亚洲精品在线 | 99视频播放| 国产黄色特级片 | 天天操天天摸天天爽 | 国产精品一区二区久久精品爱涩 | 国产精品久久二区 | 波多野结衣一区三区 | 91欧美精品| 国产高清视频免费 | 成人羞羞免费 | 日韩激情中文字幕 | 日韩av在线网站 | 国产视频一区在线免费观看 | 成人毛片一区二区三区 | 日韩精品久久久久久中文字幕8 | 欧美一区二区日韩一区二区 | 精品国产一区二区久久 | 日韩一区二区三区高清免费看看 | 精品91视频 | 久草在线官网 | 国产黄色精品 | 在线免费观看国产 | 日韩精品一区二区在线 | 日韩精品在线观看av | 欧美国产日韩一区二区三区 | 亚洲精品高清一区二区三区四区 | 91中文字幕在线播放 | 韩国av三级| 亚洲视频精品 | 国产精品手机在线 | 欧美精品资源 | 精油按摩av| 国产麻豆果冻传媒在线观看 | 偷拍久久久 | 国产美女精品视频 | 91精品久久久久久粉嫩 | 在线免费av观看 | 狠狠色丁香婷婷综合视频 | 欧美精品亚洲精品日韩精品 | 国产精品99久久久久久小说 | 久久 国产一区 | 九九精品视频在线看 | 91在线成人 | 黄www在线观看 | 精品亚洲网| 中文字幕国产一区二区 | 精品毛片一区二区免费看 | 日韩中文在线视频 | 中文字幕一区av | 亚洲欧洲成人精品av97 | 欧美日韩视频 | 亚州视频在线 | 日韩欧美在线观看一区二区三区 | 久久一区二 | 国产精品久久久久久久电影 | 大型av综合网站 | 蜜臀久久99精品久久久酒店新书 | 国产精品高清免费在线观看 | 欧美日本不卡高清 | 91片在线观看 | 国产一区二区电影在线观看 | 国产日韩欧美在线免费观看 | 日本一区二区免费在线观看 | 开心丁香婷婷深爱五月 | 这里只有精品视频在线 | 亚洲精品在线观看av | 98福利在线 | 成人久久精品视频 | 久久爱资源网 | 国产美女搞久久 | 成在线播放 | av日韩在线网站 | 91爱爱中文字幕 | 91精品婷婷国产综合久久蝌蚪 | 天天狠狠操 | 高清av中文在线字幕观看1 | 欧美精品黑人性xxxx | 五月婷婷丁香网 | 黄网站app在线观看免费视频 | 国产日产高清dvd碟片 | 久久不射网站 | 中文字幕日韩国产 | 视频一区二区视频 | 亚洲一级免费电影 | 日韩在线无 |