- vue+three.js 加载fbx动画模型
资深前端之路
threeJsjavascriptvue.js前端
嗨,我是小路。今天主要和大家分享的主题是“vue+three.js加载fbx动画模型”。在现代网页开发中,3D图形和动画的应用越来越广泛,从产品展示、虚拟展厅到游戏、教育等领域,三维技术正在不断刷新用户体验。而作为前端开发者,如何将高性能的3D动画无缝集成到Vue项目中?今天从网上找了一个fbx动画模型,然后将其加载出来,并让模型动起来。项目示意图1.FBXLoader加载器定义:主要用来加载fb
- windows11安装node.js,选择同时安装Chocolatey包管理工具
xinhuanjieyi
node.js
https://nodejs.org/dist/v21.1.0/node-v21.1.0-x64.msi下载,安装到D:\ide\node.js我勾选了安装Chocolatey包管理工具,默认没打勾弹出powershell命令窗口,安装过程中python程序安装报错实际上电脑里已经安装了python多个版本,环境变量都配好了,不知道为什么这个安装工具说没检测到python。以下是窗口信息:Forc
- Python Json数据排序
weixin_33851177
pythonjsonjava
importhashlib#recursivelycalculateeachelementblock'shashcode,andreorderthechildnodesinthelistbasingonthehashcode#finallywillgettheorderedjsonobjectandoverallhashcodedefordered(jsonNode):ifisinstance(j
- Pydantic:拯救你的数据结构,让Python类型提示火力全开!(开发者血泪史终结者)
syntaxseeker
数据结构python开发语言其他
文章目录一、现实毒打:没有Pydantic的日子有多惨?二、Pydantic登场:你的数据守护神!三、动手!秒懂Pydantic魔法四、Pydantic的杀手锏:为什么它这么香?五、实战场景:Pydantic在哪里大放异彩?六、避坑指南&最佳实践(血泪教训!)七、结语:拥抱Pydantic,告别数据焦虑!还在为混乱的JSON数据抓狂?被API返回的诡异字段逼疯?深夜调试时因为一个None值崩溃砸键
- Bootstrap 5 三种 JavaScript 版本的区别
中国lanwp
javascriptbootstrap前端
Bootstrap5三种JavaScript版本的区别Bootstrap5提供了三种不同的JavaScript版本:bootstrap.bundle.js、bootstrap.esm.js和bootstrap.js。以下是它们的区别:1.bootstrap.js(标准版)文件大小:最小包含内容:仅包含Bootstrap的核心JavaScript功能依赖关系:需要手动引入Popper.js(用于工具
- canvas实现路段连通和路段效果
源码//utils.js/***通过判断type返回目标图片的地址*@param{String}type图片类型*@returns{String}url目标图片的地址*/exportfunctionsetImgUrl(type){leturl;switch(type){case"track":url=require("./image/car.png");break;case"gantry":url
- StreamSaver实现大文件下载解决方案
诸葛亮的芭蕉扇
前端vue.jsjavascriptnode.js
StreamSaver实现大文件下载解决方案web端安装StreamSaver.jsnpminstallstreamsaver#或yarnaddstreamsaver在Vue组件中导入importstreamSaverfrom"streamsaver";//确保导入名称正确完整代码修正下载大文件(带进度)0">下载进度:{{progress}}%importstreamSaverfrom"stre
- Node.js特训专栏-实战进阶:11. Redis缓存策略与应用场景
爱分享的程序员
Node.js前端网络相关javascriptnode.js前端
欢迎来到Node.js实战专栏!在这里,每一行代码都是解锁高性能应用的钥匙,让我们一起开启Node.js的奇妙开发之旅!Node.js特训专栏主页专栏内容规划详情Redis缓存策略与应用场景:从理论到实战的高性能解决方案一、Redis基础概述1.1Redis核心特性Redis作为高性能内存数据库,具备以下关键优势:1.1.1内存极速读写读写性能:基于纯内存操作,读写操作在微秒级完成,实测单节点QP
- vue3 - 【完整源码】超详细实现网站 / H5 在线预览 pdf 文件功能,支持缩放、旋转、全屏预览、打印、下载、内容检索、主题色定制、侧边缩略图、页码跳转等等(最好用的pdf预览器,注释详细!)
十一猫咪爱养鱼
前端组件与功能(开箱即用)Vue组件与功能(工作经验)vue常见问题解决vue3pdf预览器vue3网页打开pdf文件vue3可自定义界面的pdfvue3pdf网页预览下载vue3项目预览PDF插件组件
效果图在Vue3.js项目中,实现了快速高效的pdf预览器工具组件,附带详细的使用教程与详细的注释,保证一键复制轻松搞定!详细的注释很容易二次修改,很多实用功能,你也可以自定义界面上的样式、DIY一切!组件源码首先
- $.post 上传文件_基于 Laravel + Vue 组件实现文件异步上传
Clever Liu
$.post上传文件
我们在上一篇教程中已经演示了如何通过Request请求实例获取各种文本输入数据,但是还有一种输入数据我们没有涉及到,那就是文件上传。我们可以通过Request请求实例提供的file方法获取用户上传文件,并将其保存到指定目录从而完成文件上传,接下来,我们将从前端到后端实现一个完整的用户上传文件功能,包括视图、路由、控制器部分代码。定义文件上传路由首先我们在routes/web.php中定义上传文件涉
- 如何快速开发一个鸿蒙app
深山技术宅
鸿蒙harmonyos华为
快速开发一个鸿蒙(HarmonyOS)App的关键在于利用好官方提供的工具链、模板和资源。以下是一个高效且实用的步骤指南,帮助你快速上手:核心步骤概览:环境搭建创建项目(选择模板)理解核心概念&编写UI实现基础功能预览&调试编译&运行(可选)发布到AppGallery1.环境搭建(基础,必须)操作系统:Windows10(64位)/macOS10.13或更高版本。安装Node.js(>=14.19
- Vue-pdf预览pdf文件流:让Vue项目中的PDF预览变得简单
Vue-pdf预览pdf文件流:让Vue项目中的PDF预览变得简单【下载地址】Vue-pdf预览pdf文件流Vue-pdf预览PDF文件流是一个专为Vue项目设计的开源解决方案,旨在帮助开发者轻松实现在线预览PDF文件的功能。通过集成vue-pdf插件,该项目简化了在Vue应用中嵌入和展示PDF文件的过程,支持流式传输,提升用户体验。开发者只需按照简单的步骤将插件引入项目,并根据需求配置文件路径或
- uniapp中检查版本,提示升级app,安卓下载apk,ios跳转应用商店
艾小逗
APPuni-appandroidiosapp升级
uniapp中检查版本,提示升级app,安卓下载apk,ios跳转应用商店##使用方法:可以在app.vue的onLaunch中调用appUpdate,打开app就会检测onLaunch:function(){appUpdate()},完整代码如下://APP更新import{queryAppVersion}from"@/apis/app";//比较版本号:v1v2返回1,相等返回0functio
- svelte笔记
艾小逗
web笔记
svelte特性编译过程使用场景创建项目问题1:build报错基本语法响应式变量if语句for循环await加载数据Event组件通信父子组件跨组件通信storeslot插槽生命周期tickonMountonDestroySvelteKit与Svelte的区别项目结构路由+page+page.svelte+page.js/ts+error+layout+layout.sveltelayout.se
- 设置cursor、vscode的默认终端
啥都不会工程师
vscodeide编辑器
一般来说设置为command会比较好,比较方便和anaconda连用。但是正常来说默认是powershel,参考了别的帖子先用ctrl+shift+p调出命令输入settingsjson进入修改为:{"terminal.integrated.profiles.windows":{"CommandPrompt":{"path":"C:\\Windows\\System32\\cmd.exe"},"P
- js实现的前端水印
k0933
记录javascript前端开发语言
效果vardefaultConfig={content:[],//水印内容数组fontSize:14,//字体大小(px)fontFamily:'sans-serif',//字体color:'rgba(255,255,255,.3)',//字体颜色rotate:-20,//旋转角度(度数)zIndex:2147483647,//层级globalAlpha:0.5,//透明度canvasWidth:
- Django REST framework - 模式
djangopython
模式机器可读的[模式]描述了通过API可用的资源、它们的URL、它们的表示方式以及它们支持的操作。—Heroku,Heroku平台API的JSON模式弃用通知:RESTframework内置的用于生成OpenAPI模式的支持已被弃用,转而支持第三方包来提供此功能。内置支持将被移到一个单独的包中,然后在后续版本中逐步淘汰。作为一个完整的替代方案,我们推荐drf-spectacular包。它广泛支持从
- 人类编程时代即将终结?OpenAI首席产品官预测AI将在今年底全面超越人类程序员
前端javascript
ReactHook深入浅出CSS技巧与案例详解vue2与vue3技巧合集VueUse源码解读近日,OpenAI首席产品官KevinWeil在接受采访时表示,人工智能的发展速度远超预期,今年底就有可能在编程领域永久性地超越人类程序员。这一观点立即引发了行业热议,也让程序员们对未来产生了深刻的思考。人工智能的进展速度远超想象在与VarunMayya和TanmayBhat共同主持的YouTube节目《O
- python序列化工具_python_restframework(序列化)
weixin_39623271
python序列化工具
django自带的序列化工具serializers三步骤导入fromdjango.coreimportserializers生成对象并传参response=serializers.serialize('json',book_list)第一个json是解析器,说明要解析成json格式的字符串,第二个是queryset对象,最后返回结果returnJsonResponse(response,safe=
- lg kv510 java_LG KV510:手机界面图
0LGKV510:手机界面图2012-12-1116:35{"info":{"setname":"LGKV510:手机界面图","imgsum_bk":13,"imgsum":13,"lmodify":"2012-12-1116:35:36","prevue":"","channelid":"","reporter":"","source":"","dutyeditor":"","prev":{"
- 免费文件管理 智能转换GC-Prevue:PDF 转 Word 多种格式 一键完成
文哥工具箱2
开源软件电脑软件工程
前言在现代办公环境中,高效的数据处理和文档管理是提高工作效率的关键。GC-Prevue是一款专为Windows系统设计的办公辅助软件,软件下载地址安装包它通过一系列实用的功能,帮助用户更高效地处理和管理文档,提升整体办公效率。软件介绍GC-Prevue是一款集成了多种办公辅助功能的软件,旨在帮助用户更便捷地处理文档、表格和演示文稿。它支持多种文件格式,包括PDF、Word、Excel和PowerP
- 推客小程序系统开发全解析:从概念到落地的完整指南
ywyy6798
小程序微信小程序推客分销推客系统推客小程序短剧系统推客系统开发
一、推客小程序概述:新时代社交电商利器推客小程序是近年来在社交电商领域兴起的一种创新型营销工具,它结合了小程序轻量级、易传播的特点与社交裂变营销的强大势能,为企业提供了一种低成本、高效率的用户增长和商品销售解决方案。核心价值体现:用户裂变引擎:通过社交分享激励机制,实现用户几何级数增长销售转化加速器:缩短用户从认知到购买的路径,提升转化率私域流量沉淀池:帮助企业构建可持续运营的用户资产数据驱动决策
- BpmnJs源码篇2:diagram.js 简介与EventBus全局事件总线
MiyueFE
javascript前端vue
✨✨✨目前成都的"小学生"大佬和作者一起开发了Flowable流程引擎组件(包含前端设计器与后端流程引擎)详情请访问:https://www.bpmport.com/products。预览:Flowable编辑器:flowable-designer,Activiti编辑器:activiti-designer,预览与模拟:viewer,DMN决策设计器:dmndiagram.js简介作为bpmn.j
- Vue 中的 this.$set() 使用详解(一文搞懂)
前端页面仔
vue.js前端javascriptreact.js前端框架开发语言ecmascript
在Vue.js开发中,this.$set()是一个解决响应性问题的关键工具。本文将从基础使用到高级场景,全面解析这个方法的使用技巧和最佳实践。为什么需要this.$set()?——响应性原理的核心问题Vue的响应性系统无法检测对象属性的添加或删除,以及数组索引访问的变化。这是因为Vue2使用Object.defineProperty()实现响应性,它存在以下限制://对象属性添加问题constob
- Html Webpack Plugin: ReferenceError: process is not defined
真·skysys
大前端和跨平台技术electron-vueejselectronvue
修改ejs文件将改成:
- Vue3 工程化实战
jay丿
vue.jsjavascripttypescript前端
Vue3工程化实战引言:构建工具的演进与选择在前端工程化领域,构建工具的选择直接影响开发效率与项目性能。随着Vue3的普及,构建工具生态也发生了显著变化:传统vue-cli逐渐进入维护模式,而新一代构建工具Vite凭借其卓越性能成为官方推荐方案。本文将系统对比两种创建方式,并深入解析基于Vite的Vue3工程化实践。一、传统方案:基于vue-cli创建Vue3工程1.1创建流程#检查版本(需≥4.
- C#WebSocket服务端,js充当WebSocket客户端
文章目录C#开启WebSocket服务端,js开启客户端1.效果演示2.引入相关dll3.js开启WebSocket客户端4.git地址5.dll下载地址注意1.加载的类必须继承SocketServer.WebSocketAction.WebSocketServerActionBase或SocketServer.WebSocketAction.IWebSocketServerAction2.加载的
- C语言比较三个数的大小
a_Dragon1
C语言学习记录
C语言入门基础小程序(一)输入3个数,并且比较大小#includevoidmain(){floata,b,c,t;printf("请输入三个数:");scanf("%f,%f,%f",&a,&b,&c);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}printf("%.2f,%.2f,%.2f\n",a,b,c);}
- Django REST framework - 渲染器
djangopython
渲染器的确定方式视图的有效渲染器集合始终被定义为一个类列表。当进入视图时,RESTframework会在传入请求上执行内容协商,确定最合适的渲染器以满足请求。内容协商的基本过程涉及检查请求的Accept头,以确定其期望在响应中接收的媒体类型。另外,也可以使用URL上的格式后缀来显式请求特定的表示形式,例如,URLhttp://example.com/api/users_count.json可能是一
- Django REST framework - 格式后缀
djangopython
URLconf中的格式后缀模式为WebAPI使用URL文件扩展名以提供特定媒体类型端点是一种常见模式。例如,使用'http://example.com/api/users.json'提供JSON格式的表示。若在API的URLconf每个条目中添加格式后缀模式,容易出错且违背DRY原则,因此RESTframework提供了一个快捷方式,用于将这些模式添加到URLConf中。format_suffix
- 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独立出来,数据持