[图解]企业应用架构模式2024新译本讲解03-事务脚本+表数据入口

1
00:00:00,570 --> 00:00:06,290
这里先创建一个service的对象

2
00:00:07,000 --> 00:00:12,470
然后调用对象的方法、操作

3
00:00:12,480 --> 00:00:13,750
就是事务脚本

4
00:00:14,700 --> 00:00:15,900
然后参数是1

5
00:00:16,660 --> 00:00:19,490
也就是合同ID 

6
00:00:19,620 --> 00:00:21,170
我们给它打一个断点

7
00:00:21,180 --> 00:00:24,820
我们在这里,这地方好了

8
00:00:25,740 --> 00:00:31,740
前面都是预热的

9
00:00:39,530 --> 00:00:42,040
往下走

10
00:00:43,760 --> 00:00:45,320
然后这里,在这里

11
00:00:45,330 --> 00:00:49,730
然后你看,这里创建数据入口

12
00:00:51,920 --> 00:00:55,390
然后查询,返回数据表

13
00:00:57,150 --> 00:01:05,040
这个查询就是Gateway的一个操作了

14
00:01:05,540 --> 00:01:10,130
它定义了一些SQL语句

15
00:01:11,320 --> 00:01:13,660
你看,Gateway开始定义了SQL语句

16
00:01:14,530 --> 00:01:15,570
SQL字符串

17
00:01:16,180 --> 00:01:20,120
然后这个符号

18
00:01:20,130 --> 00:01:23,000
就相当于存储过程里面

19
00:01:24,400 --> 00:01:26,170
参数的变量的符号

20
00:01:27,280 --> 00:01:28,470
所以这个地方

21
00:01:29,890 --> 00:01:31,710
应该放在存储过程里面更合适

22
00:01:31,720 --> 00:01:35,010
周围都是C#的语法

23
00:01:35,020 --> 00:01:36,530
这里你看,插一个字符串

24
00:01:37,350 --> 00:01:38,220
还不如怎么样

25
00:01:38,230 --> 00:01:41,710
直接把这个放到数据库那边

26
00:01:42,410 --> 00:01:44,910
作为存储过程,你这里调用

27
00:01:45,390 --> 00:01:49,240
你调用存储过程那个名字就可以了

28
00:01:49,250 --> 00:01:49,720


29
00:01:49,890 --> 00:01:51,200
参数这里就不变了

30
00:01:51,210 --> 00:01:53,200
直接加参数一模一样了

31
00:01:53,820 --> 00:01:54,900
没有必要放在这里

32
00:01:58,870 --> 00:02:01,820
但很多人喜欢在C#、Java里面

33
00:02:01,830 --> 00:02:04,550
写SQL语句

34
00:02:04,560 --> 00:02:06,580
那只能写很简单的

35
00:02:07,750 --> 00:02:09,390
一复杂了你就写不了

36
00:02:09,400 --> 00:02:12,410
实际上,你要彻底的事务脚本的话

37
00:02:12,420 --> 00:02:14,170
应该干脆就什么

38
00:02:14,450 --> 00:02:16,000
直接把所有的运算

39
00:02:16,640 --> 00:02:19,580
都放在存储过程里面来做

40
00:02:20,090 --> 00:02:23,750
如果我们的类的结构做得好

41
00:02:24,640 --> 00:02:27,940
它完全可以通过标准的集合运算

42
00:02:28,530 --> 00:02:30,680
很优雅的把这个结果给拿出来

43
00:02:31,880 --> 00:02:34,290
包括你看这里,if什么之类的

44
00:02:34,780 --> 00:02:36,610
后面在哪里,这里

45
00:02:37,730 --> 00:02:39,270
If

46
00:02:40,080 --> 00:02:41,900
这都是硬编码

47
00:02:41,910 --> 00:02:45,940
if类型等于这个,这种都是硬编码

48
00:02:46,630 --> 00:02:48,640
这种应该变成数据值才对的

49
00:02:49,460 --> 00:02:51,610
不应该放在代码里面硬编码

50
00:02:53,190 --> 00:02:55,430
包括像这种,3,都是硬编码

51
00:02:56,710 --> 00:02:57,890
它不应该出现在这里

52
00:02:58,870 --> 00:03:00,850
代码里面出现的应该是概念

53
00:03:01,780 --> 00:03:03,320
不能出现一个硬编码这样

