【第9章】MyBatis-Plus持久层接口之SimpleQuery
文章目录
- 前言
- 一、使用步骤
- 1.引入 SimpleQuery 工具类
- 2.使用 SimpleQuery 进行查询
- 二、使用提示
- 三、功能详解
- 1. keyMap
- 1.1 方法签名
- 1.2 参数说明
- 1.3 使用示例
- 1.4 使用提示
- 2. map
- 2.1 方法签名
- 2.2 参数说明
- 2.3 使用示例
- 2.4 使用提示
- 3. group
- 3.1 方法签名
- 3.2 参数说明
- 3.3 使用示例
- 3.4 使用提示
- 4. list
- 4.1 方法签名
- 4.2 参数说明
- 4.3 使用示例
- 4.4 使用提示
- 总结
前言
SimpleQuery 是 Mybatis-Plus 提供的一个工具类,它对 selectList 查询后的结果进行了封装,使其可以通过 Stream
流的方式进行处理,从而简化了API
的调用。
SimpleQuery 的一个特点是它的 peeks
参数,这是一个可变参数,类型为 Consumer…,意味着你可以连续添加多个操作,这些操作会在查询结果被处理时依次执行。
SimpleQuery 的使用方式可以参考官方测试用例。
使用 SimpleQuery 前,需要确保项目中已注入对应实体的 BaseMapper。
一、使用步骤
1.引入 SimpleQuery 工具类
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.baomidou.mybatisplus.core.toolkit.support.SerializedLambda;
import com.baomidou.mybatisplus.extension.toolkit.SimpleQuery;
新版SimpleQuery
迁移至toolkit
包路径下
2.使用 SimpleQuery 进行查询
// 假设有一个 User 实体类和对应的 BaseMapper
List<Long> ids = SimpleQuery.list(Wrappers.lambdaQuery(User.class), // 使用 lambda 查询构建器User::getId, // 提取的字段,这里是 User 的 idSystem.out::println, // 第一个 peek 操作,打印每个用户user -> userNames.add(user.getName()) // 第二个 peek 操作,将每个用户的名字添加到 userNames 列表中
);
二、使用提示
- SimpleQuery 工具类提供了一种简洁的方式来处理查询结果,它允许你在查询结果上应用多个操作,这些操作会按照添加的顺序依次执行。
- 在使用 SimpleQuery 时,你需要提供一个查询构建器(如
Wrappers.lambdaQuery()
),一个用于提取结果的字段(如User::getId
),以及一个或多个Consumer
类型的peek
操作。 peek
操作可以用于执行任何副作用操作,如打印日志、更新缓存、发送通知等,而不会影响查询结果本身。- SimpleQuery 返回的结果是一个列表,包含了所有查询到的实体对象,这些对象已经应用了所有的
peek
操作。 - 通过使用 SimpleQuery,你可以将查询和结果处理逻辑分离,使代码更加清晰和易于维护。
通过使用 SimpleQuery 工具类,开发者可以更加高效地处理查询结果,同时保持代码的简洁性和可读性。这种工具类尤其适合于需要对查询结果进行复杂处理的场景。
三、功能详解
1. keyMap
SimpleQuery 的 keyMap
方法提供了一种便捷的方式来查询数据库,并将查询结果封装成一个Map
,其中实体的某个属性作为键(key),实体本身作为值(value)。这个方法还支持在处理查询结果时执行额外的副作用操作,如打印日志或更新缓存。
1.1 方法签名
// 查询表内记录,封装返回为 Map<属性,实体>
Map<A, E> keyMap(LambdaQueryWrapper<E> wrapper, SFunction<E, A> sFunction, Consumer<E>... peeks);// 查询表内记录,封装返回为 Map<属性,实体>,考虑了并行流的情况
Map<A, E> keyMap(LambdaQueryWrapper<E> wrapper, SFunction<E, A> sFunction, boolean isParallel, Consumer<E>... peeks);
1.2 参数说明
类型 | 参数名 | 描述 |
---|---|---|
E | entity | 实体对象类型,即查询结果的实体类型。 |
A | attribute | 实体属性类型,也是返回的 Map 中键(key)的类型。 |
LambdaQueryWrapper | wrapper | 支持 lambda 表达式的条件构造器,用于构建查询条件。 |
SFunction<E, A> | sFunction | 实体中属性的 getter 方法引用,用于确定 Map 中键(key)的值。 |
boolean | isParallel | 如果设置为 true,则底层使用并行流执行查询,可以提高处理大量数据时的效率。 |
Consumer… | peeks | 可变参数,用于指定在处理查询结果时执行的额外操作,如打印日志、更新缓存等。 |
1.3 使用示例
// 假设有一个 User 实体类和对应的 BaseMapper
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getStatus, "active"); // 查询状态为 "active" 的用户// 使用 keyMap 方法查询并封装结果
Map<String, User> userMap = SimpleQuery.keyMap(queryWrapper, // 查询条件构造器User::getUsername, // 使用用户名作为键user -> System.out.println("Processing user: " + user.getUsername()) // 打印处理的用户名
);// 遍历结果
for (Map.Entry<String, User> entry : userMap.entrySet()) {System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
}
1.4 使用提示
keyMap
方法适用于需要根据实体的某个属性快速查找实体的场景。- 通过
sFunction
参数,你可以指定任何实体属性作为Map
的键,这使得查询结果的访问更加直观和高效。 peeks
参数允许你在处理查询结果时执行额外的副作用操作,这些操作不会影响最终的Map
结果。- 当处理大量数据时,可以考虑将
isParallel
参数设置为true
以启用并行流,从而提高查询效率。
通过使用 SimpleQuery 的 keyMap 方法,开发者可以更加高效地处理查询结果,并将其封装成易于使用的数据结构,同时还可以执行额外的副作用操作,使代码更加简洁和灵活。
2. map
SimpleQuery 的 map
方法提供了一种便捷的方式来查询数据库,并将查询结果封装成一个 Map
,其中实体的某个属性作为键(key),另一个属性作为值(value)。这个方法还支持在处理查询结果时执行额外的副作用操作,如打印日志或更新缓存。
2.1 方法签名
// 查询表内记录,封装返回为 Map<属性,属性>
Map<A, P> map(LambdaQueryWrapper<E> wrapper, SFunction<E, A> keyFunc, SFunction<E, P> valueFunc, Consumer<E>... peeks);// 查询表内记录,封装返回为 Map<属性,属性>,考虑了并行流的情况
Map<A, P> map(LambdaQueryWrapper<E> wrapper, SFunction<E, A> keyFunc, SFunction<E, P> valueFunc, boolean isParallel, Consumer<E>... peeks);
2.2 参数说明
类型 | 参数名 | 描述 |
---|---|---|
E | entity | 实体对象类型,即查询结果的实体类型。 |
A | attribute | 实体属性类型,作为返回的 Map 中键(key)的类型。 |
P | attribute | 实体属性类型,作为返回的 Map 中值(value)的类型。 |
LambdaQueryWrapper | wrapper | 支持 lambda 表达式的条件构造器,用于构建查询条件。 |
SFunction<E, A> | keyFunc | 实体中属性的 getter 方法引用,用于确定 Map 中键(key)的值。 |
SFunction<E, P> | valueFunc | 实体中属性的 getter 方法引用,用于确定 Map 中值(value)的值。 |
boolean | isParallel | 如果设置为 true,则底层使用并行流执行查询,可以提高处理大量数据时的效率。 |
Consumer… | peeks | 可变参数,用于指定在处理查询结果时执行的额外操作,如打印日志、更新缓存等。 |
2.3 使用示例
// 假设有一个 User 实体类和对应的 BaseMapper
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getStatus, "active"); // 查询状态为 "active" 的用户// 使用 map 方法查询并封装结果
Map<String, Integer> userMap = SimpleQuery.map(queryWrapper, // 查询条件构造器User::getUsername, // 使用用户名作为键User::getAge, // 使用年龄作为值user -> System.out.println("Processing user: " + user.getUsername()) // 打印处理的用户名
);// 遍历结果
for (Map.Entry<String, Integer> entry : userMap.entrySet()) {System.out.println("Username: " + entry.getKey() + ", Age: " + entry.getValue());
}
2.4 使用提示
map
方法适用于需要根据实体的某个属性快速查找另一个属性的场景。- 通过
keyFunc
和valueFunc
参数,你可以指定任何实体属性作为Map
的键和值,这使得查询结果的访问更加直观和高效。 peeks
参数允许你在处理查询结果时执行额外的副作用操作,这些操作不会影响最终的Map
结果。- 当处理大量数据时,可以考虑将
isParallel
参数设置为true
以启用并行流,从而提高查询效率。
通过使用 SimpleQuery 的 map 方法,开发者可以更加高效地处理查询结果,并将其封装成易于使用的数据结构,同时还可以执行额外的副作用操作,使代码更加简洁和灵活。
3. group
SimpleQuery 的 group
方法提供了一种便捷的方式来查询数据库,并将查询结果按照实体的某个属性进行分组,封装成一个 Map
。这个方法还支持在处理查询结果时执行额外的副作用操作,如打印日志或更新缓存。此外,它还允许你使用 Collector
对分组后的集合进行进一步的处理。
3.1 方法签名
// 查询表内记录,封装返回为 Map<属性,List<实体>>
Map<K, List<T>> group(LambdaQueryWrapper<T> wrapper, SFunction<T, K> sFunction, Consumer<T>... peeks);// 查询表内记录,封装返回为 Map<属性,List<实体>>,考虑了并行流的情况
Map<K, List<T>> group(LambdaQueryWrapper<T> wrapper, SFunction<T, K> sFunction, boolean isParallel, Consumer<T>... peeks);// 查询表内记录,封装返回为 Map<属性,分组后对集合进行的下游收集器>
M group(LambdaQueryWrapper<T> wrapper, SFunction<T, K> sFunction, Collector<? super T, A, D> downstream, Consumer<T>... peeks);// 查询表内记录,封装返回为 Map<属性,分组后对集合进行的下游收集器>,考虑了并行流的情况
M group(LambdaQueryWrapper<T> wrapper, SFunction<T, K> sFunction, Collector<? super T, A, D> downstream, boolean isParallel, Consumer<T>... peeks);
3.2 参数说明
类型 | 参数名 | 描述 |
---|---|---|
T | entity | 实体对象类型,即查询结果的实体类型。 |
K | attribute | 实体属性类型,作为返回的 Map 中键(key)的类型。 |
D | - | 下游收集器返回类型,作为 Map 中值(value)的类型。 |
A | - | 下游操作中间类型,用于 Collector 的中间结果。 |
M | - | 最终结束返回的 Map<K, D> 类型。 |
LambdaQueryWrapper | wrapper | 支持 lambda 表达式的条件构造器,用于构建查询条件。 |
SFunction<T, K> | sFunction | 分组依据,实体中属性的 getter 方法引用,用于确定 Map 中键(key)的值。 |
Collector<T, A, D> | downstream | 下游收集器,用于对分组后的集合进行进一步的处理。 |
boolean | isParallel | 如果设置为 true,则底层使用并行流执行查询,可以提高处理大量数据时的效率。 |
Consumer… | peeks | 可变参数,用于指定在处理查询结果时执行的额外操作,如打印日志、更新缓存等。 |
3.3 使用示例
// 假设有一个 User 实体类和对应的 BaseMapper
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getStatus, "active"); // 查询状态为 "active" 的用户// 使用 group 方法查询并封装结果,按照用户名分组
Map<String, List<User>> userGroup = SimpleQuery.group(queryWrapper, // 查询条件构造器User::getUsername, // 使用用户名作为分组键user -> System.out.println("Processing user: " + user.getUsername()) // 打印处理的用户名
);// 遍历结果
for (Map.Entry<String, List<User>> entry : userGroup.entrySet()) {System.out.println("Username: " + entry.getKey());for (User user : entry.getValue()) {System.out.println(" - User: " + user);}
}
3.4 使用提示
group
方法适用于需要根据实体的某个属性对查询结果进行分组的场景。- 通过
sFunction
参数,你可以指定任何实体属性作为分组的依据,这使得查询结果的组织更加灵活。 downstream
参数允许你使用Collector
对分组后的集合进行进一步的处理,如计数、求和、平均值等。peeks
参数允许你在处理查询结果时执行额外的副作用操作,这些操作不会影响最终的Map
结果。- 当处理大量数据时,可以考虑将
isParallel
参数设置为true
以启用并行流,从而提高查询效率。
通过使用 SimpleQuery 的
group
方法,开发者可以更加高效地处理查询结果,并将其按照特定属性进行分组,同时还可以执行额外的副作用操作,使代码更加简洁和灵活。
4. list
SimpleQuery 的 list
方法提供了一种便捷的方式来查询数据库,并将查询结果封装成一个 List
,其中列表的元素是实体的某个属性。这个方法还支持在处理查询结果时执行额外的副作用操作,如打印日志或更新缓存。
4.1 方法签名
// 查询表内记录,封装返回为 List<属性>
List<A> list(LambdaQueryWrapper<E> wrapper, SFunction<E, A> sFunction, Consumer<E>... peeks);// 查询表内记录,封装返回为 List<属性>,考虑了并行流的情况
List<A> list(LambdaQueryWrapper<E> wrapper, SFunction<E, A> sFunction, boolean isParallel, Consumer<E>... peeks);
4.2 参数说明
类型 | 参数名 | 描述 |
---|---|---|
E | entity | 实体对象类型,即查询结果的实体类型。 |
A | attribute | 实体属性类型,作为返回的 List 中元素的类型。 |
LambdaQueryWrapper | wrapper | 支持 lambda 表达式的条件构造器,用于构建查询条件。 |
SFunction<E, A> | sFunction | 实体中属性的 getter 方法引用,用于确定 List 中元素的值。 |
boolean | isParallel | 如果设置为 true,则底层使用并行流执行查询,可以提高处理大量数据时的效率。 |
Consumer… | peeks | 可变参数,用于指定在处理查询结果时执行的额外操作,如打印日志、更新缓存等。 |
4.3 使用示例
// 假设有一个 User 实体类和对应的 BaseMapper
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getStatus, "active"); // 查询状态为 "active" 的用户// 使用 list 方法查询并封装结果,提取所有用户的用户名
List<String> userNames = SimpleQuery.list(queryWrapper, // 查询条件构造器User::getUsername, // 提取用户名作为列表元素user -> System.out.println("Processing user: " + user.getUsername()) // 打印处理的用户名
);// 遍历结果
for (String username : userNames) {System.out.println("Username: " + username);
}
4.4 使用提示
list
方法适用于需要根据实体的某个属性快速获取一个列表的场景。- 通过
sFunction
参数,你可以指定任何实体属性作为List
的元素,这使得查询结果的访问更加直观和高效。 peeks
参数允许你在处理查询结果时执行额外的副作用操作,这些操作不会影响最终的List
结果。- 当处理大量数据时,可以考虑将
isParallel
参数设置为true
以启用并行流,从而提高查询效率。
通过使用 SimpleQuery 的 list 方法,开发者可以更加高效地处理查询结果,并将其封装成易于使用的数据结构,同时还可以执行额外的副作用操作,使代码更加简洁和灵活。
总结
回到顶部
相关文章:
【第9章】MyBatis-Plus持久层接口之SimpleQuery
文章目录 前言一、使用步骤1.引入 SimpleQuery 工具类2.使用 SimpleQuery 进行查询 二、使用提示三、功能详解1. keyMap1.1 方法签名1.2 参数说明1.3 使用示例1.4 使用提示 2. map2.1 方法签名2.2 参数说明2.3 使用示例2.4 使用提示 3. group3.1 方法签名3.2 参数说明3.3 使用示…...

