活动图高阶讲解-03

1
00:00:00,000 --> 00:00:06,260
刚才我们讲了活动图的历史

2
00:00:06,260 --> 00:00:11,460
那我们来看这个活动图

3
00:00:11,460 --> 00:00:15,260
如果用来建模的话怎么用

4
00:00:15,260 --> 00:00:20,100
按照我们前面讲的软件方法的工作流

5
00:00:20,100 --> 00:00:23,500
业务建模、需求、分析、设计

6
00:00:23,500 --> 00:00:26,500
它怎么用

7
00:00:26,500 --> 00:00:29,900
实际上这四个工作流它都可以用

8
00:00:29,900 --> 00:00:33,900
第一个就是业务建模

9
00:00:33,900 --> 00:00:39,900
就是描述外部组织和我们的目标组织

10
00:00:39,900 --> 00:00:41,900
交互的时候

11
00:00:41,900 --> 00:00:44,900
然后各个系统之间怎么协作的

12
00:00:44,900 --> 00:00:51,900
那么系统在序列图上我们是业务工人、业务实体

13
00:00:51,900 --> 00:00:52,900
这样的东西

14
00:00:52,900 --> 00:00:58,900
那么活动图上就以泳道的方式来表示了

15
00:00:58,900 --> 00:01:01,900
当然泳道这个只是一个形式

16
00:01:01,900 --> 00:01:03,900
我们后面会说到,就是说

17
00:01:03,900 --> 00:01:10,900
活动图上我们可以把这个活动分配到某个块

18
00:01:10,900 --> 00:01:14,900
某个类或某个块的操作里面去

19
00:01:14,900 --> 00:01:20,900
成为那个类的操作的一个实现方式

20
00:01:20,900 --> 00:01:23,900
那这两个就绑定起来了

21
00:01:23,900 --> 00:01:27,900
表现在这个图上就是泳道的方式

22
00:01:27,900 --> 00:01:30,900
系统一,系统二这样

23
00:01:30,900 --> 00:01:31,900
但是呢

24
00:01:31,900 --> 00:01:33,900
EA在活动图上

25
00:01:33,900 --> 00:01:35,900
它没有

26
00:01:35,900 --> 00:01:38,900
这应该可以分很多栏的

27
00:01:38,900 --> 00:01:41,900
上面可以搞一个大的,目标组织这样的

28
00:01:41,900 --> 00:01:46,900
目标组织这个,单独起一个大的一栏

29
00:01:46,900 --> 00:01:47,900
没有

30
00:01:47,900 --> 00:01:50,900
你看刚才那个BPMN这里就有,对吧

31
00:01:50,900 --> 00:01:52,900
这里你看

32
00:01:52,900 --> 00:01:57,900
亚马公司这,是仓库部门、财务部门、销售部门

33
00:01:57,900 --> 00:01:58,900
对吧

34
00:01:58,900 --> 00:02:01,900
EA这个活动图的话

35
00:02:01,900 --> 00:02:03,900
我不知道怎么画,没画出来

36
00:02:03,900 --> 00:02:05,900
这个

37
00:02:05,900 --> 00:02:09,900
再捉摸捉摸

38
00:02:09,900 --> 00:02:12,900
也可能它就没有这个

39
00:02:12,900 --> 00:02:15,900
这个功能

40
00:02:15,900 --> 00:02:19,900
业务建模我们知道

41
00:02:19,900 --> 00:02:23,900
包括后面讲的系统的需求等等

42
00:02:23,900 --> 00:02:27,900
里面我们往往用用例

43
00:02:27,900 --> 00:02:31,900
来描述这个价值

44
00:02:31,900 --> 00:02:35,900
但是我们知道用例

45
00:02:35,900 --> 00:02:37,900
这个概念

46
00:02:37,900 --> 00:02:39,900
它是一个什么

47
00:02:39,900 --> 00:02:42,900
从卖的角度去看问题的

48
00:02:42,900 --> 00:02:47,900
从卖的角度去把一些

49
00:02:47,900 --> 00:02:49,900
交互的集合怎么样

50
00:02:49,900 --> 00:02:51,900
把它打包在一起的

51
00:02:51,900 --> 00:02:54,900
所以呢,往往一个用例背后

52
00:02:54,900 --> 00:02:59,900
它会包含着多个回合的这种交互

