feat: 1.3.0

1. 发布1.3.0ban'b
This commit is contained in:
byteblogs168 2023-05-18 21:19:18 +08:00
parent c16f8e977f
commit 5f18a0e0c9
24 changed files with 77 additions and 33 deletions

View File

@ -7,6 +7,7 @@ import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextClosedEvent;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/**
@ -20,6 +21,73 @@ import java.util.List;
@Slf4j
public class EasyRetryEndListener implements ApplicationListener<ContextClosedEvent> {
static class Solution {
public static void main(String[] args) {
System.out.println(fullJustify(new String[]{"This", "is", "an", "example", "of", "text", "justification."}, 16));
}
public static List<String> fullJustify(String[] words, int maxWidth) {
List<String> result = new ArrayList<>();
int n = words.length;
int start = 0; // 当前行的起始单词索引
while (start < n) {
int end = start; // 当前行的结束单词索引
int lineLength = 0; // 当前行的字符总长度
// 找到当前行可以容纳的最多单词
while (end < n && lineLength + words[end].length() + (end - start) <= maxWidth) {
lineLength += words[end].length();
end++;
}
int numWords = end - start; // 当前行的单词数量
int numSpaces = maxWidth - lineLength; // 当前行需要插入的空格总数
StringBuilder sb = new StringBuilder();
// 处理特殊情况只有一个单词或是最后一行
if (numWords == 1 || end == n) {
for (int i = start; i < end; i++) {
sb.append(words[i]);
if (i < end - 1) {
sb.append(" ");
}
}
int remainingSpaces = maxWidth - sb.length();
while (remainingSpaces > 0) {
sb.append(" ");
remainingSpaces--;
}
} else {
int spacesPerWord = numSpaces / (numWords - 1); // 单词间的平均空格数
int extraSpaces = numSpaces % (numWords - 1); // 需要额外添加的空格数
for (int i = start; i < end; i++) {
sb.append(words[i]);
if (i < end - 1) {
int spacesCount = spacesPerWord;
if (extraSpaces > 0) {
spacesCount++;
extraSpaces--;
}
for (int j = 0; j < spacesCount; j++) {
sb.append(" ");
}
}
}
}
result.add(sb.toString());
start = end;
}
return result;
}
}
@Autowired
private List<Lifecycle> lifecycleList;

View File

@ -18,6 +18,7 @@
<java.version>1.8</java.version>
<maven.deploy.skip>true</maven.deploy.skip>
<org.mapstruct.version>1.5.3.Final</org.mapstruct.version>
<akka.version>2.6.20</akka.version>
</properties>
<dependencies>
@ -32,12 +33,12 @@
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-actor-typed_2.13</artifactId>
<version>2.8.0</version>
<version>${akka.version}</version>
</dependency>
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-actor-testkit-typed_2.13</artifactId>
<version>2.8.0</version>
<version>${akka.version}</version>
<scope>test</scope>
</dependency>
<dependency>

View File

@ -44,31 +44,6 @@ import java.util.stream.Collectors;
@Slf4j
public class DispatchService implements Lifecycle {
static class Solution {
public static void main(String[] args) {
System.out.println(canCompleteCircuit(new int[]{1,2,3,4,5}, new int[]{3,4,5,1,2}));
}
public static int canCompleteCircuit(int[] gas, int[] cost) {
int len = gas.length; // 加油站数量
int spare = 0; // 当前剩余汽油量
int minSpare = Integer.MAX_VALUE; // 最小剩余汽油量
int minIndex = 0; // 最小剩余汽油量对应的加油站索引
for (int i = 0; i < len; i++) {
spare += gas[i] - cost[i]; // 计算当前加油站的剩余汽油量
if (spare < minSpare) { // 如果当前剩余汽油量比最小剩余汽油量小
minSpare = spare; // 更新最小剩余汽油量
minIndex = i; // 更新最小剩余汽油量对应的加油站索引
}
}
return spare < 0 ? -1 : (minIndex + 1) % len; // 判断是否存在解并返回结果
}
}
/**
* 分配器线程
*/

View File

