- 大文件分块上传.断点续传.秒传
我是奶龙!我是奶龙!我是奶龙!
html5cssjavascriptspringboot
大文件分块上传分片上传,就是将所要上传的文件,按照一定的大小,将整个文件分隔成多个数据块(我们称之为Part)来进行分别上传,上传完之后再由服务端对所有上传的文件进行汇总整合成原始的文件。分片上传适用场景1.大文件上传2.网络环境环境不好,存在需要重传风险的场景分片上传的基本流程图1.将待上传文件按照一定大小进行分片。2.使用InitiateMultipartUpload接口初始化一个分片上传任务
- 如何用Netty实现一个负载均衡组件
youyouiknow
tech-reviewjava后端架构
一、总体架构一个基本的负载均衡组件通常包含以下几个核心模块:服务注册与发现(ServiceRegistry&Discovery):功能:维护可用的后端服务实例列表(例如IP地址和端口)。实现要点:注册:服务实例启动时,将自己注册到注册中心。发现:负载均衡器从注册中心获取服务实例列表。健康检查:定期检查服务实例的健康状态,剔除不健康的实例。可选技术:ZooKeeper,etcd,Consul,Nac
- raft4j:练手之作
youyouiknow
tech-review后端分布式
raft4j是一个我的基于RAFT一致性算法的高性能Java实现,其核心功能围绕分布式系统中的一致性协议展开。整体架构raft4j的架构设计清晰,核心模块围绕RAFT协议的三个部分展开:Leader选举确保在任何时间只有一个有效的Leader承担写入请求。日志复制保证日志在所有节点上的一致性。日志应用和状态机将日志应用到状态机,提供最终一致的系统状态。raft4j通过高度模块化的设计,将这些功能封
- 网易云音乐API开源项目常见问题解决方案
束斯畅Sharon
网易云音乐API开源项目常见问题解决方案NeteaseCloudMusicApiC#版网易云音乐API(翻译自Node.js项目Binaryify/NeteaseCloudMusicApi)项目地址:https://gitcode.com/gh_mirrors/net/NeteaseCloudMusicApi项目基础介绍网易云音乐API项目是一个开源项目,旨在为开发者提供网易云音乐的各种API接口
- Java算法栈
王景程
java开发语言算法数据结构
栈作为编程中一个常见的算法,以下是它的特征以及一个相对应的例子:在编程中,**栈(Stack)**是一种后进先出(LIFO,LastInFirstOut)数据结构。它的特性是:入栈(Push):将元素添加到栈顶。出栈(Pop):将栈顶元素移除。查看栈顶元素(Peek/Top):获取栈顶元素但不移除。Java提供了一个现成的Stack类,它是java.util包的一部分,可以直接用于算法问题中。算法
- 后端开发基础——JavaWeb(根基,了解原理)浓缩
Wanna715
后端开发基础javatomcatservlet后端
总述学习Tomcat、JSON、Servlet、Filter、Session、Cookie、Ajax异步请求、RESTful接口规范、JSP(很老的技术,了解)Servlet系统架构C/S架构(Client/Server(客户端/服务器))B/S架构(Browser/Server,浏览器/服务器)javaJavaSE:Java标准版JavaEE:企业版(WEB方向,WEB系统)13种规范,其中Se
- JVM学习指南(44)-JVM模块化
俞兆鹏
JVM学习指南JVM
文章目录模块化概述模块化的重要性JVM模块化的历史背景Java模块化的演变模块化的关键概念模块(module)要求(requires)导出(exports)开放(opens)模块化的实际应用定义模块使用模块模块化的影响模块化的未来展望新特性和改进对Java生态系统的影响模块化概述在软件开发中,模块化是一种将复杂系统分解成更小、更易管理的部分的方法。这种分解不仅有助于提高代码的可读性和可维护性,还能
- java—网络编程TCP和UDP
添砖,加瓦
Java基础java
1.Java网络编程概述Java网络编程是通过java.net包实现的,Socket类是用来进行客户端与服务器通信的主要类。服务器端通过ServerSocket类来监听客户端的请求,客户端则通过Socket类来连接服务器。2.TCP网络编程示例在TCP通信中,数据传输是可靠的,确保了数据的顺序和完整性。以下是一个简单的客户端和服务器应用,其中服务器端监听指定端口,客户端向服务器发送消息并接收响应。
- 《嵌入式硬件设计》
黑色叉腰丶大魔王
嵌入式硬件
一、引言嵌入式系统在现代科技中占据着至关重要的地位,广泛应用于消费电子、工业控制、汽车电子、医疗设备等众多领域。嵌入式硬件设计作为嵌入式系统开发的基础,直接决定了系统的性能、可靠性和成本。本文将深入探讨嵌入式硬件设计的各个方面,包括处理器选择、存储器设计、外设接口、电源管理以及PCB设计等,为读者提供全面的技术参考。二、嵌入式系统概述(一)嵌入式系统的定义嵌入式系统是一种以应用为中心,以计算机技术
- 《VPN 介绍:作用、场景、原理》
黑色叉腰丶大魔王
VPN
一、引言在当今数字化时代,网络已经成为人们生活和工作中不可或缺的一部分。随着互联网的普及和发展,人们对于网络安全和隐私保护的需求也越来越高。VPN(VirtualPrivateNetwork,虚拟专用网络)作为一种重要的网络技术,为用户提供了安全、私密的网络连接方式。本文将详细介绍VPN的作用、场景和原理,帮助读者更好地了解和使用VPN。二、VPN的作用(一)保护网络安全加密数据传输VPN通过加密
- Java与AWS S3的文件操作
老友@
后端javaaws开发语言s3服务器
从零开始:Java与AWSS3的文件操作一、什么是AWSS3?AWSS3的特点AWSS3的应用场景二、Java整合S3方法使用MinIO客户端操作S3使用AWSSDK操作S3(推荐使用)三、总结一、什么是AWSS3?AmazonSimpleStorageService(简称AmazonS3)是由亚马逊网络服务(AWS)提供的一种对象存储服务。它提供了一个高度可扩展、持久、安全且低成本的存储解决方案
- php jwt解密token,php实现JWT(json web token)鉴权实例
数据科学人工智能
phpjwt解密token
JWT是什么JWT是jsonwebtoken缩写。它将用户信息加密到token里,服务器不保存任何用户信息。服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证。基于token的身份验证可以替代传统的cookie+session身份验证方法。JWT由三个部分组成:header.payload.signature以下示例以JWT官网为例header部分:{"alg":"HS256","
- java获取pdf的属性_Java 文件属性.pdf
东山白云意
java获取pdf的属性
Java文件属性Java⽂件属性JavaIO教程-Java⽂件属性Files类可以访问常⽤的⽂件属性。Files.isHidden(Pathp)⽅法测试⽂件是否被隐藏。Files类中的以下⽅法可以访问⽂件的各种类型的常⽤属性。longsize(Path)booleanisHidden(Pathpath)booleanisRegularFile(Pathpath,LinkOption...optio
- CS书籍、代码资源下载网址
sun_kang
CSGuide&&Linkslinuxjavatutorialsdebiandocumentationlinux内核
CS网址收藏啄木鸟Pythonic开源社区:http://www.woodpecker.org.cn/中国IT实验室(游戏开发):http://game.chinaitlab.com/游戏开发资源网:http://www.gameres.com/国内游戏开发论坛:http://bbs.gameres.com/国外的游戏开发站:http://www.gamedev.net/《问道》游戏开发论坛:ht
- Yii框架中的表单构建器:构建复杂表单
ac-er8888
服务器运维php开发语言
Yii框架中的表单构建器(FormBuilder)是一个强大的工具,它允许开发人员以简单、面向对象的方式构建复杂的表单,从而提升Web应用的用户体验。以下是对Yii框架中表单构建器的详细简述,特别是在构建复杂表单方面的应用:一、表单构建器的基础组件介绍:Yii表单构建器是Yii框架中的一个组件,专门用于创建Web表单。它提供了一个简单的、面向对象的编程接口,使得开发人员能够轻松地创建各种常见的表单
- (已解决)Failed to execute goal on project ...: Could not resolve dependencies for projec
qq_40711092
问题记录java
这样的错误,最后发现原来是自己没有首先对父项目也就是interface-test项目进行clean和install.https://blog.csdn.net/qq_43493747/article/details/120866443
- golang 编程规范 - Effective Go 中文
苹果醋3
面试题汇总与解析nginx运维javaspringbootmysql
原文:https://makeoptim.com/golang/effective-go介绍示例格式化(Formatting)缩进行的长度括号注释(Commentary)命名(Names)包名获取器接口命名驼峰命名分号(Semicolons)流程控制(Controlstructures)If声明和分配ForSwitch类型选择函数(Functions)多返回值命名结果参数Defer数据(Data)
- docker起的geoserver怎么访问docker启动的postgis数据库
niuge No.1
docker数据库eureka
背景:本地docker启动geoserver、pg数据库,pg数据库安装postgis拓展。第一步:查询docker启动的容器dockerps-a第二步:查询应用的ip如我的docker容器名称是第一步查询的postgres,那么查询的命令是:dockerinspect-f"{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}"postgr
- arcgis js 怎么加载geoserver发布的wms服务
niuge No.1
1024程序员节
arcgisjsapi加载wms服务,官方的参考样例:WMSLayer|SampleCode|ArcGISMapsSDKforJavaScript4.30|EsriDeveloper按照官方样例加载比较奇怪,我们平常习惯用url或者json的方式加载,稍微改一下就行,如下:constlayer=newWMSLayer({url:"http://127.0.0.1:8080/geoserver/ne
- [读书日志]8051软核处理器设计实战(基于FPGA)第六篇:8051软核处理器指令支持添加(verilog)
JoneMaster
JM读书日志系列fpga开发
5.4为主体程序添加指令接下来我们来为主体程序添加指令。在开始之前,我们有必要先把目前的代码展示出来://`defineTYPE8052moduler8051(inputwireclk,inputwirerst,inputwirecpu_en,inputwirecpu_restart,outputregrom_en,outputreg[15:0]rom_addr,inputwire[7:0]rom
- MongoDB详细讲解 + springboot集成
you0719
简单学点java数据库java
MongoDB以JSON为数据模型的文档非关系型数据库垂直扩展在一个机器上进行性能扩展水平扩展多个机器的扩展定位特点定位为应用数据库,存储数据特点:量大/非敏感/一定的查询性能MongoDB的语法是JavaScript语法添加db.集合名.insert(js对象)编辑db.集合名.updateMany({key:value}{$set:{key:value}})删除db.集合名.deleteMan
- 每个程序员都该学习的5种开发语言
阿玥的小东东
学习开发语言
我曾在某处读到过(可能在《代码大全》,但我不敢确定),程序员应该每年学习一门新的编程语言。但如果做不到,我建议,你至少学习以下5种开发语言,以便你在职业生涯有很好的表现。每个公司都喜爱精通多种编程语言并且多才多艺的程序员。一个既能很麻利地写脚本,也能编写复杂的Java程序的程序员,确实相当有价值。所以实际上,对于高级开发者来说,学习不止一种编程语言,几乎就是必然的要求。目前而言,面试官越来越看重那
- uniapp APP端页面触发调用uniapp开发的webview里的方法
printf_824
uniapp分享uni-app
原理:使用getCurrentInstance()获取当前组件的Vue实例,通过instance.proxy.$scope.$getAppWebview()获取Uniapp的原生WebView对象。使用WebView提供的evalJS方法,执行嵌入H5页面内的JavaScript代码functiongetData(){url.value="http://192.168.0.22:5174/#/pa
- 如何使用python技术爬取下载百度文库文档?
大懒猫软件
python百度开发语言
使用Python爬取百度文库文档需要通过分析网页结构和接口请求来实现。以下是一个基于搜索结果的实现方法,适用于爬取百度文库中的文档内容:第一部分:获取百度文库文档实现步骤获取文档ID和基本信息通过文档的URL获取文档ID,并解析页面内容以获取文档的类型、标题等信息。请求文档信息接口使用getdocinfo接口获取文档的页数、MD5校验码等参数。请求文档正文内容根据文档类型(如txt、doc等),请
- Blazor-Blogs 开源项目教程
陆滔柏Precious
Blazor-Blogs开源项目教程Blazor-BlogsSimplebloggingapplicationwritteninMicrosoftServerSideBlazor项目地址:https://gitcode.com/gh_mirrors/bl/Blazor-Blogs项目介绍Blazor-Blogs是一个基于Blazor框架的开源博客系统。Blazor是一个使用.NET构建客户端Web
- Blazor-AdminLTE 项目教程
诸余煦
Blazor-AdminLTE项目教程blazor-adminlteThisprojectadaptsADMINLTE3sothecomponentscanbeusedfromdotnetcoreBlazor/Server/WebAssembly项目地址:https://gitcode.com/gh_mirrors/bl/blazor-adminlte1.项目的目录结构及介绍Blazor-Admi
- Blazor-Calendar 开源项目教程
宁承榕Song-Thrush
Blazor-Calendar开源项目教程Blazor-CalendarYearly,monthlyandweeklycalendarBlazorComponent.Forusewith.NET6.0orhigherBlazorapplications项目地址:https://gitcode.com/gh_mirrors/bl/Blazor-Calendar项目介绍Blazor-Calendar是
- 探索数据之美:Blazor-ApexCharts——为.NET Core而生的图表神器
解雁淞
探索数据之美:Blazor-ApexCharts——为.NETCore而生的图表神器Blazor-ApexChartsAblazorwrapperforApexCharts.js项目地址:https://gitcode.com/gh_mirrors/bl/Blazor-ApexCharts在可视化日益重要的今天,找到一个既高效又灵活的图表库对于开发者来说至关重要。今天,我们要向大家隆重推荐一款专为
- Blazor-ApexCharts 开源项目指南
凌桃莺Talia
Blazor-ApexCharts开源项目指南项目地址:https://gitcode.com/gh_mirrors/bl/Blazor-ApexCharts一、项目介绍Blazor-ApexCharts是一个用于Blazor框架的图表组件库封装,它基于流行的前端图表库ApexCharts.js实现。这个项目旨在简化在Blazor应用中添加交互式图表的过程,无需直接处理复杂的JavaScript互
- dotnet-blazor-crud 项目教程
尚舰舸Elsie
dotnet-blazor-crud项目教程dotnet-blazor-crudDemoapplicationbuiltwiththeBlazorclient-sidehostingmodel(WebAssembly)and.NETCoreRESTAPIssecuredbyaJWTservice.项目地址:https://gitcode.com/gh_mirrors/do/dotnet-blazo
- 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独立出来,数据持