- python 判断两个矩形是否重叠(Find if two rectangles overlap)
csdn_aspnet
Pythonpython
给定两个矩形,判断这两个矩形是否重叠。注意,一个矩形可以用两个坐标表示,左上角和右下角。所以我们主要给出以下四个坐标。l1:第一个矩形的左上角坐标。r1:第一个矩形的右下角坐标。l2:第二个矩形的左上角坐标。r2:第二个矩形的右下角坐标。我们需要编写一个函数booldoOverlap(l1,r1,l2,r2),如果两个给定的矩形重叠,则返回true。注意:可以假设矩形与坐标轴平行。一种解决方案是逐
- Android Studio里TextView设置可滚动
ziyuluoyao_Meg
AndroidStudio
1.找到视图中的TextView对象,2.使用该对象调用setMovementMethod(ScrollingMovementMethod.getInstance)如:TextViewtv_message;tv_message=findViewById(R.id.tv_message);tv_message.setMovementMethod(ScrollingMovementMethod.get
- nextLine()消耗行的技巧
迈克尔龙
javaSEjava开发语言
publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);//输入一个整数System.out.print("请输入一个数字:");intnumber=scanner.nextInt();//消耗掉换行符scanner.nextLine();//这一行很重要,因为nextInt()方法不会消耗掉换行符//输入一行
- LeetCode——5840. 使字符串平衡的最小交换次数(Minimum Number of Swaps to Make the String Balanced)[中等]——分析及代码(Java)
江南土豆
数据结构与算法LeetCodeJava题解
LeetCode——5840.使字符串平衡的最小交换次数[MinimumNumberofSwapstoMaketheStringBalanced][中等]——分析及代码[Java]一、题目二、分析及代码1.贪心(1)思路(2)代码(3)结果三、其他一、题目给你一个字符串s,下标从0开始,且长度为偶数n。字符串恰好由n/2个开括号‘[’和n/2个闭括号‘]’组成。只有能满足下述所有条件的字符串才能称
- Python从一个文件导入另一个文件的方法
_苏歌
Pythonpython
从一个文件中导入另一个文件需要的函数#导入所需要的文件importChrome_HandLessimporttimebrowser=Chrome_HandLess.share_browser()url='https://www.baidu.com/'browser.get(url)#获取输入框对象input_button=browser.find_element(by='id',value='kw
- uni-app 小程序项目四 封装 radio组件、NumberBox组件以及数据问题、滑动删除组件、收货地址组件以及授权问题、结算区域
Hyman-ya
uni-app小程序项目uni-app
购物车页面1.0创建购物车页面的编译模式打开微信开发者工具,点击工具栏上的“编译模式”下拉菜单,选择“添加编译模式”:勾选“启动页面的路径”之后,点击“确定”按钮,新增购物车页面的编译模式:1.1商品列表区域1.11渲染购物车商品列表的标题区域定义如下的UI结构:购物车美化样式:.cart-title{height:40px;display:flex;align-items:center;font
- SQL*Loader Messages 报错
luobotoutou123
linux
SQL*LoaderMessagesThischapterlistsmessagesyoumightseewhenusingSQL*Loader.SQL*Loadermessagestaketheform:SQL*Loader-codenumber:messagetextAlongwithitsownmessages,SQL*Loadersometimesdisplaysrelatedmessag
- 力扣215.数组中第k个最大元素
失落的换海迷风
c++
在未排序的数组中找到第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。classSolution{public:intfindKthLargest(vector&nums,intk){//第一种方法:优先级队列////建立大堆//priority_queuep(nums.begin(),nums.end());////出前k-1个元素//for(inti=
- 分治思想--快速排序 | 优先队列:力扣215. 数组中的第K个最大元素
剑圣土豆
LeetCode高频面试题
1、题目描述:2、题解:哈希表:力扣347.前K个高频元素方法1:暴力解法:也就是我们进行排序(默认从小到大),然后倒序取第K个元素即可。classSolution:deffindKthLargest(self,nums:List[int],k:int)->int:nums.sort()returnnums[-k]方法2:分治思想,也即是快速排序中的主要部分进行变体,我们找到第len(nums)-
- leetcode 215. 数组中的第 K个最 大的元素(堆排序,C语言)
Oh?Geostatistics…
算法与数据结构数据结构排序算法堆排序
数组排序后的第k个最大的元素,而不是第k个不同的元素快速排序intcmp(constvoid*a,constvoid*b){return*(int*)b-*(int*)a;}intfindKthLargest(int*nums,intnumsSize,intk){qsort(nums,numsSize,sizeof(int),cmp);returnnums[k-1];}堆排序```c/*交换*/v
- linux操作速查
程序员小软
linux运维linux服务器运维
功能创建新用户并赋予root权限切记在root身份下操作查看用户列表cat/etc/passwd创建新用户useradd为账户设置密码passwd赋予root权限编辑/etc/sudoers文件添加一行ALL=(ALL)ALL验证sudo-l#查看当前用户可使用的命令,仅限root用户可用sudo-i#命令切换到root权限问题处理处理端口被占用:netstat-ano|find“80”//列出端
- FX-C++可变参数
lucky1_1star
C++c++windows开发语言
1.C风格的可变参数(C-stylevariadicarguments)C++继承了C语言的可变参数机制,使用...语法。这种方式需要头文件中的宏来访问参数。示例:#include#includevoidprintNumbers(intcount,...){va_listargs;//定义一个va_list类型的变量va_start(args,count);//初始化args,count是最后一个
- 数据结构与算法:单调栈
WBluuue
c++算法数据结构leetcode
前言单调栈是一种维护数组当前位置左右两侧比它小或大的最近的数的一种数据结构。一、经典用法单调栈的经典用法就是找数组当前位置的数左右两侧比它小或大的最近的数。1.模板——单调栈结构(进阶)#includeusingnamespacestd;voidfindSmall(vector&arr){stackindex;vector>ans(1000001,vector(2,0));//存下标intcur;
- 上位机数据可视化:使用QtCharts绘制波形图
下里巴人hywing
Qt应用开发Qt5QtCharts绘图
工程配置CMake文件find_package(Qt5COMPONENTSChartsREQUIRED)target_link_libraries(zhd-desktopPRIVATEQt5::Charts)包含头文件以及名称空间(这个很重要,没有包含名称空间编译器会提示找不到相关的类型)#includeusingnamespaceQtCharts;初始化初始化Chart//创建图表QChart*
- 第二十五篇 SQL优化杀手锏:用分析函数让你的查询快如闪电
随缘而动,随遇而安
SQL之道——从入门到精通数据库sql
目录一、初识分析函数:外卖骑手的一天1.1真实工作场景二、分析函数三板斧(超直观对比表)三、手把手教学:5大核心函数详解️3.1排名三剑客(班级成绩单案例)3.1.1ROW_NUMBER():唯一学号式排名3.1.2RANK():运动会颁奖式排名3.1.3DENSE_RANK():电梯楼层式排名3.2时间旅行函数(股票分析案例)3.3滑动窗口函数(疫情数据分析)四、性能优化三大绝招(让老板眼前一亮
- iOS中使用QLPreviewController来预览文件
happyrabbit456
Mac+ios
MacOS系统有一个很方便的功能就是文件预览,在Finder中选中一个文件,按下空格键就能够预览其中的内容。支持图片、文档、视频等类型。在iOS4.0系统中,官方SDK提供了一个QLPreviewController,使用它就可以让我们的App在iPhone/iPad中直接预览各个文件了。官方的开发文档中说明其支持的文件类型有:iWork文档微软Office97以上版本的文档RTF文档PDF文件图
- iOS QLPreviewController预览PDF文件等(Swift)
#摩斯先生
iOSpdfswiftiosxcode开发语言
QLPreviewController是可以显示常见文件的专用控制器。可以显示的文件有:文档类:PDF(.pdf)MicrosoftOffice文件:Word文档(.doc,.docx)Excel表格(.xls,.xlsx)PowerPoint演示文稿(.ppt,.pptx)iWork文档:Pages(.pages)Numbers(.numbers)Keynote(.key)纯文本文件(.txt,
- java数组
TwitCoder
java算法
目录一、数组概念二、数组的声明与初始化三、数组操作示例四、数组属性与注意事项五、内存结构分析六、常见操作七、二维数组八、稀疏数组一、数组概念数组是Java中用于存储相同类型数据的有序集合,具有以下特性:类型一致性:所有元素必须属于同一数据类型有序性:元素按顺序排列,通过索引访问长度固定:创建后无法改变容量二、数组的声明与初始化声明数组//推荐写法int[]numbers;初始化方式:动态初始化nu
- Ubuntu常用命令手册【自用笔记】
大佬橙1215
Linuxubuntu运维Linux
Ubuntu常用命令手册【自用】目录Ubuntu常用命令手册【自用】1.杂项1.删除进程中包含"smb"字段的所有进程2.查看最近登录的ip2.xargs3.awk4.find5.grep6.sed7.timedatectl1.杂项1.删除进程中包含"smb"字段的所有进程sudokill-9$(ps-aux|grepsmb|awk'{print$2}')2.查看最近登录的ipcat/var/lo
- python中re.search()函数的用法
前行的zhu
pytorch正则表达式正则表达式python
说到使用正则匹配字符串,就不得不说三个常用的匹配检索方法:re.search(),re.match()和re.findall()。主要的区别是前两个方法只在目标字符串中匹配一次满足条件的正则表达式;而re.findall()方法匹配目标字符串中所有满足条件的正则表达式;另外re.match()只会匹配目标字符串开头是否满足正则表达式,若开头不满足则匹配失败,函数返回None;而re.search(
- 语音识别后处理代码
hitsz_syl
语音识别后处理
importreimportdifflibimportosfromdatetimeimportdatetime,timedeltadefextract_snippets_no_duplicates(input_file,output_file,window=150):"""从输入文本文件中提取包含目标字符(A、B、C、D、"开始"、"结束")前后`window`个字符范围的文本。提取时扩展到完整的
- 82.HarmonyOS NEXT 性能优化指南:从理论到实践
harmonyos-next
温馨提示:本篇博客的详细代码已发布到git:https://gitcode.com/nutpi/HarmonyosNext可以下载运行哦!HarmonyOSNEXT性能优化指南:从理论到实践1.性能优化概述1.1性能指标指标类型关键指标目标值启动时间首屏渲染=[];privatepageSize:number=20;//2.使用虚拟列表build(){List(){LazyForEach(this
- JAVA 提取四则运算表达式的运算符和数字
qq_22556699
java开发语言
代码:StringregEx="([0-9]\\d*\\.?\\d+)|(0\\.\\d*[0-9])|(\\d+)|([\\+\\-\\*\\/\\(\\)])"Patternpattern=Pattern.compile(regEx);Matchermatcher=pattern.matcher(text);while(matcher.find()){Log.e("number",matche
- mac根目录新建文件夹
淡淡的id
其他mac
1、前言 springboot项目输出文件到根目录的/data文件夹中,故想建一个777权限的data文件夹,以便将数据写进入,过程不难,刚创建完也可以读写的,finder不能操作,但是项目可以读写,但一重启电脑,那就gg了,又没有权限了,最后解决方法是建立软连接到根目录。2、过程2.1、开启sip重新启动,在启动的时候按command+R,进入Recovery模式在topbar的实用工具选项,
- kmp报错→Cannot find skiko-windows-x64.dll.sha256
淡淡的id
其他kotlinKMP
1、前言 学习kmp(KotlinMultiPlatform简称)过程中报了错误,这个报错在直接运行desktop的main方法才会出现,用gradle运行却不会报错,新建的kmp项目也不会出现,我学习的写了一些代码的项目才会出现。 运行main方法主要是需要运行main方法才能debug,gradle不能debug环境kmp版本:1.7.0gradle版本:8.13kotlin版本:2.1.
- Python——正则表达式与re模块
fw9521
python
目录1.正则表达式2.re模块函数-findall3.re模块函数-search4.re函数模块-sub总结1.正则表达式正则:为了匹配一个符合规则的字符串1.精确匹配:abc:匹配abc的子串2.选择性匹配:red|blue|green:匹配red或blue或green3.中括号[]:一个[]只匹配1位,[^]:排除[0-9]:匹配0-9之间的一个数字[^0-9]:排除0-9[a-z]:小写字母
- Python正则表达式(re模块)
qq742234984
python正则表达式mysql
Python正则表达式(re模块)概述正则表达式Python正则表达式re模块re.match方法常用的匹配规则-匹配字符常用的匹配规则-匹配字符数量常用的匹配规则-原生字符串常用的匹配规则-匹配开头结尾常用的匹配规则-分组匹配re.compile方法re.search方法re.findall方法re.sub方法re.split方法贪婪模式与非贪婪模式概述案例概述正则表达式英文名为RegularE
- bugku_简单的rsa
岁岁的O泡奶
python算法密码学bugkursa
简单的rsa题目:首先解压压缩包后会获得一个后缀为.pyc的文件要去一个把.pyc转换成.py的网站网站给你们了https://tool.lu/pyc/解压后发现p和q都给出来了那就非常简单了直接写脚本#导入库importgmpy2fromCrypto.Util.numberimportlong_to_bytes#已知参数p=0xED7FCFABD3C81C78E212323329DC1EE2BE
- 【Linux】learning notes(4)cat、more、less、head、tail、vi、vim
bryant_meng
ServerConfig/Toolslinuxlessvimtailmore
文章目录catmore查看整个文件less查看整个文件head查看部分文件tail查看部分文件vim/vicatcat命令在Linux和Unix系统中非常常用,它用于连接文件并打印到标准输出设备(通常是屏幕)。虽然cat的基本用法很简单,但它也支持一些参数来提供额外的功能。-n或--number:对所有输出的行进行编号。示例:cat-nfile.txt这会显示file.txt的内容,并在每行的开头
- Java开发第一坑:记一次MySQL ON DUPLICATE KEY UPDATE影响行数异常排查:从现象到解决的全过程
猿享天开
javamysql开发语言
记一次MySQLONDUPLICATEKEYUPDATE影响行数异常排查:从现象到解决的全过程一、问题现象:神秘的计数器异常由于学习JAVA开发时间不长,也没有进行系统性学习,由于项目需要就草草的开始了程序开发,在开发医疗影像归档系统时,归档患者影像时需要自动根据数据库操作后的返回值判断是新增插入数据,还是更新数据,但由于返回的影响行数不准确,比如插入1条新数据、更新一条数据或未变化,返回的影响行
- 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独立出来,数据持