- 网络渗透中的指纹识别
jhf200306
web安全
主要内容:指纹是网站CMS指纹识别,计算机操作系统及web容器的指纹识别。1.CMS:(contentmanagementsystem)整站系统或文章系统作用:开发者只要给客服一个软件包,客服自己安装配置好,可以定期更新数据来维护网站,节省了大量的人力和物力。常见的CMS:Dedecms(织梦),Discuz,PHPWEBPHPWIND,PHPCMS,ECSHOP,WordPress(wp)等。(
- php 目录结构,php的目录结构
圣光的事不能叫偷
php目录结构
phpcmsv9框架的目录结构分析phpcmsv9框架的目录结构分析:了解v9框架的目录结构,有助于帮助我们快速建立起对v9框架的一个整体认识打开"mycms"项目,有如下文件和目录使用协议说明文档、英文版的用户手册,这两项不是项目所必须的,可暂时将其删除|-----api接口文件目录|-----caches缓存文件目录|-----configs系统配置文件目录|-----database.php
- 文件上传复现
是懒羊羊吖~
android
1.PHPCMSPHPCMS头像上传功能允许用户上传ZIP压缩包,系统自动解压并删除非图片文件(如.php、.txt),利用解压后文件保留机制上传至服务器,使用特殊符号混淆文件名(如shell.txt?.php#.jpg),使系统误判为图片文件但未严格校验文件真实类型及内容,导致攻击者可构造特殊压缩包绕过删除逻辑,保留恶意文件//1.接收用户上传的ZIP压缩包并直接写入临时文件 file_p
- phpcms v9文件上传漏洞复现
熬夜且瞌睡
网络php开发语言
1.压缩包文件无递归删除$file=$_FILES['file'];#检查文件是否为空文件if(!$file){exit("请勿上传空文件");}$name=$file['name'];$dir='upload/';$ext=strtolower(substr(strrchr($name,'.'),1));functioncheck_dir($dir)#检查文件格式{$handle=opendir
- phpcms set inc.php,phpcms V9 sql注入漏洞测试
朱娟娟
phpcmsV9版本存在SQL注入漏洞,漏洞复现如下0x00以GET方式访问如下链接,得到返回包里mvbpqw_siteid值:http://127.0.0.1/index.php?m=wap&c=index&a=init&siteid=10x01构造SQL语句,将0x00中的mvbpqw_siteid值代入下面链接,以POST方式发起请求0x02将0x01步中的json值代入下面链接中,以POS
- PHPCMS V9 SQL查询篇
changeriver
phpcmsphp
添加查询条件{phpKaTeXparseerror:Expected'EOF',got'}'atposition28:…_type_int=24"}̲{pc:contentac…sql5"num=“1”order=“listorderasc,inputtimeasc”page=“page"cache="page"cache="page"cache="cachetime”}同时调用指定栏目和指定推荐
- phpcms v9敏感词内容替换
大海哪蓝
PHPCMSphp
后台先在"扩展"——>"敏感词管理"中添加敏感词,然后修改phpcms\modules\content\content.php文件来实现添加或者编辑内容时敏感词的替换。(如果涉及会员投稿和留言等,也需要在对应模块中做类似处理)在add方法和edit方法中if(trim($_POST['info']['title'])=='')showmessage(L('title_is_empty'));下方添
- 解决phpcms搜索列表页:跳转错误 about:blank#blocked
草巾冒小子
phpcms踩坑篇
phpcms搜索列表页:跳转错误about:blank#blocked其他页面没发现有类似问题;仅仅在文章内容页点击文章tag关键词标签的时候,发现关键词返回的数据列表页(即模板文件content/tag_list.html)内部的:首页、网站logo的链接都无法执行返回首页,而是跳转到链接页面地址:about:blank#blocked;截图说明:代码·修改之前:{pc:contentactio
- PHPCMS V9数据库中v9_poster_“日期”表(如,v9_poster_201010等)是什么表,有什么用,怎么按日期生成的?
大海哪蓝
PHPCMSv9_poster_2019
v9_poster_“日期”这些表和其中的数据记录是网站中广告展示和点击时生成的如果在网站模板中使用了诸如这样的方式调用广告,就会有新的表或者新的数据记录产生,日积月累造成数据库体积非常大。如果客户不需要统计广告访问的数据,可以按如下方法去除创建表和插入数据的功能(当然已经产生的表可以删除):打开phpcms\modules\poster\index.php文件,搜索关键字“s_db”,将含该关键
- PHPCMS V9手机移动端(支持单图和多图)图片上传,(PHPCMS V9前台使用layui的上传组件代替默认的SWFupload上传图片)
大海哪蓝
PHPCMS
默认phpcms的上传图片使用的是swfupload,导致手机移动端上传图片无法使用。这里我们使用layui的上传组件来使其支持手机移动端(支持单图和多图)图片上传,效果图如下:实现步骤:一、打开phpcms\modules\attachment\attachments.php文件,新增如下函数:publicfunctionimgupload(){pc_base::load_sys_class('
- PHPCMS V9编辑器中新增上传视频(上传视频并插入HTML5的video标签)的功能
大海哪蓝
PHPCMS
由于PHPCMSv9默认的编辑器中上传的视频插入的是embed标签使用的是flash播放器,手机端无法播放,所以来改造下,让其上传视频并插入HTML5的video标签,这样电脑端的主流浏览器和手机端能都播放,当然也可以参考本文修改进而支持ckplayer、cuplayer等播放器。修改步骤(为防止与其它按钮混淆和去除无用插件,这里去除了原编辑器中插入flash和视频的按钮):一、打开statics
- phpcms微信支付-PHPCMS V9支付模块调整及新增微信支付(含电脑端微信扫码支付和微信公众号JSAPI支付及手机浏览器端微信H5支付)
大海哪蓝
PHPCMS微信公众号开发PHP+MYSQLPHPCMS微信支付PHPCMS微信扫码支付PHPCMS微信公众号支付PHPCMSV9微信支付phpcms微信支付插件
研究过PHPCMS支付模块的朋友应该知道,PHPCMS自带的支付模块局限性比较明显,本次新增的微信支付,在一定程度上修改和完善了PHPCMSV9原有的支付模块及相关文件,重写了支付宝支付类,新增了电脑端微信扫码支付类和微信公众号JSAPI支付类文件及手机浏览器端微信H5支付类文件,新增了系统类文件和一些函数。在扩展函数库文件中新增了判断手机和判断微信的函数。注:调整后的支付模块,也可以方便对接其它
- PHPCMS V9使用ajax方式提交表单
大海哪蓝
PHPCMS
页面效果:实现步骤:一、前台模板(注:需要引入jquery文件)functionformsubmit(){varyemail=$('#yemail').val();if(yemail==''){$(".newsletter-error").html("邮箱不能为空!").fadeIn().delay(3000).fadeOut();returnfalse;}if(!yemail.match(/^(
- PHPCMS V9后台表单向导用户提交的信息新增“修改”的功能
大海哪蓝
PHPCMS
默认PHPCMSV9后台"表单向导"——>表单"信息列表"中只能查看和删除用户提交的信息,这里新增“修改”的功能。本次新增的表单信息“修改”功能来源于系统本身自带的模型字段缓存技术。表单种类的多少、每个表单中字段的多少和字段类型对本功能无影响。如果表单中有新增或者修改的字段,需要在后台“更新缓存”。效果图:操作步骤:(新增或者修改的部分已标出)一、表单信息列表后台模板文件:phpcms\modul
- PHPCMS V9 更改分页页码显示个数
大海哪蓝
PHPCMSPHPCMS分页PHPCMS页码显示个数
先看更改前后的效果(注:以下效果中将默认的分页样式做了美化,不影响本次修改):修改前效果:修改后效果:修改方法如下:打开phpcms\libs\functions\global.func.php,找到分页函数functionpages,将原来默认的参数$setpages=10修改为$setpages=3
- PHPCMS栏目管理中添加栏目图组(栏目多图上传)
大海哪蓝
PHPCMSPHPCMS栏目组图PHPCMS栏目多图功能
之前发表过一篇《PHPCMSV9单页面添加组图字段》的文章,是在后台添加或编辑单页面内容处增加图组功能,然后前台单页面调用图组。今天要说的是在栏目管理处,也就是添加或修改栏目时,有上传栏目图组的功能。两者都源自系统本身的图组,实现上有类似的地方。实现流程:一、栏目表中添加栏目多图字段二、系统扩展函数文件phpcms/libs/functions/extention.func.php中添加函数cat
- PHPCMS V9频道页循环子栏目内容(子栏目为单页则输出标题和内容,为列表则输出栏目名称和分页列表)
大海哪蓝
PHPCMS
注意:频道下的子栏目最多只能有一个分页列表栏目(否则分页会有问题),单页面不限。效果如下图:频道页模板如下:{loopsubcat($catid)$r}{if$r[ismenu]}{if$r[type]==1}{pc:getsql="SELECT*FROM`wysys_page`wherecatid=$r[catid]"}{loop$data$rp}{$rp[title]}{$rp[content
- PHPCMS V9单页面添加组图字段
大海哪蓝
PHPCMS
言:写单页面多图上传前,先看了别人写的单页面单图上传:给单页page自定义单图字段,方便图片的上传1、打开数据库,找到v9_page表,添加一个图片的字段:catpic类型varchar,长度100,当然也可以不用进行设置。2、打开phpcms\modules\content\templates\content_page.tpl.php文件,在48行下面插入如下代码:组图3、4步骤看下面截图部分更
- PHPCMS V9任意页面调用分页
大海哪蓝
PHPCMS
{pc:getsql="SELECTb.catid,b.title,b.updatetimeFROM`v9_hits`a,`v9_news`bwhereconcat('c-1-',b.id)=a.hitsidorderbyinputtimedesc"page="$page"num="8"return="data"}{loop$data$r}{iftime()-$r[updatetime]{/if}
- PHPCMS V9循环调用指定栏目下的所有单页信息
大海哪蓝
PHPCMS
{loopsubcat(1)$ck$carr}{pc:getsql="SELECT*FROMv9_pagewherecatid=$ck"}{loop$data$r}{str_cut(strip_tags($r[content]),400,"……")}{/loop}{/pc}{$carr['catid']}_{$carr[catname]}{/loop}
- PHPCMS V9后台表单向导中让“信息列表"页面直接显示用户留言的信息列表
大海哪蓝
PHPCMS
一、找到后台表单信息列表对应的控制器phpcms\modules\formguide\formguide_info.php文件,添加如图所示代码:/*WYADDAT2017-09-25后台表单向导中信息列表直接显示用户留言信息列表*/pc_base::load_sys_class('form','','');define('CACHE_MODEL_PATH',PHPCMS_PATH.'caches
- phpcmsv9前台按子管理员名称分页展示子管理员的文章
大海哪蓝
PHPCMSphpphpcmsv9按子管理员名调用文章
一、系统扩展函数文件phpcms\libs\functions\extention.func.php中添加函数:/**@param$roleid当前管理员角色ID*@param$uid当前管理员角色ID**/functionget_username_from_tit($title){$userlist=pc_base::load_model('admin_model');$userinfo=$us
- phpcms v9外链文章获取点击量
大海哪蓝
PHPCMS前端phpjavascript
默认phpcmsv9的外链文章因为直接跳转(不进入详情页模板),导致外链文章的点击量一直是0,而我们有时需要按点击量排行或者排序的时候,就有问题了。这里我们借助系统自带的点击量接口api来获取:一、前台JS部分添加://点击外链执行文章点击量增加$(".out_link").click(function(){$.get('api.php?op=count',{'id':$(this).attr("
- phpcms v9未审核推荐信息出现在推荐列表中【BUG修复】
大海哪蓝
PHPCMSbugphp
修改文件:phpcms/modules/content/class/content_tag.class.php调整过的方法:publicfunction__construct(){$this->db=pc_base::load_model('content_model');$this->position=pc_base::load_model('position_model');$this->po
- PHPCMS表单部分设置
木宇尘star
姓名*电话*留言*后台表单需添加name,phone,liuyan三个字段
- dedecms织梦转免费CMS操作步骤(转PageAdmin,帝国CMS、PHPCMS、JTBC、PHPCMS、wordpress)
HENRYLUKCY
cmsphp
dedecms织梦开始正式收费,授权5800元,对于草根站长来说真是太高了,最好的办法是转成免费开源的CMS,下面一些经验之谈,dedecms织梦转PageAdmin,帝国CMS、PHPCMS、JTBC、PHPCMS、wordpress都是通用的操作步骤:1.首先我们先给现有的织梦CMS网站做个完整备份,网站程序+数据库备份。2.新CMS程序创建(以帝国为例)3.创建栏目对应dede栏目(防止出现
- phpcms v9后台添加草稿箱功能
大海哪蓝
PHPCMSphpphpcmsv9添加草稿箱功能
一、后台添加文章模板phpcms/modules/content/templates/content_add.tpl.php中94行增加”保存草稿“按钮:"type="submit"name="dosubmit_draft"class="cu"style="width:100px;"onclick="refersh_window()">二、后台添加文章控制器phpcms/modules/conte
- phpcms修改默认后台登录地址
Newbie@man
后端/PHP开发php
PHPCMS后台入口都是统一的,为了安全起见需要更改后台登陆地址,一个需要更改登陆文件一个需要更改登陆方法login更改为xx_login(可以自定义)1修改./admin.phpheader('location:index.php?m=admin');?>改为:然后再把admin.php换个名字,例如xx_admin.php,但是用phpcms的人都知道index.php?m=admin&c=i
- selinux下踩phpcms和mysql的坑
西湖章
最近在弄一个小网站。上次弄网站差不多是10年前了,那时还是jsp。现在新增一个现有网站的英文版本,要部署到其他人的机器上,用的是phpcmsv9。年前提前放了3天假,在家折腾了2天多,基本上在测试机器上弄得差不多了。上班后又整理了下,准备弄到已有公网IP的机器上,它上面已经安装了lampp,别人在用mysql,没有用httpd。用系统的mysql,用lampp的httpd。坑1:由于是公网机器,我
- 信息收集 - 网站敏感信息
狗蛋的博客之旅
Web安全渗透web安全安全
CMS指纹信息:CMS(内容管理系统)又称为整站系统或文章系统,用于网站内容管理。用户只需要下载对应的CMS软件包,就能部署搭建,并直接利用CMS。但是各种CMS都具有其独特的结构命名规则和特定的文件内容,因此可以利用这些内容来获取CMS站点的具体软件CMS与版本。通过识别CMS指纹信息,可以帮助判断目标网站所使用的具体CMS。常见的CMS包括Discuz、Dedecms(织梦)、PhpCMS、W
- 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独立出来,数据持