- 【插件html2canvas】页面元素生成图片
不吃香菜的蟹老板
前端javascriptvue
插件html2canvas将页面元素转换成图片点击【复制】按钮,将页面某个区域的内容以图片的形式复制到剪切板,粘贴后是一张图片。点击【下载】按钮,将页面某个区域的内容以图片的形式下载到本地。1安装插件npmihtml2canvas2目标页面元素html2canvas复制下载3核心逻辑3.1html2canvas绘制页面元素通过插件【html2canvas】转换成图片base64letcanvas=
- mesh渲染到ui_UGUI深入理解--渲染系统
陈人
mesh渲染到ui
UGUI怎么显示一张图片?从原理上来说,显示图片和其他渲染一样,需要的也是mesh和material。所以我们要看的就是怎么把mesh和material传给引擎。UI的渲染可以分三部分来看CanvasUpdateRegistry负责驱动,也就是通知需要渲染的UI组件,为什么用通知的方式而不是UI自己处理呢,UGUI的处理流程是这样的,UI自己记录是否需要重新渲染,注册事件给registry,reg
- Uni-app开发Canvas当子组件示例,点点绘制图形
他在时间门外
uni-appjavascript前端
前言使用Uni-app实现封装一个Canvas渲染的子组件,实现通过传入两点绘制一条完整的路程具体逻辑看我发的后端和数据库设计C#根据两点名称,寻找两短路程的最优解,【有数据库设计,完整代码】即使不了解具体逻辑,该文章同样可以帮助想要实现使用Canvas当子组件,以及点点绘制图形问题的疑惑注意事项问题一:在使用canvas开发时为什么图形没有渲染1.注意画布的尺寸canvas标签默认宽度300px
- 3 HTML5 svg
官清岁月
SVG:ScalableVectorGraphics;//可缩放矢量图形->svg图像放大情况下图形质量不会损失(失真);-->应用场景:图表、动画、矢量图(点/线/面,形成的基本图形)、常用于制作图标icon1、canvas与svg的区别:(1).canvas是由像素点构成的,其依赖分辨率,其放大后会"失真";其通过js来绘制2D图形,常用来制作游戏、图表(运行速度快);(2).svg是由图形(
- canvas绘制圆形进度条
程序猿小离
javascriptvue.js开发语言
canvas绘制圆形进度条用canvas绘制了一个圆形进度条,记录一下:效果如下:感觉效果还行,不过有待优化代码如下:我是用Vue写的组件的代码:progressCanvas.vueexportdefault{name:'ProgressCanvas',data(){return{drawPgress:0}},mounted(){constaa=setInterval(()=>{this.draw
- html5在不同浏览器兼容,HTML5浏览器兼容性解决方案
weixin_39732991
html5在不同浏览器兼容
HTML5浏览器兼容性解决方案HTML5新增语义标签,以及如何兼容老版本浏览器。前言HTML5属于上一代HTML的新迭代语言,设计HTML5最主要的目的是为了在移动设备上支持多媒体。例如:video标签和audio及canvas标记。而HTML5在取消了过时的显示效果标记和等同时,也引入了一些新的语义标签,例如:更多的语义标签请参考一、语义标签兼容性1.解决思路主流浏览器都兼容HTML5的新标签。
- thumb 垂直seekbar 居中_Android 垂直SeekBar
weixin_39788740
thumb垂直seekbar居中
packagecom.example.helloverticalseekbarv2;importandroid.content.Context;importandroid.graphics.Canvas;importandroid.graphics.Rect;importandroid.graphics.drawable.Drawable;importandroid.util.AttributeS
- android 快速实现 圆角矩形控件 及 圆形控件
42nf
androidRoundImageView圆角矩形控件
1.自定义RoundImageViewpackagecom.examle.widget;importandroid.content.Context;importandroid.content.res.TypedArray;importandroid.graphics.Bitmap;importandroid.graphics.Canvas;importandroid.graphics.Color;
- Web 游戏 「梦幻西游」地图 Demo ,纯 Canvas 画
梁同桌
前言本程序仅仅学习,顺便回忆小学玩的游戏。项目初心为了验证一些对Canvas想法。项目大量运用ES6,无";"写法。cover.gif目录文件介绍职责分类缺点文件imgjxk(剑侠客图片)background(地图图片)jsbaserunloop.js(循环)viewjxk.js(剑侠客)map_one.js(地图)game.jsindex.jsindex.html职责分类js/base/runl
- CSS2DRenderer的使用
qq_39672409
threejs前端
具体参照https://github.com/mrdoob/three.js/blob/master/examples/css2d_label.html;CSS2DRenderer的使用import{CSS2DObject,CSS2DRenderer}from‘three/examples/jsm/renderers/CSS2DRenderer’;const{position,zIndex}=da
- webGL开发的软件项目类型
super_Dev_OP
信息可视化
WebGL(WebGraphicsLibrary)作为一种强大的JavaScriptAPI,能够在Web浏览器中实现2D和3D图形的渲染,适用于开发多种类型的软件项目。以下是WebGL可以开发的一些软件项目类型,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。1.3D游戏和交互式应用:WebGL为开发3D游戏、模拟环境和虚拟现实体验提供了工具,可以创建出效果逼真
- uni-app 实现拍照后给照片加水印功能
前端码农小黄
功能uni-app前端
遇到个需求需要实现,研究了一下后写了个demo本质上就是把拍完照后的照片放到canvas里,然后加上水印样式然后再重新生成一张图片代码如下,看注释即可~使用的话记得还是得优化下代码测试按钮exportdefault{data(){return{canvasWidth:300,canvasHeight:150,}},methods:{handlePhotoAndWatermask(){//调用拍照功
- WebGL开发家居设计软件
super_Dev_OP
webgl
开发基于WebGL的家居设计软件可以为用户提供交互式的虚拟家居设计体验,使用户能够在网页浏览器中进行家居布局、家具选择和风格设计等操作。以下是开发这样的软件的一般步骤,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。1.需求分析和功能规划:确定软件的主要功能和特性,例如房间布局、家具选择、颜色调整、3D视图等。收集用户需求和期望,了解目标用户群体的需求。2.技术
- css+动画优化,css3动画性能优化--针对移动端卡顿问题
影子的覆盖
css+动画优化
一、使用css,jquery,canvas制作动画1.Canvas优点:性能好,强大,支持多数浏览器(除了IE6、IE7、IE8),画出来的图形可以直接保存为.png或者.jpg的图形;缺点:依赖于HTML,只能通过脚本绘制图形,没有实现动画的API(依靠事件和定时器更新);由于在canvas上以编程方式显示的文本其实就是位图,因此搜索爬行器将完全忽略文本。文本内容也无法被屏幕阅读器识别。2.cs
- 扫盲:什么是webGPU,和webGL对比哪些优点?
贝格前端工场
webglwebGPUunity3D
web端的3D图像渲染,大都采用webGL,不过其性能让大家很崩溃,webGPU的出现,让大家看到了访问加速的可能,本文通过对比webGPU与webGL,给老铁们普及一下。老铁们如有数据可视化的设计和开发需求,可以随时私信贝格前端工场。一、web3D图像渲染是webGL的天下WebGL是一种用于在Web浏览器中实现高性能、交互式3D和2D图形应用程序的图形API。它基于OpenGLES2.0标准,
- 自定义属性___幸运转盘
上善 若水
android幸运转盘
Classpackagecom.qh.***.luck;importandroid.content.Context;importandroid.graphics.Canvas;importandroid.graphics.Color;importandroid.graphics.Paint;importandroid.graphics.Path;importandroid.graphics.Rec
- UPixelator - Pixelize 3d Scenes
mayzhengxi
各类资源展示u3d资源插件
UPixelator资源为使用3D模型创建像素艺术风格游戏提供了基础。这是一个无着色器的解决方案,用于对3d场景进行像素化处理,并减少正交相机的像素蠕变。渲染管线-内置✓-URP✓测试版本Unity2021.3(内置,URP12):Windows,WebGLUnity2022.3(内置,URP14):Windows,WebGL可用模块-像素艺术边缘高光无着色器不需要特殊的着色器,因此您可以保留现有
- 小程序跳转H5实现长截图功能;vue-cli3通过rem适配
怪哈哈
小程序jsvue前端
一、需求: 微信小程序部分页面需要一键长图的功能。 通过html2canvas插件可以实现,具体可参考微信小程序实现一键长图并保存图片到相册。由于该插件只能在H5项目中使用,则需要截图的小程序页面点击后跳转到H5页面,把所需的token及接口参数带过去,在H5页面进行长截图并保存或转发,点击左上角返回即回到小程序。二、思路: 首先,考虑需要长截图的页面根据需求可能会迭代增加,新建了一个vue
- 【圣诞节】给你的头像加个圣诞帽吧
_鹅不食草_
圣诞节快来了,来给你的头像加个帽子吧看着大伙都在弄这个,我自己也来试一哈,我分别用了两种方式来实现,一种是普通的方式,一种是wxs方式普通方式效果图如下:image思路获取头像选择素材缩放,移动,旋转素材生成canvas生成图片,保存图片实现方式image首先是获取头像,这个不用说,大家应该都会的。选择素材这里我准备了三张圣诞帽的素材,这个网上有很多,可以自己找下,然后我还做了一个选择手机相册的功
- 通过CanvasRenderer.SetColor和Image.color修改UI组件颜色的区别
1)通过CanvasRenderer.SetColor和Image.color修改UI组件颜色的区别2)OPPO相关机型没法在Unity启用90或120FPS3)手机输入法中的emoji4)UnityApplicationPatching怎么用这是第369篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。UWA社区主页:co
- qml元素详解
码肥人壮
QMLC++\QTqmlqt
qml元素详解1说明2可视元素集合3不可视元素集合4交互元素集合5自定义元素6动画元素7画布元素(canvaselement)1说明QML是一种描述用户界面的声明式语言,它将用户界面分解成一些更小的元素,或者说是由一个个元素堆积、结合成一个组件。QML语言不仅需要描述了用户界面每个元素的的形状、位置、大小、颜色等ui相关内容,还需要描述其行为及相应。在qml中,元素可以被分为可视化元素与非可视化元
- Vue中$root的使用方法
还是大剑师兰特
#vue2实战指南vue.jsvue的root大剑师
查看本专栏目录关于作者还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技术开发,欢迎加底部微信,一起交流。热门推荐内容链接1openlayers从基础到精通,300+代码示例2leaflet热门分解学习教程,15
- 热门的19个JAVASCRIPT前端开发框架和库
JavaScript(JS)是一种轻量级的解释(或即时编译)编程语言,是世界上最流行的编程语言。JavaScript是一种基于原型的多范式、单线程的动态语言,支持面向对象、命令式和声明式(例如函数式编程)风格。JavaScript几乎可以做任何事情,更可以在包括物联网在内的多个平台和设备上运行。在WebGL库和SVG/Canvas元素的支持下,JavaScript变得惊人的强大。几乎可以为网络构建
- 你画我猜。canvas
qq_40055200
javascript开发语言ecmascript
你画我猜html,body,div,canvas,nav,input,ul,li{margin:0;padding:0;}#box{width:600px;height:700px;margin:0pxauto;background-color:palevioletred;}#boxnav{width:100%;height:150px;}#boxnavdiv{height:50px;line-h
- unity中实现3D物体在UI前方
Ctrl-c
unity3dui
在Unity中,如果你想要将3D物体显示在UI的前方,可以通过Canvas和RawImage来实现。以下是一些步骤:创建Canvas:在场景中创建一个Canvas对象。你可以在Hierarchy视图中右键点击,选择UI>Canvas,或者在创建菜单中找到。Canvas是用来渲染UI元素的。创建RawImage:在Canvas中创建一个RawImage对象。你可以在Hierarchy视图中右键点击C
- video标签指定视频的某一帧作为封面
小付-小付
音视频前端javascriptvideocanvas
importVuefrom'vue'captureFrame(url,file){constvideo=document.createElement('video')video.src=urlconstcanvas=document.createElement('canvas')constctx=canvas.getContext('2d')video.onloadedmetadata=()=>{
- Unity 官方教程 Tanks (二)
迷途小路
坦克的血条这一章我们现在制作坦克的血条,效果如图我们先在场景里生成一个Slider,重命名,然后连着Canvas一起放在Tank下,删去HandleSliderArea,然后设置canvas如下在这里把canvas把当成了一个UI来处理,在前面的教程SurvivalShooter中给主句加血条也用到了。然后设置Slider,我们选中HealthSlider、Background、FillArea、
- unity学习(27)——修改text控件的内容
u宅
学习
手游最大的特点就是简单易懂好上手。1.在canvas上添加一个text的UI,内容设置为空。在字体处添加宋体,增加一个tag。2.修改LoginHandler中的内容如下:(之前有从inputFiled中获取文字的经验)publicvoidLoginHandler(SocketModelmodel)//type=LOGIN的都先进这里{Debug.Log("这里是LoginHandler.cs要r
- 【HTML】过年不能放烟花,那就放电子烟花
鑫宝Code
HTMLhtml前端css
闲谈大家回家过年可能都多多少少放过些,但是有些在城市上过年的小伙伴可能就没有机会放鞭炮了。不过没关系,我们懂技术,我们用技术自娱自乐,放电子烟花,总不可能被警长叔叔敲门问候吧。开干首先,我们先明确一下思路,我觉得可以分解为如下2个步骤。涉及到Canvas+requestAnimationFrame+物理知识,。我们先画出一个烟花爆炸出来的粒子,这涉及到技术Canvas+物理知识最后通过动画将多个粒
- 推荐几个基于Vue3.0全家桶的优秀开源项目
一只理智恩
vue开源
PPTistPPTist是一个基于Vue3.x+TypeScript+Pinia+AntDesignVue+Canvas的在线演示文稿(幻灯片)应用,还原了大部分OfficePowerPoint常用功能,实现在线PPT的编辑、演示,支持导出PPT文件。演示地址:PPTIST-在线演示文稿源码地址:GitHub-pipipi-pikachu/PPTist:基于Vue3.x+TypeScript的在线
- 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独立出来,数据持