- 游戏找不到x3daudio1_7.dll无法继续执行的解决方法,快速解决dll问题
2301_77698200
dll修复教程dll修复游戏windows
x3daudio1_7.dll是一个音频处理库,主要用于实现三维音频渲染。它包含了微软的XAudio2音频API,该API被许多游戏和应用程序用于实现高质量的音频效果。这个库文件主要处理音频的空间定位、响度均衡以及多通道音频输出等功能。在游戏中,它可以为玩家提供更加沉浸式的音频体验,帮助玩家更好地感知游戏场景中的声音来源。当我们在使用一些需要DirectX支持的软件时,如果系统中缺少了x3daud
- 基于Wine 4.0 的 CrossOver 18.5 发布啦
Listen2You
Linux资讯
导读CodeWeavers是Wine项目的主要赞助商/贡献者,今天宣布发布他们的商业CrossOver18.5软件,以便在Linux和macOS上更轻松地运行Windows游戏和应用程序。CrossOver18.5已重新使用最近稳定版的Wine4.0。在上游的Wine4.0之上,他们已经推出了更新的FAudio补丁,以实现更好的XAudio2实现。CrossOver18.5还附带修复程序以解决Mi
- c# 通过WinAPI播放PCM声音
在Windows平台上,播放PCM声音使用的API通常有如下两种。waveOutandwaveIn:传统的音频MMEAPI,也是使用的最多的xAudio2:C++/COMAPI,主要针对游戏开发,是DirectSound的基础在WindowsVista以后,推出了更加强大的WASAPI,并用WASAPI封装了MME以及DirectSoundAPI。对于前面的两个API,在.net平台下有如下封装:
- XAudio2学习二之获取输出设备数
GreenArrowMan
XAudio2DirectXXAudio2
XAudio2学习二之获取输出设备数本博客会同步迁移到微信公众号:程序猿小哥发送消息:“XAudio2”获取本篇主要讲如何获取输出设备数:所谓输出设备,就是播放设备,比如扬声器。一.VS怎么引用XAudio2静态库和头文件。头文件:Project右键->properties->c/c++->additionalincludedirectories:./SDK\DirectX2010\Include
- XAudio2 (一)
冷崖
开启Directx9.0之旅
最近在写游戏菜单,想做一个可以手动设置游戏场景音乐,音效,及音量的菜单,看许多书上用的都是DXMusic,DirectSound,可自从DirectX9.0c之后,DXMusic和DirectSound就不再存在了,反而被XAudio给取代了。在网上查找资料,书上查找相关信息,也是甚至更少,迫不得已只能去官网和官方给的样例慢慢琢磨。XAudio2官方介绍:https://msdn.microsof
- 【XAudio2】5.如何初始化 XAudio2
略游
XAudio2
5.如何初始化XAudio2这个例子创建一个XAudio2引擎实例,并创建一个MasteringVoice。初始化XAudio21.创建一个XAudio2引擎实例通过XAudio2Create函数。#ifndef_XBOXCoInitializeEx(NULL,COINIT_MULTITHREADED);#endifIXAudio2*pXAudio2=NULL;HRESULThr;if(FAILE
- 【XAduio2】6.如何枚举音频设备
略游
XAudio2
这个例子向您展示了如何初始化XAudio2当可能存在多个音频设备。GetDeviceCount和GetDeviceDetails方法用于检查音频设备上可用的属性系统。这个过程允许选择最匹配的设备游戏的需求。找到一个可以接受的设备后,设备号可以传递到CreateMasteringVoice方法。注意如果只有一个音频设备例如Xbox360,或者默认的音频设备,简单地使用的默认值0给IXAudio2::
- XAudio2学习之MonitorAPO
GreenArrowMan
XAudio2DirectXXAudio2
MonitorAPO通过一种锁无关由应用程序初始化的通讯通道的方式来将音频数据传递给主线程。将MonitorAPO添加到上一篇的源码中,给一个sourcevoice添加了两个特效。主要是使用管道,在APO中的DoProcess函数中将数据写入,然后在主线程中就可以读出来了。#include"DXUTLockFreePipe.h"typedefDXUTLockFreePipeMonitorAPOPi
- Windows基础-使用XAudio2播放音频(本质是WASAPI)
BICHENG=_=
Windows基础
对于常见的音频播放,使用XAudio2足够了。时间是把杀猪刀,滑稽的是我成了猪早在WindowsVista中,M$推出了新的音频架构UAA,其中的CoreAudio接替了DSound、WaveXxx、MediaFundation,通过CoreAudioAPIs,Windows的音频性能可以与MacOSX相媲美(手动偷笑)。UniversalAudioArchitecture(UAA)CoreAud
- XAudio2学习三之获取音频输出设备信息
GreenArrowMan
XAudio2DirectXXAudio2XAudio2
XAudio2学习三之获取输出设备信息输出设备信息包括输出设备支持的音频格式、设备ID、设备名称、以及扮演角色。音频格式:通道数、采样率、有效位、音频类型等等。设备ID:每个设备独一无二的标识,扮演角色:用来表明音频设备的用途,下面会详细说明。设备名称:就是指音频输出设备的全称。打开自己的音频合成器,点击设备中的下拉按钮,可以看到所有设备以及全称。如下图:要获取输出设备的信息,首先我们需要知道输出
- Windows平台音频处理技术介绍
一如当初
Windows编程媒体
Windows下音频IO主要通过几种接口一、MME(MultiMediaExtensions)MME就是winmm.dll提供的接口,也是Windows平台下第一代API。优点是使用简单,一般场景下可以满足业务需求,缺点是延迟高,某些高级功能无法实现。二、DirectSoundDirextX套件中的音频组件,大多用于游戏中,支持硬件加速,所以比MME有更低的延迟。三、XAudio2也是Dirext
- 通过WinAPI播放PCM声音
weixin_33736048
c#操作系统java
在Windows平台上,播放PCM声音使用的API通常有如下两种。waveOutandwaveIn:传统的音频MMEAPI,也是使用的最多的xAudio2:C++/COMAPI,主要针对游戏开发,是DirectSound的基础在WindowsVista以后,推出了更加强大的WASAPI,并用WASAPI封装了MME以及DirectSoundAPI。对于前面的两个API,在.net平台下有如下封装:
- XAUDIO2: WARNING: Glitch at output sample 35412960 问题追踪
思依_xuni
c++
播放视频同时也播放音频,期间做着同步。之后偶然的时候,会有以下的输出:“XAUDIO2:WARNING:Spent251.13msinOnProcessingPassStartcallbacksXAUDIO2:WARNING:Glitchatoutputsample15522240”视频采用的是微软的mediaplayerapi(CWMPPlayer4),音频采用的是xaudio2。google值
- sdl 1.2 到2.0 迁移指南
Amrf
sdl
新功能概述以下是sdl2.0中最重要的新功能:-全3D硬件加速-在各种配置文件中支持opengl3.0+(核心、兼容性、调试、健壮等)-支持opengles-支持多个窗口-支持多显示器-支持多个音频设备-录音支持-android和ios支持-Emscripten和本地客户端支持-简单的2D渲染api,可以使用Direct3D,opengl,opengles,或软件渲染-XInput和XAudio2
- DirectX 因素:了解 XAudio2 中的筛选器
u011417605
DirectXXAudio2
CharlesPetzold下载代码示例在著名的波形的万神殿,简单的正弦曲线至高无上。 只是看着它,您可以看到其精髓的顺利起伏性质——当它达到其峰值、几乎停止,它冠,然后逐步加快速度减慢,达到它的最大速度横渡水平轴开始另一个经济放缓。这种视觉印象更深的数学分析所证实。 正弦曲线在任意点的瞬时速度是对曲线切线。 图的那些速度,并可以得到另一个正弦曲线,由四分之一周期从原始偏移。 不要再使用这第二条曲
- DirectX 因素:使用 XAudio2 的 Windows 8 发声功能
u011417605
DirectXXAudio2
CharlesPetzold下载代码示例对于Windows8的Windows商店app可以播放MP3或WMA声音文件时轻松地使用MediaElement——你只是给它一个URI或流的声音文件。 Windows存储区的应用程序也可以访问API发挥到流媒体视频或音频与外部设备。但是,如果您需要更多先进的音频处理呢? 也许您想修改其路上到硬件,音频文件的内容或动态生成的声音。Windows应用程序商店还
- DirectX XAudio2之音频图关键点
u011417605
audioDirectXXAudio2
Thesetofallvoices,withtheircontainedeffectsandtheirinterconnections,isreferredtoastheaudioprocessinggraph.Thegraphtakesasetofaudiostreamsfromtheclientasinput,processesthem,anddeliversthefinalresulttoa
- DirectX Audio之XAudio2及XAPO 示例
u011417605
DirectXXAudio2XAPO
Withtheinclusionof XAudio2inWindows8,there’sbeenrenewedinterestinlearninghowtousethisAPI.Thedocumentationon MSDNisofcourseagreatplacetostart,andbesuretoreadthroughtheentire Programmer’sGuide asthere’s
- C++编程:XAudio2 API应用示例
u011417605
DirectXXAudio2
C++编程:XAudio2 API应用示例XAudio2是一个跨平台的API,在Xbox 360及Windows中得到支持。在Xbox 360上, XAudio2作为一个静态库编译到游戏可执行文件中。在Windows上,XAudio2提供一个动态链接库(DLL)。以下例子只使用了其中的一部分功能,并不全面。详情请看微软技术页的XAudio2编程相关(英文)。使用XAudio2来播放未压缩的PCM音
- DirectX 因素:音频处理对象简介
u011417605
音效XAudio2
中文原文地址:https://msdn.microsoft.com/zh-cn/magazine/dn201755.aspx英文原文地址:https://msdn.microsoft.com/en-us/magazine/dn201755.aspx?utm_source=tuicool&utm_medium=referralDirectX的XAudio2组件更多只是方式在Windows8应用程序中
- XAudio2学习之MonitorAPO
u011417605
DirectX音效XAudio2
MonitorAPO通过一种锁无关由应用程序初始化的通讯通道的方式来将音频数据传递给主线程。将MonitorAPO添加到上一篇的源码中,给一个sourcevoice添加了两个特效。主要是使用管道,在APO中的DoProcess函数中将数据写入,然后在主线程中就可以读出来了。#include"DXUTLockFreePipe.h"
typedefDXUTLockFreePipeMonitorAPOP
- XAudio2学习之SimpleAPO
u011417605
audioDirectX音效XAudio2
SimpleAPO通过与处理的样本数据相乘,应用一个简单的增益因子到音频数据。DirectXSDK中带了示例,我将其中的实例进行拆分后,来分开进行说明,也是将代码分离开。structSimpleAPOParams
{
floatgain;
};
class__declspec(uuid("{5EB8D611-FF96-429d-8365-2DDF89A7C1CD}"))
CSimpleAPO
:
- XAudio2学习之自定义音频特效
u011417605
音效XAudio2
XAPOAPI允许创建跨平台音频处理对象(XAPO)以及微软跨平台音频创建工具(XACT)在Windows和Xbox360上给XAudio2使用。XAPOAPI提供了IXAPO接口和CXAPOBase类,可以用来创建新的XAPO类型。IXAPO接口包含了创建一个新的XAPO所需要实现的所有方法。CXAPOBase类简单的继承实现了IXAPO接口,除了IXAPO::Process方法,因为对于每一个
- XAudio2学习之音频特效库XAPOFX
u011417605
音效XAudio2
XAPOFX是一个继承自XAPO接口的音频效果集合,用于XAudio2。XAPOFX包含了几种效果以及一个通用的创建音效实例的机制。XAPOFX中包含的效果如下表:EffectDescriptionParameterStructureParameterConstantsRequirementsFXECHOAnechoeffect.FXECHO_PARAMETERSFXECHOConstantsOn
- XAudio2学习之内置音效:混响
u011417605
音效XAudio2
XAudio2提供了两种内置音频特效,这两种音频特效以及它们的创建方式如下:EffectCreationMethodReverbXAudio2CreateReverbVolumeMeterXAudio2CreateVolumeMeter如何使用内置音频特效呢?大致步骤如下:1.创建XAPO对象;2.创建XAPO对象描述结构体对象,用于对XAPO信息进行描述;3.创建效果链结构体对象,用于持有描述结
- XAudio2学习之音效相关结构体
u011417605
audio采样率混音XAudio2
任何XAudio2voice都可以持有一个音频效果链。你可以使用XAUDIO2_EFFECT_DESCRIPTOR数组来指定效果链。每个描述因子都包含了由客户端提供的指向音效对象的指针。这些对象必须实现APO接口。结构体定义为:typedefstructXAUDIO2_EFFECT_DESCRIPTOR{
IUnknown*pEffect;
BOOLInitialState;
UINT32Outp
- XAudio2音频特效
u011417605
音乐audio音效混音XAudio2
Anaudioeffectisanobjectthattakesincomingaudiodata,andperformssomeoperationonthedatabeforepassingiton.Youcanuseaneffecttoperformavarietyoftasks,includingaddingreverbtoanaudiostreamandmonitoringpeakvolu
- XAudio2学习之流化音频文件
u011417605
C++线程音乐XAudio2
流化是一个过程,在这个过程中,我们只需要在内存中维护一小块内存来播放音频文件。这样我们就可以使用很大的音频文件作为背景音乐,而不占用很大的内存。当我们流化一个音频文件的时候,音频数据是从硬盘上一块一块的读取,而不是将整个文件一次性全部加载。流化是通过异步读取音频数据到硬盘缓冲区队列来完成的。当一个缓冲区填充好数据后,提交给sourcevoice。当sourcevoice播放完成一个缓冲区后,这个缓
- XAudio2学习之循环播放音频数据
u011417605
XAudio2
有时候一个音频特效需要多次播放,比如一个连击动作的声效。1.当然你可以多次打开文件,读取内容然后播放;2.也可以打开文件,读取一次到内存,创建多个XAUDIO2_BUFFER,提交多次进行播放;3.最好的方法是使用XAUDIO2_BUFFER的Loop功能来进行播放,只需要读取一次文件,创建一个XAUDIO2_BUFFER,提交一次,就可以实现播放多次的需求。对于多次打开文件这种方法,一般是不会采
- XAudio2学习之混音
u011417605
32位采样率混音XAudio2
XAudio2不仅可以进行采样率转换,还可以进行混音。所谓混音就是将多路音频混合成一路进行输出。混音主要是IXAudio2SubmixVoice进行此项功能。数据由IXAudio2SourceVoice提交后,流向IXAudio2SubmixVoice进行采样率转换(如果需要的话),并且进行音频混合,最后形成一路采样率和IXAudio2MasteringVoice一致的音频流,由IXAudio2M
- 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独立出来,数据持