- Selenium 特殊控件操作与 ActionChains 实践详解
小馋喵知识杂货铺
selenium测试工具
1.下拉框单选操作(a)使用SeleniumSelect类(标准HTML标签)Selenium提供了内置的Select类用于操作标准下拉框,这种方式简单且直观。fromselenium.webdriver.support.uiimportSelect#定位下拉框dropdown=Select(driver.find_element("id","dropdown_id"))#通过以下三种方式选择单个
- selenium特殊场景处理
Monica_ll
Seleniumseleniumchromepython
文章目录前言一、多窗口处理二、浏览器弹窗处理包含alert、confirm、prompt三、鼠标和键盘事件处理前言在使用selenium操作浏览器的过程中可能需要借助键盘和鼠标功能完成一些操作,或者操作弹窗处理,本文主要是整理自己工作过程中使用过的一些方法一、多窗口处理在实际测试过程中经常会有通过点击或者连接打开新的窗口,这种情况下就需要切换webDriver到对应浏览器对象才能操作新窗口的元素。
- Selenium基础教程
lemontree1945
seleniumpython测试工具
1.Selenium环境安装1.1浏览器安装Chrome和ChromeDriver下载地址:https://googlechromelabs.github.io/chrome-for-testing/注意:驱动版本号要和浏览器版本号一致;安装后关闭浏览器自动更新:services.msc:打开系统服务找到和google相关的服务,全部修改为禁用1.2安装第三方库seleniumpipinstall
- ESP32学习-按键中断
风过^无痕
学习
前提知识:freertos消息队列1.使用流程1.GPIO配置2.创建消息队列3.创建消息队列数据输入线程任务4.使能中断5.添加中断处理函数2.代码示例#include#include#include"freertos/FreeRTOS.h"#include"freertos/task.h"#include"freertos/queue.h"#include"driver/gpio.h"stat
- 【Appium】selenium.common.exceptions.WebDriverException: Message: The requested resource could not be
枫萏
Appium踩坑达人appium
1、报错内容(1)脚本报错内容在PyCharm编写好脚本后,模拟器和appium也是连接成功的,但是运行脚本时报错:selenium.common.exceptions.WebDriverException:Message:Therequestedresourcecouldnotbefound,orarequestwasreceivedusinganHTTPmethodthatisnotsuppo
- 【vivado使用】第7篇:vivado implementation执行时候报错:Unsupported PLLE2_ADV connectivity.......
黑猫学长呀
黑猫的FPGA知识合集fpga芯片fpga开发ic嵌入式硬件
执行时候出错,[DRCREQP-1712]Inputclockdriver:UnsupportedPLLE2_ADVconnectivity.Thesignalu_clk_wiz_0/inst/clk_in1ontheu_clk_wiz_0/inst/plle2_adv_inst/CLKIN1pinofu_clk_wiz_0/inst/plle2_adv_instwithCOMPENSATIONm
- ARM SMMUv3控制器初始化及设备树分析(七)
业余程序员plus
IOMMUSMMUiommu-mapiommu-map-maskarm-smmu-v3#iommu-cellseventqgerror
1.初始化SMMUv3驱动的入口函数如下代码所示。[drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c]staticstructplatform_driverarm_smmu_driver={.driver={.name="arm-smmu-v3",.of_match_table=arm_smmu_of_match,.suppress_bind_attrs=tr
- 如何解决 undetected_chromedriver 启动慢问题
小马哥编程
chromeseleniumui
要解决undetected_chromedriver启动慢的问题,可以从以下几个方面优化配置和代码:1.指定本地Chrome二进制路径避免自动搜索Chrome路径,直接指定位置:driver=uc.Chrome(browser_executable_path=r'C:\ProgramFiles\Google\Chrome\Application\chrome.exe')2.禁用GPU和沙盒(关键优
- 【Selenium自动化测试】鼠标与键盘操作
牛油菠蘿包
Selenium教程自动化测试seleniumpython自动化
在WebDriver中,与鼠标操作相关的方法都封装在ActionChains类中,与键盘操作相关的方法都封装在Keys类中。下面介绍下这两个类中的常用方法。鼠标操作ActionChains类鼠标操作常用方法:context_click():右击double_click():双击drag_and_drop():拖动move_to_element():鼠标悬停perform():执行ActionCha
- selenium 反爬虫识别特征处理
因为业务中发现网站对selenium特征识别为爬虫了,因此在搜索引擎中搜索进行处理方式一#实例化一个浏览器对象options=webdriver.ChromeOptions()options.add_experimental_option('excludeSwitches',['enable-automation'])ifsys.platform=="win32":browser=webdrive
- selenium之反反爬虫
无惧代码
爬虫pythonselenium爬虫
大多数情况下,检测的基本原理是检测当前浏览器窗口下的window.navigator对象是否包含webdriver这个属性。在正常使用浏览器的情况下,这个属性是undefined,然后一旦我们使用了selenium,这个属性就被初始化为true,很多网站就通过Javascript判断这个属性实现简单的反selenium爬虫。反反爬虫解决措施:fromseleniumimportwebdriverf
- ODMABNet30CE_X86.dll ODMABDF130CE_X86.dll rnvideopacketizer.dll rndtdriver.dll rndevicefsys.dll
在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用MicrosoftVisualStudio编写的,所以这类软件的运行需要依赖微软VisualC++运行库,比如像QQ、迅雷、Adobe软件等等,如果没有安装VC++运行库或者安装的版本不完整,就可能会导致这些软件启动时报错,提示缺少库文件。如果我们遇到关于文件在系统使用过程中提示缺少找不到的情况,如果文件是属于运行库文件的
- 【DBeaver 安装 MongoDB 插件】
手动添加驱动(适用于网络受限或特定版本需求)1、安装dbeaver2、下载驱动文件从MongoDBJavaDriver官网下载最新版.jar文件(如mongo-java-driver-3.12.14.jar)26。下载链接:通过网盘分享的文件:mongodb-driver.zip链接:https://pan.baidu.com/s/1OcZ3k8YfOUezYlA2qBByCQ提取码:wy2h把插
- Python爬虫处理网页弹框的几种方式,你一定需要!
梓栋Code
在项目开发的时候,要处理弹框,现在将几种处理弹框的方式总结一下:第一种:浏览器式弹框处理这种主要使用于网页驱动浏览器的弹框defdeal_elert_window(self):"""#处理elert弹窗如果账号密码输入错误的就不会出现elert弹窗:return:"""try:#等待alert弹出框可见,这个可以当做判断条件WebDriverWait(self.driver,3,0.5).unti
- Spark 的监控和性能调优高度依赖其内置的工具:【 Spark Web UI 和 Spark History Server】
csdn_tom_168
大数据spark大数据核心监控性能调优工具
Spark的监控和性能调优高度依赖其内置的SparkWebUI和SparkHistoryServer。它们是诊断作业性能瓶颈、资源利用率、错误原因和优化机会的最重要工具。一、SparkWebUI(DriverWebUI)当一个Spark应用程序(SparkContext)运行时,Driver进程会启动一个Web服务器,默认端口是4040(如果4040被占用,则尝试4041,4042等)。这是实时监
- 高通平台的 Camera HAL 架构解析:QCamera 与 CHI HAL 实战剖析
高通平台的CameraHAL架构解析:QCamera与CHIHAL实战剖析关键词:QCamera3、CHIHAL、QTICameraStack、HAL3、CamX、ISPPipeline、QCamera调试、Snapdragon成像架构、CameraDriver协同摘要:高通平台是Android移动终端中主流的SoC方案之一,其CameraHAL架构发展历程丰富,从传统QCamera到模块化CHI
- 芯片ad71X linux 驱动程序
/*AD714XCapTouchProgrammableControllerdriversupportingAD7142/3/7/8/7ACopyright2009-2011AnalogDevicesInc.LicensedundertheGPL-2orlater.*/#include#include#include#include#include#include#include“ad714x.h
- Kruptos2CL.exe OnLineRecovery.exe HashCodeProvider.dll InstallDriver.exe VNETBIOS.VXD serf1255.
2504_92288299
windowsmicrosoft游戏
在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用MicrosoftVisualStudio编写的,所以这类软件的运行需要依赖微软VisualC++运行库,比如像QQ、迅雷、Adobe软件等等,如果没有安装VC++运行库或者安装的版本不完整,就可能会导致这些软件启动时报错,提示缺少库文件。如果我们遇到关于文件在系统使用过程中提示缺少找不到的情况,如果文件是属于运行库文件的
- Selenium自动化测试入门:从零到精通
文章目录一、前言1.浏览器驱动下载2.配置二、seleium使用教学1.基础框架2.常用操控浏览器的方法3.定位元素八种方法及其优缺点4.元素定位的隐性等待一、前言1.浏览器驱动下载chromedriver下载地址:https://googlechromelabs.github.io/chrome-for-testing/#stable谷歌浏览器网址栏输入:chrome://version查看你的
- Selenium 攻略:从元素操作到 WebDriver 实战
二向箔reverse
seleniumpython测试工具
在自动化测试、网页数据爬取、批量操作网页等场景中,Selenium无疑是最受欢迎的工具之一。作为一款强大的Web自动化工具,它能模拟人类操作浏览器的行为,实现点击、输入、跳转等一系列动作。本文将从基础到进阶,全面解析Selenium的核心用法,帮你快速掌握这一工具的精髓。一、元素定位:找到网页的"积木"操作网页的前提是准确定位元素。Selenium提供了8种定位方式,覆盖绝大多数场景:定位方式方法
- 【自动化测试】Selenium Python UI自动化测试实用教程
软件测试-阿涛
自动化测试python学习seleniumpythonui自动化
一、引言:Selenium与UI自动化测试基础1.1Selenium简介Selenium是一个开源的Web应用自动化测试框架,支持多浏览器(Chrome、Firefox、Edge等)和多编程语言(Python、Java、JavaScript等),核心组件包括:WebDriver:通过浏览器原生API控制浏览器,模拟用户操作(点击、输入等),无侵入性。IDE:浏览器插件,支持录制/回放操作,可导出测
- DriverManager在rt.jar里,凭什么能加载到classpath下的驱动?
java干货
故事系列jarjava
故事场景:皇帝需要一位“外来的专家”我们续接上一个故事。王朝的官员体系(类加载器)等级分明:皇帝>总督>县令。祖宗家法(双亲委派)规定,办事必须层层上报。新的任务来了:王朝的“皇家运输署”(DriverManager),由皇帝(启动类加载器)直接管辖,负责管理全国的运输。最近,从西域(第三方厂商)引进了一种全新的交通工具——“MySQL牌飞毯”(mysql-connector-java.jar)。
- 电脑里的C:\WINDOWS\system32\drivers\etc中的hosts文件是做什么的?
_张张张i
学习ingDNS是什么DNS域名解析网址解析网址是如何解析成IP地址的
电脑里的C:\WINDOWS\system32\drivers\etc中的hosts文件是做什么的?文章目录电脑里的C:\WINDOWS\system32\drivers\etc中的hosts文件是做什么的?前言域名解析的过程什么是DNSDNS解析步骤C:\WINDOWS\system32\drivers\etc中的hosts文件的作用1.加快域名的解析:2.方便局域网:3.屏蔽网站4.找回“失效
- YTM32B1M SDK解析08 - I2C双线通信接口
VehSwHwDeveloper
单片机嵌入式硬件YTM32B1M云途
1.概述I2C(Inter-IntegratedCircuit)是YTM32B1M微控制器中的双线串行通信接口,支持多主机、多从机的总线架构。本文档详细解析YTM32B1MSDK中I2C驱动的实现,包括主从模式配置、多速率支持、地址管理和DMA传输等功能。2.文件组织结构2.1头文件i2c_driver.h:I2C驱动的主要头文件,定义了主从模式的所有接口i2c_hw_access.h:I2C硬件
- 针对C://Windows/System32/drivers/etc/hosts文件不存在问题的解决
问题:需要更改主机名,即访问时不再使用localhost,而是使用自定义的主机名。步骤:1.如果存在hosts文件则只需要在末尾添加127.0.0.1主机名即可(注意不需要加#号)。对于不存在的情况需要自己创建hosts文件,先创建文本文件,将如下代码写入文本,保存为hosts文件,不需要添加扩展名。如下图所示:在末尾添加127.0.0.1主机名即可。2.更改Tomcat服务器配置,在server
- 世博轮腿机器人Software
wl_pro_robot.ino这个代码是一个完整的机器人控制程序,涉及到多个硬件模块的控制和通信,包括电机、传感器、舵机、PID控制器、滤波器、Web服务器等。下面简要解释一些关键部分:电机与驱动控制:代码定义了两个电机(motor1和motor2)及其驱动器(driver1和driver2),并通过FOC(Field-OrientedControl)技术来进行电机控制。PID控制器:通过PID
- 利用Python爬虫获取招聘网站职位信息
程序员的小傲娇
Pythonpython爬虫招聘网站爬取数据
当你学会使用Python爬虫之后就会发现想要得到某些数据再也不用自己费力的去寻找,今天小千就给大家介绍一个很实用的爬虫案例,获取Boss直聘上面的招聘信息,同学们一起来学习一下了。Boss直聘爬虫案例这次我们以北京地区的销售岗位为案例,打开Boss直聘搜索【销售】,但是很遗憾boss直聘的反爬措施不能直接使用requests库获取信息,所以采用webdriver自动化方式获取网页源代码。webdr
- python爬虫实战-小案例:爬取苏宁易购的好评
一、项目背景与价值1为什么爬取商品好评?消费者洞察:分析用户真实反馈,了解产品优缺点市场研究:监测竞品评价趋势,优化产品策略二.实现代码fromseleniumimportwebdriverfromselenium.webdriver.edge.optionsimportOptionsfromselenium.webdriver.common.byimportByimporttimeedge_op
- AUTOSAR进阶图解==>AUTOSAR_SWS_CANDriver
KaiGer666
java微服务开发语言AUTOSAR嵌入式汽车单片机
AUTOSARCAN驱动详解:架构、状态机与接口基于AUTOSARSWSCANDriver规范的详细解析目录概述架构设计状态机配置结构消息收发流程API接口错误处理总结1.概述AUTOSAR(AUTomotiveOpenSystemARchitecture)是汽车电子领域的标准化软件架构,而CAN(ControllerAreaNetwork)驱动是AUTOSAR架构中重要的基础模块,提供了对CAN
- python 链接clickhouse 连接不上
无我_a50f
原因:clickhouse-driver使用的是tcp端口:9000java驱动clickhouse-jdbc使用的是http端口:8123
- 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独立出来,数据持