当前位置: 首页 > news >正文

Java Mybatis数据库面试题

Java Mybatis数据库面试题

  • 前言
  • 1、什么是 Mybatis?
  • 2、Mybaits 的优缺点:
  • 3、SQL 注入如何防止?
  • 4、MyBatis 框架适用场合:
  • 5、MyBatis 与 Hibernate 有哪些不同?
  • 6、#{}和${}的区别是什么?
  • 7、当表中的字段名和实体类的属性名不一样 ,怎么办 ?
  • 8、模糊查询 like 语句该怎么写?
  • 9、Mapper接口有什么用?
  • 10、Mapper接口里的方法能重载吗?工作原理是什么?
  • 11、mybatis使用了哪些设计模式?
  • 12、Mybatis批量插入数据的方式?
  • 13、如何获取自动生成的(主)键值?
  • 14、在 mapper 中如何传递多个参数?
  • 15、Mybatis 动态 sql 有什么用?有哪些动态 sql标签?
  • 16、Xml 映射文件中,除了select|insert|updae|delete标签之外,还有哪些标签?
  • 17、Mybatis 中不同的 Xml 映射文件,id 是否可以重复?
  • 18、为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
  • 19、一对一、一对多的关联查询 ?
  • 20、什么是 MyBatis 的接口绑定有哪些实现方式?
  • 21、使用 MyBatis 的 mapper 接口调用时有哪些要求?
  • 22、Mybatis 中的一级缓存与二级缓存
  • 23、MyBatis 的工作原理?
  • 24、物理分页和逻辑(内存)分页?
  • 25、Mybatis 是如何进行分页的?分页插件的原理是什么?
  • 26、Mybatis延迟加载的实现原理是什么?


前言

最新的 Java 面试题,技术栈涉及 Java 基础、集合、多线程、Mysql、分布式、Spring全家桶、MyBatis、Dubbo、缓存、消息队列、Linux…等等,会持续更新。

如果对老铁有帮助,帮忙免费点个赞,谢谢你的发财手!

1、什么是 Mybatis?

  • 1、Mybatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建/关闭连接等繁杂的过程。
  • 2、通过 xml文件或注解的方式将java对象和 statement的 sql动态参数进行映射,生成最终的 sql 语句,然后将结果映射为 java 对象并返回。

2、Mybaits 的优缺点:

  • 优点:
  • 1、SQL语句写在XML中,解除了SQL语句和程序代码的耦合,便于统⼀管理;
  • 2、能兼容各种数据库(底层是通过JDBC来连接数据库);
  • 3、消除JDBC⼤量冗余的代码,不需要⼿动连接/释放等操作;
  • 4、可以动态的生成SQL语句,提供Java对象映射标签。
  • 缺点:
  • 1、编写SQL语句的⼯作量较⼤,尤其当字段和关联表比较多时;
  • 2、SQL语句依赖于数据库,不能随意更换数据库。

3、SQL 注入如何防止?

SQL 注入产生的原因: SQL 语句编写不规范和没有对特殊字符进行过滤。

  • 1、用户权限设置:不能删除表或者库;
  • 2、过滤特殊字符:对insert、delete、update等字符进行过滤;
  • 3、参数传值:采用参数传值的方式传输变量;
  • 4、编写规范:SQL编写尽量不要省略单引号或双引号;
  • 5、漏洞扫描:通过专业的扫描工具,及时的发现漏洞。

4、MyBatis 框架适用场合:

  • 1、MyBatis 专注于 SQL 本身,是一个灵活的 DAO 层解决方案。
  • 2、对性能的要求很高,或者需要动态生成SQ语句的项目,MyBatis 将是不错的选择。

5、MyBatis 与 Hibernate 有哪些不同?

  • 1、Mybatis它是一个半 ORM 框架,因为 MyBatis 需要程序员自己编写 Sql 语句;
  • 2、Mybatis 的SQL语句是自己编写的,可以严格控制 sql 语句执行性能,灵活度高;
  • 3、Mybatis的SQL 语句依赖于数据库,不能随意更换数据库。

6、#{}和${}的区别是什么?

  • 1、#{}是预编译处理,KaTeX parse error: Expected 'EOF', got '#' at position 29: …tis在处理sql语句时,会把#̲{}替换为?占位符,会把{}替换成变量的值;
  • 2、#{}会自动添加引号,而${}需要手动添加引号;
  • 3、使用#{}可以有效的防止SQL注入,提高系统安全性;
  • 4、使用order by 动态参数排序时只能用KaTeX parse error: Expected 'EOF', got '#' at position 13: {}。 总的来说,能使用#̲{},就不要使用{}

