- SpringBoot 启动报错 Sactive: @spring.profiles.active@
JefferyAnd
springspringboot后端
org.yaml.snakeyaml.scanner.ScannerException:whilescanningforthenexttokenfoundcharacter'@'thatcannotstartanytoken.(Donotuse@forindentation)in'reader',line25,column13:active:@spring.profiles.active@^解决办
- 社团周报系统可行性研究-web后端框架对比-springboot,django,gin
拉玛干
数据库springpythongolang
对于目前市面上web后端框架,我主要了解到的就是springboot,djangogin等,分别对应javapythongo三种语言,目前我比较熟悉的就是springboot目录springboot框架简介优点缺点适用场景与需求匹配度django框架简介优点缺点适应场景与需求匹配度gin框架简介优点缺点适用场景与需求匹配度springboot框架简介Spring是一款开源的轻量级java开发框架,
- 如何修改并重新封装initrd.img
xxmailk
linuxlinux
如何查看initrd.img文件?initrd.img是gzip格式的文件.先把initrd.img重命名为initrd.gz.#cp/tftpboot/el5/initrd.img.#lscdrominitrd.img#mvinitrd.imginitrd.gzUnziptheinitrd.gzfileasshownbelow.#gunzipinitrd.gz#lscdrominitrd解压缩i
- Java连接Zookeeper,创建监听通知机制
永旗狍子
SpringLinuxzookeeperjava
目录一.Java连接Zookeeper1.创建Springboot工程,导入依赖1.1排除log4j和桥接包2.配置application.yml3.编写连接Zookeeper的工具类4.监听通知机制4.1在zookeeper容器内部新增节点一.Java连接Zookeeper1.创建Springboot工程,导入依赖org.springframework.bootspring-boot-start
- springboot+es批量新增、批量修改、根据内部id批量查询
程序小增
elasticsearchspringbootjava
pom.xml配置org.elasticsearch.clientelasticsearch-rest-high-level-client7.8.0elasticsearchorg.elasticsearchelasticsearch-rest-clientorg.elasticsearch.clientorg.springframework.bootspring-boot-starter-dat
- Ollama在AutoDL部署,CPU服务器做代理,实践中
张3蜂
#搜索引擎ES-Solr人工智能
##我有两台服务器,一台是GPU服务器,另一台是CPU服务器;##我在GPU服务器上安装了Ollama,然后通过命令映射端口到CPU服务器:ssh-CNg-L0.0.0.0:11434:127.0.0.1:
[email protected]##映射成功了在Cpu服务器通过curlhttp://127.0.0.1:11434可以看到响应内容:O
- Git使用指南 - 从入坑到入坟(bushi)
铸剑zj
生产力工具gitgithub编辑器
Git完全使用指南-从入门到入坟Git完全使用指南Git完全使用指南-从入门到入坟第一部分:Git入门基础1.Git简介什么是Git为什么要使用GitGit与SVN的区别Git工作区域Git文件状态2.环境搭建Windows系统安装Git基础配置配置SSH密钥Git配置级别常用配置项3.基本命令创建仓库文件操作提交更改状态查看差异比较历史记录撤销修改第二部分:Git协作开发4.分支管理分支基础概念
- 在 CentOS 上解压 JAR 包的完整指南
码农阿豪@新空间
面试centosjarlinux
个人名片作者简介:java领域优质创作者个人主页:码农阿豪工作室:新空间代码工作室(提供各种软件服务)个人邮箱:[
[email protected]]个人微信:15279484656个人导航网站:www.forff.top座右铭:总有人要赢。为什么不能是我呢?专栏导航:码农阿豪系列专栏导航面试专栏:收集了java相关高频面试题,面试实战总结️Spring5系列专栏:整理了Spring5重要知识点与
- 如何防止 SSH 会话自动断开
中國移动丶移不动
ssh运维linuxjava后端
如何防止SSH会话自动断开在远程访问服务器时,SSH会话有时会因为长时间没有操作而自动断开。对于需要持续执行任务的场景,这种断开可能会带来不必要的困扰。幸运的是,SSH配置提供了几种方法来防止连接超时断开。本文将介绍如何通过客户端和服务器端的配置,确保SSH会话在长时间不活动的情况下保持活跃。1.客户端配置首先,我们可以在客户端配置文件中设置保持活动的选项。这将让SSH客户端定期向服务器发送"心跳
- swagger-01-swagger介绍
褚师子书
swaggerjavaspringbootrestful
swagger1.学习目标:了解前后端分离了解Swagger的作用和概念在SpringBoot中集成Swagger1.1swagger由来前后端分离,当前流行的开发模式Vue+SpringBoot早先的后端时代:前端只用管理静态页面;后端将html用模板引擎JSP进行开发前后端分离式时代:后端:后端控制层,服务层,数据访问层【后端团队】前端:前端控制层,视图层【前端团队】mock后端数据json,
- 基于websocket搭建聊天室
不懂代码的孩子
SpringBootlcVuewebsocket网络协议网络
基于websocket搭建聊天室1.后端配置1.依赖一个web一个websocketorg.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-websocket2.configimportorg.springframework.context.annotation.Bean;
- springboot生成二维码在word文档,并下载到本地
尼古拉骚
springboot+IO流javaspringjavascript
springboot生成二维码在word文档,并下载到本地分为两部分演示,第一部分简单的生成word文档并保存到本地;第二部分生成二维码在word文档,并保存到本地。第一部分首先引入word的依赖资源com.lowagieitext2.1.7com.lowagieitext-rtf2.1.7com.itextpdfitext-asian5.2.0创建Word,并且写入IO流中,前端获取文件流才能保
- java.lang.NoClassDefFoundError: com/google/gson/Strictness
顽皮小书生
异常问题解决java
Springboot(版本3.4.0)项目引入Gson(版本2.10.1)包,启动一直报错报错内容java.lang.NoClassDefFoundError:com/google/gson/Strictnessatjava.base/java.lang.Class.getDeclaredFields0(NativeMethod)atjava.base/java.lang.Class.privat
- 算力集群+Pycharm+SSH连接经验(自用)
代码的建筑师
学习记录笔记服务器pycharmssh算力集群
创建实例(ssh)->Xshell8(公私密钥)->远程服务器(添加公钥匙,获取公私密钥的内容)->j将私钥内容保存为与公钥一样文件名、文件格式不同、保存路径相同(帮助在pycharm上进行ssh连接)->然后就可以在Xshell8中输入sshn1,然后就可以创建自己的虚拟环境,这个是对Xshell8来使用的如果要使用pycharm来使用,直接可以跳过最后一步,直接在pycharm中进行设置即可。
- 【微服务】SpringBoot 整合Redis Stack 构建本地向量数据库相似性查询
小码农叔叔
AI大模型实战与应用springboot入门到精通向量数据库redisstackjava使用向量数据库
目录一、前言二、向量数据库介绍2.1什么是向量数据库2.2向量数据库特点2.3向量数据库使用场景三、常用的向量数据库解决方案3.1Milvus3.1.1Milvus是什么3.1.2Milvus主要特点3.2Faiss3.2.1Faiss是什么3.2.2Faiss主要特点3.3Pinecone3.3.1Pinecone是什么3.3.2Pinecone主要特点3.4Weaviate3.4.1Weavi
- ShardingSphere 和 Spring 的动态数据源切换机制的对比以及原理
龙大.
系统设计SpringMysqlspringjava数据库
ShardingSphere与Spring动态数据源切换机制的对比及原理一、核心定位对比维度ShardingSphereSpring动态数据源(如AbstractRoutingDataSource)定位分布式数据库中间件轻量级多数据源路由工具核心目标分库分表、读写分离、分布式事务多数据源动态切换适用场景大数据量、高并发、复杂分片需求简单多数据源隔离(如多租户、环境隔离)实现层级JDBC驱动层(拦截
- 深入探索 Linux 权限维持之 SSH 后门与公私钥技术
阿贾克斯的黎明
网络安全linuxssh运维
目录深入探索Linux权限维持之SSH后门与公私钥技术SSH后门:开启隐藏访问通道利用软链接创建SSH后门SSHServerRapper方法公私钥:实现免密登录与权限维持生成与部署公私钥隐藏公私钥操作痕迹其他相关技巧与注意事项SSH键盘记录器SSH隐身登录总结在Linux系统安全领域,权限维持是攻击者在获取初始访问权限后,为长期控制目标系统所采用的关键技术手段。其中,SSH后门的建立以及公私钥的巧
- 实际springboot项目中如何注意jvm调优
种豆走天下
springbootjvm后端
在SpringBoot项目中进行JVM调优是一个重要的任务,可以帮助提高应用程序的性能和稳定性。JVM调优可以涵盖内存管理、垃圾回收、线程管理以及其他JVM配置等多个方面。以下是一些常见的JVM调优策略,适用于SpringBoot应用:1.内存配置JVM的内存管理是影响SpringBoot应用性能的关键因素之一。你可以通过调整堆内存和非堆内存的大小来优化应用的性能。a.堆内存大小(-Xms和-Xm
- springmvc 国际化实例
卿乌
javajavastrutsspring
springmvc国际化实例springMVC.xml配置文件设置首先在配置文件中声明我们的国际化的配置文件,从那个文件中取只mvc:interceptors>然后配置我们的拦截器请求jsp页面关键内容用到我们的jstl来取值然后就可以用显示相关内容了,language.cn与前面资源文件定义的内容相对应然后直接点击跳转页面
- SpringMVC 国际化
呢喃北上
SpringSpringMVCSpringMVC国际化
SpringMVC的国际化是建立在Java国际化的基础上的,其一样是通过提供不同国家的语言环境的消息资源。通过ResourceBundle加载Locale对应的资源文件。再取得该资源文件中指定Key对应的消息。步骤:1.给系统加载国际化资源1.在页面上输出国际化消息。需要使用SpringMVC的标签库。2.输出国际化。SpringMVC输出国际化消息有两种方式。2.在Controller的处理方法
- Spring提供的拓展点
小胖子许愿
Springspringpythonjava
Bean生命周期提供的拓展点BeanFactoryPostProcessor-处理所有Bean前,对BeanFactory预处理,也可以注册自定义BeanBeanDefinitionRegistryPostProcessor-注册自定义BeanBeanPostProcessor-Bean初始化前后,对Bean进行加工InitializingBean-所有Bean创建完成所有属性注入完成之后执行Di
- Json工具(一)- Jackson
小胖子许愿
Jsonjsonjavaspring
1、Jackson简介Jackson是常用的高效安全的Json序列化和反序列化框架。SpringMVC默认的json解析器是Jackson。Jackson有三个核心模块。jackson-core:提供Jackson处理JSON数据的核心功能,如流式解析和生成JSON,提供基本的API。jackson-annotations:提供注解编程相关的核心注解。jackson-databind:提供数据绑定
- SpringMVC的国际化
小胖子许愿
Springspring
SpringMVC的国际化WebMVC的核心LocaleResolver,MessageSource。WebMvcAutoConfiguration是SpringBoot中的Web方面的自动配置类。在MVC的配置类里面,如果没有自定义的LocaleResolver,那么就会使用默认的。并且自定义的名称是“localeResolver”,才不会加载默认的。默认使用的是AcceptHeaderLoca
- Spring Web MVC(1)
我爱Jack
springmvc后端java
一、SpringMVC是什么?核心角色:SpringMVC是⼀套基于Servlet规范的Web开发框架,像餐厅的标准化管理流程,规定了每个环节的职责。用户发起请求(点餐)时,SpringMVC协调各组件处理并响应结果(上菜)。二、MVC模式深度解析类比餐厅模型:角色职责对应Spring组件顾客(用户)发起请求(点菜)浏览器用户服务员(View)展示菜单并上菜(显示结果)JSP/Thymeleaf模
- Java中如何实现线程通信?
冰冷式炎热
java
•在Java中,线程通信可以通过以下几种方式实现:•使用wait()、notify()和notifyAll()•wait():使当前线程进入等待状态,直到其他线程调用notify()或notifyAll()。•notify():唤醒在该对象监视器上等待的单个线程。•notifyAll():唤醒在该对象监视器上等待的所有线程。•示例代码:classSharedResource{privateintd
- Spring Boot整合Spring Security与JWT实现无状态认证:实战指南
老哥不老
笔记springspringboot数据库
SpringBoot整合SpringSecurity与JWT实现无状态认证:实战指南一、JWT认证原理简介JSONWebToken(JWT)是一种开放标准(RFC7519),由三部分组成:Header(头部):声明令牌类型和签名算法Payload(负载):携带用户身份信息Signature(签名):防篡改验证认证流程:客户端提交登录凭证服务端验证通过后生成JWT客户端后续请求携带JWT服务端验证J
- 关于SpringCloud整合RabbitMQ的应用详解(ack,限流,幂等)
何须低眉
javarabbitmq
安装RabbitMQ安装Eralng与RabbitMQ导包org.springframework.cloudspring-cloud-starter-stream-rabbit生产者配置关于spring.rabbitmq.template.mandatory与spring.rabbitmq.publisher-returnsspring.rabbitmq.template.mandatory属性的
- Spring AI简单使用
NaughtyBo
记录spring
https://github.com/chatanywhere/GPT_API_freeAI框架之SpringAI与SpringCloudAlibabaAI使用讲解超级详细SpringAI+ChatGPT(java接入OpenAI大模型)SpringCloudAlibabaAI速通版!保姆级教程!Java大模型应用开发,微服务整合DeepSeek,LangChain大型语言模型LLM实战-尚硅谷文
- Spring Boot 集成海康SDK-Java:快速实现视频监控系统
伊勇发Drake
SpringBoot集成海康SDK-Java:快速实现视频监控系统【下载地址】SpringBoot集成海康SDK-JavaSpringBoot集成海康SDK-Java项目地址:https://gitcode.com/open-source-toolkit/1176a项目介绍在现代化的视频监控系统中,海康威视的设备广泛应用于各种场景。为了方便开发者快速集成海康SDK-Java到SpringBoot项
- Spring Boot 消息队列(以RabbitMQ为例)
珠峰日记
java-rabbitmqspringbootrabbitmq
文章目录RabbitMQ简介与安装1.RabbitMQ简介2.RabbitMQ安装SpringBoot集成RabbitMQ1.创建SpringBoot项目2.配置RabbitMQ3.定义消息队列和交换机4.发送消息5.接收消息6.测试消息发送和接收RabbitMQ简介与安装1.RabbitMQ简介RabbitMQ是一个开源的消息代理和队列服务器,基于AMQP(高级消息队列协议)实现。它具有以下特点
- 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独立出来,数据持