Skip to content

Commit 92136ec

Browse files
committed
docs:专栏更新
1 parent 0479b4d commit 92136ec

9 files changed

+2199
-243
lines changed

docs/.vuepress/config.js

Lines changed: 48 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ module.exports = {
1717
"/": {
1818
lang: "zh-CN",
1919
title: "编程严选网",
20-
description: "Java、前端、大数据、区块链、AI应用开发求职必备技能:计算机基础,设计模式、DDD及各大中台和业务系统设计真实案例...软件开发的一站式终身学习网站!"
20+
description: "Java、前端、大数据、云原生、区块链、AI大模型应用开发求职必备技能:计算机基础,设计模式、DDD及各大中台和业务系统设计真实案例...软件开发的一站式终身学习网站!"
2121
}
2222
},
2323
head: [
@@ -582,8 +582,8 @@ module.exports = {
582582
{
583583
text: 'k8s',
584584
items: [{
585-
text: 'kubectl命令',
586-
link: '/md/k8s/kubectl命令.md'
585+
text: 'Kubernetes的基本架构',
586+
link: '/md/k8s/00-Kubernetes的基本架构.md'
587587
}]
588588
},
589589

@@ -1141,6 +1141,7 @@ module.exports = {
11411141
"02-实现http请求的异步长轮询",
11421142
"03-SpringMVC拦截处理器",
11431143
"Spring之BeanNameAware和BeanFactoryAware接口",
1144+
"这次彻底搞懂IoC容器依赖注入的源码",
11441145
"别小看Spring过滤器,这些知识点你必须得掌握",
11451146
"Spring框架使用了哪些设计模式",
11461147
]
@@ -1278,19 +1279,49 @@ module.exports = {
12781279
]
12791280
}],
12801281
"/md/k8s/": [{
1281-
title: "Kubernetes",
1282-
collapsable: false,
1283-
sidebarDepth: 0,
1284-
children: [
1285-
"00-Kubernetes的基本架构",
1286-
"01-一键部署神器kubeadm",
1287-
"02-Kubernetes核心组件之kube-proxy实现原理",
1288-
"kubectl命令",
1289-
"Kubernetes容器日志处理方案",
1290-
"23-0-声明式API",
1291-
"23-1-Envoy",
1292-
]
1293-
}],
1282+
title: "Kubernetes安装和使用",
1283+
collapsable: false,
1284+
sidebarDepth: 0,
1285+
children: [
1286+
"01-一键部署神器kubeadm",
1287+
"快速搭建Kubernetes集群",
1288+
"kubectl命令",
1289+
"Kubernetes容器日志处理方案",
1290+
]
1291+
},
1292+
1293+
{
1294+
title: "Kubernetes核心组件",
1295+
collapsable: false,
1296+
sidebarDepth: 0,
1297+
children: [
1298+
"00-Kubernetes的基本架构",
1299+
"nature-of-kubernetes",
1300+
"02-Kubernetes核心组件之kube-proxy实现原理",
1301+
"pod-in-kubernetes",
1302+
"23-0-声明式API",
1303+
"23-1-Envoy",
1304+
]
1305+
},
1306+
1307+
{
1308+
title: "Kubernetes部署应用",
1309+
collapsable: false,
1310+
sidebarDepth: 0,
1311+
children: [
1312+
"使用 Kubernetes 部署 Nginx 应用",
1313+
]
1314+
},
1315+
1316+
{
1317+
title: "Kubernetes云平台KubeSphere",
1318+
collapsable: false,
1319+
sidebarDepth: 0,
1320+
children: [
1321+
"00-为啥选择 kubesphere",
1322+
]
1323+
},
1324+
],
12941325

12951326
"/md/monitor/": [{
12961327
title: "监控",
@@ -1805,6 +1836,7 @@ module.exports = {
18051836
"05-Flink实战DataStream API编程",
18061837
"flink-data-latency-solution",
18071838
"flink-cep",
1839+
"flink-checkpoint",
18081840
]
18091841
}, ],
18101842

docs/md/flink/flink-cep.md

Lines changed: 0 additions & 227 deletions
Original file line numberDiff line numberDiff line change
@@ -187,114 +187,6 @@ pattern
187187

188188
**停止条件:** 如果使用循环模式(`oneOrMore()``oneOrMore().optional()`),你可以指定一个停止条件,例如,接受事件的值大于5直到值的和小于50。
189189