54
00:03:03,560 --> 00:03:04,930
包括这个

55
00:03:05,340 --> 00:03:06,910
这个也是硬编码

56
00:03:08,660 --> 00:03:12,380
直接就是一个值

57
00:03:13,100 --> 00:03:15,690
当然这个案例本身它是比较简单了

58
00:03:15,700 --> 00:03:20,580
但是我们要知道,这里面是有问题的

59
00:03:21,170 --> 00:03:25,350
先定义了一些SQL字符串

60
00:03:28,160 --> 00:03:32,360
然后这里,前面是连接了,建立连接

61
00:03:32,370 --> 00:03:33,760
然后这里把定义好的

62
00:03:34,370 --> 00:03:35,320
SQL的字符串

63
00:03:35,330 --> 00:03:37,320
赋值给Command对象是吧

64
00:03:37,800 --> 00:03:40,560
然后添加参数,来把这个值传给它

65
00:03:41,460 --> 00:03:47,040
1,把参数传给它

66
00:03:48,050 --> 00:03:51,290
然后执行,返回结果

67
00:03:52,330 --> 00:03:54,390
就是一个数据表

68
00:03:54,400 --> 00:04:00,130
DataTable这样一个对象

69
00:04:00,140 --> 00:04:00,690
一个表

70
00:04:02,490 --> 00:04:12,180
这样来,在哪里

71
00:04:24,250 --> 00:04:25,840
你看,这是一个事务脚本(口误)

72
00:04:26,150 --> 00:04:28,310
这个相当于调用另外一个过程

73
00:04:29,350 --> 00:04:31,860
Gateway,不是事务脚本,这是事务脚本

74
00:04:31,870 --> 00:04:35,690
调用了Gateway的查询的方法

75
00:04:36,070 --> 00:04:41,690
就是我们刚才讲的,Gateway里面,这个地方

76
00:04:45,430 --> 00:04:48,330
Gateway里面它包含了命令

77
00:04:48,460 --> 00:04:50,490
选择、查询、插入、更新等等

78
00:04:53,240 --> 00:04:54,990
你看,这里有一个

79
00:05:02,750 --> 00:05:06,600
Money,这是一个自定义的类

80
00:05:07,750 --> 00:05:08,820
Money定义一个这个

81
00:05:09,110 --> 00:05:14,350
然后你看这里,这个类是按照企业应用架构模式

82
00:05:14,360 --> 00:05:15,710
Money模式实现的类

83
00:05:16,160 --> 00:05:17,390
我们来说一下Money

84
00:05:17,400 --> 00:05:18,150


85
00:05:19,610 --> 00:05:21,200
如果类型是

86
00:05:21,950 --> 00:05:27,070
你看,这里是把值取出来了

87
00:05:27,640 --> 00:05:28,430
值取出来

88
00:05:32,020 --> 00:05:33,240
往下走

89
00:05:33,730 --> 00:05:38,030
这里你看,有一个

90
00:05:38,040 --> 00:05:43,230
你看这里,allocate这个地方

91
00:05:44,430 --> 00:05:49,000
这个地方相当于把钱分为3份

92
00:05:49,970 --> 00:05:51,750
为什么不能够直接除以3

93
00:05:51,760 --> 00:05:53,960
而是要用Money

94
00:05:56,280 --> 00:05:57,950
类的allocate方法

95
00:05:59,520 --> 00:06:01,310
实际上就是货币的问题了

96
00:06:01,870 --> 00:06:03,010
所以我们要说一下

97
00:06:05,520 --> 00:06:07,730
Fowler的书里面也说了这个问题

98
00:06:09,220 --> 00:06:17,060
这个就是刚才那段代码的类图了

99
00:06:19,510 --> 00:06:24,220
我是用UModel把它逆转过来

100
00:06:25,350 --> 00:06:26,740
用UModel这个工具,你用EA也可以的

101
00:06:27,470 --> 00:06:28,190
用EA也可以

102
00:06:28,200 --> 00:06:34,330
我是用UModel来把它逆向工程得到

103
00:06:34,340 --> 00:06:37,540
你看,有几个常数

104
00:06:39,090 --> 00:06:40,900


105
00:06:40,910 --> 00:06:43,580
这里头列出来,然后有几个方法

106
00:06:45,070 --> 00:06:45,820
这是入口的

107
00:06:47,090 --> 00:06:48,170
然后manager有这个

