Erupt 是一個低代碼 全棧類 框架,它使用 Java 注解 動態生成頁面以及增、刪、改、查、權限控制等后臺功能。
零前端代碼、零 CURD、自動建表,僅需 一個類文件 + 簡潔的注解配置,快速開發企業級 Admin 管理后臺。
提供企業級中后臺管理系統的全棧解決方案,大幅壓縮研發周期,專注核心業務。
完美取代 代碼生成器,開發后臺管理系統更優解!
無論開發怎樣的系統,都需要配套的管理后臺做數據支撐,是軟件開發中必不可少的一環,但實際開發中存在無法規避的痛點,如:開發效率低下、接口對接繁瑣、界面差強人意、代碼重復、有安全漏洞,導致開發成本極高。
雖然近些年來 代碼生成器 成了后臺開發的新寵,但它真的是后臺開發的最優解嗎?
代碼生成器的本質還是生成繁瑣的前端與后臺代碼,一旦修改后期生成的代碼很難合并,想想 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 也能做出個大概,但仔細觀察會發現它有大量細節功能如:
全部實現這些僅前端就需要大量的代碼,后端的接口與業務邏輯更不在少數。
但可以看到,用 erupt 只需要 30幾行 代碼就能完成,
完全不需要了解 Angular / React / Vue / Jquery
而且不需要了解 JavaScript / HTML / CSS
甚至不需要了解 Spring MVC / Mybatis / SQL
即便沒學過 erupt 也能猜到大部分配置的作用,只需要簡單配置就能完成所有后臺頁面開發。
這正是建立 erupt 的初衷,對于大部分常用頁面,應該使用最簡單的方法來實現,甚至不需要學習各種框架和工具,專注核心業務,告別 996,省下的時間做自己喜歡做的事,從此不再因為繁瑣的后臺開發而焦頭爛額。
下載最新的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>
詳細使用步驟
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 模塊
后端: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
Erupt 是一個低代碼 全棧類 框架,它使用 Java 注解 動態生成頁面以及增、刪、改、查、權限控制等后臺功能。
零前端代碼、零 CURD、自動建表,僅需 一個類文件 + 簡潔的注解配置,快速開發企業級 Admin 管理后臺。
提供企業級中后臺管理系統的全棧解決方案,大幅壓縮研發周期,專注核心業務。
完美取代 代碼生成器,開發后臺管理系統更優解!
無論開發怎樣的系統,都需要配套的管理后臺做數據支撐,是軟件開發中必不可少的一環,但實際開發中存這無法規避的痛點,如:開發效率低下、接口對接繁瑣、界面差強人意、代碼重復、有安全漏洞,導致開發成本極高。
雖然近些年來 代碼生成器 成了后臺開發的新寵,但它真的是后臺開發的最優解嗎?
代碼生成器的本質還是生成繁瑣的前端與后臺代碼,一旦修改后期生成的代碼很難合并,想想 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 也能做出個大概,但仔細觀察會發現它有大量細節功能如:
全部實現這些僅前端就需要大量的代碼,后端的接口與業務邏輯更不在少數。
但可以看到,用 erupt 只需要 30幾行 代碼就能完成,
完全不需要了解 Angular / React / Vue / Jquery
而且不需要了解 JavaScript / HTML / CSS
甚至不需要了解 Spring MVC / Mybatis / SQL
即便沒學過 erupt 也能猜到大部分配置的作用,只需要簡單配置就能完成所有后臺頁面開發。
這正是建立 erupt 的初衷,對于大部分常用頁面,應該使用最簡單的方法來實現,甚至不需要學習各種框架和工具,專注核心業務,告別 996,省下的時間做自己喜歡做的事,從此不再因為繁瑣的后臺開發而焦頭爛額。
下載最新的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>
詳細使用步驟
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 模塊
后端: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中主要有三種情況:
注意:在Spring中,只有【第三種方式】的循環依賴問題被解決了,其他兩種方式在遇到循環依賴問題時都會產生異常。
其實也很好解釋:
那Spring到底是如何解決的setter方法依賴注入引起的循環依賴問題呢?請看下圖(其實主要是通過兩個緩存來解決的):
Spring中有三個緩存,用于存儲單例的Bean實例,這三個緩存是彼此互斥的,不會針對同一個Bean的實例同時存儲。
推薦:Java進階視頻資源
如果調用getBean,則需要從三個緩存中依次獲取指定的Bean實例。讀取順序依次是一級緩存-->二級緩存-->三級緩存
第一級緩存的作用?
存儲什么數據?
第二級緩存的作用?
存儲什么數據?
第三級緩存的作用?
存儲什么數據?
為什么第三級緩存要使用ObjectFactory?需要提前產生代理對象。
什么時候將Bean的引用提前暴露給第三級緩存的ObjectFactory持有?時機就是在第一步實例化之后,第二步依賴注入之前,完成此操作。
以上就是Spring解決循環依賴的關鍵點!總結來說,就是要搞清楚以下幾點:
wf 是國外某公司的動畫設計軟件 Flash 專用格式。白話一點,swf 文件是 Flash 軟件或者 animate 軟件導出時的一種特殊的視頻格式,最常應用的場景是網頁 html 設計中,現在用得不多。
所以很多軟件不兼容此格式,無法播放這類格式的視頻。下面小編教大家三種方法將 swf 格式轉換成 mp4 格式。
推薦指數:☆☆☆☆☆
目前市面上有各種各樣的視頻轉碼軟件,既有付費的,也有免費的工具,無論是付費還是免費的,小編覺得最主要的是能否轉換,轉換之后是否會影響到視頻的質量,如視頻分辨率、音視頻是否同步等。下面以野蔥視頻轉換器為例,為大家講解一下。
這是一款多功能的視頻格式轉換軟件,它支持各種格式的視頻音頻文件轉換,并且操作簡單,即使是零基礎的電腦小白也能夠在短時間內學會操作,快速上手!下面就讓我們來看看該軟件具備什么特色吧!
1、支持豐富的文件格式
MP4、AVI、MKV、FLV、WMV、M4V、MOV等上百種視頻格式,并且支持自定義分辨率,如1080P、720P、4K等;
2、操作簡單、轉換效率高
借助這款工具如何實現格式轉換?四步操作就能夠幫你搞定:【選擇功能-上傳文件-設置參數-轉換完成】。另外這款軟件還支持批量轉換,能夠一次上傳多個視頻進行轉換操作,提高效率的同時也節省了不少時間。
3、功能豐富
除了視頻格式轉換之外,它還支持視頻分割合并、視頻轉GIF、視頻水印、視頻優化、視頻壓縮等功能。經常需要編輯視頻文件的小伙伴們有福了,用它就能夠實現很多操作哦!
推薦指數:☆☆☆
有一些小伙伴覺得電腦操作比較麻煩,目前市面上同樣有一些視頻轉碼的平臺可以在線處理,只是多數是國外的網站,可以轉換速度比較慢。
步驟 1:瀏覽器打開 Online-Convert,選擇對應的功能;
步驟 2:點擊中間那個云朵的箭頭,上傳需要轉換的視頻文件,下方是一些參數的設置,大家可以根據自己的需求選擇對應的參數;
步驟 3:視頻轉換完成后,會自動保存到本地,一般會在本地的「下載」中。
推薦指數:☆☆☆
VLC media Player 是一款國外的開源跨平臺多媒體播放器,可以兼容絕大多數市面上的視頻文件格式,由于存在一定技術門檻,所以不太適合小白用戶。
步驟 1:運行軟件 VLC media Player,進入軟件后點擊「Media」-「Convert/Save」;
步驟 2:點擊右側的「add」按鈕添加需要轉換的視頻文件,上傳成功后,左側的界面內會羅列出相關的視頻信息;
步驟 3:添加成功后設置好輸出格式、存儲路徑等相關參數,點擊「Start」即轉換。
以上就是分享給大家的「swf怎么轉換成mp4格式」三種方法,以及詳細的swf轉換成mp4的詳細操作步驟,你們都學會了嗎~
*請認真填寫需求信息,我們會在24小時內與您取得聯系。