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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

.net core 引用jar_Python一键转Jar包,Java调用Python新姿势!

發(fā)布時(shí)間:2023/12/9 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .net core 引用jar_Python一键转Jar包,Java调用Python新姿势! 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

粉絲朋友們,不知道大家看故事看膩了沒(要是沒膩可一定留言告訴我^_^),今天這篇文章?lián)Q換口味,正經(jīng)的來寫寫技術(shù)文。言歸正傳,咱們開始吧!

今天的這篇文章,聊一個(gè)軒轅君之前工作中遇到的需求:如何在Java中調(diào)用Python代碼?

要不要先Mark一下,說不定將來哪天就用上了呢?

本文結(jié)構(gòu):

- 需求背景- 進(jìn)擊的 Python- Java 和 Python - 給 Python 加速- 尋找方向- Jython? - Python->Native 代碼- 整體思路- 實(shí)際動(dòng)手- 自動(dòng)化 - 關(guān)鍵問題- import 的問題- Python GIL 問題 - 測(cè)試效果 - 總結(jié)

需求背景

進(jìn)擊的 Python

隨著人工智能的興起,Python 這門曾經(jīng)小眾的編程語言可謂是煥發(fā)了第二春。

以 tensorflow、pytorch 等為主的機(jī)器學(xué)習(xí)/深度學(xué)習(xí)的開發(fā)框架大行其道,助推了 python 這門曾經(jīng)以爬蟲見長(python 粉別生氣)的編程語言在 TIOBE 編程語言排行榜上一路披荊斬棘,坐上前三甲的寶座,僅次于 Java 和 C,將 C++、JavaScript、PHP、C#等一眾勁敵斬落馬下。

當(dāng)然,軒轅君向來是不提倡編程語言之間的競(jìng)爭對(duì)比,每一門語言都有自己的優(yōu)勢(shì)和劣勢(shì),有自己應(yīng)用的領(lǐng)域。另一方面,TIOBE 統(tǒng)計(jì)的數(shù)據(jù)也不能代表國內(nèi)的實(shí)際情況,上面的例子只是側(cè)面反映了 Python 這門語言如今的流行程度。

Java 還是 Python

說回咱們的需求上來,如今在不少的企業(yè)中,同時(shí)存在 Python 研發(fā)團(tuán)隊(duì)和 Java 研發(fā)團(tuán)隊(duì),Python 團(tuán)隊(duì)負(fù)責(zé)人工智能算法開發(fā),而 Java 團(tuán)隊(duì)負(fù)責(zé)算法工程化,將算法能力通過工程化包裝提供接口給更上層的應(yīng)用使用。

可能大家要問了,為什么不直接用 Java 做 AI 開發(fā)呢?要弄兩個(gè)團(tuán)隊(duì)。其實(shí),現(xiàn)在包括 TensorFlow 在內(nèi)的框架都逐漸開始支持 Java 平臺(tái),用 Java 做 AI 開發(fā)也不是不行(其實(shí)已經(jīng)有不少團(tuán)隊(duì)在這樣做了),但限于歷史原因,做 AI 開發(fā)的人本就不多,而這一些人絕大部分都是 Python 技術(shù)棧入坑,Python 的 AI 開發(fā)生態(tài)已經(jīng)建設(shè)的相對(duì)完善,所以造成了在很多公司中算法團(tuán)隊(duì)和工程化團(tuán)隊(duì)不得不使用不同的語言。

現(xiàn)在該拋出本文的重要問題:Java 工程化團(tuán)隊(duì)如何調(diào)用 Python 的算法能力?

答案基本上只有一個(gè):Python 通過 Django/Flask 等框架啟動(dòng)一個(gè) Web 服務(wù),Java 中通過 Restful API 與之進(jìn)行交互

上面的方式的確可以解決問題,但隨之而來的就是性能問題。尤其是在用戶量上升后,大量并發(fā)接口訪問下,通過網(wǎng)絡(luò)訪問和 Python 的代碼執(zhí)行速度將成為拖累整個(gè)項(xiàng)目的瓶頸。

當(dāng)然,不差錢的公司可以用硬件堆出性能,一個(gè)不行,那就多部署幾個(gè) Python Web 服務(wù)。

那除此之外,有沒有更實(shí)惠的解決方案呢?這就是這篇文章要討論的問題。

給 Python 加速

尋找方向

上面的性能瓶頸中,拖累執(zhí)行速度的原因主要有兩個(gè):

  • 通過網(wǎng)絡(luò)訪問,不如直接調(diào)用內(nèi)部模塊快
  • Python 是解釋執(zhí)行,快不起來

眾所周知,Python 是一門解釋型腳本語言,一般來說,在執(zhí)行速度上:

解釋型語言 < 中間字節(jié)碼語言 < 本地編譯型語言

自然而然,我們要努力的方向也就有兩個(gè):

  • 能否不通過網(wǎng)絡(luò)訪問,直接本地調(diào)用
  • Python 不要解釋執(zhí)行

結(jié)合上面的兩個(gè)點(diǎn),我們的目標(biāo)也清晰起來:

將 Python 代碼轉(zhuǎn)換成 Java 可以直接本地調(diào)用的模塊

對(duì)于 Java 來說,能夠本地調(diào)用的有兩種:

  • Java 代碼包
  • Native 代碼模塊

其實(shí)我們通常所說的 Python 指的是 CPython,也就是由 C 語言開發(fā)的解釋器來解釋執(zhí)行。而除此之外,除了 C 語言,不少其他編程語言也能夠按照 Python 的語言規(guī)范開發(fā)出虛擬機(jī)來解釋執(zhí)行 Python 腳本:

  • CPython: C 語言編寫的解釋器
  • Jython: Java 編寫的解釋器
  • IronPython: .NET 平臺(tái)的解釋器
  • PyPy: Python 自己編寫的解釋器(雞生蛋,蛋生雞)

Jython?

如果能夠在 JVM 中直接執(zhí)行 Python 腳本,與 Java 業(yè)務(wù)代碼的交互自然是最簡單不過。但隨后的調(diào)研發(fā)現(xiàn),這條路很快就被堵死了:

  • 不支持 Python3.0 以上的語法
  • python 源碼中若引用的第三方庫包含 C 語言擴(kuò)展,將無法提供支持,如 numpy 等

這條路行不通,那還有一條:把 Python 代碼轉(zhuǎn)換成 Native 代碼塊,Java 通過 JNI 的接口形式調(diào)用。

Python -> Native 代碼

整體思路

先將 Python 源代碼轉(zhuǎn)換成 C 代碼,之后用 GCC 編譯 C 代碼為二進(jìn)制模塊 so/dll,接著進(jìn)行一次 Java Native 接口封裝,使用 Jar 打包命令轉(zhuǎn)換成 Jar 包,然后 Java 便可以直接調(diào)用。

流程并不復(fù)雜,但要完整實(shí)現(xiàn)這個(gè)目標(biāo),有一個(gè)關(guān)鍵問題需要解決:

Python 代碼如何轉(zhuǎn)換成 C 代碼?