108
00:06:49,690 --> 00:06:51,420
然后service有这两个方法

109
00:06:52,450 --> 00:06:54,420
这是主程序

110
00:06:58,340 --> 00:07:00,170
UModel还有另外一个好处

111
00:07:02,330 --> 00:07:04,800
就是逆向生成序列图

112
00:07:05,870 --> 00:07:08,070
你看这个层次

113
00:07:08,320 --> 00:07:10,270
后面变量什么它都列出来

114
00:07:10,280 --> 00:07:12,770
因为我层次列得比较深

115
00:07:12,780 --> 00:07:14,090
如果列得浅一点

116
00:07:14,100 --> 00:07:15,630
后面这些就可以不用出现

117
00:07:15,640 --> 00:07:16,730
实际上就两个类

118
00:07:17,610 --> 00:07:18,960
一个是

119
00:07:18,970 --> 00:07:19,720
RecognitionService

120
00:07:21,100 --> 00:07:23,270
这是控制类,或者应用服务类

121
00:07:23,280 --> 00:07:26,370
这是入口类

122
00:07:28,270 --> 00:07:31,340
两个,然后你看,创建一个

123
00:07:31,350 --> 00:07:35,870
然后调用,返回

124
00:07:35,880 --> 00:07:39,580
然后,这里有分支

125
00:07:39,750 --> 00:07:44,360
如果类型是这个,走这个

126
00:07:47,760 --> 00:07:48,390
这是

127
00:07:48,670 --> 00:07:53,000
UModel比EA要好的一个地方

128
00:07:53,010 --> 00:07:55,600
可以帮你分析这个程序的结构

129
00:07:58,160 --> 00:08:00,560
当然如果代码已经写得比较清晰了

130
00:08:00,570 --> 00:08:01,880
你直接看代码也看得出来

131
00:08:06,590 --> 00:08:15,160
Money就是金钱类

132
00:08:16,470 --> 00:08:19,500
金钱包括一个是数额,一个是币种

133
00:08:19,920 --> 00:08:21,020
不能说100 

134
00:08:21,230 --> 00:08:22,820
100什么,100块

135
00:08:24,780 --> 00:08:28,800
还是100卢布

136
00:08:28,810 --> 00:08:32,460
100日元

137
00:08:35,390 --> 00:08:36,220
还是100

138
00:08:37,460 --> 00:08:39,650
印度那边,卢比

1
00:00:00,300 --> 00:00:03,590
所以,涉及到币种

2
00:00:04,150 --> 00:00:04,900
这是一个问题

3
00:00:05,830 --> 00:00:07,290
所以币种就有一个什么

4
00:00:07,300 --> 00:00:11,370
必须运算是在同一个币种

5
00:00:11,380 --> 00:00:14,400
你不能说100美元加100日元

6
00:00:16,600 --> 00:00:19,120
如果你要有个兑换的话

7
00:00:19,130 --> 00:00:20,640
你有一个汇率的问题

8
00:00:22,680 --> 00:00:26,430
另外一个问题就是整数的问题了

9
00:00:27,060 --> 00:00:32,670
因为货币本身它有一个最小的单位

10
00:00:33,400 --> 00:00:37,310
我们人民币是分,最小单位

11
00:00:38,540 --> 00:00:39,570
如果说你这个值

12
00:00:39,580 --> 00:00:41,690
比如说,我有7块钱

13
00:00:43,070 --> 00:00:47,130
我分3份,怎么分

14
00:00:47,140 --> 00:00:48,650
你分,如果得到小数点

15
00:00:50,320 --> 00:00:51,100
这是一个什么

16
00:00:52,270 --> 00:00:53,910
无限的小数

17
00:00:54,600 --> 00:00:56,430
如果说你取整取得不好

18
00:00:56,440 --> 00:01:02,040
你分完之后,你把这三个加起来

19
00:01:03,060 --> 00:01:06,250
结果就少了一分或多了一分

20
00:01:06,870 --> 00:01:07,700
这就麻烦了

21
00:01:08,710 --> 00:01:13,200
像我们当时,我第一个项目就碰到这个问题

22
00:01:14,580 --> 00:01:16,060
我们什么都做好了

23
00:01:16,070 --> 00:01:18,550
然后半夜去上线

24
00:01:20,450 --> 00:01:21,950
上线当天晚上就没有睡

25
00:01:22,240 --> 00:01:25,340
98年的时候,当天晚上就没有睡

