- LVS-DR负载均衡群集深度实践:高性能架构设计与排障指南
东窗西篱梦
lvs负载均衡服务器
目录一、核心原理与理论二、背景与架构设计三、全流程部署步骤1.NFS共享存储配置(192.168.7.100)2.RealServer节点配置(四台服务器)3.Director服务器配置四、常见问题解决方案五、生产环境总结拓扑示意图:一、核心原理与理论LVS-DR(DirectRouting)模式通过MAC地址改写实现高效转发:数据流向LVS-DR(DirectRouting)工作流程:请求处理客
- 【请关注】真实案例pg及kong安装部署
DoWeixin6
kong
#前提需要安装好nfsKONG_NAMESPACE="kong-api"PG_NAMESPACE="pg-ha"HARBOR_IP="harbor.rancher.com"一、安装pg高可用#######################################################################################kubectlcreatenames
- Dockerfile镜像制作
一:Docker镜像管理1:Docker镜像结构Docker镜像是一种轻量级、可执行的独立软件包,它包含运行应用程序所需的一切:代码、运行时环境、库、环境变量和配置文件。镜像是创建Docker容器的基础,采用分层存储结构。关键特点:分层结构:每个镜像由多个只读层组成,每层对应Dockerfile中的一条指令。联合文件系统:使用UnionFS技术将各层叠加,形成统一的文件系统视图。共享层:不同镜像可
- K8s采用Helm部署高可用Redis集群实战指南
Java面试题合集
kubernetesredis容器
本文将引导您使用Helm在Kubernetes(K8s)集群中,快速部署一个基于Redis3主3从架构的高可用分布式缓存集群。此部署方案依赖于现有的Kubernetes集群、Helm客户端,并预设已配置基于NFS的StorageClass以实现持久化存储。引言:为何选择高可用Redis集群?在现代Web应用中,缓存是提升性能、降低数据库负载的关键组件。Redis以其高性能和丰富的数据结构成为缓存首
- K8S部署calico网络插件有一个calico-node-xxx始终0/1
BOUTTIME
网络kubernetes容器
1、情况是这样的,我在master部署calico网络插件的时候,运行完kubectlapply-fcalico.yml后,查看pod运行情况:(base)[root@masteropt]#kubectlgetpod-ANAMESPACENAMEREADYSTATUSRESTARTSAGEdefaultnfs-client-provisioner-566f7f554d-6hww61/1Runnin
- nginx: [error] invalid PID number ““ in “/var/run/nginx.pid“
秦时明月之君临天下
LinuxNginxnginxlinux
在重载nginx时,报了这个错误:nginx:[error]invalidPIDnumber“”in“/var/run/nginx.pid”,然后发现这个pid文件居然是空的,而不是正常保留的nginx主进程的pid。[root@02cert]#/usr/sbin/nginx-tnginx:theconfigurationfile/etc/nginx/nginx.confsyntaxisokngi
- Maven无法解析插件错误整理
(上海)编程李老师
javajava后端
背景:两个问题:1.用idea新建一个maven项目,无法解析插件(Cannotresolveplugixxx)2.使用命令行执行mvnhelp:system,显示没有help前缀的插件,也就这个命令,不能执行。手动下载后,idea的问题依然没有改变做过的尝试:1.常见的去confsettings.xml修改本地仓库,镜像2.版本问题:idea更新到目前最新2019.3.3maven3.6.3,所
- 高性能群集部署技术-LVS负载均衡群集
曼汐 .
lvs负载均衡运维
目录#1.1LVS群集应用基础1.1.1群集技术概述1.1.2负载均衡的分层结构1.1.3负载均衡的工作模式#2.1LVS的负载调度算法2.1.1使用ipvsadm管理工具#3.1NFS共享存储服务3.1.1使用NFS发布共享资源3.1.2在客户机中访问NFS共享资源#4.1LVS负载均衡的实验案例4.1.1配置负载调度器4.1.2配置节点服务器4.1.3测试LVS群集1.1LVS群集应用基础1.
- LINUX 619 NFS rsync
czhc1140075663
系统服务linux运维服务器
NFS实时备份inotifyrsync.shrsync-a--delete/share/192.168.235.200:/backup/对吗?[root@nfs/]#chmod+Xrsync.sh[root@nfs/]#llrsync.sh-rw-r--r--.1rootroot2206月1821:57rsync.sh[root@nfs/]#nfs[root@nfsshare]#touch1.tx
- 部署lsyncd实时同步
空城(๑><๑)
linux运维centos
1.安装lsyncd[root@nfs-31~]#yuminstalllsyncd-y2.编辑lsyncd的配置文件[root@nfs-31~]#vim/etc/lsyncd.confsettings{logfile="/var/log/lsyncd/lsyncd.log",statusFile="/var/log/lsyncd/lsyncd.status",inotifyMode="CloseW
- KVM高级功能部署
后院那片海
运维
目录1.1案例分析1.1.1案例概述1.1.2案例前置知识点1.kvm虚拟机迁移2.ksm内核同页合并1.1.3案例环境1.本案路环境2.案例需求3.案例实现思路2.2案例实施2.2.1静态迁移1.在源宿主机上准备虚拟机2.提取磁盘和配置文件3.配置和启动目标虚拟机2.2.2基于共享存储的动态迁移1.配置nfs共享存储2.挂载nfs目录3.创建动态迁移的虚拟机4.动态迁移5.生成配置文件6.验证迁
- Docker 快速入手:从原理到实践的高效指南
Allenliu _Andy
docker容器运维
一、Docker诞生背景与核心优势传统物理机部署面临成本高、资源浪费、迁移困难等问题,虚拟机虽能部分解决,但完整操作系统的资源消耗仍显著。Docker基于Linux内核技术(Cgroups、Namespace、UnionFS)实现操作系统级虚拟化,仅封装应用及其依赖,轻量高效。举个通俗的例子,就好比Andy我有台电脑,为了编程要部署成千上万的IDE,又是环境又是依赖,可能还有更多麻烦,咋办呢?Do
- 运维综合架构组成
奥尔特星云大使
linux自学笔记linux运维负载均衡服务器centos
标题01.中小规模网站架构组成1)顾客---用户访问网站人员2)保安---防火墙(firewalld)进行访问策略控制3)迎宾---负载均衡服务器(nginx)对用户访问请求进行调度处理4)服务员---web服务器(nginx)处理用户请求5)厨师---数据库服务器(mysql)存储字符集数据6)厨师---存储服务器(nfs)存储图片音频视频附件等数据信息7)厨师---备份服务器(rsync+cr
- 彻底删除nvidia驱动以及cuda
lovod
linux运维服务器
介于在一些情况下,未完全删除nvidia和cuda的残留可能导致再次安装失败,故写此文nvidia驱动如果因为一些失误操作导致nvidia驱动被篡改或出错可以使用1.完全卸载现有NVIDIA驱动sudoaptpurge*nvidia**cuda**libnvidia*-ysudoaptautoremove-y2.删除残留的配置文件sudorm/etc/X11/xorg.confsudorm/etc
- autofs自动挂载
tianyagukechat
服务器linux网络
目录1、autofs自动挂载的概述1.1autofs的工作原理1.2、配置文件2、安装和启动3、配置4、重启服务1、autofs自动挂载的概述autofs是一种自动挂载工具,主要用于Linux和类Unix系统,它可以在需要访问某个文件系统时自动挂载该文件系统,并在一段时间内无访问操作后自动卸载。这种方式可以节省系统资源,同时提高安全性常见使用场景(1)NFS自动挂载:自动挂载网络文件系统(NFS)
- Docker容器化镜像分层原理及优化策略
python自动化工具
k8s容器javaeureka
哈喽,大家好,我是左手python!Docker镜像分层原理Docker镜像的分层机制是其核心功能之一,通过将镜像划分为多个层(Layer),实现了高效的镜像构建、存储和分发。每一层都是一个只读的文件系统层,堆叠在一起形成完整的镜像。这种设计不仅提高了镜像的复用性,还优化了存储和网络传输的效率。分层存储驱动Docker使用了多种存储驱动来实现分层文件系统,包括UnionFS、AUFS、Overla
- ubuntu相关配置及windows nfs挂载到ubuntu
xx-xx-xxx-xxx
linux杂记ubuntuwindowslinux
/Ubuntu中右键(桌面和文件夹)打开终端(定位到当前路径)sudoapt-getinstallnautilus-open-terminal重启后,右键桌面,可以看到:OpeninTerminal用鼠标点击VMware菜单栏中“虚拟机”->“安装VMware工具…”(对应的英文版是“VM”->“InstallVMwareTools…”),你将看到有光盘被加载,在桌面上会出现一个虚拟光驱,打开它,
- 中小型架构
KK溜了溜了
架构需求:1架构网站:zrlogwecenterwordpresscloud2要求:实现两个负载均衡器代理并介入keepalived高可用3实现全站https加密4实现两个web站点5实现nfs服务器存储网站静态资源6实现backup服务器能实时有nfs同步(rersync/lsync)过来的数据实现全网备份功能(rsync)7实现服务器内部共享上网8实现各服务器之间时间同步9实现ansible一
- linux 常规变更流程
bcxwz669
linux运维服务器
新建、删除用户1、确定服务器hostnameipa2、useradd-m-d家目录路径-uuid-ggid用户名3、userdel-r用户名字-r参数指定删除家目录4、验证cat/etc/passwd5、业务验证6、新建删除用户互为回退方案NAS挂载cp/etc/fstab/etc/fstab+日期df-hshowmount-eNFSserverIP(yuminstallnfs-utils安装sh
- rsync+inotify报错问题解决
反复反复修改修改
服务器linuxcentosbash
编写了一个inotify实时同步脚本,用来检测nfs挂载目录是否有数据变化,如果有变化通过脚本里的rsync命令将数据传输的从的服务器上。#cat/etc/nfschuanhsu.sh#!/bin/bash#编写inotify实时监控脚本backup_Server=192.168.8.30inotifywait=/usr/bin/inotifywaitbakData=/data/rsync/nfs
- Ubuntu 20.04上搭建Samba和nfs服务
静止了 所有的花开
ubuntulinux运维sambanfs
一、Ubuntu上搭建Samba服务1.安装Sambasudoapt-getinstallsambasamba-common2.如果你开启了防火墙,关闭sudosystemctlstopufw3.配置Samba,编辑配置文件sudovim/etc/samba/smb.conf直接共享家目录,修改如下:4.添加一个用户,最好是和你的登录Ubuntu的用户名一样sudosmbpasswd-a[user
- 深入浅出Docker
Aurora_NeAr
dockereureka容器
容器与Docker简介镜像(Image)定义:静态的只读模板,包含运行应用所需的所有依赖(代码、环境、库、配置)。本质:分层存储结构(UnionFS),每一层是文件系统的增量修改。核心操作:dockerpull(拉取)、dockerbuild(构建)、dockerpush(推送)。生命周期:持久化存储,可重复使用。删除需显式执行dockerrmi。容器(Container)定义:镜像的运行实例,本
- yocto编译使用共享缓存
bob_young
android缓存
注意服务器端与客户端系统的版本号需为Ubuntu20.04执行用户需要为sudo权限服务器端nfs目录权限必须为nobody:nogroup服务端配置:在服务器192.168.60.142上配置NFS共享:1.安装NFS服务器:1sudoapt-getinstallnfs-kernel-server2.编辑/etc/exports文件,添加共享目录,本次以/data/nfsroot目录作为共享缓存
- 为什么 Docker 镜像这么高效?一文揭示技术背后的秘密!
TravisBytes
dockerdockerjava容器运维开发语言自动化人工智能
目录一、什么是镜像(Image)1.1定义二、Docker镜像原理2.1分层(Layering)2.2写时复制(Copy-on-Write,COW)2.3联合挂载(UnionMount/UnionFS)2.4内容寻址(ContentAddressable)三、Docker镜像关键概念3.1Registry3.2Repository3.3Manifest3.4Image3.5Layer3.6Dock
- windows server安装nfs服务器
tianjiaxiaoer
服务器linux运维
WindowsServer上安装NFS服务器需要进行以下步骤:在WindowsServer上安装“文件服务”组件。这可以在“控制面板”->“程序和功能”->“启用或关闭Windows功能”中进行。安装“NFS服务器”组件。这也可以在“控制面板”->“程序和功能”->“启用或关闭Windows功能”中进行。配置NFS共享。在“服务器管理器”中单击“文件服务”->“共享”,点击“新建共享”,选择NFS
- AudioRelay 0.27.5 手机充当电脑音响
子文AI
智能手机电脑
—————【下载地址】———————【本章下载一】:https://pan.xunlei.com/s/VOS4MvfPxrnfS2Zu_YS4egykA1?pwd=i2we#【本章下载二】:https://pan.xunlei.com/s/VOS4MvfPxrnfS2Zu_YS4egykA1?pwd=i2we#【百款黑科技】:https://ucnygalh6wle.feishu.cn/wiki/
- 项目实战:k8s部署考试系统
一、新建nfs服务器(192.168.1.44)1.基础配置(IP地址防火墙等)2.配置时间同步[root@localhost~]#yum-yinstallntpdate.x86_64[root@localhost~]#ntpdatetime2.aliyun.com27Sep10:28:08ntpdate[1634]:adjusttimeserver203.107.6.88offset0.0149
- SparkSQL 优化实操
社恐码农
sparksql
一、基础优化配置1.资源配置优化#提交Spark作业时的资源配置示例spark-submit\--masteryarn\--executor-memory8G\--executor-cores4\--num-executors10\--confspark.sql.shuffle.partitions=200\your_spark_app.py参数说明:executor-memory:每个Execu
- linux(centos7)实现NFS 共享文件夹
挑战者666888
linuxlinux运维服务器javapython
文章目录第一步:服务端配置(CentOS7)1.安装NFS服务2.创建共享目录3.设置目录权限4.编辑/etc/exports文件5.导出共享目录6.启动NFS服务7.开通防火墙端口:2049第二步:客户端配置1.安装NFS客户端2.创建挂载点3.挂载NFS共享4.自动挂载(可选)测试共享注意事项错误一:mount:wrongfstype,badoption,badsuperblockon221.
- HTTP TCP常见面试问题总结_tcp和http面试题
2401_85158559
程序员httptcp/ip面试
表示层:JPEG、MPEG、ASII应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS每一层的作用如下:物理层:通过媒介传输比特,确定机械及电气规范(比特Bit)数据链路层:将比特组装成帧和点到点的传递(帧Frame)网络层:负责数据包从源到宿的传递和网际互连(包PackeT)传输层:提供端到端的可靠报文传递和错误恢复(段Segment)会话层:建立、管理和终止会话(会话协议
- 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独立出来,数据持