HystrixCommand 支持的參數,除了?`commandKey/observableExecutionMode/fallbackMethod`?外,都可以使用?`@DefaultProperties`?配置默認值。
* **commandKey**:用來標識一個 Hystrix 命令,默認會取被注解的方法名。需要注意:`Hystrix 里同一個鍵的唯一標識并不包括 groupKey`,建議取一個獨一二無的名字,防止多個方法之間因為鍵重復而互相影響。
* **groupKey**:一組 Hystrix 命令的集合, 用來統計、報告,默認取類名,可不配置。
* **threadPoolKey**:用來標識一個線程池,`如果沒設置的話會取 groupKey`,很多情況下都是同一個類內的方法在共用同一個線程池,如果兩個共用同一線程池的方法上配置了同樣的屬性,在第一個方法被執行后線程池的屬性就固定了,所以屬性會以第一個被執行的方法上的配置為準。
* **commandProperties**:與此命令相關的屬性。
* **threadPoolProperties**:與線程池相關的屬性,
* **observableExecutionMode**:當 Hystrix 命令被包裝成 RxJava 的 Observer 異步執行時,此配置指定了 Observable 被執行的模式,默認是?`ObservableExecutionMode.EAGER`,Observable 會在被創建后立刻執行,而?`ObservableExecutionMode.EAGER`模式下,則會產生一個 Observable 被 subscribe 后執行。我們常見的命令都是同步執行的,此配置項可以不配置。
* **ignoreExceptions**:默認 Hystrix 在執行方法時捕獲到異常時執行回退,并統計失敗率以修改熔斷器的狀態,而被忽略的異常則會直接拋到外層,不會執行回退方法,也不會影響熔斷器的狀態。
* **raiseHystrixExceptions**:當配置項包括?`HystrixRuntimeException`?時,所有的未被忽略的異常都會被包裝成 HystrixRuntimeException,配置其他種類的異常好像并沒有什么影響。
* **fallbackMethod**:方法執行時熔斷、錯誤、超時時會執行的回退方法,需要保持此方法與 Hystrix 方法的簽名和返回值一致。
* **defaultFallback**:默認回退方法,當配置 fallbackMethod 項時此項沒有意義,另外,默認回退方法不能有參數,返回值要與 Hystrix方法的返回值相同。
## commandProperties
* * *
配置方式
Hystrix 的命令屬性是由?`@HystrixProperty`?注解數組構成的,HystrixProperty 由 name 和 value 兩個屬性,數據類型都是字符串。
以下將所有的命令屬性分組來介紹。
線程隔離(Isolation)
* **execution.isolation.strategy**: 配置請求隔離的方式,有 threadPool(線程池,默認)和 semaphore(信號量)兩種,信號量方式高效但配置不靈活,我們一般采用 Java 里常用的線程池方式。
* **execution.timeout.enabled**:是否給方法執行設置超時,默認為 true。
* **execution.isolation.thread.timeoutInMilliseconds**:方法執行超時時間,默認值是 1000,即 1秒,此值根據業務場景配置。
* **execution.isolation.thread.interruptOnTimeout**:?**execution.isolation.thread.interruptOnCancel**:是否在方法執行超時/被取消時中斷方法。需要注意在 JVM 中我們無法強制中斷一個線程,如果 Hystrix 方法里沒有處理中斷信號的邏輯,那么中斷會被忽略。
* **execution.isolation.semaphore.maxConcurrentRequests**:默認值是 10,此配置項要在?`execution.isolation.strategy`?配置為?`semaphore`?時才會生效,它指定了一個 Hystrix 方法使用信號量隔離時的最大并發數,超過此并發數的請求會被拒絕。信號量隔離的配置就這么一個,也是前文說信號量隔離配置不靈活的原因。
統計器(Metrics)
**`滑動窗口`**: Hystrix 的統計器是由滑動窗口來實現的,我們可以這么來理解滑動窗口:一位乘客坐在正在行駛的列車的靠窗座位上,列車行駛的公路兩側種著一排挺拔的白楊樹,隨著列車的前進,路邊的白楊樹迅速從窗口滑過,我們用每棵樹來代表一個請求,用列車的行駛代表時間的流逝,那么,列車上的這個窗口就是一個典型的滑動窗口,這個乘客能通過窗口看到的白楊樹就是 Hystrix 要統計的數據。
**`桶`**: bucket 是 Hystrix 統計滑動窗口數據時的最小單位。同樣類比列車窗口,在列車速度非常快時,如果每掠過一棵樹就統計一次窗口內樹的數據,顯然開銷非常大,如果乘客將窗口分成十分,列車前進行時每掠過窗口的十分之一就統計一次數據,開銷就完全可以接受了。 Hystrix 的 bucket (桶)也就是窗口 N分之一 的概念。
* **metrics.rollingStats.timeInMilliseconds**:此配置項指定了窗口的大小,單位是 ms,默認值是 1000,即一個滑動窗口默認統計的是 1s 內的請求數據。
* **metrics.healthSnapshot.intervalInMilliseconds**:它指定了健康數據統計器(影響 Hystrix 熔斷)中每個桶的大小,默認是 500ms,在進行統計時,Hystrix 通過?`metrics.rollingStats.timeInMilliseconds / metrics.healthSnapshot.intervalInMilliseconds`?計算出桶數,在窗口滑動時,每滑過一個桶的時間間隔時就統計一次當前窗口內請求的失敗率。
* **metrics.rollingStats.numBuckets**:Hystrix 會將命令執行的結果類型都統計匯總到一塊,給上層應用使用或生成統計圖表,此配置項即指定了,生成統計數據流時滑動窗口應該拆分的桶數。此配置項最易跟上面的?`metrics.healthSnapshot.intervalInMilliseconds`?搞混,認為此項影響健康數據流的桶數。 此項默認是 10,并且需要保持此值能被?`metrics.rollingStats.timeInMilliseconds`?整除。
* **metrics.rollingPercentile.enabled**:是否統計方法響應時間百分比,默認為 true 時,Hystrix 會統計方法執行的?`1%,10%,50%,90%,99%`?等比例請求的平均耗時用以生成統計圖表。
* **metrics.rollingPercentile.timeInMilliseconds**:統計響應時間百分比時的窗口大小,默認為 60000,即一分鐘。
* **metrics.rollingPercentile.numBuckets**:統計響應時間百分比時滑動窗口要劃分的桶用,默認為6,需要保持能被`metrics.rollingPercentile.timeInMilliseconds`?整除。
* **metrics.rollingPercentile.bucketSize**:統計響應時間百分比時,每個滑動窗口的桶內要保留的請求數,桶內的請求超出這個值后,會覆蓋最前面保存的數據。默認值為 100,在統計響應百分比配置全為默認的情況下,每個桶的時間長度為 10s = 60000ms / 6,但這 10s 內只保留最近的 100 條請求的數據。
熔斷器(Circuit Breaker)
* **circuitBreaker.enabled**:是否啟用熔斷器,默認為 true;
* **circuitBreaker.forceOpen**:?**circuitBreaker.forceClosed**:是否強制啟用/關閉熔斷器,強制啟用關閉都想不到什么應用的場景,保持默認值,不配置即可。
* **circuitBreaker.requestVolumeThreshold**:啟用熔斷器功能窗口時間內的最小請求數。試想如果沒有這么一個限制,我們配置了 50% 的請求失敗會打開熔斷器,窗口時間內只有 3 條請求,恰巧兩條都失敗了,那么熔斷器就被打開了,5s 內的請求都被快速失敗。此配置項的值需要根據接口的 QPS 進行計算,值太小會有誤打開熔斷器的可能,值太大超出了時間窗口內的總請求數,則熔斷永遠也不會被觸發。建議設置為?`QPS * 窗口秒數 * 60%`。
* **circuitBreaker.errorThresholdPercentage**:在通過滑動窗口獲取到當前時間段內 Hystrix 方法執行的失敗率后,就需要根據此配置來判斷是否要將熔斷器打開了。 此配置項默認值是 50,即窗口時間內超過 50% 的請求失敗后會打開熔斷器將后續請求快速失敗。
* **circuitBreaker.sleepWindowInMilliseconds**:熔斷器打開后,所有的請求都會快速失敗,但何時服務恢復正常就是下一個要面對的問題。熔斷器打開時,Hystrix 會在經過一段時間后就放行一條請求,如果這條請求執行成功了,說明此時服務很可能已經恢復了正常,那么會將熔斷器關閉,如果此請求執行失敗,則認為服務依然不可用,熔斷器繼續保持打開狀態。此配置項指定了熔斷器打開后經過多長時間允許一次請求嘗試執行,默認值是 5000。
其他(Context/Fallback)
* **requestCache.enabled**:是否啟用請求結果緩存。默認是 true,但它并不意味著我們的每個請求都會被緩存。緩存請求結果和從緩存中獲取結果都需要我們配置?`cacheKey`,并且在方法上使用?`@CacheResult`?注解聲明一個緩存上下文。
* **requestLog.enabled**:是否啟用請求日志,默認為 true。
* **fallback.enabled**:是否啟用方法回退,默認為 true 即可。
* **fallback.isolation.semaphore.maxConcurrentRequests**:回退方法執行時的最大并發數,默認是10,如果大量請求的回退方法被執行時,超出此并發數的請求會拋出?`REJECTED_SEMAPHORE_FALLBACK`?異常。
## threadPoolProperties
* * *
配置方式
線程池的配置也是由 HystrixProperty 數組構成,配置方式與命令屬性一致。
配置項
* **coreSize**:核心線程池的大小,默認值是 10,一般根據?`QPS * 99% cost + redundancy count`?計算得出。
* **allowMaximumSizeToDivergeFromCoreSize**:是否允許線程池擴展到最大線程池數量,默認為 false;
* **maximumSize**:線程池中線程的最大數量,默認值是 10,此配置項單獨配置時并不會生效,需要啟用?`allowMaximumSizeToDivergeFromCoreSize`?項。
* **maxQueueSize**:作業隊列的最大值,默認值為 -1,設置為此值時,隊列會使用?`SynchronousQueue`,此時其 size 為0,Hystrix 不會向隊列內存放作業。如果此值設置為一個正的 int 型,隊列會使用一個固定 size 的?`LinkedBlockingQueue`,此時在核心線程池內的線程都在忙碌時,會將作業暫時存放在此隊列內,但超出此隊列的請求依然會被拒絕。
* **queueSizeRejectionThreshold**:由于?`maxQueueSize`?值在線程池被創建后就固定了大小,如果需要動態修改隊列長度的話可以設置此值,即使隊列未滿,隊列內作業達到此值時同樣會拒絕請求。此值默認是 5,所以有時候只設置了?`maxQueueSize`?也不會起作用。
* **keepAliveTimeMinutes**:由上面的?`maximumSize`,我們知道,線程池內核心線程數目都在忙碌,再有新的請求到達時,線程池容量可以被擴充為到最大數量,等到線程池空閑后,多于核心數量的線程還會被回收,此值指定了線程被回收前的存活時間,默認為 2,即兩分鐘。
工作方式
Hystrix 內線程池的使用是基于 Java 內置線程池的簡單包裝,通常有以下三種狀態:
* 如果請求量少,達不到 coreSize,通常會使用核心線程來執行任務。
* 如果設置了?`maxQueueSize`,當請求數超過了 coreSize, 通常會把請求放到 queue 里,待核心線程有空閑時消費。
* 如果 queue 長度無法存儲請求,則會創建新線程執行直到達到?`maximumSize`?最大線程數,多出核心線程數的線程會在空閑時回收。
自定義超時配置
~~~
@HystrixCommand(commandProperties = {
@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds",value = "3000")
})
~~~
~~~
1.默認:(方法上記得要加上@HystrixCommand,否則無效):
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=3000
2.配置具體方法的超時時間
hystrix.command.serverMethod.execution.isolation.thread.timeoutInMilliseconds=3000
~~~
配置文件給commandKey配置超時時間:
```
@HystrixCommand(fallbackMethod="fallback",commandKey="userGetKey")
hystrix.command.userGetKey.execution.isolation.thread.timeoutInMilliseconds = 13000
```
- 項目介紹
- 新手入門教程
- 開發環境準備
- 基礎環境要求
- 開發環境安裝
- IDEA導入項目
- 通過IDEA啟動項目
- VUE2前端文檔
- Vue2前端快速啟動
- Docker啟動Vue2前端
- Vue2前端多環境
- 切換Vue2路由菜單表
- Docker啟動單體后臺
- 切換其他數據庫
- Maven私服設置
- Docker安裝軟件
- docker搭建開發環境
- Docker中安裝Elasticsearch
- 連接達夢數據庫
- 達夢數據庫多數據源
- 老版本文檔
- 通過IDEA啟動項目3.3
- 前端快速啟動3.3
- IDEA導入項目3.3
- 快速開始
- HelloWorld
- 上線發布
- JAR部署方案
- JAR分離打包部署
- WAR部署方案
- 開啟Nginx壓縮
- swagger使用
- 老版本發布文檔
- JAR部署方案3.3
- JAR分離打包部署3.3
- Docker單體啟動項目3.3
- WAR部署方案2.4
- JAR部署方案3.4.1
- 代碼生成器
- 代碼生成器簡介
- Online代碼生成器
- GUI代碼生成器
- 代碼生成常見問題
- 發布后配置代碼生成
- 代碼生成器配置
- 代碼生成器配置文件
- Online導入表過濾規則
- 自定義開發
- 生成器模板介紹
- 自定義一套模板
- 生成代碼優化
- 快速生成模塊
- 老版生成器文檔
- 微服務開發
- 微服務解決方案
- 單體升級為微服務3.4.1+
- archetype生成微服務模塊3.4+
- docker啟動微服務項目3.4.1+
- 微服務項目結構說明3.4.1
- jeecg-server-cloud微服務中間件
- Sentinel集成和規則配置用法
- Admin監控用法
- Gateway網關高級配置3.4
- jeecg-boot-starter項目實戰
- jeecg-boot-starter目錄結構
- xxl-job定時任務集成2.4+
- rabitmq消息隊列集成2.4+
- 消息總線用法2.4+
- Redisson分布式鎖集成2.4+
- 防止重復提交2.4+
- 分庫分表ShardingSphere3.4+
- 分庫分表ShardingSphere2.4
- 分布式事務Seata集成
- 上線部署
- 微服務部署文檔
- 老版本
- 單體升級為微服務2.4~3.1
- docker-compose部署3.0
- 微服務安裝與快速啟動
- docker-compose部署3.1
- 老版微服務文檔
- 單體升級為微服務3.4
- archetype生成微服務模塊3.4
- docker啟動微服務項目3.4
- jeecg-cloud-module目錄結構3.4
- 單體升級為微服務3.2+
- archetype生成微服務模塊3.2+
- Docker啟動微服務3.3+
- Gateway網關高級配置3.2
- 實戰技巧
- 實戰微服務模塊分層
- 微服務之間調用免Token方案
- 微服務單獨配置數據源3.4+
- 微服務單獨配置nacos 3.4+
- 微服務單獨配置數據源3.2
- 微服務單獨配置nacos 3.2
- 系統日志表跨庫問題
- nacos配置實現動態刷新
- 高級應用
- 微服務Feign調用示例
- skywarking鏈路跟蹤
- 微服務和單體定義切換接口
- 安裝@Redis集群搭建
- 安裝@RabbitMq創建交換機
- 3.2之前限流用法
- 微服務熔斷/降級/限流2.4+
- HystrixCommand配置參數詳解
- 動態feign客戶端
- 常見問題
- gateway接口文檔不通
- 訪問gateway超時
- 系統監控跨域問題修復
- gateway請求返回400
- 后端開發技巧
- 常用問題匯總
- 數據庫支持說明
- 自定義注解用法
- Spring緩存注解@Cacheable
- 字典翻譯注解@Dict
- 數據權限注解@PermissionData
- 日志記錄注解@AutoLog
- 菜單路由配置
- 菜單配置說明
- 帶參數路由菜單
- 路由菜單規則
- 菜單快速SQL
- 聚合路由菜單
- 數據快照功能如何用?
- 快速創建module模塊
- 查詢過濾器用法
- 系統日志怎么插入?
- 自定義sql分頁實現
- redis 如何使用?
- 事務如何使用?
- 動態數據源使用
- 定時任務如何開發?
- 平臺消息推送接口
- 接口敏感數據安全
- 批量插入效率建議
- 短信接口配置(阿里大魚短信)
- 自定義注解限制重復提交
- 郵箱配置文檔
- 積木報表設計器數據集使用
- 父子編碼使用說明
- 我的文檔安全配置
- 文檔預覽
- 在線多數據源
- 導入校驗工具類
- druid數據庫密碼加密
- 自定義首頁的用法
- 系統安全模式
- 數據脫敏注解
- Long類型主鍵導致精度丟失問題
- sql黑名單配置
- 系統文件上傳
- 統一文件上傳規則
- MinIO配置
- 阿里云OSS配置
- Minio版本6.0.13升級到8.0.3修改記錄
- 文件上傳大小限制
- VUE2前端開發
- 如何更改默認主題
- Form表單開發特殊性
- Icon圖標擴展方法
- vuex使用詳解
- vue路由帶參總結
- 全局配置文件
- 列表自定義列實現
- 國際化改造方案
- 常用命令
- 報表開發
- 報表開發技術點
- 自定義報表組件
- 源碼解讀
- 自定義組件
- 前端技巧
- components包下文件描述
- JDictSelectTag字典標簽
- duplicateCheck表單字段重復校驗通用JS
- JVxeTable行編輯
- 組件配置文檔
- 自定義組件
- 封裝自定義組件
- 自定義組件增強
- 多級聯動配置
- 使用示例
- 常見問題解答
- JEditableTable幫助文檔
- JMultiSelectTag多選組件
- JPopup彈窗選擇組件
- JSearchSelectTag字典表的搜索組件
- JSelectDepart部門選擇組件
- JSelectMultiUser用戶多選組件
- JSelectUserByDep根據部門選擇用戶
- JTreeDict分類字典樹形下拉組件
- JTreeSelect樹形下拉框 (異步加載)
- JInput 查詢組件
- JCron 幫助文檔
- JCategorySelect 幫助文檔
- JUpload上傳組件
- JImageUpload圖片上傳組件
- JSuperQuery高級查詢組件
- JAreaLinkage省市縣三級聯動
- JEllipsis超長截取顯示
- JDate 日期組件
- JCheckbox組件
- JCodeEditor組件
- JSelectMultiple多選下拉組件
- JTreeSelect樹形下拉組件
- JImportModal組件
- JAsyncTreeList異步樹表格
- JFormContainer使用文檔
- JMarkdownEditor使用文檔
- 前端開發坑(一定要注意)
- 按需加載方案
- 按需加載@減小打包
- JeecgBoot實戰-按需加載方案
- 表格的換行與不換行
- 舊:表格的換行與不換行
- 主子表子表下拉框、時間框彈框被遮擋優化
- 前端依賴包package.json
- 如何實現多列表單
- 前端字典緩存用法
- 自定義首頁
- 門戶首頁Portal權限控制
- Form升級為FormModel用法
- 動態覆蓋env配置文件(新)
- 上傳組件使用kkfileview實現文件預覽
- 系統權限用法
- JAVA請求權限控制
- 頁面按鈕權限用法
- 數據表格列字段控制
- 表單權限
- 顯示隱藏控制
- 禁用控制用法一
- 禁用控制用法二
- 子表行字段的禁用和隱藏控制
- 數據權限
- 數據權限規則篇
- 數據權限用法篇
- 編碼對接數據權限(未用查詢過濾器)
- 權限配置自定義SQL
- 子表數據權限
- 二級部門權限管理
- 填值規則(編碼生成)
- 校驗規則(高級校驗)
- 列表列字段導出權限示例
- 備份
- 通過URL方式配置數據權限
- Online表單VUE2版
- Online開發初體驗
- Online表單的菜單配置
- Online表單配置
- Online表單配置參數說明
- Online表單一對多表單配置
- Online樹列表表單配置
- Online表單查詢配置說明
- Online功能如何配置成菜單
- Online表單填值規則配置
- Online表單排版
- Online樹列表表單配置(個性化)
- Online表單標準字段說明
- Online表單刪除說明
- Online對接積木報表
- Online查詢排序配置
- Online聯合查詢配置
- Online導入導出值轉換器
- Online表單視圖功能
- Online自定義查詢配置
- Online表單控件
- 下拉框@多選框@單選框
- 下拉多選
- 下拉搜索
- Popup控件
- 富文本控件
- 時間控件
- 用戶選擇器
- 部門選擇器
- 自定義樹控件
- 分類字典樹控件
- Online之popup使用
- 下拉聯動組件
- markdown編輯器
- 省市區組件
- 開關控件
- 字段排列順序調整
- 字段顯示隱藏控制
- 控件配置Href
- 字段校驗規則使用
- 控件默認值表達式
- 控件擴展參數用法
- Online權限配置
- 字段權限配置與授權
- 按鈕權限配置與授權
- 數據權限配置與授權
- 聯合查詢數據權限規則說明
- 在線開發(增強)
- Online 自定義按鈕
- Online自定義按鈕基礎篇
- Online自定義按鈕表達式
- Online基礎篇-SQL增強
- Online JS增強
- 基礎篇-JS增強
- 基礎篇-JS增強(表單渲染)
- 列表JS API
- 表單JS API
- JS增強自定義彈窗
- JS增強 實戰示例
- 表單按鈕 動態顯隱字段
- 表單按鈕 改變控件的值
- 修改控件值【單表/主表】
- 表單按鈕修改子表數據
- 修改控件值【從表】
- 修改控件值【從改主】
- JS增強實現下拉聯動
- 表單前置事件(提交/編輯/刪除)
- 初始化表單默認值
- 獲取vuex緩存
- Online Java增強
- online基礎篇-java增強
- Online java增強 導入
- Online java增強 導出
- Online java增強 查詢
- Online Java增強 http-api
- 表單類
- 列表類
- 對接表單設計器后需注意
- Online java增強配置說明
- 備份2.4
- Online java增強 導入2.4
- online java 增強 http-api
- 通過字段Href實現三級聯動
- 導入數據庫表支持排除表
- edu
- Online表單專題課程1
- Online表單專題課程2
- 備注
- Online權限配置(作廢—老版本)
- 列表字段權限(顯示與隱藏)
- 表單字段權限(隱藏和禁用)
- 列表按鈕權限(隱藏)
- 列表數據權限
- 樹形表單數據權限配置
- Online表單權限配置(作廢—老版本)
- 功能描述
- 列表權限
- 列表字段的顯示或隱藏
- 列表操作按鈕的顯示或隱藏
- 列表自定義按鈕的顯示或隱藏
- 表單權限
- 表單字段的顯示或隱藏
- 表單字段的禁用或可編輯
- online表單使用常見問題
- online AI自動化測試數據制作
- Online導入開啟校驗用法
- Online AI模型測試用例功能詳情
- Online Al模型智能測試數據制作文檔
- online表單API接口
- Online報表VUE2版
- Online報表
- online報表-使用步驟
- online報表-動態參數
- 如何配置報表菜單
- Online報表權限配置
- Online報表系統變量應用
- 參數說明
- Online報表排序
- 字段href
- 字典配置
- online報表-合計
- online報表-配置分組標題
- online報表導出
- 高級實戰技巧
- Websocket業務對接
- WebSocket的集成
- SAAS多租戶用法
- 如何集成積木報表
- 使用jdk14啟動項目【內測】
- 全局監聽使用示例
- 微前端高級改造
- 邏輯刪除方案
- 升級springboot2.6.3問題匯總
- postgresql數據庫兼容問題
- 單體架構集成分庫分表
- CAS單點登錄
- CAS單點登錄服務端準備
- 單點登錄流程圖
- 單點登錄配置說明(2.3.1+)
- 單點登錄配置說明(vue3)
- archive
- 2.JeecgBoot后端對接CAS步驟
- 3.JeecgBoot前端項目對接CAS步驟(2.3.0)
- 第三方登錄
- 企業微信配置
- 釘釘配置
- 企業微信集成方案
- 微信第三方集成
- 釘釘和企業微信打通
- 配置開關
- 釘釘集成流程
- 企業微信集成流程
- 小技巧
- 同步部門規則
- 同步用戶規則
- 同步到本地開關
- OAuth2登錄(應用集成)
- 釘釘OAuth2登錄
- 企業微信OAuth2登錄
- JeecgUniapp開發
- 開發環境搭建
- 項目簡介
- 編寫Hello World頁面
- 打包項目
- APP打包
- 微信小程序打包
- H5打包
- 小程序發布
- APP首頁排版設計
- API接口配置
- uniapp推送
- 后臺定時unipush推送配置
- websocket消息推送修改
- HBuilderX打包APP
- 1.Build-JeecgBoot項目
- 2.HBuilderX 打包APP
- HBuilder打包APP手機端安裝配置教程
- bak_vant
- 小結
- 后臺推送消息移動端
- 如何安裝新依賴
- 代碼生成列表和表單
- AutoPOI(Excel工具)
- 快速文檔
- 單表數據導出多表頭示例
- 單表數據多表頭導入注意bak
- 導出自定義選擇列導出
- @excel注解使用
- excel根據模板導出
- 一對多導出needMerge
- 單表數據導出多sheet實例
- autopoi升級到4.0版本修改記錄
- 大數據量處理
- 大數據量導出示例
- 編碼規范
- 代碼規范
- 建表規范
- 代碼格式化插件安裝
- 代碼質量掃描
- 更多商業功能介紹
- 表單設計器
- 儀表盤設計器
- 流程設計器
- 工作流引擎
- 大屏設計器
- 低代碼應用
- 門戶設計器
- APP移動辦公
- APP布局設計
- OA辦公
- Online圖表