190-
为了更好的理解它,看下面的例子。给定
191-
192-
- 模式如`"(a+ until b)"` (一个或者更多的`"a"`直到`"b"`)
193-
- 到来的事件序列`"a1" "c" "a2" "b" "a3"`
194-
- 输出结果会是: `{a1 a2} {a1} {a2} {a3}`.
195-
196-
你可以看到`{a1 a2 a3}``{a2 a3}`由于停止条件没有被输出。
197-
198-
#### `where(condition)`
199-
200-
为当前模式定义一个条件。为了匹配这个模式,一个事件必须满足某些条件。 多个连续的 where() 语句取与组成判断条件。
201-
202-
```java
203-
pattern.where(new IterativeCondition<Event>() {
204-
@Override
205-
public boolean filter(Event value, Context ctx) throws Exception {
206-
return ... // 一些判断条件
207-
}
208-
});
209-
```
210-
211-
#### `or(condition)`
212-
213-
增加一个新的判断,和当前的判断取或。一个事件只要满足至少一个判断条件就匹配到模式。
214-
215-
```java
216-
pattern.where(new IterativeCondition<Event>() {
217-
@Override
218-
public boolean filter(Event value, Context ctx) throws Exception {
219-
return ...; // 一些判断条件
220-
}
221-
}).or(new IterativeCondition<Event>() {
222-
@Override
223-
public boolean filter(Event value, Context ctx) throws Exception {
224-
return ...; // 替代条件
225-
}
226-
});
227-
```
228-
229-
#### `until(condition)`
230-
231-
为循环模式指定一个停止条件。意思是满足了给定的条件的事件出现后,就不会再有事件被接受进入模式了。 只适用于和oneOrMore()同时使用。 `NOTE:` 在基于事件的条件中,它可用于清理对应模式的状态。
232-
233-
```java
234-
pattern.oneOrMore().until(new IterativeCondition<Event>() {
235-
@Override
236-
public boolean filter(Event value, Context ctx) throws Exception {
237-
return ...; // 替代条件
238-
}
239-
});
240-
```
241-
242-
#### `subtype(subClass)`
243-
244-
为当前模式定义一个子类型条件。一个事件只有是这个子类型的时候才能匹配到模式。
245-
246-
```java
247-
pattern.subtype(SubEvent.class);
248-
```
249-
250-
#### `oneOrMore()`
251-
252-
指定模式期望匹配到的事件至少出现一次。 默认(在子事件间)使用松散的内部连续性。 关于内部连续性的更多信息可以参考连续性。 推荐使用 until()或者 within()来清理状态。
253-
254-
```java
255-
pattern.oneOrMore();
256-
```
257-
258-
#### `timesOrMore(#times)`
259-
260-
指定模式期望匹配到的事件至少出现 #times 次。 默认(在子事件间)使用松散的内部连续性。 关于内部连续性的更多信息可以参考连续性。
261-
262-
```java
263-
pattern.timesOrMore(2);
264-
```
265-
266-
#### `times(#ofTimes)`
267-
268-
指定模式期望匹配到的事件正好出现的次数。 默认(在子事件间)使用松散的内部连续性。 关于内部连续性的更多信息可以参考连续性。
269-
270-
```java
271-
pattern.times(2);
272-
```
273-
274-
#### `times(#fromTimes, #toTimes)`
275-
276-
指定模式期望匹配到的事件出现次数在#fromTimes和#toTimes之间。 默认(在子事件间)使用松散的内部连续性。 关于内部连续性的更多信息可以参考连续性。
277-
278-
```java
279-
pattern.times(2, 4);
280-
```
281-
282-
#### `optional()`
283-
284-
指定这个模式是可选的,也就是说,它可能根本不出现。这对所有之前提到的量词都适用。
285-
286-
```java
287-
pattern.oneOrMore().optional();
288-
```
289-
290-
#### `greedy()`
291-
292-
指定这个模式是贪心的,也就是说,它会重复尽可能多的次数。这只对量词适用,现在还不支持模式组。
293-
294-
```java
295-
pattern.oneOrMore().greedy();
296-
```
297-
298190
### 2.2 组合模式
299191

