- springboot 2.6.0结合swagger3.0.0不兼容问题
隐藏起来
编程springbootspringjava
先放结论:网上各种解决办法,但是最简单的临时办法是在application.properties中添加spring.mvc.pathmatch.matching-strategy=ant_path_matcher错误代码如下:ErrorstartingApplicationContext.Todisplaytheconditionsreportre-runyourapplicationwith'd
- ListExtension 扩展方法增加 转DataTable()方法
方法1.判断集合是否为Null2.判断集合是否不为Null3.判断集合是否有值4.拼接成字符串5.根据一个表达式去除重复6.转DataTable泛型对象转换方法//////集合扩展方法///publicstaticclassListExtension{//////判断集合是否为Null////////////publicstaticboolIsNull(thisIEnumerablelist){r
- MinerU API 服务Docker一键部署(附源码)
码农垦荒笔记
docker容器运维
一、关于MinerU一站式、开源、高质量的数据提取工具,支持多种功能,如提取PDF、word、markdown等格式的内容。1.主要功能删除页眉、页脚、脚注、页码等元素,保持语义连贯对多栏输出符合人类阅读顺序的文本保留原文档的结构,包括标题、段落、列表等提取图像、图片标题、表格、表格标题自动识别文档中的公式并将公式转换成latex自动识别文档中的表格并将表格转换成latex乱码PDF自动检测并启用
- Word转LaTeX排版6大技巧
加油吧zkf
目标跟踪计算机视觉目标检测机器学习人工智能python
Word内容快速排版到TeX格式的技巧分享(含多种实用方法)在科研论文、技术报告或毕业论文写作中,很多同学喜欢先用Word写初稿,再迁移到LaTeX(.tex文件)进行排版。但迁移过程中常常遇到这些麻烦:Word中的公式复制过去乱码或无法编译排版格式对不上期刊/会议模板自己新写的tex文件总是出错,编译困难今天分享我在实际论文写作中总结出的几条小技巧,帮大家快速把Word内容排到LaTeX,而且能
- Soc 离屏渲染优化 - 序
皓瑞 =)
离屏渲染离屏渲染
想了挺久,我决定还是记录一些东西;讲述一下rk_mmp_demo编码的一些背景,出于何种目的,又解决了什么问题.背景大概在一年半年前由于工作上的原因接触到了OpenGL,为此我还写了一篇笔记OpenGL简介.在这个示例里,演示了如何使用OpenGL实现转场特效这一实现,比如百叶窗的frag.glsl就如下:varyingvec2oUV;uniformsampler2DTexA;uniformsam
- FocalNet:焦点调制网络
AI专题精讲
Paper阅读计算机视觉人工智能AI技术应用
摘要我们提出了焦点调制网络(简称FocalNets),在该网络中,自注意力(self-attention,SA)被完全替换为焦点调制模块,用于建模视觉中的token交互。焦点调制由三个组件组成:(i)焦点上下文化(focalcontextualization),通过一组深度可分离卷积层实现,用于从短程到长程编码视觉上下文;(ii)门控聚合(gatedaggregation),选择性地将上下文聚合到
- 探索Qt世界的宝藏:QtExamples开源项目推荐
探索Qt世界的宝藏:QtExamples开源项目推荐QtExamples分享各种Qt示例,,说不定用得上呢~项目地址:https://gitcode.com/gh_mirrors/qtex/QtExamples项目介绍在Qt开发者的世界里,寻找高质量的示例代码往往是一项耗时且繁琐的任务。为了解决这一痛点,QtExamples项目应运而生。这个开源项目由经验丰富的开发者精心打造,旨在为Qt开发者提供
- 简单一周日期展示及选择切换
医院挂号,可能需要切换日期,选择一周内的某一天。提供一周内的日期段,通过点击,切换到不同天。简单的js,html实例。切换玩调用后台接口,实现后续逻辑。使用Vue,插值语法,更简单。一周日历切换代码:显示一周日期.container{display:flex;}.box{/*这里可以添加具体的样式*/flex:1;background-color:white;margin:0auto;text-a
- 人工智能训练知识学习-TTS(智能语音合成)
笨鸟笃行
人工智能学习
人机对话——TTS(TextToSpeech)概念:TTS技术,即文本转语音技术,是一种将文字内容转换为语音输出的技术。它通过计算机程序和算法,将文本信息转化为自然流畅的语音信号,让用户能够听到文字内容,而无需手动阅读。(即将文本转换为语音输出)TTS技术的工作原理(一)文本预处理当TTS系统接收到一段文本输入时,首先会对文本进行预处理。这包括分词、词性标注、语义理解等操作。例如,在中文文本中,系
- Java 导出PDF 1、内容可以插入自定义表格 2、内容插入图片
赵八斤
java
JavaPDF导出工具:自定义表格与图片插入下面我将实现一个JavaPDF导出工具,支持插入自定义表格和图片的功能。这个解决方案使用iText7库,提供了一个直观的用户界面,可以预览生成的PDF内容。importjavax.swing.*;importjavax.swing.table.DefaultTableModel;importjava.awt.*;importjava.awt.event.
- JS 模仿京东秒杀倒计时
使用定时器页面:.box{height:300px;width:200px;background-color:red;}.box2{padding-top:10px;}h2{color:white;text-align:center;}img{margin-left:70px;}p{color:white;text-align:center;}li{font-family:"微软雅黑";font-
- Lock wait timeout exceeded; try restarting transaction mysql报错
Lockwaittimeoutexceeded;tryrestartingtransactionmysql报错问题描述:问题复现第一步:开启sql命令页面第二步:输入starttransaction;开启一个事务第三步:输入update语句不要提交第四步:书写测试类第五步:查看锁第五步:等待错误出现原因分析解决方案一、杀掉锁二、重启mysql三、设置锁定等待时间改大问题描述:提示:最近项目中频繁出
- vue3 v-model的使用(多个 v-model 绑定)
不知名前端v2
vuevue3前端
//父组件setup(props){constmsg=ref("msg");constfoo=ref('123')return{foo,msg}}{{modelValue}}{{msg}}/>自定义修饰符的用法,根据官方//父组件{{myText}}setup(){return{myText:ref(22);}//不加ref无法做到响应}//子组件//自定义修饰符capitalize通过model
- 解决MySQL “Lock wait timeout exceeded; try restarting transaction“ 错误
一勺菠萝丶
#MySQLmysqlandroid数据库
在处理MySQL数据库时,我们偶尔会遇到一个棘手的错误消息:“Lockwaittimeoutexceeded;tryrestartingtransaction”。这通常表明我们的一个事务在尝试获取资源时被阻塞了太长时间。在并发环境中,多个事务同时竞争相同的资源可能会导致这种情况发生。锁等待超时问题的原因锁等待超时是因为另一个事务持有了需要的锁,并且没有在配置的超时期限内释放。这可能是因为该事务非常
- java全家桶之44: ApplicationContextAware 接口
leijmdas
JAVA全家桶java运维java开发语言
理解和使用ApplicationContextAware接口Spring框架的ApplicationContextAware接口允许Bean获取ApplicationContext引用,主要用途包括动态获取其他Bean、访问环境配置等。通过实现该接口,Spring容器初始化时会自动注入ApplicationContext。虽然提供了静态获取Bean的便利方式,但可能引发内存泄漏和测试困难等问题。建
- MySQL:Lock wait timeout exceeded; try restarting transaction
喝醉酒的小白
MySQLmysql数据库
目录错误类型及根因分析1.`Lockwaittimeoutexceeded;tryrestartingtransaction`2.`Gotanerrorwritingcommunicationpackets`核心解决思路针对锁等待超时:针对通信包错误:总结错误类型及根因分析1.Lockwaittimeoutexceeded;tryrestartingtransaction原因:事务等待行锁/表锁超
- MySQL 锁等待超时问题解析:Lock wait timeout exceeded;try restarting transaction
Java皇帝
mysqljavamysql数据库后端开发语言
目录一、问题背景二、问题原因三、解决方案1.重启事务2.优化事务管理3.调整锁等待超时设置4.分析并优化锁竞争5.查找并终止持有锁的操作6.优化SQL语句四、预防措施五、总结在使用MySQL数据库时,Lockwaittimeoutexceeded;tryrestartingtransaction这个错误是个让人头疼的问题,它不仅影响程序的执行效率,还可能导致系统性能下降甚至卡死。接下来,我将深入浅
- MySQL 报错Lock wait timeout exceeded; try restarting transaction
A486525173
mysql数据库
处理MySQL报错Lockwaittimeoutexceeded;tryrestartingtransaction1.使用SELECT*FROMinformation_schema.INNODB_TRX;定位未结束的事务,在查询出来的数据找到要删除的事务取出trx_mysql_thread_id的ID使用KILLtrx_mysql_thread_id结束事务
- input 获取焦点时全选
肖肖肖丽珠
vue.js前端javascript
这样的一个状态。这样编辑的时候就直接覆盖掉原来的。在main.js里面自定义指令//input框获取焦点时全选。注意input类型是textarea时Vue.directive("select-on-focus",{inserted(el){constinput=el.querySelector('input')||el.querySelector('textarea');if(input){in
- ThreeJS入门(153):THREE.Texture 知识详解,示例代码
还是大剑师兰特
#ThreeJS综合教程500+大剑师threejs示例threejs教程
作者:还是大剑师兰特,曾为美国某知名大学计算机专业研究生,现为国内GIS领域高级前端工程师,CSDN知名博主,深耕openlayers、leaflet、mapbox、cesium,webgl,ThreeJS,canvas,echarts等技术开发,欢迎加微信(gis-dajianshi),一起交流。查看本专栏目录-本文是第153篇入门文章文章目录构造函数属性方法使用示例注意事项总结THREE.Te
- 享元模式 - Flutter中的对象共享大师,万级列表的性能救星!
明似水
flutter享元模式flutterjavascript
痛点场景:万级社交表情列表假设你的社交应用需要展示:10,000+种表情每个表情有相同操作(点击、长按)表情图片资源较大(平均50KB)需要平滑滚动传统实现方式:ListView.builder(itemCount:10000,itemBuilder:(context,index){returnEmojiItem(emoji:allEmojis[index],//每个item独立实例onTap:(
- latex希腊字母
shaun2001
latex
希腊字母写法α\alphaα\alphaβ\betaβ\betaγ\gammaγ\gammaδ\deltaδ\deltaϵ\epsilonϵ\epsilonζ\zetaζ\zetaη\etaη\etaθ\thetaθ\thetaι\iotaι\iotaκ\kappaκ\kappaλ\lambdaλ\lambdaμ\muμ\muν\nuν\nuξ\xiξ\xiπ\piπ\piσ\sigmaσ\sig
- 43.Textbox的数据绑定 C#例子 WPF例子
军训猫猫头
c#wpfjava
固定最简步骤,包括XAML:题头里引入命名空间标题下面引入类box和block绑定属性C#:通知的类,及对应固定的任务引入字段引入属性属性双触发,其中一个更新block的属性block=>指向box的属性从Textbox这行看binding是绑定的意思,后面的inputtext是类里的一个属性意思就是它的文本和这个属性绑定了updatesourcetrigger是一个触发,后面等号后的内容是不同的
- Spark从入门到熟悉(篇二)
本文介绍Spark的RDD编程,并进行实战演练,加强对编程的理解,实现快速入手知识脉络包含如下8部分内容:创建RDD常用Action操作常用Transformation操作针对PairRDD的常用操作缓存操作共享变量分区操作编程实战创建RDD实现方式有如下两种方式实现:textFile加载本地或者集群文件系统中的数据用parallelize方法将Driver中的数据结构并行化成RDD示例"""te
- FFmpeg 视频编码
灬Sunnnnn
FFmpeg实战项目-视频播放器ffmpeg音视频
1.简介编码视频数据,如下图所示,将原始的YUV数据编码为H.264或者H.265。使用FFmpeg进行视频编码的流程通常包括以下几个步骤:注册编解码器:通过av_register_all()函数注册FFmpeg所有编解码器,这是使用任何编解码器的前提条件。初始化输出上下文:使用avformat_alloc_output_context2()函数来初始化输出码流的AVFormatContext,这
- 理解WebGL中的顶点着色器和片元着色器
程序猿全栈の董(董翔)
webgl着色器
WebGL是一种基于OpenGLES的JavaScriptAPI,它允许我们在网页上直接渲染3D图形而无需任何插件。WebGL的核心是着色器编程,它主要包含两种着色器:顶点着色器(VertexShader)和片元着色器(FragmentShader)。顶点着色器负责处理每个顶点的位置,它决定了顶点在屏幕上的最终位置。而片元着色器则负责计算每个像素的颜色值。这两个着色器共同工作,构成了WebGL渲染
- POSIX 标准下的自旋锁:特性、用法与示例
ScilogyHunter
linuxPOSIX自旋锁
POSIX标准下的自旋锁:特性、用法与示例1.自旋锁概述自旋锁(Spinlock)是一种忙等待的同步机制,与互斥锁(Mutex)不同,当线程尝试获取一个已被持有的自旋锁时,它会不断地循环检查锁的状态(即"自旋"),而不是立即进入睡眠状态。自旋锁适用于以下场景:临界区代码非常短小持有锁的时间非常短暂不希望线程因锁而进入睡眠状态(避免上下文切换开销)2.POSIX自旋锁接口POSIX标准定义了一组自旋
- Flutter基础(ListView.builder)
ListView.builder最基本的形式需要两个参数:itemCount:列表项的总数。itemBuilder:一个回调函数,用于构建每个列表项。ListView.builder(itemCount:10,//列表项总数(这里是10个)itemBuilder:(context,index){//返回一个Widget作为列表项returnListTile(title:Text('项目$index
- Audit.NET 开源项目教程
柯晶辰Godfrey
Audit.NET开源项目教程Audit.NETAnextensibleframeworktoauditexecutingoperationsin.NETand.NETCore.项目地址:https://gitcode.com/gh_mirrors/au/Audit.NET1.项目介绍Audit.NET是一个可扩展的框架,用于在.NET和.NETCore中审计执行的操作。它能够生成带有证据的审计日
- vue文本插值
翻滚吧键盘
vuevue.jsjavascriptecmascript
好的,我们来详细讲解Vue中最基础的数据展示方式:文本插值和在其内部使用的JavaScript表达式。1.文本插值(TextInterpolation)知识点:文本插值是Vue中最基本的数据绑定形式。它使用“Mustache”语法(双大括号{{}})将数据直接渲染到HTML的文本内容中。核心作用:将Vue实例中setup函数返回的数据,动态地显示在页面的指定位置。响应式:当大括号内所依赖的数据发生
- 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独立出来,数据持