- c++高性能多进程 cuda编程: safe_softmax实现 + cub::BlockReduce自定义归约操作
FakeOccupational
深度学习c++开发语言
目录cub::BlockReduce自定义归约操作(`cub::BlockReduce::Reduce`)1.语法safe_softmax实现cub::BlockReducecub::BlockReduce是CUB库(CUDAUnBound)提供的一种用于GPU线程块内数据归约(一般完成所有数据规约需要两次规约)的高效工具。它允许线程块内的多个线程并行地对数据执行归约操作,cub::BlockRe
- 关于你需要知道的JVM基础
DRUN_K
jvm
Java对象的内存布局对象头class对象指针markword(64个bit位)结构:哈希码:对象的哈希码,用于支持基于哈希的集合操作GC分代年龄:对象的分代年龄,用于垃圾回收器的分代收集策略锁状态的标识:用于标识对象的锁状态,如未锁定、轻量级锁定、重量级锁定等。偏向线程ID(在偏向锁的状态下):记录持有偏向锁的线程ID锁记录指针(在轻量级锁的状态下):指向当前线程栈中LockRecent的指针作
- Transformer精选问答
EmbodiedTech
大模型人工智能transformer深度学习人工智能
Transformer精选问答1Transformer各自模块作用Encoder模块经典的Transformer架构中的Encoder模块包含6个EncoderBlock.每个EncoderBlock包含两个子模块,分别是多头自注意力层,和前馈全连接层.多头自注意力层采用的是一种ScaledDot-ProductAttention的计算方式,实验结果表明,Multi-head可以在更细致的层面上提
- 并发编程面试题四
2301_76231794
面试
1、ReentrantLock和synchronized的区别及使用的场景synchronized关键字(是悲观锁):自动管理:synchronized是Java提供的一种内置锁机制,使用简单,不需要显式地获取和释放锁。可重入性:同一个线程可以多次获取同一个锁而不被阻塞。不可中断:一旦一个线程开始等待获取锁,它不能被其他线程中断。内存可见性:synchronized块或方法提供了内存可见性的保证,
- 【SoC基础】单片机之RCC模块
望闻问嵌
#SoC单片机
:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】:文章若有幸对你有帮助,可点赞收藏⭐不迷路:内容若有错误,敬请留言指正!原创文,转载注明出处RCC模块简介RCC(ResetandClockControl)即复位和时钟控制模块,其基本功能总结如下:时钟源管理多源选择:支持多种时钟源,包含内部
- JAVA:网络编程 Socket 的技术指南
拾荒的小海螺
JAVAjava网络开发语言
1、简述JavaNIO(Non-blockingI/O)是一种基于通道(Channel)和缓冲区(Buffer)的I/O模型,支持非阻塞通信和多路复用,适合高并发场景。相比传统的阻塞I/O(BIO),NIO更高效,因为它避免了线程被阻塞,降低了系统资源消耗。代码样例:https://gitee.com/lhdxhl/springboot-example.git核心组件:Channel(通道):数据
- 破局 MySQL 死锁:深入理解锁机制与高效解决方案
小吕学编程
javamysql数据库sql
死锁的原理1.什么是死锁?当多个事务在并发执行时,每个事务都持有其他事务需要的锁,同时又在等待对方释放锁,导致所有事务都无法继续执行的状态,称为死锁(Deadlock)。2.死锁的四个必要条件互斥条件:资源(如某行数据)一次只能被一个事务独占。请求与保持条件:事务在持有某些锁的同时,请求新的锁。不剥夺条件:事务已获得的锁不能被强制剥夺。循环等待条件:事务之间形成环形等待链,如事务A等待事务B,事务
- 《Operating System Concepts》阅读笔记:p359-p388
操作系统
《OperatingSystemConcepts》学习第32天,p359-p388总结,总计30页。一、技术总结1.paging(1)定义Acommonmemorymanagementschemethatavoidsexternalfragmentationbysplittingphysicalmemoryintofixed-sizedframesandlogicalmemoryintoblock
- VMware ESXi 8.0U3c macOS Unlocke OEM BIOS 标准版和厂商定制版,已适配主流品牌服务器
esxi
VMwareESXi8.0U3cmacOSUnlocker&OEMBIOS标准版和厂商定制版ESXi8.0U3c标准版,Dell(戴尔)、HPE(慧与)、Lenovo(联想)、Inspur(浪潮)、Cisco(思科)、Hitachi(日立)、Fujitsu(富士通)、NEC(日电)定制版、Huawei(华为)OEM定制版请访问原文链接:https://sysin.org/blog/vmware-e
- 三个线程按顺序交替打印 A B C
Michael_ZJQ
经验总结java
方法一:ReentrantLock+Conditionpublicstaticvoidmethod1(){ReentrantLocklock=newReentrantLock();ConditioncondA=lock.newCondition();ConditioncondB=lock.newCondition();ConditioncondC=lock.newCondition();newTh
- VMware ESXi 8.0U3d macOS Unlocker & OEM BIOS 标准版和厂商定制版,已适配主流品牌服务器
sysinside
VMwareESXiOEM
VMwareESXi8.0U3dmacOSUnlocker&OEMBIOS标准版和厂商定制版ESXi8.0U3d标准版,Dell(戴尔)、HPE(慧与)、Lenovo(联想)、Inspur(浪潮)、Cisco(思科)、Hitachi(日立)、Fujitsu(富士通)、NEC(日电)定制版、Huawei(华为)OEM定制版请访问原文链接:https://sysin.org/blog/vmware-e
- 简单的防止Windows自动锁屏的VBS脚本
snowaterr
batch开发语言
文件后缀名从txt更改为vbs,双击可直接运行原理是通过脚本每隔一段时间自动按2下CAPSLOCK键脚本如下:SetobjShell=CreateObject("Wscript.Shell")'约循环8小时,10分钟执行一次fori=1to50WScript.Sleep590000objShell.SendKeys"{CAPSLOCK}"'WScript.Sleep3000objShell.Sen
- Infura 简介
倒霉男孩
区块链知识区块链web3
文章目录Infura简介Infura的主要功能Infura的替代方案(类似服务)AlchemyQuickNodeAnkrMoralisPocketNetwork什么时候选择Infura?Infura简介Infura是一个区块链基础设施即服务(BaaS,BlockchainasaService),提供高可用性的以太坊(Ethereum)节点和IPFS存储访问,让开发者可以轻松连接区块链网络,而无需自
- c++11新特性之条件变量
要好好养胃
c++11c++开发语言
文章目录条件变量1condition_variable1.1成员函数wait()2condition_variable_any条件变量互斥锁:放行一个线程,阻塞N个线程条件变量:放心n个线程,阻塞N个线程,主要使用场景:生产者-消费者模型1condition_variable只能使用独占的互斥锁,并且还得配合unique_lock1.1成员函数wait()//①voidwait(unique_lo
- 【Java】ReadWriteLock浅谈
风起云涌~
java开发语言jvm
一,概述在多读少写的场景下,可以使用读写锁优化性能。读锁本质是一种共享锁,即,如果ReadLock获取锁成功,只会阻塞WriteLock锁的获取,不会阻塞其它线程ReadLock锁的获取。而写锁就是正常的独占锁。二,简单实例一个简单demo,读者可体会。publicstaticvoidmain(String[]args){ReadWriteLocklock=newReentrantReadWrit
- 【Java】StampedLock浅谈
风起云涌~
java开发语言
1,概述在多读少写的环境,相比于ReadWriteLoock,StampedLock性能更胜一筹。试着想一下,如果使用ReadWriteLoock,当1万个读请求过来时,写的操作插入,就会被阻塞。但StampedLock不会,后者不基于AQS实现,它采用乐观锁的思维。所谓的乐观,即读取的时候,不会阻塞当前线程,相应会返回一个邮票,state。读取完毕后,只要验证手上的邮票判断数据是否变化即可,随后
- Android 面试(Java 篇)
约翰先森不喝酒
面试java面试android
Android面试(Java篇)一Java的继承机制二进程跟线程,以及线程的创建三简述wait()和sleep()的区别四如何终止一个线程五Synchronized(内置锁,线程同步)六Synchronized修饰的静态和非静态方法时为什么可以异步执行?七线程同步除了Synchronized还有别的方法么,区别在哪里八死锁产生的原因以及预防措施九Synchronized和Lock的区别十Handl
- 分块查找算法
1haooo
算法java算法开发语言数据结构
分块的原则前一块的最大数据,小于后一窥啊中所有的数据(块内无序,块间有序)块数数量一般等于数字的个数开根号。比如:16个数字一般分为4块左右。publicclassblockSearch{publicstaticvoidmain(String[]args){int[]arr={16,5,9,12,21,18,32,23,37,26,45,34,50,48,61,52,73,66};//共18个元素
- 《Operating System Concepts》阅读笔记:p331-p353
操作系统
《OperatingSystemConcepts》学习第30天,p331-p353总结,总计23页。一、技术总结1.lockdep工具2.claimedge3.banker'salgorithmAdeadlockavoidancealgorithm,lessefficientthantheresource-allocationgraphschemebutabletodealwithmultiple
- Sql常见问题
amber66666!
数据库java大数据
SQL锁机制概述SQL的锁机制用于保证多用户并发访问时的数据一致性和完整性。主要有两种锁:•共享锁(SharedLock,读锁):允许多个事务同时读取同一数据,但不允许修改。•排他锁(ExclusiveLock,写锁):锁定的数据只能被持有锁的事务修改,其他事务无法读取或修改。锁的使用示例✅读锁(共享锁)•情景:事务A读取数据X,加读锁后,事务B也可以读取X,但不能修改。•例子:如果事务A需要读取
- scikit-image(Scikit-image 是用于图像处理的 Python 包,使用原生的 NumPy 数组作为图像对象)
Clark-dj
图像处理pythonnumpy
Scikitimage中文开发手册-开发者手册-腾讯云开发者社区-腾讯云昨天搜索一个函数时无意间发现这个网站,今天来学习一下,仅作学习笔记。measureskimage.measure.approximate_polygon(coords,...)近似具有指定公差的多边形链。skimage.measure.block_reduce(image,block_size)通过对局部块应用函数来下采样图像
- GBase8c aes_encrypt和aes_decrypt函数
keep__go
GBase8c数据库gbase
在数据库中,aes_encrypt和aes_decrypt函数进行加解密时使用的块加密模式。GBase8c与MySQL的aes_encrypt和aes_decrypt函数区别:1、GBase8c中的初始化向量init_vector不能为空2、MySQL的加密模块block_encryption_mode为aes-128-ecb,GBase8c不支持aes-128-ecb,默认加密模块为aes-12
- 基于Gradio实现的增删改查(CRUD)模板系统设计方案
大霸王龙
pythongradio
基于Gradio实现的增删改查(CRUD)模板系统设计方案,结合了交互界面优化与数据持久化方案,支持本地JSON存储和动态界面更新:一、系统架构设计数据存储层采用JSON文件实现数据持久化(data.json)数据结构示例:{"items":[{"id":1,"name":"示例项目","category":"测试","status":"进行中"}]}界面交互层使用gr.Blocks实现多组件布局
- FPGA中级项目3——IP核之时钟管理单元
霖00
fpga开发经验分享嵌入式硬件fpga网络时序数据库
FPGA中级项目3——IP核之时钟管理单元时钟还需要管理?什么是时钟管理单元?我们常熟知FPGA本身有晶振单元,源源不断的提供的50Mhz的频率波。但是这样往往无法满足一些设计需求。使用Verilog代码设计倍频分频等又不可避免的出现毛刺等其他状况,且提升了代码复杂度。因此在FPGA设计中,时钟管理单元(ClockManagementUnit,CMU)IP核是关键组件,用于生成、调整和分配系统时钟
- 打卡信奥刷题(775)用C++信奥P9945[普及组/提高] [USACO21FEB] Clockwise Fence B
Loge编程生活
C++c++算法开发语言数据结构青少年编程
P9945[USACO21FEB]ClockwiseFenceB题目描述围绕FarmerJohn最大的草地的栅栏已经损坏了,如今他终于决定要换一个新的栅栏。不幸的是,当FarmerJohn在铺设新栅栏时,一只巨大的蜜蜂突然出现,在他的草地上追着他跑,导致最后栅栏被沿着一条相当不规则的路径铺设。栅栏可以用一个字符串表示,每个字符为N(north,北)、E(east,东)、S(south,南)、W(w
- blockly二次开发
刘阿去
目前有的问题1.文档少,主要是因为谷歌的网站上不去,2.BlocklyDevelopTools使用有问题,预览有问题,暂时无法解决.目前源码下载难度较大github下载速度慢,自己在gitee上弄了一份.https://gitee.com/liuaqu/blockly
- [rust] rust学习
1nv1s1ble
rustrust学习开发语言
rust学习1.项目组织结构工程#创建一个工程cargonewmy-project工作空间在Rust中,工作空间(Workspace)是一个包含多个Rust项目的共享环境,用于管理多个crate(库或可执行文件)。它允许多个Rust项目共享Cargo.lock、依赖项和target/目录,提高编译效率,并且适用于多包管理、模块化开发。为什么使用Rust工作空间?Rust工作空间适用于以下场景:管理
- Python 时间同步程序
东亭山人
Python时间同步
Python时间同步程序运行结果两种修改本地时间的方法(局域网内,利用网关服务器,穿越代理,与互联网时间同步的方法:前部分用于win7系统,后部分用于winserver2008。需要pip3installntplib需要启动WindowsTime服务。)importwin32apiimportdatetimeimportosimporttimeimportntplibdefSetClockL():
- YOLOv8改进添加swin transformer
兜里没有一毛钱
YOLO系列改进管理YOLOtransformerpython
最近在做实验,需要改进YOLOv8,去网上找了很多教程都是充钱才能看的,NND这对一个一餐只能吃两个菜的大学生来说是多么的痛苦,所以自己去找代码手动改了一下,成功实现YOLOv8改进添加swintransformer,本人水平有限,改得不对的地方请自行改正。第一步,在ultralytics\nn\modules\block.py代码中的最后部分中添加swintransformer代码,代码如下:#
- 记一次java线程阻塞状态分析
chuixue24
java基础java多线程多线程java
"http-nio-9002-exec-23"#96daemonprio=5os_prio=0tid=0x00005629c8ee7800nid=0x6bwaitingformonitorentry[0x00007efc02a47000]java.lang.Thread.State:BLOCKED(onobjectmonitor)atxxx.xxxWriteServiceImpl.handleWr
- 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独立出来,数据持