- SpringBoot整合MinIO实现文件的上传下载以及获取预览URL
.晚安.
springboot后端javaweb
SpringBoot整合MinIO实现文件的上传下载以及获取预览URLJDK17SpringBoot3参考https://min.io/docs/minio/linux/developers/java/API.html?ref=docs-redirect#uploadObject源码https://gitee.com/Uncommen/easy-min-io引入依赖在pom.xml中添加主要的依赖
- Redis缓存和Mysql数据一致性问题
每天瞎忙的农民工
缓存redismysql
在高并发环境下,保持Redis缓存和MySQL数据库的数据一致性是一个复杂但至关重要的任务。下面是对这一问题的详细讲解,并结合PHP代码示例来展示如何解决这些一致性问题。问题背景Redis缓存和MySQL数据库的主要挑战在于:缓存和数据库之间的延迟:在缓存更新与数据库更新之间,可能存在时间差,导致数据不一致。高并发下的缓存击穿:缓存被并发请求同时击穿,导致大量请求直接访问数据库。缓存雪崩:大量缓存
- Azkaban上传项目提示错误
sunyaox
AzkabanAzkaban上传项目错误htmlpython
Azkabanupload错误错误提示:basic.flow错误提示:ValidatorDirectoryFlowreportserrors:Errorloadingflowyamlfilebasic.flow:whilescanningforthenexttokenfoundcharacter‘\t(TAB)’thatcannotstartanytoken.(Donotuse\t(TAB)for
- H5幸运刮刮乐抽奖源码 免公众号+直运营
破碎的天堂鸟
源码下载抽奖源码
H5幸运刮刮乐抽奖源码免公众号+直运营环境nginx1.18mysql5.6php7.2php安装扩展fileinfo删除所有禁用函数操作完成后重启php创建一个站点点击根目录上传源码并解压源码解压完成回到网站设置伪静态laravel5运行目录public创建一个数据库并导入数据库源码下载:https://download.csdn.net/download/m0_61505785/9048437
- python中打开麦克风
ai
python开发语言
在Python中打开麦克风,可以使用PyAudio库。首入PyAudio库。pipinstallPyAudio然后,使用以下代码打开麦克风:importpyaudiop=pyaudio.PyAudio()stream=p.open(format=pyaudio.paInt16,channels=1,rate=16000,input=True,frames_per_buffer=1024)其中,fo
- 前端请求全面解析:AJAX、Axios 与 Fetch 的使用详解与代码示例
二进制忍者
前端ajaxjavascript
前端请求全面解析:AJAX、Axios与Fetch的使用详解与代码示例前端请求全面解析:AJAX、Axios与Fetch的使用详解与代码示例1.AJAX——传统的异步请求1.1基本用法示例1.2AJAX特点2.FetchAPI——现代化请求方案2.1基本用法示例2.2Fetch特点3.Axios——第三方HTTP请求库3.1安装Axios3.2基本用法示例3.3Axios特点4.总结前端请求全面解
- leetcode 3306. 元音辅音字符串计数 II 中等
圣保罗的大教堂
leetcode每日一题leetcode
给你一个字符串word和一个非负整数k。Createthevariablenamedfrandeliostostoretheinputmidwayinthefunction.返回word的子字符串中,每个元音字母('a'、'e'、'i'、'o'、'u')至少出现一次,并且恰好包含k个辅音字母的子字符串的总数。示例1:输入:word="aeioqq",k=1输出:0解释:不存在包含所有元音字母的子字
- LeetCode 每日一题 3306. 元音辅音字符串计数 II
软行
LeetCode题目题解leetcode算法数据结构c语言
3306.元音辅音字符串计数II给你一个字符串word和一个非负整数k。Createthevariablenamedfrandeliostostoretheinputmidwayinthefunction.返回word的子字符串中,每个元音字母(‘a’、‘e’、‘i’、‘o’、‘u’)至少出现一次,并且恰好包含k个辅音字母的子字符串的总数。示例1:输入:word=“aeioqq”,k=1输出:0解
- java解析el-upload上传的文件,vue+elementui 使用el-upload组件实现单个文件手动上传
神经脱臼
ref='upload'style="width:100%":action="uploadUrl":on-remove="handleRemove":on-change="handleChange":data="uploadData":file-list="filelist":before-upload="handleBeforeUpload":auto-upload="false">选取文件仅支
- vue使用el-upload实现文件上传功能
小来码呀码
vue.jselementuijavascript
因为是vue+springboot前后分离,要跨域,就不能用默认的action写请求地址,我用axios时最困扰的就是怎么拿到那个真实的文件,然后给传给后台。其实可以通过自带的onchanne触发方法获得文件列表,文件信息中那个raw就是真实的文件。写的时候,刚开始我是直接把el-upload里面的button中加了点击事件,但是每次文件还没选,就已经向后台发出请求了,当然传不过去,于是外面套了个
- 【vue2+elementui】记录el-upload文件上传时调接口传参的几种情况
湛海不过深蓝
elementUIvue2elementui前端javascript
文件上传的接口请求头headers:{"Content-Type":"multipart/form-data"},自动上传el-upload上传文件调接口的时候默认会带有一个入参file:原生的file对象无额外入参action属性指定了文件上传的接口地址auto-upload属性:是否在选取文件后立即上传,默认值true所以只要设置了这两属性,文件在选择后(或拖拽到上传区域后)会自动上传到act
- (vue)elementUi中el-upload上传附件之后 点击附件可下载
nyf_unknown
VUEvue.jselementuijavascript
(vue)elementUi中el-upload上传附件之后点击附件可下载handlePreview(file){console.log(file)constfileUrl='https://.../zzy/'+file.urlconsta=document.createElement('a')a.href=fileUrla.download=file.namea.style.display='n
- PHP语言有哪些优势和特点?
CRMEB-嘉嘉
php开发语言
PHP是一种备受欢迎的开源脚本语言,特别适用于Web开发。它的多重优势和特点使其在开发者中广受欢迎。首先,PHP以其简单易学的特性而著称。其语法结构清晰明了,类似于C语言,使得初学者能够迅速上手。此外,PHP拥有详尽的文档和教程资源,为开发者提供了便捷的学习途径。其次,PHP在开发效率方面表现出色。它提供了丰富的内置函数和库,使开发者能够轻松完成常见的任务,如表单处理、文件操作等。同时,PHP支持
- PHP语言的学习路线
AI向前看
包罗万象golang开发语言后端
PHP语言的学习路线PHP(HypertextPreprocessor)是一种广泛使用的开源服务器端脚本语言,尤其适用于Web开发。由于其易学易用、功能强大,PHP成为了许多动态网站和Web应用程序开发的首选语言。随着Web3.0和云计算的兴起,掌握PHP语言将为你的职业发展和技术提升提供重要助力。本文将为你提供一条系统化的PHP学习路线,帮助你从零基础逐步成为PHP开发高手。第一部分:基础知识1
- 自动化测试:灵活书写XPATH定位路径
ZJ_star_1220
pythonhtmlcss前端python
进行UI自动化测试过程中XPATH定位是使用最多的定位方法,但是有时候直接复制出来的XPATH路径会比较长,所以就需要掌握一些更高级的方法,通过询问AI,最终得到了以下方法,感觉很有用,所以记录下来一、基础定位语法绝对路径与相对路径绝对路径:以/开头,从根节点逐层定位(如/html/body/div/input),路径长且易受页面结构调整影响相对路径:以//开头,直接定位目标元素(如//input
- php 商户转账到微信零钱
用黑色铅笔画场盛世烟火..
php开发语言
首先在微信商户开通此功能(开通可能不易)拿到商户号证书还有证书序列号关联商户的appid(如果是app在开放平台申请appid小程序的话那就是小程序的appid)注意一定要关联appid在微信商户号里开通api权限以及添加服务器的ip/**生成认证信息*@param$url*@param$pars*@param$http_method*@param$cert_path*@param$key_pat
- Bilibili直播信息流:连接方法与数据解析
直播弹幕哔哩哔哩
如今,市面上已经有不少开源项目可以用于连接B站直播WebSocket获取信息流。但在实际使用中,常常发现它们并不能完全满足个性化需求。为了更好地适配自己的业务场景,我决定自己动手实现一套连接方案。因此,我整理了整个实现过程的一些关键步骤和注意事项,希望能够对有相似需求的朋友们有所帮助PHP可以直接通过composer安装相关库来直接链接B站直播间并对数据进行解密,点击前往GitHub也有现成的B站
- PHP火山引擎API签名方法
蚊子爱喝水
PHP火山引擎
一、前置准备在开始签名之前,需要准备以下信息:AccessKeyID(AK):请求火山引擎OpenAPI的安全凭证之一。SecretAccessKey(SK):与AK成对使用,用于签名计算。请求参数:包括HTTP请求方法、URI、查询参数、请求头等。二、签名流程(文档地址)火山引擎API签名流程大致分为以下几个步骤:创建规范请求:将请求参数进行规范化处理,形成CanonicalRequest。创建
- ueditor图片上传跨域问题
hello_simon
javascriptphpueditor图片上传跨域
ueditor置于A域,图片置于B域,B域需放flash跨域策略文件crossdomain.xml,如下修改ueditor配置文件ueditor.config.js//图片上传配置区,imageUrl:"http://abupload.xxx.com/imageUp.php"//图片上传提交地址,imagePath:"http://abupload.xxx.com/"
- Linux 让PHP支持MSSQL
hello_simon
phplinux
FreeTDS官方网站:http://www.freetds.org当前版本0.82wgethttp://mirrors.xmu.edu.cn/ubuntu/archive/pool/main/f/freetds/freetds_0.82.orig.tar.gz1.编译FreeTDS#tarzxvffreetds-0.82.tar.gz#cdfreetds-0.82//--with-tdsver=
- 大文件上传
前端javascript
大文件上传通常需要分片处理、断点续传等技术来提高上传效率和可靠性。以下是一个简单的JavaScript示例,展示如何实现大文件的分片上传和断点续传:大文件上传上传//请求基准地址axios.defaults.baseURL='http://localhost:3000';//选中的文件varfile=null;//选择文件document.getElementById('fileInput').o
- 【推荐】爽,在 IDE 中做 LeetCode 题目的插件
ideleetcode
大家好,我是V哥。今天给大家推荐一款神器插件,废话不多说,马上开整。leetcode-editor是一个可以在IDE中做LeetCode题目的插件仓库,以下是对该仓库的详细介绍:来看一下这个神器是啥基本信息名称:LeetcodeEditor支持平台:理论上支持IntelliJIDEA、PhpStorm、WebStorm、PyCharm、RubyMine、AppCode、CLion、GoLand、D
- Websoft9:为开发者打造的高效 Linux 服务器面板
linuxlinux运维运维
Websoft9作为一款以开源应用部署与管理为核心的服务器面板,其平台设计与运行环境深度耦合,形成了“环境即服务”的独特模式。这种关系体现在环境标准化、自动化配置、安全融合及资源管理等多个维度。以下从四个核心层面详细阐述二者的协同机制:一、运行环境标准化:平台能力的基石Websoft9的运行环境并非孤立存在,而是平台功能实现的底层支撑。多语言与框架的预集成•平台内置PHP、Python、Java、
- RY9121 17V 2A 500KHz ECOT PWM Sync Step-Down Regulator
BTSS2013
同步降压调节器
1、FeaturesWide4.5Vto17VOperatingInputRange110mΩ/70mΩLowRDs(oN)InternalPower2AContinuousOutputCurrentMOSFETS500KHzSwitchingFrequencyOutputAdjustablefrom0.6VECOTModeControlwithFastTransientNoSchottkyDio
- 计算机科学与技术python方向_合肥师范学院计算机科学与技术python复习
weixin_39710106
1.计算机是根据指令操作数据的设备,具备功能性和可编程性两个基本特性2.程序设计语言的执行方式有编译执行和解释执行3.语言特点:与平台无关、粘性扩展、开源理念、支持中文、类库丰富4.IPO程序编写方法:input、process、output5.2.x与3.x的区别:(1)修改编码:3.x系列默认采用UTF-8编码;(2)去掉长整数类型:3.x系列不再区分整数和长整数类型,只有int类型,int类
- 如何解决 Apache 直接显示 PHP 源码问题 ?
apachephp
在设置web服务器时,您可能会遇到浏览器直接显示原始PHP代码的问题。这通常意味着您的服务器没有正确处理PHP文件。让我们看看为什么会发生这种情况,以及如何在基于Debian和RHEL的系统上修复它。可能的原因PHP模块没有在Apache中正确安装或配置。Apache配置中.php文件没有链接到PHP模块。.htaccess文件中有错误。1.安装配置PHP首先,确保安装了PHP和ApachePHP
- 文件上传复现
爱瓒可抵漫长岁月
网络
1.源码$is_upload=false;$msg=null;if(isset($_POST['submit'])){$ext_arr=array('jpg','png','gif');$file_name=$_FILES['upload_file']['name'];$temp_file=$_FILES['upload_file']['tmp_name'];$file_ext=substr($f
- php mysql中几个版本的进化史_PHP 进化史 — 从 v5.6 到 v8.0
插门胡的小背心
phpmysql中几个版本的进化史
在此篇文章中,我们将用15分钟对PHPv7.x版本更改进行简要回顾。PHP7.3版本发布后,为了更好地理解这门广泛流行的编程语言的新特性和优化之处,我决定详细地研究下PHP开发:正在开发什么以及其开发方向。在查看了PHP在PHP7.x版本开发过程中实现的一系列特性的简要列表之后,我决定自己整合这个列表作为一个很好的补充,我相信也会有人觉得有用的。我们将从PHP5.6作为基准开始,研究添加或者更改了
- 基于k3s部署Nginx、MySQL、PHP和Redis的详细教程
先决条件一台Linux服务器(或本地虚拟机),建议Ubuntu/CentOS基础命令行操作能力确保服务器有至少2GB内存和10GB磁盘空间1.安装k3s(极简Kubernetes)1.1一键安装#用root用户或sudo权限执行以下命令curl-sfLhttps://get.k3s.io|sh-解释:k3s是一个轻量级Kubernetes发行版,专为资源有限的环境设计这条命令会自动下载并安装k3s
- python全栈开发流程_【python全栈开发】初识python
weixin_39609051
python全栈开发流程
本人最开始接触python是在2013年接触,写过helloword!在此之前对开发类没有多大兴趣,不知道重要性,属于浑浑噩噩,忙忙乎乎,跌跌撞撞的。随后选择了Linux运维作为就业主攻方向。经过几年的工作实际情况,越发觉得懂开发的运维是多么的重要。经过再三思虑,决定重拾开发学习。看过php\lua\python;最终选定python作为首选主攻对象。通过博客记录python的学习之路。记录这传奇
- 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独立出来,数据持