終于要輪到本文的主角登場(chǎng)了,將要用到的一個(gè)核心工具叫:Cython

請(qǐng)注意,這里的Cython和前面提到的CPython不是一回事。CPython 狹義上是指 C 語言編寫的 Python 解釋器,是 Windows、Linux 下我們默認(rèn)的 Python 腳本解釋器。

而 Cython 是 Python 的一個(gè)第三方庫,你可以通過pip install Cython進(jìn)行安裝。

官方介紹 Cython 是一個(gè) Python 語言規(guī)范的超集,它可以將 Python+C 混合編碼的.pyx 腳本轉(zhuǎn)換為 C 代碼,主要用于優(yōu)化 Python 腳本性能或 Python 調(diào)用 C 函數(shù)庫。

聽上去有點(diǎn)復(fù)雜,也有點(diǎn)繞,不過沒關(guān)系,get 一個(gè)核心點(diǎn)即可:Cython 能夠把 Python 腳本轉(zhuǎn)換成 C 代碼

來看一個(gè)實(shí)驗(yàn):

# FileName: test.py def TestFunction():print("this is print from python script")

將上述代碼通過 Cython 轉(zhuǎn)化,生成 test.c,長這個(gè)樣子:

代碼非常長,而且不易讀,這里僅截圖示意。

實(shí)際動(dòng)手

1.準(zhǔn)備 Python 源代碼

# FileName: Test.py # 示例代碼:將輸入的字符串轉(zhuǎn)變?yōu)榇髮?def logic(param):print('this is a logic function')print('param is [%s]' % param)return param.upper()# 接口函數(shù),導(dǎo)出給Java Native的接口 def JNI_API_TestFunction(param):print("enter JNI_API_test_function")result = logic(param)print("leave JNI_API_test_function")return result

注意1:這里在 python 源碼中使用一種約定:以JNI_API_為前綴開頭的函數(shù)表示為Python代碼模塊要導(dǎo)出對(duì)外調(diào)用的接口函數(shù),這樣做的目的是為了讓我們的 Python 一鍵轉(zhuǎn) Jar 包系統(tǒng)能自動(dòng)化識(shí)別提取哪些接口作為導(dǎo)出函數(shù)。

注意2:這一類接口函數(shù)的輸入是一個(gè) python 的 str 類型字符串,輸出亦然,如此可便于移植以往通過JSON形式作為參數(shù)的 RESTful 接口。使用JSON的好處是可以對(duì)參數(shù)進(jìn)行封裝,支持多種復(fù)雜的參數(shù)形式,而不用重載出不同的接口函數(shù)對(duì)外調(diào)用。

注意3:還有一點(diǎn)需要說明的是,在接口函數(shù)前綴JNI_API_的后面,函數(shù)命名不能以 python 慣有的下劃線命名法,而要使用駝峰命名法,注意這不是建議,而是要求,原因后續(xù)會(huì)提到。

2.準(zhǔn)備一個(gè) main.c 文件

這個(gè)文件的作用是對(duì) Cython 轉(zhuǎn)換生成的代碼進(jìn)行一次封裝,封裝成 Java JNI 接口形式的風(fēng)格,以備下一步 Java 的使用。

/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> #include <Python.h> #include <stdio.h>#ifndef _Included_main #define _Included_main #ifdef __cplusplus extern "C" { #endif#if PY_MAJOR_VERSION < 3 # define MODINIT(name) init ## name #else # define MODINIT(name) PyInit_ ## name #endif PyMODINIT_FUNC MODINIT(Test)(void);JNIEXPORT void JNICALL Java_Test_initModule (JNIEnv *env, jobject obj) {PyImport_AppendInittab("Test", MODINIT(Test));Py_Initialize();PyRun_SimpleString("import os");PyRun_SimpleString("__name__ = "__main__"");PyRun_SimpleString("import sys");PyRun_SimpleString("sys.path.append('./')");PyObject* m = PyInit_Test_Test();if (!PyModule_Check(m)) {PyModuleDef *mdef = (PyModuleDef *) m;PyObject *modname = PyUnicode_FromString("__main__");m = NULL;if (modname) {m = PyModule_NewObject(modname);Py_DECREF(modname);if (m) PyModule_ExecDef(m, mdef);}}PyEval_InitThreads(); }JNIEXPORT void JNICALL Java_Test_uninitModule (JNIEnv *env, jobject obj) {Py_Finalize(); }JNIEXPORT jstring JNICALL Java_Test_testFunction (JNIEnv *env, jobject obj, jstring string) {const char* param = (char*)(*env)->GetStringUTFChars(env, string, NULL);static PyObject *s_pmodule = NULL;static PyObject *s_pfunc = NULL;if (!s_pmodule || !s_pfunc) {s_pmodule = PyImport_ImportModule("Test");s_pfunc = PyObject_GetAttrString(s_pmodule, "JNI_API_testFunction");}PyObject *pyRet = PyObject_CallFunction(s_pfunc, "s", param);(*env)->ReleaseStringUTFChars(env, string, param);if (pyRet) {jstring retJstring = (*env)->NewStringUTF(env, PyUnicode_AsUTF8(pyRet));Py_DECREF(pyRet);return retJstring;} else {PyErr_Print();return (*env)->NewStringUTF(env, "error");} } #ifdef __cplusplus } #endif #endif

這個(gè)文件中一共有3個(gè)函數(shù):

  • Java_Test_initModule: python初始化工作
  • Java_Test_uninitModule: python反初始化工作
  • Java_Test_testFunction:真正的業(yè)務(wù)接口,封裝了對(duì)原來Python中定義對(duì)JNI_API_testFuncion函數(shù)的調(diào)用,同時(shí)要負(fù)責(zé)JNI層面的參數(shù)jstring類型的轉(zhuǎn)換。

根據(jù) JNI 接口規(guī)范,native 層面的 C 函數(shù)命名需要符合如下的形式:

// QualifiedClassName: 全類名 // MethodName: JNI接口函數(shù)名 void JNICALL Java_QualifiedClassName_MethodName(JNIEnv*, jobject);

所以在main.c文件中對(duì)定義需要向上面這樣命名,這也是為什么前面強(qiáng)調(diào)python接口函數(shù)命名不能用下劃線,這會(huì)導(dǎo)致JNI接口找不到對(duì)應(yīng)的native函數(shù)。

3.使用 Cython 工具編譯生成動(dòng)態(tài)庫

補(bǔ)充做一個(gè)小小的準(zhǔn)備工作:把Python源碼文件的后綴從.py改成.pyx

python源代碼Test.pyx和main.c文件都準(zhǔn)備就緒,接下來便是Cython登場(chǎng)的時(shí)候了,它將會(huì)將所有pyx的文件自動(dòng)轉(zhuǎn)換成.c文件,并結(jié)合我們自己的main.c文件,內(nèi)部調(diào)用gcc生成一個(gè)動(dòng)態(tài)二進(jìn)制庫文件。