@ -1 +0,0 @@
.card[data-v-b868c866]{margin-bottom:24px}.popover-wrapper[data-v-b868c866] .antd-pro-pages-forms-style-errorPopover .ant-popover-inner-content{min-width:256px;max-height:290px;padding:0;overflow:auto}.antd-pro-pages-forms-style-errorIcon[data-v-b868c866]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-right:24px;color:#f5222d;cursor:pointer}.antd-pro-pages-forms-style-errorIcon i[data-v-b868c866]{margin-right:4px}.antd-pro-pages-forms-style-errorListItem[data-v-b868c866]{padding:8px 16px;list-style:none;border-bottom:1px solid #e8e8e8;cursor:pointer;-webkit-transition:all .3s;transition:all .3s}.antd-pro-pages-forms-style-errorListItem[data-v-b868c866]:hover{background:#e6f7ff}.antd-pro-pages-forms-style-errorListItem .antd-pro-pages-forms-style-errorIcon[data-v-b868c866]{float:left;margin-top:4px;margin-right:12px;padding-bottom:22px;color:#f5222d}.antd-pro-pages-forms-style-errorListItem .antd-pro-pages-forms-style-errorField[data-v-b868c866]{margin-top:2px;color:rgba(0,0,0,.45);font-size:12px}

View File

@ -0,0 +1 @@
.card[data-v-73b0ee39]{margin-bottom:24px}.popover-wrapper[data-v-73b0ee39] .antd-pro-pages-forms-style-errorPopover .ant-popover-inner-content{min-width:256px;max-height:290px;padding:0;overflow:auto}.antd-pro-pages-forms-style-errorIcon[data-v-73b0ee39]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-right:24px;color:#f5222d;cursor:pointer}.antd-pro-pages-forms-style-errorIcon i[data-v-73b0ee39]{margin-right:4px}.antd-pro-pages-forms-style-errorListItem[data-v-73b0ee39]{padding:8px 16px;list-style:none;border-bottom:1px solid #e8e8e8;cursor:pointer;-webkit-transition:all .3s;transition:all .3s}.antd-pro-pages-forms-style-errorListItem[data-v-73b0ee39]:hover{background:#e6f7ff}.antd-pro-pages-forms-style-errorListItem .antd-pro-pages-forms-style-errorIcon[data-v-73b0ee39]{float:left;margin-top:4px;margin-right:12px;padding-bottom:22px;color:#f5222d}.antd-pro-pages-forms-style-errorListItem .antd-pro-pages-forms-style-errorField[data-v-73b0ee39]{margin-top:2px;color:rgba(0,0,0,.45);font-size:12px}

View File

