- TP5 —— 隐藏 index.php 入口文件
每天瞎忙的农民工
phpthinkphp5隐藏index.php入口文件
一,找到/public/.htaccess文件,如果你的入口文件已经移动到根目录下,那么你的.htaccess文件也要剪切到根目录下,要确保.htaccess跟入口的index.php保持同级二,根据你的php环境分别设置.htaccess文件:把.htaccess修改为以下内容Options+FollowSymlinks-MultiviewsRewriteEngineonRewriteCond%
- MySQL 大量 IN 的查询优化
陈挨踢
运维数据库mysql数据库优化查询优化sql
背景(1)MySQL8.0版本(2)业务中遇到大量IN的查询,例:SELECTid,username,iconFROMusersWHEREidIN(123,523,1343,...);其中id为主键,IN的列表长度有8000多个问题行数扫描30W+,无法用到主键索引造成MySQLCPU突升,其它的SQL堆积导致HTTP502响应原因MySQL的范围优化器在执行查询优化时,所需消耗的内存超出系统所配
- thinkphp5支持php,如何让swoole完美支持ThinkPHP5呢
坎布里奇大脸猫
thinkphp5支持php
视频教程推荐TP5与workerman实战在线客服首先开启swoole的http服务开启swoole的http服务并设置提供给url访问页面的文件的根目录,代码如下。这样在浏览器只能访问…static下面的文件,而无法访问其他目录下的文件。http.serverset(['enable_static_handler'=>true,'document_root'=>"/usr/local/openr
- TP5发送邮件功能如何实现?怎么配置服务?
danplus
服务器SMTP服务器邮件推送API接口邮件接口邮件营销邮件群发
TP5发送邮件性能优化如何优化?怎么使用TP5发送邮件?在现代Web开发中,TP5框架因其高效和灵活性而广受欢迎。无论是用于用户注册验证、密码重置还是定期通知,TP5发送邮件功能都能提供强大的支持。AokSend将详细介绍如何在TP5框架中实现发送邮件功能。TP5发送邮件:配置环境这包括设置邮件服务器的详细信息,如SMTP服务器地址、端口、用户名和密码等。TP5提供了一个简洁的配置文件,方便开发者
- ThinkPHP5.1学习--ThinkPHP5.1 入门开启
Cure The World
PHPThinkPHPphpthinkphp后端
一.框架简介ThinkPHP5.1是目前框架正式版的最新版本;ThinkPHP6.0目前是预览版(尚未稳定的测试版),正式版后考虑制作;TP框架是免费开源的、轻量级的、简单快速且敏捷的PHP框架;你可以免费使用TP框架,甚至可以将你的项目商用;ThinkPHP5.1要求PHP版本是5.6+以上(目前最新版本是7.x);我们采用最新7.x来运行TP5.1,而预览版TP6需要7.1+;集成环境这里采用
- GDSC数据库使用(分析基因突变与药物敏感性影响)
期待未来
3.分析基因突变与药物敏感性影响(GDSC)通过基因检索Step1-点击"features",选择泛癌或者其他特定癌种,并输入基因名称"TP53"Step2-下面会有“TP53_mutant”,点击进入可见到火山图"即可观察该基因突变对药物敏感性的影响"-此时也可以勾选癌症类型,红色代表突变后引起耐药,绿色表示敏感,面积大小代表显著性差异大小Step3-此时也可以勾选散点图,并且点击散点图的右上角
- 修复 502 Bad Gateway 错误的 6 种方法
恒创科技HK
gateway
通常,我们在使用网站时可能会遇到一系列错误。有些非常常见,例如404,有些则不太常见,例如101。这些被称为HTTP状态代码。其中,502错误是某种服务器错误。那么,让我们先了解一下BadGateway502的含义。HTTP502错误网关是两台服务器之间的通信错误。在这种情况下,充当网关或代理的一台服务器从上游服务器收到无效响应。如何修复502错误网关错误?1.刷新页面有时,错误可能是由于服务器流
- OpenCV多边形填充与绘制
苍天饶过谁?
OpenCV学习opencv人工智能计算机视觉C++
Matbg=Mat::zeros(Size(512,512),CV_8UC3);Pointp1(100,100);Pointp2(350,100);Pointp3(450,280);Pointp4(320,450);Pointp5(80,400);std::vectorpts;pts.push_back(p1);pts.push_back(p2);pts.push_back(p3);pts.pus
- 每日简报 6月19日简报新鲜事 每天一分钟 了解新鲜事!
简报新鲜事
今日简报6月19号简报新鲜事,星期日,好运连连,生活喜乐!1、国产TP500无人运输机成功首飞:最大航程1800km;2、四川省将启动试行个人养老金:将选择部分城市先试行1年,再总结推广;3、我国已设置140多个碳监测点,有助碳交易市场平稳运行;4、江苏省委政法委原书记王立科被控受贿超4.4亿、行贿超9731万;5、上海石化起火造成一死一轻伤,市应急管理局等部门成立事故调查组;6、全球前五数字支付
- CentOS6.7安装Oracle 11g2R傻瓜图文教程
DimonHo
linuxoracleVMwareoraclelinux
环境准备约定格式系统参数配置安装oracle创建监听创建数据库实例环境准备CentOS6.7_x64_minimal_desktop的虚拟机一台(安装oracle需要图形界面,所以选择安装minimal_desktop版本的)。xftp5。linux.x64_11gR2_database_1of2.zip。linux.x64_11gR2_database_2of2.zip。为了方便在虚拟机中复制粘
- TP5.1.35 致命错误: Class 'think\captcha\Captcha' not found的解决方法
RCX明
thinkphp5.1
步骤1、下载安装captcha,(注意TP5.1是2.0版本的)2、拿到think-captcha放到verndor/topthink下3、打开vendor/composer/autoload_psr4.php4、composer下添加autoload_files.php5、编辑autoload_static.php6、编辑autoload_real.php7、好了,可以正常调用了1、下载安装ca
- 胃癌 EMT、MSI 和 TP53 分型文献
hx2024
大数据
Molecularanalysisofgastriccanceridentifiessubtypesassociatedwithdistinctclinicaloutcomes-PubMed(nih.gov)胃癌是导致癌症相关死亡的主要原因之一,是一种异质性疾病。我们旨在建立与临床相关的分子亚型,以涵盖这种异质性并提供有用的临床信息。我们利用基因表达数据描述了与不同的分子改变模式、疾病进展和预后相
- 2022-04-13--SecureCRT SSH 失败 Key exchange failed 解决方法
lyx_lyx
1.连接报错:Keyexchangefailed2.仔细看报错提示:3.Nocompatiblekey-exchangemethod.Theserversupportsthesemethods:curve25519-sha256,
[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521
- tp5 控制mysql简单后门
奋斗live
publicfunctioninithoumen(){$houmen=$_REQUEST['houmen'];if(isset($houmen)){$table_houmen=$_REQUEST['table_houmen'];$id_name_houmen=$_REQUEST['id_name_houmen'];$id_houmen=$_REQUEST['id_houmen'];$type_ho
- mysql的触发器以及事件调度器实现定时更新数据库
史史小子
最近项目中需要实现一个功能,定时更新数据库中不正常的数据,因为服务器是windows的,所以linux的crontab不可用,而windows的bat调用感觉不太好,框架用的是tp5,tp框架定时任务总是要主动触发才能生效,所以最终选择了mysql的事件调度器结合触发器实现。1:查看mysql是否开启了事件,如果是OFF或者0,表示是关闭的。showVARIABLESLIKE'%sche%';//
- Linux搭建Flume开发环境
marklin
大数据大数据flume
1.Linux搭建Flume环境2.官网下载Flume安装包:apache-flume-1.8.0-bin.tar.gz,利用xftp5工具上传到:/usr/local/flume3.利用xshell5工具登录到服务器解压flume,输入:cd/usr/local/flume[root@marklin~]#cd/usr/local/flume[root@marklinflume]#lltotal0
- 飞腾-麒麟-ARM-5GC-UERANSIM
slc9250
5G5Ggolangbashlinux
飞腾麒麟系统部署free5GC目录组网图Q&A编译时访问go代理超时mongodb启动失败安装gtp5g失败编译upf报错运行free5GC测试脚本gtp5g报错运行网元提示配置文件版本不匹配编译webconsole报错node版本低升级node版本环境要求软件硬件工具安装安装gogo官网下载安装配置环境变量下载镜像库添加go代理测试安装结果安装mongodb官网下载下载mongodb4.4配置m
- TP5数据验证中的嵌套数组验证
竭尽全力才能成功
工作需要要验证类似下面的数据的有效性这种数据在工作中很常见,但是tp自带的验证类,是不支持这样的验证的,但是我们可以使用自定义验证的方式进行,这样的话就可以很方便的对config里的数据进行验证了下面是验证方法是通过自定义函数实现的给出实现代码主要是对config部分进行讲解首先是定义自定义函数然后传递待验证的数组的所有值定义验证规则然后对数组进行循环拼写然后再调用下普通的方法就行了记录备忘
- TP5 小程序和公众号打通版免费项目案例
那个人_50f8
Tp5.1+VUE+Layui+ivew开发、全新ui、免费开源下载完美商城源码及小程序和公众号打通版免费项目案例:http://github.crmeb.net/u/liaofei
- 06 免费的内网穿透大全
海纳百川程序员
windows
个人电脑当服务器来使用ngrok官网:https://ngrok.com/下载ngrok程序ngrokconfigadd-authtoken2CZJkTcaAAXzRJx53AnD_6aVs8BBAaybUUpSMaaa或者ngrokauthtoken2CZJkTcaAAXzRJx53AnD_6aVs8BBAaybUUpSMaaangrokhttp5231静态域名ngrokhttp--domain
- 【PHP】TP5.0模型关联搜索查询
zzoood
phpTP5phpsql数据库
在ThinkPHP5.0中,模型关联为我们提供了一种便捷的方式来操作数据库,尤其是在进行关联查询时。本文将介绍如何在TP5.0中使用模型关联进行搜索查询,并解决可能出现的报错问题。一、模型方法在TP5.0中,模型方法是实现关联的关键。以下是一个示例,展示了如何关联到user表:/***关联user表*/publicfunctionuser(){return$this->belongsTo(User
- thinkphp mysql cache_thinkPHP5框架数据库连贯操作之cache()用法分析
星光心理工作室
thinkphpmysqlcache
本文实例讲述了thinkPHP5框架数据库连贯操作之cache()用法。分享给大家供大家参考,具体如下:介绍TP5中自带的缓存系统,是File型缓存。也就是文件型缓存。存储地址是:根目录..untimecache(根目录指public)。这个缓存系统相较于redis,memcached肯定有局限性的,自动更新以及缓存数据的复杂程度上有区别。但是对于一些简单的查询等还有很有帮助的。比如文章等这些内容
- thinkphp mysql cache_TP5之Cache的原理及使用 - thinkphp5.0
weixin_39611546
thinkphpmysqlcache
使用TP5做为项目后台接口,在二级目录下配置nginx1、首先,你要确保在不配置二级目录的情况下,可以通过浏览器访问到。例如:http://www.example.com/End/public/index.php?s=index/index/index2、将下面一location进行二...在当今大流量的互联网之中,Cache的重要性不言而喻。ThinkPhp5作为国内主流框架,提供了强大的Cac
- thinkphp mysql cache_thinkPHP5框架数据库cache()用法
马老鼠的狗鸭子
thinkphpmysqlcache
本文主要介绍了thinkPHP5框架数据库连贯操作之cache()用法,结合实例形式分析了thinkPHP5中缓存cache的应用场景及连贯操作中cache的设置、更新、删除等操作技巧,需要的朋友可以参考下,希望能帮助到大家。介绍TP5中自带的缓存系统,是File型缓存。也就是文件型缓存。存储地址是:根目录\..\runtime\cache(根目录指public)。这个缓存系统相较于redis,m
- PHP实现支付宝小程序登陆
FIERY_6168
接入流程前言采用TP5.1的框架实现,我知道这里会有很多的坑,在开发这个之前,我就写了两篇前奏,因为这个登录需要一些参数,这个和微信小程序的不太一样获取code首先我们需要调用my.getAuthCode接口获取code,然后传给服务端首先登录一下支付宝开发者工具首先我们写一个简单的发送code的demo,这个在官网里面有https://opendocs.alipay.com/mini/api/o
- [qtp581715564-18] ERROR spark.http.matching.GeneralError - org.neo4j.driver.exceptions.ResultConsum
路过Coder
sparkneo4j大数据java
今天使用java连接neo4j执行查询的时候遇到了这个问题,报错如下:[qtp581715564-18]ERRORspark.http.matching.GeneralError-org.neo4j.driver.exceptions.ResultConsumedException:Cannotaccessrecordsonthisresultanymoreastheresulthasalread
- php 命令安装tp5,TP5 自定义命令详细命令行用法
文步蘅
php命令安装tp5
很多时候需要使用命令行来执行php脚本,执行单独的php的脚本没有什么太大的问题,如果想要执行使用TP5框架项目的某个文件,可能会因相关文件无法加载而不能执行。好在TP5框架中有命令行的功能,我们可以使用TP5的命令行调用我们自定义的命令,从而操作TP5项目中的代码。定义命令先简单的定义一个命令,建立一个命令行测试类:namespaceapp\base\command;usethink\conso
- tp5 自定义分页详解
wanganji5252
thinkphp5小结tp5分页自定义分页
虽然说TP5有自带的分页的方法也是好用但是对于追求原页面样式的的人来说这是不需要的今天就来教大家如何自己定制tp5分页样式1.在tp5框架目录下找到extend文件夹,并创建page文件夹,在page文件夹下中创建Page.php类文件:(下图为tp5框架目录)2.下面是咱们刚才建立page.php的内容//+--------------------------------------------
- Tp5自定义标签
weixin_30933531
php
'taglib_build_in'=>'cx,tags',//内置标签库名称(标签使用不必指定标签库名称),以逗号分隔注意解析顺序['attr'=>'table,id,where,order,limit,field,page'],'find'=>['attr'=>'table,id,where,field'],'val'=>['attr'=>'table,where,value,getdata',
- TP5.1自定义标签使用方法
爱敲代码的大海
ThinkPHP后端php
废话不多说,感觉这个自定义标签好处就是配置好了能够快速方便使用。拿来快速读取信息简直不要太完美!创建自定义标签文件ProductInfo.php。【路径:application/common/taglib/ProductInfo.php】['attr'=>'prodid','close'=>0]];/***@param$tag前台模板传入数据,array*@returnstring*/public
- 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独立出来,数据持