- linux网关端口映射,如何通过具有Iptables的Linux网关转发端口映射?
想写小说的轻骑兵
linux网关端口映射
NAT或网络地址转换是用于处理数据包以便将其重定向到备用地址的通用术语。通常,这用于允许流量超越网络边界。实现NAT的主机通常可以访问两个或多个网络,并配置为在它们之间路由流量。端口转发是将对特定端口的请求转发到另一个主机,网络或端口的过程。由于此过程在运行中修改了数据包的目的地,因此被认为是NAT操作的一种。在本指南中,我们将演示如何iptables使用NAT技术将端口转发到防火墙后面的主机。如
- linux 端口数据转发,Linux iptables 端口转发
文静的妹子
linux端口数据转发
准备:1,UDP端口范围映射2,tcp端口范围映射3,本机端口转发4,单个端口转发准备:打开转发[root@CentOS~]#cat/etc/sysctl.conf|grepnet.ipv4.ip_forwardnet.ipv4.ip_forward=1清空规则,修改默认策略,重要数据请备份[root@CentOS~]#iptables-F-tnat[root@CentOS~]#iptables-
- 【Linux入门】iptables的安装与配置应用实例
Karoku066
linux网络运维服务器bash
文章目录iptables安装与配置安装iptablesiptables配置方法iptables命令行配置方法iptables规则匹配详细整理1.通用匹配2.隐含匹配显式匹配(扩展匹配)1.多端口匹配2.IP范围匹配3.MAC地址匹配4.状态匹配SNAT与DNATSNAT(源网络地址转换)原理与应用SNAT应用环境SNAT原理SNAT转换前提条件SNAT转换示例DNAT(目标网络地址转换)原理与应用
- Linux 禁ping和开启ping操作
赶路人儿
linuxlinuxping
Linux禁ping和开启ping操作:#echo1>/proc/sys/net/ipv4/icmp_echo_ignore_all如果要恢复,只要:#echo0>/proc/sys/net/ipv4/icmp_echo_ignore_all即可,挺方便,不要去专门使用ipchains或者iptables了。或者用以下方法也可以,异曲同工。以root进入Linux系统,然后编辑文件icmp_ech
- 【Kubernetes】常见面试题汇总(六)
summer.335
Kuberneteskubernetes容器云原生
目录17.简述kube-proxyipvs和iptables的异同?18.简述Kubernetes中什么是静态Pod?19.简述Kubernetes中Pod可能位于的状态?17.简述kube-proxyipvs和iptables的异同?(1)iptables与IPVS都是基于Netfilter实现的,但因为定位不同,二者有着本质的差别:①iptables是为防火墙而设计的;②IPVS则专门用于高性
- 【Kubernetes】常见面试题汇总(五)
summer.335
Kuberneteskubernetes容器云原生
目录13.简述KubernetesReplicaSet和ReplicationController之间有什么区别?14.简述kube-proxy作用?15.简述kube-proxyiptables原理?16.简述kube-proxyipvs原理?13.简述KubernetesReplicaSet和ReplicationController之间有什么区别?-ReplicaSet和Replicatio
- 【LINUX】阿里云linux服务器上使用iptables设置安全策略的方法_status=$(grep -i ubuntu etc issue)
2401_85154737
linux服务器阿里云
yuminstall-yiptablesiptables安装好后就可以来配置规则了。由于作为web服务器来使用,所以对外要开放80端口,另外肯定要通过ssh进行服务器管理,22端口也要对外开放,当然最好是把ssh服务的默认端口改掉,在公网上会有很多人试图破解密码的,如果修改端口,记得要把该端口对外开发,否则连不上就悲剧了。下面提供配置规则的详细说明:第一步:清空所有规则当ChainINPUT(po
- 2024年Linux最新快速入门SaltStack_saltstack基本使用
前端核心技术
程序员linuxsaltstack服务器
yum -y install salt-masterservice salt-master start注:需要iptables开启master端4505、4506端口安装被管理端yum -y install salt-minionsed -i 's@#manster:.\*@manster: master\_ipaddress@' /etc/salt/minion #master\_ipaddr
- 2024整理 iptables防火墙学习笔记大全_modepro iptables(1)
2401_86394219
学习笔记网络
3.iptables表(tables)和链(chains)下面的表格展示了表和链的对应关系。表(iptables)链(chains)INPUTFORWARDOUTPUTPREROUTINGPOSTROUTIINGFILTERNATMANGLE提示:所有链名都要大写4.表及其链的功能Filter表主要和主机自身有关,真正负责主机防火墙功能的(过滤流入流出主机的数据包)。filter表是iptabl
- 2024整理 iptables防火墙学习笔记大全_modepro iptables(2)
2401_86394221
学习笔记网络
2、Netfilter/iptables是表的容器,iptables包含的各个表(filter,NAT,MANGLE,RAW)3、iptables的表又是链的容器。链:INPUT,0UTPUT,FORWARD,PREROUTING,POSTROUTING4、链是规则容器:5、规则:一条条过滤的语句3.iptables表(tables)和链(chains)下面的表格展示了表和链的对应关系。表(ipt
- 2024年最新2024整理 iptables防火墙学习笔记大全_modepro iptables(1),2024年最新含BATJM大厂
2024spring
程序员学习笔记
为了做好运维面试路上的助攻手,特整理了上百道【运维技术栈面试题集锦】,让你面试不慌心不跳,高薪offer怀里抱!这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。本份面试集锦涵盖了174道运维工程师面试题128道k8s面试题108道shell脚本面试题200道Linux面试题51道docker面试题35道Je
- 2024年最新2024整理 iptables防火墙学习笔记大全_modepro iptables,2024年最新最新Linux运维高级面试题汇总
2024云技术
程序员运维学习笔记
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化的资料的朋友,可以点击这里获取!一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!–flush-F[chain]Deleteall
- 【亲测有效】nginx负载均衡指定ip端口转发,做自动切换
Zda天天爱打卡
nginx负载均衡tcp/ip
nginx如何做到?监听两个目标公网ip,这两个目标ipA,ipB是做了iptables的转发,按照端口转发的,例如我访问ipA的3333端口就转发某个squid代理x上,访问ipB的3333端口也转发到同一个squid代理x上。现在我访问nginx的3333端口,默认都走ipA转发,只有发现ipA不通或ipA转发不成功时ngnix自动切换到走ipB,我不用动任何代码。可以通过配置NGINX的st
- oracle数据库防火墙配置,Linux防火墙配置 – 提供7*24专业数据库(Oracle,SQL Server,MySQL等)恢复和Oracle技术服务@Tel:+86 13429648788 -...
你这人真狗
oracle数据库防火墙配置
一、Linux防火墙基础知识1、常用命令查看配置iptables-L-n修改配置iptables-AINPUT-ptcp-s192.168.1.12–dport22-jACCEPT保存修改/etc/init.d/iptablessave开启/关闭/重启/状态/etc/init.d/iptablesstart/stop/restart/status2、常用参数–append-AchainAppend
- K8S笔记:Kubernetes安装部署(CentOS7)
arksea
devopskubernetesk8s运维
目录文章目录目录一、使用minikube启动minikube的LoadBalancer支持指定minikube自带docker的docker0网桥网段minikube使用本地image二、使用kubeadm手工安装1、安装前准备2、允许iptables检查桥接流量3、安装kubeletkubeadmkubectl4、kubelet使用cgroup驱动5、确认主机名/域名可被访问6、关闭Swap或忽
- Ambari安装部署教程
Aries_Chen_CSDN
大数据hadoopambari
前言之前尝试过使用Ambri安装HDFS集群,整个搭建的流程应该是记录的比较详细的,重新把资料整理了一下发布到博客,希望可以帮到有需要的人吧。环境准备以下操作使用root用户执行:1.关闭防火墙chkconfigiptablesoffserviceiptablesstopchkconfig--listiptables2.关闭SElinuxvi/etc/sysconfig/selinux将SELIN
- Firewalld 防火墙基础
爱笑的文化
服务器linux网络
Firewalld概述firewalld提供了支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具.支持IPv4、IPv6防火墙设置以及以太网桥,并且拥有两种配置模式:运行时配置与永久配置,支持服务或应用程序直接添加防火墙规则接口firewalld和iptables的关系firewald自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现firew
- K8s Service对外暴露端口与代理方式
eHV4aW5n
kubernetesjava分布式
K8sService对外暴露端口与代理方式Service概述Service服务类型userspace代理模式iptables代理模式IPVS代理模式实例Service概述KubernetesService定义了这样一种抽象:逻辑上的一组Pod,一种可以访问它们的策略——通常被称为微服务。这一组Pod能够被Service访问到,通常是通过selector实现的。Service可以提供负载均衡的能力,
- firewalld防火墙端口开放
心之语歌
linuxvue.js
文章目录简绍要查看当前系统上已经开放的端口,可以使用firewall-cmd命令进行验证。开放端口关闭端口查看规则简绍Firewalld是Linux系统上的一个强大的防火墙解决方案。它是RedHat公司推出的一款用于替代iptables的新型防火墙软件,是CentOS7和Fedora18及以上版本的默认防火墙。它基于D-Bus进行通信,可动态管理网络连接并支持网络地址翻译(NAT)功能。使用fir
- linux查看nat配置文件,linux下NAT配置
刘巍然-学酥
linux查看nat配置文件
eth0210.36.19.113eth1192.168.44.254方法一:vi/etc/rc.local加入:.....................................................echo1>/proc/sys/net/ipv4/ip_forwardiptables-tnat-APOSTROUTING-s192.168.44.0./24-oeth0-jSNA
- 云计算day32
巭氼
云计算
docker容器==》k8s编排=〉openstack存储监控⽇志以及其他的内容回顾1.环境的安装catoverlay>br_netfilter>EOFoverllaybr_netfiltercatnet.bridge.bridge-nf-call-iptables=1>net.bridge.bridge-nf-call-ip6tables=1>net.ipv4.ip_forward=1>EOF#
- kylin系统永久关闭iptables
yuer011
服务器linux网络
1关闭iptables,并且相关规则写入文件firewall.rulessudoiptables-save>/root/firewall.rulesiptables-Xiptables-tnat-Fiptables-tnat-Xiptables-tmangle-Fiptables-tmangle-Xiptables-PINPUTACCEPTiptables-PFORWARDACCEPTiptabl
- Linux系统防火墙概述
云何往
Linux操作系统基础linux网络
文章目录一、防火墙的概念二、防火墙的分类1、逻辑层面2、物理层面三、防火墙的功能1.、入侵检测功能2、网络地址转换功能3、网络操作的审计监控功能4、强化网络安全服务四、防火墙的三表五链1、三表:filter表、nat表、mangle表2、五链:input、prerouting、forward、postrouting、output一、防火墙的概念Linux中存在iptables和firewalld两
- 使用Jedis远程连接redis
E_3096
1.检查是否关闭linux的防火墙cent6.x关闭防火墙语句:serviceiptablesstop禁止开机启动防火墙:chkconfigiptablesoffcentos7的防火墙已经变了,关闭语句为:systemctlstopfirewalld.service禁止防火墙开机启动:systemctldisablefirewalld.service2.查看配置文件redis.confredis默
- ubuntu使用iptables
活捉一个坏小孩
服务器系统类ubuntu
1.查看系统是否安装防火墙root@localhost:/usr#whichiptables/sbin/iptablesroot@localhost:/usr#whereisiptablesiptables:/sbin/iptables/etc/iptables/usr/share/iptables/usr/share/man/man8/iptables.8.gz如果是这样的信息,那么表明ipta
- 检测usb口HotPlug-netlink
cany1000
linux
为了完成内核空间与用户空间通信,Linux提供了基于Socket的NetLink通信机制。SELinux,Linux系统的防火墙分为内核态的netfilter和用户态的iptables,netfilter与iptables的数据交换就是通过Netlink机制完成。下面看一个检测usb口的例子:s32InitUsbHotPlug(void){s32nSockFd=0;//套接字地址structsoc
- Centos6.5,Centos7分别关闭selinux和防火墙
有事找叮当
Centos6.5关闭selinux:永久有效:修改/etc/sysconfig/selinux将文本中的SELINUX=enforcing,改为SELINUX=disabled。然后重启即时有效:setenforce0查看状态:getenforce关闭防火墙:永久性生效:chkconfigiptablesoff,然后重启即时生效:serviceiptablesstop(或者iptables–F)
- Linux系统如何关闭防火墙【linux系统防火墙】
istrangeboy
投入网络技术基础网络基础linux系统开启和关闭防火墙linux系统防火墙防火墙linux技术linux防火墙技术
Linux系统如何关闭防火墙linux系统防火墙的打开和关闭centos7和之前的版本的略有差别。一、centos7之前的版本可以通过iptables相关命令实现防火墙的打开和关闭1.首先可以在打开的终端使用iptables--help查看帮助使用命令;2.查看防火墙状态:serviceiptablesstatus(此命令可以查看防火墙是打开还是关闭);3.serviceiptables常接参数:
- firewalld高级防火墙规则-Direct Rules
victoruu
Linuxlinuxfirewalld
一.DirectRules概述通过firewall-cmd工具,可以使用--direct选项在运行时间里增加和删除链。如果不熟悉iptables,使用直接接口非常危险,因为可能无意间导致防火墙被入侵。直接端口模式适用于服务或者程序,以便于在运行时间内增加特定的防火墙规则。直接端口模式添加的规则优先应用二.高级防火墙Direct规则的使用1.查看防火墙上设置的规则firewall-cmd--dire
- firewall 常用命令
wowocpp
web_htmllinux
firewall常用命令参考https://www.cnblogs.com/tanll/p/17752574.htmlfirewalld过滤出接口流量https://www.bilibili.com/read/cv21744921/RHCSA系列(十一):使用firewalld和iptables来控制网络流量https://linux.cn/article-6315-1.htmlfirewalld
- 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独立出来,数据持