- CUDA——内存
UCAS_HMM
CUDAc++c语言性能优化
内存形式静态全局内存#include#include__device__floatdevData;//-GPU静态变量(所有设备代码均可见,主机代码不允许直接访问)__global__voidcheckGlobalVariable(){printf("threadIdx.x=%ddevData=%0.2f\n",threadIdx.x,devData);devData+=2.0f;}intmain
- 高质量 Git 仓库汇总(持续更新,方便查看)
Nice_cool.
学习
Leetcodehttps://github.com/kamyu104/LeetCode-SolutionsCmakehttps://github.com/viva64/pvs-studio-cmake-examples3D目标检测Awesome-3D-Object-DetectionAwesome-3D-Object-Detection-for-Autonomous-DrivingCudaCod
- NVIDIA相关工具
tang-0203
NVIDIAprofile工具
模型profile相关nvvp,nvprof是cudatoolkit集成的工具,用于生成GPUtimeline的工具。nvprof是命令行工具,我们的模型常常是运行在远端的服务器上,我们需要把输出的监测数据拷贝至本地查看,这个时候需要用到nvvp进行可视化分析。nsight是NVIDIA最新的用于监测kerneltimeline的工具。nvprofnvvpnsight
- 深度学习踩坑记录(持续更新)
芒果不茫QAQ
深度学习人工智能
目录4060显卡cuda版本异常transformers初始化TrainingArguments时output_dir指定问题4060显卡cuda版本异常环境:torch1.11.0+cu113程序报错RuntimeError:nvrtc:error:invalidvaluefor--gpu-architecture(-arch)可能原因与解决办法4060显卡是sm_89架构,支持11.7以上cu
- RuntimeError: (PreconditionNotMet) The third-party dynamic library (cublas64_102.dll;cublas64_10.dll
xxxggany
pippaddlepaddle
校验paddle报错:RuntimeError:(PreconditionNotMet)Thethird-partydynamiclibrary(cublas64_102.dll;cublas64_10.dll)thatPaddledependsonisnotconfiguredcorrectly.C:\ProgramFiles\NVIDIAGPUComputingToolkit\CUDA\v10
- 大模型加速与性能对比
__如风__
人工智能语言模型
大模型加速与性能对比阿里通义千问flash-attention加速正常运行通义千问会提示安装flash-attention以获得更快的推理速度,缺少这个包并不影响模型运行。事实证明安装之后对于推理速度的提升也很小(5%),网上说对于微调训练的速度提升比较大,因为是在内网环境下,安装还费了一番周折。本人环境torch2.0.1+cu118cuda11.8nvidia-driver535.98gcc9
- Ubuntu20.04安装并配置vscode
double_c之
科研vscodeubuntu
Ubuntu20.04安装并配置vscodevscode安装miniconda安装创建虚拟python3.8环境pytorch和匹配的cuda安装vscode安装VSCode可以通过Snapcraft商店或者微软源仓库中的一个deb软件包来安装。我们这里选用安装VSCodesnap版,打开你的终端(Ctrl+Alt+T)并且运行下面的命令:sudosnapinstall--classiccode运
- ChatGPT引领的AI面试攻略系列:cuda和tensorRT
梦想的理由
深度学习c++chatgpt人工智能面试
系列文章目录cuda和tensorRT(本文)AI全栈工程师文章目录系列文章目录一、前言二、面试题1.CUDA编程基础2.CUDA编程进阶3.性能优化4.TensorRT基础5.TensorRT进阶6.实际应用与案例分析7.编程与代码实践8.高级话题与趋势一、前言随着人工智能技术的飞速发展,该领域的就业机会也随之增多。无论是刚刚踏入这一领域的新手,还是经验丰富的专业人士,都可能面临着各种面试挑战。
- Made In Heaven,LLM要加速了
DisonTangor
人工智能transformer
借鉴了荒木老师笔下的普奇神父的台词玩LLM的多数用的是Huggingface框架,而它本身提供的是accelerate库来提升模型的训练推理速度。这些都离不开Nvidia的Cuda计算,而目前适配这一驱动的只有Windows和Linux。于是我就尝试在这两个系统上进行加速实验,尝试HuggingfaceDoc中推荐的FlashAttention2以及vLLM的PageAttention。原理参考L
- Ubuntu 22.04.4 LTS 安装cuda和cudnn
鹤蓝桉
ubuntulinux
Ubuntu22.04.4LTS安装cuda和cudnn最简单最直接最快速的方法直接在命令行输入下面两行代码安装cudasudoaptinstallnvidia-cuda-toolkit安装cudnnsudoaptinstallnvidia-cudnn我实测安装的版本是cuda11.5,cudnn8.2.4
- 解决conda环境下import TensorFlow失败的问题
绿竹巷人
功能安装condatensorflow人工智能
问题描述安装了anaconda的电脑,新建了一个名叫deeplearning的环境,在该环境下已经成功安装了tensorflow。于是在终端打开python并执行代码importtensorflowastfprint(1)除了提示2024-02-2721:50:00.801427:Iexternal/local_tsl/tsl/cuda/cudart_stub.cc:31]Couldnotfind
- 图像数据增强
菜鸟瞎编
一、做随机亮度、对比度、饱和度修改,使用tensorflowAPI核心部分是aug_op函数,这可是菜鸟的心血啊!#coding:utf-8importtensorflowastfimportcv2importrandomimportsysimportosimportshutil#os.environ["CUDA_VISIBLE_DEVICES"]=""defrandom_normal(img,m
- 基于Diffusion Model的数据增强方法应用——毕业设计 其三
大鸟仙童
课程设计计算机视觉深度学习
文章目录题目简介前言StableDiffusionLatentdiffusion自动编码器(VAE)U-NetText-EncoderStableDiffusion的推理过程从零开始配置实验环境IDEAnacondaCUDA和CuDNNCuDNNStableDiffusion的本地部署运行测试总结题目简介笔者个人的毕业设计课题如下:简介:使用预训练的DiffusionModel图像生成模型生成图像
- 渲染对硬件的要求有哪些?渲染100邀请码1a12
千野竹之卫
前端javascript开发语言图形渲染3dsmax
效果图需要渲染,而渲染的好坏不仅与场景有关,还受到硬件影响,这次我们就看下高质量的渲染对硬件有哪些要求吧。1、CPUCPU是渲染的核心部件,它负责进行大量运算和处理。一般来说CPU的核心数、线程数、主频和缓存越高,渲染效率就越高。如果用的是传统CPU渲染软件,那么一个强大的多核心CPU就非常重要。如果用的软件支持Nvidia的CUDA并行运算,那对CPU的性能要求就降低了。2、GPUGPU或图形处
- MIT-BEVFusion系列九--CUDA-BEVFusion部署1 debug代码
端木的AI探索屋
CUDACUDA-BEVFusion模型算法部署自动驾驶bevnvidia
目录开启Debug常用数据在一起看CUDA-BEVFusion的代码前,我们把后面会常见到的变量以及他的含义写在前方,看代码的时候如果看到同名的变量,可以过来看一看数据的形状和含义。另外这里介绍了开启debug的方法。总而言之,本篇文章是一个类似前言的文章,方便后续大家调试代码,理解代码。开启Debug修改CMakeLists.txt,注释26行,打开27行注释。修改前,默认设置修改后重新运行ba
- MIT-BEVFusion系列九--CUDA-BEVFusion部署2 create_core之参数设置
端木的AI探索屋
自动驾驶cudacuda-bevfusionnvidia部署模型算法部署bev
目录加载命令行参数main函数中的create_core图像归一化参数体素化参数稀疏卷积网络参数真实世界几何空间参数(雷达坐标系下体素网格的参数)解码后边界框的参数构建bevfusion::Core存储推理时需要的参数本章开始,我们将一起看CUDA-BEVFusion的代码流程,看看NVIDIA部署方案的思路方法。加载命令行参数将代码debug起来,launch.json中配置好了传入的参数。C+
- CUDA和cudnn安装教程
悲伤的拾荒
Pytorchtensorflowcuda深度学习pythontensorflowpytorch
查看本机的CUDA驱动适配版本检查是否有合适的GPU,若有安装Cuda与CuDNN在桌面上右击如果能找到NVIDA控制面板,则说明该电脑有GPU。控制面板如下,并通过查看系统信息获取支持的Cuda版本点击帮助->点击系统信息弹出下面的对话框,在驱动程序版本那一栏就能看到该计算机使用的驱动版本。查询电脑的显卡安装的版本:https://docs.nvidia.com/cuda/cuda-toolki
- CUDA与CUDNN 关系
XF鸭
小知识caffe深度学习人工智能
CUDA与cuDNN1、什么是CUDACUDA(ComputeUnifiedDeviceArchitecture),是显卡厂商NVIDIA推出的运算平台。CUDA是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。2、什么是CUDNNNVIDIAcuDNN是用于深度神经网络的GPU加速库。它强调性能、易用性和低内存开销。NVIDIAcuDNN可以集成到更高级别的机器学
- 无需注册登录NVIDIA官网下载CUDNN
justablackacat
pytorchpytorch深度学习
由于注册一直不成功,参考了这篇博客但是参考博客的方法有一点问题,如果复制的网址是展开之前的,可能下载到的还是cudnn-archive,所以对这个方法做出一点修改。打开cuDNN下载网址https://developer.nvidia.com/rdp/cudnn-archive点击cuDNNArchive|NVIDIADeveloper进入下图界面:找到需要的版本,点击展开下一层比如我想找CUDA
- 在使用cuda12 报错Library cublas64_11.dll is not found
atlasroben
python深度学习人工智能
因为nvidia的升级基本上都是是CUDA12了,在我发表文章的时候如果去官网下载CUDA包默认安装CUDA版本就是12了.今天在调用fast-whisper的时候使用GPU报错Librarycublas64_11.dllisnotfoundmodel=faster_whisper.WhisperModel(model_size,device="cuda",compute_type="float1
- 【踩坑系列记录 】Anaconda环境将torch由cpu换成gpu
RoyZz_
python深度学习pytorch
概要很早前做过深度学习,配环境之类的坑由于没记录都记不清了。这段时间开始做深度学习的项目,于是用Anaconda给项目创建了一个环境,其他的环境配置很顺利,就是到了安装pytorch时,我用pytorch官网的代码一直下载的是cpu版本。condainstallpytorch==1.12.1torchvision==0.13.1torchaudio==0.12.1cudatoolkit=11.3-
- GPU服务器安装显卡驱动、CUDA和cuDNN
嘻哈记
服务器人工智能深度学习
GPU服务器安装cuda和cudnn1.服务器驱动安装2.cuda安装3.cudNN安装4.安装docker环境5.安装nvidia-docker25.1ubuntu系统安装5.2centos系统安装6.测试docker容调用GPU服务1.服务器驱动安装显卡驱动下载地址https://www.nvidia.cn/Download/index.aspx?lang=cn显卡驱动安装完成后可以通过命令:
- LSTM 08:超详细LSTM调参指南
datamonday
时间序列分析(TimeSeries)LSTMkeras调参
本文代码运行环境:cudatoolkit=10.1.243cudnn=7.6.5tensorflow-gpu=2.1.0keras-gpu=2.3.1相关文章LSTM01:理解LSTM网络及训练方法LSTM02:如何为LSTM准备数据LSTM03:如何使用Keras编写LSTMLSTM04:4种序列预测模型及Keras实现LSTM05:Keras实现多层LSTM进行序列预测LSTM06:Keras
- 2018-11-23
啊啊啊啊啊1231
attempttosolvetheproblemwhichoccurredfrequentlyduringthedebuggingexperiencerecently."expectedtofindtorch.FloatTensorbutfoundtorch.cuda.FloatTensorinstead"So!!!hereanamazingwebsitehasbeenfoundasthesolu
- Pytorch backward报错2次访问计算图需要 retain_graph=True 的一种情况
培之
pytorch人工智能python
错误代码错误的原因在于y1=0.5*x*2-1.2*xy2=x**3没有放到循环里面,没有随着x的优化而相应变化。importtorchimportnumpyasnpimporttorch.optimasoptimtorch.autograd.set_detect_anomaly(True)device=torch.device('cuda'iftorch.cuda.is_available()e
- 将pytorch中变量的梯度为 nan 的替换成 1 还是 0?
培之
pytorch人工智能python
替换成0,则变量保持不动0:xtensor([1.0000,2.0000,3.0000,4.5000],device='cuda:0',requires_grad=True)0:xtensor([1.0000,2.0000,3.0000,4.5000],device='cuda:0',requires_grad=True)替换成1,变量会变化0:xtensor([1.0000,2.0000,3.0
- C/C++/Cuda不依赖任何三方库求解3x3矩阵的特征值和特征向量
OTZ_2333
c++特征值特征向量cuda
https://www.mpi-hd.mpg.de/personalhomes/globes/3x3/适用于C/C++下载dsyevv3-C-1.1.tar.gz采用LGPL协议,不适合商业开发https://github.com/PointCloudLibrary/pcl/blob/master/cuda/common/include/pcl/cuda/common/eigen.h适用于Cuda
- GPU,CUDA,cuDNN的理解
达微
我们知道做深度学习离不开GPU,不过一直以来对GPU和CPU的差别,CUDA以及cuDNN都不是很了解,所以找了些资料整理下,希望不仅可以帮助自己理解,也能够帮助到其他人理解。先来讲讲CPU和GPU的关系和差别吧。截图来自资料1(CUDA的官方文档):从上图可以看出GPU(图像处理器,GraphicsProcessingUnit)和CPU(中央处理器,CentralProcessingUnit)在
- AI芯片技术架构有哪些?FPGA芯片定义及结构分析
Hack电子
人工智能架构fpga开发
点击蓝字关注我们关注、星标公众号,精彩内容每日送达来源:网络素材ai芯片技术架构有哪些?AI芯片的技术架构可以根据其设计方式和特点进行分类。以下是几种常见的AI芯片技术架构:GPU(图形处理器)架构:GPU最初是用于图形渲染和游戏处理的,但由于其高度并行的特性,逐渐被应用于深度学习计算。GPU架构采用多个计算单元(CUDA核心)进行并行计算,能够高效地执行浮点运算和矩阵计算。NVIDIA的Tens
- 英伟达(NVIDIA)和CUDA
小米人er
我的博客英伟达
英伟达(NVIDIA)是一家知名的图形处理器(GPU)制造公司,而CUDA则是NVIDIA推出的一种并行计算架构和编程模型。CUDA全称为ComputeUnifiedDeviceArchitecture,即计算统一设备架构,它允许开发者使用C/C++、Fortran等编程语言在NVIDIA的GPU上进行通用计算。CUDA是NVIDIA从硬件进驻软件的重要工具,起到了连接的作用。通过CUDA,开发者
- PHP,安卓,UI,java,linux视频教程合集
cocos2d-x小菜
javaUIPHPandroidlinux
╔-----------------------------------╗┆
- 各表中的列名必须唯一。在表 'dbo.XXX' 中多次指定了列名 'XXX'。
bozch
.net.net mvc
在.net mvc5中,在执行某一操作的时候,出现了如下错误:
各表中的列名必须唯一。在表 'dbo.XXX' 中多次指定了列名 'XXX'。
经查询当前的操作与错误内容无关,经过对错误信息的排查发现,事故出现在数据库迁移上。
回想过去: 在迁移之前已经对数据库进行了添加字段操作,再次进行迁移插入XXX字段的时候,就会提示如上错误。
&
- Java 对象大小的计算
e200702084
java
Java对象的大小
如何计算一个对象的大小呢?
 
- Mybatis Spring
171815164
mybatis
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
CustomerService userService = (CustomerService) ac.getBean("customerService");
Customer cust
- JVM 不稳定参数
g21121
jvm
-XX 参数被称为不稳定参数,之所以这么叫是因为此类参数的设置很容易引起JVM 性能上的差异,使JVM 存在极大的不稳定性。当然这是在非合理设置的前提下,如果此类参数设置合理讲大大提高JVM 的性能及稳定性。 可以说“不稳定参数”
- 用户自动登录网站
永夜-极光
用户
1.目标:实现用户登录后,再次登录就自动登录,无需用户名和密码
2.思路:将用户的信息保存为cookie
每次用户访问网站,通过filter拦截所有请求,在filter中读取所有的cookie,如果找到了保存登录信息的cookie,那么在cookie中读取登录信息,然后直接
- centos7 安装后失去win7的引导记录
程序员是怎么炼成的
操作系统
1.使用root身份(必须)打开 /boot/grub2/grub.cfg 2.找到 ### BEGIN /etc/grub.d/30_os-prober ### 在后面添加 menuentry "Windows 7 (loader) (on /dev/sda1)" { 
- Oracle 10g 官方中文安装帮助文档以及Oracle官方中文教程文档下载
aijuans
oracle
Oracle 10g 官方中文安装帮助文档下载:http://download.csdn.net/tag/Oracle%E4%B8%AD%E6%96%87API%EF%BC%8COracle%E4%B8%AD%E6%96%87%E6%96%87%E6%A1%A3%EF%BC%8Coracle%E5%AD%A6%E4%B9%A0%E6%96%87%E6%A1%A3 Oracle 10g 官方中文教程
- JavaEE开源快速开发平台G4Studio_V3.2发布了
無為子
AOPoraclemysqljavaeeG4Studio
我非常高兴地宣布,今天我们最新的JavaEE开源快速开发平台G4Studio_V3.2版本已经正式发布。大家可以通过如下地址下载。
访问G4Studio网站
http://www.g4it.org
G4Studio_V3.2版本变更日志
功能新增
(1).新增了系统右下角滑出提示窗口功能。
(2).新增了文件资源的Zip压缩和解压缩
- Oracle常用的单行函数应用技巧总结
百合不是茶
日期函数转换函数(核心)数字函数通用函数(核心)字符函数
单行函数; 字符函数,数字函数,日期函数,转换函数(核心),通用函数(核心)
一:字符函数:
.UPPER(字符串) 将字符串转为大写
.LOWER (字符串) 将字符串转为小写
.INITCAP(字符串) 将首字母大写
.LENGTH (字符串) 字符串的长度
.REPLACE(字符串,'A','_') 将字符串字符A转换成_
- Mockito异常测试实例
bijian1013
java单元测试mockito
Mockito异常测试实例:
package com.bijian.study;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import org.junit.Assert;
import org.junit.Test;
import org.mockito.
- GA与量子恒道统计
Bill_chen
JavaScript浏览器百度Google防火墙
前一阵子,统计**网址时,Google Analytics(GA) 和量子恒道统计(也称量子统计),数据有较大的偏差,仔细找相关资料研究了下,总结如下:
为何GA和量子网站统计(量子统计前身为雅虎统计)结果不同?
首先:没有一种网站统计工具能保证百分之百的准确出现该问题可能有以下几个原因:(1)不同的统计分析系统的算法机制不同;(2)统计代码放置的位置和前后
- 【Linux命令三】Top命令
bit1129
linux命令
Linux的Top命令类似于Windows的任务管理器,可以查看当前系统的运行情况,包括CPU、内存的使用情况等。如下是一个Top命令的执行结果:
top - 21:22:04 up 1 day, 23:49, 1 user, load average: 1.10, 1.66, 1.99
Tasks: 202 total, 4 running, 198 sl
- spring四种依赖注入方式
白糖_
spring
平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。依赖注入的另一种说法是“控制反转”,通俗的理解是:平常我们new一个实例,这个实例的控制权是我
- angular.injector
boyitech
AngularJSAngularJS API
angular.injector
描述: 创建一个injector对象, 调用injector对象的方法可以获得angular的service, 或者用来做依赖注入. 使用方法: angular.injector(modules, [strictDi]) 参数详解: Param Type Details mod
- java-同步访问一个数组Integer[10],生产者不断地往数组放入整数1000,数组满时等待;消费者不断地将数组里面的数置零,数组空时等待
bylijinnan
Integer
public class PC {
/**
* 题目:生产者-消费者。
* 同步访问一个数组Integer[10],生产者不断地往数组放入整数1000,数组满时等待;消费者不断地将数组里面的数置零,数组空时等待。
*/
private static final Integer[] val=new Integer[10];
private static
- 使用Struts2.2.1配置
Chen.H
apachespringWebxmlstruts
Struts2.2.1 需要如下 jar包: commons-fileupload-1.2.1.jar commons-io-1.3.2.jar commons-logging-1.0.4.jar freemarker-2.3.16.jar javassist-3.7.ga.jar ognl-3.0.jar spring.jar
struts2-core-2.2.1.jar struts2-sp
- [职业与教育]青春之歌
comsci
教育
每个人都有自己的青春之歌............但是我要说的却不是青春...
大家如果在自己的职业生涯没有给自己以后创业留一点点机会,仅仅凭学历和人脉关系,是难以在竞争激烈的市场中生存下去的....
&nbs
- oracle连接(join)中使用using关键字
daizj
JOINoraclesqlusing
在oracle连接(join)中使用using关键字
34. View the Exhibit and examine the structure of the ORDERS and ORDER_ITEMS tables.
Evaluate the following SQL statement:
SELECT oi.order_id, product_id, order_date
FRO
- NIO示例
daysinsun
nio
NIO服务端代码:
public class NIOServer {
private Selector selector;
public void startServer(int port) throws IOException {
ServerSocketChannel serverChannel = ServerSocketChannel.open(
- C语言学习homework1
dcj3sjt126com
chomework
0、 课堂练习做完
1、使用sizeof计算出你所知道的所有的类型占用的空间。
int x;
sizeof(x);
sizeof(int);
# include <stdio.h>
int main(void)
{
int x1;
char x2;
double x3;
float x4;
printf(&quo
- select in order by , mysql排序
dcj3sjt126com
mysql
If i select like this:
SELECT id FROM users WHERE id IN(3,4,8,1);
This by default will select users in this order
1,3,4,8,
I would like to select them in the same order that i put IN() values so:
- 页面校验-新建项目
fanxiaolong
页面校验
$(document).ready(
function() {
var flag = true;
$('#changeform').submit(function() {
var projectScValNull = true;
var s ="";
var parent_id = $("#parent_id").v
- Ehcache(02)——ehcache.xml简介
234390216
ehcacheehcache.xml简介
ehcache.xml简介
ehcache.xml文件是用来定义Ehcache的配置信息的,更准确的来说它是定义CacheManager的配置信息的。根据之前我们在《Ehcache简介》一文中对CacheManager的介绍我们知道一切Ehcache的应用都是从CacheManager开始的。在不指定配置信
- junit 4.11中三个新功能
jackyrong
java
junit 4.11中两个新增的功能,首先是注解中可以参数化,比如
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runn
- 国外程序员爱用苹果Mac电脑的10大理由
php教程分享
windowsPHPunixMicrosoftperl
Mac 在国外很受欢迎,尤其是在 设计/web开发/IT 人员圈子里。普通用户喜欢 Mac 可以理解,毕竟 Mac 设计美观,简单好用,没有病毒。那么为什么专业人士也对 Mac 情有独钟呢?从个人使用经验来看我想有下面几个原因:
1、Mac OS X 是基于 Unix 的
这一点太重要了,尤其是对开发人员,至少对于我来说很重要,这意味着Unix 下一堆好用的工具都可以随手捡到。如果你是个 wi
- 位运算、异或的实际应用
wenjinglian
位运算
一. 位操作基础,用一张表描述位操作符的应用规则并详细解释。
二. 常用位操作小技巧,有判断奇偶、交换两数、变换符号、求绝对值。
三. 位操作与空间压缩,针对筛素数进行空间压缩。
&n
- weblogic部署项目出现的一些问题(持续补充中……)
Everyday都不同
weblogic部署失败
好吧,weblogic的问题确实……
问题一:
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: URL [zip:E:/weblogic/user_projects/domains/base_domain/serve
- tomcat7性能调优(01)
toknowme
tomcat7
Tomcat优化: 1、最大连接数最大线程等设置
<Connector port="8082" protocol="HTTP/1.1"
useBodyEncodingForURI="t
- PO VO DAO DTO BO TO概念与区别
xp9802
javaDAO设计模式bean领域模型
O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写。通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据。在O/R Mapping的世界里,有两个基本的也是重要的东东需要了解,即VO,PO。
它们的关系应该是相互独立的,一个VO可以只是PO的部分,也可以是多个PO构成,同样也可以等同于一个PO(指的是他们的属性)。这样,PO独立出来,数据持