- 解释 HTTP 中的内容协商,如何根据客户端偏好返回合适的内容?
程序员黄同学
前端开发JavaScriptnode.jshttp网络协议网络
一、内容协商的本质与价值内容协商(ContentNegotiation)是HTTP协议中客户端与服务器就资源表现形式达成一致的协商机制。其核心价值在于:用同一URI提供资源的不同表现形式,同时保证客户端获得最适合自身环境的内容版本。典型应用场景:多语言站点自动适配浏览器语言根据设备类型返回移动版/桌面版页面API接口支持JSON/XML等多种数据格式图片资源按客户端支持格式自动转换二、核心协商机制
- FreeSWITCH 简单图形化界面40 - 使用mod_curl模块进行http请求
贾宝玉的玉宝贾
IPPBXfreeswitchvoipsiphttppython
FreeSWITCH简单图形化界面40-使用mod_curl模块进行http请求0、界面预览00、简介1、编译安装1.1编辑模块配置文件2、使用2.1拨号规则GET请求POST请求JSON数据2.2Lua脚本GET请求POST请求JSON数据3、示例3.1示例1:提交CDR到第三方接口3.2示例2:提交外呼状态到第三方接口0、界面预览http://myfs.f3322.net:8020/用户名:a
- swagger-01-swagger介绍
褚师子书
swaggerjavaspringbootrestful
swagger1.学习目标:了解前后端分离了解Swagger的作用和概念在SpringBoot中集成Swagger1.1swagger由来前后端分离,当前流行的开发模式Vue+SpringBoot早先的后端时代:前端只用管理静态页面;后端将html用模板引擎JSP进行开发前后端分离式时代:后端:后端控制层,服务层,数据访问层【后端团队】前端:前端控制层,视图层【前端团队】mock后端数据json,
- vscode setting.json 全局设置 工作区设置 位置 优先级
AllBlue
vscodevscodeide编辑器
vscode中setting.json有两种配置权限一、全局配置:setting.json文件位于C:\Users\Administrator\AppData\Roaming\Code\User\settings.json二、工作区配置:setting.json文件位于工作区的.vscode\settings.json当两种配置同时存在时,工作区配置的优先级高于全局配置。vscode如何打开set
- linux下jsoncpp编译
虎皮猫大人王
linux系统linux系统
折腾了一顿,我使用ubuntu16.04编译的jsoncpp,由于使用的芯片工程需要16.04,无法使用最新的ubuntu系统。发现jsoncpp编译时,CMakeError:CouldnotfindCMAKE_ROOT!!!CMakehasmostlikelynotbeeninstalledcorrectly.Modulesdirectorynotfoundin/usr/local/share/
- Json工具(一)- Jackson
小胖子许愿
Jsonjsonjavaspring
1、Jackson简介Jackson是常用的高效安全的Json序列化和反序列化框架。SpringMVC默认的json解析器是Jackson。Jackson有三个核心模块。jackson-core:提供Jackson处理JSON数据的核心功能,如流式解析和生成JSON,提供基本的API。jackson-annotations:提供注解编程相关的核心注解。jackson-databind:提供数据绑定
- 开源游戏服务器框架NFShmServer 简介(一)
gaoyi445
游戏C++游戏服务器共享内存游戏服务器lua游戏服务器插件游戏服务器
一、NFShmServer是什么?NFShmServer是一个使用C++开发的轻量级,敏捷型,弹性的,分布式的共享内存(C++热更)/多进程lua(lua热更)的插件开发框架,让你更快更简单的开发服务端应用.部分思路来自UE4和Ogre.(当前主要用在游戏领域).实现了一款unity3d捕鱼demo游戏和一个MMO(目前还在完善中)游戏,有兴趣的可以加群762414765学习二、特征可以做到分布式
- 顶点着色器和片段着色器
无敌最俊朗@
UnityShader着色器
在Unity渲染中,**顶点着色器(VertexShader)和片段着色器(FragmentShader)**是图形渲染管线中的两个核心阶段。我们可以通过一个比喻来理解它们的分工:想象你要画一幅由三角形组成的3D模型,顶点着色器负责确定每个三角形的“顶点位置”,而片段着色器负责给每个像素“填色”。1.顶点着色器(VertexShader)——定位形状作用:顶点着色器是渲染管线的第一步,它处理模型的
- Excel-to-JSON v2.0.0发布,可以在Excel内部,把Excel表格转换成JSON,嵌套的JSON也能转
wtsolutions
excel与json互相转换exceljsonexcel-to-json转换
本文是Excel-to-JSON插件的官方文档https://excel-to-json.wtsolutions.cn简化浓缩翻译的中文版,仅供参考。详细的还请查看官方文档。在数据处理和交换的过程中,将Excel文件转换为JSON格式是一项常见需求。Excel-to-JSON作为一款MicrosoftExcel插件,为我们提供了便捷的解决方案。本文将详细介绍如何使用Excel-to-JSON以及它
- Spring Boot整合Spring Security与JWT实现无状态认证:实战指南
老哥不老
笔记springspringboot数据库
SpringBoot整合SpringSecurity与JWT实现无状态认证:实战指南一、JWT认证原理简介JSONWebToken(JWT)是一种开放标准(RFC7519),由三部分组成:Header(头部):声明令牌类型和签名算法Payload(负载):携带用户身份信息Signature(签名):防篡改验证认证流程:客户端提交登录凭证服务端验证通过后生成JWT客户端后续请求携带JWT服务端验证J
- npm 常用指令指南
风干牛肉巴旦木
npm
以下是一些常用的NPM(NodePackageManager)指令,它们在前端开发中非常实用:#NPM常用指令大全##包管理###安装依赖```bashnpminstall安装package.json中列出的所有依赖。安装开发依赖npminstall--save-dev安装并添加到devDependencies。安装特定版本的包npminstall@安装指定版本的包。全局安装包npminstal
- ruoyi&vue+electron+ffi&dll+CAN+串口
思想永无止境
Web前端Windowsvue.jselectron前端
package.json{"name":"test","version":"1.0.0","description":"test","author":"tzc","license":"MIT","main":"background.js","scripts":{"dev":"vue-cli-serviceserve","build:prod":"vue-cli-servicebuild","bui
- npm install的执行原理
温暖前端
npm前端node.js
1.npminstall概述npminstall是Node.js的包管理工具npm提供的一个命令,主要用于安装package.json文件中列出的依赖包。npminstall可以用于安装单个包、多个包,或者是根据项目中的package.json自动安装所有依赖。通过npminstall,开发者可以下载并安装项目所依赖的各种库和工具,构建出一个完整的开发环境。在执行npminstall时,npm会从
- uniapp微信小程序vue3自定义tabbar
HerayChen
uni-app微信小程序小程序
在App.vue隐藏原生tabbar,也可以在pages.json中配置二选一就好了创建CustomTabBar公共组件{{item.text}}import{ref,onMounted}from'vue';constprops=defineProps({currentPage:Number,})consttabBarList=ref([{pagePath:"pages/tabbar/msg",i
- 使用uni-app框架中uni.chooseAddress()接口,获取不到用户收货地址
mumuwei_l
问题解决uni-app微信小程序小程序
错误描述在我们使用uni-app框架或微信原生开发微信小程序时,使用到uni.chooseAddress(OBJECT)接口获取用户收货地址时,无法跳转到收货地址页面获取。打印接口返回信息,显示"chooseAddress:failtheapineedtobedeclaredintherequiredPrivateInfosfieldinapp.json/ext.json"等内容,意思是此API接
- 微信小程序构建npm找不到miniprogram文件
王富贵的记录
微信小程序小程序
微信小程序构建npm找不到miniprogram文件在project.config.json文件中找到setting,增加如下代码"packNpmManually":true,"packNpmRelationList":[{"packageJsonPath":"./package.json","miniprogramNpmDistDir":"./../你的项目名"}],
- Unity AI 技术浅析(二)
爱研究的小牛
AIGC—游戏制作AIGC—虚拟现实unity人工智能游戏引擎AIGC机器学习深度学习
UnityAI是Unity引擎中集成的智能技术,旨在为游戏开发者、虚拟现实(VR)和增强现实(AR)应用开发者提供强大的AI工具和功能。UnityAI涵盖了从智能代理(Agents)、机器学习(MachineLearning)到自然语言处理(NLP)等多个领域。一、UnityAI的工作原理1.智能代理(Agents)UnityAI的核心之一是智能代理(Agents),这些代理可以模拟游戏中的非玩家
- 前端流式输出深度解析:技术原理、实战应用与性能优化
斯~内克
前端网络前端性能优化
一、流式输出的革命性意义1.1传统数据加载的痛点白屏等待:根据Google核心性能指标统计,页面加载时间超过3秒会导致53%的用户流失内存压力:单次加载10MBJSON数据会使内存占用飙升300MB+响应延迟:金融行业实时行情系统要求数据延迟{renderTableRow(data);});3.2Server-SentEvents(SSE)//客户端consteventSource=newEven
- 【前端进阶】Web Worker性能优化实战:解码10万条数据不卡顿
爱上大树的小猪
前端性能优化
为什么需要WebWorker?JavaScript是单线程语言,当处理大量数据(如解析10万条JSON数据)时,主线程会被阻塞,导致页面卡顿、无法响应点击事件。WebWorker是浏览器提供的多线程解决方案,可以将耗时任务放到后台执行,解放主线程!实战目标主线程流畅渲染,10万条数据解码不卡顿!代码案例与分步解析1.模拟10万条数据//生成10万条模拟数据functiongenerateMockD
- 庐山派k230使用串口通信发送数据驱动四个轮子并且实现摄像头画面识别目标检测功能
晨兆
python开发语言
我使用的是UART1frommachineimportUART,FPIOA,Pinimportosimportujsonimportaicubefrommedia.sensorimport*frommedia.displayimport*frommedia.mediaimport*fromtimeimport*importnncase_runtimeasnnimportulab.numpyasnp
- 如何用postman设置接口测试关联
海姐软件测试
postmanpostman测试工具
一、提取响应数据(Tests脚本)在第一个请求的Tests标签中编写脚本,提取需要关联的数据://示例1:提取JSON响应中的tokenletresponseData=pm.response.json();pm.environment.set("token",responseData.token);//保存到环境变量//示例2:提取cookiespm.environment.set("sessio
- VB6 调用 JS 函数时数据传输json格式或a=1&b=s2字符串
专注VB编程开发20年
javascriptjson开发语言vb6js
1.VB6调用JS函数时数据传输格式当从VB6调用JS设计的函数时,使用JSON字符串作为数据传输格式是一个不错的选择,但并非唯一选择。使用JSON字符串传输的优势通用性:JSON是一种轻量级的数据交换格式,具有良好的跨语言和跨平台特性。在VB6和JS之间使用JSON字符串传输数据,可以方便地表示复杂的数据结构,如对象、数组等。结构化:JSON可以清晰地表示数据的结构,便于在不同语言环境中解析和处
- 琴韵博主 —— 工具集
琴 韵
知识库在线文档
CSDN猿如意_开发者工具箱CSDN开发助手ChromeChrome最新版离线下载internetdownloadmanager付费在线转换在线JSON字符串转Java实体类(JavaBean、Entity)在线MD5加密解密YAML、YML在线编辑器(格式化校验)在线图片转换成文字图片base64互转颜色转换颜色转换人民币大小写转换蛙蛙:英文字母大小写转换、文本工具汉字拼音在线转换Google翻
- 将返回的json数据存储为json文件
小凳子在线
json
背景:想下载行政区域数据,网站:unpkg.com/
[email protected]/dist/data.json返回json数据(代码由通义生成,此处仅作为记录)工具类://src/utils/downloadData.jsexportasyncfunctiondownloadData(url,filename){try{constresponse=awaitfetch(url
- React:Axios、Fetch-Jsonp获取API接口数据
今天也很棒棒~
Reactreact.jsjavascriptjson
不同模块可登录npm,搜索对应方法有官方文档https://www.npmjs.com/Axios步骤:{/*axios1.npminstallaxios--save安装axios模块2.importaxiosfrom'axios';3.varapi='http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20';//接口后台允许了
- MySQL 8.0版本JDBC驱动Jar包
m0_74823490
面试学习路线阿里巴巴mysqljar数据库
MySQL8.0版本JDBC驱动Jar包【下载地址】MySQL8.0版本JDBC驱动Jar包本仓库提供了MySQL8.0版本的JDBC驱动Jar包。此驱动程序专为与MySQL数据库8.0及以上版本交互设计,确保了对最新数据库特性的全面支持,包括窗口函数、JSON操作增强等,并优化了性能和安全性[这里是图片001]项目地址:https://gitcode.com/open-source-toolki
- JSON-LD 类型使用示例大全
本文是针对JSON-LD类型的使用示例及其简要介绍与说明。每个类型的示例展示了如何在JSON-LD中进行标注,并附带了简要说明,希望对你有所帮助。文章目录JSON-LD的主要核心类型Thing(事物)CreativeWork(创作作品)Event(事件)Intangible(非实体事物)Organization(组织)Person(个人)Place(地点)Product(产品)Action(行为)
- HarmonyOS NEXT 长时任务的学习和总结
架构教育
想要使用鸿蒙的长时任务需要配置权限:ohos.permission.KEEP_BACKGROUND_RUNNING并在module.json5中配置需要处理的长时任务类型,此处以定位为例:{..."backgroundModes":[//长时任务类型的配置项"location"]}]然后再合适的地方调用startBackgroundRunning方法开启长时任务,通过调用stopBackgroun
- Springboot应用json数据传给前端首字母大写变小写的问题
珠峰日记
css3cssspringjqueryhtml
对接.net数据,属性首字母大写传给前端后自动转成了小写。解决思路网上有三种:1)如果没有使用fastjson(阿里巴巴出品),使用@JsonProperty("XXXX")的注解方式可以解决问题,XXXX就是转换成Json的属性名,但注意,只有放在getter上才是有效的,直接在属性上加没效果.(这说明spring默认的jackson类库处理是基于访问器。2)如果使用了fastjson,就用@J
- Unity ECS与MonoBehaviour混合架构开发实践指南
Clank的游戏栈
unity架构游戏引擎
一、混合架构设计背景1.技术定位差异ECS(EntityComponentSystem):面向数据设计(DOD),适用于大规模实体计算(如10万+单位战斗)MonoBehaviour:面向对象设计(OOD),适合UI控制、场景管理等传统逻辑2.混合使用场景性能敏感模块:ECS处理战斗计算/物理模拟快速迭代模块:MonoBehaviour实现UI/剧情系统第三方插件集成:适配AssetStore资源
- 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独立出来,数据持