[图解]建模相关的基础知识-16

news2024/11/24 19:25:50

1
00:00:00,350 --> 00:00:04,130
刚才那个,就相当于,12这个我们可以认为是什么

2
00:00:05,020 --> 00:00:11,360
我们用类图来表达就是,员工、电话

3
00:00:13,320 --> 00:00:15,080
多个

4
00:00:15,090 --> 00:00:16,440
当然这个电话这里

5
00:00:16,970 --> 00:00:18,730
它把多个塞到这里面来了

6
00:00:18,940 --> 00:00:19,570
没有分出去

7
00:00:19,580 --> 00:00:22,320
我们之所以把它画成不同的类

8
00:00:25,130 --> 00:00:27,850
是因为这样看得更清楚一点

9
00:00:29,250 --> 00:00:30,920
显然这是一个多值

10
00:00:33,450 --> 00:00:34,730
表面上它是这样

11
00:00:34,980 --> 00:00:38,880
电话1电话2

12
00:00:38,890 --> 00:00:42,710
但实际上1,2

13
00:00:44,460 --> 00:00:46,370
它是一种变相的多值

14
00:00:46,500 --> 00:00:52,730
类似于,我们再把它重新画一下

15
00:00:57,370 --> 00:01:02,380
员工、电话,这样

16
00:01:04,510 --> 00:01:08,280
这个就稍微的变化了

17
00:01:09,670 --> 00:01:11,580
当然这个电话也不是一个值

18
00:01:11,710 --> 00:01:13,180
实际上这里面是一个字符串

19
00:01:15,440 --> 00:01:17,110
它并没有一个电话的类

20
00:01:17,400 --> 00:01:18,670
是一个字符串

21
00:01:19,110 --> 00:01:22,030
应该说它是一个字符串

22
00:01:22,390 --> 00:01:22,680


23
00:01:24,070 --> 00:01:29,100
然后这个是私人电话

24
00:01:29,110 --> 00:01:36,310
办公电话,会有这样一些区别

25
00:01:36,710 --> 00:01:40,660
这个的话,我认为是可以接受的

26
00:01:42,600 --> 00:01:43,470


27
00:01:44,000 --> 00:01:47,270
至少它这个领域概念上区分了不同

28
00:01:47,400 --> 00:01:47,790


29
00:01:49,050 --> 00:01:52,410
但是下面这个,相当于把上面重复

30
00:01:52,420 --> 00:01:56,700
私人电话1电话2,就不行了

31
00:01:57,370 --> 00:01:59,840
当然,我们知道,规范的建模应该分出来什么

32
00:02:00,270 --> 00:02:02,010
联系方式类型

33
00:02:02,700 --> 00:02:04,750
把这些什么私人电话办公电话

34
00:02:05,040 --> 00:02:06,630
放在联系方式类型那里

35
00:02:07,510 --> 00:02:09,930
然后联系方式单独起一个表

36
00:02:10,360 --> 00:02:13,060
那就可以一对多了

37
00:02:13,150 --> 00:02:15,220
或者电话单独起一个表

38
00:02:15,860 --> 00:02:17,870
如果只有电话,那么应该是什么

39
00:02:19,050 --> 00:02:22,110
员工、电话

40
00:02:22,570 --> 00:02:23,960
电话类型

41
00:02:25,970 --> 00:02:31,630
电话用途,可以这样

42
00:02:34,200 --> 00:02:37,220
当然,我们不止电话,还有微信

43
00:02:37,680 --> 00:02:40,240
还有QQ,那就不能电话了,联系方式

44
00:02:40,910 --> 00:02:42,020
联系方式类型

45
00:02:42,030 --> 00:02:43,860
除了类型,还有用途

46
00:02:44,250 --> 00:02:46,090
比如说,可能还要把类型、用途

47
00:02:46,100 --> 00:02:49,870
这两个分开,类型指的是微信

48
00:02:51,040 --> 00:02:51,680
电话

49
00:02:52,250 --> 00:02:57,080
手机,用途是私人、公有

50
00:02:57,750 --> 00:03:01,580
还有专门出轨用的,外遇用的

51
00:03:02,710 --> 00:03:03,890
而这两个是交叉的

52
00:03:04,450 --> 00:03:05,860
你可以是私人电话

53
00:03:07,140 --> 00:03:08,100
私人微信