53
00:02:59,900 --> 00:03:02,900
比如说,这个业务用例

54
00:03:02,900 --> 00:03:05,900
外部组织这样一做

55
00:03:05,900 --> 00:03:06,900
这边搞搞搞

56
00:03:06,900 --> 00:03:09,900
这时候返回一个东西到外部组织这里

57
00:03:09,900 --> 00:03:14,900
然后外部组织这里又做第二个

58
00:03:14,900 --> 00:03:16,900
进来,这边又这样

59
00:03:16,900 --> 00:03:18,900
也就是说,它为了

60
00:03:18,900 --> 00:03:22,900
达到一个它想要的价值

61
00:03:22,900 --> 00:03:28,900
它要和我们这个组织,和我们内部交互很多次

62
00:03:28,900 --> 00:03:33,900
就像,比如说,我们《软件方法》里面提到一个办证嘛

63
00:03:33,900 --> 00:03:33,900
对吧

64
00:03:33,900 --> 00:03:35,900
你办证

65
00:03:35,900 --> 00:03:37,900
你到工商去办证

66
00:03:37,900 --> 00:03:41,900
那么你首先要先提交申请

67
00:03:41,900 --> 00:03:43,900
提交完了

68
00:03:43,900 --> 00:03:45,900
里面有个流程

69
00:03:45,900 --> 00:03:48,900
过了很多天

70
00:03:48,900 --> 00:03:52,900
然后人家返回给你说,可以来

71
00:03:52,900 --> 00:03:54,900
正式来办了

72
00:03:54,900 --> 00:03:59,900
你再拿上材料又到工商去办

73
00:03:59,900 --> 00:04:02,900
也就是说,你要和工商打交道

74
00:04:02,900 --> 00:04:04,900
至少打两次交道

75
00:04:04,900 --> 00:04:08,900
但你不能说一次交道是一个用例,不是的

76
00:04:08,900 --> 00:04:11,900
因为你对它的期望

77
00:04:12,900 --> 00:04:14,900
就是把证办下来

78
00:04:14,900 --> 00:04:16,900
你证办不下来

79
00:04:16,900 --> 00:04:18,900
这个意义都不大

80
00:04:18,900 --> 00:04:20,900
你前面的做了白做

81
00:04:20,900 --> 00:04:23,900
那系统用例也是一样的

82
00:04:23,900 --> 00:04:25,900
比如说,拿取款机为例

83
00:04:25,900 --> 00:04:27,900
你为了取现金

84
00:04:27,900 --> 00:04:31,900
你要和这个取款机交互很多次

85
00:04:31,900 --> 00:04:33,900
才能取到现金

86
00:04:33,900 --> 00:04:39,900
所以我们这个活动图上面的话

87
00:04:40,900 --> 00:04:42,900
如果要描述这个用例的话

88
00:04:42,900 --> 00:04:46,900
它往往是要多次交互,多个活动

89
00:04:46,900 --> 00:04:49,900
组织起来的

90
00:04:49,900 --> 00:04:55,900
业务建模

91
00:04:55,900 --> 00:04:59,900
外部组织,目标组织里面多个系统

92
00:04:59,900 --> 00:05:01,900
需求呢

93
00:05:01,900 --> 00:05:03,900
跟业务建模差不多

94
00:05:03,900 --> 00:05:06,900
就是把目标系统放这里

95
00:05:06,900 --> 00:05:08,900
外部系统

96
00:05:08,900 --> 00:05:10,900
做什么

97
00:05:10,900 --> 00:05:14,900
也同样有多次的交互的回合

98
00:05:14,900 --> 00:05:20,900
那么这里面经常会有一个问题

99
00:05:20,900 --> 00:05:22,900
就是说

100
00:05:22,900 --> 00:05:25,900
假设我用活动图来描述需求的话

101
00:05:25,900 --> 00:05:29,900
应该描述到多细的问题

102
00:05:29,900 --> 00:05:36,900
因为有的同学经常会这样问

103
00:05:36,900 --> 00:05:38,900
有的同学会这样问

104
00:05:38,900 --> 00:05:45,900
假设我的系统是用面向过程的方式来做

105
00:05:45,900 --> 00:05:46,900
来思考

106
00:05:46,900 --> 00:05:48,900
我没有什么对象

107
00:05:48,900 --> 00:05:49,900
我就是过程

