- 6种MySQL高可用方案对比分析
m0_74823595
mysqladbandroid
大家好,我是V哥,关于MySQL高可用方案,在面试中频频出现,有同学在字节面试就遇到过,主要考察你在高可用项目中是如何应用的,V哥整理了6种方案,供你参考。V哥推荐:2024最适合入门的JAVA课程MySQL的高可用方案有多种,常见的包括以下几种:1.主从复制(Master-SlaveReplication)原理:主库进行写操作,数据通过异步或半同步复制到从库。可以通过从库进行读操作,实现读写分离
- Docker部署项目,Mysql数据库总是宕机并且上传数据全部被删除了
lemonMann
开发过程中遇到的问题及解决方案数据库docker容器
刚开始排查原因我以为是一些内存占用问题的原因,后来查看数据库日志发现有多个异常ip尝试连接数据库并且也连接成功了随后数据库就被异常关闭了,然后我就重启容器远程连接数据库发现数据全没了,又在数据库中找到了如下内容:Allyourdataisbackedup.Youmustpay0.0080BTCtobc1q8r9zejh0ch22frh4pfdx2tlwf864sv42756yemIn48hours
- MySQL——并发事务所带来的问题是什么?怎样去解决?MySQL的默认隔离级别是什么
lemonMann
MySQLmysql数据库
一、并发事务所带来的问题1、脏读:就是一个事务对数据进行查询操作时而另一个事物在修改这条数据但未提交,这时进行查询操作的事务就会读取到未提交的数据也就是脏数据2、不可重复读:事务A查询一次数据接着事务B修改了数据并且已提交事务A继续执行操作查询数据读到了不一样的数据。3、幻读:事务执行查询数据时不存在,插入数据时却报错,再次查询时还是在。原因在于事务A查询的时候数据库确实没有对应索引的数据但之后事
- 【数据结构】清华出版社-刘小晶、朱蓉《数据结构渐进实践指导》第一章(个人手打版)
shixiexunnie
立志从0到c++全栈志数据结构算法c++
文章目录1_1_SqList.cpp1_1_LinkList.cpp1_1_SqList.cpp#include#include#definesql_size100//线性表初始分配空间的容量#definekuo10//线性表扩展空间的量#defineERROR0#defineOK1#defineOVERFLOW-2typedefintElemType;//数据元素的抽象数据类型,一般为intty
- mysql 记录客户端ip_MySQL查看所有连接的客户端ip
辉萱0623
mysql记录客户端ip
有时候我们需要查看当前的mysql数据库中,有哪些客户端保持了连接,每个客户端分别保持了多少连接,可以使用下面的语句查询结果,可以直观的看到连接数。SELECTsubstring_index(host,':',1)AShostname,state,count(*)FROMinformation_schema.processlistGROUPBYstate,hostname;输出结果:mysql>S
- yolov5 pt->onnx->om yolov5模型转onnx转om模型转换
qq_43650438
笔记深度学习tensorflow人工智能
yolov5pt->onnx->omyolov5-6.1版本models/yolo.pyDetect函数修改classDetect(nn.Module):defforward(self,x):z=[]#inferenceoutputforiinrange(self.nl):x[i]=self.m[i](x[i])#convbs,_,ny,nx=x[i].shape#x(bs,255,20,20)t
- mysql记录到毫秒,记录到微妙
kingmax54212008
TIMESTAMP(3)与DATETIME(3)意思是保留3位毫秒数TIMESTAMP(6)与DATETIME(6)意思是保留6位毫秒数更多参考:https://blog.csdn.net/helloxiaozhe/article/details/83269152
- mybatis-plus使用sum,count,distinct等函数的方法
默 唁
JAVAmybatisjavamysql
mybatis-plus使用sum,count,distinct等函数的方法通过mybatis-plus实现以下sql查询SELECTCOUNT(DISTINCTuser_name)FROMuser_infoWHEREis_deleted=0ANDis_enabled=1mybatis-plus实现intcount=this.count(Wrappers.query().select("DISTI
- 云贝餐饮最新v3全开源独立版源码
kaui52066
phppythonjava开源开源软件
云贝餐饮v3连锁独立版本全新UI后台运营独立版无bug最新适配头像昵称接口有视频安装教程安装环境:PHP8.0MySQL5.6-5.7
- LeetCode 232: 用栈实现队列
Ning_.
LeeCodeleetcode算法数据结构
LeetCode232:用栈实现队列题目描述使用栈实现队列的操作。支持以下操作:MyQueue():初始化队列。push(x):将元素x推入队列。pop():从队列中移除元素。peek():返回队列头部的元素。empty():检查队列是否为空。队列的先进先出(FIFO)原则可以通过两个栈来模拟。栈A用于入队操作,栈B用于出队操作。C语言实现#include#include//定义栈结构体typed
- crmeb java多商户外贸版系统搭建 java外贸版开发环境搭建
crmeb专业二开
crmebjavajava外贸版java外贸开源crmeb外贸版java多商户crmeb多商户外贸版
公测包运行公测包是打包好的java可执行文件直接在jdk1.8+环境下配置链接后,启动即可查看效果。下载源码包Java代码运行(运行基础环境和单商户的一致)运行条件jdk1.8maven环境3.3.xmysql5.7redis最新即可Node版本14+npm版本8.0+crmeb-admin管理端物业代码包,包含平台和商户,需要部署。crmeb-front商城代码包需要部署crmeb-common
- golang调用c库函数
wx_kingstone
cppgolangc++golanggoc语言cgo
golang调用c库函数c语言相关代码golang相关代码golang编译本文章介绍了golang如何调用c语言库函数。如果想调用c++库函数,建议在c++上再封一层c语言代码,编译成c语言动态库,再被golang调用。c语言相关代码cc文件、so编译省略c头文件,mytest.h#ifndef__MYTEST_H_#define__MYTEST_H_#ifdef__cplusplusextern
- conda更换环境版本(比如torch版本)
挨打且不服66
pythonpython
找到想要的torch版本pytorch官网torch过往的版本创建新环境condacreate--namemyenvpython=3.8condaactivatemyenvconda虚拟环境中安装CUDA和CUDNN深度学习用显卡训练的时候,需要安装与显卡对应的cuda和cudnn。但不同的项目所支持的pytorch版本是不一样的,而pytorch版本和cuda版本之间又是互相依赖的,所以如果可以
- MinerU magic-pdf 安装, pdf 转 markdown
gold2008
pdfmagic-pdfminerU
pipinstall-U"magic-pdf[full]"--extra-index-urlhttps://wheels.myhloli.compipinstallhuggingface_hubwgethttps://github.com/opendatalab/MinerU/raw/master/scripts/download_models_hf.py-Odownload_models_hf.
- 为什么不应该在事务中嵌套发送 MQ 消息和 RPC 调用?
后端javamq事务mysql
引言或许你曾写过这样的代码:@Transaction//开启事务publicvoidcraeteOrder(Orderorder){saveOrder(order);sendMQ(order);//或者是发送rpc}在一个事务内,向MySQL写入数据,接下来发送MQ或RPC调用。在大部分情况下,这样写好像没什么问题但如果此时我们下游执行反查操作,会发现找不到数据。更奇怪的是,这在业务的低谷期才会出
- 在conda虚拟环境中安装jupyter lab-----deepseek问答记录
溯源006
deepseek回答记录condajupyteride
在Conda虚拟环境中安装JupyterLab的步骤如下:1.创建并激活Conda虚拟环境如果你还没有创建虚拟环境,可以使用以下命令创建一个新的虚拟环境并激活它:condacreate-nmyenvpython=3.x#将`myenv`替换为你的环境名称,`3.x`替换为所需的Python版本condaactivatemyenv2.安装JupyterLab在激活的虚拟环境中,使用以下命令安装Jup
- C#: String s = new String(“Hello“)无法编译?编程语言字符集有两个?为什么这种变量名“\u0061\u0062”都能编译通过?
程序员小迷
编程语言小话c++小话iosc语言c++objective-cc#JavaPythonSwift
C#:Strings=newString("Hello")无法编译?C#String类型是literal常量,默认不能用new创建,但可以在unsafe下用char*字符串指针创建。char*charPtr=stackallocchar[2];charPtr[0]='H';charPtr[1]='\0';StringmyString=newString(charPtr);Console.Write
- oracle 如果两条记录的id是相同的,如何删除其中一条
&loopy&
oracle数据库
在Oracle数据库中,如果两条记录的id相同且需要删除其中一条记录,可以使用以下几种方法之一。以下示例假设你有一个名为your_table的表,其中id是主键或唯一标识符字段。方法一:使用ROWID由于Oracle允许使用ROWID来唯一标识表中的每一行,你可以使用ROWID来删除特定的记录。假设你已经确定要删除哪一条记录(例如,通过其他字段的差异),你可以执行以下操作:DELETEFROMyo
- 借助 Python 的 SQLAlchemy 库查询数据
米竹
SQLpythonmysqlsqlserver
SQLAlchemy库是一个非常强大又相当灵活的库,它在关系型数据库与传统编程之间建起了一座桥梁。它允许我们使用原始的SQL执行查询,同时也提供了高级的方法来查询和更新数据库。本文仅简要介绍使用原生SQL执行查询部分。使用SQLAlchemy查询MySQL的数据首先需要安装sqlalchemy库和pymysql库;使用sqlalchemy的create_engine()方法,并借助pymysql驱
- python使用SQLAlchemy进行mysql的ORM操作
Lucas在澳洲
Pythonpythonmysql开发语言1024程序员节
SQLAlchemy是什么SQLAlchemy是一个强大的PythonORM(对象关系映射)库,用于简化与关系型数据库的交互。通过将数据库表映射为Python类,SQLAlchemy使得开发者能够通过面向对象的方式来进行数据库操作,避免了直接使用SQL语句所带来的复杂性和安全风险。1.为什么使用ORM使用ORM具有以下优势:避免SQL注入:通过使用参数化查询,ORM可以有效地防止SQL注入攻击。可
- ELK安装部署同步mysql数据
未发哦京东发
elk运维
ELK安装部署指南ELK是Elasticsearch、Logstash和Kibana的简称,用于日志收集、存储、分析和可视化。1.安装ElasticsearchElasticsearch是一个分布式搜索和分析引擎。1.1下载并安装访问Elasticsearch官网下载最新版本。解压并安装:tar-xzfelasticsearch-8.10.0-linux-x86_64.tar.gzcdelasti
- NameError: name ‘xxx’ is not defined
一直幸运
Pythonpython
第一个练手小项目遇到N个NameError,技能熟练度蹭蹭往上涨,哈哈…转发一个网上的比较全的解决贴,共勉。原址:https://www.cnblogs.com/zyh19980816/p/11844659.html问题一:name‘name’isnotdefined“name"两端是双下划线”_",不是只有一个""。问题二:name‘messagebox’isnotdefined“”内为某个数据
- 解决在VS2019/2022中编译c++项目报错fatal error C1189: #error : “No Target Architecture“
simple_whu
Windows问题解决MSVCc/c++开发语言windowsc语言
解决在VS2019/2022中编译c++项目报错fatalerrorC1189:#error:“NoTargetArchitecture”报错原因在winnt.h中,不言而喻,一目了然:代码节选:#ifdefined(_AMD64_)||defined(_X86_)#definePROBE_ALIGNMENT(_s)TYPE_ALIGNMENT(DWORD)#elifdefined(_IA64_)
- Python的orm框架sqlalchemy的查询多条数据只显示第一条!!
Rider丶剑心
数据
我查询数据条件是时间字段的一个区间,可是每次都只返回查询结果的第一条。。类PointVal的定义如下:```classPointVal(Base):#表名__tablename__='T_ZB_PL'#表结构INSTR_NO=Column(String(30),primary_key=True)DT=Column(DateTime)R1=Column(String(11))R2=Column(St
- 【Python】使用SQLAlchemy操作Mysql数据库
m0_74824044
数据库pythonmysql
一、SQLAlchemy介绍SQLAlchemy是Python的SQL工具包和对象关系映射(ORM)库,它提供了全套的企业级持久性模型,用于高效、灵活且优雅地与关系型数据库进行交互。使用SQLAlchemy,你可以通过Python类来定义数据库表的结构,并通过这些类与数据库进行交互,而无需编写复杂的SQL语句。以下是SQLAlchemy的一些主要特点和功能:ORM(对象关系映射):SQLAlche
- 揭密 scaling laws
deardao
机器学习
ScalinglawsOpenAI在其早期的关于scalinglaws的论文[1]中提出了基础理论,但该文缺乏一些具体的求解过程,且未能在更大规模的模型上进行验证。与此同时,后续研究,例如DeepMind的ChinChilla[2]还提出了不同的结论。论文题目:UnravelingtheMysteryofScalingLaws:PartI论文地址:https://arxiv.org/abs/240
- Python的ORM框架sqlalchemy的查询多条数据只显示一条
harleylau
pythonsqlalchemysqlalchemyORM
这个情况可能很少碰到,但确实花了我不少时间去找这个错误,这边记录一下。在使用sqlalchemy作为ORM来拉取mysql的数据的时候,如果想要拉取所有的数据,显而易见应该用类似下边的语句:#获取所有数据session.query(Person).all()如果要加删选条件的话,采用下边的语句:#获取所有数据session.query(Person).filter(Person.sns_id==x
- SQLAlchemy中常用的查询方法[示例学习]
铁松溜达py
数据库
SQLAlchemy是一个强大的PythonORM(对象关系映射)工具,它提供了多种方法来执行数据库查询操作。以下是SQLAlchemy中常用的查询方法的总结:session.query():使用session.query(Model)来创建一个查询对象,其中Model是你要查询的数据库模型类。filter():在查询对象上使用filter()方法可以添加过滤条件,例如filter(Model.c
- 【Python】成功解决NameError: name ‘XXX’ is not defined
云天徽上
python运行报错解决记录python开发语言pandas机器学习numpy
【Python】成功解决NameError:name‘XXX’isnotdefined欢迎莅临我的个人主页这里是我深耕Python编程、机器学习和自然语言处理(NLP)领域,并乐于分享知识与经验的小天地!博主简介:我是云天徽上,一名对技术充满热情的探索者。多年的Python编程和机器学习实践,使我深入理解了这些技术的核心原理,并能够在实际项目中灵活应用。尤其是在NLP领域,我积累了丰富的经验,能够
- youtube new tools website
blogcs
youtubetowavioswebview
1.MainFunctionTheprimarypurposeofthissiteistoprovideuserswithaconvenientwaytoextracttheaudiofromYouTubevideosintheWAVformat.Thisisusefulforavarietyofreasons.Forexample,WAVisahigh-qualityaudioformattha
- 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独立出来,数据持