- helm 部署 Kube-Prometheus + Grafana + 钉钉告警部署 Kube-Prometheus
zxj19880502
grafanaprometheus
背景角色IPK8S版本容器运行时k8s-master-1172.16.16.108v1.24.1containerd://1.6.8k8s-node-1172.16.16.109v1.24.1containerd://1.6.8k8s-node-2172.16.16.110v1.24.1containerd://1.6.8安装kube-prometheusmkdir-p/data/yaml/kub
- OpenCV 如何使用 XML 和 YAML 文件的文件输入和输出
愚梦者
深度学习人工智能计算机视觉c++opencv
返回:OpenCV系列文章目录(持续更新中......)上一篇:如何利用OpenCV4.9离散傅里叶变换下一篇:目标本文内容主要介绍:如何使用YAML或XML文件打印和读取文件和OpenCV的文本条目?如何对OpenCV数据结构做同样的事情?如何为您的数据结构执行此操作?使用OpenCV数据结构,例如cv::FileStorage,cv::FileNodeorcv::FileNodeIterato
- flutter boost 如何从native跳转到flutter页面
Icarus_
flutterflutter
FlutterBoost是一个Flutter插件,它可以帮助开发者在原生应用和Flutter应用之间无缝跳转。以下是一些基本步骤,展示了如何使用FlutterBoost从原生(Native)页面跳转到Flutter页面。1.配置FlutterBoost在你的Flutter项目中集成FlutterBoost插件。这通常涉及到修改`pubspec.yaml`文件来添加依赖项,并根据FlutterBoo
- 利用K8S Statefulset搭建Etcd集群 - 本地存储
夜晓码农
大数据Dockerkubernetesetcd容器
目录概述测试环境yaml配置service.yamlcluster.yamlQ&A参考链接概述公司因项目需要使用K8S部署ETCD集群供其他业务调用,网上搜索了解了下,一般K8S搭建ETCD集群大部分都是使用EtcdOperator来搭建。但是公司的项目运行在离线ARM架构平台,直接使用网上EtcdOperator代码,他们提供的镜像都是x86_64架构,经过Opeartor编译等尝试,最后都以失
- CI/CD脚本简介,YAML介绍,Editor解析
刘姥姥爱学习
日常开发-pythonci/cdgitgithubyaml
说明:此篇文章纯概念,没有实际操作,实际操作请蹲下一篇!CI/CD理解这段代码是用于配置GitLabCI/CD(ContinuousIntegration/ContinuousDeployment)的YAML语法。GitLabCI/CD是一种自动化软件,用于自动化软件的构建、测试和部署过程。下面是对这段代码的详细解释和翻译配置项描述stages定义了CI/CD流程中的三个阶段:合并请求阶段(mer
- Java实战开发之swagger配置及访问
丁小喜
java开发语言swaggerspringboot
今天来讲讲swagger目录一、swagger简介及主要特点二、swagger的配置一、swagger简介及主要特点Swagger是一个流行的开源框架,用于生成、描述、调用和可视化RESTful风格的Web服务。它可以让开发者和用户更方便地理解和使用API。Swagger通过定义RESTfulAPI的规范(使用YAML或JSON格式)来实现这些功能。这些规范称为OpenAPI规范(之前称为Swag
- 云原生周刊:Istio 加入 Phippy 家族 | 2024.3.18
KubeSphere 云原生
k8s容器平台kubesphere云计算
开源项目推荐ko"ko"是一个用于构建和部署Go应用程序的简单、快速的容器镜像构建工具。它适用于那些镜像中只包含单个Go应用程序且没有或很少依赖于操作系统基础镜像的情况(例如没有cgo,没有操作系统软件包依赖)。"ko"在本地机器上通过执行"gobuild"的方式构建镜像,因此不需要安装Docker。这使得它非常适合轻量级的CI/CD场景。"ko"支持简单的YAML模板化,并且支持跨平台构建,还默
- Yaml格式解析
熊猫Devin
深度学习之常用文件解析服务器linuxubuntu
文章目录YAML格式介绍YAML格式解析YAML格式介绍YAML(YAMLAin’tMarkupLanguage)是一种常用于配置文件的人类可读的数据序列化标准。它通常用于存储和传输数据,并且由于其简洁性、可读性和易于编写的特性,它经常被用于编写配置文件和API响应。YAML的基本语法大小写敏感:YAML对大小写敏感。数据值前的空格:在键值对中,冒号后面必须有一个空格,表示值的开始。3.块样式:数
- 【使用docker 搭建Java仓库 nexus 】
小吴小吴bug全无
kubernetesdockerjava容器kubernetes
yaml---apiVersion:apps/v1kind:StatefulSetmetadata:annotations:k8s.eip.work/displayName:Nexus服务k8s.eip.work/ingress:'false'k8s.eip.work/service:ClusterIPk8s.eip.work/workload:nexuslabels:k8s.eip.work/l
- k8s Yaml语法解析
Starts️
哈希算法算法
YAML是一个类似XML、JSON的标记性语言。它强调以数据为中心,并不是以标识语言为重点。因而YAML本身的定义比较简单,号称"一种人性化的数据格式语言"。YAML的语法比较简单,主要有下面几个:1、大小写敏感2、使用缩进表示层级关系3、缩进不允许使用tab,只允许空格(低版本限制)4、缩进的空格数不重要,只要相同层级的元素左对齐即可5、'#'表示注释YAML支持以下几种数据类型:1、纯量:单个
- k8s之DashBoard
蓝桉 释槐
kubernetes容器云原生
一,详述:基于web的用户界面二,部署:1),下载yaml并运行wgethttps://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml2),修改kubernetes-dashboard的Service类型apiVersion:v1kind:Namespacemetadata:name
- go 语言解析yaml,告别一个文件一个struct
飘过的倦
gogolang开发语言后端
yaml文件是现在很流行的一种配置文件,具有结构清晰,层次分明的特点。它是json的一个超集,解析出来的内容在python中对应着字典,go语言中可以解析为结构体。曾经作为初学者,现在依旧是初学者的我,用go解析yaml文件,也是一个文件定义一次结构体,结构体中定义大量的tag是非常繁琐的工作。于是我就自己写了一个代码,解析为一个通用的map,并序列化为json,为什么序列化为json呢,方便以后
- spring boot 之 spring.profiles
ithankzc
系统默认文件可以用默认的application.properties,但是推荐用application.yaml区分环境配置文件命名:application-{environment}.yaml如本地环境开发,则可配置application-local.yaml如development环境,则可配置application-development.yaml如production环境,则可配置appl
- 【Hadoop】使用Metorikku框架读取hive数据统计分析写入mysql
方大刚233
HadoopScalahadoophivemysql
一、定义作业文件作业文件该文件将包括输入源、输出目标和要执行的配置文件的位置,具体内容如下metrics:-/user/xrx/qdb.yaml#此位置为hdfs文件系统目录inputs:output:jdbc:connectionUrl:"jdbc:mysql://233.233.233.233:3306/sjjc"user:"root"password:"123456"driver:"com.
- [工具探索]-Gitlab的CI/CD操作
ifanatic
容器gitlabci/cdgit
在GitLab中,CI(持续集成)是一项强大的功能,它允许你自动化构建、测试和部署你的代码。在GitLabCI/CD中,.gitlab-ci.yml文件是用于定义构建和部署流程的配置文件。它使用一种基于YAML的语法。下面是一个简单的.gitlab-ci.yml文件的例子#.gitlab-ci.ymlstages:-build-test-deployvariables:#定义环境变量DATABAS
- 【Flink精讲】Flink单机安装步骤
话数Science
FlinkFlink精讲大数据flink大数据
Flink单机安装步骤获取Flink安装包:Indexof/flink解压缩:tar-zxvfflink-1.17.2-bin-scala_2.12.tgz修改配置文件:conf/flink-conf.yaml启动命令:./bin/start-cluster.sh终止命令:./bin/stop-cluster.sh启动SQLClient:./bin/sql-client.shembedded如果w
- 微服务架构师封神之路11-eureka服务高可用
B5WANG
微服务架构实践eureka微服务springcloud
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档微服务架构师封神之路11-eureka服务高可用任务eurekaserverpom.xml依赖application.yamlsettings3节点集群服务eurekaclientpom.xmlapplication.yamltest任务一些设计比较老的应用使用eureka作为服务注册发现组件。产品实施的时候不得不考虑高可用的问题。实
- Pod调度策略、Pod标签管理、Pod资源配额与限额、全局资源配额与限额策略
Mick方
容器kubelet云原生
Pod调度策略基于节点的调度[root@master~]#vimmyhttp.yaml---kind:PodapiVersion:v1metadata:name:myhttpspec:nodeName:node-0001#基于节点名称进行调度containers:-name:apacheimage:myos:httpd[root@master~]#kubectlapply-fmyhttp.yaml
- C# OpenVino Yolov8 Pose 姿态识别
乱蜂朝王
人工智能c#openvinoYOLO
目录效果模型信息项目代码下载效果模型信息ModelProperties-------------------------date:2023-09-07T17:11:43.091306description:UltralyticsYOLOv8n-posemodeltrainedon/usr/src/app/ultralytics/datasets/coco-pose.yamlauthor:Ultra
- Springboot 使用升级小记-MVC path
牧码人 - blacksonny在路上
java体验springspringbootspringbootmvc后端
上文Springboot使用升级小记-循环依赖在升级springboot时遇到了循环依赖的问题,这次说说mvcpath问题。升级到新的版本后,mvcpath匹配有变化,我们的老项目使用springboot与jsp的集成,也就是请求url都是遵循如*.do*.json*.action等形式的请求。那么升级都就出现404的错误。此时需要做如下配置在application.yaml:mvc:pathma
- K8S 滚动升级&持久化实战案例
lqcbj_IT老混混
Linux运维Dockerk8skubernetesdocker
K8S滚动升级与持久化实战案例滚动升级案例假设我们有一个名为webapp的Deployment,它运行着一个Web应用程序,并且当前正在使用版本v1的镜像。现在,我们希望将应用程序升级到v2版本,而不中断服务。以下是一个简化的滚动升级步骤:1.更新Deployment的镜像版本首先,我们编辑webapp的Deployment配置文件,将镜像版本从v1更新到v2。yamlapiVersion:app
- 【Java】springboot整合jasypt
果壳~
javaspringboot开发语言
目录jasyptspringboot集成jasypt1.引入maven依赖2.启动类添加注解3.yaml配置4.加解密测试类jasypt保证项目中的账号密码不以明文的形式展示springboot集成jasypt1.引入maven依赖com.github.ulisesbocchiojasypt-spring-boot-starter3.0.42.启动类添加注解importcom.ulisesbocc
- Springboot打war包部署读取外部配置.yml文件的方法
沧海一声笑嘎嘎
springbootspringbootapplication.ymlymljava
背景说明当我们使用springboot开发时,有的时候需要打war包在外部tomcat部署,方便运维人员维护,但是修改配置文件后重新打包给运维的时候,又需要修改一些配置这样还是不方便维护。在网上找了很多例子但是都是针对.properties文件,读取.yml文件会有问题,当我在看关于springboot加载yml文件时发现需要用到其他的类,YamlPropertiesFactoryBean和Yam
- SpringBoot学习笔记总结——动力节点
动力节点铁杆粉丝
最近跟着动力节点王鹤老师的视频学到了springboot,看过最细的springboot讲解,初学入门最佳,自己做了笔记分享给大家视频资源:https://www.bilibili.com/video/BV1XQ4y1m7ex1.外部资源properties的几种导入方式1.1使用注解直接在实体类上赋值imageimage.gif1.2通过yaml赋值,在实体类中引用@ConfigurationP
- Docker Compose 模板文件
撸帝
学习完整课程请移步互联网Java全栈工程师模板文件是使用Compose的核心,涉及到的指令关键字也比较多。但大家不用担心,这里面大部分指令跟dockerrun相关参数的含义都是类似的。默认的模板文件名称为docker-compose.yml,格式为YAML格式。version:"3"services:webapp:image:examples/webports:-"80:80"volumes:-"
- 12-资源注解annotations和安全行下文securityContext(了解即可)
心机の之蛙
k8s系列安全
一、资源注解annotations资源注解,annotations就是对资源进行注释;应用场景:给资源(例如pod资源)提供配置信息,类似于帮助信息;早期使用比较多,很多开源组件一般都会使用;1,编辑一个pod资源清单加资源注解案例[root@k8s231annottations]#catpod.yamlapiVersion:v1kind:Podmetadata:name:pod-01labels
- docker (八)-docker compose容器编排
小关暗器
docker容器运维
在实际工作中,部署一个应用可能需要部署多个容器,一个一个部署非常不方便。dockercompose可以一键部署和启动多个容器,它使用yaml文件来编排服务。github和dockerhub很多项目都提供了docker-compose.yaml文件,我们可以一键部署项目,非常方便。这里可以使用vscode去学习dockercompose的格式一键部署将以下内容保存到本地的docker-compose
- cicd
https
定义需要部署的资源K8SKustomization方式部署deployment.yaml定义一组pod的资源,可以由多个pod组成容器组,不过一般不建议这么做,而是各个服务独立开来主要定义的资源image使用的镜像(从公司harbor读取)env环境变量(consul的地址和token)ports对外暴露服务的端口resources资源限制(hpa扩容的依据)readinessProbe,live
- Python+appium+yaml移动端自动化测试框架实现详解
代码小怡
pythonappium软件测试程序员接口测试自动化测试测试工程师
结构介绍之前分享过一篇安卓UI测试,但是没有实现数据与代码分离,后期维护成本较高,所以最近抽空优化了一下。大致结构如下:testyaml管理用例,实现数据与代码分离,一个模块一个文件夹public存放公共文件,如读取配置文件、启动appium服务、读取Yaml文件、定义日志格式等page存放最小测试用例集,一个模块一个文件夹results存放测试报告及失败截图logs存放日志testcase存放测
- python主讲移动端自动化测试框架appium_GitHub - h080294/appium_python_android: Android移动端自动化测试框架...
weixin_39663605
appium_pyton_android继承并封装了appium,Android移动端自动化测试框架。支持多设备并发运行testcase,直接错误log及截图功能,html输出测试报告等。简单介绍下用法:1、运行前请添加测试包、设备信息到config.yaml中NiceAPK:/Users/xxxxx/xxx.apk#测试包的路径Devices:deviceid:5HUC9S6599999999#
- 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独立出来,数据持