- 2025年Python后端开发指南:从基础到云原生实践
ctrl_cv工程师¥
云原生djangoflaskpycharm
在2025年,Python后端开发已全面进入云原生与智能化时代。开发者不仅需要掌握传统后端技术栈,还需融合容器化、AI辅助编程等新兴技术。本文基于行业最新趋势与最佳实践,系统梳理Python后端开发的核心要点与进阶方向,涵盖开发环境、架构设计、性能优化等关键领域。一、开发环境与工具链1.环境配置标准化Python版本:推荐Python3.12+,支持模式匹配(PatternMatching)和更优
- 主流架构模式全景解析:微服务 vs SOA vs 单体架构的终极抉择指南
Eqwaak00
分布式系统设计实战科技微服务架构
一、架构演进史:从巨石到微粒的进化之路(图示:1970s单体→2000sSOA→2010s微服务→2020s云原生)二、三大架构模式深度拆解2.1单体架构(MonolithicArchitecture)核心特征graphTDA[单体应用]-->B[用户界面]A-->C[业务逻辑]A-->D[数据访问]B-->E[Web/移动端]C-->F[订单处理]C-->G[支付处理]D-->H[MySQL]D
- Git 本地常见快捷操作
笔沫拾光
git
Git本地常见快捷操作1.基本操作操作命令初始化Git仓库gitinit查看Git状态gitstatus添加所有文件到暂存区gitadd.添加指定文件gitadd提交更改gitcommit-m"提交信息"修改最后一次提交信息gitcommit--amend-m"新提交信息"显示提交历史gitlog--oneline--graph显示修改的文件gitdiff2.分支管理操作命令查看当前分支gitbr
- 存储和访问节点属性 python networkx
潮易
python开发语言
存储和访问节点属性pythonnetworkx在Python中,我们可以使用NetworkX库来创建和管理图数据结构。在NetworkX中,节点可以有属性,例如标签、颜色或价值等。以下是如何存储和访问节点的属性的步骤:1.首先,我们需要导入NetworkX库并创建一个图形对象。然后,我们可以给节点添加属性。```pythonimportnetworkxasnx#创建一个图形对象G=nx.Graph
- 深入理解信息检索之BM25算法
Lunar*
算法与优化自然语言处理人工智能
1.BM25算法简介BM25算法,全称为"BestMatching25",是由StephenRobertson和KarenSpärckJones在1990年代初基于早期的概率排名模型(如二元独立检索模型)发展而来。它通过一种概率论的方法来衡量文档与用户查询之间的相关性。2.BM25的核心原理BM25算法的核心在于两个主要的概念:逆文档频率(IDF)和词频(TF)调整。逆文档频率(IDF):IDF用
- 【扩散模型Diffusion Model系列】1-一篇文章带你快速入门扩散模型Diffusion Model,个人入门学习路线+优质学习博客资料
Leafing_
DiffusionModel扩散模型人工智能深度学习AIGC扩散模型AI视频生成算法人工智能深度学习
文章目录零、写在前面一、扩散理论缘起DDPM再见,马尔科夫!高视角DDIMLevelup!更高视角SDE、ScoreMatching、ODE走直线!RectifiedFlow和FlowMatching二、模型结构传统派LDMUNet:StableDiffusion维新派MMDiT:StableDiffusion3/Flux三、加速采样多走一步,再比较ConsistencyModel/LCM半白箱采
- 群体智能优化算法-黄金正余弦优化算法(含Matlab源代码)
EOL_HRZ
算法matlab开发语言群体智能优化优化
摘要黄金正余弦优化算法(GoldenSineAlgorithm,GoldSA)是一种数学启发式算法,基于黄金分割系数(GoldenRatio)以及正余弦函数的随机扰动机制来更新解的位置。该算法通过在迭代过程中不断利用黄金分割比例来调整搜索范围,同时结合正弦与余弦变化,为个体提供多样化的全局搜索与局部微调能力。本文提供了GoldSA的核心思想与完整MATLAB代码,并附上中文详细注释,以帮助读者深入
- git pull报错:Unable to negotiate with port: no matching host key type found. Their offer: ssh-rsa
毛三仙
gitgitssh
Unabletonegotiatewithxx.xx.xx.xxxport29418:nomatchingkeyexchangemethodfound.Theiroffer:diffie-hellman-group14-sha1,diffie-hellman-group1-sha1fatal:无法读取远程仓库。解决方法(在ssh目录新建config文件)sudovim~/.ssh/config添加
- winpython使用教程-winpython是什么
weixin_37988176
WinPython是一个免费的开源可移植的Python编程语言发行版,适用于Windows7/8/10和科学及教育用途。它是一个功能齐全的基于python的科学环境:●专为科学家、数据科学家和教育设计(感谢NumPy、SciPy、y、Matplotlib、panda、pyqtgraph等):使用Python与Spyder和Jupyter/IPython、Pyzo、IDLEX或IDLE进行交互数据处
- linux环境下安装和卸载Mysql5.5
test_soy
mysqlmysqlmysql安装liunx环境
学习资料参考:http://down.chinaz.com/server/201107/806_1.htmhttp://blog.itblood.com/completely-uninstall-the-mysql-under-linux-graphic-tutorials.html1、卸载mysql查找以前是否装有mysql#rpm-qa|grep-imysql显示类似如下的信息:MySQL-c
- Linux安装graphite(nginx+uwsgi)过程
caihuan
运维graphite
由于需要测量程序的各种指标,使用dropwizardmetrics,数据直接输出到graphite.看了很多别人安装graphite的文章,回馈下,写下自己的安装过程。1、查看系统版本cat/proc/versionLinuxversion4.4.10-1-pve(root@elsa)(gccversion4.9.2(Debian4.9.2-10))2、git下载源码Graphite-web:gi
- 嵌入式学习笔记:LVGL v8 的按钮控件使用方法
WangWEel
学习笔记microsoft嵌入式
嵌入式学习笔记:LVGLv8的按钮控件使用方法LVGL(LightandVersatileGraphicsLibrary)是一个开源的嵌入式图形库,提供了丰富的图形控件和界面设计工具,适用于各种嵌入式系统。本文将介绍LVGLv8版本中按钮控件的使用方法,并提供相应的源代码示例。LVGLv8中的按钮控件是常用的用户交互界面元素之一,它可以用于触摸屏或其他输入设备上,让用户能够与嵌入式系统进行交互。下
- 差分注意力,负注意力的引入
syugyou
pytorchpython
文章目录DifferentialTransformer差分注意力,负注意力的引入相关链接介绍初始化函数多头差分注意力DifferentialTransformer差分注意力,负注意力的引入相关链接ai-algorithms/README.mdatmain·Jaykef/ai-algorithms(github.com)unilm/Diff-Transformeratmaster·microsoft
- Flink架构组件JobManager和TaskManager
m0_37651941
flink架构大数据
JobManager和TaskManager交互通过Task对象ActorSystem是Akka最重要的一个组件。JobDispatcher负责接收Client提交的JobGraph对象,然后拆分成不同的作业,提交到TaskManager.这个过程会涉及到Job的分发。standlone模式和yarn模式的ResourceManager是不同的实现。TaskManager启动后会主动向JobMan
- 2.5 Spring Boot异常处理全局化:@ControllerAdvice实战
Sendingab
Springboot从入门到精通零基础7天精通SpringBootspringboot后端java
SpringBoot全局异常处理:@ControllerAdvice深度解析一、异常处理机制全景图1.1SpringMVC异常处理流程mermaidgraphTDA[客户端请求]-->B[DispatcherServlet]B-->C{Controller处理}C-->|正常|D[返回数据]C-->|异常|E[ExceptionHandlerResolver]E-->F[查找@ExceptionH
- mmcv-full==报错
wzh18___
python
ERROR:Nomatchingdistributionfoundformmcv-full==这个东西卡了我好几个小时特地来写一个帮助大家主要是参照官方的内容,下面这个网址https://github.com/open-mmlab/mmcv/blob/main/README_zh-CN.md上面这个2.x版本的链接https://github.com/open-mmlab/mmcv/blob/1.
- vue-esign实现电子签名
dlhto
vue前端vue.jsjavascript前端
导入依赖pnpminstallvue-esign--savesign.vue代码实现取消清空画板确认签名importvueEsignfrom"vue-esign";exportdefault{data(){return{autographStatus:true,//todofalselineWidth:6,lineColor:"#000000",resultImg:"",isCrop:false,
- Deepsearch 、Rag 、RraphRag
kse_music
混杂raggraphragdeepsearch
文章目录前言一、Ai-Search1.DeepSearch2.RAG(Retrieval-AugmentedGeneration)3.GraphRAG(Graph-basedRetrieval-AugmentedGeneration)二、选择指南三、结合应用总结前言DeepSearch、RAG(Retrieval-AugmentedGeneration)和GraphRAG这三种技术在智能检索、信息
- 代码随想录|学习工具分享
EvLast
数据结构与算法学习
工具分享画图https://excalidraw.com/大家平时刷题可以用这个网站画草稿图帮助理解!如果看题解很蒙或者思路不清晰的时候,跟着程序处理流程画一个图,90%的情况下都可以解决问题!数据结构可视化https://www.cs.usfca.edu/~galles/visualization/Algorithms.html数据结构和算法可视化可以看这个网站,还可以互动添加元素等,非常直观让
- c# 使用Md5加密字符串
A_nanda
c#哈希算法MD5加密
在C#中使用MD5加密字符串,可以通过System.Security.Cryptography命名空间下的MD5类实现。以下是完整代码示例及详细说明:MD5类的实例在使用后需要正确释放资源,因为实现了IDisposable接口。所以应该使用using语句来确保资源被释放,避免内存泄漏。现在,编写代码的大致步骤是:1.创建MD5实例。2.将输入字符串转换为字节数组(使用UTF8编码)。3.计算哈希值
- Solidity基础 -- 哈希算法
第十六年盛夏.
智能合约区块链应用搭建区块链智能合约
一、引言在当今数字化时代,数据的安全性、完整性和高效处理变得至关重要。哈希算法作为一种强大的数学工具,在计算机科学、密码学、区块链等众多领域发挥着关键作用。它为数据的存储、传输和验证提供了一种可靠的方式,极大地推动了信息技术的发展。二、哈希算法基础介绍(一)定义哈希算法(HashAlgorithm),也称为散列算法,是一种将任意长度的输入数据(也称为消息)通过特定的数学函数转换为固定长度输出的过程
- 论文阅读:Personalized Purchase Prediction of Market with Wasserstein-Based Sequence Matching
Narcissus`小暮
一步步来学大数据推荐系统
PersonalizedPurchasePredictionofMarketwithWasserstein-BasedSequenceMatching概述问题背景及陈述预测算法步骤一:itemembeddings步骤二:计算wassersteinDistance步骤三:Wasserstein-BasedDynamicTimeWarping预测实验评价标准数据集对比的baseline结论市场篮子的应
- 论文阅读笔记:Graph Matching Networks for Learning the Similarity of Graph Structured Objects
游离态GLZ不可能是金融技术宅
知识图谱机器学习深度学习人工智能
论文做的是用于图匹配的神经网络研究,作者做出了两点贡献:证明GNN可以经过训练,产生嵌入graph-leve的向量可以用于相似性计算。作者提出了一种新的基于注意力的跨图匹配机制GMN(cross-graphattention-basedmatchingmechanism),来计算出一对图之间的相似度评分。(核心创新点)论文证明了该模型在不同领域的有效性,包括具有挑战性的基于控制流图(control
- 论文阅读 EEG-TCNet
Plan-C-
论文阅读
EEG-TCNet:AnAccurateTemporalConvolutionalNetworkforEmbeddedMotor-ImageryBrain–MachineInterfaces1.Intrduction本文提出了一种新颖的时间卷积网络(TCN),在需要很少的可训练参数的情况下实现了出色的精度。EG-TCNET成功地推广了单个数据集,通过0.25的元效应优于MOABB的当前最新技术水平
- FLOW MATCHING FOR GENERATIVE MODELING 阅读笔记
冰冰冰泠泠泠
笔记机器学习算法
论文提出了一种新的生成模型。论文的目的是给定一个目标分布,有目标分布的一定量的样本,但是不知道目标分布的概率密度函数,学习一个模型能生成服从目标分布的新样本。FlowMatching(FM)是一种训练连续标准化流ContinuousNormalizingFlow(CNF)的方法。FM是一种通用的方法。FM可以用于训练扩散路径,用FM训练扩散路径更稳定。FM也可以用于训练其他路径,一个例子是训练最优
- 论文阅读《Semantic Stereo Matching with Pyramid Cost Volumes》
cunese0088
深度学习
SSPCV-Net(语义立体匹配网络)目的:进一步捕捉视差的细节主要模块:数据集:SceneFlow,KITTI2012,KITTI2015,Cityscape(比较泛化能力)-------------------------------------------------------------------------------------------------------Concatevo
- 《Operating System Concepts》阅读笔记:p228-p257
codists
读书笔记操作系统
《OperatingSystemConcepts》学习第25天,p228-p257总结,总计30页。一、技术总结1.algorithmevaluation评估CPU调度算法需要考虑的因素有:CPUutilization,responsetime或者throughput。基于以上几个因素,选择依据为:(1)MaximizingCPUutilizationundertheconstraintthatt
- 《Operating System Concepts》阅读笔记:p208-p227
codists
读书笔记操作系统
《OperatingSystemConcepts》学习第24天,p208-p227总结,总计20页。一、技术总结1.vmstatLinux系统上vmstat命令的作用是“Reportvirtualmemorystatistics”。2.schedulingalgorithms(1)FCFS(first-comefirst-serve)(2)SJF(shortest-job-first)准确的叫法应
- 论文阅读笔记——π0: A Vision-Language-Action Flow Model for General Robot Control
寻丶幽风
论文阅读笔记论文阅读笔记人工智能机器人语言模型
π0论文π0π_0π0是基于预训练的VLM模型增加了actionexpert,并结合了flowmatching方法训练的自回归模型,能够直接输出模型的actionchunk(50)。π0采用FlowMatching技术来建模连续动作的分布,这一创新使模型能够精确控制高频率的灵巧操作任务,同时具备处理多模态数据的能力。架构受到Transfusion的启发:通过单一Transformer处理多目标任务
- 【论文阅读】Learning Transferable Visual Models From Natural Language Supervision(2021)
Bosenya12
论文阅读
摘要State-of-the-art(最先进的)computervisionsystems(计算机视觉系统)aretrainedtopredictafixedsetofpredeterminedobjectcategories(被训练来预测一组固定的预定对象类别).Thisrestrictedformofsupervision(受限制的监督形式)limitstheirgenerality(通用性)
- 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独立出来,数据持