- ReactiveRedisTemplate自动配置定义和序列化方式选择spring-data-redis
简放视野
Spring-Boot工作实战总结Redisspringbootjavaredis
背景Spring-Boot的Redis自动配置类,RedisReactiveAutoConfiguration和RedisAutoConfiguration,组件ReactiveRedisTemplate和RedisTemplate默认使用JDK序列化方式,在现实业务场景中很难使用,其存储的值可读性差且又长。我觉得不是很合理,意味着使用它们的用户都需要自己重新自定义。ReactiveStringR
- SpringBoot
m0_66357705
springboot后端java
SpringBoot特性Bean扫描默认为启动类所在的包和它的子包在启动类上加注解@ComponentScan(basePackages="com.")起步依赖起步依赖是SpringBoot提供的一种便捷方式,用于包含项目运行所需的所有依赖。这些依赖被预定义在一个Maven或Gradle配置文件中,你只需要添加一个起步依赖,SpringBoot就会自动引入所有必要的库。例如,spring-boot
- PDF神器!Stirling-PDF,告别烦人会员!
辣码甄源
精品开源应用分享pdf开源软件
Stirling-PDF:告别付费,随心编辑与转换,PDF文件轻松驾驭-精选真开源,释放新价值。概览你或许面对这样的情况:需要合并几个PDF,或者需要将一份PDF文件拆分,又或者需要调整PDF中的页面顺序,但是,找到的线上工具要么广告满天飞,要么需要付费使用或者会员登录。Stirling-PD可以解决你的问题。Stirling-PDF是一个基于spring-boot开发的开源项目,旨在提供一个功能
- MybatisPlus快速使用
锦衣当国
Java框架javamybatis
配置类(非必须)如果不涉及分页,无需配置https://baomidou.com/pages/2976a3/#spring-boot从上面网址粘贴下来代码即可packagecom.atguigu.ssyx.common.config;importcom.baomidou.mybatisplus.annotation.DbType;importcom.baomidou.mybatisplus.aut
- 05. spring-boot对spring-mvc的自动配置
马晓钧
spring-mvc的自动配置viewResolver:视图解析器:根据方法的返回值得到视图对象(View)。//会将容器中已有的ViewResolver和自己定义的ViewResolver全部add进去ContentNegotiatingViewResolver自定义视图解析器://需要实现ViewResolver,并注入进容器@ConfigurationpublicclassViewConfi
- Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found
Shipley Leo
常见报错问题mavenjavaspring
文章目录一、报错问题二、问题背景三、原因分析四、解决方案一、报错问题Plugin‘org.springframework.boot:spring-boot-maven-plugin:‘notfound二、问题背景pom.xml文件的配置情况,如下所示:org.springframework.bootspring-boot-maven-pluginMaven仓库中存在多个版本的spring-boot
- spring-cloud 使用初谈(一)--服务注册、负载均衡以及断路器
程序员ken
1.spring-cloud基于spring-boot,spring-boot跟传统的spring项目的区别的就是精简配置‘搭建的框架’更轻便,上手更快2.spring-cloud跟传统项目的区别是前者是分布式后者是单体架构,分布式即每个子项目都独立开服务与服务间有些服务支持给多个其他的服务调用【相当于简约了重复代码】,当然这个分布式中需要两个重要的服务2.1、网关服务(相当于‘分发’给不同的路由
- Nginx部署多个spring-boot项目(jar方式部署)
qq_16929815
nginxspringbootjava
1:在nginx配置增加:(我这里一个是后台管理项目,一个是APP接口项目)server{ listen 80; server_name xxx.xxx.cn;#这里是域名 access_loglogs/book.log; error_loglogs/book.error; #将/ce-admin请求转发给http://127.0.0.1:9196/ce-admin处理 loc
- 相关阅读文档
他҈姓҈林҈
附录经验分享
springyml和properties相关参数配置文档网址:https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#appendix.application-properties.coreSwagger3(OpenAPI3)帮助文档网址:https://springdoc
- spring-boot 打成jar把后 启动时指定参数无效
mcdull.t
javaspringbootprofiles命令启动
spring-boot打成jar把后启动时指定参数无效检查配置文件书写的规则,这里把规则说一下检查setAddCommandLineProperties配置检查setAddCommandLineProperties配置今天后台项目进行修改,使用spring.profiles来指定启动时使用的配置文件。在项目中添加好配置文件后使用java-jar.\base-exec.jar--spring.pro
- Spring-Boot入门(雷丰阳)
baidu_34298344
SpringBootspringbootjavaspring
spring启动原理分析一、spring-Boot启动依赖1、pom文件分析1️⃣maven插件2️⃣Spring-Boot父项目3️⃣spring-boot-starter启动器2、主程序类,主入口类3、使用SpringInitializer快速创建SpringBoot项目二、spring-Boot配置文件1、配置文件2、YAML语法:1️⃣基本语法2️⃣值的写法字面量:普通的值(数字,字符串,
- Spring-boot入门
HTMK_GT_MK
Spring学习Spring-boot
接着上一篇Spring入门,这里记录SpringBoot的学习。参考:[1]官方文档SpringBootReferenceGuide[2]慕课网SpringBoot开发常用技术整合SpringBoot可以用来干什么?SpringBoot可以干Spring可以干的所有事情,SpringBoot是Spring的一个‘全家桶’,提供开发者一个企业级的开发框架。SpringBoot(2.1.8)系统要求:
- IDEA与Eclipse的Jrebel热部署方案
cjp1016
注册获取Jrebel激活码jrebel是付费的,但是有个官方免费的途径,打开网址:https://my.jrebel.com/image.png注册获取激活码image.pngIDEA配置使用,热部署spring-boot项目打开JRebel面板,勾选支持的spring-boot项目image.png这样jrebel会在对应的resources目录底下生成一个rebel.xml文件。当修改Java
- Spring--视图内容协商(二)
NealLemon
本文是学习了小马哥在慕课网的课程的《SpringBoot2.0深度实践之核心技术篇》的内容结合自己的需要和理解做的笔记。上一篇Spring--视图内容协商(一)讲解了如何配置内容协商以及spring-boot是如何配置关联匹配策略的。现在让我们来自己走一遍协商流程,加深印象。由于现在主要都是RestfulAPI形式的请求,就主要把HeaderContentNegotiationStrategy这个
- Reason: 坏的凭证
Rookie。
Springboot
Spring-boot项目中,启动Demo2Application后,url:localhost:8080/login.html,需输入用户名、密码。此处的用户名、密码在application.yml中配置。securityuser:name:1password:1
- 基于Java (spring-boot)的职工管理系统
源码好又多
毕设java论文javaspringboot毕设论文vue职工职工管理系统
一、项目介绍基于Java(spring-boot)的职工管理系统功能:登录、老板、职员人事经理、职员、部门列表、职工列表、权限修改、查看所有管理、正在审核列表、添加考勤、添加职工、添加奖惩、合同列表、合同信息、等等等。适用人群:适合小白、大学生、毕业设计、课程设计。二、作品包含三、项目技术后端语言:Java项目架构:B/S架构数据库:MySQL前端技术:Vue后端技术:SpringBoot四、运行
- 基于Java (spring-boot)的音乐管理系统
源码好又多
java毕设论文javaspringboot毕设论文vue音乐管理系统音乐
一、项目介绍播放器的前端:1.首页:点击歌单中的音乐播放列表中的歌曲进行播放,播放时跳转播放界面,并显示歌手信息,同时会匹配歌词,把相应的歌词显示在歌词面板中。2.暂停:当歌曲正在播放时,点击歌曲播放界面下方的暂停键,暂停目前播放的歌曲,同时歌曲停止转动。3.上一曲:歌曲正在播放,点击上一曲键,播放列表中上一首歌曲。4.下一曲:歌曲正在播放,点击下一曲键,播放列表中下一首歌曲。5.下载:当歌曲正在
- 基于Java (spring-boot)的电影院管理系统
源码好又多
java毕设论文javaspringboot电影院管理系统毕设vue论文电影院
一、项目介绍基于Java(spring-boot)的电影院管理系统功能:管理员登录、用户注册、用户登录、用户、影片介绍、购票、选坐、支付、我的订单、影片、榜单、关于、后台首页、影院信息管理、电影信息管理、电影类别管理、影厅信息管理、场次信息管理、订单信息管理、用户信息管理、角色信息管理、权限信息管理。二、作品包含三、项目技术后端语言:Java项目架构:B/S架构数据库:MySQL前端技术:Vue后
- 基于Java (spring-boot)的考勤管理系统
源码好又多
java论文毕设考勤管理系统javaspringboot毕设论文vue
一、项目介绍普通员工功能:(1)登录:员工进入界面后需要输入自己的账号密码进行登录。(2)签到打卡:员工登录完成以后,可以进行签到打卡。(3)修改密码:员工可进入界面,进行密码的修改。(4)提交申请:员工登录成功后,可提交请假申请,固定资产申请。(5)查看消息:员工进入界面可查看领导发布的会议通知,查看申请情况。工作台功能:(1)发布会议通知:用户登录成功后,可进行申请会议,并将会议信息进行发布。
- 基于Java (spring-boot)的电子商城管理系统
源码好又多
论文java毕设java电子商城管理系统springboot毕设论文vue商城
一、项目介绍(1)商品管理模块:实现了商品的基本信息录入、图片上传、状态管理等相关功能。(2)商品分类模块:实现了分类的增删改查、分类层级管理、商品分类的关联等功能。(3)订单管理模块:实现了订单的查询、创建、删除、退货等功能。(4)用户管理模块:实现了用户的注册、登录、密码找回、个人信息修改和查询等功能。(5)购物车管理模块:实现了添加商品、删除商品、调整数量、结算等功能。二、作品包含三、项目技
- 基于Java (spring-boot)的宿舍管理系统
源码好又多
java毕设论文javaspringboot毕设vue论文宿舍管理系统宿舍
一、项目介绍基于Java(spring-boot)的宿舍管理系统功能:登录界面、宿舍管理、学生管理、班级管理、宿舍楼管理、维修记录、晚归记录、请假记录、用户管理、角色管理、菜单管理、日志管理、我收到的、退宿审核,等等等二、作品包含三、项目技术后端语言:Java项目架构:B/S架构数据库:MySQL前端技术:Vue后端技术:SpringBoot四、运行环境JDK版本:1.8操作系统:Window、M
- spring boot(2.4.x 开始)和spring cloud项目中配置文件application和bootstrap加载顺序
zlpzlpzyd
springjavaspringbootspringcloudspringjava
在前面的文章基础上https://blog.csdn.net/zlpzlpzyd/article/details/136060312springboot2.4.x版本之前通过ConfigFileApplicationListener加载配置https://github.com/spring-projects/spring-boot/blob/v2.3.12.RELEASE/spring-boot-
- 蚂蚁金服Java研发4轮面试,画重点这些问题圈起来
leeiq
蚂蚁金服Java研发4轮面试,画重点这些问题圈起来JAVA周某人9天前前言:金九银十跳槽的程序员也多了起来,但是有很多人也表示迷茫困惑,担心自己面试不上,今天干货献上.每年的第二节黄金时间段金九银十快要结束了,作为一个开发人员,你是不是也在紧张的准备着面试,想让自己的薪资更上一层楼呢。一面(基础面:约五十分钟)自我介绍,主要讲讲做了什么和擅长什么springmvc和spring-boot区别@Au
- Spring Boot 自动配置原理
baerwang
自动配置原理#配置文件能配置的属性参照:[https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/common-application-properties.html](https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/commo
- springBoot对SpringMVC所作的配置 Spring MVC Auto-configuration
@Autowire
springbootspringboot
1InclusionofContentNegotiatingViewResolverandBeanNameViewResolverbeans视图解析器https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/boot-features-developing-web-applications.htmlSpringBoot
- 基于Java (spring-boot)的实验室管理系统
源码好优多
java毕设论文javaspringboot实验室管理系统毕设论文vue
一、项目介绍普通用户:1.登录,注册2.查看实验室列表信息3.实验室预约4.查看预约进度并取消5.查看公告6.订阅课程7.实验室报修8.修改个人信息教师登录:1.查看并审核预约申请2.查看已审核预约并导出到excel3.实验室设备管理,报修4.查看实验室统计情况5.略管理员登录:1.用户管理、设备管理、实验室管理、耗材管理,包括增删查改,账户禁用等功能。2.查看并审核预约3.查看报修信息4.发布公
- 基于Java (spring-boot)的交通管理系统
源码好优多
java毕设论文java交通管理系统springboot毕设论文vue
一、项目介绍基于Java(spring-boot)的交通管理系统功能:注册登录、个人信息管理、驾驶证业务类型管理、机动车业务类型管理、新闻类型管理、违法处理业务类型管理、驾驶证业务管理、机动车业务管理、新闻管理、违法处理业务管理、用户管理。二、作品包含三、项目技术后端语言:Java项目架构:ssm架构数据库:MySQL前端技术:Vue后端技术:SpringBoot四、运行环境JDK版本:1.8操作
- spring - security 权限控制
staHuri
JAVA
spring-security文档&源码官方文档本文源码依赖本文在spring-boot中运行,org.springframework.bootspring-boot-starter-security简单案例MVCconfigpackagecom.huifer.security.config;importorg.springframework.context.annotation.Configur
- 04.spring-boot与web开发
马晓钧
spring-boot与web开发创建应用,选择想要创建的场景在配置文件中指定少量配置编写业务代码-xxxAutoConfigration给容器中配置主件-xxxProperties封装配置的内容静态资源映射规则WebMvcAutoConfiguration类publicvoidaddResourceHandlers(ResourceHandlerRegistryregistry){if(!thi
- Spring-mvc、Spring-boot中如何在调用同类方法时触发AOP
pp_lan
springspringmvcjava
1.问题描述Spring-mvc和Spring-boot中aop可以实现代理的功能,我们可以借此实现事务和日志记录或者限流等多种操作。但是,如果你在一个方法中调用其同类下的其他方法的时候不会触发AOP。本文主要说明其原因及解决办法和实现原理。2.原因AIOP的本质是,我们获取代理对象,该对象执行方法的时候,我们对其进行增强操作。例如:下图示例1中bicycle对象执行drive方法的时候,我们对其
- 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独立出来,数据持