54
00:03:08,660 --> 00:03:11,100
私人手机,私人QQ

55
00:03:12,920 --> 00:03:15,100
也可以是出轨用的微信

56
00:03:15,390 --> 00:03:21,310
出轨用的QQ,出轨用的手机,都可以

57
00:03:21,610 --> 00:03:28,990
这两个正交的,它们可以自由组合

58
00:03:33,410 --> 00:03:37,520
最下面这个我们就谈到一个问题

59
00:03:37,690 --> 00:03:40,440
你如何判断一个属性是不是够复杂

60
00:03:41,930 --> 00:03:43,690
比如说,姓名 潘加宇

61
00:03:45,280 --> 00:03:46,310
这个很正常

62
00:03:46,780 --> 00:03:47,540
这好像很正常

63
00:03:48,340 --> 00:03:51,060
但有的时候这样就不行

64
00:03:51,070 --> 00:03:52,180
比如说,我们去填表

65
00:03:52,960 --> 00:03:58,060
特别那些跟国外相关的表

66
00:03:58,810 --> 00:03:59,880
往往它会写什么

67
00:04:00,480 --> 00:04:02,100
姓名分开的

68
00:04:06,260 --> 00:04:07,600
姓名是分开的

69
00:04:10,820 --> 00:04:12,630
姓是什么,名是什么,这样

70
00:04:13,860 --> 00:04:22,280
反正是跟这些人事,人的这种资料相关的

71
00:04:22,290 --> 00:04:26,690
往往会对这个,分得比较清楚,姓,名

72
00:04:29,530 --> 00:04:31,400
姓名在这里就不行了

73
00:04:32,770 --> 00:04:33,850
得分姓、名

74
00:04:34,630 --> 00:04:37,310
所以到底是姓名还是姓、名

75
00:04:39,060 --> 00:04:39,930
就要看什么

76
00:04:40,420 --> 00:04:45,350
就要看你的领域要求到什么地步

77
00:04:46,450 --> 00:04:48,530
如果说你这个领域是一个家谱

78
00:04:51,650 --> 00:04:52,960
这个加宇都不行

79
00:04:52,970 --> 00:04:54,320
因为这个加是什么

80
00:04:55,330 --> 00:04:57,880
家谱里面的一个中间的字

81
00:05:00,370 --> 00:05:02,680
你是哪一代的

82
00:05:03,170 --> 00:05:04,440
哪一辈的

83
00:05:04,450 --> 00:05:05,520
都是这个加字

84
00:05:06,220 --> 00:05:07,690
我是加字辈的

85
00:05:08,610 --> 00:05:12,310
就跟德云社一样的

86
00:05:13,080 --> 00:05:14,950
德字辈的、云字辈的

87
00:05:18,860 --> 00:05:21,450
所以这要看你的领域的要求

1
00:00:01,360 --> 00:00:03,040
下一个我们要讲的范式

2
00:00:03,930 --> 00:00:04,000
就是第二范式

3
00:00:05,920 --> 00:00:07,190
第二范式开始之前

4
00:00:07,200 --> 00:00:08,830
我们就要说一些概念了

5
00:00:11,480 --> 00:00:16,260
第一个概念,函数依赖

6
00:00:19,220 --> 00:00:22,930
前面函数我们知道,第1坐标定了

7
00:00:22,940 --> 00:00:24,450
第2坐标也就定了

8
00:00:25,850 --> 00:00:28,370
第1坐标相同的,第2坐标肯定相同

9
00:00:29,120 --> 00:00:32,810
这叫函数

10
00:00:34,250 --> 00:00:38,930
这个叫函数,函数依赖就是说

11
00:00:38,940 --> 00:00:43,200
两个坐标都是表的属性

12
00:00:43,800 --> 00:00:45,170
AB是表的属性

13
00:00:45,180 --> 00:00:47,160


14
00:00:47,170 --> 00:00:52,270
如果两行,A相同的话

15
00:00:53,670 --> 00:00:55,670
这两行A属性的值相同

16
00:00:55,680 --> 00:00:57,310
那么B属性值也相同

17
00:00:59,040 --> 00:01:00,580
那么我们就可以认为

18
00:01:01,050 --> 00:01:05,100
A函数决定B,或者说B函数依赖于A

19
00:01:05,110 --> 00:01:10,610
这是第一个我们要说的概念

20
00:01:11,380 --> 00:01:13,620
第二个概念就是候选键的概念

