整合營銷服務商

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

          免費咨詢熱線:

          Spring Boot快速開發企業級Admin管理后

          Spring Boot快速開發企業級Admin管理后臺


          介 | Intro

          Erupt 是一個低代碼 全棧類 框架,它使用 Java 注解 動態生成頁面以及增、刪、改、查、權限控制等后臺功能。

          零前端代碼、零 CURD、自動建表,僅需 一個類文件 + 簡潔的注解配置,快速開發企業級 Admin 管理后臺。

          提供企業級中后臺管理系統的全棧解決方案,大幅壓縮研發周期,專注核心業務。

          完美取代 代碼生成器,開發后臺管理系統更優解!

          特性 | Features

          • 易于上手:會簡單的 Spring Boot 基礎知識即可
          • 使用簡單:僅需了解 @Erupt@EruptField 兩個注解即可上手開發
          • 代碼簡潔:前端零代碼,后端 template、controller、service、dao 都不需要,僅需一個類文件即可
          • 敏捷開發:僅單個.java文件即可實現后臺管理功能,專注業務與核心功能的研發
          • 快速迭代:需求變更僅需修改或添加注解配置即可,迭代速度比需求討論速度還快
          • 功能強大:動態條件處理,支持增刪改查等功能代理接口,Session存儲機制選擇,行為日志記錄等
          • 自動建表:依托于JPA可自動幫你完成數據庫建表相關工作
          • 低侵入性:幾乎所有功能都圍繞注解而展開,不影響Spring Boot其他功能或三方庫庫的使用
          • 多數據源:支持:MySQL、Oracle、SQL Server、PostgreSQL、H2,甚至支持MongoDB
          • 大量組件:滑動輸入、時間選擇、一對多、圖片上傳、代碼編輯器、自動完成、樹、多對多、地圖等23類組件
          • 豐富展示:普通文本、二維碼、鏈接、圖片、HTML、代碼段、iframe、swf等
          • 代碼生成:erupt代碼已經足夠簡潔,代碼生成器可進一步提升開發效率
          • 高擴展性:支持自定義數據源實現、自定義頁面、動態權限管理、生命周期函數、自定義OSS
          • 界面美觀:每個交互都精心設計,產品思維打磨,只為了更好的操作體驗
          • 權限管理:用戶管理、角色管理、組織管理、菜單管理、登錄日志、操作日志等
          • 高安全性:可靠的安全機制,登錄白名單,權限驗證,注解項檢查,細顆粒度權限控制,為你的數據保駕護航
          • 前后端分離:后端與前端可分開部署
          • 響應式布局:支持PC端手機端等各種規格的設備中使用
          • 無需二次開發:僅需引用 jar 包即可 !
          • 支持擴展頁面:可開發自定義頁面,自定義彈出層,且支持:原生H5 / Freemarker / Thymeleaf等方式渲染

          ? 演示截圖 | Screenshot


          為什么要做 Erupt ?

          無論開發怎樣的系統,都需要配套的管理后臺做數據支撐,是軟件開發中必不可少的一環,但實際開發中存在無法規避的痛點,如:開發效率低下、接口對接繁瑣、界面差強人意、代碼重復、有安全漏洞,導致開發成本極高。

          雖然近些年來 代碼生成器 成了后臺開發的新寵,但它真的是后臺開發的最優解嗎?
          代碼生成器的本質還是生成繁瑣的前端與后臺代碼,一旦修改后期生成的代碼很難合并,想想 Mybatis-Generator,基本上就是一次性的東西,雖然減輕了部分工作,可解決方式并非最佳。

          開發后臺管理系統大部分情況下只想做個普通的增刪改查界面,用于數據管理,類似下面這種:

          @Erupt(
                 name = "簡單的例子",
                 power = @Power(importable = true, export = true)
          )
          @Table(name = "t_simple")   //數據庫表名
          @Entity
          public class Simple extends BaseModel {
          
              @EruptField(
                      views = @View(title = "文本"),
                      edit = @Edit(title = "文本", notNull = true, search = @Search)
              )
              private String input;
          
              @EruptField(
                      views = @View(title = "數值", sortable = true),
                      edit = @Edit(title = "數值", search = @Search)
              )
              private Float number;
          
              @EruptField(
                      views = @View(title = "布爾"),
                      edit = @Edit(title = "布爾")
              )
              private Boolean bool;
          
              @EruptField(
                      views = @View(title = "時間"),
                      edit = @Edit(title = "時間", search = @Search(vague = true))
              )
              private Date date;
          
          }
          

          功能體驗

          這個界面雖然用 Vue + Ant Design + SSM 也能做出個大概,但仔細觀察會發現它有大量細節功能如:

          • 有按鈕可以查詢、新增、批量刪除、excel 導入導出
          • 可以對數據做篩選、隱藏某列、按某列排序
          • 表格有分頁與匯總,可預覽單行數據
          • 多種組件、有校驗規則

          全部實現這些僅前端就需要大量的代碼,后端的接口與業務邏輯更不在少數。

          但可以看到,用 erupt 只需要 30幾行 代碼就能完成,

          完全不需要了解 Angular / React / Vue / Jquery

          而且不需要了解 JavaScript / HTML / CSS

          甚至不需要了解 Spring MVC / Mybatis / SQL

          即便沒學過 erupt 也能猜到大部分配置的作用,只需要簡單配置就能完成所有后臺頁面開發。

          這正是建立 erupt 的初衷,對于大部分常用頁面,應該使用最簡單的方法來實現,甚至不需要學習各種框架和工具,專注核心業務,告別 996,省下的時間做自己喜歡做的事,從此不再因為繁瑣的后臺開發而焦頭爛額。

          下載使用 | Download

          下載最新的JAR或通過Maven獲取。

          <!--用戶權限管理-->
          <dependency>
            <groupId>xyz.erupt</groupId>
            <artifactId>erupt-upms</artifactId>
            <version>LATEST-VERSION</version>
          </dependency>
          <!--接口數據安全-->
          <dependency>
            <groupId>xyz.erupt</groupId>
            <artifactId>erupt-security</artifactId>
            <version>LATEST-VERSION</version>
          </dependency>
          <!--后臺WEB界面-->
          <dependency>
            <groupId>xyz.erupt</groupId>
            <artifactId>erupt-web</artifactId>
            <version>LATEST-VERSION</version>
          </dependency>
          

          詳細使用步驟

          模塊說明 | Module

          erupt
          ├── erupt-annotation -- 核心注解聲明
          ├── erupt-core -- 核心功能實現
          ├── erupt-data -- 數據實現包
               ├── erupt-jpa -- 關系型數據庫erupt實現
               └── erupt-mongodb -- mongodb數據庫erupt實現
          ├── erupt-job -- 定時任務功能,支持動態定時任務,郵件發送,任務日志等功能
          ├── erupt-security -- 接口數據安全模塊
          ├── erupt-upms -- 用戶權限管理
          ├── erupt-tpl -- 支持在 erupt 中自定義頁面,自定義圖表,自定義彈出層,模板引擎支持:FreeMarker / Thymeleaf / 原生H5 / Velocity 等
          ├── erupt-generator -- 代碼生成器,通過簡單配置,生成 erupt 代碼段
          └── erupt-web -- 前端頁面
          
          erupt-pro
          ├── erupt-workflow -- 基于erupt實現的工作流模塊(開發中)
          ├── erupt-dataflow -- 基于erupt實現的數據流模塊(開發中)
          └── erupt-bi -- 通過 sql 加 js 混編實現動態報表,支持:多數據源、自定義函數、圖表開發等(付費模塊)
          
          erupt-site -- Erupt 官方網站 https://github.com/erupts/erupt-site
          
          erupt-web-angular -- Erupt 前端源碼,暫不開放,如有自定義頁面的需求,可使用 erupt-tpl 模塊
          
          

          技術體系 | Technology system

          后端:Java 8、 ScriptEngine、 Annotation、 JDBC、 Reflect、 Spring Boot、 JPA、 Hibernate、 Quartz、 Gson、 Lombok、 POI ...

          前端:JavaScript、 H5、 MVVM、 Router、 Angular CLI、 Angular、 NG-ZORRO、 NG-ALAIN、 G2Plot、 RxJS、 TypeScript、 Less ...

          原文鏈接:https://mp.weixin.qq.com/s/r3Ch-Xq-esQp9nH054pqCg

          使用文檔:

          https://www.yuque.com/yuepeng/erupt

          項目地址:

          gitee: https://gitee.com/erupt/erupt-example

          github: https://github.com/erupts/erupt-example

          | Intro

          Erupt 是一個低代碼 全棧類 框架,它使用 Java 注解 動態生成頁面以及增、刪、改、查、權限控制等后臺功能。

          零前端代碼、零 CURD、自動建表,僅需 一個類文件 + 簡潔的注解配置,快速開發企業級 Admin 管理后臺。

          提供企業級中后臺管理系統的全棧解決方案,大幅壓縮研發周期,專注核心業務。

          完美取代 代碼生成器,開發后臺管理系統更優解!

          特性 | Features

          • 易于上手:會簡單的 Spring Boot 基礎知識即可
          • 使用簡單:僅需了解 @Erupt@EruptField 兩個注解即可上手開發
          • 代碼簡潔:前端零代碼,后端 template、controller、service、dao 都不需要,僅需一個類文件即可
          • 敏捷開發:僅單個.java文件即可實現后臺管理功能,專注業務與核心功能的研發
          • 快速迭代:需求變更僅需修改或添加注解配置即可,迭代速度比需求討論速度還快
          • 功能強大:動態條件處理,支持增刪改查等功能代理接口,Session存儲機制選擇,行為日志記錄等
          • 自動建表:依托于JPA可自動幫你完成數據庫建表相關工作
          • 低侵入性:幾乎所有功能都圍繞注解而展開,不影響Spring Boot其他功能或三方庫庫的使用
          • 多數據源:支持:MySQL、Oracle、SQL Server、PostgreSQL、H2,甚至支持 MongoDB
          • 大量組件:滑動輸入、時間選擇、一對多、圖片上傳、代碼編輯器、自動完成、樹、多對多、地圖等23類組件
          • 豐富展示:普通文本、二維碼、鏈接、圖片、HTML、代碼段、iframe、swf等
          • 代碼生成:erupt代碼已經足夠簡潔,代碼生成器可進一步提升開發效率
          • 高擴展性:支持自定義數據源實現、自定義頁面、動態權限管理、生命周期函數、自定義OSS
          • 界面美觀:每個交互都精心設計,產品思維打磨,只為了更好的操作體驗
          • 權限管理:用戶管理、角色管理、組織管理、菜單管理、登錄日志、操作日志等
          • 高安全性:可靠的安全機制,登錄白名單,權限驗證,注解項檢查,細顆粒度權限控制,為你的數據保駕護航
          • 前后端分離:后端與前端可分開部署
          • 響應式布局:支持PC端手機端等各種規格的設備中使用
          • 無需二次開發:僅需引用 jar 包即可 !
          • 支持擴展頁面:可開發自定義頁面,自定義彈出層,且支持:原生H5 / Freemarker / Thymeleaf等方式渲染

          ? 演示截圖 | Screenshot

          為什么要做 Erupt ?

          無論開發怎樣的系統,都需要配套的管理后臺做數據支撐,是軟件開發中必不可少的一環,但實際開發中存這無法規避的痛點,如:開發效率低下、接口對接繁瑣、界面差強人意、代碼重復、有安全漏洞,導致開發成本極高。

          雖然近些年來 代碼生成器 成了后臺開發的新寵,但它真的是后臺開發的最優解嗎?
          代碼生成器的本質還是生成繁瑣的前端與后臺代碼,一旦修改后期生成的代碼很難合并,想想 Mybatis-Generator,基本上就是一次性的東西,雖然減輕了部分工作,可解決方式并非最佳。

          開發后臺管理系統大部分情況下只想做個普通的增刪改查界面,用于數據管理,類似下面這種:

          @Erupt(
                 name="簡單的例子",
                 power=@Power(importable=true, export=true)
          )
          @Table(name="t_simple")   //數據庫表名
          @Entity
          public class Simple extends BaseModel {
          
              @EruptField(
                      views=@View(title="文本"),
                      edit=@Edit(title="文本", notNull=true, search=@Search)
              )
              private String input;
          
              @EruptField(
                      views=@View(title="數值", sortable=true),
                      edit=@Edit(title="數值", search=@Search)
              )
              private Float number;
          
              @EruptField(
                      views=@View(title="布爾"),
                      edit=@Edit(title="布爾")
              )
              private Boolean bool;
          
              @EruptField(
                      views=@View(title="時間"),
                      edit=@Edit(title="時間", search=@Search(vague=true))
              )
              private Date date;
          
          }
          

          功能體驗

          這個界面雖然用 Vue + Ant Design + SSM 也能做出個大概,但仔細觀察會發現它有大量細節功能如:

          • 有按鈕可以查詢、新增、批量刪除、excel 導入導出
          • 可以對數據做篩選、隱藏某列、按某列排序
          • 表格有分頁與匯總,可預覽單行數據
          • 多種組件、有校驗規則

          全部實現這些僅前端就需要大量的代碼,后端的接口與業務邏輯更不在少數。

          但可以看到,用 erupt 只需要 30幾行 代碼就能完成,

          完全不需要了解 Angular / React / Vue / Jquery

          而且不需要了解 JavaScript / HTML / CSS

          甚至不需要了解 Spring MVC / Mybatis / SQL

          即便沒學過 erupt 也能猜到大部分配置的作用,只需要簡單配置就能完成所有后臺頁面開發。

          這正是建立 erupt 的初衷,對于大部分常用頁面,應該使用最簡單的方法來實現,甚至不需要學習各種框架和工具,專注核心業務,告別 996,省下的時間做自己喜歡做的事,從此不再因為繁瑣的后臺開發而焦頭爛額。

          下載使用 | Download

          下載最新的JAR或通過Maven獲取。

          <!--用戶權限管理-->
          <dependency>
            <groupId>xyz.erupt</groupId>
            <artifactId>erupt-upms</artifactId>
            <version>LATEST-VERSION</version>
          </dependency>
          <!--接口數據安全-->
          <dependency>
            <groupId>xyz.erupt</groupId>
            <artifactId>erupt-security</artifactId>
            <version>LATEST-VERSION</version>
          </dependency>
          <!--后臺WEB界面-->
          <dependency>
            <groupId>xyz.erupt</groupId>
            <artifactId>erupt-web</artifactId>
            <version>LATEST-VERSION</version>
          </dependency>
          

          詳細使用步驟

          模塊說明 | Module

          erupt
          ├── erupt-annotation -- 核心注解聲明
          ├── erupt-core -- 核心功能實現
          ├── erupt-data -- 數據實現包
               ├── erupt-jpa -- 關系型數據庫erupt實現
               └── erupt-mongodb -- mongodb數據庫erupt實現
          ├── erupt-job -- 定時任務功能,支持動態定時任務,郵件發送,任務日志等功能
          ├── erupt-security -- 接口數據安全模塊
          ├── erupt-upms -- 用戶權限管理
          ├── erupt-tpl -- 支持在 erupt 中自定義頁面,自定義圖表,自定義彈出層,模板引擎支持:FreeMarker / Thymeleaf / 原生H5 / Velocity 等
          ├── erupt-generator -- 代碼生成器,通過簡單配置,生成 erupt 代碼段
          └── erupt-web -- 前端頁面
          
          erupt-pro
          ├── erupt-workflow -- 基于erupt實現的工作流模塊(開發中)
          ├── erupt-dataflow -- 基于erupt實現的數據流模塊(開發中)
          └── erupt-bi -- 通過 sql 加 js 混編實現動態報表,支持:多數據源、自定義函數、圖表開發等(付費模塊)
          
          erupt-site -- Erupt 官方網站 https://github.com/erupts/erupt-site
          
          erupt-web-angular -- Erupt 前端源碼,暫不開放,如有自定義頁面的需求,可使用 erupt-tpl 模塊
          
          

          技術體系 | Technology system

          后端:Java 8、 ScriptEngine、 Annotation、 JDBC、 Reflect、 Spring Boot、 JPA、 Hibernate、 Quartz、 Gson、 Lombok、 POI ...

          前端:JavaScript、 H5、 MVVM、 Router、 Angular CLI、 Angular、 NG-ZORRO、 NG-ALAIN、 G2Plot、 RxJS、 TypeScript、 Less ...

          源碼獲取方式:關注小編+轉發文章+私信【666】免費獲取
          重要的事情說三遍,轉發+轉發+轉發,一定要記得點贊轉發哦!!!

          循環依賴問題全景圖

          什么是循環依賴問題?

          類與類之間的依賴關系形成了閉環,就會導致循環依賴問題的產生。

          比如下圖中A類依賴了B類,B類依賴了C類,而最后C類又依賴了A類,這樣就形成了循環依賴問題。

          演示代碼:

          public class ClassA {
           private ClassB classB;
          
           public ClassB getClassB() {
            return classB;
           }
          
           public void setClassB(ClassB classB) {
            this.classB=classB;
           }
          }
          public class ClassB {
           private ClassA classA;
          
           public ClassA getClassA() {
            return classA;
           }
          
           public void setClassA(ClassA classA) {
            this.classA=classA;
           }
          }
          

          配置文件:

          <?xml version="1.0" encoding="UTF-8"?>
          <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
                  http://www.springframework.org/schema/beans/spring-beans.xsd">
          
           <bean id="classA" class="ioc.cd.ClassA">
            <property name="classB" ref="classB"></property>
           </bean>
           <bean id="classB" class="ioc.cd.ClassB">
            <property name="classA" ref="classA"></property>
           </bean>
          </beans>
          

          測試代碼:

           @Test
           public void test() throws Exception {
            // 創建IoC容器,并進行初始化
            String resource="spring/spring-ioc-circular-dependency.xml";
            ApplicationContext context=new ClassPathXmlApplicationContext(resource);
            // 獲取ClassA的實例(此時會發生循環依賴)
            ClassA classA=(ClassA) context.getBean(ClassA.class);
           }
          

          通過Spring IOC流程的源碼分析循環依賴問題:

          以上案例有幾種循環依賴問題?

          循環依賴問題在Spring中主要有三種情況:

          • 通過構造方法進行依賴注入時產生的循環依賴問題。
          • 通過setter方法進行依賴注入且是在多例(原型)模式下產生的循環依賴問題。
          • 通過setter方法進行依賴注入且是在單例模式下產生的循環依賴問題。

          注意:在Spring中,只有【第三種方式】的循環依賴問題被解決了,其他兩種方式在遇到循環依賴問題時都會產生異常。

          其實也很好解釋:

          • 第一種構造方法注入的情況下,在new對象的時候就會堵塞住了,其實也就是”先有雞還是先有蛋“的歷史難題。
          • 第二種setter方法&&多例的情況下,每一次getBean()時,都會產生一個新的Bean,如此反復下去就會有無窮無盡的Bean產生了,最終就會導致OOM問題的出現。

          如何解決循環依賴問題?

          那Spring到底是如何解決的setter方法依賴注入引起的循環依賴問題呢?請看下圖(其實主要是通過兩個緩存來解決的):

          Spring三大緩存介紹

          Spring中有三個緩存,用于存儲單例的Bean實例,這三個緩存是彼此互斥的,不會針對同一個Bean的實例同時存儲。

          推薦:Java進階視頻資源

          如果調用getBean,則需要從三個緩存中依次獲取指定的Bean實例。讀取順序依次是一級緩存-->二級緩存-->三級緩存

          一級緩存:Map<String, Object> singletonObjects

          第一級緩存的作用?

          • 用于存儲單例模式下創建的Bean實例(已經創建完畢)。
          • 該緩存是對外使用的,指的就是使用Spring框架的程序員。

          存儲什么數據?

          • K:bean的名稱
          • V:bean的實例對象(有代理對象則指的是代理對象,已經創建完畢)

          第二級緩存:Map<String, Object> earlySingletonObjects

          第二級緩存的作用?

          • 用于存儲單例模式下創建的Bean實例(該Bean被提前暴露的引用,該Bean還在創建中)。
          • 該緩存是對內使用的,指的就是Spring框架內部邏輯使用該緩存。
          • 為了解決第一個classA引用最終如何替換為代理對象的問題(如果有代理對象)請爬樓參考演示案例

          存儲什么數據?

          • K:bean的名稱
          • V:bean的實例對象(有代理對象則指的是代理對象,該Bean還在創建中)

          第三級緩存:Map<String, ObjectFactory<?>> singletonFactories

          第三級緩存的作用?

          • 通過ObjectFactory對象來存儲單例模式下提前暴露的Bean實例的引用(正在創建中)。
          • 該緩存是對內使用的,指的就是Spring框架內部邏輯使用該緩存。
          • 此緩存是解決循環依賴最大的功臣

          存儲什么數據?

          • K:bean的名稱
          • V:ObjectFactory,該對象持有提前暴露的bean的引用

          為什么第三級緩存要使用ObjectFactory?需要提前產生代理對象。

          什么時候將Bean的引用提前暴露給第三級緩存的ObjectFactory持有?時機就是在第一步實例化之后,第二步依賴注入之前,完成此操作。

          總結

          以上就是Spring解決循環依賴的關鍵點!總結來說,就是要搞清楚以下幾點:

          • 搞清楚Spring三級緩存的作用?
          • 搞清楚第三級緩存中ObjectFactory的作用?
          • 搞清楚為什么需要第二級緩存?
          • 搞清楚什么時候使用三級緩存(添加和查詢操作)?
          • 搞清楚什么時候使用二級緩存(添加和查詢操作)?
          • 當目標對象產生代理對象時,Spring容器中(第一級緩存)到底存儲的是誰?

          wf 是國外某公司的動畫設計軟件 Flash 專用格式。白話一點,swf 文件是 Flash 軟件或者 animate 軟件導出時的一種特殊的視頻格式,最常應用的場景是網頁 html 設計中,現在用得不多。

          所以很多軟件不兼容此格式,無法播放這類格式的視頻。下面小編教大家三種方法將 swf 格式轉換成 mp4 格式

          方法1:視頻轉碼軟件

          推薦指數:☆☆☆☆☆

          目前市面上有各種各樣的視頻轉碼軟件,既有付費的,也有免費的工具,無論是付費還是免費的,小編覺得最主要的是能否轉換,轉換之后是否會影響到視頻的質量,如視頻分辨率、音視頻是否同步等。下面以野蔥視頻轉換器為例,為大家講解一下。

          這是一款多功能的視頻格式轉換軟件,它支持各種格式的視頻音頻文件轉換,并且操作簡單,即使是零基礎的電腦小白也能夠在短時間內學會操作,快速上手!下面就讓我們來看看該軟件具備什么特色吧!

          1、支持豐富的文件格式

          MP4、AVI、MKV、FLV、WMV、M4V、MOV等上百種視頻格式,并且支持自定義分辨率,如1080P、720P、4K等;

          2、操作簡單、轉換效率高

          借助這款工具如何實現格式轉換?四步操作就能夠幫你搞定:【選擇功能-上傳文件-設置參數-轉換完成】。另外這款軟件還支持批量轉換,能夠一次上傳多個視頻進行轉換操作,提高效率的同時也節省了不少時間。

          3、功能豐富

          除了視頻格式轉換之外,它還支持視頻分割合并、視頻轉GIF、視頻水印、視頻優化、視頻壓縮等功能。經常需要編輯視頻文件的小伙伴們有福了,用它就能夠實現很多操作哦!

          方法2:在線視頻轉換網站

          推薦指數:☆☆☆

          有一些小伙伴覺得電腦操作比較麻煩,目前市面上同樣有一些視頻轉碼的平臺可以在線處理,只是多數是國外的網站,可以轉換速度比較慢。

          步驟 1:瀏覽器打開 Online-Convert,選擇對應的功能;

          步驟 2:點擊中間那個云朵的箭頭,上傳需要轉換的視頻文件,下方是一些參數的設置,大家可以根據自己的需求選擇對應的參數;

          步驟 3:視頻轉換完成后,會自動保存到本地,一般會在本地的「下載」中。

          方法3:VLC media Player

          推薦指數:☆☆☆

          VLC media Player 是一款國外的開源跨平臺多媒體播放器,可以兼容絕大多數市面上的視頻文件格式,由于存在一定技術門檻,所以不太適合小白用戶。

          步驟 1:運行軟件 VLC media Player,進入軟件后點擊「Media」-「Convert/Save」;

          步驟 2:點擊右側的「add」按鈕添加需要轉換的視頻文件,上傳成功后,左側的界面內會羅列出相關的視頻信息;

          步驟 3:添加成功后設置好輸出格式、存儲路徑等相關參數,點擊「Start」即轉換。

          以上就是分享給大家的「swf怎么轉換成mp4格式」三種方法,以及詳細的swf轉換成mp4的詳細操作步驟,你們都學會了嗎~


          主站蜘蛛池模板: 久久久精品人妻一区亚美研究所| 亚洲av色香蕉一区二区三区| 3D动漫精品一区二区三区| 免费无码一区二区三区| 国产成人一区二区在线不卡| 国产在线无码视频一区二区三区| 麻豆精品人妻一区二区三区蜜桃| 东京热人妻无码一区二区av| 精品国产日韩亚洲一区在线| 日产精品久久久一区二区| 国产免费一区二区三区在线观看| 一区二区三区无码高清视频| 在线视频精品一区| 亚洲区精品久久一区二区三区| 亚洲乱码国产一区三区| 中文字幕一区二区日产乱码| 搜日本一区二区三区免费高清视频| 亚洲日韩中文字幕无码一区| 3D动漫精品一区二区三区| 伊人色综合一区二区三区影院视频 | 亚洲欧美日韩中文字幕一区二区三区| 国内精品无码一区二区三区| 一区二区三区午夜| 精品亚洲一区二区三区在线观看| 国产AV天堂无码一区二区三区| 成人无码精品一区二区三区| 精品国产免费观看一区| 精品国产福利在线观看一区| 亚洲av色香蕉一区二区三区| 亚洲日韩国产一区二区三区在线| 无码中文字幕人妻在线一区二区三区 | 97久久精品无码一区二区 | 一区二区三区视频网站| 精品视频在线观看一区二区三区| 国产伦精品一区二区三区精品| 日本无卡码免费一区二区三区| 国产成人精品视频一区| 国产精品成人一区二区| 亚洲日韩精品一区二区三区| 精品福利一区二区三| 久久人做人爽一区二区三区|