- 网易云音乐pac
猪猪一号
functionFindProxyForURL(url,host){if(host=='sentry.music.163.com'||host=='clientlog3.music.163.com'||host=='clientlog.music.163.com'||host=='music.163.com'||host=='interface.music.163.com'||host=='int
- Web前端最全初识Sentry前端监控,浅谈前端消息机制原理
2401_84433924
程序员前端sentry
Vue编码基础2.1.1.组件规范2.1.2.模板中使用简单的表达式2.1.3指令都使用缩写形式2.1.4标签顺序保持一致2.1.5必须为v-for设置键值key2.1.6v-show与v-if选择2.1.7script标签内部结构顺序2.1.8VueRouter规范Vue项目目录规范2.2.1基础2.2.2使用Vue-cli脚手架2.2.3目录说明2.2.4注释说明2.2.5其他开源分享:【大厂
- 9.迁移CM和数据库-2
大勇任卷舒
9.1将原CM节点数据迁移至新节点9.1.1备份原CM节点数据主要备份CM的监控数据和管理信息,数据目录包括:/var/lib/cloudera-host-monitor/var/lib/cloudera-service-monitor/var/lib/cloudera-scm-server/var/lib/cloudera-scm-eventserver/var/lib/cloudera-scm
- 大数据基础之Flume——Flume基础及Flume agent配置以及自定义拦截器
Clozzz
Flume大数据flumehadoop
Flume简介Flume用于将多种来源的日志以流的方式传输至Hadoop或者其他目的地 -一种可靠、可用的高效分布式数据收集服务Flume拥有基于数据流上的简单灵活架构,支持容错、故障转移与恢复由Cloudera2009年捐赠给Apache,现为Apache顶级项目Flume架构Client:客户端,数据产生的地方,如Web服务器Event:事件,指通过Agent传输的单个数据包,如日志数据通常对
- Flume介绍及调优
桓桓桓桓
分布式大数据日志搜集
一、概述Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。当前Flume有两个版本Flume0.9X版本的统称Flume-og,Flume1.X版本的统称Flume-ng。由于Flume-ng经过重大重构,与Flu
- 大数据技术之Flume
okbin1991
大数据flumejavahadoop开发语言
第1章Flume概述1.1Flume定义Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简单。1.2Flume基础架构Flume组成架构如下图所示。1.2.1AgentAgent是一个JVM进程,它以事件的形式将数据从源头送至目的。Agent主要有3个部分组成,Source、Channel、Sink。1.2.2Sourc
- ubuntu16.04安装 ambari 2.7.3的环境准备工作
lbl251
0、登录官网先看下资料https://docs.cloudera.com/HDPDocuments/Ambari-2.7.3.0/bk_ambari-installation/content/setup_options.html1、准备好安装包(ambari安装包)(要用root用户最好)https://docs.hortonworks.com/HDPDocuments/Ambari-2.7.3.
- 基于Hadoop平台的电信客服数据的处理与分析④项目实现:任务16:数据采集/消费/存储
我非夏日
大数据开发---电信项目大数据大数据技术开发hadoop
任务描述“数据生产”的程序启动后,会持续向callLog.csv文件中写入模拟的通话记录。接下来,我们需要将这些实时的数据通过Flume采集到Kafka集群中,然后提供给HBase消费。Flume:是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据
- CDH 启停使用HiveServer2
金刚_30bf
翻译:https://www.cloudera.com/documentation/enterprise/latest/topics/cdh_ig_hiveserver2_start_stop.html版本:5.14.2HiveServer2是HiveServer的改进版本,支持Kerberos身份验证和多客户端并发访问。您可以使用Beeline客户端访问HiveServer2。警告:如果以远程模
- 鸿蒙LiteOS-M 内核初始化
嵌入式底层
c语言开发语言OpenHarmonyLiteOS物联网
目录一、LiteOS-M初始化内核二、LOS_KernelInit代码分析三、LOS_Start代码解析坚持就有收获一、LiteOS-M初始化内核在LiteOS-M应用程序中,系统初始化如下:/***@briefThisistheohosentry,andyoucouldcallthisinyourmainfuncitonafterthe*necessaryhardwarehasbeeniniti
- 大数据分析学习第十五课 自建云服务器集群离线安装Ambari2.7.5和HDP3.1.5(一)
猫头鹰数据分析
大数据JavaHivehadoopambari大数据centoshdfs
之前了解了很多关于大数据平台一站式部署管理的工具,比如ApacheAmbari和CDH,目前最新的CDH已经没有了社区版,也就是说以后使用新版本的ClouderaManager和CDH都是要收费的,这对于很多小公司来说,可能无法承受。转向Ambari是他们的一个可选项。Ambari是Apache的一个顶级开源项目,开源是其最大的优势,开源也意味着Ambari可以灵活地进行扩展,集成更多的数据组件,
- 在docker中部署sentry
燃灯工作室
Sentry
1.sentry是什么?Sentry是一个实时事件的日志聚合平台。它专门监测错误并提取所有有用信息用于分析,不再麻烦地依赖用户反馈来定位问题。2.利用docker部署sentry2.1.下载镜像dockerpullredis:6.0.9dockerpullpostgres:13.3dockerpullsentry:9.1.2备注:redis和postgres只需要以最简单的方式启动即可,因为不使用
- golang 集成sentry:http.Client
谭树杰的博客
sentrygolangsentryhttp
http.Client是Go标准库HTTP客户端实现,sentry-go也没有这个组件,所以需要自己实现。我们只需要对http.Transport进行包装即可,完整代码如下packagemainimport("bytes""fmt""io""log""net/http""time""github.com/getsentry/sentry-go")typetracingTransportstruct
- vue应用集成sentry: 超过20M文件无法上传问题 sentry reported an error: bad gateway (http status: 502)
谭树杰的博客
sentryvue.jssentry
原issue地址https://forum.sentry.io/t/sourcemap-upload-failing-when-file-size-more-than-20mb/4660实际nginx可能也需要修改,参考配置如下server{server_tokensoff;client_header_timeout180m;client_body_timeout180m;send_timeout
- 大数据技术之 Flume
骚戴
大数据大数据Flume
第1章Flume概述1.1Flume定义Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简单。骚戴理解:注意这里是日志采集,也就是只能采集文本类型的数据!Flume的作用的特点就是可以实时采集!1.2Flume基础架构Flume组成架构如下图所示1.2.1AgentAgent是一个JVM进程,它以事件的形式将数据从源头送
- 【大数据】Flume-1.9.0安装➕入门案例
欧叶冲冲冲
flume大数据flume学习分布式
目录前言一、Flume概述Flume基础架构二、Flume-1.9.0安装➕入门案例1.下载1.9.0解压2.监控端口数据官方案例3.实时读取本地文件(hive.log)到HDFS案例4.实时读取目录文件到HDFS案例5.实时监控目录下多个追加文件总结前言大数据解决的无非是海量数据的采集、存储、计算,Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。
- 大数据Flume--入门
泛黄的咖啡店
大数据flume
文章目录FlumeFlume定义Flume基础架构AgentSourceSinkChannelEventFlume安装部署安装地址安装部署Flume入门案例监控端口数据官方案例实时监控单个追加文件实时监控目录下多个新文件实时监控目录下的多个追加文件FlumeFlume定义Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简
- vue应用集成 sentry上传sourcemap不生效, 报错 FileNotFoundError
谭树杰的博客
sentryvue.jssentry前端
vue集成sentry后发现无法上传sourcemap到sentry,查看sentry-worker日志发现报错找不到文件Traceback(mostrecentcalllast):││File"/usr/local/lib/python3.6/site-packages/sentry/tasks/assemble.py",line194,inassemble_artifacts││file_ty
- golang 接入sentry:PostgreSQL和 http.Client
谭树杰的博客
sentrysentrygo
可以参考这篇文章https://anymindgroup.com/news/tech-blog/15724/
- golang 集成sentry
谭树杰的博客
sentrysentrygo后端
错误堆栈处理-消除冗余堆栈参考https://incident.io/blog/golang-errors,可以去掉冗余的stacktrace,在sentryissue页面更容易找到问题redis集成见https://github.com/Shujie-Tan/go-redis-sentryzap库集成https://github.com/TheZeroSlave/zapsentrylogrus库
- go-redis集成sentry
谭树杰的博客
sentrygolangredissentry
网上没有找到go-redis集成sentry的库,所以我简单实现了一个代码:https://github.com/Shujie-Tan/go-redis-sentry使用方法:import(redis_sentry"github.com/Shujie-Tan/go-redis-sentry")rdb:=redis.NewClient(&redis.Options{Addr:"127.0.0.1:6
- 初识kafka
tracy_668
[TOC]Kafka起初是由Linkedin公司采用Scala语言开发的一个多分区、多副本且基于ZooKeeper协调的分布式消息系统,现己被捐献给Apache基金会。目前Kafka已经定位为一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流数据处理等多种特性而被广泛使用。目前越来越多的开源分布式处理系统如Cloudera、Storm、Spark、Flink等都支持与Kafka集成。
- 69.Kudu、Spark2、Kafka安装—CDH
大勇任卷舒
69.1演示环境介绍CDH集群运行正常操作系统版本为:CentOS6.5CM和CDH版本为:5.12.1CM管理员为:admin用户操作系统用户为:root用户69.2操作演示Kudu安装Kudu的Parcel部署下载Kudu的Parcel包:http://archive.cloudera.com/kudu/parcels/5.12.1/KUDU-1.4.0-1.cdh5.12.1.p0.10-e
- Hadoop深度运维:Apache集群原地升级Ambari-HDP
Summer_1981
作者介绍冯武,目前在瓜子从事大数据集群运维管理,主要负责Hadoop、Ansible、Ambari、ClouderaManager等技术栈的维护调优工作。公司从建设Hadoop起,采用了Apache社区版本的Hadoop,随着业务的发展,集群规模越来越来大,现已突破百余节点。在频繁的更改配置、增删节点、监控告警等操作中,传统手工运维的弊端被放得越来越大,日常维护消耗了工程师大量的时间和精力。现状的
- 【汽车行业中的RKE/PKE】
六月悉茗
汽车电子网络嵌入式硬件网络协议
什么是RKE/PKERKE和PKE都是汽车行业中的无钥匙进入系统的缩写。RKE是远程钥匙(RemoteKeylessEntry)的缩写,它是一种无线遥控系统,允许车主使用遥控器通过车门锁解锁或锁定车辆。通常,这种系统需要在遥控器上按下一个按钮才能解锁或锁定车辆。PKE是被动进入系统(PassiveKeylessEntry)的缩写,它是一种更高级的无钥匙进入系统。PKE系统使用一种名为无线射频识别(
- Spark Chapter 8 Spark SQL
深海suke
【参考以慕课网日志分析为例进入大数据Sparksql】0导读SQL:MySQL,Oracle,DB2,SQLServer在大数据平台上实现大数据计算:Hive/SparkSQL/SparkCore直接使用SQL语句进行大数据分析hive的问题:底层MR,2.x之后可以用spark应用场景SQLonHadoop:Hive,Shark(不维护了),Impala(Cloudera,内存使用较多),Pre
- 《Python 网络爬虫简易速速上手小册》第9章:爬虫项目的部署与运维(2024 最新版)
江帅帅
《Python网络爬虫简易速速上手小册》python爬虫计算机网络数据分析数据挖掘人工智能web3
文章目录9.1爬虫的部署策略9.1.1重点基础知识讲解9.1.2重点案例:使用Docker部署爬虫到云服务平台9.1.3拓展案例1:使用Kubernetes管理爬虫的部署和扩展9.1.4拓展案例2:利用GitHubActions实现CI/CD9.2日志管理与错误处理9.2.1重点基础知识讲解9.2.2重点案例:使用Pythonlogging模块进行日志管理9.2.3拓展案例1:使用Sentry进行
- CDH使用Disk Balancer平衡磁盘HDFS数据
Alderaan
ClouderaCDHclouderahdfsdiskbalancer
文章目录前言启用磁盘平衡器生成磁盘平衡器任务执行磁盘平衡任务查询磁盘平衡任务是否完成参考来源前言当集群磁盘空间不足时,需要增加新硬盘到机器,此时新加入的磁盘空间基本为空,而旧磁盘则已占用很多。网上则是通过增减副本的方式达到磁盘平衡方式,但如果磁盘空间大小本身不一致,通过该方法平衡后,磁盘空间不平衡情况依然存在。从CDH5.8.2开始,ClouderaManager提供了一个全面的存储容量管理解决方
- 在 CDH 中调优 Apache Hive on Spark
海阔天空&沫语
大数据/架构hivehadoopspark
Spark上的Hive在提供相同功能的同时提供比MapReduce上的Hive更好的性能。在Spark上运行Hive不需要更改用户查询。具体来说,完全支持用户定义函数(UDF),并且大多数与性能相关的配置都使用相同的语义。本主题介绍如何在Spark上配置和调整Hive以获得最佳性能。本主题假设您的集群由ClouderaManager管理,并且您使用YARN作为Spark集群管理器。以下部分中描述的
- CDH6.3.2 多 Spark 版本共存
大数据AI
大数据从入门到精通sparkcdh
一部署Spark客户端1.1部署spark3客户端tar-zxvfspark-3.3.1-bin-3.0.0-cdh6.3.2.tgz-C/opt/cloudera/parcels/CDH/libcd/opt/cloudera/parcels/CDH/libmvspark-3.3.1-bin-3.0.0-cdh6.3.2/spark3将CDH集群的spark-env.sh复制到/opt/cloud
- 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独立出来,数据持