- 基于Python的Google Scholar学术论文爬虫实战:最新技术与完整代码解析
Python爬虫项目
2025年爬虫实战项目python爬虫开发语言学习scrapy
摘要本文详细介绍如何使用Python构建一个高效的GoogleScholar爬虫系统,包括代理设置、反反爬策略、数据解析与存储等核心技术。文章涵盖最新Python爬虫技术栈(如Playwright、异步IO等),提供完整可运行的代码示例,并讨论学术爬虫的伦理与法律问题。通过本教程,读者将掌握从GoogleScholar批量获取学术论文信息的高级爬虫技术。关键词:Python爬虫、GoogleSch
- Python爬虫实战:基于最新技术的定时签到系统开发全解析
Python爬虫项目
2025年爬虫实战项目python爬虫开发语言人工智能自动化知识图谱
摘要本文详细介绍了如何使用Python开发一个功能完善的定时签到爬虫系统。文章从爬虫基础知识讲起,逐步深入到高级技巧,包括异步请求处理、浏览器自动化、验证码破解、分布式架构等最新技术。我们将通过一个完整的定时签到项目案例,展示如何构建一个稳定、高效且具有良好扩展性的爬虫系统。文中提供了大量可运行的代码示例,涵盖requests、aiohttp、selenium、playwright等多种技术方案,
- 测试框架|Playwright Fixture夹具有效利用的建议指南
随着Web应用程序变得越来越复杂,维护干净、高效且可扩展的测试代码变得越来越具有挑战性。Playwright是一个强大的端到端测试框架,它通过其夹具系统(fixturesystem)提供了解决方案。本指南将引导大家了解利用Playwrightfixtures夹具创建强大且可维护的测试架构的高级技术。什么是PlaywrightFixture?Playwright中的Fixtures可让你在测试之间共
- TestCafe ➜ Playwright fixture 架构迁移指南
Thomas Kant
自动化测试playwrighttestcafetypescript测试架构
亲爱的技术爱好者们,热烈欢迎来到Kant2048的博客!我是ThomasKant,很开心能在CSDN上与你们相遇~本博客的精华专栏:【自动化测试】【测试经验】【人工智能】【Python】
- SDL用法:"PiratesHo!"全集
CHALLEN537
SDL用法:"PiratesHo!"的诞生SamLantinga,首席程序员,LokiEntertainmentSoftwareLaurenMacDonell,首席程序员,LokiEntertainmentSoftware2000年2月01日SimpleDirectMediaLayer(SDL)的作者SamLantinga和LaurenMacDonell发布了这个系列的第一篇文章,在这些文章中,他
- 【读书笔记】「等到 Linux 6.17 就分手」:Bcachefs 背后的技术与流程之争
CodeWithMe
读书笔记linuxlinux服务器运维
「等到Linux6.17就分手」:Bcachefs背后的技术与流程之争“我真的不太愿意继续参与。而我们唯一真正达成一致的,大概就是——‘我们已经结束了’。”——LinusTorvalds最近,Linux内核社区再次爆发激烈争论,主角是近年备受关注的新一代文件系统——Bcachefs,以及它的作者KentOverstreet与内核“守门人”LinusTorvalds之间的冲突。这场争议的焦点,并不在
- 【Vue3+element plus 】el-table滚动条、固定列fixed、表头超出内容隐藏并显示省略号_el-table-column超出隐藏
font-size:16px;}//固定列表身tbody.el-table-fixed-column–right{background-color:#072d48!important;}**原图:固定列样式与自定义的el-table整体样式不一致** **效果图
- 中药细粒度图像分类
小lo想吃棒棒糖
分类数据挖掘人工智能
在细粒度图像分类(FGVC)领域,BilinearCNN(BCNN)模型因其能够捕捉图像中的局部特征交互而受到广泛关注。该模型通过双线性池化操作将两个不同CNN提取的特征进行外积运算,从而获得更加丰富的特征表示,这对于区分外观相似但属于不同子类别的物体尤其有效。然而,BCNN通常计算成本较高,限制了其在移动设备或资源受限环境下的应用。为了实现轻量化并保持高精度的细粒度分类,可以考虑将MobileN
- 【WiFi监控事件代码】
咖丨喱
网络
/**Copyright2008,TheAndroidOpenSourceProject**LicensedundertheApacheLicense,Version2.0(the"License");*youmaynotusethisfileexceptincompliancewiththeLicense.*YoumayobtainacopyoftheLicenseat**http://www.
- 【力扣】61. 旋转链表
Øᐛ
leetcode链表算法
61.旋转链表-力扣(LeetCode)首先确定旋转次数:旋转次数大于链表大小的都要进行求余处理;旋转次数等于链表大小的约等于没转,直接咋来咋return;旋转次数小于链表大小的才是正常情况。然后找到转完的、新链表的头结点。这一点参考寻找倒数第k个结点,很容易理解。最后就是连接旧链表头尾,断开新链表头尾。classSolution{public:ListNode*rotateRight(ListN
- PostgreSQL 16 Administration Cookbook 读书笔记:第1章 First Steps
本章为PostgreSQL简介及如何用psql和pgAdminGUI连接PostgreSQL。1.PostgreSQL16简介开源,低TCO,30多年持续开发,符合SQL:2023标准,高度可扩展,多模。1.1PostgreSQL有何不同?PostgreSQL的功能集与Oracle或SQLServer的相似度比与MySQL更高。PostgreSQL知名用户包括苹果、巴斯夫、基因泰克、Heroku、
- 实现左右盒子由中间按钮拖动
前端J先生
javascript前端开发语言
dragdrop(){constdragBar=document.getElementById('dragBar');constleftBox=document.querySelector('.left');constrightBox=document.querySelector('.right');letisDragging=false;letstartX=0;letleftWidth=0;le
- 【深度学习】【入门】Linear和flatten
学习中的阿陈
深度学习人工智能
1.Linear1.Linear的概念Linear层,通常也被称为全连接层,是神经网络中一种经典且基础的层结构。它的核心特点是每一个神经元都与上一层的所有神经元相连接,这种全连接的方式使得信息能够在层与层之间充分传递和整合2.Linear层的作用Linear层在神经网络中主要承担着特征整合与输出映射的重任。在经过卷积、池化等层提取出数据的局部特征后,Linear层能够将这些分散的局部特征进行整合,
- 第一章 入门
陌路玥
javascript开发语言前端
14.if条件判断语句14.1ifelse语句if(...)语句计算括号里的条件表达式,如果计算结果是true,就会执行对应的代码块。letyear=prompt('请输入年份');if(year==2015)alert('Youareright!');if(…)语句会计算圆括号内的表达式,并将计算结果转换为布尔型。数字0、空字符串""、null、undefined和NaN都会被转换成false。
- INNER JOIN, LEFT JOIN, RIGHT JOIN 的区别
烟沙九洲
数据库数据库mysql
今天我们来一起探索下JOIN,JOIN作为数据库操作的核心概念,用于合并两个或多个表中的数据。一、JOIN(INNERJOIN)1、基本功能:返回两个表中匹配成功的行。2、特点:只保留两表中都满足连接条件的记录;如果某行在一个表中存在但在另一个表中没有匹配项,则该行不会出现在结果中;结果集的行数≤两个原表的行数。3、语法:SELECTcolumnsFROMtable1[INNER]JOINtabl
- WebView 页面在多语言环境中错位怎么办?国际化适配调试全过程
2501_91600747
httpudphttpswebsocket网络安全网络协议tcp/ip
移动应用全球化后,WebView页面往往需要同时适配多种语言和地区设置,包括英语、中文、阿拉伯语等。尤其是当用户使用RTL(Right-to-Left,阿拉伯语、希伯来语等)语言环境时,页面容易出现布局错乱、文字溢出或控件位置异常。这类问题并不会在本地开发环境或英文/中文设置下暴露,常常等到国际用户反馈后才暴露。本文分享一次我们为多语言环境适配进行调试和修复的完整过程。背景:国际化上线后阿拉伯语用
- 数据库左连接、右连接、内连接、全连接
872792silence
数据库mysql
在数据库增删改查中,数据通常不在同一张表中,涉及多表数据查询就需要表之间的连接方式,常用的数据库表连接方式有;1)内连接:innerjoin2)全连接:union3)右连接(右外连接):rightjoin4)左连接(左外连接):leftjoin例子:一、内连接内连接查询的是两张表(多表)的交集sql语句:select*fromAinnerjoinBonA.id=B.id也可以写成:select*f
- Java 实现后端调用 Chromium 浏览器无头模式截图的方案
一只帆記
JavaSpringBootjava开发语言
Java实现后端调用Chromium浏览器无头模式截图的方案1.使用Playwright优点:功能强大、支持多浏览器(Chromium/Firefox/WebKit)、支持异步操作。实现方式:利用Playwright创建无头浏览器实例;使用Java的调度任务框架(如ScheduledExecutorService)定时触发截图逻辑。示例代码结构:ScheduledExecutorServicesc
- 牛客_重建二叉树
重建二叉树https://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6importjava.util.*;/**publicclassTreeNode{*intval=0;*TreeNodeleft=null;*TreeNoderight=null;*publicTreeNode(intval){*this.val=val;*
- 《移动App测试实战》读书笔记
xh15
2017笔试面试修炼软件测试移动测试读书笔记
最近看完了《移动App测试实战》,这里做一点笔记,后面可以重温。功能测试自动化轻量接口自动化测试(JMeter):JMeter是一款开源测试工具,多用于接口测试用例的分层:CGI:通用网关接口,常称为单个业务接口Function:请求组合,包含多个CGI层接口的调用TestCase:单个测试用例TestSuite:多个测试用例的集合UI层的自动化面向Android:AndroidSDK提供的UIA
- 双线性配对
牧天白衣.
论文点
双线性配对(BilinearPairing)是密码学中的一种重要数学工具,尤其在椭圆曲线密码学中应用广泛。以下从定义、性质、原理和应用等方面详细解释:1.基本定义双线性配对是一种映射关系,将两个群(通常是椭圆曲线上的加法群G1G_1G1和G2G_2G2)中的元素映射到第三个群(乘法群GTG_TGT)中,满足以下性质:•双线性性:对任意P,Q∈G1P,Q\inG_1P,Q∈G1和标量a,b∈Za,b
- Linux shell 脚本案例:批量上传npm包至nexus私服
编辑脚本npmimport.sh#!/bin/bash#获取命令行参数whilegetopts":r:u:p:"opt;docase$optinr)REPO_URL="$OPTARG";;u)USERNAME="$OPTARG";;p)PASSWORD="$OPTARG";;esacdone#find并批量上传find.-typef-name'*.tgz'|sed"s|^\./||"|xargs-
- CS:APP读书笔记--信息的表示和处理
你都会上树?
CS:APP笔记程序人生
信息的存储和表示字节端序在内存中按照从最低到最高有效字节的顺序存储对象,这种最低有效字节在最前面的方式,称为小端法。在内存中按照从最高到最低有效字节的顺序存储对象,这种最高有效字节在最前面的方式,称为大端法。例如:对于int32类型变量,其存储地址位于0x100,其十六进制值为0x12345678,其地址范围为ox100~0x103://大端法地址:0x1000x1010x1020x1031234
- day14 二叉树 part02
hwt819
算法leetcode数据结构
226.翻转二叉树classSolution{publicTreeNodeinvertTree(TreeNoderoot){if(root==null){returnroot;}TreeNodetemp=root.left;root.left=root.right;root.right=temp;invertTree(root.left);invertTree(root.right);return
- C++之初识模版
啊吧怪不啊吧
C++c++数据结构开发语言
1.函数模板1.1函数模板概念及格式我们前面学过在面对同一种计算方式不同类型的时候,我们可以使用函数重载,但是这种方式又太过复杂,所以我们今天要学习泛型编程。简单来说,就是告诉编译器自己去推导类型。我们来看下面两段代码,第二个代码只要通过template就可以告诉编译器这个是需要你自己去推导的类型。然后我们就可以把参数的类型填为T。voidSwap(int&left,int&right){intt
- 动手学深度学习3.3线性回归的简洁实现-笔记&练习(PyTorch)
scdifsn
深度学习线性回归笔记pytorch
以下内容为结合李沐老师的课程和教材补充的学习笔记,以及对课后练习的一些思考,自留回顾,也供同学之人交流参考。本节课程地址:线性回归的简洁实现_哔哩哔哩_bilibili本节教材地址:3.3.线性回归的简洁实现—动手学深度学习2.0.0documentation(d2l.ai)本节开源代码:...>d2l-zh>pytorch>chapter_linear-networks>linear-regre
- Python机器学习入门必看!从原理到实战,手把手教你线性回归模型
小张在编程
python机器学习线性回归
引言在人工智能浪潮席卷全球的今天,机器学习(MachineLearning)早已不再是实验室的“黑科技”——打开购物APP的“猜你喜欢”、输入搜索词后的“相关推荐”、甚至天气预报中的温度预测,背后都有机器学习模型的身影。而在线性回归(LinearRegression)作为机器学习中最基础、最经典的监督学习模型,堪称机器学习的“敲门砖”。本文将从原理到实战,带你彻底掌握这一核心算法。一、机器学习的“
- GNN--知识图谱(逐步贯通基础到项目实践)
峙峙峙
图神经网络知识图谱人工智能
原文仓库链接:知识图谱–贯通已有知识地图记录知识关系图谱和跨学科碰撞新启发知识图谱mermaid可能需要下载插件才能渲染线性代数神经网络深度学习框架硬件加速图论GNN框架交叉理解前向理解定义:前向理解:A–>B,A为B的基础铺垫知识,通过深入学习A对B有更好的理解01.LinearAlgebraforLinearLayerofNN从线性代数行列变换的角度看神经网络中的线性层线性代数矩阵乘法,可以理
- MySQL 截取字符串函数
MYians
MySQLmysql数据库sql
MySQL截取字符串的几种常用函数测试数据及语句如下(FN:functionname,方法名称)1、从字符串左边截取FN:left(str,length);2、从字符串右边截取FN:right(str,length)从右边截取length;3、从字符串特定位置开始,截取到末尾FN:substring(str,index)4、从字符串特定位置截取FN:substring(str,index)、sub
- Mysql中3表连接
Orange-one
mysql
简要概述表连接分为等值连接和外连接两种。外连接又分为:左连接(leftjoin);右连接(rightjoin);全连接(union)举例对以下三张表展开连接,分别为stu、cou、teastu中,字段为t_id;t_name;t_cidcou中,字段为t_cid;c_name;t_idtea中,字段为t_id;t_name例1:对三表进行等值连接语句:select*fromstu,cou,teaw
- 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独立出来,数据持