Cython 的工作需要準(zhǔn)備一個(gè) setup.py 文件,配置好轉(zhuǎn)換的編譯信息,包括輸入文件、輸出文件、編譯參數(shù)、包含目錄、鏈接目錄,如下所示:

from distutils.core import setup from Cython.Build import cythonize from distutils.extension import Extensionsourcefiles = ['Test.pyx', 'main.c']extensions = [Extension("libTest", sourcefiles,include_dirs=['/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/include','/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/include/darwin/','/Library/Frameworks/Python.framework/Versions/3.6/include/python3.6m'],library_dirs=['/Library/Frameworks/Python.framework/Versions/3.6/lib/'],libraries=['python3.6m'])]setup(ext_modules=cythonize(extensions, language_level = 3))

注意:這里涉及Python二進(jìn)制代碼的編譯,需要鏈接Python的庫

注意:這里涉及JNI相關(guān)數(shù)據(jù)結(jié)構(gòu)定義,需要包含Java JNI目錄

setup.py文件準(zhǔn)備就緒后,便執(zhí)行如下命令,啟動(dòng)轉(zhuǎn)換+編譯工作:

python3.6 setup.py build_ext --inplace

生成我們需要的動(dòng)態(tài)庫文件:libTest.so

4.準(zhǔn)備Java JNI調(diào)用的接口文件

Java業(yè)務(wù)代碼使用需要定義一個(gè)接口,如下所示:

// FileName: Test.java public class Test {public native void initModule();public native void uninitModule();public native String testFunction(String param); }

到這一步,其實(shí)已經(jīng)實(shí)現(xiàn)了在Java中調(diào)用的目的了,注意調(diào)用業(yè)務(wù)接口之前,需要先調(diào)用initModule進(jìn)行native層面的Python初始化工作。

import Test; public class Demo {public void main(String[] args) {System.load("libTest.so");Test tester = new Test();tester.initModule();String result = tester.testFunction("this is called from java");tester.uninitModule();System.out.println(result);} }

輸出:

enter JNI_API_test_function this is a logic function param is [this is called from java] leave JNI_API_test_function THIS IS CALLED FROM JAVA!

成功實(shí)現(xiàn)了在Java中調(diào)用Python代碼!

5.封裝為 Jar 包

做到上面這樣還不能滿足,為了更好的使用體驗(yàn),我們?cè)偻耙徊?#xff0c;封裝成為Jar包。

首先原來的JNI接口文件需要再擴(kuò)充一下,加入一個(gè)靜態(tài)方法loadLibrary,自動(dòng)實(shí)現(xiàn)so文件的釋放和加載。

// FileName: Test.java public class Test {public native void initModule();public native void uninitModule();public native String testFunction(String param);public synchronized static void loadLibrary() throws IOException {// 實(shí)現(xiàn)略...} }

接著將上面的接口文件轉(zhuǎn)換成java class文件:

javac Test.java

最后,準(zhǔn)備將class文件和so文件放置于Test目錄下,打包:

jar -cvf Test.jar ./Test

自動(dòng)化

上面5個(gè)步驟如果每次都要手動(dòng)來做著實(shí)是麻煩!好在,我們可以編寫Python腳本將這個(gè)過程完全的自動(dòng)化,真正做到Python一鍵轉(zhuǎn)換Jar包

限于篇幅原因,這里僅僅提一下自動(dòng)化過程的關(guān)鍵:

  • 自動(dòng)掃描提取python源代碼中需要導(dǎo)出的接口函數(shù)
  • main.c、setup.py和JNI接口java文件都需要自動(dòng)化生成(可以定義模板+參數(shù)形式快速構(gòu)建),需要處理好各模塊名、函數(shù)名對(duì)應(yīng)關(guān)系

關(guān)鍵問題

1.import 問題

上面演示的案例只是一個(gè)單獨(dú)的 py 文件,而實(shí)際工作中,我們的項(xiàng)目通常是具有多個(gè) py 文件,并且這些文件通常是構(gòu)成了復(fù)雜的目錄層級(jí),互相之間各種 import 關(guān)系,錯(cuò)綜復(fù)雜。

Cython 這個(gè)工具有一個(gè)最大的坑在于:經(jīng)過其處理的文件代碼中會(huì)丟失代碼文件的目錄層級(jí)信息,如下圖所示,C.py 轉(zhuǎn)換后的代碼和 m/C.py 生成的代碼沒有任何區(qū)別。

這就帶來一個(gè)非常大的問題:A.py 或 B.py 代碼中如果有引用 m 目錄下的 C.py 模塊,目錄信息的丟失將導(dǎo)致二者在執(zhí)行 import m.C 時(shí)報(bào)錯(cuò),找不到對(duì)應(yīng)的模塊!

幸運(yùn)的是,經(jīng)過實(shí)驗(yàn)表明,在上面的圖中,如果 A、B、C 三個(gè)模塊處于同一級(jí)目錄下時(shí),import 能夠正確執(zhí)行。

軒轅君曾經(jīng)嘗試閱讀 Cython 的源代碼,并進(jìn)行修改,將目錄信息進(jìn)行保留,使得生成后的 C 代碼仍然能夠正常 import,但限于時(shí)間倉促,對(duì) Python 解釋器機(jī)理了解不足,在一番嘗試之后選擇了放棄。

在這個(gè)問題上卡了很久,最終選擇了一個(gè)笨辦法:將樹形的代碼層級(jí)目錄展開成為平坦的目錄結(jié)構(gòu),就上圖中的例子而言,展開后的目錄結(jié)構(gòu)變成了

A.py B.py m_C.py

單是這樣還不夠,還需要對(duì) A、B 中引用到 C 的地方全部進(jìn)行修正為對(duì) m_C 的引用。

這看起來很簡單,但實(shí)際情況遠(yuǎn)比這復(fù)雜,在 Python 中,import 可不只有 import 這么簡單,有各種各樣復(fù)雜的形式:

import package import module import package.module import module.class / function import package.module.class / function import package.* import module.* from module import * from module import module from package import * from package import module from package.module import class / function ...

除此之外,在代碼中還可能存在直接通過模塊進(jìn)行引用的寫法。

展開成為平坦結(jié)構(gòu)的代價(jià)就是要處理上面所有的情況!軒轅君無奈之下只有出此下策,如果各位大佬有更好的解決方案還望不吝賜教。

2.Python GIL 問題

Python 轉(zhuǎn)換后的 jar 包開始用于實(shí)際生產(chǎn)中了,但隨后發(fā)現(xiàn)了一個(gè)問題:

每當(dāng) Java 并發(fā)數(shù)一上去之后,JVM 總是不定時(shí)出現(xiàn) Crash

隨后分析崩潰信息發(fā)現(xiàn),崩潰的地方正是在 Native 代碼中的 Python 轉(zhuǎn)換后的代碼中。

  • 難道是 Cython 的 bug?
  • 轉(zhuǎn)換后的代碼有坑?
  • 還是說上面的 import 修正工作有問題?

崩潰的烏云籠罩在頭上許久,冷靜下來思考:為什么測(cè)試的時(shí)候正常沒有發(fā)現(xiàn)問題,上線之后才會(huì)崩潰?