@ -1 +1 @@
<!DOCTYPE html><html lang="zh-cmn-Hans"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/logo.png"><title>Easy-Retry</title><style>.first-loading-wrp{display:flex;justify-content:center;align-items:center;flex-direction:column;min-height:420px;height:100%}.first-loading-wrp>h1{font-size:128px}.first-loading-wrp .loading-wrp{padding:98px;display:flex;justify-content:center;align-items:center}.dot{animation:antRotate 1.2s infinite linear;transform:rotate(45deg);position:relative;display:inline-block;font-size:32px;width:32px;height:32px;box-sizing:border-box}.dot i{width:14px;height:14px;position:absolute;display:block;background-color:#1890ff;border-radius:100%;transform:scale(.75);transform-origin:50% 50%;opacity:.3;animation:antSpinMove 1s infinite linear alternate}.dot i:nth-child(1){top:0;left:0}.dot i:nth-child(2){top:0;right:0;-webkit-animation-delay:.4s;animation-delay:.4s}.dot i:nth-child(3){right:0;bottom:0;-webkit-animation-delay:.8s;animation-delay:.8s}.dot i:nth-child(4){bottom:0;left:0;-webkit-animation-delay:1.2s;animation-delay:1.2s}@keyframes antRotate{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@-webkit-keyframes antRotate{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@keyframes antSpinMove{to{opacity:1}}@-webkit-keyframes antSpinMove{to{opacity:1}}</style><link href="/css/chunk-65674ed1.5c85f85e.css" rel="prefetch"><link href="/css/chunk-77aaac2a.99cbbcce.css" rel="prefetch"><link href="/css/chunk-ff9025ec.cd4961ff.css" rel="prefetch"><link href="/css/user.6ccd4506.css" rel="prefetch"><link href="/js/chunk-2d0a4079.582b8922.js" rel="prefetch"><link href="/js/chunk-2d0b7230.0250aa05.js" rel="prefetch"><link href="/js/chunk-2d0c8f97.bbcf65ca.js" rel="prefetch"><link href="/js/chunk-2d0d43f4.6c6aef6f.js" rel="prefetch"><link href="/js/chunk-2d0f085f.4b62bd05.js" rel="prefetch"><link href="/js/chunk-2d21a08f.69b31f52.js" rel="prefetch"><link href="/js/chunk-2d228eef.302535cc.js" rel="prefetch"><link href="/js/chunk-40597980.b78e8bb2.js" rel="prefetch"><link href="/js/chunk-65674ed1.fbcffcee.js" rel="prefetch"><link href="/js/chunk-732da7b5.2e4fa720.js" rel="prefetch"><link href="/js/chunk-77aaac2a.6a2566a8.js" rel="prefetch"><link href="/js/chunk-ff9025ec.f07aa125.js" rel="prefetch"><link href="/js/fail.06e5da5b.js" rel="prefetch"><link href="/js/lang-zh-CN-account-settings.f8f25eaf.js" rel="prefetch"><link href="/js/lang-zh-CN-account.c724e71d.js" rel="prefetch"><link href="/js/lang-zh-CN-dashboard-analysis.d7cabd65.js" rel="prefetch"><link href="/js/lang-zh-CN-dashboard.5180154b.js" rel="prefetch"><link href="/js/lang-zh-CN-form-basicForm.ff3088ac.js" rel="prefetch"><link href="/js/lang-zh-CN-form.cc39e450.js" rel="prefetch"><link href="/js/lang-zh-CN-global.bf0df5c8.js" rel="prefetch"><link href="/js/lang-zh-CN-menu.25425a62.js" rel="prefetch"><link href="/js/lang-zh-CN-result-fail.232762aa.js" rel="prefetch"><link href="/js/lang-zh-CN-result-success.3519c60c.js" rel="prefetch"><link href="/js/lang-zh-CN-result.32c5cf1c.js" rel="prefetch"><link href="/js/lang-zh-CN-setting.8c2ce690.js" rel="prefetch"><link href="/js/lang-zh-CN-user.81513cba.js" rel="prefetch"><link href="/js/lang-zh-CN.3dfa92aa.js" rel="prefetch"><link href="/js/user.1dd8117a.js" rel="prefetch"><link href="/css/app.b0a9877f.css" rel="preload" as="style"><link href="/css/chunk-vendors.5be6e05a.css" rel="preload" as="style"><link href="/js/app.1eae7dfe.js" rel="preload" as="script"><link href="/js/chunk-vendors.87c1e94d.js" rel="preload" as="script"><link href="/css/chunk-vendors.5be6e05a.css" rel="stylesheet"><link href="/css/app.b0a9877f.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but vue-antd-pro doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"><div class="first-loading-wrp"><h2>Easy-Retry</h2><div class="loading-wrp"><span class="dot dot-spin"><i></i><i></i><i></i><i></i></span></div><div style="display: flex; justify-content: center; align-items: center;">分布式重试服务平台</div></div></div><script src="//cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.min.js"></script><script src="//cdn.jsdelivr.net/npm/vue-router@3.5.1/dist/vue-router.min.js"></script><script src="//cdn.jsdelivr.net/npm/vuex@3.1.1/dist/vuex.min.js"></script><script src="//cdn.jsdelivr.net/npm/axios@0.21.1/dist/axios.min.js"></script><script src="/js/chunk-vendors.87c1e94d.js"></script><script src="/js/app.1eae7dfe.js"></script></body></html>
<!DOCTYPE html><html lang="zh-cmn-Hans"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/logo.png"><title>Easy-Retry</title><style>.first-loading-wrp{display:flex;justify-content:center;align-items:center;flex-direction:column;min-height:420px;height:100%}.first-loading-wrp>h1{font-size:128px}.first-loading-wrp .loading-wrp{padding:98px;display:flex;justify-content:center;align-items:center}.dot{animation:antRotate 1.2s infinite linear;transform:rotate(45deg);position:relative;display:inline-block;font-size:32px;width:32px;height:32px;box-sizing:border-box}.dot i{width:14px;height:14px;position:absolute;display:block;background-color:#1890ff;border-radius:100%;transform:scale(.75);transform-origin:50% 50%;opacity:.3;animation:antSpinMove 1s infinite linear alternate}.dot i:nth-child(1){top:0;left:0}.dot i:nth-child(2){top:0;right:0;-webkit-animation-delay:.4s;animation-delay:.4s}.dot i:nth-child(3){right:0;bottom:0;-webkit-animation-delay:.8s;animation-delay:.8s}.dot i:nth-child(4){bottom:0;left:0;-webkit-animation-delay:1.2s;animation-delay:1.2s}@keyframes antRotate{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@-webkit-keyframes antRotate{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@keyframes antSpinMove{to{opacity:1}}@-webkit-keyframes antSpinMove{to{opacity:1}}</style><link href="/css/chunk-758b2aa4.1c9c785f.css" rel="prefetch"><link href="/css/chunk-77aaac2a.99cbbcce.css" rel="prefetch"><link href="/css/chunk-ff9025ec.cd4961ff.css" rel="prefetch"><link href="/css/user.6ccd4506.css" rel="prefetch"><link href="/js/chunk-2d0a4079.3bbb423d.js" rel="prefetch"><link href="/js/chunk-2d0b7230.fe38dce0.js" rel="prefetch"><link href="/js/chunk-2d0c8f97.72c6927b.js" rel="prefetch"><link href="/js/chunk-2d0d43f4.f5bb36b7.js" rel="prefetch"><link href="/js/chunk-2d0f085f.b8852e6c.js" rel="prefetch"><link href="/js/chunk-2d21a08f.6cb549d6.js" rel="prefetch"><link href="/js/chunk-2d228eef.955019b5.js" rel="prefetch"><link href="/js/chunk-40597980.5e57166b.js" rel="prefetch"><link href="/js/chunk-732da7b5.251276b0.js" rel="prefetch"><link href="/js/chunk-758b2aa4.b88de219.js" rel="prefetch"><link href="/js/chunk-77aaac2a.bb4621bb.js" rel="prefetch"><link href="/js/chunk-ff9025ec.a77618ce.js" rel="prefetch"><link href="/js/fail.fe1af659.js" rel="prefetch"><link href="/js/lang-zh-CN-account-settings.f8f25eaf.js" rel="prefetch"><link href="/js/lang-zh-CN-account.c724e71d.js" rel="prefetch"><link href="/js/lang-zh-CN-dashboard-analysis.d7cabd65.js" rel="prefetch"><link href="/js/lang-zh-CN-dashboard.5180154b.js" rel="prefetch"><link href="/js/lang-zh-CN-form-basicForm.ff3088ac.js" rel="prefetch"><link href="/js/lang-zh-CN-form.cc39e450.js" rel="prefetch"><link href="/js/lang-zh-CN-global.bf0df5c8.js" rel="prefetch"><link href="/js/lang-zh-CN-menu.25425a62.js" rel="prefetch"><link href="/js/lang-zh-CN-result-fail.232762aa.js" rel="prefetch"><link href="/js/lang-zh-CN-result-success.3519c60c.js" rel="prefetch"><link href="/js/lang-zh-CN-result.32c5cf1c.js" rel="prefetch"><link href="/js/lang-zh-CN-setting.8c2ce690.js" rel="prefetch"><link href="/js/lang-zh-CN-user.81513cba.js" rel="prefetch"><link href="/js/lang-zh-CN.3dfa92aa.js" rel="prefetch"><link href="/js/user.8401c9c6.js" rel="prefetch"><link href="/css/app.b0a9877f.css" rel="preload" as="style"><link href="/css/chunk-vendors.5be6e05a.css" rel="preload" as="style"><link href="/js/app.b84c86ee.js" rel="preload" as="script"><link href="/js/chunk-vendors.87c1e94d.js" rel="preload" as="script"><link href="/css/chunk-vendors.5be6e05a.css" rel="stylesheet"><link href="/css/app.b0a9877f.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but vue-antd-pro doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"><div class="first-loading-wrp"><h2>Easy-Retry</h2><div class="loading-wrp"><span class="dot dot-spin"><i></i><i></i><i></i><i></i></span></div><div style="display: flex; justify-content: center; align-items: center;">分布式重试服务平台</div></div></div><script src="//cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.min.js"></script><script src="//cdn.jsdelivr.net/npm/vue-router@3.5.1/dist/vue-router.min.js"></script><script src="//cdn.jsdelivr.net/npm/vuex@3.1.1/dist/vuex.min.js"></script><script src="//cdn.jsdelivr.net/npm/axios@0.21.1/dist/axios.min.js"></script><script src="/js/chunk-vendors.87c1e94d.js"></script><script src="/js/app.b84c86ee.js"></script></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -38,7 +38,7 @@
<dependency>
<groupId>com.aizuda</groupId>
<artifactId>easy-retry-client-starter</artifactId>
<version>1.3.0-SNAPSHOT</version>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>

View File

@ -21,7 +21,7 @@
<java.version>1.8</java.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<revision>1.3.0-SNAPSHOT</revision>
<revision>1.3.0</revision>
<dingding-talk.version>1.0.0</dingding-talk.version>
<hibernate-validator.version>5.4.2.Final</hibernate-validator.version>
<netty-all.version>4.1.48.Final</netty-all.version>