108
00:05:49,900 --> 00:05:53,900
对我来说就不分什么对象

109
00:05:53,900 --> 00:05:55,900
我就是过程

110
00:05:55,900 --> 00:05:58,900
或者说,我所有的过程

111
00:05:58,900 --> 00:06:02,900
我都看作“系统”对象的一个操作

112
00:06:03,900 --> 00:06:06,900
所有的都是我这个系统的操作

113
00:06:06,900 --> 00:06:10,900
那既然是系统的操作

114
00:06:10,900 --> 00:06:13,900
系统作为一个整体的操作

115
00:06:13,900 --> 00:06:15,900
那不都是需求吗?对不对?

116
00:06:15,900 --> 00:06:20,900
是这样

117
00:06:20,900 --> 00:06:23,900
需求是系统作为一个整体的表现

118
00:06:23,900 --> 00:06:29,900
但不代表说系统作为整体的表现

119
00:06:29,900 --> 00:06:31,900
一定是需求

120
00:06:32,900 --> 00:06:33,900
这地方一定要注意

121
00:06:33,900 --> 00:06:35,900
需求是整体的

122
00:06:35,900 --> 00:06:37,900
系统作为整体的一个表现

123
00:06:37,900 --> 00:06:39,900
但系统作为整体的表现不一定是需求

124
00:06:39,900 --> 00:06:40,900
很简单

125
00:06:40,900 --> 00:06:41,900
比如说,我们举个例子

126
00:06:41,900 --> 00:06:45,900
就像我们刚才讲的那个

127
00:06:45,900 --> 00:06:49,900
假设我系统就把所有的代码团在一起

128
00:06:49,900 --> 00:06:52,900
我也不分什么模块,也不分了

129
00:06:52,900 --> 00:06:54,900
所有代码团在一起

130
00:06:54,900 --> 00:07:01,900
假设我系统是不分任何模块

131
00:07:01,900 --> 00:07:03,900
所有代码团在一起的话

132
00:07:03,900 --> 00:07:05,900
那里面的某一行代码算不算需求

133
00:07:05,900 --> 00:07:07,900
不算的

134
00:07:07,900 --> 00:07:10,900
倒过来是不对的

135
00:07:10,900 --> 00:07:12,900
因为我们需求是什么

136
00:07:12,900 --> 00:07:14,900
不这样不行

137
00:07:14,900 --> 00:07:19,900
你代码不这样写可以吗,是可以的

138
00:07:19,900 --> 00:07:24,900
那什么是不这样不行的

139
00:07:24,900 --> 00:07:26,900
就是功能和性能

140
00:07:26,900 --> 00:07:28,900
就是说在涉众眼里看来,不这样不行的

141
00:07:28,900 --> 00:07:31,900
所以这里面怎么样和分析

142
00:07:31,900 --> 00:07:35,900
把它分界线分清楚

143
00:07:35,900 --> 00:07:37,900
要点还是不这样不行

144
00:07:37,900 --> 00:07:40,900
就是说,你不这样分解可以吗?

145
00:07:40,900 --> 00:07:43,900
比如说,这里为什么分两个活动

146
00:07:43,900 --> 00:07:45,900
不分可以吗?

147
00:07:45,900 --> 00:07:47,900
如果说不分也可以

148
00:07:47,900 --> 00:07:51,900
照样可以满足涉众利益

149
00:07:51,900 --> 00:07:53,900
那这两个就不用分了

150
00:07:53,900 --> 00:07:56,900
一个活动就可以了

151
00:07:56,900 --> 00:07:57,900
如果说不分不行

152
00:07:57,900 --> 00:07:59,900
因为里面的规则

153
00:07:59,900 --> 00:08:02,900
我们业务规则本身就要求

154
00:08:02,900 --> 00:08:06,900
必须要这样分

155
00:08:06,900 --> 00:08:09,900
不分就没有办法满足我们的业务规则

156
00:08:09,900 --> 00:08:11,900
那就可以

157
00:08:11,900 --> 00:08:15,900
就是说

158
00:08:15,900 --> 00:08:17,900
分析

159
00:08:17,900 --> 00:08:19,900
如果是面向过程的话

160
00:08:19,900 --> 00:08:21,900
分析比需求

161
00:08:21,900 --> 00:08:23,900
需要分得更细的