21
00:01:13,750 --> 00:01:18,030
就是可以唯一标识元组的属性集

22
00:01:18,750 --> 00:01:19,860
它可能是一个属性

23
00:01:19,870 --> 00:01:22,160
也可能是多个属性

24
00:01:22,370 --> 00:01:25,190
两个属性、三个属性合在一起的

25
00:01:26,190 --> 00:01:29,860
比如说

26
00:01:31,420 --> 00:01:33,130
如果知道员工ID的话

27
00:01:33,350 --> 00:01:34,850
这个不能唯一标识

28
00:01:34,860 --> 00:01:38,740
姓名也不行

29
00:01:38,750 --> 00:01:40,750
哪个可以,这两个组合可以

30
00:01:41,480 --> 00:01:43,650
员工ID、联系方式类型,可以

31
00:01:44,550 --> 00:01:44,930


32
00:01:46,870 --> 00:01:49,590
假设联系方式只有一个(补:此处一一对应不太妥,已录完就不改了<br>,加一个条件,不同人的联系方式可以相同,例如夫妻两人可能留同一个号码)

33
00:01:52,590 --> 00:01:54,090
像这个就可以

34
00:01:54,100 --> 00:01:55,490
这两个组合就可以

35
00:01:58,920 --> 00:02:00,550
这个就是一个候选键

36
00:02:00,830 --> 00:02:02,360
候选键可能有很多个

37
00:02:05,700 --> 00:02:09,740
就是说候选键的属性集可以有很多组

38
00:02:10,490 --> 00:02:14,690
这里面列出来的只有一个了

39
00:02:15,950 --> 00:02:19,480
我们一会还会再看到其他的

40
00:02:19,490 --> 00:02:24,780
主键就是那么多组里面选出一组来作为标识的

41
00:02:25,470 --> 00:02:27,270
最后被选择作为标识的候选键

42
00:02:27,280 --> 00:02:30,790
就是主键,主属性

43
00:02:31,670 --> 00:02:34,930
就是候选键里面的属性的并集了

44
00:02:35,850 --> 00:02:38,910
比如说,你有个候选键是A1,A2

45
00:02:39,310 --> 00:02:42,740
另外一个候选键集合是A2,A3

46
00:02:44,020 --> 00:02:46,700
那么并起来就是A1,A2,A3

47
00:02:46,710 --> 00:02:47,300


48
00:02:48,430 --> 00:02:50,390
这些都是主属性

49
00:02:52,500 --> 00:02:54,890
有了这个概念铺垫的话

50
00:02:54,900 --> 00:02:56,810
接下来2NF的意思

51
00:02:56,820 --> 00:02:59,570
就是说不允许存在非主属性

52
00:02:59,580 --> 00:03:02,400
对主键或候选键

53
00:03:02,950 --> 00:03:05,450
主键候选键实际上是一个意思

54
00:03:05,540 --> 00:03:08,370
因为候选键本身它就可以做主键

55
00:03:08,380 --> 00:03:13,530
最终你挑中了一个作为主键

56
00:03:13,540 --> 00:03:17,730
它们两个并没有什么不一样的地方

57
00:03:17,860 --> 00:03:18,930
挑中了

58
00:03:19,430 --> 00:03:23,260
存在对主键、候选键的部分函数依赖

59
00:03:23,430 --> 00:03:26,520
比如说,像右边这个

60
00:03:27,760 --> 00:03:30,630
这是主键

61
00:03:30,640 --> 00:03:34,120
候选键,被挑做主键了

62
00:03:34,770 --> 00:03:38,080
但是这姓名只是由员工ID决定的

63
00:03:43,900 --> 00:03:45,260
ID决定姓名

64
00:03:45,630 --> 00:03:46,660
单独决定姓名

65
00:03:47,170 --> 00:03:49,310
但姓名不能够反过来决定ID

66
00:03:49,320 --> 00:03:51,140
因为同名的那个人

67
00:03:51,390 --> 00:03:54,260
有很多,潘加宇可能好多个

68
00:03:54,720 --> 00:03:56,350
没准公司里面就有好几个同名

69
00:03:56,600 --> 00:03:58,710
像什么李明

70
00:04:00,490 --> 00:04:03,630
还有什么张勇,这种是见得比较多的

71
00:04:05,910 --> 00:04:11,940
所以怎么让它不违反,把它分出来