一文带你了解乐观锁和悲观锁的本质区别!
文章目录 悲观锁是什么?乐观锁是什么?如何实现乐观锁?什么是CAS应用局限性ABA问题是什么? 悲观锁是什么? 悲观锁它总是假设最坏的情况,它会认为共享资源在每次被访问的时候就会出现线程安全问题࿰…...

Android Studio环境搭建(4.03)和报错解决记录
1.本地SDK包导入 安装好IDE以及下好SDK包后,先不要管IDE的引导配置,直接新建一个新工程,进到开发界面。 SDK路径配置:File---->>Other Settings---->>Default Project Structure 拷贝你SDK解压的路径来这,…...

基于协同过滤的电影推荐与大数据分析的可视化系统
基于协同过滤的电影推荐与大数据分析的可视化系统 在大数据时代,数据分析和可视化是从大量数据中提取有价值信息的关键步骤。本文将介绍如何使用Python进行数据爬取,Hive进行数据分析,ECharts进行数据可视化,以及基于协同过滤算法…...

修复vcruntime140.dll方法分享
修复vcruntime140.dll方法分享 最近在破解typora的时候出现了缺失vcruntime140.dll文件的报错导致软件启动失败。所以找了一番资料发现都不是很方便的处理,甚至有的dll处理工具还需要花钱????,我本来就是为…...
PostgreSQL的系统视图pg_stat_wal_receiver
PostgreSQL的系统视图pg_stat_wal_receiver 在 PostgreSQL 中,pg_stat_wal_receiver 视图提供了关于 WAL(Write-Ahead Logging)接收进程的统计信息。WAL 接收器是 PostgreSQL 集群中流复制的一部分,它在从节点中工作,…...

