- 深入理解汇编语言子程序设计与系统调用
网安spinage
汇编语言开发语言汇编算法
本文将全面解析汇编语言中子程序设计的核心技术以及系统调用的实现方法,涵盖参数传递的多种方式、堆栈管理、API调用等关键知识点,并提供实际案例演示。一、子程序设计:参数传递的艺术1.寄存器传参:高效简洁.386.modelflat,stdcalloptioncasemap:none.dataxdd5;定义变量ydd6sumdd?.code;函数定义:addxy1addxy1procpushebpmo
- 02-Breakout靶机攻略
ZLlllllll0
02-Breakout靶机
第一步搭建靶机下载地址:https://download.vulnhub.com/empire/02-Breakout.zip下载好了之后直接用VM打开然后右击虚拟机,把网络连接改成nat模式第二步,信息收集然后开启虚拟机,左上角编辑,虚拟网络编辑器里面看一下靶机是哪个网段。打开kali用nmap扫一下的这个网段的存活主机,也就是扫除这个靶机的具体ip地址nmap192.168.109.1/24扫
- .net平台的跨平台桌面应用开发的技术方案总结对比
yuanpan
.net
目前,.NET平台提供了多种跨平台桌面应用开发的技术方案,主要包括.NETMAUI、AvaloniaUI、UnoPlatform、Eto.Forms等。以下是它们的核心特点及优缺点对比:1..NETMAUI(.NETMulti-platformAppUI)支持平台:Windows、macOS、iOS、Android核心特点:微软官方维护,继承自Xamarin.Forms,支持XAML和C#开发。提
- 负载均衡-加权随机算法
BP白朴
Nginx负载均衡java算法服务器
负载均衡-加权随机算法由于访问概率大致相同,所以如果部分服务器性能不一致的话,容易导致性能差的服务器压力过大,所以要根据服务器性能不一致的情况,给性能好的服务器多处理请求,给差的少分配请求(能者多劳)所以就需要在随机算法的基础上给每台服务器设置权重,延伸为加权随机算法1、将应用服务器集群的IP存到Map里,每个IP对应有一个权重2、创建一个List,来将所有权重下的IP存到list里面如:192.
- 2025最新Mybatis-plus教程(二)
三、CRUD(一)BaseMapper接口方法介绍BaseMapper中提供了crud方法,具体方法如下://插入一条记录intinsert(Tentity);//根据entity条件,删除记录intdelete(@Param(Constants.WRAPPER)Wrapperwrapper);//删除(根据ID批量删除)intdeleteBatchIds(@Param(Constants.COL
- 2025最新Mybatis-plus教程(四)
五、MyBatis-Plus的service封装(一)通用Service简介MyBatis-Plus除了通用的Mapper还有通用的Service层,这也减少了相对应的代码工作量,把通用的接口提取到公共。其实按照mp的这种思想,可以自己也实现一些通用的Controller。(二)通用Service方法介绍/***插入一条记录(选择字段,策略插入)**@paramentity实体对象*/defaul
- Python STL概念学习与代码实践
体制教科书
本文还有配套的精品资源,点击获取简介:通过”py_stl_learning”项目,学习者可以使用Python实现和理解C++STL的概念,包括数据结构、算法、容器适配器、模板和泛型容器等。Python中的列表、集合、字典等数据结构与STL中的vector、set、map等类似,而Python的itertools和functools模块提供了STL风格的算法功能。Python通过其面向对象的特性以及
- 构建基于Android Studio开发天气预报应用
策划加强小乔
Androidstudioandroid
AndroidStudio开发天气预报应用需要完成API调用、UI设计、数据解析等步骤。以下是基于OpenWeatherMapAPI的实现方法,包含关键代码片段和详细说明。环境准备与项目创建确保已安装AndroidStudio最新版本,创建新项目选择EmptyActivity模板。在build.gradle模块文件中添加必要依赖:dependencies{implementation'com.sq
- Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现不同水果的检测识别(C#代码,UI界面版)
Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现不同水果的检测识别(C#代码,UI界面版))工业相机使用YoloV8模型实现不同水果的检测识别工业相机通过YoloV8模型实现不同水果的检测识别的技术背景在相机SDK中获取图像转换图像的代码分析工业相机图像转换Bitmap图像格式和Mat图像重要核心代码本地文件图像转换Bitmap图像格式和Mat图像重要核心代码Mat图像导入Yo
- 三种接口实现增删改查
灬爱码士灬
javajava
目录ArrayListHashSetHashMapArrayListArrayList实现增删改查packagetest;importjava.util.ArrayList;importjava.util.Iterator;/***@Author:Mo*@Date:2020/12/611:11*/publicclasslist{ArrayListlist1=newArrayList();publi
- elasticsearch启动时遇到的错误max virtual memory areas vm.max_map_count [65530\] is too low, increase to a...
Hello小五
maxvirtualmemoryareasvm.max_map_count[65530]istoolow,increasetoatleast[262144]elasticsearch启动时遇到的错误问题翻译过来就是:elasticsearch用户拥有的内存权限太小,至少需要262144;在宿主机/etc/sysctl.conf文件最后添加一行vm.max_map_count=262144执行命令s
- 【Java】基于ArrayList手写HashMap集合
即使再小的️帆也能远航
集合HashMapjava开发语言集合HashMap手写HashMap
HashMap底层不是基于ArrayList实现的,而是基于HashCode值计算的,基于ArrayList查询效率非常低,时间复杂度O(n)虽然可以保证存放键值对的有序性但是并不可取示例代码packagecom.collection.Demo10;importjava.util.ArrayList;/***基于ArrayList手写HashMap集合*手写简易版本的HashMap,不推荐这样使用
- 尚庭公寓-学习跟敲笔记(二)
wenbinglin66
学习笔记springbootjava
管理端后端开发-租赁管理模块1.看房预约管理1.1根据ID更新预约状态在ViewAppointmenController中增加内容@Operation(summary="根据id更新预约状态")@PostMapping("updateStatusById")publicResultupdateStatusById(@RequestParamLongid,@RequestParamAppointme
- 常见4种主流ORM介绍与基本使用(Peewee ORM、Django ORM、SQLAlchemy ORM、Tortoise ORM)
ACERT333
python后端开发笔记笔记djangopython后端ORM
ORM对象关系映射(ObjectRelationalMapping,简称ORM)是一种程序设计技术,用于在面向对象编程语言和关系数据库之间进行数据转换。ORM的核心思想是通过创建一个“虚拟对象数据库”,使开发者可以使用面向对象的方式操作数据库,而不需要直接编写复杂的SQL语句。基本原理:ORM的基本原理是将数据库中的表映射为编程语言中的类,将表中的记录映射为类的实例,将表中的字段映射为类的属性。通
- Java CAS 分析
向梦而来
1概述CAS,CompareAndSwap,即比较并交换。DougLea大神在实现同步组件时,大量使用CAS技术,鬼斧神工地实现了Java多线程的并发操作。整个AQS同步组件、Atomic原子类操作等等都是基CAS实现的,甚至ConcurrentHashMap在JDK1.8的版本中,也调整为CAS+synchronized。可以说,CAS是整个J.U.C的基石。2017030900012CAS分析
- redis性能测试报告结果
无级程序员
数据库大数据redis性能
redis性能测试1.环境配置:2.测试准备:2.1每服务器一个Redis的结果:2.2每服务器两个Redis的结果:3.结论:由于项目需要,要查询一个数量巨大的键值对,数据量大约6亿。先是在内存中用hashmap,虽然速度很快,但数据量不到1亿就直接死机了,而且无法持久,每次重新加载,也不合理。于是就想到了redis。测试方法:1.环境配置:主机配置:机器用途配置数量Redis服务器XeonE5
- 深入理解 C++ 红黑树:从理论到实践
jdlxx_dongfangxing
开发语言c++算法
引言在计算机科学领域,数据结构是构建高效算法的基石。而在众多的数据结构中,平衡二叉搜索树因其优秀的查找、插入和删除性能而备受关注。红黑树(Red-BlackTree)作为一种自平衡的二叉搜索树,更是在C++标准库(如STL中的map和set)中得到了广泛应用。本文将深入探讨红黑树的原理、实现及应用,帮助读者全面掌握这一重要的数据结构。红黑树的基本概念红黑树是一种特殊的二叉搜索树,它在每个节点上增加
- elasticsearch vm.max_map_count
small瓜瓜
maxvirtualmemoryareasvm.max_map_count[65530]istoolow,increasetoatleast[262144]elasticsearch启动时遇到的错误问题翻译过来就是:elasticsearch用户拥有的内存权限太小,至少需要262144解决:切换到root用户执行命令:sysctl-wvm.max_map_count=262144查看结果:sysc
- Java设计模式之<建造者模式>
目录1、建造者模式2、建造者模式结构3、实现4、工厂模式对比5、适用场景差异前言建造者模式是一种创建型设计模式。用于封装复杂对象的构建过程,通过步骤构建产品类。它包括产品类、抽象建造者、具体建造者和指挥者角色。优点在于灵活性、解耦和易扩展,缺点是增加工作量和效率较低。适用场景如构建套餐、字符串动态构建、StreamAPI操作等。1、建造者模式(BuilderPattern)建造者模式定义:封装一个
- 【日更挑战】2023-04-30比赛日NOTES(季后赛)
扁圆柱体
日更挑战当前排名:第741天,第585名,排名较昨日前进1名。比赛日,官网给出每场比赛的Notes(极个别场次没有),翻译如下TLDR:枫叶上一次在季后赛晋级,还是2004年东部1/4决赛对阵参议员;游骑兵前锋Kreider在输球就回家的比赛中打入16球,追平MarkMessier成为联盟历史第一;Bouchard在强打中得到8分,这是联盟历史上后卫单系列赛的强打最高得分(并列)。MapleLea
- Hutool Java工具类库-ExcelUtil
〃冷·夏ぐ
Hutooljavaexcel
目录依赖:ExcelReader(Excel读取):1.从文件中读取Excel为ExcelReader2.从流中读取Excel为ExcelReader3.读取指定的sheet4.读取Excel中所有行和列,都用列表表示5.读取为Map列表,默认第一行为标题行,Map中的key为标题,value为标题对应的单元格值6.读取为Bean列表,Bean中的字段名为标题,字段值为标题对应的单元格值Excel
- 【Linux】线程——线程池、线程池的实现、线程安全的线程池、单例模式的概念、饿汉和懒汉模式、互斥锁、条件变量、信号量、自旋锁、读写锁
鳄鱼麻薯球
Linuxlinux安全单例模式
文章目录Linux线程7.线程池7.1线程池介绍7.2线程池的实现7.3线程安全的线程池7.3.1单例模式的概念7.3.2饿汉和懒汉模式8.常见锁使用汇总8.1互斥锁(Mutex)8.2条件变量(ConditionVariable)8.3信号量(Semaphore)8.4自旋锁(SpinLock)8.5读写锁(Read-WriteLock)Linux线程7.线程池 线程池是一种多线程编程中的技术
- [尚庭公寓]15-个人中心
恩稀码
Java项目mybatisjavaspring服务器
浏览历史浏览历史指的是浏览房间详情的历史,关于浏览历史,有两项工作需要完成,一是提供一个查询浏览历史列表的接口,二是在浏览完房间详情后,增加保存浏览历史的逻辑,下面分别实现。1.分页查询浏览历史列表packagecom.atguigu.lease.web.app.controller.history;@RestController@Tag(name="浏览历史管理")@RequestMapping
- 《笨方法学Python》习题40
周英杰Anita
习题40:字典,可爱的字典cities={'CA':'SanFrancisco','MI':'Detroit','FL':'Jacksonville'}cities['NY']='NewYork'cities['OR']='Portland'deffind_city(themap,state):ifstateinthemap:returnthemap[state]else:return"Notfo
- GAMES202——作业1 实时阴影(ShadowMap,PCF,PCSS)
目录任务ShadowMapPCFPCSS实现ShadowMapuseShadowMapPCFfindBlockerPCSS结果任务ShadowMap1.在ShadowMaterial.js中需要向Shader传递正确的uLightMVP矩阵,该矩阵参与了第一步从光源处渲染场景从而构造ShadowMap的过程。你需要完成DirectionalLight中的CalcLightMVP(translate
- Shadow Map ———— PCSS(percentage-closer Soft Shadow)
kevin_dust
ShadowMap————PCSS(percentage-closerSoftShadow)1、PCSS解决了什么问题传统的PCF每一次采样过滤耗费很大(每次都要遍历附近的几个点,虽然用了泊松分布,但还是不可避免),PCSS算法基本解决了该问题(通过动态计算采样范围,使用FindBlocker剔除非阴影点)传统的PCF半影不够逼真…PCSS算法通过计算准确的半影范围解决了4、PCSS的有关你资料:
- java List<Map> 去重
Perfect珈蓝
java
publicstaticList>removeRepeatMapByKey(List>list,StringmapKey){if(CollectionUtils.isNullOrEmpty(list))returnnull;List>listMap=newArrayListmsp=newHashMap=0;i--){Mapmap=list.get(i);Stringid=map.get(mapKe
- Java开发中对List<Map<String, Object>>集合去重并按大小拆分子列表
Java开发中对List>集合去重并按大小拆分子列表一、使用场景二、实现步骤三、相关知识四、代码示例一、使用场景在处理大量List>集合的数据时,为确保数据的唯一性,需要先根据Map的某个唯一标识进行去重,然后将去重后的数据切分成较小的子列表进行分组处理。二、实现步骤去重:通过将列表中的数据转换为Map,利用Map的键唯一性,去除重复的元素。同时,通过保留第一个出现的元素,可以确保数据的顺序。切分
- centos 配置docker
一、卸载旧版本(如有)sudoyumremovedocker\docker-client\docker-client-latest\docker-common\docker-latest\docker-latest-logrotate\docker-logrotate\docker-engine二、安装依赖包sudoyuminstall-yyum-utilsdevice-mapper-persis
- Three.js 实战:开启阴影、灯光旋转与阴影清晰度设置详解
技术需要沉淀gogo
three.jsjavascript开发语言ecmascript
在Three.js中,阴影效果是提升真实感的重要手段。本文将从以下三个方面进行系统讲解:如何启用阴影如何让灯光动态旋转以制造动态阴影如何设置阴影的清晰度(shadowmap分辨率)一、开启阴影的关键步骤1.渲染器启用阴影constrenderer=newTHREE.WebGLRenderer({antialias:true});renderer.setSize(window.innerWidth,
- 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独立出来,数据持