72
00:04:12,070 --> 00:04:15,420
员工ID、姓名,单独的关系分出来

73
00:04:16,160 --> 00:04:20,940
然后后面员工……这样来

74
00:04:25,030 --> 00:04:28,380
这个是2NF

75
00:04:34,010 --> 00:04:35,360
下一个就是3NF

76
00:04:35,450 --> 00:04:36,960
就是第三范式

77
00:04:37,690 --> 00:04:40,800
不允许存在传递的函数依赖

78
00:04:43,060 --> 00:04:45,450
什么叫传递函数依赖

79
00:04:45,460 --> 00:04:46,770
就是A函数决定B

80
00:04:46,780 --> 00:04:51,410
B决定C,但是同时

81
00:04:51,580 --> 00:04:54,410


82
00:04:54,420 --> 00:04:57,050
B不能反过来决定A,如果B可以反过来

83
00:04:57,060 --> 00:05:00,050
决定A,也就是A和B是互相决定的

84
00:05:01,230 --> 00:05:02,430
那就不存在传递了

85
00:05:02,970 --> 00:05:05,900
那就不违反3NF

86
00:05:06,810 --> 00:05:14,770
你看,像上面这半部

87
00:05:15,060 --> 00:05:17,650
就是违反第三范式,员工ID

88
00:05:18,590 --> 00:05:20,460
决定了部门ID

89
00:05:20,470 --> 00:05:22,530
部门ID又决定了部门名称

90
00:05:24,340 --> 00:05:27,160
更关键的是什么

91
00:05:27,170 --> 00:05:29,480
部门ID是不能反过来决定员工ID的

92
00:05:30,970 --> 00:05:32,100
关键在这个地方

93
00:05:32,870 --> 00:05:35,750
这两个不是互相决定的

94
00:05:37,720 --> 00:05:39,390
所以它是违反第三范式的

95
00:05:40,240 --> 00:05:44,110
怎么分,把部门分出去

96
00:05:44,320 --> 00:05:45,510
另外一个表

97
00:05:47,240 --> 00:05:48,790
员工一个表,部门一个表

98
00:05:49,200 --> 00:05:52,760
员工里面有部门ID 

99
00:05:52,770 --> 00:05:55,160
部门名称就放在部门那个表里面

100
00:05:56,460 --> 00:05:58,980
就分成两个,员工ID,部门ID

101
00:05:59,260 --> 00:06:01,290
然后部门ID,部门名称这样

102
00:06:03,630 --> 00:06:05,200
我们看如果是这种

103
00:06:05,210 --> 00:06:07,580
它互相决定

104
00:06:11,170 --> 00:06:12,120
不满足的话

105
00:06:14,320 --> 00:06:19,260
那么像这个,员工ID

106
00:06:19,950 --> 00:06:22,240
员工工号,部门名称我们把它删掉了

107
00:06:23,110 --> 00:06:23,610
没有了

108
00:06:24,650 --> 00:06:29,900
工号这两个就是互相决定的

109
00:06:30,570 --> 00:06:31,570
ID决定工号

110
00:06:31,580 --> 00:06:33,120
工号决定部门ID 

111
00:06:33,860 --> 00:06:36,330
实际上也有这个(传递),ID决定工号

112
00:06:36,340 --> 00:06:37,410
工号决定部门ID

113
00:06:37,810 --> 00:06:40,560
但是为什么不是违反第三范式

114
00:06:40,570 --> 00:06:47,920
因为这个地方是互相决定的

115
00:06:48,600 --> 00:06:51,940
这两个都可以作为候选键

116
00:06:51,950 --> 00:06:54,740
候选键要么是这个,要么是这个,不是说这两个候选键

117
00:06:55,330 --> 00:07:02,900
这两个单独都可以作为候选键

118
00:07:03,400 --> 00:07:03,600


119
00:07:05,290 --> 00:07:09,020
所以这个是符合第三范式的

120
00:07:09,110 --> 00:07:12,140
这也是我们现在的

121
00:07:12,150 --> 00:07:13,260
面向对象的

122
00:07:13,270 --> 00:07:17,720
这种开发里面常见的

123
00:07:17,850 --> 00:07:20,120
我们往往会有一个

124
00:07:21,860 --> 00:07:23,590
代理的主键

125
00:07:24,450 --> 00:07:28,220
系统生成的一个主键