Qt之Pdb生成及Dump崩溃文件生成与调试(含注释和源码)
文章目录 一、Pdb生成及Dump文件使用示例图1.Pdb文件生成2.Dump文件调试3.参数不全Pdb生成的Dump文件调试 二、个人理解1.生成Pdb文件的方式2.Dump文件不生产的情况 三、源码Pro文件mian.cppMainWindowUi文件 总结 一、Pdb生成及Dump文件使用示例图 1.Pdb文件生成 下图先通过…...

视频号视频怎么保存到手机,视频号视频怎么保存到手机相册里,苹果手机电脑都可以用
随着数字媒体的蓬勃发展,视频已成为我们日常生活中不可或缺的一部分。视频号作为众多视频分享平台中的一员,吸引了大量用户上传和分享各类精彩视频。然而,有时我们可能希望将视频号上的视频下载下来,以下将详细介绍如何将视频号的视频。 方法…...

Softmax函数的作用
Softmax 函数主要用于多类别分类问题,它将输入的数值转换为概率分布。 具体来说,对于给定的输入向量 x [x_1, x_2,..., x_n] ,Softmax 函数的输出为 y [y_1, y_2,..., y_n] ,其中: 这样,Softmax 函数的输…...

cesium 添加 Echarts 图层(空气质量点图)
cesium 添加 Echarts 图层(下面附有源码) 1、实现思路 1、在scene上面新增一个canvas画布 2、通坐标转换,将经纬度坐标转为屏幕坐标来实现 3、将ecarts 中每个series数组中元素都加 coordinateSystem: ‘cesiumEcharts’ 2、示例代码 <!DOCTYPE html> <html lan…...