162
00:08:24,900 --> 00:08:26,900
那么判断什么是需求

163
00:08:26,900 --> 00:08:28,900
什么是分析

164
00:08:28,900 --> 00:08:30,900
就要看

165
00:08:30,900 --> 00:08:32,900
什么是不这样不行

166
00:08:32,900 --> 00:08:35,900
分析是这样也行的

167
00:08:35,900 --> 00:08:39,900
因为分解有很多种分解

168
00:08:39,900 --> 00:08:41,900
比如,同样一个大的

169
00:08:41,900 --> 00:08:43,900
大的一个活动

170
00:08:43,900 --> 00:08:46,900
你可以分成两个,分成三个

171
00:08:46,900 --> 00:08:49,900
三个里面还可以再分,对不对

172
00:08:49,900 --> 00:08:52,900
理论上你可以无限地分下去

173
00:08:54,900 --> 00:08:57,900
但是哪些是你要画出来的

174
00:08:57,900 --> 00:08:59,900
表达出来的

175
00:08:59,900 --> 00:09:03,900
那么这里的判断标准就是

176
00:09:03,900 --> 00:09:05,900
不这样不行

177
00:09:05,900 --> 00:09:07,900
那分析就是

178
00:09:07,900 --> 00:09:09,900
结合

179
00:09:09,900 --> 00:09:11,900
因为你怎么分解

180
00:09:11,900 --> 00:09:14,900
到底分解成几个活动

181
00:09:14,900 --> 00:09:17,900
每一个活动的输入输出参数

182
00:09:17,900 --> 00:09:19,900
是什么类型

183
00:09:19,900 --> 00:09:22,900
是跟你的静态模型

184
00:09:22,900 --> 00:09:25,900
也就是类模型或者数据模型是相关的

185
00:09:25,900 --> 00:09:29,900
那分析就要结合我们的类模型

186
00:09:29,900 --> 00:09:31,900
或者说数据模型

187
00:09:31,900 --> 00:09:34,900
来决定

188
00:09:34,900 --> 00:09:37,900
怎么样的分解

189
00:09:37,900 --> 00:09:39,900
是比较合理的

190
00:09:39,900 --> 00:09:41,900
但这个跟需求没关系

191
00:09:41,900 --> 00:09:43,900
需求要的是功能和性能

192
00:09:43,900 --> 00:09:47,900
也就是说,在满足需求的情况下

193
00:09:47,900 --> 00:09:49,900
结合上这个

194
00:09:49,900 --> 00:09:51,900
合理的数据模型或类模型

195
00:09:51,900 --> 00:09:55,900
挑出一个最佳的

196
00:09:55,900 --> 00:09:57,900
子活动的分解

197
00:09:57,900 --> 00:09:59,900
这个是分析

198
00:09:59,900 --> 00:10:03,900
设计

199
00:10:03,900 --> 00:10:05,900
就是结合

200
00:10:05,900 --> 00:10:07,900
语言、平台的实现

201
00:10:07,900 --> 00:10:12,900
类模型和数据模型

202
00:10:12,900 --> 00:10:14,900
这个映射是一样的

203
00:10:14,900 --> 00:10:15,900
就不用说了

204
00:10:15,900 --> 00:10:17,900
我们看逻辑上

205
00:10:17,900 --> 00:10:19,900
逻辑上,活动图能用来做什么

206
00:10:19,900 --> 00:10:21,900
活动图的话

207
00:10:21,900 --> 00:10:24,900
最常见的就是

208
00:10:24,900 --> 00:10:26,900
我们把它当流程图用

209
00:10:26,900 --> 00:10:29,900
就在类的操作下面

210
00:10:29,900 --> 00:10:31,900
绑定一个活动图

211
00:10:31,900 --> 00:10:34,900
比如说,我们类的操作绑定这样一个活动图

212
00:10:34,900 --> 00:10:36,900
操作1,绑定这样一个活动图

213
00:10:36,900 --> 00:10:38,900
那这个图画完之后

214
00:10:38,900 --> 00:10:39,900
你绑定到这个操作

215
00:10:39,900 --> 00:10:41,900
生成代码的时候

216
00:10:41,900 --> 00:10:43,900
它会生成类似这样的代码

217
00:10:43,900 --> 00:10:45,900
这个代码就是生成的

218
00:10:45,900 --> 00:10:48,900
它跟我们的活动图是