126
00:07:28,230 --> 00:07:29,660
不要这种工号什么的

127
00:07:29,670 --> 00:07:32,240
因为往往这工号本身

128
00:07:34,410 --> 00:07:36,410
它隐含着一种逻辑关系

129
00:07:36,420 --> 00:07:40,130
你看,这个有2007

130
00:07:40,140 --> 00:07:43,720
101,很可能这背后隐含什么

131
00:07:44,060 --> 00:07:47,890
2007年入职,1可能是第一部门

132
00:07:47,900 --> 00:07:49,890
比如说,第一部门是市场部

133
00:07:51,230 --> 00:07:53,870
01表示市场部的第1号员工

134
00:07:53,880 --> 00:07:55,350
没准是市场部经理

135
00:07:55,840 --> 00:07:57,860
就像我们身份证号里面有这个

136
00:07:58,200 --> 00:08:00,680
实际上它就有可能隐含着

137
00:08:02,330 --> 00:08:03,990
其他字段的一些信息

138
00:08:04,910 --> 00:08:09,850
虽然它表面上,你可以强词夺理

139
00:08:09,860 --> 00:08:11,210
它没有决定性

140
00:08:11,940 --> 00:08:12,120


141
00:08:12,130 --> 00:08:14,360
比如说2007101

142
00:08:16,750 --> 00:08:18,790
它入职,假设后面有个字段

143
00:08:18,880 --> 00:08:21,710
有个属性叫入职年

144
00:08:24,900 --> 00:08:26,770
大多数人都是2007 

145
00:08:27,120 --> 00:08:29,060
但也有2006的

146
00:08:33,120 --> 00:08:34,080
你可以这样辩解

147
00:08:35,040 --> 00:08:36,840
因为可以随便改

148
00:08:37,830 --> 00:08:40,790
2006的,然后我改工号2,07

149
00:08:40,800 --> 00:08:43,670
为什么,我可能留级了或者什么之类的

150
00:08:43,840 --> 00:08:45,030
随便乱说

151
00:08:47,920 --> 00:08:52,070
但是大多数可能都是2007年入职的

152
00:08:54,040 --> 00:08:55,630
背后可能就会隐含着这样

153
00:08:55,920 --> 00:08:58,040
当然我们刚才讲

154
00:08:58,870 --> 00:09:00,800
可以强词夺理地说

155
00:09:00,810 --> 00:09:01,840
它们之间没关系

156
00:09:02,580 --> 00:09:04,130
但是实际上是隐含的

157
00:09:04,830 --> 00:09:07,310
就像我身份证号码头3401

158
00:09:08,780 --> 00:09:09,800
那是安徽的号码

159
00:09:10,830 --> 00:09:11,180


160
00:09:12,140 --> 00:09:13,850
但是我不是安徽人

161
00:09:17,680 --> 00:09:22,640
所以这个是

162
00:09:22,810 --> 00:09:25,080
我们往往为什么不用这种作为主键

163
00:09:25,250 --> 00:09:28,120
现在我们都推荐的是用无意义的

164
00:09:28,130 --> 00:09:30,630
最好也不是整数了

165
00:09:30,760 --> 00:09:34,950
就是系统生成那种很长的字符串

166
00:09:39,360 --> 00:09:40,550
违反第三范式

167
00:09:41,470 --> 00:09:47,170
带来的问题,就是这些,插入、删除、修改

168
00:09:50,930 --> 00:09:53,940
上面这个,假设部门的信息都在这里的话

169
00:09:54,600 --> 00:09:56,570
如果你要新增一个部门

170
00:09:58,470 --> 00:10:00,500
必须得有员工才可以

171
00:10:01,040 --> 00:10:03,720
如果员工的信息没有同时添加进去的话

172
00:10:04,190 --> 00:10:05,630
这个部门没法添加的

173
00:10:05,640 --> 00:10:06,790
因为你没有员工

174
00:10:06,800 --> 00:10:08,670
因为你主键是什么

175
00:10:09,330 --> 00:10:10,780
员工ID

176
00:10:12,270 --> 00:10:13,540
没法添加部门

177
00:10:15,140 --> 00:10:16,770
必须要同时添加员工

178
00:10:17,260 --> 00:10:18,090
第二个,删除

179
00:10:18,100 --> 00:10:21,500
比如说,你把ID为1、2、5的删除掉了