26
00:01:26,340 --> 00:01:27,920
然后第二天也没有睡

27
00:01:28,850 --> 00:01:31,870
差不多48个小时才睡觉

28
00:01:33,460 --> 00:01:36,050
就是搞这个,其中一个问题就是

29
00:01:37,260 --> 00:01:39,640
头一天多了一分

30
00:01:40,310 --> 00:01:45,640
第二天又多了两分,这样就很麻烦

31
00:01:45,650 --> 00:01:47,790
后来去查文档

32
00:01:48,010 --> 00:01:50,460
我们刚才之前也讲了

33
00:01:54,960 --> 00:01:59,290
没有什么网络,也没人问看,就是翻看文档

34
00:01:59,840 --> 00:02:04,430
包括SQL Server附带的指南

35
00:02:04,820 --> 00:02:08,240
包括VB的手册等等

36
00:02:10,090 --> 00:02:14,980
后来是我们的领导,高级工程师

37
00:02:14,990 --> 00:02:16,060
当时我们是小兵

38
00:02:18,610 --> 00:02:20,810
很不懈努力去找

39
00:02:21,060 --> 00:02:24,910
终于在一个地方找到问题所在

40
00:02:26,440 --> 00:02:29,120
这个还是非常值得学习的

41
00:02:29,130 --> 00:02:31,750
他坚信自己能够解决

42
00:02:33,110 --> 00:02:37,550
他坚信解决问题的地方就在这个书里面

43
00:02:40,230 --> 00:02:44,350
这个的话,我们很多同学做不到的

44
00:02:44,360 --> 00:02:47,990
有的同学他做题做不对

45
00:02:48,000 --> 00:02:50,190
他来问我,老师,题目是不是有问题

46
00:02:52,130 --> 00:02:53,930
你想想就知道了,这个题目

47
00:02:55,130 --> 00:02:57,530
那么多人做,有问题的话

48
00:02:58,620 --> 00:02:59,600
可能早就改了

49
00:02:59,610 --> 00:03:02,710
第二个,我这个题目出题的时候

50
00:03:03,230 --> 00:03:04,570
那个图画得这么精美

51
00:03:04,580 --> 00:03:06,610
我花那么多心思来画这个图

52
00:03:09,560 --> 00:03:10,350
说明什么

53
00:03:10,360 --> 00:03:12,510
既然这个图画得这么精美

54
00:03:13,210 --> 00:03:14,640
我花了心思画这个图

55
00:03:15,220 --> 00:03:18,690
可能我当时考虑是比较周到的

56
00:03:22,380 --> 00:03:26,590
这个周到,就值得你再去认真,再去思考

57
00:03:26,600 --> 00:03:28,310
再去看书,去思考一下

58
00:03:28,320 --> 00:03:30,150
如果说,我这题目出得很潦草

59
00:03:30,700 --> 00:03:31,900
上面都是错别字什么的

60
00:03:32,390 --> 00:03:33,860
你可以怀疑,老师你的题目

61
00:03:34,460 --> 00:03:36,410
是不是出错了

62
00:03:36,930 --> 00:03:38,720
但是,如果说我题目出得很精致

63
00:03:39,600 --> 00:03:41,150
上面的图也很精致

64
00:03:41,160 --> 00:03:42,550
文字也没有什么错误

65
00:03:43,840 --> 00:03:44,740
但你没做对

66
00:03:46,070 --> 00:03:47,460
应该先反省自己

67
00:03:49,190 --> 00:03:50,730
这个是题外话了

68
00:03:50,740 --> 00:03:53,970
我们回想一下我们以前的情况

1
00:00:02,280 --> 00:00:04,680
就是说,你分完之后合起来

2
00:00:05,190 --> 00:00:07,570
这个值依然要相等

3
00:00:11,790 --> 00:00:13,020
这是我们刚才说过的

4
00:00:13,390 --> 00:00:19,070
代码的截图,已经说过了,都不多说了

5
00:00:21,950 --> 00:00:27,470
所以Money类这里,它就解决这个问题

6
00:00:27,720 --> 00:00:30,500
就是说,分完后相加,等于原值

7
00:00:30,740 --> 00:00:32,340
这里书上也说了

8
00:00:32,850 --> 00:00:35,050
这是我们修改过的译文

9
00:00:35,860 --> 00:00:37,680
你想把一笔钱分给多个目标