219
00:10:48,900 --> 00:10:50,900
对应的

220
00:10:50,900 --> 00:10:55,900
这是面向对象

221
00:10:55,900 --> 00:10:57,900
包括面向过程

222
00:10:57,900 --> 00:10:59,900
都一样

223
00:10:59,900 --> 00:11:01,900
我们把它当成一个流程图来用

224
00:11:01,900 --> 00:11:04,900
其中控制流是焦点

225
00:11:04,900 --> 00:11:06,900
控制流

226
00:11:06,900 --> 00:11:08,900
如果这样,否则这样

227
00:11:08,900 --> 00:11:10,900
if else 控制流

228
00:11:12,900 --> 00:11:14,900
另外一个

229
00:11:14,900 --> 00:11:16,900
用处就是

230
00:11:16,900 --> 00:11:18,900
把它当成数据流是焦点的

231
00:11:18,900 --> 00:11:22,900
就是

232
00:11:22,900 --> 00:11:24,900
现在另外一个流派

233
00:11:24,900 --> 00:11:26,900
函数式编程的思想

234
00:11:26,900 --> 00:11:28,900
把我们的

235
00:11:28,900 --> 00:11:32,900
系统看作是由若干函数

236
00:11:32,900 --> 00:11:34,900

237
00:11:34,900 --> 00:11:36,900
组装而成的

238
00:11:38,900 --> 00:11:40,900
这跟我们前面讲的

239
00:11:40,900 --> 00:11:42,900
数据的加工机一样

240
00:11:42,900 --> 00:11:44,900
进来

241
00:11:44,900 --> 00:11:46,900
出去

242
00:11:46,900 --> 00:11:48,900
变成

243
00:11:48,900 --> 00:11:49,900
文本的代码

244
00:11:49,900 --> 00:11:50,900
类似这样的

245
00:11:50,900 --> 00:11:51,900
管道一样的

246
00:11:51,900 --> 00:11:52,900
函数1

247
00:11:52,900 --> 00:11:54,900
函数2

248
00:11:54,900 --> 00:11:56,900
出来,函数3

249
00:11:56,900 --> 00:11:58,900
它跟这个是非常相像和对应的

250
00:11:58,900 --> 00:12:03,900
当然活动图本身只要能够解决好

251
00:12:03,900 --> 00:12:07,900
它本来是面向过程的

252
00:12:07,900 --> 00:12:09,900
你要变成面向函数的

253
00:12:09,900 --> 00:12:13,900
要解决好的一个,递归

254
00:12:13,900 --> 00:12:17,900
你怎么

255
00:12:17,900 --> 00:12:18,900
能够

256
00:12:18,900 --> 00:12:20,900
调用自己

257
00:12:20,900 --> 00:12:23,900
那这个的话

258
00:12:23,900 --> 00:12:25,900
可以解决

259
00:12:25,900 --> 00:12:31,900
把我自己的输出

260
00:12:31,900 --> 00:12:33,900
变成我自己的输入

261
00:12:36,900 --> 00:12:38,900
那第二个

262
00:12:38,900 --> 00:12:40,900
就是高阶函数

263
00:12:40,900 --> 00:12:42,900
就是把函数

264
00:12:42,900 --> 00:12:44,900
作为参数

265
00:12:44,900 --> 00:12:46,900
把函数作为另外一个函数的参数

266
00:12:46,900 --> 00:12:51,900
这个也可以解决

267
00:12:51,900 --> 00:12:53,900
就是说

268
00:12:53,900 --> 00:12:54,900
我们

269
00:12:54,900 --> 00:12:56,900
活动图有一个

270
00:12:56,900 --> 00:12:58,900
把活动当作块

271
00:12:58,900 --> 00:13:00,900
在SysML里面

272
00:13:00,900 --> 00:13:02,900
活动作为块来使用

273
00:13:04,900 --> 00:13:06,900
那块本身

274
00:13:06,900 --> 00:13:08,900
就是一个

275
00:13:08,900 --> 00:13:10,900

276
00:13:10,900 --> 00:13:11,900
它可以作为一个

277
00:13:11,900 --> 00:13:13,900
传递的参数

278
00:13:13,900 --> 00:13:17,900
所以活动图目前是

279
00:13:17,900 --> 00:13:19,900
函数式