再次翻看崩潰日志,發(fā)現(xiàn)在 native 代碼中,發(fā)生異常的地方總是在 malloc 分配內(nèi)存的地方,難不成內(nèi)存被破壞了?又發(fā)現(xiàn)測(cè)試的時(shí)候只是完成了功能性測(cè)試,并沒有進(jìn)行并發(fā)壓力測(cè)試,而發(fā)生崩潰的場(chǎng)景總是在多并發(fā)環(huán)境中。多線程訪問 JNI 接口,那 Native 代碼將在多個(gè)線程上下文中執(zhí)行。

猛地一個(gè)警覺:99%跟 Python 的 GIL 鎖有關(guān)系!

眾所周知,限于歷史原因,Python 誕生于上世紀(jì)九十年代,彼時(shí)多線程的概念還遠(yuǎn)遠(yuǎn)沒有像今天這樣深入人心過,Python 作為這個(gè)時(shí)代的產(chǎn)物一誕生就是一個(gè)單線程的產(chǎn)品。

雖然 Python 也有多線程庫,允許創(chuàng)建多個(gè)線程,但由于 C 語言版本的解釋器在內(nèi)存管理上并非線程安全,所以在解釋器內(nèi)部有一個(gè)非常重要的鎖在制約著 Python 的多線程,所以所謂多線程實(shí)際上也只是大家輪流來占坑。

原來 GIL 是由解釋器在進(jìn)行調(diào)度管理,如今被轉(zhuǎn)成了 C 代碼后,誰來負(fù)責(zé)管理多線程的安全呢?

由于 Python 提供了一套供 C 語言調(diào)用的接口,允許在 C 程序中執(zhí)行 Python 腳本,于是翻看這套 API 的文檔,看看能否找到答案。

幸運(yùn)的是,還真被我找到了:

獲取 GIL 鎖:

釋放 GIL 鎖:

在 JNI 調(diào)用入口需要獲得 GIL 鎖,接口退出時(shí)需要釋放 GIL 鎖。

加入 GIL 鎖的控制后,煩人的 Crash 問題終于得以解決!

測(cè)試效果

準(zhǔn)備兩份一模一樣的 py 文件,同樣的一個(gè)算法函數(shù),一個(gè)通過 Flask Web 接口訪問,(Web 服務(wù)部署于本地 127.0.0.1,盡可能減少網(wǎng)絡(luò)延時(shí)),另一個(gè)通過上述過程轉(zhuǎn)換成 Jar 包。

在 Java 服務(wù)中,分別調(diào)用兩個(gè)接口 100 次,整個(gè)測(cè)試工作進(jìn)行 10 次,統(tǒng)計(jì)執(zhí)行耗時(shí):

上述測(cè)試中,為進(jìn)一步區(qū)分網(wǎng)絡(luò)帶來的延遲和代碼執(zhí)行本身的延遲,在算法函數(shù)的入口和出口做了計(jì)時(shí),在 Java 執(zhí)行接口調(diào)用前和獲得結(jié)果的地方也做了計(jì)時(shí),這樣可以計(jì)算出算法執(zhí)行本身的時(shí)間在整個(gè)接口調(diào)用過程中的占比。

  • 從結(jié)果可以看出,通過 Web API 執(zhí)行的接口訪問,算法本身執(zhí)行的時(shí)間只占到了 30%+,大部分的時(shí)間用在了網(wǎng)絡(luò)開銷(數(shù)據(jù)包的收發(fā)、Flask 框架的調(diào)度處理等等)。
  • 而通過 JNI 接口本地調(diào)用,算法的執(zhí)行時(shí)間占到了整個(gè)接口執(zhí)行時(shí)間的 80%以上,而 Java JNI 的接口轉(zhuǎn)換過程只占用 10%+的時(shí)間,有效提升了效率,減少額外時(shí)間的浪費(fèi)。
  • 除此之外,單看算法本身的執(zhí)行部分,同一份代碼,轉(zhuǎn)換成 Native 代碼后的執(zhí)行時(shí)間在 300~500μs,而 CPython 解釋執(zhí)行的時(shí)間則在 2000~4000μs,同樣也是相差懸殊。

總結(jié)

本文提供了一種 Java 調(diào)用 Python 代碼的新思路,僅供參考,其成熟度和穩(wěn)定性還有待商榷,通過 HTTP Restful 接口訪問仍然是跨語言對(duì)接的首選。

至于文中的方法,感興趣的朋友歡迎留言交流。

總結(jié)

以上是生活随笔為你收集整理的.net core 引用jar_Python一键转Jar包,Java调用Python新姿势!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