10
00:00:37,690 --> 00:00:41,990
不想损失零钱,分配或者分割

11
00:00:42,940 --> 00:00:46,390
allocate这里,给出了代码

12
00:00:48,790 --> 00:00:50,380
这个代码本身的话

13
00:00:52,520 --> 00:00:53,360
这里面没有包括

14
00:00:53,370 --> 00:00:58,010
它已经包含在相关的库里面了

15
00:00:58,140 --> 00:01:01,190
这里面就没有,在相关的库里面了

16
00:01:01,200 --> 00:01:04,240
这地方

1
00:00:02,120 --> 00:00:04,880
我们把这个代码运行完毕

2
00:00:06,040 --> 00:00:06,810
刚才到这里

3
00:00:08,070 --> 00:00:09,390
实际上这个地方

4
00:00:09,750 --> 00:00:12,000
这里,控制台还没出来

5
00:00:12,860 --> 00:00:13,810
继续往下走

6
00:00:15,160 --> 00:00:16,740
直接运行好了

7
00:00:19,340 --> 00:00:19,420

8
00:00:20,550 --> 00:00:23,450
你看这里,就出来了

9
00:00:25,130 --> 00:00:27,640
数据库,入账

10
00:00:28,900 --> 00:00:32,070
在这里

11
00:00:34,660 --> 00:00:36,480
然后就直接在这个地方写出来

12
00:00:36,610 --> 00:00:39,470
在这地方写出来

13
00:00:39,720 --> 00:00:43,410
你计算得到那个数值之后

14
00:00:45,000 --> 00:00:46,480
直接在这里输出

15
00:00:47,040 --> 00:00:49,130
一个两个三个,合同1

16
00:00:49,140 --> 00:00:54,120
2,3。合同1是数据库

17
00:00:54,520 --> 00:01:01,540
这样来

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

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

相关文章

《公正》孙溟㠭艺术

孙溟㠭艺术《公正》 孙溟㠭艺术《公正》

利用NewGIS平台将FME模板发布为接口

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 一、模板编写 二、发布模板 三、接口获取 四、移动端调用 ​​​​​ 前言 在实际的应用生产过程中,尤其是移动端GIS软件的开发,针对一些闭…

12.2 通道-阻塞与流程控制、通道型函数、退出通道

阻塞与流程控制 通常在并发程序中要尽力避免阻塞式操作,但有时又需要让代码暂时处于阻塞状态,以等待某种条件、信号或数据,然后再继续运行。 对于无缓冲通道,试图从无人写入的通道中读取,或者向无人读取的通道中写入…

SQL学习小记(三)

SQL学习小记(三) 功能实现思路代码部分名词解释 代码打包为可执行文件 功能说明:使用python代码,将数据库database1中的表格table1同步到数据库database2中 功能实现 思路 #mermaid-svg-R1pWrEWA799M299a {font-family:"tre…

Rocksdb原理简介

100编程书屋_孔夫子旧书网 Rocksdb作为当下nosql中性能的代表被各个存储组件(mysql、tikv、pmdk、bluestore)作为存储引擎底座,其基于LSM tree的核心存储结构(将随机写通过数据结构转化为顺序写)来提供高性能的写吞吐时…

Visual Studio 的使用

目录 1. 引言 2. 安装和配置 2.1 系统要求 2.2 安装步骤 2.3 初次配置 3. 界面介绍 3.1 菜单栏和工具栏 3.2 解决方案资源管理器 3.3 编辑器窗口 3.4 输出窗口 3.5 错误列表 3.6 属性窗口 4. 项目管理 4.1 创建新项目 4.2 导入现有项目 4.3 项目属性配置 5. 代…

当传统文化遇上数字化,等级保护测评的必要性

第二十届中国(深圳)国际文化产业博览交易会5月23日在深圳开幕。本届文博会以创办20年为契机,加大创新力度,加快转型升级,着力提升国际化、市场化、专业化和数字化水平,不断强化交易功能,打造富有…

《软件方法(下)》8.3.4.6 DDD话语“聚合”中的伪创新(1)

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 8.3 建模步骤C-2 识别类的关系 8.3.4 识别关联关系 8.3.4.6 DDD话语“聚合”中的伪创新 DDD话语中也有“聚合”。Eric Evans的“Domain-Driven Design: Tackling Complexity in the…

在今日头条上写文章:ChatGPT完整使用教程