300192
即模式序列,由一个初始模式作为开头:
@@ -387,125 +279,6 @@ Pattern.<Event>begin("start")
387279
.where(SimpleCondition.of(value -> value.getName().equals("b")));
388280
```
389281

390-
391-
392-
输入:C D A1 A2 A3 D A4 B,会产生下面的输出:
393-
394-
395-
396-
397-
398-
如果施加严格连续性: {C A1 B},{C A1 A2 B},{C A1 A2 A3 B}
399-
400-
不施加严格连续性: {C A1 B},{C A1 A2 B},{C A1 A2 A3 B},{C A1 A2 A3 A4 B}
401-
402-
例如,一个如下的模式:
403-
404-
405-
406-
```java
407-
Pattern.<Event>begin("start")
408-
.where(SimpleCondition.of(value -> value.getName().equals("c")))
409-
.followedBy("middle")
410-
.where(SimpleCondition.of(value -> value.getName().equals("a")))
411-
.oneOrMore()
412-
.allowCombinations()
413-
.followedBy("end1")
414-
.where(SimpleCondition.of(value -> value.getName().equals("b")));
415-
```
416-
417-
418-
419-
输入:C D A1 A2 A3 D A4 B,会产生如下的输出:
420-
421-
422-
423-
424-
425-
如果使用不确定松散连续: {C A1 B},{C A1 A2 B},{C A1 A3 B},{C A1 A4 B},{C A1 A2 A3 B},{C A1 A2 A4 B},{C A1 A3 A4 B},{C A1 A2 A3 A4 B}
426-
427-
如果不使用:{C A1 B},{C A1 A2 B},{C A1 A2 A3 B},{C A1 A2 A3 A4 B}
428-
429-
430-
431-
432-
433-
| 模式操作 | 描述 |
434-
| ----------------- | ------------------------------------------------------------ |
435-
| **consecutive()** |`oneOrMore()``times()`一起使用, 在匹配的事件之间施加严格的连续性, 也就是说,任何不匹配的事件都会终止匹配(和`next()`一样)。如果不使用它,那么就是松散连续(和`followedBy()`一样)。 |
436-
437-
438-
439-
440-
441-
例如,一个如下的模式:
442-
443-
444-
445-
```scala
446-
Pattern.begin("start").where(_.getName().equals("c"))
447-
.followedBy("middle").where(_.getName().equals("a"))
448-
.oneOrMore().consecutive()
449-
.followedBy("end1").where(_.getName().equals("b"))
450-
```
451-
452-
453-
454-
输入:C D A1 A2 A3 D A4 B,会产生下面的输出:
455-
456-
457-
458-
459-
460-
如果施加严格连续性: {C A1 B},{C A1 A2 B},{C A1 A2 A3 B}
461-
462-
不施加严格连续性: {C A1 B},{C A1 A2 B},{C A1 A2 A3 B},{C A1 A2 A3 A4 B}
463-
464-
465-
466-
```plain
467-
</td>
468-
</tr>
469-
<tr>
470-
<td><strong>allowCombinations()</strong><a name="allow_comb_java"></a></td>
471-
<td>
472-
<p>与<code>oneOrMore()</code>和<code>times()</code>一起使用,
473-
在匹配的事件中间施加不确定松散连续性(和<code>followedByAny()</code>一样)。</p>
474-
<p>如果不使用,就是松散连续(和<code>followedBy()</code>一样)。</p>
475-
```
476-
477-
478-
479-
例如,一个如下的模式:
480-
481-
482-
483-
```scala
484-
Pattern.begin("start").where(_.getName().equals("c"))
485-
.followedBy("middle").where(_.getName().equals("a"))
486-
.oneOrMore().allowCombinations()
487-
.followedBy("end1").where(_.getName().equals("b"))
488-
```
489-
490-
491-
492-
输入:C D A1 A2 A3 D A4 B,会产生如下的输出:
493-
494-
495-
496-
497-
498-
如果使用不确定松散连续: {C A1 B},{C A1 A2 B},{C A1 A3 B},{C A1 A4 B},{C A1 A2 A3 B},{C A1 A2 A4 B},{C A1 A3 A4 B},{C A1 A2 A3 A4 B}
499-
500-
如果不使用:{C A1 B},{C A1 A2 B},{C A1 A2 A3 B},{C A1 A2 A3 A4 B}
501-
502-
503-
504-
```plain
505-
</td>
506-
</tr>
507-
```
508-
509282
### 2.3 模式组
510283

511284
将一个模式序列作为条件嵌入在个体模式里。

0 commit comments

Comments
 (0)