280
00:13:19,900 --> 00:13:20,900
编程

281
00:13:20,900 --> 00:13:22,900
如果说有什么图形化

282
00:13:22,900 --> 00:13:24,900
表示的话

283
00:13:24,900 --> 00:13:25,900
活动图

284
00:13:25,900 --> 00:13:26,900
目前是

285
00:13:26,900 --> 00:13:28,900
为数不多的一个选择

286
00:13:31,900 --> 00:13:33,900
这是设计的

287
00:13:33,900 --> 00:13:37,900
工作流

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/279871.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络工程师之路由交换技术篇

网络工程师之路由交换技术篇 路由交换之技术篇ARPICMPBPDUIPv6IP编址MAC其他技术点参考 以下均为个人笔记,摘录到csdn做备份 路由交换之技术篇 ARP Operation Code指定了ARP报文的类型, 包括ARP request 和ARP reply;取值为1或者2 &#x…

1.3抽象数据类型的表现和实现

1、实例 &#xff1a; #include<stdio.h> #include<stdio.h> #include<string.h> #pragma warning(disable:4996) ADT Complex{D {r1,r2 | r1,r2 都是实数}S {<r1&#xff0c;r2> | r1是实部&#xff0c;r2是虚部}assign(&C, v1, v2)初始条件:空…

解决谷歌浏览器最新chrome94版本CORS跨域问题

项目场景&#xff1a; 谷歌浏览器升级到chrome94版本出现CORS跨域问题 问题描述 解决谷歌浏览器最新chrome94版本CORS跨域问题。 CORS跨域问题&#xff1a; 升级谷歌浏览器最新chrome94版本后&#xff0c;提示Access to XMLHttpRequest at ‘http://localhost:xxxx/api’ fro…

MISC:常见编码

一、字符编码 1.ASCII码 使用指定7位或8位二进制数组合表示128-256种可能。 常⻅考点&#xff1a;解题过程中给出十进制或十六进制的连续数值。 进制转换工具&#xff1a; ASCII text,Hex,Binary,Decimal,Base64 converter (rapidtables.com) 2.Base64编码 ASCII编码以8个比特…

【Datawhale组队学习:Sora原理与技术实战】使用KAN-TTS合成女生沪语音频

Sambert-Hifigan模型介绍 拼接法和参数法是两种Text-To-Speech(TTS)技术路线。近年来参数TTS系统获得了广泛的应用&#xff0c;故此处仅涉及参数法。 参数TTS系统可分为两大模块&#xff1a;前端和后端。 前端包含文本正则、分词、多音字预测、文本转音素和韵律预测等模块&am…

Vue组件中引入jQuery

两种在vue中引入jQuery的方式 1、普通html中使用jQuery 将jQuer的文件导入到项目中&#xff0c;然后直接使用<script src"jQuery.js"></script>即可。 <script src"jQuery.js"></script> 2、vue组件中使用jQuery 安装依赖 c…

unity报错出现Asset database transaction committed twice!

错误描述&#xff1a; 运行时报错 Assertion failed on expression: ‘m_ErrorCode MDB_MAP_RESIZED || !HasAbortingErrors()’Asset database transaction committed twice!Assertion failed on expression: ‘errors MDB_SUCCESS || errors MDB_NOTFOUND’ 解决办法&…

数据库字段类似 longblob,Navicat里看不到数据,看到的是BLOB。如何看到?

SELECT cast(库对应的字段 as char) FROM sys_notice; 例如&#xff0c;我的直接这样写 SELECT cast(notice_content as char) FROM sys_notice; 最后就能看到信息了

免费开源的 Vue 拖拽组件 VueDraggablePlus (兼容移动端)

VueDraggablePlus 支持 Vue2 / Vue3&#xff0c;是被尤雨溪推荐了的拖拽组件。我自己试用过了&#xff0c;还挺好用的&#xff0c;兼容移动端。 官网&#xff1a;https://alfred-skyblue.github.io/vue-draggable-plus/ 官网文档里面很详细了&#xff0c;我就不再介绍安装和用…

国内超好用且免费的 AI 写作工具有哪些?

目前&#xff0c;市面上这类AI工具实在是太多了&#xff0c;比如依托于清华大学开发的智谱清言&#xff0c;或亦是百度的文心一言&#xff0c;还是阿里云的通义千问&#xff0c;这些AI工具在功能是类似的&#xff0c;但是依托于大模型的不同&#xff0c;可能回答的结果迥然不同…

