- kubeadm_k8s_v1.31高可用部署教程
techzhi
kubernetes容器云原生
kubeadm_k8s_v1.31高可用部署教程实验环境部署拓扑图**部署署架构****LoadBalance****Controlplanenode****Workernode****资源分配(8台虚拟机)**集群列表前置准备关闭swap开启ipv4转发更多设置1、VerifytheMACaddressandproduct_uuidareuniqueforeverynode2、Checknetw
- Java——通配符以及上下限
六七_Shmily
javajavawindows开发语言
在Java泛型中,通配符?用于表示未知类型,通常用于增强泛型的灵活性。通配符可以与上限和下限结合使用,进一步限制类型的范围。以下是通配符及其上下限的详细介绍:一、通配符?的基本用法通配符?表示未知类型,可以用于泛型类、泛型接口和泛型方法的参数类型。示例:使用通配符//定义一个方法,接受任意类型的ListpublicstaticvoidprintList(Listlist){for(Objectel
- linux-网络相关概念
zdd56789
红帽学习记录网络linux运维
一、tcp/ip网络模型tcp/ip网络模型包含4层(应用、传输、internet、链路),描述不同协议如何进行互操作,以便计算机通过互联网将流量从一台计算机发送到另一台计算机应用applicationo层:应用程序,常见应用包括ssh、https、nfs或cifs、smtp等传输transport层:tcp和udp+端口,/etc/services文件中可以找到常用和已注册的端口列表。数据包在网
- C# 如何使用 webview2 调用本地html文件
花咔咔
c#
1.下载Microsoft.Web.WebView22.工具箱里面会出现一个webview2的控件3.把这个控件拖到窗体上4.写如下代码://窗体装载事件privatevoidProductChartForm_Load(objectsender,EventArgse){this.webView2_main.CoreWebView2InitializationCompleted+=newEventH
- ubuntu开机黑屏,左上角光标闪烁
MISAKA米飒咔
ubuntu
问题描述:ubuntu会出现桌面卡死,只有鼠标能动,这时候我选择强制重启,开机后无法进入图形界面,但是能通过alt+f2进入到tty2。最终解决:重装显卡驱动第一步:禁用nouveau(可以不进行这一步)cat/etc/modprobe.d/blacklist-nouveau.confblacklistnouveauoptionsnouveaumodeset=0sudoupdate-initram
- TCP协议(20250304)
写代码的猫眼石
tcp/ip网络协议网络
1.TCPTCP:传输控制协议(TransmissionControlProtocol),传输层协议之一(TCP,UDP)2.TCP与UDPUDP(用户数据报协议)面向数据报无连接不安全不可靠(尽最大努力交付)机制简单,传输效率高TCP(传输控制协议)需要建立连接安全、可靠面向字节流占用资源开销大3.三次握手指建立tcp连接时,需要客户端和服务端总共发送三次报文确认连接4.四次挥手断开一个tcp连
- 使用 RTSP 分发一路摄像头视频流到自定义 IP 地址
码农的日常搅屎棍
YOLOpythonffmpegopencv
方法1:使用VLC分发RTSP流实现步骤安装VLC下载并安装VLC:官网链接。命令行推流使用VLC的命令行功能,将摄像头的输入流转发到自定义的多个IP地址。示例命令:vlcrtsp://:/\--sout"#duplicate{dst=rtp{sdp=rtsp://192.168.0.101:8554/stream1},dst=rtp{sdp=rtsp://192.168.0.102:8554/s
- [Unity Mirror] 组件
RuntimeCube
UnityMirrorunity网络Mirror
这些核心组件包含在Mirror中:NetworkAnimatorNetworkAnimator组件允许您同步网络对象的动画状态。它同步来自AnimatorController的状态和参数。NetworkAuthenticator网络验证器有助于将用户帐户和凭据集成到您的应用程序中。NetworkDiscovery网络发现使用LAN上的UDP广播,使客户端能够找到正在运行的服务器并连接到它。Netw
- 【动态规划】 解决背包问题 Python
Alexlllly
Python实现算法python算法动态规划leetcode
【动态规划】解决背包问题Python背包问题背包问题现在有3个物品篮球1kg1000元吉他3kg2000元单反4kg2500元有1个背包重4kg问怎么拿物品价值最大运用动态规划DP来解决此问题方法代码【源码】——思路来自麻省理工背包问题defbackpack(memory,item_weight,values,last_weight,index):'''memory:如果是已经计算过得分支则直接返
- Java调用WebSocket的服务端和客户端
LuckyLay
websocketjava
服务端实现原生注解导入依赖文件需要一个配置类一个Server类org.springframework.bootspring-boot-starter-websocket//配置类@Configuration@EnableWebSocketpublicclassWSConfig{@BeanpublicServerEndpointExporterserverEndpoint(){returnnewSe
- 【八股】计算机网络篇
林子漾
八股项目计算机网络
网络模型应用层【HTTP报文/消息】传输层【TCP或UDP段MSS】处理主机到主机的通信网络层【IP、寻址和路由MTU】①IP(InternetProtocol,网际协议)主要作用是定义数据包的格式、对数据包进行路由和寻址,以便它们可以跨网络传播并到达正确的目的地。②NAT:(NetworkAddressTranslation,网络地址转换)主要用于在不同网络之间转换IP地址。它允许将私有IP地址
- 报错The default superclass, “jakarta.servlet.http.HttpServlet“(已经配置好tomcat)
m0_74824170
面试学习路线阿里巴巴servlethttptomcat
报错报错DescriptionResourcePathLocationTypeThedefaultsuperclass,“jakarta.servlet.http.HttpServlet”,accordingtotheproject’sDynamicWebModulefacetversion(5.0),wasnotfoundontheJavaBuildPath.解决办法:根据错误信息,“默认超类`
- 使用嗅探大师抓取和分析苹果手机IOS系统网络数据包
鹅肝手握高V五色
智能手机ios网络
使用嗅探大师抓取IOS网络数据包嗅探大师抓取IOS网络数据不需要越狱、设置代理,无论软件如何设置保护,都能够正常抓包。iOS数据流包括iOS设备的所有网络请求,例如HTTPS、Socket通信、TCP、UDP等,还包括各种DNS协议等数据包。嗅探大师支持字符串,hex,二进制等多种格式查看数据,可以分析其网络请求链路,也可以保存为pcap文件格式供其他软件进一步分析使用。准备iOS设备连接设备:通
- 关于 SPU、SKU 和多对一关系的解释
今天你慧了码码码码码码码码码码
数据库
关于SPU、SKU和多对一关系的解释1.SPU(StandardProductUnit)SPU是标准化产品单元,指的是一个标准化的产品模型或模板。它定义了产品的基本属性,但不涉及具体的库存或销售信息。特点:描述产品的通用信息:例如名称、品牌、分类、规格等。不涉及具体库存:SPU是一个抽象的概念,不包含库存数量或价格。用于商品管理:帮助商家统一管理同一类商品。示例:一款手机的SPU可能是“iPhon
- 24、《Spring Boot 的 Actuator 监控深度解析》
wolf犭良
SpringBootspringboot后端java
SpringBoot的Actuator监控深度解析引言在微服务架构盛行的今天,应用监控已成为保障系统可靠性的关键环节。SpringBootActuator作为官方提供的监控解决方案,通过暴露丰富的端点(Endpoints)帮助开发者实时掌握应用运行时状态。本文将深入剖析Actuator的核心机制,从基础配置到高级定制,结合实战代码演示如何构建完整的监控体系。一、Actuator核心机制解析1.1A
- 腾讯集团软件开发-后台开发方向内推
飞300
业界资讯mysqljava
熟练掌握C/C++/Java/Go等其中一门开发语言;TCP/UDP网络协议及相关编程、进程间通讯编程;专业软件知识,包括算法、操作系统、软件工程、设计模式、数据结构、数据库系统、网络安全等有一定了解的:1、Python、Shell、Perl等脚本语言;2、MySQL及SQL语言、编程;3、NoSQL,Key-value存储原理。1、深入理解业务需求和产品设计,高效地实现并优化产品功能;2、持续优
- 书籍-《人工智能:原理与实践》
人工智能机器学习深度学习
书籍:ArtificialIntelligence:PrinciplesandPractice作者:GeorgeLuger出版:Springer编辑:陈萍萍的公主@一点人工一点智能下载:书籍下载-《人工智能:原理与实践》01书籍介绍本书全面介绍了人工智能(AI),涵盖了理解AI所需的基础计算技术、数学原理、哲学思考以及工程学科。《人工智能:原理与实践》强调了AI的跨学科性质,整合了心理学、数学、神
- uniCloud.uploadFile上传到自定义目录
前端小菜袅
前端javascriptvue.jsuni-app
官方的uni-file-picker组件默认会把上传的文件全部上传到unicloud云存储的根目录下,这样太乱了,但是在文档中没有找的修改上传路径的办法(不知道是不能改还是我没找到)经过查阅发现,使用uniCloud.uploadFile()API,可以将文件上传到unicloud云存储空间的指定目录下。只需配置cloudPath属性为目录名/文件名即可。不同平台有差异,具体查看官方文档。impo
- python调用rust_将字符串列表从Python传递到Rust
weixin_39930144
python调用rust
I'vebeenlearningRustforabouttwoweeksnowandtoday,IgotintoitsFFI.IusedPythontoplaywithRust,usingctypesandlibc.Ipassedintegers,stringsandevenlearnedtopassalistofintegers(thankstothiswonderfulanswer).Then
- WPML 多语言 CMS WordPress 插件 v4.5.8
一路有你网络科技工作室
WordPress建站插件大数据
WPML是多语言WordPress网站的事实标准。它为来自世界各地的一百多万个商业网站提供支持。WPML与几乎所有WordPress主题和主要插件兼容。WPML使运行简单的多语言网站变得容易,并为大型和复杂的网站提供高级翻译管理。WPML支持自动翻译,使用高级翻译编辑器进行手动翻译,并提供与数十种专业翻译服务的集成为什么选择WPML?市场上有很多很棒的WordPress翻译插件,但是有很多有效的理
- java-图片文件与Base64格式之间的互相转换
Vodka~
ServletJavawebjava开发语言后端
一、//转换Base64格式的字节数据集成为图片,存到服务器指定路径publicvoidTransformBase64DataToPhoto(StringUploadPath,StringDataName,StringBase64Photo){Base64.Decoderbase64Decoder=Base64.getDecoder();//Base64解码器byte[]ImgContainer=
- linux ora-12570,ODP.net managed driver throws ORA-12570: Network Session: Unexpected packet read err...
不吃香菜的鱼
linuxora-12570
InoneofourproductsweretrievedatafromtheOracledatabaseusingstoredproceduresusingtheODP.netmanageddriver.Everynowandthen(roughlyevery1000queries)wegetthefollowingexception:(ORA-12570:NetworkSession:Unex
- errorstack ORA-01466 flashback query expdp scn 都有这个问题
jnrjian
oracle数据库
LAST_DDL_TIME可以是truncate,addcolumn,enableconstraints,grantSetanerrorstackeventusing:altersystemsetevents='1466tracenameERRORSTACKlevel3';ExportusingEXPDPlikebelowisfailingforatablewithfollowingerror.E
- windows下适用msvc编译ffmpeg 适用于ffmpeg-7.1
Lj2_jOker
windowsffmpeg
需要的工具:visualstudio2019(可以是其他版本,只是本人电脑上装的为2019)msys2ffmpeg-7.1源码1.修改msys2_shell.cmd在msys2目录修改msys2_shell.cmd打开后找到行setMSYS2_PATH_TYPE=inherit删除开头的rem2.运行msys2运行x64NativeToolsCommandPromptforVS2019打开后跳转到
- lldp协议代码阅读_AXIStream代码详解
weixin_39986060
lldp协议代码阅读
AXI-Stream代码详解AXI4-Stream跟AXI4的区别在于AXI4-Stream没有ADDR接口,这样就不涉及读写数据的概念了,只有简单的发送与接收说法,减少了延时,允许无限制的数据突发传输规模。AXI4-Stream的核心思想在于流式处理数据。图4‑58AXI-StreamInterface全局信号1.ACLK全局时钟信号,在上升沿时对信号采样。所有的输入信号都通过上升沿采集,所有的
- postman请求soap 请求_SoapUI、Postman测试WebService
Reincarnated.Ra
postman请求soap请求
之前装了SoapUI,最近装了Postman,分别用它们测试了WebService,下面为用法。测试的在线WebService(数据来源于中国气象局)Endpoint:http://www.webxml.com.cn/WebServices/WeatherWebService.asmxWSDL:http://www.webxml.com.cn/WebServices/WeatherWebServi
- 【成功解决】ERROR: Failed to build installable wheels for some pyproject.toml based projects (annoy)
TangerinePi
疑难杂症python
问题在下载annoy时出现报错:网上搜索发现很多人也出现了形如:ERROR:CouldnotbuildwheelsforXXX,whichisrequiredtoinstallpyproject.toml-basedprojects,这样的问题。依次借鉴一凡后发现一点用没有。。。这篇博客基于了灵感:http://t.csdnimg.cn/X1bXx总之就是,既然pip安装不了,我不用它安装不就完了
- WordPress二次开发实现用户注册审核功能
linlinlove2
wordpress二次开发wordpress主题开发wordpress安装搭建wordpress优化速度wordpress外贸网站wordpress问题处理wordpress插件开发
WordPress默认直接注册登录了,不需要任何验证,如果被批量注册就麻烦了,所以添加一个审核功能比较好。注册用户默认需要手动审核,审核以后才能登陆,开启审核,可以有效防止用户批量注册。这儿讲解一下如何通过WordPress过滤器来说实现相关功能。1、用户列表界面设置WordPress用户页面,点击顶部用户类型,通过URL中status参数来过滤,那么添加一个参数为:unapproved网址参数为
- 批量下载arXiv论文数据的Python脚本
hajungong007
python
arXiv-toolsPrerequisitesArXivprovidesbulkdataaccessthroughAmazonS3.YouneedanaccountwithAmazonAWStobeabletodownloadthedata.Youalsoneedpython2.DownloadingarXivdocuments1-Installs3cmdwhichisacommandlinet
- LLMR-NLUP开源项目安装与使用教程
谢贝泰Neville
LLMR-NLUP开源项目安装与使用教程LLMR-NLUPAquickdemoofNatural-Language-UI-Programming,implementedpurelyonthefrontendandpoweredbyGPT-3.5项目地址:https://gitcode.com/gh_mirrors/ll/LLMR-NLUP一、项目目录结构及介绍该项目位于GitHub上的地址是htt
- 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独立出来,数据持