- php状态监控源码,PHP服务器状态监控实现程序
江子星
php状态监控源码
*/header('Content-type:text/html;charset=utf-8');include'./smtp/class.smtp.php';include'./smtp/class.phpmailer.php';functionsendmail($subject='',$body=''){date_default_timezone_set('Asia/Shanghai');//
- php imap 发送邮件,PHP基于SMTP/POP3/IMAP协议的邮件发送&&接收
weixin_39898248
phpimap发送邮件
PhpMail-SMTP-POP3-IMAP邮件接收发送Mailreceivingandsending最近遇到一个工程需要自动发件(SMTP)收件(IMAP/POP3)功能,发现很难找到一个PHP的完整包来使用所以自己综合phpMailer,PhpImap,csdn博客等各开源代码,做一个收发件都包括的库,供新人使用。有不足之处请指出imap收件示例require_once__DIR__.'/sr
- PHPMailer 使用SMTP服务器发送邮件
一遇一余
php技术php发送邮件PHPMailerSMTP配置发送邮件
phpmailer安装或者下载方式:1、从github上下载:https://github.com/PHPMailer/PHPMailer/2、使用composer安装:composerrequirephpmailer/phpmailer发送之前需要拥有自己的邮件服务器,测试的时候其实用自己申请的免费邮箱最方便了,不需要自己再搭建服务器了,可能要配置邮箱的SMTP服务,大部分公共邮箱(163、qq
- php 发送邮件 tp5,ThinkPHP5.1发送邮件(PHPMailer带附件)
捂脸人
php发送邮件tp5
用thinkPHP5.1发送邮件,为方便项目前后台都可调用,我这边写在了common.php里(application/common.php)先切换到项目根目录,然后composer安装sdk,composerrequirephpmailer/phpmailer然后在common.php里引入:usePHPMailer\PHPMailer\PHPMailer;/***@functionsendEm
- php自动发送邮件,PHPMailer ThinkPHP实现自动发送邮件功能
云遮不住光
php自动发送邮件
本文实例为大家分享了PHPMailerThinkPHP自动发送邮件的具体代码,供大家参考,具体内容如下1.下载PHPMailer类包,放入ThinkPHP的Vendor目录,这是ThinkPHP的第三方类库目录2.然后在项目目录下common文件夹下,在common.PHP(ThinkPHP中此文件会自动被引用,如果没有,新建一个common.php)中新增调用发送邮件的函数:/*********
- thinkphp项目之发送邮件
sccd2009
php
引用新用户注册需要采用邮箱注册,这就需要向用户注册的邮箱发送激活链接。实现项目采用thinkphp开发,引入phpmail,前面的一篇文章专门做了介绍,如果不了解的可以参考前面的博文。$mail=newPHPMailer();$mail->From='
[email protected]';$mail->FromName='YourName';//发件人姓名$mail->AddAddres
- PHP下利用PHPMailer配合QQ邮箱实现发邮件
theache
今天尝试了下利用php实现邮件的发送。在这里是利用PHPMailer和QQ邮箱实现的。1QQ邮箱配置首先进入QQ邮箱开启STMP服务。设置>账户>开启STMP服务开启前面两个服务,记录下对应的授权码。这里我们用到的是IMAP/STMP服务的授权码。2下载安装PHPMailer可以在github下载PHPMailer直接下载。当然也可以使用composer安装composerrequirephpma
- PHPmailer本地可发送邮件 阿里服务器上不能发送
Dobby Liu
php
原代码:/***发送邮件方法*@param$msgstring发送的内容*/functionsendEmail($msg){//引入PHPMailer的核心文件Vendor('PHPMailer.src.PHPMailer');Vendor('PHPMailer.src.SMTP');//实例化PHPMailer核心类$mail=newPHPMailer();//$mail->SMTPDebug=
- phpMailer在本地可以发送邮件,服务器上不行
u013239233
thinkphp虚拟空间不行
如果你使用的邮箱端口是25的话,要看你自己的服务器是否禁用了25端口,比如阿里云的ECS就禁用了25端口;一开始我也被这个坑死了,因为我使用的是网易邮箱,网易邮箱使用的端口是25,一直找代码的原因,结果却是服务商的服务器问题。解决办法:使用其他邮箱发送邮件,比如QQ邮箱,QQ邮箱使用的端口是465
- php网站在服务器上邮件发送不了,在本地可以
懒得代码
phpphp邮箱
最近在做phpmailer发送邮件功能里发现了一个问题,网站程序在本地测试邮件可以正常发送到指定的邮箱。但是把代码放到空间上面,邮件发不了,提示发送出错!研究半天没有搞懂为什么……(高手勿喷)后来上网找了一下,有人说是服务器商因为安全原因把php的fsockopen函数给关闭了。于是按照网上的解决方法把fsockopen函数替换了,方法如下:首先找到phpmailer的class.stmp.php
- PHP+swoole 异步发送Email
R谢荣
phpswoole
用到的库:swoole,PHPMailer,thinkphp5用SWOOLE新建一个服务set(array('task_worker_num'=>4));$serv->on('receive',function($serv,$fd,$from_id,$data){//把收到的数据提交到异步回调中$task_id=$serv->task($data);});$serv->on('task',func
- PHPMailer发送邮件报错PHPMailer —— SMTP Error: Could not connect to SMTP host
精神小伙2号
php基础
报错问题是:连不上smtp服务器,以下是找到smtp服务器的办法1、首先找到邮箱登陆地址,可以问给你邮箱的人。也可以根据邮箱找:在地址栏里输入http://mail.地址.com注意:地址就是@后面的公司网址2、登陆,找到邮箱服务器。例如阿里云企业邮箱如下:如果是网易,用以下网址查询:网易企业邮箱的POP、SMTP、IMAP服务器地址设置3、这里分「常规」和「加密」(此处有坑),现在阿里云25端口
- php应用篇 PHPMailer使用
梦回丶故里
phpsmtp邮件php
PHPMailer是php中发送邮件的非常好用的类,里面封装了很多重要函数和功能,让我们发送邮件,以及调整邮件中的内容变得非常容易,下面给出一个PHPMailer的一个测试用例,方便以后查询使用。首先,需要下载PHPMailer这个类库,可以从github上现在,解压后就可以使用了。下载地址:https://github.com/PHPMailer/PHPMailer下面给出程序:这里使用qq邮箱
- 腾讯企业邮箱:创建邮件授权码
.卡
问题记录php开发语言后端
文章目录申请官网绑定生成密码PHP脚本发送代码(465端口)Yii框架发送代码(587端口)申请官网腾讯企业邮箱绑定生成密码PHP脚本发送代码(465端口)require_once__DIR__."/vendor/autoload.php";usePHPMailer\PHPMailer\PHPMailer;usePHPMailer\PHPMailer\SMTP;...$mail=newPHPMai
- PHP使用PHPMailer发送邮件
小白的程序猿
1.下载PHPMailer代码包PHPMailer项目地址:https://github.com/PHPMailer/PHPMailer使用gitclone命令克隆到本地,或直接点击DownloadZIP获取到完整的PHPMailer代码包。在这里插入图片描述2.将下载的PHPMailer的包解压后部署到项目中这里主要是src这个文件中的PHPMailer.php和SMTP.php这两个文件在这里
- 如何在PHP中发送电子邮件?
xiangpingeasy
PHPphp开发语言
在PHP中发送电子邮件通常涉及使用内置的mail函数或使用更强大的邮件库,例如PHPMailer或SwiftMailer。以下是使用mail函数和PHPMailer的基本示例:使用mail函数:请注意,使用mail函数需要配置本地服务器上的邮件传输代理(MTA),例如Sendmail或Postfix。使用PHPMailer:首先,你需要下载并引入PHPMailer库。你可以从PHPMailer的G
- 使用 PHPMailer 实现邮件的实时发送
海拥✘
php
个人网站:【海拥】【神级代码资源网站】【办公神器】基于Web端打造的:轻量化工具创作平台想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】今天我们利用GitHub上20K+星星的项目PHPMailer实现一个接收询盘并实时同步到指定邮箱的功能。实现基本的HTML+CSS首先我们用HTML+CSS做一个简单的form表单Youcancontactusatanytime!Send加点CSSbody{
- 在美国godaddy虚拟主机上用php发邮件应该注意的问题
faith瑞诚
PHPLinuxPHP虚拟主机邮件
这几天一直在写一个php发送邮件的功能,在本机测试的时候一直很正常,但是放在服务器上测试的时候,就总提示Error:CouldnotconnecttoSMTPhost.首先说一下,我用的是phpmailer这个第三方的开源项目作为发邮件的基类,通过实例化PHPMailer对象采用SMTP协议来发送邮件。php发送邮件的原理是通过php向邮件服务器创建一个socket,然后再根据smtp协议传输邮箱
- php收发邮件的多种方法?
AreoWarm
phpemail邮件收邮件
1、添加扩展:#第一种:composerrequirephp-imap/php-imap#第二种:composerrequirephpmailer/phpmailer2、这里采用第二种方式:request->post();$imapServer=$params['imapServer']??self::imapServer;//QQ邮箱的IMAP服务器地址$smtpServer=$params['
- ”SMTP connect() failed“ 原因及解决办法
冯进骗123
phpphp开发语言后端
SMTPconnect()failed.https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting其实,报以上的错误,特别是当有“SMTPconnect()failed”这句话的时候,既不是wordpress本身的问题,也不是wordpress相关smtp插件的问题,更不是所谓PHP的问题。而是“SMTP无法连接到SMTP主机(SMTPE
- 使用php mailer类调用远程SMTP服务器发送邮件
纳木错
php服务器phpauthenticationhtmlserveremail
phpmailer是一款很好用的php电子邮件发送类模块,可以调用本地的smtp发送电子邮件,也可以调用远程的smtp发送电子邮件,但是使用时需要注意一些事项,否则就会造成发送失败,或者根本不能调用的情况,本文就我在使用这个类时,遇到的问题和解决办法进行展开,简要说明一下phpmailer的用法,及注意事项。首先下载phpmailer类库文件,在这里下载,只需一个资源分。下载地址:http://d
- thinkphp5使用phpmail发送qq邮件
PHP隔壁老王邻居
php乱七八糟1024程序员节php开发语言笔记
目录1、使用composer工具安装,在tp5根目录下执行2、封装发送邮件方法3、控制器中调用4、运行后结果1、使用composer工具安装,在tp5根目录下执行composerrequirephpmailer/phpmailer安装成功后显示下面目录2、封装发送邮件方法functionsendEmail($to,$title,$content){$email=["send_email"=>"23
- PHP发送邮件功能实现
哥本哈登_sketch
第一步我用的是163邮箱发送邮件,做一个尝试,在尝试之前,需要要开启163邮箱的授权码如图所示,请记住您的授权码,将在之后的步骤中用到image第二步需要下载一个类PHPMailer,我有这个资源已经上传了,免费的哦亲,连接在这http://download.csdn.NET/detail/s371795639/9693417下载后,解压后此文件夹放在Vendor目录下,Vendor目录下有个PH
- php邮件发送tp,在Thinkphp3.2 中使用PHPMailer 发送邮件
秋日的前奏
php邮件发送tp
phpmailer发送邮件是php开发者首选的一个邮件发送插件了,下面我来介绍怎么集成phpmailer到thinkphp框架了,有需要了解的朋友可参考。phpmailer发送邮件功能很强大,今天真正的体验一下,简单说一下配置,本人是在thinkphp中是用的.第一步:下载附件PHPMailer解压到ThinkPHP\Library\Vendor第二步:在Common文件夹中的公共函数functi
- 阿里云企业邮箱的stmp服务器地址
echo-lin
php
使用phpmailer发送邮件服务器地址:smtp.mxhichina.com阿里云邮箱不用获取授权码就可以发送邮件,所以设置发件人的邮箱地址和授权码时直接填写发件人的邮箱和邮箱密码就好了
- E048-论坛漏洞分析及利用-针对Wordpress论坛插件实现远程代码执行的探索
孪生质数-
省技能大赛模块Web安全虚拟化容器web安全php后端中间件架构安全架构网络攻击模型
课程名称:E048-论坛漏洞分析及利用-针对Wordpress论坛插件实现远程代码执行的探索课程分类:论坛漏洞分析及利用实验等级:中级任务场景:【任务场景】小王接到磐石公司的邀请,对该公司旗下论坛进行渗透测试,已经发现了该论坛的WordPress使用PHPMailer组件向用户发送邮件,该组件版本为5.2.18,存在远程代码执行漏洞,成功利用该漏洞后,渗透者可进行远程任意代码执行。许多知名的CMS
- Raven2靶机渗透
网安咸鱼1517
android算法渗透测试测试工具网络安全
1.信息收集1.1主机探测sudoarp-scan-l1.2端口扫描nmap-p--A192.168.16.185开放了80端口,尝试登录网址查看信息,通过浏览器插件找出指纹1.3目录扫描访问登录界面,发现rememberMe怀疑是shiro界面登录/vendor/界面,查看信息获得flag1和网站的绝对路径经查找发现PHPMailer/dev/null获得交互式的shellpython-c'im
- [Vulnhub] Raven-1
葫芦娃42
Vulnhubweb安全
目录信息搜集wpscan扫描网站wordpress用户mysql获取wp_users信息sudopython提权补充:PHPMailer远程代码执行getshell下载链接:Raven:1~VulnHub描述Raven是一个初级/中级boot2root机器。有四个flag可以找到和两种获取root的预期方式。使用VMware构建并在VirtualBox上进行测试。设置为使用NAT网络。信息搜集ar
- mysql靶机_[Vulnhub]靶机渗透-Raven:2
西北老胡文康
mysql靶机
0x01ScanHost更加详细地扫描:0x02WebService还是有个wp,老规矩用wpscan看一下,同时扫描目录。flag1dirb扫描出错,所以这里用gobuster:挨个看了下发现了flag1:刚好wpscan的结果也出来了,wordpress的版本是4.8.7,主题twentyseven2.2,大概看了没有什么可利用的洞。再仔细看一下当时扫出的目录,发现有PHPMailer,VER
- thinkphp发送邮件
月亮201314
php服务器ssl运维
先把phpmailer放到Thinkphp里面的library的Vendor目录下,如下然后定义一个函数,如下functionsend_email($toemail,$subject,$body){//示例化PHPMailer核心类//vendor模式Vendor("PHPMailer.PHPMailer");$mail=new\PHPMailer();//nameplace模式;//$mail=
- 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独立出来,数据持