Python技术笔记汇总(含语法、工具库、数科、爬虫等)
对Python学习方法及入门、语法、数据处理、数据可视化、空间地理信息、爬虫、自动化办公和数据科学的相关内容可以归纳如下: 一、Python学习方法 分解自己的学习目标:可以将学习目标分基础知识,进阶知识,高级应用,实…...

Nacos-注册中心
一、注册中心的交互流程 注册中心通常有两个角色: 服务提供者(生产者):对外提供服务的微服务应用。它会把自身的服务地址注册到注册中心,以供消费者发现和调用。服务调用者(消费者):调用其他微服务的应用程序。它会向注册中心订阅自己需要的服…...

Unity制作一个简单抽卡系统(简单好抄)
业务流程:点击抽卡——>播放动画——>显示抽卡面板——>将随机结果添加到面板中——>关闭面板 1.准备素材并导入Unity中(包含2个抽卡动画,抽卡结果的图片,一个背景图片,一个你的展示图片) 2.给…...

简单多状态DP问题
这里写目录标题 什么是多状态DP解决多状态DP问题应该怎么做?关于多状态DP问题的几道题1.按摩师2.打家劫舍Ⅱ3.删除并获得点数4.粉刷房子5.买卖股票的最佳时期含手冷冻期 总结 什么是多状态DP 多状态动态规划(Multi-State Dynamic Programming, Multi-St…...

cpu,缓存,辅存,主存之间的关系及特点
关系图 示意图: ------------------- | CPU | | ------------- | | | 寄存器 | | | ------------- | | | L1缓存 | | | ------------- | | | L2缓存 | | | ------------- | | | L3缓存 | | | ------------- | ----…...

【每日刷题】Day77
【每日刷题】Day77 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. LCR 159. 库存管理 III - 力扣(LeetCode) 2. LCR 075. 数组的相对排序 - 力…...
chrome-base源码分析(1)macros模块
Chrome-base源码分析(2)之Macros模块 Author:Once Day Date:2024年6月29日 漫漫长路,才刚刚开始… 全系列文章请查看专栏: 源码分析_Once-Day的博客-CSDN博客 参考文档: macros - Chromium Code SearchChrome base 库详解:工…...
玩转springboot之springboot定制嵌入式的servlet
springboot定制嵌入式的servlet容器 修改容器配置 有两种方式可以修改容器的配置 可以直接在配置文件中修改和server有关的配置 server.port8081 server.tomcat.uri-encodingUTF-8//通用的Servlet容器设置 server.xxx //指定Tomcat的设置 server.tomcat.xxx编写一个EmbeddedSer…...

dell服务器RAID5磁盘阵列出现故障的解决过程二——热备盘制作与坏盘替换过程
目录 背景方案概念全局热备(Global Hot Spare):独立热备(Dedicated Hot Spare): 过程8号制作成热备清除配置制作独立热备热备顶替坏盘直接rebuild 更换2号盘2号热备 注意注意事项foreign状态要先清除配置 背…...

Elasticsearch开启认证|为ES设置账号密码|ES账号密码设置|ES单机开启认证|ES集群开启认证
文章目录 前言单节点模式开启认证生成节点证书修改ES配置文件为内置账号添加密码Kibana修改配置验证 ES集群开启认证验证 前言 ES安装完成并运行,默认情况下是允许任何用户访问的,这样并不安全,可以为ES开启认证,设置账号密码。 …...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...

DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...

基于Java+VUE+MariaDB实现(Web)仿小米商城
仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…...

Linux 下 DMA 内存映射浅析
序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存,但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程,可以参考这篇文章,我觉得写的非常…...

在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例
目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码:冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...

Axure零基础跟我学:展开与收回
亲爱的小伙伴,如有帮助请订阅专栏!跟着老师每课一练,系统学习Axure交互设计课程! Axure产品经理精品视频课https://edu.csdn.net/course/detail/40420 课程主题:Axure菜单展开与收回 课程视频:...

aurora与pcie的数据高速传输
设备:zynq7100; 开发环境:window; vivado版本:2021.1; 引言 之前在前面两章已经介绍了aurora读写DDR,xdma读写ddr实验。这次我们做一个大工程,pc通过pcie传输给fpga,fpga再通过aur…...