180
00:10:23,190 --> 00:10:26,610
可能财务部的信息就没有了

181
00:10:27,560 --> 00:10:30,080
你删除了员工,部门就没有了

182
00:10:30,370 --> 00:10:31,230
这个也不合理

183
00:10:31,240 --> 00:10:33,040
第三个就是修改了

184
00:10:33,050 --> 00:10:37,790
比如说,我要把财务部改名成资金管理部

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

stm32使用time模块输出pwm波,stm32-matlab开发电机控制

simulink: stm32cubemx : 注意在stm32配置了两路的一个互补输出&#xff0c;但实际上在matlab里只需要给定占空比就行了&#xff0c;他会自动输出互补&#xff0c;驱动电机&#xff0c;这是因为有点的电机输出需要6路&#xff0c;有的只需要1路&#xff0c;我们看下图就知道了…

Vue.JS中如何监听生命周期事件?

目录 一、Vue.JS框架介绍二、Vue.JS的监听事件三、Vue.JS的生命周期事件四、Vue.JS中如何监听生命周期事件 一、Vue.JS框架介绍 Vue.js是一个用于构建用户界面的渐进式JavaScript框架。它设计得非常灵活&#xff0c;可以轻松地被集成到现有的项目中&#xff0c;也可以作为一个…

能正常执行但是 cion 标红/没有字段提示

ctrl q 退出 clion 找到工程根目录&#xff0c;删除隐藏文件 .idea 再重新打开 clion 标红消失&#xff0c;同时再次输入函数/类属性&#xff0c;出现字段提示 clion 的智能提示方案存储在 .idea 文件中&#xff0c;如果工程能够正常编译执行&#xff0c;那么说明是智能提示…

ARM32开发--WDGT看门狗

知不足而奋进 望远山而前行 目录 文章目录 前言 目标 内容 什么是看门狗 ARM中的看门狗 独立看门狗定时器 窗口看门狗定时器 独立看门狗FWDGT 初始化配置 喂狗 完整代码 窗口看门狗WWDGT 初始化配置 喂狗 完整代码 注意 总结 前言 嵌入式系统在如今的科技发…

程序猿大战Python——面向对象——私有权限

私有属性 目标&#xff1a;掌握私有属性的使用。 为了更好的限制属性的访问和包含隐私&#xff0c;可以给属性设置私有权限。 当把属性设置为私有属性后&#xff0c;则该属性只能被本类直接访问。 定义私有属性语法&#xff1a; self.__属性名 设置和获取私有属性值语法&am…

云计算期末综合测试题

云计算综合测试题 单选题填空题判断题简答题 单选题 这里选择题&#xff0c;直接以填空题展示&#xff0c;并给出解析 Bigtable是&#xff08;Google&#xff09;开发的分布式存储系统 解析&#xff1a;分布式结构化数据表Bigtable是Google基于GFS和Chubby开发的分布式存储系统…

Redis 学习笔记(2)

目录 1 Redis的持久化1.1 RDB持久化方案1.2 AOF持久化方案 2 Redis架构2.1 主从复制架构2.2 哨兵集群设计2.3 哨兵集群设计 3 Redis事务机制4 Redis过期策略与内存淘汰机制4.1 过期策略4.2 内存淘汰机制 5 Redis高频面试题4.1 缓存穿透4.2 缓存击穿4.3 缓存雪崩 1 Redis的持久化…

2. 数据结构分析即索引库的crud

