整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          自己動手,豐衣足食:從零開始寫個 IDEA 插件,要

          自己動手,豐衣足食:從零開始寫個 IDEA 插件,要啥功能就做啥

          Java代碼的時候,經常會涉及到重復性的操作,這個時候就會想要是有這樣一個插件就好了,如果是大家都會遇到的場景,IDE或許已經提供了,再不然也有可能有人編寫了相關的插件。

          要是這個操作是你們的編碼環境特有的,那就只能自己寫工具了。所以這里來學學如何編寫IDEA插件,讓自己的編程環境更加強大,更好的進行裝逼。

          開發環境

          開發IDEA插件有以下這些依賴:

          • IntelliJ IDEA Community Edition
          • IntelliJ IDEA Community Edition 源碼
          • Plugin DevKit 插件
          • IntelliJ Platform SDK

          安裝IntelliJ IDEA Community Edition

          你可能已經安裝了Ultimate版本,但是你還是需要安裝[IDEA][]的社區版本。因為商業版是閉源的,所以在調試時無法調試核心代碼。

          下載IntelliJ IDEA Community Edition源碼

          社區版的安裝包里是不包含源碼的,所以我們需要手動從github上clone一份:

          git clone --depth 1 git://git.jetbrains.org/idea/community.git idea

          關于從源碼運行IDEA的方法參考 Check Out And Build Community Edition:

          http://www.jetbrains.org/intellij/sdk/docs/basics/checkout_and_build_community.html

          添加IDEA jdk

          雖然不知道原因,但是根據Check Out And Build Community Edition:

          http://www.jetbrains.org/intellij/sdk/docs/basics/checkout_and_build_community.html

          我們需要建立一個 IDEA jdk來運行插件:

          除非你在Mac上使用官方JDK,否則你需要手動添加 /lib/tools.jar到classpath中。關注微信公眾號:匠心零度,在后臺回復:idea,可以獲取我整最新 IDEA 教程,都是干貨。

          配置IntelliJ Platform SDK

          打開 File|ProjectStructure新建一個 IntelliJPlatformSDK:

          Java SDK選擇我們剛剛建立的 IDEA jdk:

          然后我們可以把下載的IDEA社區版源碼添加到源碼路徑中,這樣在調試時,就可以調試IDEA自身的代碼了:

          第一個插件

          我們來編寫一個最簡單的插件來學習編寫一個插件的完整步驟。

          新建工程

          選擇 IntellJPlatformPlugin,然后Project SDK指定剛剛新建的plugin sdk:

          新建的插件項目:

          插件根目錄下有兩個目錄 src和 resources。src是插件代碼目錄, resource是插件資源目錄,其中 META-INF/plugin.xml是插件的描述文件,就像Java web項目的 web.xml一樣。

          plugin.xml默認的內容如下:

          <idea-plugin>    <id>com.your.company.unique.plugin.id</id>    <name>Plugin display name here</name>    <version>1.0</version>    <vendor email="support@yourcompany.com" url="http://www.yourcompany.com">YourCompany</vendor>    <description><!\[CDATA\[      Enter short description for your plugin here.<br>        <em>most HTML tags may be used</em>      \]\]></description>    <change-notes><!\[CDATA\[      Add change notes here.<br>        <em>most HTML tags may be used</em>      \]\]>  </change-notes>    <!\-\- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting\_started/build\_number_ranges.html for description -->  <idea-version since-build="145.0"/>    <!\-\- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting\_started/plugin\_compatibility.html       on how to target different products -->  <!\-\- uncomment to enable plugin in all products  <depends>com.intellij.modules.lang</depends>    -->  <extensions defaultExtensionNs="com.intellij">      <!\-\- Add your extensions here -->  </extensions>    <actions>      <!\-\- Add your actions here -->  </actions>  </idea-plugin>  

          新建一個Action

          插件擴展IDEA最常見的方式就是在菜單欄或者工具欄中添加菜單項,用戶通過點擊菜單項來觸發插件功能。IDEA提供了 AnAction類,這個類有一個虛方法 actionPerformed,這個方法會在每次菜單被點擊時調用。

          新建一個自定義的Action有兩個步驟:

          1、 繼承 AnAction類,在 actionPerformed方法中實現插件邏輯 2、 注冊action,有兩種方式,通過代碼注冊和通過 plugin.xml注冊

          我們先寫一個簡單的Action類:

          publicclass TextBoxes extends AnAction {      // 如果通過Java代碼來注冊,這個構造函數會被調用,傳給父類的字符串會被作為菜單項的名稱    // 如果你通過plugin.xml來注冊,可以忽略這個構造函數    public TextBoxes() {          // 設置菜單項名稱        super("Text _Boxes");          // 還可以設置菜單項名稱,描述,圖標        // super("Text _Boxes","Item description",IconLoader.getIcon("/Mypackage/icon.png"));    }      public void actionPerformed(AnActionEvent event) {          Project project=event.getData(PlatformDataKeys.PROJECT);          String txt=Messages.showInputDialog(project, "What is your name?", "Input your name", Messages.getQuestionIcon());          Messages.showMessageDialog(project, "Hello, " \+ txt + "!\n I am glad to see you.", "Information", Messages.getInformationIcon());      }  }  

          然后我們在 plugin.xml中注冊這個Action:

          <actions>    <group id="MyPlugin.SampleMenu" text="_Sample Menu" description="Sample menu">      <add-to-group group-id="MainMenu" anchor="last"  />         <action id="Myplugin.Textboxes"class="Mypackage.TextBoxes" text="Text _Boxes" description="A test menu item" />    </group>  </actions>  

          這里我們新建了一個菜單組,其中text字符串的下劃線表示這個字母作為快捷鍵。這個菜單顯示的效果如下:

          除了手動新建Action,IDEA還提供了快速新建的方法,在代碼目錄上點擊新建,可以看到Action:

          可以在這個面板中填寫你要新建的Action信息,IDEA會幫你新建類,還有在plugin.xml中幫你注冊:

          運行插件

          運行插件特別簡單,和運行普通Java代碼一樣,點擊運行或者調試的按鈕,就會啟動一個新的IDEA實例,這個實例中插件是生效的。

          點擊Text Boxes就可以看到插件的效果了。

          作者 | 木杉的博客

          來源 | http://imushan.com

          最后

          剛整理 2020 年全套最新精品技術資料免費發給你! (原價最少8999元,超2000G!)

          領取 看看下面!!

          1、點贊 + 評論 (勾選 “轉發” )

          2、關注小編私信。點擊頭像,關注。并私信回復關鍵詞: 1024

          時雖然經常接觸IDEA,但是始終還是一些功能不了解的。最近由一個IDEA提示Unable to parse template"Class"問題,讓我發現了IDEA的自定義代碼模板功能。

          最近由于更換了JDK,打開IDEA發現創建的Class提示以下異常


          所以,去百度搜索了下原因,才知道換了JDK后導致IDEA里邊的模板空了,包括什么interface、xml、html創建模板都是空的,比如創建Class時的模板就像下圖所示:


          其實正常情況下他是這樣的:


          這里的模板解釋一下,就是每當你創建一個class或者html后文件中會自動生成一些代碼,那就是有模板生成的。

          至于為什么替換JDK后會導致Idea里邊的模板被掏空了,大家可以下去研究一下!所以根據以上解決我遇到問題辦法就有兩個:

          一個是把上邊的模板按照正確的方式敲上去,當然我選擇第二種方式,那就是找到安裝IDEA目錄下的bin目錄下文件idea.exe.vmoptions 或 idea64.exe.vmoptions,然后修改在idea.exe.vmoptions 或 idea64.exe.vmoptions中加入配置
          -Djdk.util.zip.ensureTrailingSlash=false

          當然,問題到這里已經解決了!我去看了下上邊模板的代碼,我覺得很有意思,想到我們在寫入口類的時候一定會在類里邊有這樣一個靜態main函數:

          public static void main(String[] args) {...}

          那我何不效仿普通的Class,添加一個入口類的模板呢,實驗了一下,確實有效果


          其實在我們項目代碼中可能經常會遇到重復代碼的問題,比如前端html的某些頁面,其實我們可以使用這個方式,就不用去重復的COPY代碼,當然有些前端模板可以使用特殊的標簽實現,但有時候在某些項目中,這也不失為一種解決方式。


          --|END|--


          微信搜一搜“宅男一號”加關注,給你帶來更多精彩分享!

          欲善其事,必先利其器 。每次看到別人用IDEA 的時候,都會發現,哇哦,還能這樣操作,還有每次注冊碼失效的時候,我都為自己在用盜版軟件而“悔恨為什么不多賺錢支持正版”,然后到處找注冊碼,所以有了這篇~安裝和寫hello world 部署到服務器這些就不記錄了


          InteliJ IDEA 介紹

          IDEA,全稱 IntelliJ IDEA,是 Java 語言的集成開發環境,IDEA 在業界被公認為是最好的 java 開發工具之一,尤其在智能代碼助手、代碼自動提示、重構、J2EE 支持、Ant、JUnit、CVS 整合、代碼審查、創新的 GUI 設計等方面的功能可以說是超常的。

          IDEA是 JetBrains 公司的產品,公司旗下還有其它產品,比如:WebStorm、DataGrip、GoLand...

          優勢

          • 強大的整合能力。比如:Git、Maven、Spring 等
          • 提示功能的快速、便捷
          • 提示功能的范圍廣
          • 好用的快捷鍵和代碼模板 private static final psf
          • 精準搜索( IDEA 會將您的源代碼編入索引 )
          • 不需要頻繁的Ctrl+S(自動保存)
          • 自帶反編譯器,方便查看源碼

          在 Eclipse 中我們有 Workspace(工作空間)和 Project(工程)的概念,在 IDEA 中只有 Project(工程)和 Module(模塊)的概念 。Eclipse 中 workspace 相當于 IDEA 中的 Project ,Eclipse 中 Project 相當于 IDEA 中的 Module

          IDEA 和 Eclipse 的術語對比

          EclipseIntelliJ IDEAWorkspaceProjectProjectModuleFacetFacetLibraryLibraryJRESDKClasspath variablePath variable

          模板

          實時代碼模板 (Live Templates)

          它的原理就是配置一些常用代碼字母縮寫,在輸入簡寫時可以出現你預定義的固定模式的代碼,使得開發效率大大提高,同時也可以增加個性化。最簡單的例子 就是在 Java 中輸入 sout 會出現 System.out.println();

          Editor – General – Postfix Completion 查看已經存在的模板(不可修改)

          Editor — Live Templates 查看或自定義模板(可以添加方式注釋、類注釋)

          *
           * @description:
           * @param $param$
           * @return $return$
           * @date $time$ $date$
           **/

          類注釋一般通過 File — Setting — Editor — Live Templates — File and Code Templates 設置

          斷點調試

          程序猿么,每天都在寫bug,所以這個功能一定得用的溜

          配置通用調試屬性和行為 :Settings/Preferences | Build, Execution, Deployment | Debugger

          1. 斷點類型

          斷點有四種類型:

          1. 行斷點(Line Breakpoints):最經常用的方式, 可以設置在任何可執行的代碼行上
          2. 方法斷點(Method Breakpoints):在進入或退出指定的方法或其實現之一時掛起程序,允許您檢查方法的進入/退出條件
          3. 字段斷點(Field Watchpoints):當指定的字段被讀取或寫入時,掛起程序。需要注意的是,默認只有寫才會停下,想要讓讀取時也停下,需要右擊斷點,在WatchField access上打勾才行
          4. 異常斷點(Exception Breakpoints):當拋出Throwable或其子類時掛起程序 。可以在 **Run — View Breakpoints **中的 Java Exception Breakpoints 里添加異常的具體類型。這樣的話,程序中一旦發生了這種異常馬上就會停下來

          2. 設置斷點

          左鍵點擊行號欄(快捷鍵:Ctrl+F8 )

          設置異常斷點

          點擊Debug工具窗口左側的的 View Breakpoints

          或者快捷鍵 Ctrl+Shift+F8 ,可以新建異常檢測,或者檢測所有異常(Any Exception) 情況,這樣只要程序有相應異常,就會掛起

          條件斷點

          有時候我們在循環處理數據時候,可能只關心某個條件的數據,就可以在斷點位置右鍵,設置斷點條件,(下圖,在i==6 的時候掛起程序)

          多線程斷點

          在調試多線程代碼時候,只能串行調試,因為IDEA在Debug時默認阻塞級別是ALL,會阻塞其它線程,只有在當前調試線程走完時才會走其它線程。如果像下圖一樣是lambda表達式的行,可以選擇斷點類型。

          可以在 View Breakpoints 里選擇 Thread (右鍵斷點),這樣就可以Frames 切換線程debug了。

          3. 逐步執行程序

          • step over —— 步過,如果當前行斷點是一個方法,則不進入當前方法體內
          • step into —— 步入,如果當前行斷點是一個方法,則進入當前方法體內,一般用于進入自定義方法內,不會進入官方類庫的方法
          • force step into Shift+Alt+F7 —— 強制步入,能進入任何方法,查看底層源碼的時候可以用這個進入官方類庫的方法
          • step out Shift+F8 —— 步出, 從步入的方法內退出到方法調用處
          • Drop frame —— 回退到上一步
          • Run to cursor Alt+F9 —— 運行到光標處,可以將光標定位到你需要查看的那一行,然后使用這個功能,代碼會運行至光標行,而不需要打斷點


          斷點這塊有好多功能,可以分析JVM中堆對象、Java8的Stream操作,留個傳送門。。。TODO

          某大佬總結的:在Intellij IDEA中使用Debug

          官方教程:https://www.jetbrains.com/help/idea/debugging-code.html

          配置Tomcat遠程調試

          有時候會有一些服務器差異問題導致的問題,不好排查,這個時候就想遠程調試下服務器上的代碼。

          ① 配置tomcat, 在tomcat/bin下的 catalina.sh 上邊添加下邊的一段設置

          -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9527

          ② IDEA設置

          ③ 在IDEA上啟動遠程 tomcat后,就能debug了

          還有一種復制Startup/Connection 中的內容到 JAVA_OPTS 中,沒有嘗試

          書簽

          書簽在翻看源碼或者大佬代碼的時候,可以方便記錄代碼的調用鏈路。

          書簽有匿名書簽(可以有無數個)和標記書簽(有數字或者字母助記符的書簽)兩種

          操作書簽:Navigate | Bookmarks 可以創建匿名書簽 Toggle Bookmark。創建標技書簽 Toggle Bookmark With Mnemonic,查看標簽 Show Bookmarks

          插件

          • Lombok —— 開發神器,可以簡化你的實體類
          • Maven Helper —— 方便顯示maven的依賴樹,處理沖突的好幫手
          • .ignore —— 忽略不需要提交的文件
          • FindBugs-IDEA —— 代碼審查
          • Alibaba Java Coding Guidelines —— 阿里的開發設計規范
          • Alibaba Cloud Toolkit —— 幫助開發者更高效地開發、測試、診斷并部署應用。通過插件,可以將本地應用一鍵部署到任意服務器或云端;并且還內置了 Arthas 診斷、Dubbo工具、Terminal 終端、文件上傳、函數計算和 MySQL 執行器等工具
          • Easy Code —— 支持自定義模板的代碼生成插件
          • RestfulToolkit —— RESTful 服務開發輔助工具集(安利,可以直接在右側的RestServices查看,所有項目的restful接口,還可以通過 Ctrl \ 全局搜索 )

          IDEA 主題和插件排行榜:https://plugins.jetbrains.com/search?orderBy=downloads&products=idea

          激活

          僅供個人學習使用~~

          1. 下載補丁文件 jetbrains-agent.jar 并將它放置到 Idea安裝目錄的bin目錄下,https://pan.baidu.com/s/1Zy-vQGOdKoqDdB8sWIcQOg

          免費試用,進入IDEA, 點擊最上面的菜單欄中的 Help - Edit Custom VM Options,在idea.exw.vmoptionos文件中加入-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2019.2.4\bin\jetbrains-agent.jar(換成你的jar包目錄),重啟

          2. 重啟IDEA 后,打開 Help — Register ,在License Server 填上, http://jetbrains-license-server ,失敗的話就輸入下邊的注冊碼

          520E5894E2-eyJsaWNlbnNlSWQiOiI1MjBFNTg5NEUyIiwibGljZW5zZWVOYW1lIjoicGlnNiIsImFzc2lnbmVlTmFtZSI6IiIsImFzc2lnbmVlRW1haWwiOiIiLCJsaWNlbnNlUmVzdHJpY3Rpb24iOiJVbmxpbWl0ZWQgbGljZW5zZSB0aWxsIGVuZCBvZiB0aGUgY2VudHVyeS4iLCJjaGVja0NvbmN1cnJlbnRVc2UiOmZhbHNlLCJwcm9kdWN0cyI6W3siY29kZSI6IklJIiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In0seyJjb2RlIjoiUlMwIiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In0seyJjb2RlIjoiV1MiLCJwYWlkVXBUbyI6IjIwODktMDctMDcifSx7ImNvZGUiOiJSRCIsInBhaWRVcFRvIjoiMjA4OS0wNy0wNyJ9LHsiY29kZSI6IlJDIiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In0seyJjb2RlIjoiREMiLCJwYWlkVXBUbyI6IjIwODktMDctMDcifSx7ImNvZGUiOiJEQiIsInBhaWRVcFRvIjoiMjA4OS0wNy0wNyJ9LHsiY29kZSI6IlJNIiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In0seyJjb2RlIjoiRE0iLCJwYWlkVXBUbyI6IjIwODktMDctMDcifSx7ImNvZGUiOiJBQyIsInBhaWRVcFRvIjoiMjA4OS0wNy0wNyJ9LHsiY29kZSI6IkRQTiIsInBhaWRVcFRvIjoiMjA4OS0wNy0wNyJ9LHsiY29kZSI6IkdPIiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In0seyJjb2RlIjoiUFMiLCJwYWlkVXBUbyI6IjIwODktMDctMDcifSx7ImNvZGUiOiJDTCIsInBhaWRVcFRvIjoiMjA4OS0wNy0wNyJ9LHsiY29kZSI6IlBDIiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In0seyJjb2RlIjoiUlNVIiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In1dLCJoYXNoIjoiODkwNzA3MC8wIiwiZ3JhY2VQZXJpb2REYXlzIjowLCJhdXRvUHJvbG9uZ2F0ZWQiOmZhbHNlLCJpc0F1dG9Qcm9sb25nYXRlZCI6ZmFsc2V9-DZ/oNHBfyho0XrrCJJvAOKg5Q1tLBgOdbCmzCKwkuM+Yryce0RoOi3OOmH6Ba/uTcCh/L37meyD0FJdJIprv59y4+n+k2kIeF/XKrKqg0dEsDUQRw0lUqqMt99ohqa+zmbJ44Yufdwwx/F1CtoRGvEQ2Mn0QjuqRoZJZ3wiT5Am22JiJW8MaNUl3wg9YPj+OPGARKKJUdUJ0NGUDQBcBAv5ds8LhbSbJSbPkbkwH/a1QMz4nEdn6lRDKI1aFIn43QhBSCFqvUq6TPJlbIJ0ZjE+PyZjHFBKCgkry0DHPXU2BbtIZPsksQnN3fx240a9K6sN7peZnLpEoMoq23FEz4g==-MIIElTCCAn2gAwIBAgIBCTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTE4MTEwMTEyMjk0NloXDTIwMTEwMjEyMjk0NlowaDELMAkGA1UEBhMCQ1oxDjAMBgNVBAgMBU51c2xlMQ8wDQYDVQQHDAZQcmFndWUxGTAXBgNVBAoMEEpldEJyYWlucyBzLnIuby4xHTAbBgNVBAMMFHByb2QzeS1mcm9tLTIwMTgxMTAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5ndaik1GD0nyTdqkZgURQZGW+RGxCdBITPXIwpjhhaD0SXGa4XSZBEBoiPdY6XV6pOfUJeyfi9dXsY4MmT0D+sKoST3rSw96xaf9FXPvOjn4prMTdj3Ji3CyQrGWeQU2nzYqFrp1QYNLAbaViHRKuJrYHI6GCvqCbJe0LQ8qqUiVMA9wG/PQwScpNmTF9Kp2Iej+Z5OUxF33zzm+vg/nYV31HLF7fJUAplI/1nM+ZG8K+AXWgYKChtknl3sW9PCQa3a3imPL9GVToUNxc0wcuTil8mqveWcSQCHYxsIaUajWLpFzoO2AhK4mfYBSStAqEjoXRTuj17mo8Q6M2SHOcwIDAQABo4GZMIGWMAkGA1UdEwQCMAAwHQYDVR0OBBYEFGEpG9oZGcfLMGNBkY7SgHiMGgTcMEgGA1UdIwRBMD+AFKOetkhnQhI2Qb1t4Lm0oFKLl/GzoRykGjAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBggkA0myxg7KDeeEwEwYDVR0lBAwwCgYIKwYBBQUHAwEwCwYDVR0PBAQDAgWgMA0GCSqGSIb3DQEBCwUAA4ICAQBonMu8oa3vmNAa4RQP8gPGlX3SQaA3WCRUAj6Zrlk8AesKV1YSkh5D2l+yUk6njysgzfr1bIR5xF8eup5xXc4/G7NtVYRSMvrd6rfQcHOyK5UFJLm+8utmyMIDrZOzLQuTsT8NxFpbCVCfV5wNRu4rChrCuArYVGaKbmp9ymkw1PU6+HoO5i2wU3ikTmRv8IRjrlSStyNzXpnPTwt7bja19ousk56r40SmlmC04GdDHErr0ei2UbjUua5kw71Qn9g02tL9fERI2sSRjQrvPbn9INwRWl5+k05mlKekbtbu2ev2woJFZK4WEXAd/GaAdeZZdumv8T2idDFL7cAirJwcrbfpawPeXr52oKTPnXfi0l5+g9Gnt/wfiXCrPElX6ycTR6iL3GC2VR4jTz6YatT4Ntz59/THOT7NJQhr6AyLkhhJCdkzE2cob/KouVp4ivV7Q3Fc6HX7eepHAAF/DpxwgOrg9smX6coXLgfp0b1RU2u/tUNID04rpNxTMueTtrT8WSskqvaJd3RH8r7cnRj6Y2hltkja82HlpDURDxDTRvv+krbwMr26SB/40BjpMUrDRCeKuiBahC0DCoU/4+ze1l94wVUhdkCfL0GpJrMSCDEK+XEurU18Hb7WT+ThXbkdl6VpFdHsRvqAnhR2g4b+Qzgidmuky5NUZVfEaZqV/g==

          3. Help — About,搞定

          參考

          IntelliJ IDEA 2019.3官方指南 https://www.jetbrains.com/help/idea/installation-guide.html

          idea2019激活 https://segmentfault.com/a/1190000021488264


          主站蜘蛛池模板: 中文字幕精品一区二区| 亚洲乱码av中文一区二区| 成人免费视频一区| 一区二区在线电影| 2018高清国产一区二区三区 | 亚洲日韩AV一区二区三区中文 | 视频一区二区在线观看| 日本一区二区三区精品国产| 国产精品xxxx国产喷水亚洲国产精品无码久久一区| 无码人妻一区二区三区免费| 国产一区二区三区免费在线观看| 精品人妻码一区二区三区| 精品无码人妻一区二区免费蜜桃| 欧美成人aaa片一区国产精品 | 亚洲综合无码精品一区二区三区 | 秋霞日韩一区二区三区在线观看| 丰满人妻一区二区三区视频| 中文字幕精品一区二区精品 | 后入内射国产一区二区| 红桃AV一区二区三区在线无码AV| 精品性影院一区二区三区内射| 色屁屁一区二区三区视频国产| 国产免费播放一区二区| 国产一区二区久久久| 国产精品一区二区av不卡| 久久精品无码一区二区无码| 国产一区二区三区福利| 台湾无码一区二区| 日本强伦姧人妻一区二区| 性色av一区二区三区夜夜嗨| 国产一区视频在线免费观看| 久久久久人妻一区精品性色av| 国产传媒一区二区三区呀| 人妻AV中文字幕一区二区三区| 日本精品一区二区久久久| 国产精品夜色一区二区三区| 国产一区三区三区| 国产伦一区二区三区免费| 伊人无码精品久久一区二区| 国产探花在线精品一区二区| 美女视频一区二区三区|