99精品国自产在线 | 欧美成人性战久久 | 成人黄大片视频在线观看 | 久久久久国产精品免费免费搜索 | 欧美日韩一级久久久久久免费看 | 久久国产精品一区二区三区四区 | 国产黄色成人 | www国产精品com | 亚洲精品三级 | 黄色软件大全网站 | 精品96久久久久久中文字幕无 | 亚洲 欧洲 国产 日本 综合 | 精品福利国产 | 一级黄色片在线 | 国产成人久久av977小说 | 国产精品欧美 | 日韩在线电影一区二区 | 又黄又爽又无遮挡免费的网站 | 国产正在播放 | 色吊丝av中文字幕 | 欧美黑人巨大xxxxx | 欧美日韩精品二区第二页 | 亚洲影视九九影院在线观看 | 国产视频每日更新 | 精品成人网 | 69中文字幕 | 99精品国产兔费观看久久99 | 亚洲精品动漫久久久久 | 精品国产aⅴ一区二区三区 在线直播av | 色天天天 | 夜色成人网 | 婷色在线 | 日韩黄视频| 亚洲视频网站在线观看 | 国产精品一级在线 | 午夜影视av | 男女全黄一级一级高潮免费看 | 午夜国产影院 | 成人三级网站在线观看 | 五月婷婷一区 | 色偷偷97| freejavvideo日本免费 | 成人av网站在线播放 | 精品久久久免费 | 免费视频在线观看网站 | 久草影视在线观看 | 精品毛片一区二区免费看 | 午夜精品久久久久久久99水蜜桃 | 久久精品国产99国产 | 天海翼一区二区三区免费 | 天天射天天操天天干 | 狠狠的日 | 粉嫩av一区二区三区四区 | 91亚洲精品乱码久久久久久蜜桃 | 日本黄色免费在线观看 | 97视频在线观看视频免费视频 | 99视频在线观看视频 | 国产精在线 | 国产精品久久久久久久久久久久久久 | 成人一区二区在线 | 91视频国产高清 | 99热在线这里只有精品 | 在线观看成人av | 久草精品视频在线播放 | 91麻豆精品国产自产在线游戏 | 狠狠色丁香久久婷婷综 | 99在线免费观看视频 | 精品人人爽 | 7799av| 精品国产三级a∨在线欧美 免费一级片在线观看 | 99久久精品国产毛片 | www.久草.com | 天天碰天天操视频 | 国产一级电影免费观看 | 成年人在线免费看片 | 天天草网站| 国产精品久久久av | 十八岁以下禁止观看的1000个网站 | 久久久久日本精品一区二区三区 | 99久久精品免费 | 国产视频亚洲精品 | 成人精品电影 | 日韩av影视 | av成人在线网站 | 日韩大陆欧美高清视频区 | 欧美最新大片在线看 | 国产免费又粗又猛又爽 | 亚洲精品乱码久久久一二三 | 日韩两性视频 | 一区二区三区四区不卡 | 久久久久欠精品国产毛片国产毛生 | 午夜av电影院 | 综合黄色网 | 91亚洲精品久久久蜜桃 | 日韩区视频 | 国产一级大片免费看 | 欧美视频18 | 激情综合网婷婷 | 午夜丁香网| 成年人黄色在线观看 | 色在线免费观看 | 国产成人一区二区三区电影 | 国产精品国产三级在线专区 | 中文字幕在线乱 | 不卡av免费在线观看 | 免费看黄色毛片 | 精品久久91| 国产精品自产拍在线观看中文 | 亚洲精品男人天堂 | 欧美日本在线观看视频 | 色99色 | 日韩精品一区二区免费 | 福利av影院 | 91精品伦理 | 久免费 | 日韩激情在线视频 | 亚洲色图22p | 欧美日韩精品电影 | 亚洲视频电影在线 | 亚洲成人资源在线观看 | 欧美最猛性xxxx | 国产网红在线观看 | 日韩精品国产一区 | 美女黄久久 | 久久久久久毛片 | 成人丝袜 | 人人爽久久久噜噜噜电影 | 久久国产精品久久精品国产演员表 | www.久久免费| 久久国产精品久久久 | 天天射天天操天天干 | 日批视频在线播放 | 91av99| 国产免费一区二区三区最新 | 一本色道久久精品 | 国产亚洲精品久久久久秋 | 伊人首页| 国产色婷婷在线 | 怡红院av久久久久久久 | 国产一区二区三区在线免费观看 | 国产精品一级视频 | 91精品福利在线 | 日日夜夜免费精品 | 成人av免费电影 | 日韩一片| 国产精品久久免费看 | 欧美精品在线观看免费 | 免费高清在线视频一区· | 一区二区三区四区在线免费观看 | 天天色综合天天 | 美女福利视频一区二区 | 免费a网| 在线观看完整版免费 | 黄色精品一区二区 | 欧美日韩国产精品一区二区三区 | 在线成人短视频 | 永久免费观看视频 | 国产不卡在线 | 国产黄色免费电影 | 91精品国产91久久久久福利 | 美女网站久久 | 国产一级黄色免费看 | 欧美精品一区二区三区一线天视频 | 狠狠干干| 美女网站视频免费都是黄 | 国产玖玖精品视频 | www久久久| 激情综合网五月婷婷 | 黄色a级片在线观看 | www久 | 91精品高清| 99热在 | 国产高清无线码2021 | 一区二区三区三区在线 | 欧美日韩免费一区二区 | 久久久精品成人 | 色婷婷av一区| 婷婷福利影院 | 乱子伦av | 国产99久久九九精品免费 | a午夜在线 | 五月婷婷久久综合 | www.天天草 | 亚洲精品18日本一区app | 精品国产人成亚洲区 | 欧美性极品xxxx做受 | 国产福利在线免费 | 97成人在线观看视频 | 成人 亚洲 欧美 | 美女黄视频免费看 | 久久99操| 九九视频免费观看视频精品 | 国产资源av| 欧美俄罗斯性视频 | 欧美日韩不卡一区二区三区 | 免费成人在线观看 | 精品视频在线免费 | 久久不射电影网 | 久久久精品福利视频 | 欧美日本一二三 | 91福利社区在线观看 | 超碰97成人| 国产福利91精品一区 | 黄色一区二区在线观看 | 亚洲v欧美v国产v在线观看 | 一区二区亚洲精品 | 精品久久久久久久久久久久久 | 亚洲成熟女人毛片在线 | 国产日韩中文在线 | 久久中文欧美 | 国产日韩在线视频 | 婷婷在线看 | 国产在线观看你懂得 | 欧美午夜理伦三级在线观看 | 最近中文字幕免费 | 国产一级片免费视频 | 中字幕视频在线永久在线观看免费 | 国产精品99久久久精品免费观看 | 日韩免费视频播放 | 激情自拍av | 日韩美精品视频 | 日日爽夜夜操 | 在线观看视频黄 | 在线看v片 | 国产精品免费麻豆入口 | 二区三区视频 | 2023亚洲精品国偷拍自产在线 | 国产高清成人 | 国产视频精品久久 | 色老板在线 | 在线视频在线观看 | 色婷婷激情电影 | 92国产精品久久久久首页 | 成人高清在线观看 | 国产高清成人av | 国产精品久久久久久久久久久免费 | 亚洲欧美视频在线播放 | 久久久精品 一区二区三区 国产99视频在线观看 | 国产精品成人aaaaa网站 | 午夜久久久久 | 日韩在线免费 | 丰满少妇麻豆av | 成人h在线播放 | 精品亚洲国产视频 | 插久久| 精品久久1| 夜添久久精品亚洲国产精品 | 玖草影院| 久久久免费毛片 | 日本在线观看中文字幕无线观看 | 精品99久久久久久 | 精品在线观看一区二区三区 | 91精品视频观看 | 日韩一级电影在线 | 国产免费一区二区三区最新6 | 亚洲色图av | 一级成人免费 | 国产黄影院色大全免费 | 在线观看韩国av | 免费观看成人网 | 91av在线免费观看 | 国产视频久久久久 | 欧美欧美 | 日韩高清成人在线 | 亚洲成人av一区二区 | 亚洲精品字幕在线观看 | 免费看片网址 | 天天干,天天插 | 高清国产在线一区 | 国产女做a爱免费视频 | 日韩电影在线看 | 国产91亚洲 | 伊人国产在线观看 | 四虎影视精品永久在线观看 | 成人一级视频在线观看 | 中文字幕中文中文字幕 | 夜夜操综合网 | 日日精品| 亚洲精品日韩一区二区电影 | 国产精品麻豆99久久久久久 | 99在线视频网站 | 中文av在线免费观看 | 91久久久国产精品 | 精品国产中文字幕 | 在线免费观看黄色大片 | 欧美日韩亚洲第一 | 天天玩天天操天天射 | 国产美女无遮挡永久免费 | 超碰人人91| 欧美日韩性生活 | 久久成人国产精品一区二区 | 日韩av午夜在线观看 | 夜夜躁天天躁很躁波 | 99热国产精品| 婷婷在线不卡 | 亚洲一级影院 | 日韩在线免费电影 | 精品国产自在精品国产精野外直播 | 国产精品视频全国免费观看 | av 在线观看| 亚洲最新av | 日韩婷婷 | 亚洲一级电影视频 | 久久久精品综合 | av电影不卡| 久久免费久久 | 亚洲精品一区二区在线观看 | 久久公开免费视频 | 日韩电影在线一区二区 | 国偷自产视频一区二区久 | 亚洲视频 中文字幕 | 欧美激情精品久久久久久免费 | 在线看片一区 | 成人久久久久久久久久 | 日韩久久激情 | 日韩在线免费看 | 天天人人综合 | 久久久久久久久久伊人 | 麻豆视频免费在线 | 国产成a人亚洲精v品在线观看 | 欧美成人中文字幕 | 2000xxx影视| 成年人免费在线播放 | 香蕉网址| 日韩在线 | 成人影视免费看 | 国产午夜精品一区二区三区欧美 | 久久久久久久99精品免费观看 | 国产成人一区二 | 97电院网手机版 | 黄色片网站| 亚洲一区二区精品视频 | 美女av电影 | av三级av | 91九色porny蝌蚪视频 | 国产美女免费观看 | 热99在线视频 | 成人在线一区二区三区 | 亚洲综合在线五月天 | 区一区二区三在线观看 | 99精品乱码国产在线观看 | 亚洲首页 | 精品久久国产一区 | 欧美日韩xx | 麻豆视频在线免费观看 | 亚洲综合最新在线 | 四虎成人精品 | 97国产精品亚洲精品 | 人人超碰在线 | 免费麻豆网站 | 久久综合九色综合网站 | 国产亚洲小视频 | av福利在线播放 | 中文字幕一区二区三区在线视频 | 五月婷婷综合色拍 | 成人av免费 | 亚洲高清视频在线播放 | 色婷婷亚洲综合 | 午夜精品久久久99热福利 | 国产一及片| 国产亚洲精品久久久网站好莱 | www.com.日本一级 | 久久久久久久久免费视频 | 免费看国产精品 | 四虎小视频 | 玖玖视频免费在线 | 少妇bbw揉bbb欧美 | 黄色一级在线免费观看 | 亚洲视屏| 国产涩图| 精品一二 | 欧美久久电影 | 精品福利在线观看 | 综合激情 | 日韩精品视频免费在线观看 | 国产中文字幕一区 | 日韩精品你懂的 | 91亚洲精品乱码久久久久久蜜桃 | 天天做天天爱天天综合网 | 99久久精品网 | 国产97色 | 国产精品久久久av久久久 | 特黄色大片| 国产精品一区二区三区在线 | 一区二区三区免费在线播放 | 亚洲国产精久久久久久久 | 91亚洲综合 | a黄色一级 | 日日麻批40分钟视频免费观看 | 亚洲午夜小视频 | 日产乱码一二三区别免费 | 成人精品久久久 | 99久久www| 国产精品久久9 | 国产日韩视频在线观看 | 欧美日韩免费视频 | 欧美成年性 | 日日干,天天干 | 一区二区三区高清 | 又长又大又黑又粗欧美 | 黄网站app在线观看免费视频 | 久久久国产精品亚洲一区 | 午夜少妇 | 在线免费观看黄色av | 色噜噜日韩精品一区二区三区视频 | 日韩三级视频在线看 | 国产精品久久久久久久久大全 | 久久高视频 | 久久久久久久久久影视 | 欧美a在线看 | 91在线免费播放 | 日本性动态图 | 亚洲一级电影视频 | 天天看天天干天天操 | 粉嫩av一区二区三区四区在线观看 | 在线不卡视频 | 亚洲视频h | 中文字幕在线国产精品 | av国产网站| 欧美精品国产精品 | 天天干天天摸天天操 | www.xxxx欧美| 奇米影视999 | 国产精品久久久久永久免费看 | 三级黄色理论片 | 国产精品一区二区久久国产 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 久久人人精 | 日韩中字在线 | 91尤物国产尤物福利在线播放 | 中文字幕在线观看第二页 | 夜夜夜夜猛噜噜噜噜噜初音未来 | av电影不卡 | 狂野欧美激情性xxxx欧美 | 国产又粗又猛又色又黄网站 | 免费在线观看av不卡 | 国产黄在线播放 | 免费av网站在线 | 国产精品男女 | 国产69久久精品成人看 | 91精品国产99久久久久久红楼 | 精品视频123区在线观看 | 日韩在线免费视频观看 | 91精品免费在线观看 | 国产三级午夜理伦三级 | 色噜噜在线观看 | 在线看毛片网站 | 日本成人免费在线观看 | 亚洲精品人人 | 黄色毛片观看 | 99精品国产一区二区三区麻豆 | 日韩高清无线码2023 | 亚洲欧美精品一区二区 | 亚洲综合狠狠干 | 久久国语 | av资源在线看| 久久成年视频 | 亚洲黄色网络 | 欧美黄色免费 | 久久视频二区 | 久久天天拍 | av免费电影在线观看 | 99精品视频网站 | 免费av小说 | 国产视频97 | 色妞久久福利网 | 日本视频高清 | 一区二区三区精品在线 | 国产一区二区高清视频 | 五月天六月丁香 | 精品国产伦一区二区三区观看说明 | 最近中文字幕免费av | 国产精品字幕 | 69av在线播放| 国产一级做a | 久久夜色精品国产欧美乱 | 成人理论电影 | 91免费高清视频 | 午夜电影久久久 | 久久国产精品视频观看 | 久久99久久99精品免观看软件 | 99热.com| 国产精品专区h在线观看 | 成人av一级片 | 手机看片国产 | 国产精品福利久久久 | 天天射天天舔天天干 | 欧美日韩天堂 | 在线看v片| 在线91视频 | 天天爽网站 | 超级av在线 | 国产精品在线看 | 亚洲精品午夜一区人人爽 | 日韩久久精品一区二区三区 | 国产99精品在线观看 | 992tv在线观看 | 午夜视频一区二区三区 | 日本三级国产 | 在线天堂8√ | 91chinesexxx| 亚洲尺码电影av久久 | 亚洲精品男女 | 精品一区电影国产 | 精品久久久久免费极品大片 | www.五月天婷婷.com | 天天操偷偷干 | 天天干夜夜想 | 国内精品久久久久久久久久久久 | 91av视频在线观看免费 | 国产一区二区高清不卡 | 精品久久久久久久久久久久久久久久 | 久久精品人 | 波多野结衣电影久久 | 六月婷婷久香在线视频 | 免费看成人 | 国产日韩精品一区二区 | 国产视频精品在线 | 国产精品一区二区 91 | 国产精品日韩在线观看 | 午夜资源站| 久久精品免费播放 | 草久在线| 久久久久久国产精品免费 | 国产一区二区精品91 | 在线亚洲免费视频 | 久久9精品 | 日本性高潮视频 | 久久有精品 | 亚洲国产一区二区精品专区 | 全久久久久久久久久久电影 | 麻豆视频网址 | 美女视频黄的免费的 | 亚洲少妇激情 | 黄p网站在线观看 | 色婷婷狠| 久草在线视频资源 | 视频在线在亚洲 | 蜜臀av在线一区二区三区 | 中文字幕一区二区三区乱码不卡 | 欧美激情精品久久久久久变态 | 国产美女视频一区 | 中文字幕色在线视频 | 国产999精品久久久影片官网 | 免费观看mv大片高清 | 亚洲手机av| 少妇精品久久久一区二区免费 | 国产精品成人免费 | 久久久亚洲电影 | 精品在线看 | 色丁香久久 | 国产一级片不卡 | 91看片在线看片 | 免费在线观看av电影 | 国产亚洲激情视频在线 | 激情伊人五月天 | 91成人精品一区在线播放69 | www.久久久| 国产日韩欧美网站 | 免费情趣视频 | 五月开心综合 | 中文字幕一区二区三区四区久久 | 九九免费观看视频 | 日日干夜夜骑 | 久久成人欧美 | 女人18精品一区二区三区 | 久久综合久久八八 | 国产免费又黄又爽 | 91精品国产入口 | 24小时日本在线www免费的 | 国产美女免费 | 日韩在线观看你懂得 | 97超碰在线播放 | 国产特级毛片aaaaaaa高清 | 二区三区在线观看 | 91视频专区| 欧美日韩裸体免费视频 | 亚洲婷久久 | 深夜国产在线 | 亚洲成a人片在线观看网站口工 | 香蕉在线视频观看 | 国产精品久久久久久影院 | 亚洲精品一区二区三区高潮 | 丁香 久久 综合 | 国产精品久久一区二区三区不卡 | 国产精品久久久久一区二区三区 | 亚洲精品福利在线观看 | 91av视屏 | 欧美男男激情videos | av色网站 | 午夜丰满寂寞少妇精品 | 日韩欧美精品一区二区 | 欧美激情第一区 | 91成人短视频在线观看 | 最近2019中文免费高清视频观看www99 | 亚洲狠狠操 | 波多野结衣视频网址 | 热久久免费视频 | 伊人伊成久久人综合网小说 | 欧美高清视频不卡网 | 五月天色丁香 | 欧美日韩激情网 | 久久精品视频国产 | 国产精品国产亚洲精品看不卡 | 五月天婷亚洲天综合网鲁鲁鲁 | 国产亚洲婷婷免费 | 韩日精品在线观看 | 国内精品视频在线 | 日韩欧美xx| 91精品国产一区二区在线观看 | 日韩黄色免费电影 | 麻豆91精品91久久久 | 中日韩男男gay无套 日韩精品一区二区三区高清免费 | 亚洲天堂网在线视频 | 91天堂在线观看 | 日韩av综合网站 | 在线午夜电影神马影院 | 在线 国产 亚洲 欧美 | 美女视频国产 | 人人藻人人澡人人爽 | 四虎在线影视 | 日韩在线观看中文 | 婷婷综合激情 | www.天天色.com| 欧美淫aaa免费观看 日韩激情免费视频 | 色综合婷婷久久 | 国内精品久久久久久久影视简单 | 欧美日韩国产亚洲乱码字幕 | 精品夜夜嗨av一区二区三区 | 国内精品中文字幕 | 久久dvd | 丁香婷婷基地 | 国产伦精品一区二区三区高清 | 天天干天天射天天操 | 麻豆久久一区二区 | 亚洲1级片 | 亚洲九九九在线观看 | 欧美aaa级片 | 欧美精品色| 特级毛片网 | 国产成人精品一区二区三区福利 | 欧美日韩视频在线一区 | 欧美一级免费片 | 99电影456麻豆 | 国产香蕉在线 | 丁香六月婷婷开心 | 亚洲精品午夜国产va久久成人 | 国产日韩在线视频 | 色国产在线 | 国产精品电影一区二区 | 97国产一区二区 | 亚洲久在线 | 日本三级国产 | 国产韩国精品一区二区三区 | 精品久久久久国产 | 日日躁天天躁 | 中文字幕免费观看视频 | 国产精品18久久久久久不卡孕妇 | 亚洲最新av在线网址 | 久久久在线视频 | 久久综合久久综合九色 | 久久国产视频网站 | 三级动图| 又黄又刺激视频 | 天堂资源在线观看视频 | 日韩动漫免费观看高清完整版在线观看 | 国产精品免费一区二区三区 | 九九免费在线观看视频 | 久久久久久精 | 97国产精品亚洲精品 | www色,com| 欧美久草视频 | 国产精品18久久久久久久网站 | 性日韩欧美在线视频 | 国产精品久久久久久久久搜平片 | 看毛片网站| 毛片视频网址 | 色综合天 | 91chinesexxx| 国产91小视频 | 国产一区二区在线精品 | 黄色aaaaa | 中文字幕在线观看av | 成人a在线 | 色网站国产精品 | 色视频网址 | 欧美色操 | 欧美精品免费视频 | 欧美精品一区二区蜜臀亚洲 | 免费视频区| 中文字幕在线免费看 | 二区精品视频 | 五月天婷婷丁香花 | 91精品国自产拍天天拍 | 国产精品网红直播 | 激情丁香 | 美女在线免费视频 | 亚洲精品久| 激情 婷婷 | 中文字幕一区二区三区乱码在线 | 国产精品久久毛片 | 三级黄在线 | 黄色精品免费 | 91麻豆免费视频 | 久久精品79国产精品 | 中文字幕精品一区二区精品 | 国产a精品 | 欧美99热| 在线视频一区观看 | 久久久久女人精品毛片 | 久久亚洲私人国产精品va | 国产福利一区二区三区在线观看 | 欧美在线视频日韩 | 日韩在线资源 | 麻豆视频观看 | 亚洲视频综合 | 亚洲理论片 | 国产三级视频在线 | 91大神免费视频 | 国产精品 亚洲精品 | 欧美俄罗斯性视频 | www.久久婷婷 | 在线91色 | 欧美日韩视频一区二区三区 | 深爱开心激情 | 国产高清永久免费 | 欧美做受高潮 | 国产91精品一区二区 | 国产精品久久伊人 | 国产一区二区三区 在线 | 奇米网8888 | 亚洲国产影院 | 精品人人人 | 亚洲免费av网站 | 成年人看片网站 | 在线观看视频一区二区 | 国产精品视频免费在线观看 | 激情一区二区三区欧美 | 免费看国产一级片 | 国产91精品看黄网站在线观看动漫 | 成人午夜网 | 美女黄网站视频免费 | 中文字幕乱码视频 | 女人高潮特级毛片 | 国产又黄又猛又粗 | 色狠狠综合 | 国产精品一区二区久久精品 | 波多野结衣一区二区三区中文字幕 | 亚洲精品国产日韩 | 伊人黄色网 | 色在线高清 | 成人黄色免费在线观看 | 天天亚洲| 久久国产精品色婷婷 | 少妇bbr搡bbb搡bbb | 日本黄色大片免费看 | 丁香免费视频 | 亚洲精选国产 | 热久久视久久精品18亚洲精品 | 国产女人18毛片水真多18精品 | 在线播放 日韩专区 | 丁香九月婷婷 | 丁香婷婷色综合亚洲电影 | 最新国产精品拍自在线播放 | 看片一区二区三区 | 又污又黄网站 | 久久激情日本aⅴ | 91麻豆精品国产自产在线 | 国产一区二区精品在线 | 国产精品欧美久久久久无广告 | 国产成人精品久久久久蜜臀 | 久久精品电影院 | 成年人黄色大全 | 99爱视频在线观看 | 久久精品五月 | 日本中文字幕观看 | 日韩黄在线观看 | 免费在线观看成人 | 日本巨乳在线 | 国色天香在线 | 成人欧美亚洲 | 欧美乱熟臀69xxxxxx | 99久久精品免费看国产免费软件 | 亚洲丁香久久久 | 在线免费国产 | 久久久久精 | 国产成人精品一区二区三区福利 | 久久久久亚洲精品 | 久久亚洲免费 | 天天射天天干天天插 | 欧美日韩观看 | 草在线| 欧美亚洲一区二区在线 | 日韩影视在线观看 | a级国产乱理论片在线观看 伊人宗合网 | 久久久国产精品电影 | 91成人小视频 | 91夜夜夜| 婷婷丁香自拍 | 二区三区在线视频 | 久久婷婷综合激情 | 日批视频 | 久久夜靖品| 国产91精品一区二区麻豆亚洲 | www久久久| 超碰在线亚洲 | 看片黄网站 | 在线观看911视频 | 中文字幕av播放 | 日韩中字在线 | 国产在线黄色 | 国产精品一区二区三区四区在线观看 | 日本中文字幕久久 | 99精品视频免费在线观看 | 日韩欧美视频免费在线观看 | 久久中文字幕视频 | 久久黄色a级片 | 国产aaa大片 | 91精品免费在线观看 | 国产美腿白丝袜足在线av | 精品麻豆入口免费 | 日本精品视频一区二区 | 一区二区三区四区免费视频 | 中文久草| 成年人在线播放视频 | 97在线视频免费看 | 免费看日韩片 | 亚洲夜夜综合 | 精品国产乱码久久久久久三级人 | 一区国产精品 | 色国产精品一区在线观看 | 精品一区二区免费在线观看 | 婷婷精品进入 | 亚洲永久精品在线观看 | 久久午夜精品视频 | 欧洲精品一区二区 | 97视频在线观看视频免费视频 | 日本黄色大片免费看 | 久久精品国产亚洲精品2020 | 欧美午夜一区二区福利视频 | 波多野结衣视频一区二区 | 开心色婷婷 | 国产一区二区精 | 国产精品久久久久久久久久尿 | 日韩久久久久 | 日韩专区av | 国产一区二区电影在线观看 | 国产精品 9999 | 在线观看 国产 | 久久国产精品久久精品 | 高清国产在线一区 | 国产91在线播放 | 成人免费观看完整版电影 | 国产不卡免费av | 91av视频| 天天操天天操 | 免费电影一区二区三区 | 亚洲狠狠婷婷综合久久久 | 欧美一级黄大片 | 欧美日韩一区二区三区在线观看视频 | 日本精品视频在线观看 | 香蕉视频在线免费看 | 久久免费视频这里只有精品 | 91大神电影 | 中文字幕av最新更新 | 天天操天操 | 免费看一及片 | 国产免费久久av | 黄色官网在线观看 | 激情久久影院 | 午夜视频亚洲 | 一二三四精品 | 欧美成人手机版 | 激情婷婷亚洲 | 日韩av午夜在线观看 | 欧美精彩视频 | 久久不卡国产精品一区二区 | 四虎在线免费 | www.狠狠插.com | 国产网红在线观看 | 久草在线播放视频 | 欧美a级免费视频 | 一本一本久久a久久 | 成人黄色视 | 亚洲激情综合 | 日日夜夜草 | 日韩电影在线观看中文字幕 | 911免费视频 | 狠狠色狠狠色 | 缴情综合网五月天 | 1000部18岁以下禁看视频 | 国产一区二区视频在线播放 | 免费av网址在线观看 | 伊人天堂网 | 中文字幕在线人 | 日本福利视频在线 | 国产午夜影院 | 日日色综合 | 中文字幕在线视频精品 | 日本免费久久高清视频 | 色婷婷骚婷婷 | 成人a免费看 | 免费一级特黄毛大片 | 91看毛片| www日日| 国产精品9区 | 亚洲欧洲国产视频 | www.久久爱.cn | 亚洲毛片久久 | 天天天天天操 | 亚洲激情电影在线 | 日本性高潮视频 | 国产一区二区在线免费播放 | 不卡的av在线播放 | 国产不卡一区二区视频 | 伊人天天| 成人av手机在线 | 免费看污污视频的网站 | 香蕉视频免费在线播放 | 97av视频| 日日夜夜精品免费 | 亚洲在线高清 | 天天色天天| 久久99久久99 | wwwwwww黄| 日本女人在线观看 | 在线视频婷婷 | 欧美性精品 | 欧美日韩裸体免费视频 | 99成人在线视频 | 国产成人精品久久二区二区 | 97成人在线观看视频 | 欧美日韩亚洲第一页 | 韩日精品中文字幕 | 久久视频在线观看 | 六月婷婷久香在线视频 | 日本性高潮视频 | 国产婷婷vvvv激情久 | 国产精品69久久久久 | 日韩视频一区二区 | 国产一区二区在线播放视频 | 在线观看视频免费播放 | 999视频网站 | 久久成人在线 | 亚洲精品一区二区三区高潮 | 国产99自拍 | 成年人国产在线观看 | 久久久精品国产一区二区电影四季 | 欧美一区二区免费在线观看 | 欧美一级激情 | 美女视频黄频大全免费 | 激情视频在线观看网址 | 久久综合狠狠综合 | av日韩国产 | 欧美日韩久久不卡 | 天天亚洲综合 | 国产美女精品在线 | 久草电影免费在线观看 | 6080yy精品一区二区三区 | 亚洲欧美激情精品一区二区 | 超碰在线1 | 人人爽人人看 | 色黄视频免费观看 | 91黄视频在线 | 91九色国产视频 | 麻豆一区二区 | 国产亚洲人成网站在线观看 | 久久久久国产一区二区三区四区 | 国产精品一区二区吃奶在线观看 | 国产99爱| 亚洲精品黄 | 麻豆91精品91久久久 | www91在线观看 | 综合久久久久久久 | 日韩一区二区三免费高清在线观看 | 五月天综合在线 | 91视频在线免费观看 | 中文字幕一区二区在线观看 | 欧美亚洲精品在线观看 | 91秒拍国产福利一区 | 国产一区二区三区四区在线 | 日韩av一区二区在线 | 国产精品九九视频 | 亚洲三级在线 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 久久tv | 国产日韩欧美在线免费观看 | 一区二区三区中文字幕在线观看 | 日本久久精 | 久久a热6 | 国产69精品久久久久9999apgf | 人成电影网 | 中文字幕观看视频 | 日韩在线首页 | av免费在线观看网站 | 超级碰碰碰视频 | 免费av在线网站 | 日本h视频在线观看 |