- AI人工智能机器学习之监督线性模型
rockfeng0
人工智能机器学习sklearn
1、概要 本篇学习AI人工智能机器监督学习框架下的线性模型,以LinearRegression线性回归和LogisticRegression逻辑回归为示例,从代码层面测试和讲述监督学习中的线性模型。2、监督学习之线性模型-简介监督学习和线性模型是的两个重要概念。监督学习是一种机器学习任务,其中模型在已标记的数据集上进行训练。线性模型是一类通过线性组合输入特征来进行预测的模型。线性模型的基本形式可
- Qt中button与buttons的区别
弓小羽
qt系统架构开发语言
Qt中buttons()和button()的区别,官方解析如下:Qt::MouseButtonQMouseEvent::button()const返回产生事件的按钮Qt::MouseButtonQMouseEvent::buttons()const返回产生事件的按钮状态,函数返回当前按下的所有按钮,按钮状态可以是Qt::LeftButton,Qt::RightButton,Qt::MidButto
- 【算法 | Python】高斯消元法
weixin_43964993
算法python算法pythonnumpy
程序来源:GaussianEliminationArithmeticAnalysis原理说明源代码代码说明原理说明高斯消元法(GaussElimination)【超详解&模板】高斯消元法-百度百科源代码"""Gaussianeliminationmethodforsolvingasystemoflinearequations.Gaussianelimination-https://en.wikip
- 数据结构与算法设计-作业6-二分搜索相对于线性搜索的性能优势演示&DFS、BFS 和 A* 搜索算法在迷宫搜索中的表现对比
superace7911
数据结构与算法设计深度优先宽度优先算法
T1请创建包含100万个数的列表,用本章定义的linear_contains()和binary_contains()函数分别在该列表中查找多个数并计时,演示二分搜索相对于线性搜索的性能优势。线性搜索按照原始数据结构的顺序遍历空间中的每个元素,直到找到搜索内容或到达数据结构的末尾;定义如下线性搜索函数,它将遍历数据结构中的每个元素,并检查每个元素是否与所查找的数据相等:deflinear_conta
- 蓝桥杯学习笔记04-滑动窗口不定长(最短/最小)
Ares^o^
学习笔记
题目来源分享丨【题单】滑动窗口与双指针(定长/不定长/单序列/双序列/三指针/分组循环)-力扣(LeetCode)209.长度最小的子数组-力扣(LeetCode)题目要求大于等于classSolution{public:intminSubArrayLen(inttarget,vector&nums){intn=nums.size();intleft=0,right=0;intminiLen=n+
- C++实现的二叉树创建和遍历,超入门邻家小女也懂了_c++二叉树的建立与遍历
2401_84185441
程序员c++开发语言
structTreeNode{intval;TreeNode*left;TreeNode*right;TreeNode(intx):val(x),left(NULL),right(NULL){}};在C/C++语言中,经常使用NULL来表示空指针。NULL在头文件里的定义:#ifndefNULL#ifdef__cplusplus#defineNULL0#else#defineNULL((void*
- 国产编辑器EverEdit - 实用小技巧,不用打开计算器,直接将选中的数字进行求和
编辑器爱好者
妙用编辑器编辑器开发语言EverEditEmEditorNotepad
1选区求和1.1应用场景 用户可能存在对文档中的数字有求和需求,比如在EverEdit中列出最近的花销,需要统计总支出。1.2使用方法在当前文档中选中需要统计的数字。选择菜单工具->选区求和,如下图所示:求和的数字会显示在弹出窗口的编辑框中,方便用户复制粘贴。说明:以上数据由纯属杜撰,请不要计较真实性。文档作者声明:本文档仅用于学习交流,未经作者许可,不得将本文档用于其他目的。Copyright
- vue3 ts admin动态tab
Tirzano
vue.jsjavascript前端
Footer.admin{margin:0;padding:0;}.auto-height{height:calc(100vh-15px);}.el-menu--horizontal>.el-menu-item:nth-child(1){margin-right:auto;}.el-menu--horizontal.el-menu{border-bottom:none;}.el-main{marg
- ue4 碰撞销毁actor Destroy
踏着阳光
ue4
1新建c++类MyActor2MyActor.h//FilloutyourcopyrightnoticeintheDescriptionpageofProjectSettings.#pragmaonce#include"CoreMinimal.h"#include"GameFramework/Actor.h"#include"MyActor.generated.h"UCLASS()classROT
- SCOT 500M Operations Analytics: Simulation
后端
FinalExamOperationsAnalytics:SimulationSCOT500M,Spring2025IndividualFinalExam:DueFriday,February28,11p.m.OnCanvasAfewguidelinesfortheexam:•Thisassignmentistobedoneentirelyindividually.•Youmaydiscussit
- 数据结构与算法再探(七)查找-排序
刀客123
数据结构与算法数据结构
查找一、二分查找二分查找是一种高效的查找算法,适用于在已排序的数组或列表中查找特定元素。它通过将搜索范围逐步减半来快速定位目标元素。理解二分查找的“不变量”和选择左开右闭区间的方式是掌握这个算法的关键。二分查找关键点不变量在二分查找中,不变量是指在每一步迭代中保持不变的条件。对于二分查找来说,不变量通常是:目标值在当前搜索范围内:在每次迭代中目标值始终位于left和right指针之间。如在查找一个
- Browser-Use:AI如何“操控”浏览器进行自动化测试?
东汉末年出bug
人工智能自动化测试工具
Browser-Use简介Browser-Use是一个开源的Python库,旨在简化AI代理与浏览器之间的交互。通过集成Playwright等浏览器自动化工具,Browser-Use允许开发者使用任何支持LangChain的大型语言模型(LLM),如GPT-4、Claude等,来自动化浏览网页、提取信息、模拟用户操作等。这不仅极大地提高了网页数据抓取的效率,还为开发者提供了一个灵活、可扩展的框架,
- Shell脚本传递参数的4种方式
yan_baby_liu
Shelllinux
#脚本内容script.sh【使用位置参数】#!/bin/bashif[$1-gt18];thenecho"Youareanadult."elseecho"Youarenotanadultyet."fi#脚本调用./script.sh19#for语句foriin12345;doecho$idone#while语句【使用了变量】i=0while[$i-lt10];doecho$ii=$((i+1))
- Bright Master 多屏幕亮度调节工具
Ylsh3702
githubsqlwindows
BrightMaster亲爱的朋友们,今天要为大家介绍的也是一款多屏幕亮度调节工具。与前面提到的MonitorBrightnessAdjuster相比,这款工具有一个非常贴心的设计——它可以在系统任务栏实时显示当前屏幕的亮度状态。这样一来,您无需打开软件界面,就能随时掌握屏幕亮度的变化。不过,它的默认图标颜色是白色,可能会不太显眼。比如阿枫,就将图标颜色改成了红色,这样看起来就更加醒目了。您看,这
- python-leetcode-二叉树的中序遍历
Joyner2018
leetcode算法职场和发展
94.二叉树的中序遍历-力扣(LeetCode)方法1:递归实现#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclassSolution:definorderTraversa
- Future和FutureTask实现类详解以及使用。
一个儒雅随和的男子
多线程java
前言Future是Java并发编程中的一个接口,用来表示异步计算的结果。它允许我们提交一个任务,然后之后再去获取结果,或者在结果可用时处理它。我们需要考虑Future的主要方法。根据文档,Future接口有几个关键方法:isDone()检查计算是否完成,get()获取结果(会阻塞直到完成),cancel()尝试取消任务,isCancelled()判断是否被取消。这些方法的作用和用法需要详细说明。然
- (done) 研究 xv6-lab-2023 网络这一节的实验代码(e1000初始化过程)
shimly123456
MIT6.S081学习笔记操作系统
网页:https://pdos.csail.mit.edu/6.S081/2023/labs/net.html任务:分析清楚e1000网卡的初始化过程(完成)PCI全称是PeripheralComponentInterconnect,外围部件互联,相关可以看这里【(done)什么是PCI?PeripheralComponentInterconnect】在xv6源码main.c里可以看到pci_in
- 《期权、期货及其他衍生产品》读书笔记(第五章:确定远期和期货价格)
PerpetualLearner
#期权量化期权期货衍生品远期价格期货价格
5.1投资资产与消费资产投资资产(InvestmentAsset):至少有一些交易员仅仅是为了投资目的而持有的资产。可以从无套利假设出发,由即期价格与其他市场变量得出远期价格和期货价格。消费资产(Consumption):持有目的主要是消费而不是投资。无法推演价格。5.2卖空交易另类报升(AlternativeUptick,2010.2):当某一股票价格在某一天的跌幅超过10%时,在这一天与下一天
- 【Day2 LeetCode】滑动窗口、矩阵模拟、前缀和
银河梦想家
leetcode算法
一、滑动窗口1、滑动窗口移动模板 对于滑动窗口算法,在解决一些子数组、子字符串问题比较常用,能够有效降低时间复杂度。该算法的关键是不断滑动,每次滑动都要维护好(更新)窗口内的状态,根据条件更新所需答案。下面给出常用的滑动窗口的伪代码模板,以字符串为例intleft=0,right=0;while(right&nums){intleft=0,right=0;//滑动窗口左、右端点ints=0,Len
- element-ui+vue2实现粘贴上传
不做大多数
个人学习前端笔记
element-ui+vue2实现粘贴上传.img-upload{position:relative;display:inline-block;margin-right:9px;}.image{width:100px;height:100px;margin-right:9px;}.image:last-child{margin-right:0;}.img-upload.el-upload--pic
- 《Head First设计模式》读书笔记 —— 单件模式
Vcats
《HeadFirst设计模式》读书笔记设计模式单例模式
文章目录为什么需要单件模式单件模式典型实现剖析定义单件模式本节用例多线程带来的问题解决问题优化Q&A总结《HeadFirst设计模式》读书笔记相关代码:Vks-Feng/HeadFirstDesignPatternNotes:HeadFirst设计模式读书笔记及相关代码用来创建独一无二的,只能有一个实例的对象的入场券为什么需要单件模式有些对象只能有一个实例线程池、缓存、对话框、设备的驱动程序的对象
- 【转载】2020融云:基于WebRTC的低延迟视频直播
等风来不如迎风去
WebRTC入门与实战webrtc音视频网络
原文直接访问本文是读书笔记。基于WebRTC的低延迟视频直播需要学习rtp包的缓存设计,于是找到了这一篇文章rtp包缓存如何适应直播需求?直播与实时通信的区别流量更少:RTMP或者HLS主要基于TCP传输,WebRTC是基于UDP的传输,**UDP协议的头小。**TCP为了保证传输质量,因此会产生很多ACK,在网络不好的情况下会产生很多重传包,而WebRTC传输是基于RTP和RTCP,重传策略是基
- docker搭建FastDFS文件系统(最详细版)
刘明同学呀
文件上传dockerdockerfastdfs
一起探讨学习每天给大家提供技术干货博主技术笔记https://notes.xiyankt.com博主开源微服架构前后端分离技术博客项目源码地址,欢迎各位starhttps://gitee.com/bright-boy/xiyan-blogdocker安装FastDFS(最详细版)1.拉取镜像dockerpulldelron/fastdfs2.使用docker镜像构建tracker容器(跟踪服务器,
- 《DAMA数据管理知识体系指南》第五章 数据建模和设计读书笔记总结
数据大包哥
#数据治理大数据
《DAMA数据管理知识体系指南》第五章数据建模和设计读书笔记总结在《DAMA数据管理知识体系指南》中,第五章围绕数据建模和设计展开深入探讨,数据建模和设计作为数据管理的关键环节,对组织有效理解、管理和利用数据起着基础性作用,为企业实现数据驱动的决策和运营提供了重要支撑。一、数据建模和设计的基础概念1.1定义与重要性数据建模是发现、分析和确定数据需求,并采用数据模型的精确形式表示和传递这些需求的过程
- linux ldd依赖拷贝
JsenLong
linux服务器java
ldd.sh#!/bin/bashLibDir=$PWD"/lib"Target=$1lib_array=($(ldd$Target|grep-o"/.*"|grep-o"/.*/[^[:space:]]*"))$(mkdir$LibDir)forVariablein${lib_array[@]}docp"$Variable"$LibDirdone#!/bin/shappname=`basenam
- 前端面试题四
前端
以下是一些前端面试题:一、HTML/CSS部分如何实现一个元素的背景颜色渐变效果,并且在不同浏览器中保持兼容性?答案:对于现代浏览器,可以使用标准的CSS渐变语法。线性渐变示例(从左到右,红色到蓝色):background:linear-gradient(toright,red,blue);径向渐变示例(中心向四周,黄色到绿色):background:radial-gradient(circle,
- 【机器学习基础】第六课:线性回归
x-jeff
机器学习基础机器学习线性回归人工智能
【机器学习基础】系列博客为参考周志华老师的《机器学习》一书,自己所做的读书笔记。1.线性模型基本形式给定由ddd个属性描述的示例x=(x1;x2;...;xd)\mathbfx=(x_1;x_2;...;x_d)x=(x1;x2;...;xd),那么线性模型的基本形式可写为:f(x)=w1x1+w2x2+w3x3+...+wdxd+bf(\mathbfx)=w_1x_1+w_2x_2+w_3x_3
- CSS 设置hr样式
kidding723
css前端javascript
1.基本颜色hr{border:0;height:1px;background-color:#333;margin:20px0;}2.改变高度hr{border:0;height:2px;background:linear-gradient(toright,#ff0000,#00ff00,#0000ff);/*渐变色*/margin:20px0;}hr{border:0;height:3px;/*
- 让浏览器AI起来:基于大模型Agent的浏览器自动化工具
深度学习机器
优质项目大语言模型计算机杂谈人工智能自动化语言模型开源
最近有个非常火的项目,利用大模型Agent驱动浏览器完成各种操作,如网页搜索、爬虫分析、机票酒店预定、股票监控等,号称全面替代所有在浏览器上的操作,试用方式还是比较简单的,以下将进行简单介绍。快速开始通过pip安装:pipinstallbrowser-use安装web自动化框架:playwrightinstallPlaywright微软开源的一个浏览器自动化框架,主要用于浏览器自动化执行web测试
- 自存放忘 angular 动态加载子节点
2301_78916954
angular.js前端javascript
html{{treeControl.isExpanded(node)?"expand_more":"chevron_right"}}tsimport{Component,OnInit,Injectable}from'@angular/core';import{CollectionViewer,SelectionChange,DataSource,}from'@angular/cdk/collect
- 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独立出来,数据持