用Python的turtle库绘制皮卡丘

turtle库的简介 turtle(海龟)库是turtle绘图体系的python实现&#xff0c;turtle库是一种标准库&#xff0c;是python自带的。 turtle(海龟)是一种真实的存在&#xff0c;有一个海龟在窗口的正中心&#xff0c;在画布上游走&#xff0c;走过的轨迹形成了绘制的图形&#xff0…

YOLOv9改进策略:卷积魔改 | AKConv(可改变核卷积),即插即用的卷积,效果秒杀DSConv | 2023年11月最新发表

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文改进内容&#xff1a; YOLOv9如何魔改卷积进一步提升检测精度&#xff1f;AKConv 通过不规则卷积运算完成高效特征提取的过程&#xff0c;为卷积采样形状带来更多探索选择。 AKConv可以作为即插即用的卷积运算来替代卷积运算来提高…

图解缓存淘汰算法 LRU、LFU | 最近最少使用、最不经常使用算法 | go语言实现

写在前面 无论是什么系统&#xff0c;在研发的过程中不可避免的会使用到缓存&#xff0c;而缓存一般来说我们不会永久存储&#xff0c;但是缓存的内容是有限的&#xff0c;那么我们如何在有限的内存空间中&#xff0c;尽可能的保留有效的缓存信息呢&#xff1f; 那么我们就可以…

nginx介绍及搭建

架构模型 Nginx是由一个master管理进程、多个worker进程组成的多进程模型。master负责管理worker进程&#xff0c;worker进程负责处理网络事件&#xff0c;整个框架被设计为一种依赖事件驱动、异步、非阻塞的模式。 优势&#xff1a; 1、充分利用多核&#xff0c;增强并发处理…

浏览器如何进行静态资源缓存?—— 强缓存 协商缓存

在平时使用浏览器排查问题的过程中&#xff0c;我们有时会看到浏览器网络请求中出现304状态码&#xff0c;那么是什么情况下出现304呢&#xff1f;下面是关于这一现象的解释&#xff1a; 浏览器如何进行静态资源缓存&#xff1f;—— 强缓存 & 协商缓存 状态码 304浏览器如…

Godot 学习笔记(2):信号深入讲解

文章目录 前言相关链接环境信号简单项目搭建默认的信号先在label里面预制接收函数添加信号 自定义无参数信号为了做区分&#xff0c;我们在label新增一个函数 自定义带参数信号Button代码label代码连接信号 自定义复杂参数信号自定义GodotObject类ButtonLabel连接信号 父传子Ca…

什么是神经网络?

一、什么是神经网络&#xff1f; 神经网络又称人工神经网络&#xff0c;是一种基于人脑功能模型的计算架构&#xff0c;因此称之为“神经”。神经网络由一组称为“节点”的处理单元组成。这些节点相互传递数据&#xff0c;就像大脑中的神经元相互传递电脉冲一样。 神经网络在…

深度学习pytorch——高阶OP(where gather)(持续更新)

where 1、我们为什么需要where&#xff1f; 我们经常需要一个数据来自好几个的取值&#xff0c;而这些取值通常是不规律的&#xff0c;这就会导致使用传统的拆分和合并会非常的麻烦。我们也可以使用for循环嵌套来取值&#xff0c;也是可以的&#xff0c;但是使用for循环就意味…

【数据可视化】使用Python + Gephi,构建中医方剂关系网络图!

代码和示例数据下载 前言 在这篇文章中&#xff0c;我们将会可视化 《七版方剂学》 的药材的关系&#xff0c;我们将使用Python制作节点和边的数据&#xff0c;然后在Gephi中绘制出方剂的网络图。 Gephi是一个专门用于构建网络图的工具&#xff0c;只要你能提供节点和边的数…

攻防实战 | 记一次nacos到接管阿里云百万数据泄露

在某次攻防当中&#xff0c;通过打点发现了一台nacos&#xff0c;经过测试之后发现可以通过弱口令进入到后台&#xff0c;可以查看其中的配置信息 通过翻看配置文件&#xff0c;发现腾讯云的AK,SK泄露&#xff0c;以及数据库的账号密码。操作不就来了么&#xff0c;直接上云&am…