7、当表中的字段名和实体类的属性名不一样 ,怎么办 ?

  • 1、通过在查询的 sql 语句中定义字段的别名,让字段的别名和实体类的属性名一致;
  • 2、通过标签来映射字段名和实体类的属性名一一对应;

8、模糊查询 like 语句该怎么写?

<select id=”getUser”>select * from user where name like concat(‘%’,#{name},‘%’)
</select>

9、Mapper接口有什么用?

  • 1、Mapper 接口的全限定名,就是xml映射文件中的 namespace 的值;
  • 2、Mapper接口的方法名,就是xml映射文件中的 Statement 的 id 值;
  • 3、Mapper接口方法内的参数,就是传递给 sql 语句的参数。
  • 4、Mapper 接口是没有实现类的,当调用接口方法时,接口的全限定名+方法名作为 key 值,可以唯一定位一个 xml映射文件中的sql节点;

10、Mapper接口里的方法能重载吗?工作原理是什么?

  • Mapper 接口里的方法,是不能重载的,因为使用了Mapper接口的全限定名+方法名作为 key值,可以唯一定位一个 xml映射文件中的sql节点;
  • Mapper 接口的工作原理大概是:Mybatis 运行时会使用 JDK 动态代理,为 Mapper 接口生成代理对象,代理对象会拦截接口方法,转而执行对应的SQL语句,然后返回结果,将结果映射到Java对象中。

11、mybatis使用了哪些设计模式?

  • 1、代理模式,mybatis在运行过程中使用jdk的动态代理模式创建了一个mapper接口的代理类对象;
  • 2、建造者模式,调用SqlSessionFactoryBuilder的build方法创建SqlSessionFactory对象;
  • 3、工厂模式,调用sqlSessionFactory的openSession方法创建sqlSession对象;
  • 4、策略模式,openSession方法参数可以有多种,控制后续的sql执行流程;

12、Mybatis批量插入数据的方式?

  • 1、在for循环中执行插入方法;
  • 2、xml映射文件中的标签;
  • 3、MybatisPlus提供的批量插入方法(saveBatch);
  • 4、手动获取会话对象SqlSession批量插入
sqlsession ss = sqlsessionfactory.opensession(executortype.batch, false); 
UserMapper mapper = ss.getmapper(UserMapper.class); 
userList.foreach(user -> mapper.insertUser(user));
ss.commit();

13、如何获取自动生成的(主)键值?

insert 方法总是返回一个 int 值,这个值代表的是插入的行数。
如果采用自增长策略,自动生成的键值在insert方法执行完后,可以被设置到传入的参数对象中:

<insert id=”insertUser” usegeneratedkeys=”true” keyproperty=”id”> insert into sys_user (name, age) values (#{name}, #{age})
</insert>

14、在 mapper 中如何传递多个参数?

  • 第一种:Mapper接口的方法
public User selectUser(Integer userId, String sex);

下面的#{0}代表接收的是第一个参数,#{1}代表是第二个参数,以此类推。

<select id="getUser"resultMap="BaseResultMap">select * from sys_user where id = #{0} and sex = #{1}
</select>
  • 第二种:使用@param 注解:
public User getUser(@Param("id")Integer userId, @Param("sex")String sex);
<select id="getUser" resultMap="BaseResultMap">select * from sys_user where id = #{id} and sex = #{sex}
</select>
  • 第三种:多个参数封装成对象
public User getUser(@Param(“condition”) UserCondition condition);
<select id="getUser" resultMap="BaseResultMap">select * from sys_user where id = #{condition.id} and sex = #{condition.sex}     
</select>

15、Mybatis 动态 sql 有什么用?有哪些动态 sql标签?

  • MyBatis 中的动态 SQL是通过 OGNL表达式来判断条件,根据不同的条件动态的生成 SQL 语句。
  • Mybatis 提供了 9 种动态 sql 标签: where | if | foreach | choose | when | otherwise | bind。

16、Xml 映射文件中,除了select|insert|updae|delete标签之外,还有哪些标签?

还有< resultMap>、< parameterMap>、< sql>、< include>、< selectKey>,加上动态 sql 的 9 个标签,其中< sql>为 sql 片段标签,通过< include>标签 refid 引入 sql 片段,< selectKey>为返回最新插入的id标签。

<!-- 返回最新插入的id -->
<selectKey resultType="java.lang.Integer" keyProperty="id" order="AFTER" >select last_insert_id() as id
</selectKey>

17、Mybatis 中不同的 Xml 映射文件,id 是否可以重复?

不同的 Xml 映射文件,如果都配置了namespace,那么 id 可以重复;如果没有配置 namespace,那么 id 不能重复;
原因就是 namespace+id 是作为 Map<String, MapperStatement>的 key值使用的,如果没有 namespace,就剩下 id,那么id 重复会导致数据互相覆盖。

18、为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?

Hibernate 属于全自动 ORM 映射工具,使用 Hibernate 查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取,所以它是全自动的。而 Mybatis 在查询关联对象或关联集合对象时,需要手动编写 sql 来完成,所以,称之为半自动 ORM 映射工具。

19、一对一、一对多的关联查询 ?

<resultMap id="ClassesResultMap" type="com.entity.Classes"><id property="id" column="c_id"/><result property="name" column="c_name"/><!—association  一对一关联查询 --><association property="teacher" javaType="com.entity.Teacher" select="com.mapper.TeacherMapper.getTeaByClassId"><id property="id" column="t_id"/><result property="name" column="t_name"/></association><!—collection  一对多关联查询 --><collection property="student" ofType="com.entity.Student" select="com.mapper.StudentMapper.getStuByClassId"><id property="id" column="s_id"/><result property="name" column="s_name"/> </collection>
</resultMap>

20、什么是 MyBatis 的接口绑定有哪些实现方式?

  • 接口绑定有两种实现方式,一种是通过注解绑定,就是在接口的方法上面加上@Select、@Update等注解,里面包含 Sql 语句来绑定;另外一种就是通过 xml 映射文件来绑定,
  • 映射文件里面的 namespace 必须为Mapper接口的全限定名。当 Sql 语句比较简单时候,用注解绑定, 当 SQL 语句比较复杂时候,用 xml 绑定,一般用 xml 绑定的比较多。

21、使用 MyBatis 的 mapper 接口调用时有哪些要求?

  • 1、Mapper接口的方法名和 mapper.xml中定义的每个 sql节点的id相同;
  • 2、Mapper接口的方法和 xml 映射文件中定义的sql 节点的输入参数类型相同;
  • 3、Mapper 接口的方法和xml 映射文件中定义的sql 节点的输出参数类型相同。

22、Mybatis 中的一级缓存与二级缓存

  • 一级缓存:是SqlSession级别的缓存,默认是开启的,同一个SqlSession执行相同的查询语句,就会从缓存中读取而不走数据库,如果两次操作之间出现写(新增、修改、删除)操作,那么缓存的数据会全部清空,下次要从数据库中读取,再写入一级缓存,避免了脏读;
  • 二级缓存:是namespace级别的缓存,需要手动开启,不同的SqlSession是可以共享缓存数据的;
    查询顺序:先去查询二级缓存,如果没有命中,再去查询一级缓存,如果也没有命中再去查询数据库,然后将数据写入到一级缓存和二级缓存中。

23、MyBatis 的工作原理?

  • 1、读取配置文件:mybatis-config.xml配置了MyBatis 的运行环境等信息,例如数据库连接信息;
  • 2、加载映射文件:该文件是我们编写的操作数据库的 SQL 语句,每个文件对应数据库中的一张表;
  • 3、创建会话对象SqlSession:该对象中包含了对数据库进行操作的所有方法;
  • 4、生成SQL语句:MyBatis 底层定义了一个Executor 接口来操作数据库,它将根据方法传递的参数动态地生成需要执行的 SQL 语句,同时负责查询和更新缓存;
  • 5、创建MappedStatement对象:该对象(final类型)对应mapper.xml中的一个SQL(select/update/insert/delete)节点,用于存储id、resultMap等信息。
  • 6、执行SQL返回结果:将结果映射到Java对象中,结果类型可以是 Map、 List 等集合,也可以是基本数据类型。

24、物理分页和逻辑(内存)分页?

  • 物理分页:是指查询数据库时在库里做了分页;比如mysql 使用limit ,SQLServer 使用top ,Oracle使用rowNum;
  • 逻辑(内存)分页:是指查询数据库时返回所有数据到内存中,然后通过代码获取分页数据。比如返回了所有数据并存储到List集合中,因为List集合是有序的,再根据索引获取需要的数据。list.subList((page-1)* size, size)。
    区别:
  • 1.数据库压力:物理分页每次都访问数据库,逻辑分页只访问一次数据库,对数据库造成的压力小;
  • 2.内存空间:物理分页只返回一部分数据,逻辑分页返回所有数据到内存中,占用的内存空间比较大;
  • 3.适用场合:物理分页主要用于数据量较大、更新频繁的场合,逻辑分页主要用于数据量不大、数据稳定的场合。

25、Mybatis 是如何进行分页的?分页插件的原理是什么?

  • Mybatis 使用 RowBounds 对象来实现逻辑分页,RowBounds中有2个字段offset偏移量和limit,通过这2个字段从返回的结果集(ResultSet)中获取需要的数据。
  • PageHelper是一个第三方实现物理分页的插件,它会在mybatis执行sql之前进行拦截,通过数据库类型(datebaseType),添加不同的分页语句,mysql是limit,Oracle是rowNum,然后实现分页查询功能。

26、Mybatis延迟加载的实现原理是什么?

  • Mybatis支持association和collection关联查询的延迟加载,association 指的是一对一,collection指的是一对多查询;通过设置属性fetchType="lazy"实现延迟加载(默认是eager立即加载)。
  • 它的原理是使用 CGLIB 创建目标对象的代理对象,拦截了目标对象的get方法,当调用get方法时,会进入拦截器的invoke方法,当发现需要延迟加载时,就会执行之前保存好的SQL语句,并调用对象的set方法赋值,然后调用对象本身的get方法取值,这就是延迟加载的基本原理。
    一般在一对多的情况下使用延迟加载,在一对一的情况下使用立即加载。

相关文章:

Java Mybatis数据库面试题

Java Mybatis数据库面试题 前言1、什么是 Mybatis&#xff1f;2、Mybaits 的优缺点&#xff1a;3、SQL 注入如何防止&#xff1f;4、MyBatis 框架适用场合&#xff1a;5、MyBatis 与 Hibernate 有哪些不同&#xff1f;6、#{}和${}的区别是什么&#xff1f;7、当表中的字段名和实…...

LeetCode-第14题-最长公共前缀

1.题目描述 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 ""。 2.样例描述 3.思路描述 按字符串数组每个数组的长度&#xff0c;将字符串数组从小到大排序&#xff1b;他们的公共前缀一定小于或等于最长元素长度…...

TCP/UDP模型:2024/2/29

作业1&#xff1a;TCP模型 服务器端&#xff1a; #include <myhead.h> #define SER_IP "192.168.199.129" #define SER_PORT 8899int main(int argc, const char *argv[]) {//1.创建用于连接的套接字文件int sfdsocket(AF_INET,SOCK_STREAM,0);if(sfd-1){per…...

微信如何设置自动回复消息,提升沟通效率的?

在日常微信聊天过程中&#xff0c;我们可能会频繁遇到相同问题的客户提问&#xff0c;特别是对于从事销售工作的朋友们而言&#xff0c;客户添加好友后的第一句话常常为“在吗”或“你好”。当我们拥有大量好友&#xff0c;手动逐一回复可能会耗费大量时间。因此&#xff0c;自…...

PCIE的BAR空间

1.PCIe 简介 PCIe&#xff08;Peripheral Component Interconnect Express&#xff09;是一种高速 串行计算机扩展总线标准&#xff0c;主要用于连接主板上的中央处理器&#xff08;CPU&#xff09;和 各种外部设备&#xff0c;如显卡、声卡、硬盘等。PCIe 总线取代了传统的 PC…...

11.互信息-机器学习模型性能的常用的评估指标

互信息&#xff08;Mutual Information&#xff09;是机器学习中常用的一种评估指标&#xff0c;特别是在无监督学习和聚类分析中。它用于衡量两个随机变量之间的相关性或相似性。 定义 给定两个随机变量X和Y&#xff0c;它们的互信息I(X;Y)定义如下&#xff1a; 其中&…...

SpringCloud(18)之Sleuth +Zipkin链路追踪

一、Zipkin介绍 Zipkin是一个开放源代码分布式的跟踪系统&#xff0c;它可以帮助收集服务的时间数据&#xff0c;以解决微服务架构中的延迟问 题&#xff0c;包括数据的收集、存储、查找和展现。每个服务向zipkin报告计时数据&#xff0c;zipkin会根据调用关系通 过Zipkin UI…...

GVA快速使用

1. clone 代码&#xff0c; 使用goland打开Server目录&#xff0c; 使用vsc打开前端web目录&#xff0c;运行后端&#xff0c;前端 gin-vue-admin后台管理系统 - 知乎 (zhihu.com) 2.了解端口配置 参考&#xff0c; 基于Go的后台管理框架Gin-vue-admin_go vue admin-CSDN博客…...

Linux文本处理三剑客:awk(内置函数详解笔记)

Linux系统中&#xff0c;AWK 是一个非常强大的文本处理工具&#xff0c;它的内置函数使得对文本数据进行处理更加高效和便捷。 本文将介绍 AWK 内置函数的几种主要类型&#xff1a; 算数函数字符串函数时间函数位操作函数其他常用函数 我们将使用一个示例文本文件来演示这些函…...

C++调用lua函数

C 调用Lua全局变量(普通) lua_getglobal(lua, "width");int width lua_tointeger(lua,-1);lua_pop(lua,1);std::cout << width << std::endl;lua_close(lua); 这几行代码要放到lua_pcall(lua, 0,0,0);之后才可以. C给lua传递变量 lua_pushstring(lua, …...

java找工作之Mybatis(入门及xml配置相关)

Mybatis 学习Mybatis就要学会查看官网&#xff0c;官网地址如下&#xff1a;<MyBatis中文网 > 1、简介 1.1什么是Mybatis MyBatis 是一款优秀的持久层框架&#xff0c;它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取…...

如何保证 HTTPS 证书的有效性?

随着互联网的蓬勃发展&#xff0c;保障用户在网络上的隐私和安全成为至关重要的任务。HTTPS证书&#xff0c;作为一种安全套接字层协议&#xff0c;扮演着网站安全的守护者。 1. 什么是HTTPS 证书&#xff1f; HTTPS&#xff08;HyperText Transfer Protocol Secure&#xff…...

Qt 简约美观的动画 摆钟风格 第十季

&#x1f60a; 今天给大家分享一个摆钟风格的加载动画 &#x1f60a; 效果如下: 最近工作忙起来了 , 后续再分享其他有趣的加载动画吧. 一共三个文件 , 可以直接编译运行 //main.cpp #include "LoadingAnimWidget.h" #include <QApplication> #include <Q…...

Vue 3 中的 Composition API 详解

Vue.js&#xff0c;作为前端领域流行的框架之一&#xff0c;以其响应式数据绑定和组件化开发赢得了广大开发者的喜爱。随着前端技术的不断发展和项目复杂度的增加&#xff0c;Vue 团队推出了 Vue 3&#xff0c;并引入了 Composition API&#xff0c;以更好地满足复杂应用的需求…...

利用Python爬取高德地图全国地铁站点信息

利用Python中的requests库进行地铁站点信息的获取,同时将数据保存在本机excel中 # 首先引入所需要的包 import requests from bs4 import BeautifulSoup import pandas as pd import json# 发送 GET 请求获取网页内容 url http://map.amap.com/subway/index.html response r…...

Vue 3 中的 Teleport 特性详解

引言 在 Vue 3 中&#xff0c;引入了一个名为 Teleport 的新特性。这个特性允许开发者将组件的子组件“传送”到 DOM 中的任意位置&#xff0c;而不仅仅是它们的直接父级内部。这一功能在处理如模态框、弹出菜单、提示框等需要从其原始位置在视觉上移动到其他地方的用户界面元…...

小白的matlab简单应用

基本概念 1、数组array 数组是一个更通用的数据结构&#xff0c;可以是一维、二维或多维的。 一维数组通常被称为向量。 二维数组可以被视为矩阵。 多维数组可以用来表示更高维度的数据&#xff0c;例如三维数组可以表示一系列的矩阵。 用过的函数 20240229 1、读取excel文件…...

边缘计算网关在机床生产中的应用-天拓四方

随着工业4.0的推进&#xff0c;物联网&#xff08;IoT&#xff09;技术在各个工业领域中的应用日益广泛。特别是在机床行业&#xff0c;物联网技术的引入不仅提高了生产效率&#xff0c;还实现了对机床设备的实时监控和远程维护。在这一背景下&#xff0c;边缘计算网关的角色愈…...

maven配置文件(一)Settings配置

一、仓库 1、关系 我们依赖的外部服务是需要有地方进行存储的&#xff0c;而存储的地方就称之为仓库。其中仓库又分为本地仓库、中央仓库、镜像仓库、私服。 &#xff08;1&#xff09;本地仓库 当项目在本地编译或运行时&#xff0c;直接加载本地的依赖服务无疑是最快的。默…...

选择何种操作系统作为网站服务器

选择操作系统时&#xff0c;需考虑稳定性、安全性、成本、兼容性和技术支持等因素&#xff0c;常见选项有Windows Server和Linux发行版。 选择网站服务器的操作系统是一个关键的决策&#xff0c;因为它将影响到网站的性能、稳定性、安全性以及未来的扩展性&#xff0c;目前市场…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...