了解如何充分运用ChatGPT进行创作 简介 在今日头条上发布文章变得越来越方便。本文旨在详细解析如何运用ChatGPT来创作文章,并提供全方位的使用指南及常见问题的答疑。 第一步:基础准备 确保你已注册今日头条账号。 登录ChatGPT并与你的今日头条账号进…

软件测试经理工作日常随记【6】-利用python连接禅道数据库并自动统计bug数据到钉钉群

测试管理_利用python连接禅道数据库并统计bug数据到钉钉 这篇不多赘述,直接上代码文件。 另文章基础参考博文:参考博文 加以我自己的需求优化而成。 统计的前提 以下代码统计的前提是禅道的提bug流程应规范化 bug未解决不删除bug未关闭不删除 db_…

LuatOS学习

开发顺序 Lua是脚本语言中运行速度最快的语言 资源占用极低 脚本语言运行方式 脚本语言是从上往下一行一行运行的 变量 coun 123456 a,b,c 1,2,3交换 a,b b,a在测试环境中,用print(a,b)打印 nil类型 未声明的变量就是nil,nil用来表示此变量为空…

STM32高级控制定时器(STM32F103):检测输入PWM周期和占空比

目录 概述 1 PWM 输入模式 1.1 原理介绍 1.2 应用实例 1.3 示例时序图 2 使用STM32Cube配置工程 2.1 软件环境 2.2 配置参数 2.3 生成项目文件 3 功能实现 3.1 PWM占空比函数 3.2 输入捕捉回调函数 4 功能测试 4.1 测试软件框架结构 4.2 实验实现 4.2.1 测试实…

视觉语音识别挑战赛 CNVSRC 2024

CNVSRC 2024由NCMMSC 2024组委会发起,清华大学、北京邮电大学、海天瑞声、语音之家共同主办。竞赛的目标是通过口唇动作来推断发音内容,进一步推动视觉语音识别技术的发展。视觉语音识别(也称为读唇技术)是一种通过观察唇部动作推…

二叉树顺序结构实现【堆的实现】【详细图解】

P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。 P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。 目录 1、二叉树的顺序结构2、堆的概念3、堆的实现3.1 堆实现的前提3.1.1 向上调整3.1.2 向下调…

采用java语言+B/S架构+后端SpringBoot前端Vue开发的ADR药品不良反应智能监测系统源码

采用java语言+B/S架构+后端SpringBoot前端Vue开发的ADR药品不良反应智能监测系统源码 ADR监测引擎每日主动获取检验数据、病历内容(可拓展)、以及其他临床数据,根据知识库内容自动判定患者是否有不良反应迹象&#xf…

【iOS】UI学习(一)

UI学习(一) UILabelUIButtonUIButton事件 UIViewUIView对象的隐藏UIView的层级关系 UIWindowUIViewController定时器与视图对象 UISwitch UILabel UILabel是一种可以显示在屏幕上,显示文字的一种UI。 下面使用代码来演示UILabel的功能&#…

做好开源快速开发平台研发创新 助力行业高效发展!

随着信息化时代的到来,科技的力量无处不在。为了提高办公效率,很多大中型企业倾向于使用更为先进的软件平台来助力企业降本增效。在众多助力神器之中,开源快速开发平台低代码技术平台深得广大新老客户朋友的喜爱,它与生俱来的优势…

Java数据类型

一、每种数据都定义了 明确的数据类型,在内存中分配了不同大小的 内存空间(字节)。 二、Java数据类型分为两种: 基本数据类型: 数值型: 整数类型,存放整数(byte[1] , short[2] , int[4] , long[8]) 浮点类型&#xff0…

UE5 读取本地图片并转换为base64字符串

调试网址&#xff1a;在线图像转Base64 - 码工具 (matools.com) 注意要加&#xff08;data:image/png;base64,&#xff09; FString UBasicFuncLib::LoadImageToBase64(const FString& ImagePath) {TArray<uint8> ImageData;// Step 1: 读取图片文件到字节数组if (!…

【蓝桥杯】第十四届蓝桥杯大赛软件赛国赛C/C++ 大学 B 组

答题结果页 - 蓝桥云课 (lanqiao.cn) 0子2023 - 蓝桥云课 (lanqiao.cn)&#xff08;暴力枚举 #include<bits/stdc.h> using lllong long; using ullunsigned long long; #define fir first #define sec second //#define int llconst int N1e510; const int mod1e97;int…