1. 数据库脚本 DROP TABLE IF EXISTS tb_hotel; CREATE TABLE tb_hotel (id bigint(0) NOT NULL,name varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT COMMENT 酒店名称,address varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_090…

FlowUs2024重磅革新预告:RAG技术赋能『问问AI』,笔记变现新纪元等你开启!

&#x1f389; 在FlowUs的广阔天地间&#xff0c;知识的边界被无限拓展&#xff0c;引领着一场场创新与收获的庆典&#xff01;&#x1f680; 随着一年间不断的精进与革新&#xff0c;FlowUs与众多用户并肩前行&#xff0c;在追求极致体验的道路上迈出坚实步伐。步入2024年&am…

Javase.图书管理系统基本框架

图书管理系统基本框架 1.核心类介绍2. book包详解2.1 Book 类2.1.2 代码展示2.1.2 代码解析 2.2 BookList 类2.2.2 代码展示2.2.2 代码解析 2.3Book类和BookList类的联系 3. 用户角色与管理3.1 User 类3.1.1 代码展示3.1.2 代码解析 3.2 adminUser 类3.2.1 代码展示3.2.2代码解…

学生选课管理系统(JAVA课设)PS:有前端界面

1.课设要求描述 实现系统的所有功能&#xff0c;包括但不限于&#xff1a; 学生信息管理&#xff08;增加、删除、修改、查询&#xff09;课程信息管理选课操作成绩管理 2.制作思路及基础讲解 此项目主要是用于完成大二下半学期的JAVA大作业&#xff0c;也可当作课设&…

Ubuntu:解决github出现 Permission denied (publickey)的问题

因为使用的Ubuntu 长久没有使用&#xff0c;使用下载的时候突然报错&#xff0c;使用ssh key这种方式进行clone &#xff0c;pull github上面的项目&#xff0c;使用 git clone或者git pull origin master出现permission denied (publickey)&#xff0c;原因是因为ssh key过期失…

leetcode 二分查找·系统掌握 x的平方根

题目&#xff1a; 题解 这题可以使用~01~泛型查找在0~x/2的范围内查找答案。 int mySqrt(int x) {long l0,rx,mid;while(l<r){mid(lr1)>>1;if(mid*mid>x)rmid-1;else lmid;}//因为一定有答案所以不用判定是否查找失败return l;}

计算机系统基础实训六-ShellLab实验

实验目的与要求 1、让学生更加理解进程控制的概念和具体操作方法&#xff1b; 2、让学生更加理解信号的概念和具体使用方法&#xff1b; 3、让学生更加理解Unix shell程序的原理和实现方法&#xff1b; 实验原理与内容 shell是一种交互式的命令行解释器&#xff0c;能代表…

从关键新闻和最新技术看AI行业发展(2024.6.3-6.16第二十五期) |【WeThinkIn老实人报】

写在前面 【WeThinkIn老实人报】旨在整理&挖掘AI行业的关键新闻和最新技术&#xff0c;同时Rocky会对这些关键信息进行解读&#xff0c;力求让读者们能从容跟随AI科技潮流。也欢迎大家提出宝贵的优化建议&#xff0c;一起交流学习&#x1f4aa; 欢迎大家关注Rocky的公众号&…

Node.js 系列之 Express 框架入门实战教程

目录 1 Node.js是什么2 Express初体验3 Express 路由3.1 什么是路由3.2 路由的使用3.3 获取路由参数 4 常见响应设置4.1 express 响应方法4.2 原生响应方法 5 express 中间件5.1 中间件作用5.2 中间件类型5.3 全局中间件5.4 路由中间件 6 获取请求体数据7 路由模块化 1 Node.js…

51单片机学习记录(二)————外部中断

文章目录 前言一、中断1.中断的定义 二、51中断1.中断源2.中断的配置3.中断允许控制寄存器4.中断触发方式51中断有两种触发方式&#xff1a; 三、外部中断1.外部中断引脚2.外部中断配置&#xff08;以外部中断0为例&#xff09; 总结 前言 一个学习嵌入式的小白~ 有错误评论区…

【ARM】PK51如何将BL51链接器切换成LX51链接器

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决客户在使用PK51进行项目研发的时候&#xff0c;想要使用LX51链接器进行使用。 2、 问题场景 客户在使用51芯片进行开发的时候&#xff0c;发现工程中使用的是BL51链接器&#xff0c;而不是LX51链接器&#xff…

【非常实验】如何在移动设备上运行 Docker?

本章就从在 DevOps 中最基本但也是最强大的工具 Docker 开始。最近,我在尝试更多Termux的可能性,于是就想着试试Docker适不适合arm架构。 我用的是天玑9000芯片,而不是高通,所以显示不出来 Qualcomm。所以我决定从在手机上运行 docker 开始,但这可能吗?让我们一起来看看吧…

Node.js实现短链接(ShortLink):shortid、epxress让URL更简单

文章目录 一、短链接介绍二、插件介绍1、epxress2、shortid 三、实现方案1、安装依赖&#xff1a;2、实现原理 四、示例代码五、测试生产短链接 一、短链接介绍 短链接是指仅包含一个网址的链接形式&#xff0c;通俗一些就是将一个很长很复杂的的网址变成一个简短易记的链接。…