- 包含日志获取webshell
陈望_ning
日志文件关闭:Apache目录下的httpd.conf文件#ErrorLog"logs/error.log"#CustomLog"logs/access.log"common加#号为注释不产生日志文件如果去掉#将会在Apache/logs/目录下产生日志文件linux:access_logerror_logwindows:access.logerror.logaccess_log每一行记录了一次网
- selenium 特殊场景处理
文章目录前言一、windows的弹窗二、内嵌网页frame三、页签切换四、截图五、弹窗六、JS执行总结前言selenium处理web操作师,有很多特殊的情况需要处理,例如弹窗、内嵌网页,页签切换,js执行等,下面介绍一些可能会遇到的特殊场景一、windows的弹窗importwin32com.client'''创建了一个WScript.ShellCOM(ComponentObjectModel)对
- redis反弹shell时kali无法接收回弹的解决方法
显哥无敌
shellredis
无法接受回谈大概率是bash命令写的不对,那个crontab中间的星号个数是有意义的,不是随便加的,下面贴一下crontab的基本用法https://www.cnblogs.com/zhoading/p/11572630.html{minute}{hour}{day-of-month}{month}{day-of-week}{full-path-to-shell-script}如果是要cronta
- ubuntu的redis反弹shell总结
chanra
萌新随笔ubunturedislinux
ubuntu的redis反弹shell总结ubuntu要执行有三点:1、ubuntu的默认执行命令的为/bin/dash,我们使用bash-i肯定是弹不了的。2、ubuntu计划任务运行有语法要求,redis写入的文件存在缓存数据,导致语法错误无法运行计划任务。3、文件需要是600rw权限,权限不对也不能运行,不过我直接写入貌似就是600rw。参考链接:http://www.vkxss.top/2
- Redis反弹Shell
波吉爱睡觉
web安全#未授权访问漏洞#SSRFredis网络安全web安全
这里我来总结几种Redis反弹Shell的方法一、利用Redis写WebShell前提条件开了web服务器,并且知道路径,还需要有文件读写增删改查的权限条件比较苛刻,但是满足条件上传就会简单一点,我们直接将文件写入www目录下,完了使用工具连接即可。语句:redis:6379>configsetdir/var/www/html/redis:6379>configsetdbfilenameshell
- 2x002 MacOS X里的Python环境变量设置
2x002MacOSX里的Python环境变量设置MacOSX里的Python环境变量设置略说:SHELL类型环境变量配置文件添加环境变量系统环境变量/etc/paths系统环境变量/etc/profile和/etc/bashrc设置NODE_ENV环境变量。退出SHELL时失效查看当前所有环境变量MacOSX里的Python环境变量设置略说:当我们安装一个软件后,然后得以使用一些与该软件相关的命
- 远程服务器windows对外开放端口,Windows Server 2008 R2开启新端口远程桌面
【要求】1、修改默认端口。2、不用关闭防火墙。【步骤】1、用PowerShell查看:(Get-ItemProperty-Path"hklm:SYSTEM\CurrentControlSet\Control\TerminalServer\Wds\rdpwd\Tds\tcp").PortNumber(Get-ItemProperty-Path"hklm:SYSTEM\CurrentControlSe
- linux shell从入门到精通(一)——为什么要学习Linux Shell
1.编译型语言和解释型语言 计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。 翻译的方式有两种,一种是编译(compile),另一种是解释(interpret)。两种方式只是翻译的时间不同。编译型语言写在程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,例如:Windows系统中的EXE文件,编译好后运行
- oldguo-MySQL 8.0 OCP 原题解析-Q23
MySQL_oldguo
Question23:Examinethecommand,whichexecutesuccessfully:shell>mysqld--initialize-insecureWhichstatementistrue?A)Theinstallationcreatesatemporarytestenvironmentwithdatainthe/tmpdirectory.B)Theinstallatio
- Linux Shell 中~流程控制
光年像素
linuxlinux
在LinuxShell中,流程控制是编写脚本的核心能力,用于根据条件执行不同操作(条件判断)、重复执行代码块(循环)或封装可复用功能(函数)。以下是详细讲解及示例:一、条件判断条件判断用于根据表达式的真假(0为真,非0为假)决定代码执行路径。Shell支持多种条件判断语法,适用场景不同。1.if[条件]与test命令if语句的基本结构,[条件]等价于test条件([是test的同义符号,需注意[后
- 【20年架构师韩艳威整理】CentOS Stream10磁盘管理第4章
韩公子的Linux大集市
Bash入门centoslinux运维
文章目录优化细化1:磁盘识别与扫描(增强版)优化细化2:GPT分区高级操作优化细化3:文件系统优化参数优化细化4:LVM元数据管理优化细化5:LVM高级扩容技巧优化细化6:LVM快照管理优化细化7:LVM精简配置优化细化8:故障处理与恢复优化细化9:性能监控与调优优化细化10:安全与权限管理终极操作对比表:普通分区vsLVM灾难恢复检查清单以下是对CentOSStream10中BashShell磁
- 查看自己电脑安装了wsl
Jiang_Immortals
各平台开源项目python
要查看自己的电脑是否安装了WSL(WindowsSubsystemforLinux),可以按照以下步骤进行:打开WindowsPowerShell或命令提示符(CommandPrompt)。输入以下命令并按回车键执行:wsl--list--verbose等待一段时间,系统会列出已安装的WSL发行版。如果没有任何输出或返回错误消息,则表示未安装WSL。如果您已经安装了WSL,输出将包含已安装的发行版
- 在shell脚本中创建动态变量,并引用存储在动态变量中的值
企鹅与蟒蛇
Linuxbash开发语言
Contents1.要求:动态创建变量名,并引用动态变量名2.实现:2种方式2.1.指针变量的形式(PointerVariable)2.2.数组的形式(Array)3.References1.要求:动态创建变量名,并引用动态变量名在shell脚本中动态生成一组变量名,并引用生成的变量名。示例如下:var_$n=$n+2,最终得到如下表达式var_1=3var_2=5var_3=72.实现:2种方式
- Android启动时间优化大全
SEP5010
Systembootchartcgroup
1修改Androidmksh默认的列长度不修改这个参数,adbshell后,输入超过80个字符,就不能看到完整的命令行。external/mksh/src/sh.hEXTERNmksh_ari_tx_colsE_INIT(80);EXTERNmksh_ari_tx_linsE_INIT(24);2Kernel优化2.1内核驱动模块化将内核中尽可能多的驱动模块化,写一个负责insmod的shell脚
- linux字符模式关闭光标
雨中来客
Linux系统驱动开发Linux平台开发linux
在Linux终端中,光标通常用于指示当前的位置,比如在文本编辑或命令行操作中。如果你想要在特定的场景下关闭光标,比如在编写脚本或执行某些命令时,你可以使用以下几种方法来实现。1.在命令行终端使用echo命令在bash或其他shell中,你可以使用echo命令结合特定的序列来关闭光标。例如:echo-e"\e[?25l"这条命令会关闭光标。如果你想恢复光标显示,可以使用:echo-e"\e[?25h
- 2020-01-16 bat脚本例子 隐藏黑框
木人呆呆
隐藏黑框@echooff%1mshtavbscript:CreateObject("WScript.Shell").Run("%~s0::",0,FALSE)(window.close)&&exit::开始启动软件java-jarMicro-Service-Skeleton-Register-2.0.0.jarping127.0.0.1-n15>nuljava-jarMicro-Service-S
- ubuntu linux 从入门到精通.pdf,UBUNTU LINUX从入门到精通(附DVD)
鲨鱼飞不动了
ubuntulinux从入门到精通.pdf
摘要:本书是为想系统学习Linux的初学者准备的,从系统,驱动,常用软件的安装开始讲起,让读者快速掌握Linux的基础知识,并轻松向网络管理,Shell,Vi/Vim,X-Window,进程管理进阶,然后深入到Apache,VSFTPD,Postfix,SAMBA,DNS等服务器的配置,全面掌握企业所需的Linux应用技能.传统的Linux图书主要以命令行的方式进行介绍,学习起来非常枯燥乏味,而且
- WEB安全--Java安全--jsp webshell免杀
1.1、BCELClassLoader介绍(仅适用于BCEL6.0以下):BCEL(ApacheCommonsBCEL™)是一个用于分析、创建和操纵Java类文件的工具库;BCEL的类加载器在解析类名时会对ClassName中有BCEL标识的类做特殊处理,该特性经常被用于编写各类攻击Payload。当BCEL的loadClass加载一个类名中带有BCEL$$”的类时会截取出BCEL后面的字符串,然
- Java数据结构和算法-希尔排序[移位式]算法实现
Shaw_Young
packagecom.young.sort;importjava.text.SimpleDateFormat;importjava.util.Arrays;importjava.util.Date;publicclassShellSort{publicstaticvoidmain(String[]args){//int[]arr={8,9,1,7,2,3,5,4,6,0};//shellSort2
- 【网络安全】Metasploit 生成的 Shellcode 的导入函数解析以及执行流程分析(1)
IT老涵
程序员安全网络网络安全信息安全计算机网络
2021年4月,研究人员深入分析了CobaltStrike渗透测试技术,以及它的一些签名规避技术是如何在检测技术下失效的。在本文中,我们将深入讨论Metasploit,这是一个可以与CobaltStrike互操作的常用框架。在本文中,我们将讨论以下主题:shellcode的导入解析——Metasploitshellcode如何定位来自其他DLL的函数,以及我们如何预先计算这些值来解析来自其他有效载
- 【InnoDB Cluster】安装部署 MySQL Router
独上西楼影三人
MySQL8笔记mysql数据库MySQLShellMySQLRouterInnoDBCluster
安装部署MySQLRouter文章目录安装部署MySQLRouter安装MySQLRouter8.0部署MySQLRouter8.0创建MySQLRouter账户引导MySQLRouter启动MySQLRouter验证路由状态结语在之前的文章中,我们使用MySQLShell搭建了一个最简单的三节点InnoDBCluster,虽然它利用组复制可以提供高可用、单节点容错功能、故障转移,却并未提供诸如会
- go语言数据结构与排序算法
fbbqt
golang数据结构排序算法
packagemainimport"fmt"funcmain(){Bubble_Sort()Select_Sort()Insert_Sort()Shell_Sort()Heap_Sort()Merge_Sort()Quick_Sort()}一、1、冒泡排序//冒泡排序funcBubble_Sort(){str:=[]int{9,1,5,8,3,7,4,6,2}//正向冒泡fori:=0;istr[
- 如何快速掌握WeNet:从零到一的端到端语音识别学习指南
Crazy learner
语音识别语音识别人工智能wenet
目录为什么选择WeNet?学习路径总览为什么优先学习AIShell示例?详细学习步骤步骤1:环境搭建1.1安装依赖1.2克隆WeNet仓库1.3硬件准备步骤2:运行AIShell示例2.1进入示例目录2.2逐阶段运行2.3各阶段详解2.4快速运行完整流程2.5使用预训练模型加速学习步骤3:掌握核心概念步骤4:实践与调试4.1使用预训练模型4.2修改配置4.3使用自定义数据4.4调试常见问题步骤5:
- docx格式的word文档转为markdown
界北鲲鹏
markdowndocmacromedia
请注意系统版本!docx格式的word文档转为markdown安装pandocexe安装包,一般需要下载安装Chocolatey安装以管理员打开powershell执行Set-ExecutionPolicyBypass-ScopeProcess-Force;[System.Net.ServicePointManager]::SecurityProtocol=[System.Net.ServiceP
- 小记-macOS Ventura 13.5(M1)卸载miniconda3
赵军港
macoscondamac
macOS卸载miniconda3在macOS上干净地卸载Miniconda3需要删除Miniconda3的安装目录、清除环境变量设置以及移除任何Miniconda3的配置文件。anaconda的卸载也可参考此步骤。系统:macOSVentura13.5架构:ARM64(M1)shell:zsh安装版本:Miniconda3-py310_23.11.0-2-MacOSX-arm64.sh总共分为以
- Nanopct6SDK问题汇总与解决方案
无证驾驶梁嗖嗖
ubuntu3588瑞芯微
今日问题汇总与解决方案问题概览今天共遇到8个主要问题,涉及以下技术领域:Git网络配置(2个问题)Shell脚本执行(1个问题)内核编译(4个问题)代码调试(1个问题)详细问题记录1.Git网络连接问题⚡问题描述:无法访问远程Git仓库fatal:无法访问'https://github.com/friendlyarm/kernel-rockchip/':Failedtoconnectto192.1
- 9、使用Python进行区块链API编程
脸先着地天使
PythonBlockchainAPI比特币汇率
使用Python进行区块链API编程1.Blockchain.infoPython库的安装在开始使用Python与区块链进行交互之前,首先需要安装和配置Blockchain.info的Python库。这个库可以帮助我们轻松获取比特币汇率、市场统计数据以及区块信息等。以下是详细的安装步骤:安装步骤打开命令行程序:确保你已经打开了命令行程序(Windows用户可以使用CMD或PowerShell,ma
- danted 使用
雨声不在
danted
这个只是个人小实验,请勿用于生产环境基本使用可以这样配置部署:#安装apt-getupdateapt-getinstalldante-serveradduser--no-create-home--shell/usr/sbin/nologindante-socks#启动代理nohup/usr/sbin/danted-f/etc/danted.conf本机验证转发curl-xsocks5h://1
- Linux:日志乱码
博风
#Linuxlinux运维服务器
1、Linux日志乱码可能是XShell客户端编码没设置为UTF-8引起的,按照以下步骤,设置终端格式:中文版:打开Xshell会话属性(文件→属性→终端→编码),选择与服务器一致的编码格式(如UTF-8或GB2312)英文版:打开Xshell会话属性(file→properties→terminal→Translation->Encoding),选择与服务器一致的编码格式(如UTF-8或GB23
- Ubuntu 22.04 配置 Zsh + Oh My Zsh + Powerlevel10k
极地星光
Linuxubuntulinux
在Linux终端中,Bash是默认的Shell,但如果你追求更强大的功能、更高效的交互和更炫酷的外观,Zsh(ZShell)绝对是更好的选择。结合OhMyZsh框架和Powerlevel10k主题,你可以打造一个既美观又实用的终端环境。本文将详细介绍如何在Ubuntu22.04上完成从安装到深度定制的全流程。1.安装ZshZsh是基础,首先确保系统已安装:sudoaptupdatesudoapti
- 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独立出来,数据持