- kafka-eagle 配置文件修改使用自带的数据库
bright future cheer
kafka数据库分布式
######################################multizookeeper&kafkaclusterlistSettingsprefixedwith‘kafka.eagle.’willbedeprecated,use‘efak.’instead######################################efak.zk.cluster.alias=clu
- ZooKeeper 概述
龙大.
Zookeeperzookeeper分布式云原生
定义和功能ZooKeeper是一个开源的分布式协调服务,由Apache软件基金会托管。它主要用于解决分布式应用中遇到的一些复杂问题,如命名服务、状态同步服务、集群管理、分布式锁和队列管理等。核心特性一致性:ZooKeeper保证了客户端之间的数据一致性,即客户端无论连接到哪一个ZooKeeper服务器,看到的数据都是一致的。简单的数据模型:ZooKeeper维护了一个类似文件系统的数据结构,它的数
- redis实现分布式锁
yongbuyanqi9467
分布式锁介绍在java的开发中,我们一般在需要并发访问的资源上使用加锁Lock或者synchronized来同步访问,但是只能针对单个jvm内的加锁,当系统需要在多个系统之间访问同一个受保护的资源时,就需要用到分布式锁的机制了,比如在电商网站网站的高并发情况下,大量请求需要扣减库存,而扣减库存的操作需要受保护的。常见的实现分布式锁的方案由通过zookeeper的临时有序节点,数据库的自增主键和今天
- ZooKeeper和Diamond有什么不同
清风羽
分布式系统相关zookeeper分布式云原生
本文主要是讨论下两个类似产品:ZooKeeper和Diamond在配置管理这个应用场景上的异同点。Diamond,顾名思义,寄寓了开发人员对产品稳定性的厚望,希望它像钻石一样,提供稳定的配置访问。Diamond是淘宝网Java中间件团队的核心产品之一,服务于集团线上很多核心应用。目前已经开源,开源地址在:http://code.taobao.org/p/diamond/wiki/index/。数据
- zookeeper 使用
SkTj
zookeeper介绍zookeeper是一个为分布式应用提供一致性服务的软件,它是开源的Hadoop项目中的一个子项目,并且根据google发表的论文来实现的,接下来我们首先来安装使用下这个软件,然后再来探索下其中比较重要一致性算法。zookeeper安装和使用zookeeper的安装基本上可以按照http://hadoop.apache.org/zookeeper/docs/current/z
- hbase、hive、clickhouse对比
freshrookie
hbasehivehadoop
概念架构hbasemaster存储元数据、regionServer实际控制表数据,存储单位是Region,底层数据存储使用HDFShive通过driver将sql分解成mapreduce任务元数据需要单独存储到一个关系型数据库,一般是mysql实际数据存储可以是外表,也可以是内表clickhouse单体架构分层类似mysql,集群状态下是多主,通过zookeeper通信数据存储看引擎,最重要的引擎
- 常用中间件docker安装
Happywzy~
中间件docker容器
zookeeperdockerrun-d--namezookeeper-p2181:2181--restartalways-eZOO_MY_ID=1-eALLOW_ANONYMOUS_LOGIN=yes-eTZ=Asia/Shanghai-v/etc/localtime:/etc/localtimezookeeper:3.7kafka#注意:KAFKA_CFG_ADVERTISED_LISTENE
- Springboot中使用Redisson实现分布式锁
追风人聊Java
分布式SpringbootRedisredismysql分布式锁分布式redisson
1.概述老话说的好:便宜没好货,有价值的商品,即使再贵,也有人会买。言归正传,今天继续讨论有关“锁”的话题,synchronized和ReentrantLock大家应该都非常熟悉了,但这两个锁,作用域仅限制于单个Tomcat,如果使用了Tomcat集群,这两个锁就不管用了。此时我们就要引入分布式锁了,分布式锁的实现方式有很多,可以使用Mysql数据库实现,也可以使用Zookeeper实现,当然比较
- Python 爬虫从入门到精通
武帝为此
python爬虫python爬虫开发语言
一、爬虫简介爬虫用来自动获取网络上信息。Python因其丰富的第三方库和易读性,成为了爬虫开发的热门选择。二、环境配置与基本工具1.Python环境配置安装Python3.x版本并配置好环境。DownloadPython|Python.org2.常用库介绍requests:用于处理HTTP请求的库,可以发送GET、POST等请求并获取响应数据。BeautifulSoup:用于解析HTML或XML文
- Zookeeper实现分布式锁
正在绘制中
分布式zookeeper云原生
Zookeeper实现分布式锁案例在分布式场景下,单机的锁已经无法实现对并发的控制,我们需要专门用分布式锁来在分布式环境下实现对多个进程能够有序的访问资源。首先需要确保有hadoop102,hadoop103,hadoop104三台虚拟机并且都安装成功且配置成功了zookeeper。原生Zookeeper实现分布式锁案例编写DistributedLock实现分布式锁的简易写法。上面配置zookee
- docker安装kafka和kafka-console-ui
李君临
dockerkafkaui
3、安装kafkahttps://blog.csdn.net/m0_64210833/article/details/134199061kafka依赖Zookeeper,当然也可以用内置的kraft。安装前提条件1.安装Zookeeper1.1运行ZooKeeper容器2.运行Kafka容器2.1启动Kafka容器3.验证3.1进入Kafka容器3.2查看容器状态3.3查看容器日志3.4重新启动容
- Nacos、Eureka、Zookeeper注册中心的区别
潇洒大舅哥
eurekazookeeper
Nacos、Eureka和Zookeeper都是常用的注册中心,它们在功能和实现方式上存在一些不同。Nacos除了作为注册中心外,还提供了配置管理、服务发现和事件通知等功能。Nacos默认情况下采用AP架构保证服务可用性,CP架构底层采用Raft协议保证数据的一致性。Nacos适合作为微服务注册中心和配置管理中心,支持快速发现、配置管理和服务治理等功能。Eureka是只提供注册中心功能的工具,它的
- zookeeper动态扩缩容(无需重启)
cj_eryue
zookeeperzookeeperlinux分布式
目录一、启动一个zk二、扩容一个zk三、缩容一个zk四、重新配置集群的节点前言:zookeeper动态扩/缩容的reconfig命令旨在不需要重启zookeeper中任何一个节点的情况下,对整个zookeeper集群进行动态扩/缩容。zookeeper客户端支持的命令:[zk:localhost:2181(CONNECTED)5]helpZooKeeper-serverhost:port-clie
- Eureka/Zookeeper/Nacos实现注册中心区别
超级码里喵
SpringCloudEurekaNacoszookeeper
一、CAP定律CAP理论:Consistency(一致性)Availability(可用性)Partitiontolerance(分区容错性)必然存在在我们集群中,如果某个服务器宕机(故障):保证数据一致性:一致性(CP)保证服务可用性:可用性AP这个定理的内容是指的是在一个分布式系统中、Consistency(一致性)、Availability(可用性)、Partitiontolerance(分
- Hadoop生态圈
陈超Terry的技术屋
生态圈1.HBase的数据存储在HDFS里2.MapReduce可以计算HBase里的数据,也可以计算HDFS里的数据3.Hive是数据分析数据引擎,也是MapReduce模型,支持SQL4.Pig也是一个数据分析引擎,不支持SQL,有自己的PigLatin数据5.Sqoop是数据采集工具,针对关系数据库6.Flume是针对文件等数据的采集7.Hadoop的HA通过Zookeeper来实现8.HU
- Kafka常用命令汇总(一)
秋风暮霞挽红曲_5f60
Kafka常用命令汇总:1、列出集群里的所有主题。kafka-topics.sh--zookeeperlocalhost:2181--list2、创建一个叫作topic_01的主题,主题包含8分区,每个分区拥有两个副本。kafka-topics.sh--zookeeperlocalhost:2181--create--topictopic_01--replication-factor3--part
- Spring Boot Redis 实现分布式锁,真香
Javaesandyou
java程序人生springspringboot开发语言
之前看很多人手写分布式锁,其实SpringBoot现在已经做的足够好了,开箱即用,支持主流的Redis、Zookeeper中间件,另外还支持JDBC。本篇栈长以Redis为例(这也是用得最多的方案),教大家如何利用SpringBoot集成Redis实现缓存,如何简单、快速实现Redis分布式锁。分布式锁介绍SpringBoot实现Redis分布式锁在spring-integration这个项目中,
- XMall 开源商城 SQL注入漏洞复现(CVE-2024-24112)
OidBoy_G
漏洞复现web安全安全sql
0x01产品简介XMall开源电商商城是开发者Exrick的一款基于SOA架构的分布式电商购物商城前后端分离前台商城:Vue全家桶后台管理:Dubbo/SSM/Elasticsearch/Redis/MySQL/ActiveMQ/Shiro/Zookeeper等。0x02漏洞概述XMall开源商城/item/list、/item/listSearch、/sys/log、/order/list、/m
- 在Ubuntu下搭建开发环境
关于本文写作目标:作为在linux下安装JDK、MySQL、Zookeeper、Redis、MongoDB、RabbitMQ等开发组件的快速参考指南Linux版本:LinuxMint18.2Sonya(基于Ubuntu16.04Xenial)实战记录JAVAOpenJDK1sudoaptinstallopenjdk-8-jdkMySQL23安装wgethttps://dev.mysql.com/g
- zookeeper无法启动产生原因及解决办法
ljf8838
exception分布式zookeeperlinux分布式
zookeeper无法启动产生原因:在安装目录下的conf文件夹下的zoo.cfg文件,其中dataDir属性与dataDirLog属性两个指定的文件目录需要确实存在才可以。zookeeper启动时,如果这两个属性指定的文件路径不存在,不会自动创建,需要手动创建。然后重新启动。zookeeper启动命令:在bin文件夹下,执行命令:Linux:./zkServer.shstartwindows:/
- CentOS6.7安装Oracle 11g2R傻瓜图文教程
DimonHo
linuxoracleVMwareoraclelinux
环境准备约定格式系统参数配置安装oracle创建监听创建数据库实例环境准备CentOS6.7_x64_minimal_desktop的虚拟机一台(安装oracle需要图形界面,所以选择安装minimal_desktop版本的)。xftp5。linux.x64_11gR2_database_1of2.zip。linux.x64_11gR2_database_2of2.zip。为了方便在虚拟机中复制粘
- Zookeeper
efzy
大数据zookeeper分布式云原生
Zookeeper第1章Zookeeper入门Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目。1.1Zookeeper工作机制1.2特点1)Zookeeper:一个领导者(Leader),多个跟随者(Follower)组成的集群。2)集群中只要有半数以上节点存活,Zookeeper集群就能正常服务。所以Zookeeper适合安装奇数台服务器。3)全局数据一致:每
- Zookeeper未授权访问漏洞
杭城我最帅
zookeeper分布式
Zookeeper漏洞介绍Zookeeper支持某些特定的四字查询命令,可以未授权访问,从而泄露zookeeper服务的相关信息,这些信息可能作为进一步入侵其他系统和服务的跳板,利用这些信息实现权限提升并逐渐扩大攻击范围。常见的四字命令有envi、conf、cons、crst、dump、ruok、stat、srvr、mntrenvi漏洞场景漏洞修复1.禁止2181端口暴露,开启防火墙或只允许本地访
- zookeeper源码(08)请求处理及数据读写流程
xuguofeng2016
SpringCloudzookeeper分布式组件zookeeper分布式springcloudjava
ServerCnxnFactory用于接收客户端连接、管理客户端session、处理客户端请求。ServerCnxn抽象类代表一个客户端连接对象:从网络读写数据数据编解码将请求转发给上层组件或者从上层组件接收响应管理连接状态,比如:enableRecv、sessionTimeout、stale、invalid等保存当前的packetsReceived、packetsSent、lastCxid、la
- 测试环境搭建整套大数据系统(三:搭建集群zookeeper,hdfs,mapreduce,yarn,hive)
宇智波云
大数据项目zookeeperhdfsmapreducehive
一:搭建zkhttps://blog.csdn.net/weixin_43446246/article/details/123327143二:搭建hadoop,yarn,mapreduce。1.安装hadoop。sudotar-zxvfhadoop-3.2.4.tar.gz-C/opt2.修改java配置路径。cd/opt/hadoop-3.2.4/etc/hadoopvimhadoop-env.
- Python操作Kafka基础教程
Python私教
Kafkapythonkafka开发语言
01Python操作Kafka基础教程创建ZooKeeper容器dockerrun-d--namezookeeper-p2181:2181-v/etc/localtime:/etc/localtimewurstmeister/zookeeper创建Kafka容器语法是:dockerrun-d--namekafka-p9092:9092-eKAFKA_BROKER_ID=0-eKAFKA_ZOOKE
- Kafka的介绍
kimi-001
Kafkakafka分布式
文章目录一、介绍二、消息队列通信的模式三、特性四、使用场景五、核心概念一、介绍kafka是一个分布式的发布订阅消息系统基于Zookeeper协调最初由Linkedin公司开发,于2010年贡献给了Apache基金会并成为顶级开源项目Kafka的核心是由Scala语言编写,Kafka的客户端库使用Java语言编写二、消息队列通信的模式点对点模式消息持久化到一个队列中一个或多个消费者消费队列中的消息,
- Docker部署Kafka单机版
Python私教
Kafkadockerkafka容器
01Docker部署Kafka单机版创建ZooKeeper容器dockerrun-d--namezookeeper-p2181:2181-v/etc/localtime:/etc/localtimewurstmeister/zookeeper创建Kafka容器语法是:dockerrun-d--namekafka-p9092:9092-eKAFKA_BROKER_ID=0-eKAFKA_ZOOKEE
- Zookeeper 集群部署的那些事儿
牧小农
简介真是一个大聪明额。。。。,&*$%淘气!ZooKeeper是Apache的一个顶级项目,为分布式应用提供高效、高可用的分布式协调服务。ZooKeeper本质上是一个分布式的小文件存储系统。提供类似于文件系统目录树方式的数据存储,并且可以对书中的节点进行有效管理。从而用来维护和监控存储的数据的状态变化,通过监控这些数据状态的变化,实现基于数据的集群管理。运行模式ZooKeeper运行模式有三种:
- Vue总结
CV-gcs
java全栈vue
0.Node.js安装及环境配置安装注意:切换盘符位置和添加到环境变量即可查看是否安装成功:node-v环境配置:(全局模块配置)在安装的nodejs目录下创建文件夹node_cachenode_global修改文件D:\environment\nodejs\node_modules\npm\npmrcprefix=D:\environment\nodejs\node_globalcache=D:
- 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独立出来,数据持