【cuda入门系列】通过代码真实打印线程ID
【cuda入门系列】通过代码真实打印线程ID
- 1.`gridDim(6,1),blockDim(4,1)`
- 2.`gridDim(3,2),blockDim(2,2)`
【cuda入门系列之参加CUDA线上训练营】在Jetson nano本地跑 hello cuda!
【cuda入门系列之参加CUDA线上训练营】一文认识cuda基本概念
【cuda入门系列之参加CUDA线上训练营】共享内存实例1:矩阵转置实现及其优化
【cuda入门系列之参加CUDA线上训练营】共享内存实例2:矩阵相乘
【cuda入门系列】通过代码真实打印线程ID
定义一个长度为24的向量,分别用gridDim(6,1),blockDim(4,1)
以及gridDim(3,2),blockDim(2,2)
的thread去访问,确认thread与向量各元素之间的对应关系。
1.gridDim(6,1),blockDim(4,1)
#include <stdio.h>
#define BLOCK_SIZE 4__global__ void gpu_print(int *a,int m,int n)
{ int row = blockIdx.y * blockDim.y + threadIdx.y; int col = blockIdx.x * blockDim.x + threadIdx.x;printf("%d %d\n", gridDim.x,gridDim.y); printf("%d %d\n", blockDim.x,blockDim.y);printf("blockIdx.y:%d blockIdx.x:%d threadIdx.y:%d threadIdx.x:%d val:%d \n", blockIdx.y,blockIdx.x,threadIdx.y,threadIdx.x,a[row*n+col]);
}int main(int argc, char const *argv[])
{int m=4;int n=6;int *h_a;cudaMallocHost((void **) &h_a, sizeof(int)*m*n);for (int i = 0; i < m; ++i) {for (int j = 0; j < n; ++j) {h_a[i * n + j] = i * n + j;}}int *d_a;cudaMalloc((void **) &d_a, sizeof(int)*m*n);cudaMemcpy(d_a, h_a, sizeof(int)*m*n, cudaMemcpyHostToDevice);dim3 dimGrid(6,1);dim3 dimBlock(4,1);gpu_print<<<dimGrid, dimBlock>>>(d_a,m, n); // free memorycudaFree(d_a);cudaFreeHost(h_a);system("pause");return 0;
}
编译后打印结果如下:
6 1
6 1
6 1
6 1
6 1
6 1
6 1
6 1
6 1
6 1
6 1
6 1
6 1
6 1
6 1
6 1
6 1
6 1
6 1
6 1
6 1
6 1
6 1
6 1
4 1
4 1
4 1
4 1
4 1
4 1
4 1
4 1
4 1
4 1
4 1
4 1
4 1
4 1
4 1
4 1
4 1
4 1
4 1
4 1
4 1
4 1
4 1
4 1
blockIdx.y:0 blockIdx.x:1 threadIdx.y:0 threadIdx.x:0 val:4
blockIdx.y:0 blockIdx.x:1 threadIdx.y:0 threadIdx.x:1 val:5
blockIdx.y:0 blockIdx.x:1 threadIdx.y:0 threadIdx.x:2 val:6
blockIdx.y:0 blockIdx.x:1 threadIdx.y:0 threadIdx.x:3 val:7
blockIdx.y:0 blockIdx.x:3 threadIdx.y:0 threadIdx.x:0 val:12
blockIdx.y:0 blockIdx.x:3 threadIdx.y:0 threadIdx.x:1 val:13
blockIdx.y:0 blockIdx.x:3 threadIdx.y:0 threadIdx.x:2 val:14
blockIdx.y:0 blockIdx.x:3 threadIdx.y:0 threadIdx.x:3 val:15
blockIdx.y:0 blockIdx.x:2 threadIdx.y:0 threadIdx.x:0 val:8
blockIdx.y:0 blockIdx.x:2 threadIdx.y:0 threadIdx.x:1 val:9
blockIdx.y:0 blockIdx.x:2 threadIdx.y:0 threadIdx.x:2 val:10
blockIdx.y:0 blockIdx.x:2 threadIdx.y:0 threadIdx.x:3 val:11
blockIdx.y:0 blockIdx.x:4 threadIdx.y:0 threadIdx.x:0 val:16
blockIdx.y:0 blockIdx.x:4 threadIdx.y:0 threadIdx.x:1 val:17
blockIdx.y:0 blockIdx.x:4 threadIdx.y:0 threadIdx.x:2 val:18
blockIdx.y:0 blockIdx.x:4 threadIdx.y:0 threadIdx.x:3 val:19
blockIdx.y:0 blockIdx.x:0 threadIdx.y:0 threadIdx.x:0 val:0
blockIdx.y:0 blockIdx.x:0 threadIdx.y:0 threadIdx.x:1 val:1
blockIdx.y:0 blockIdx.x:0 threadIdx.y:0 threadIdx.x:2 val:2
blockIdx.y:0 blockIdx.x:0 threadIdx.y:0 threadIdx.x:3 val:3
blockIdx.y:0 blockIdx.x:5 threadIdx.y:0 threadIdx.x:0 val:20
blockIdx.y:0 blockIdx.x:5 threadIdx.y:0 threadIdx.x:1 val:21
blockIdx.y:0 blockIdx.x:5 threadIdx.y:0 threadIdx.x:2 val:22
blockIdx.y:0 blockIdx.x:5 threadIdx.y:0 threadIdx.x:3 val:23
从代码打印结果来看,一共有blcokDim4*gridDim 6=24
个线程在工作。
- gridDim.x,gridDim.y———grid中x方向、y方向各含有多少个block;
- blockDim.x,blockDim.y——一个block中x方向、y方向各含有多少个thread。
定义的gridDim.x,gridDim.y以及blockDim.x,blockDim.y通过打印结果,可知:
各block中的thread与矩阵中元素的指向关系如下图:
2.gridDim(3,2),blockDim(2,2)
将代码中的
dim3 dimGrid(6,1);
dim3 dimBlock(4,1);
修改为:
dim3 dimGrid(3,2);
dim3 dimBlock(2,2);
其他不变,同样进行编译,打印输出:
3 2
3 2
3 2
3 2
3 2
3 2
3 2
3 2
3 2
3 2
3 2
3 2
3 2
3 2
3 2
3 2
3 2
3 2
3 2
3 2
3 2
3 2
3 2
3 2
2 2
2 2
2 2
2 2
2 2
2 2
2 2
2 2
2 2
2 2
2 2
2 2
2 2
2 2
2 2
2 2
2 2
2 2
2 2
2 2
2 2
2 2
2 2
2 2
blockIdx.y:0 blockIdx.x:1 threadIdx.y:0 threadIdx.x:0 val:2
blockIdx.y:0 blockIdx.x:1 threadIdx.y:0 threadIdx.x:1 val:3
blockIdx.y:0 blockIdx.x:1 threadIdx.y:1 threadIdx.x:0 val:8
blockIdx.y:0 blockIdx.x:1 threadIdx.y:1 threadIdx.x:1 val:9
blockIdx.y:1 blockIdx.x:0 threadIdx.y:0 threadIdx.x:0 val:12
blockIdx.y:1 blockIdx.x:0 threadIdx.y:0 threadIdx.x:1 val:13
blockIdx.y:1 blockIdx.x:0 threadIdx.y:1 threadIdx.x:0 val:18
blockIdx.y:1 blockIdx.x:0 threadIdx.y:1 threadIdx.x:1 val:19
blockIdx.y:0 blockIdx.x:2 threadIdx.y:0 threadIdx.x:0 val:4
blockIdx.y:0 blockIdx.x:2 threadIdx.y:0 threadIdx.x:1 val:5
blockIdx.y:0 blockIdx.x:2 threadIdx.y:1 threadIdx.x:0 val:10
blockIdx.y:0 blockIdx.x:2 threadIdx.y:1 threadIdx.x:1 val:11
blockIdx.y:1 blockIdx.x:1 threadIdx.y:0 threadIdx.x:0 val:14
blockIdx.y:1 blockIdx.x:1 threadIdx.y:0 threadIdx.x:1 val:15
blockIdx.y:1 blockIdx.x:1 threadIdx.y:1 threadIdx.x:0 val:20
blockIdx.y:1 blockIdx.x:1 threadIdx.y:1 threadIdx.x:1 val:21
blockIdx.y:0 blockIdx.x:0 threadIdx.y:0 threadIdx.x:0 val:0
blockIdx.y:0 blockIdx.x:0 threadIdx.y:0 threadIdx.x:1 val:1
blockIdx.y:0 blockIdx.x:0 threadIdx.y:1 threadIdx.x:0 val:6
blockIdx.y:0 blockIdx.x:0 threadIdx.y:1 threadIdx.x:1 val:7
blockIdx.y:1 blockIdx.x:2 threadIdx.y:0 threadIdx.x:0 val:16
blockIdx.y:1 blockIdx.x:2 threadIdx.y:0 threadIdx.x:1 val:17
blockIdx.y:1 blockIdx.x:2 threadIdx.y:1 threadIdx.x:0 val:22
blockIdx.y:1 blockIdx.x:2 threadIdx.y:1 threadIdx.x:1 val:23
貌似是先切割y方向,比如此例子中,gridDim.yblockDim.y=22=4,所以将24个元素平分成了4份;然后再在x方向分割。最后组装,由各block中的thread访问。
相关文章:
![](https://img-blog.csdnimg.cn/26b570c3c0c24ef4b125de170dd20526.png)
【cuda入门系列】通过代码真实打印线程ID
【cuda入门系列】通过代码真实打印线程ID1.gridDim(6,1),blockDim(4,1)2.gridDim(3,2),blockDim(2,2)【cuda入门系列之参加CUDA线上训练营】在Jetson nano本地跑 hello cuda! 【cuda入门系列之参加CUDA线上训练营】一文认识cuda基本概念 【cuda入门系列之参加CUDA线…...
![](https://www.ngui.cc/images/no-images.jpg)
【Python语言基础】——Python NumPy 数据类型
Python语言基础——Python NumPy 数据类型 文章目录 Python语言基础——Python NumPy 数据类型一、Python NumPy 数据类型一、Python NumPy 数据类型 Python 中的数据类型 默认情况下,Python 拥有以下数据类型: strings - 用于表示文本数据,文本用引号引起来。例如 “ABCD”…...
![](https://img-blog.csdnimg.cn/c476d2effdde45e58a1a89cdd9128393.png)
数据工程师需要具备哪些技能?
成为数据工程师需要具备哪些技能?数据工程工作存在于各个行业,在银行业、医疗保健业、大型科技企业、初创企业和其他行业找到工作机会。许多职位描述要求数据工程师、拥有数学或工程学位,但如果有合适的经验学位往往没那么重要。 大数据开发…...
![](https://img-blog.csdnimg.cn/18fa4b84f2824e10af307e57bf29a9da.png)
Cosmos 基础 -- Ignite CLI(二)Module basics: Blog
一、快速入门 Ignite CLI version: v0.26.1 在本教程中,我们将使用一个模块创建一个区块链,该模块允许我们从区块链中写入和读取数据。这个模块将实现创建和阅读博客文章的功能,类似于博客应用程序。最终用户将能够提交新的博客文章&#x…...
![](https://img-blog.csdnimg.cn/85e5986e22f14056ad4ad28f8be28e8e.png)
Quartz 快速入门案例,看这一篇就够了
前言 Quartz 是基于 Java 实现的任务调度框架,对任务的创建、修改、删除、触发以及监控这些操作直接提供了 api,这意味着开发人员拥有最大的操作权,也带来了更高的灵活性。 什么是任务调度? 任务调度指在将来某个特定的时间、固…...
![](https://img-blog.csdnimg.cn/img_convert/1399d85f1acb78a2d20629f25c6f6194.png)
图解LeetCode——1233. 删除子文件夹(难道:中等)
一、题目 你是一位系统管理员,手里有一份文件夹列表 folder,你的任务是要删除该列表中的所有 子文件夹,并以 任意顺序 返回剩下的文件夹。 如果文件夹 folder[i] 位于另一个文件夹 folder[j] 下,那么 folder[i] 就是 folder[j] …...
![](https://img-blog.csdnimg.cn/74708d4f426940b285647fe21b9d7c80.png)
Doris--简单使用
一、数据表的创建与数据导入 1.1、创建表 1.1.1、单分区 CREATE TABLE table1 (siteid INT DEFAULT 10,citycode SMALLINT,username VARCHAR(32) DEFAULT ,pv BIGINT SUM DEFAULT 0 -- 聚合模型, value column 使用sum聚合 ) AGGREGATE KEY(siteid, citycode, …...
![](https://img-blog.csdnimg.cn/777c07e1422c4b98b3e37682085036ac.png)
使用GPT让你的RStudio如虎添翼
API的的调用目前来说不限制地区,但是OpenAI的API的申请限制了地区。运行的时候,如果出现了429,意味着你被限流了,需要等一会才行。 前提是,你需要注册一个OpenAI的账户,然后在https://openai.com/api/ 里申…...
![](https://www.ngui.cc/images/no-images.jpg)
Python 算法交易实验45 再探量化
说明 去年大部分精力都在构建底层架构和工具了,一直都没有时间搞量化。目前底层的数据库服务(ADB)和清洗(衍生 AETL) 工具已经好了,我想尽快的把量化启动起来。 内容 1 思想 作为交易来说,只有买卖。通过数据分析与模型,我们获得的增强点是决策。在合适的时候进行买卖的…...
![](https://www.ngui.cc/images/no-images.jpg)
Dubbo加载配置文件方式,加载流程,加载配置文件源码解析
配置方法 API配置 以Java编码的方式组织配置,Dubbo3配置API详解 :https://dubbo.apache.org/zh/docs3-v2/java-sdk/reference-manual/config/api/#bootstrap-api public static void main(String[] args) throws IOException {ServiceConfig<Greet…...
![](https://img-blog.csdnimg.cn/d7484d1892d941f09be5b0f69d8756fc.webp)
十大开源测试工具和框架,一定有你需要的
目录 前言 Katalon Studio Selenium Appium JMeter SOAP UI Robot Framework Watir JUnit Robotium Citrus 总结 前言 免费的开源框架和工具由于其开源特性,现在逐渐成为自动化测试的首选解决方案。区别在于,你是喜欢使用类库编写一个全新的…...
![](https://www.ngui.cc/images/no-images.jpg)
加密技术在android中的应用
1、算法基础 算法基础参照linux的全盘加密与文件系统加密在android中的应用 消息摘要算法 对称加密算法 非对称加密算法...
![](https://img-blog.csdnimg.cn/f3381d255f194ddbabed51eb9e34642e.png#pic_center)
备战蓝桥杯【一维前缀和】
🌹作者:云小逸 📝个人主页:云小逸的主页 📝Github:云小逸的Github 🤟motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前…...
![](https://img-blog.csdnimg.cn/img_convert/76dbb0fd2b8c3488d8b0499251bca483.png)
研报精选230214
目录 【行业230214艾瑞股份】中国增强现实(AR)行业研究报告【行业230214国信证券】信息安全深度剖析5:密评和信创双催化,密码产业开启从1到N【行业230214民生证券】磁性元器件深度报告:乘新能源之风,磁性元…...
![](https://img-blog.csdnimg.cn/50b8a6d9cd73410c8cf7a58ec07b4964.png)
【SSL/TLS】准备工作:证书格式
证书格式1. 格式说明1.1 文件编码格式1.2 文件后缀格式2. xca导出格式1. 格式说明 1.1 文件编码格式 1. PEM格式: 使用Base 64 ASCII进行编码的纯文本格式。后缀为“.pem”, ".cer", ".crt", ".key" 2. DER格式 二进制编码格式,文件…...
![](https://img-blog.csdnimg.cn/370ebc538e874e669ba0b2d8c724222c.png)
Linux常用命令---系统常用命令
Linux系统常用命令场景一: 查看当前系统内核版本相关信息场景二: sosreport 命令场景三: 如何定位并确定命令?场景四:查看当前系统运行负载怎场景五: 查看当前系统的内存可用情况场景六:查看网卡…...
![](https://www.ngui.cc/images/no-images.jpg)
C 结构体
C 数组允许定义可存储相同类型数据项的变量,结构是 C 编程中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。结构用于表示一条记录,假设您想要跟踪图书馆中书本的动态,您可能需要跟踪每本书的下列属性ÿ…...
![](https://img-blog.csdnimg.cn/4335d809b6d64b0a88a9f967e947b09d.png)
手语检测识别
论文:Real-Time Sign Language Detection using Human Pose Estimation Github:https://github.com/google-research/google-research/tree/master/sign_language_detection SLRTP 2020 手语识别任务包括手语检测(Sign language detection&a…...
![](https://img-blog.csdnimg.cn/a1d4b71862664df2ac4aed5308b6b3a4.png)
android fwk模块之Sensor架构
本文基于Android 12源码整理,包含如下内容: 通信架构应用层实现使用方式SensorManager抽象接口具体实现fwk层的实现native中的SensorManager的初始化流程native中的消息队列初始化与数据读取sensorservice实现HAL层的实现通信架构 应用层实现 涉及代码&…...
![](https://img-blog.csdnimg.cn/aa61578497414de2a438c851f63f2501.png)
安装less-loader5出现webpack版本不兼容
今天遇到一个问题: 安装less-loader5之后其它包提示peerDependencies WARNING,意思是包版本不兼容。 【难题】 虽然NPM已经很自动化了,但依赖问题真的是一个难题,无法自动解决,需要人工干预调整。 【解决办法】 去查…...
![](https://www.ngui.cc/images/no-images.jpg)
Java 网络编程
1.UDP和TCPUDP和TCP是传输层协议中最核心的两种协议他们的特点分别是UDP: 无连接,不可靠传输,面向数据报,全双工TCP: 有连接,是可靠传输,面向字节流,全双工有无连接有连接:就好比两个人打电话,打电话的一方发出连接请求,被打电话的一方选择确认连接,此时双方才能进行通话无连接…...
![](https://www.ngui.cc/images/no-images.jpg)
BEV学习记录
近期可能要经常性的开展BEV工作,打算把自己觉着不错的网站拿出来记录一下。 首先贴上来我还没有细读的一篇觉着不错的文章。 自动驾驶感知新范式——BEV感知经典论文总结和对比(上)_苹果姐的博客-CSDN博客_bev视角 开山之作--LSS ECCV 202…...
![](https://www.ngui.cc/images/no-images.jpg)
Webrtc Native C++切换音频输入源
modules/audio_device/audio_device_impl.cc #include “api/audio_options.h” #include “modules/audio_device/include/factory.h” // 创建一个 AudioDeviceModule 对象 auto audio_device_module = webrtc::AudioDeviceModule::Create( webrtc::AudioDeviceModule::kPl…...
![](https://img-blog.csdnimg.cn/ea48c1dc15804d2a965dcd5c0b0969c2.png)
裸辞5个月,面试了37家公司,终于找到理想工作了
上半年裁员,下半年裸辞,有不少人高呼裸辞后躺平真的好快乐!但也有很多人,裸辞后的生活五味杂陈。 面试37次终于找到心仪工作 因为工作压力大、领导PUA等各种原因,今年2月下旬我从一家互联网小厂裸辞,没想…...
![](https://www.ngui.cc/images/no-images.jpg)
Mybatis-plus@DS实现动态切换数据源应用
目录1 DS实现动态切换数据源原理2 不可在事务中切换数据库分析解决3 原因解析1 DS实现动态切换数据源原理 首先mybatis-plus使用com.baomidou.dynamic.datasource.AbstractRoutingDataSource继承 AbstractDataSource接管数据源;具体实现类为com.baomidou.dynamic.d…...
![](https://img-blog.csdnimg.cn/img_convert/761e86e81055470f8b1cdedeafd50bb6.png)
SpringBoot的创建和使用
SpringBoot是什么?SpringBoot诞生的目的就是为了简化Spring开发,而相对于Spring,SpringBoot算是一个很大的升级,就如同汽车手动挡变成了自动挡。Spring:SpringBoot:SpringBoot的优点SpringBoot让Spring开发…...
![](https://www.ngui.cc/images/no-images.jpg)
居家电话客服宝典
客服分类从销售的流程来分,客服分为售前和售后。售前一般都带有销售性质,工资主要靠提成,售后一般是解答问题,工资主要看服务质量和差评量。从工作模式来分,客服分为在线客服和热线客服。在线客服以打字聊天为主&#…...
![](https://www.ngui.cc/images/no-images.jpg)
开发方案设计
1、开发流程产品需求设计-->需求粗评-->做设计方案-->粗估时-->需求细评-->排期-->开发-->提测、修bug-->code review-->上线设计方案主要是写实现思路、模块划分code review:完善代码,发现未考虑到的边界问题2、具体实现方案…...
![](https://www.ngui.cc/images/no-images.jpg)
文件路径模块pathlib
文件路径模块pathlib 文章目录文件路径模块pathlib1.概述2.创建路径2.1.创建非windos平台路径2.2.动态拼接路径joinpath2.3.替换文件名称 with_name2.4.创建固定目录2.5.创建文件夹和文件1.创建多级目录mkdir2.创建空文件3.路径解析3.1.根据路径分隔符解析路径parts3.2.获取父级…...
![](https://img-blog.csdnimg.cn/00f49e81117040918d74664fe046f2cf.png)
spring cloud篇——什么是服务熔断?服务降级?服务限流?spring cloud有什么优势?
文章目录一、spring cloud 有什么优势二、服务熔断2.1、雪崩效应2.2、DubboHystrixCommand三、服务降级四、服务限流4.1、限流算法4.2、应用级限流4.3、池化技术4.4、分布式限流4.5、基于Redis 功能的实现限流4.6、基于令牌桶算法的实现4.6.1 、Java实现一、spring cloud 有什么…...
![](https://img-blog.csdnimg.cn/img_convert/b13b177469f5f547c8ebe1e6e6263dfe.png)
个人建网站/网络推广方法怎么做
本文是成都理工大学考研专业课考点分析系列文章之地图学与地理信息系统注:报考成理测绘工程、测绘科学与技术选考地理信息系统概论专业课的本文也适合,因为这两个专业和地图学与地理信息系统专业课试卷和用书一样。1、地理信息系统概论 专业课该怎样复习…...
![](https://img-blog.csdnimg.cn/img_convert/560e02c2dbf16fbcdbe8565e92d3a767.png)
网站底部关键词内链/网络推广营销方式
如果问现代人一个问题,你身边最不能缺少的一样物品是什么,估计很多人会回答手机吧!手机作为人类最先进便捷的通信工具,改变了我们工作、学习、生活,几乎可以完全代替电脑、电视等,其地位日益提高。随着需求…...
![](https://img-blog.csdnimg.cn/20200923220936761.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RheWxvcmFtYW5kYQ==,size_16,color_FFFFFF,t_70)
网站建设的难点/网站优化推广公司
JAVA中锁是 在并发编程中,经常会遇到多个线程访问同一个共享变量,当同时对共享变量进行读写操作时,就会产生数据不一致的情况。 为了解决这个问题 JDK 1.5 之前,使用 synchronized 关键字,拿到 Java 对象的锁&#x…...
![](https://img-blog.csdnimg.cn/20181216121229960.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Nvbmd6ZWhhbw==,size_16,color_FFFFFF,t_70)
桂林网站建设官网/搜索引擎优化的方法有哪些
Kettle8.1版本,准备好正确的xml和xsl文件,再配置好如下流程,转换报错: net.sf.saxon.trans.XPathException:org.xml.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog. 该问题是Kettle8.1的…...
![](/images/no-images.jpg)
天堂网长尾关键词挖掘网站/全球最大的中文搜索引擎
1、安装 Yum install -y freeradius freeradius-mysql freeradius-utils 2、配置 1)修改 clients.conf # vi /usr/local/etc/raddb/clients.conf 在最后增加如下几行: client 172.18.5.88 { 增加认证体,填写OMA的ip地址 s…...
![](https://img-blog.csdnimg.cn/8a666fc7785a4dabbd9458845f51b99b.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBARmlybemZiA==,size_20,color_FFFFFF,t_70,g_se,x_16)
wordpress更改固定连接后404/aso关键词排名优化是什么
什么是Hibernate Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得…...