- 【Python】进程管理之 subprocess
jackwongs
pythonwindows开发语言
一个好的子进程管理需要满足什么功能需求?无阻塞/阻塞标准输入/输出信号发送/kill其实也不多。开始123456importsubprocessproc=subprocess.Popen('ping127.0.0.1',shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT,stdin=subprocess.PIPE)print(pro
- python连接sqlite数据库
豪豪学习8848
oracle数据库
importsqlite3#连接到SQLite数据库#如果数据库文件不存在,会自动在当前目录创建:conn=sqlite3.connect('example.db')try:#创建一个Cursor对象cursor=conn.cursor()#创建一个新表cursor.execute('''CREATETABLEIFNOTEXISTSusers(idINTEGERPRIMARYKEY,nameTEX
- Python定时任务框架Apscheduler实例-----每隔10分钟扫描FTP的文本,下载到本地,非月结期间调airflow工作流
不朽的诗篇
Pythonsftppythonhttpwebrequest
1.安装anacondahttps://www.jianshu.com/p/d3a5ec1d9a082.安装虚拟环境monitor//创建虚拟环境monitorcondacreate-nmonitorpython=3.6//查看已创建的虚拟环境condainfo-e3.安装Apscheduler,FTP工具包,Requestspipinstallapschedulerpipinstallparam
- python做定时任务的方式及优缺点_使用Python做定时任务及时了解互联网动态
weixin_39617405
前言本人因为比较喜欢看漫画和动漫,所以总会遇到一些问题,因为订阅的漫画或者动漫太多,总会忘记自己看到那一章节或者不知道什么时候更新.故会有这么一个需求,想记录自己想看的漫画或动画并在其更新的时候第一时间知道,当然,你可以拓展到任何你想关注的,都可以通过邮件及时推送.思路目录运行环境Python3.6第三方库fake-useragent==0.1.11pyquery==1.4.0requests==
- Python做定时任务
w263044840
最近写一个svn监控工具,每天定时去checksvn是否有更新,有则把更新内容发到指定的邮箱中,其中用到定时任务,看了一下python的文档貌似没有哪个模块提供计划任务这种函数。定时任务可以使用time下的sleep实现,也可以用schu去实现,看介绍都是需要输入一个时间的,所以要计算一个时间差。其实关键就是算差值了,以下是每天10,14,16三个点去执行svncheck这个函数的实现,用到的是c
- Python实现定时任务
百家晓东
Python
关注公众号“码农帮派”,查看更多系列技术文章:下面提供两种方式实现Python中的定时任务:|time.sleep(seconds)|time,sched方式一:#coding=utf-8importtimedefoperate(inc=1):#dosomethingprint'----'time.sleep(inc)pass#循环执行10次foriinrange(10):operate(1)【说
- httprunner实践样例
谷隐凡二
测试测试工具
目录1.安装HTTPRunner2.基本概念和目录结构3.编写一个HTTPRunner测试用例(YAML示例)4.运行测试用例5.使用Python编写测试用例6.运行Python测试用例7.集成测试报告8.高级用法:集成环境变量、外部数据9.集成到CI/CD流程10.应用说明:简介:HTTPRunner是一个非常好用的自动化测试框架,它用于HTTPAPI测试,支持RESTful、GraphQL等接
- python实现轻量级的定时任务包,不引用celery等框架,在注册APP后自启动
rock——you
python开发语言linux
如果你希望自开发一个轻量级的Python包来实现定时任务,而不依赖Celery等复杂框架,可以使用原生的Python工具如threading或schedule。以下是一个简单实现的方案。实现一个轻量级的定时任务包核心功能使用threading启动一个守护线程。定时执行一个小任务,例如每分钟运行一次。提供启动、停止功能。避免复杂的依赖,纯Python实现。项目结构my_simple_schedule
- Python命令汇总:雷电模拟器
棠梨煎雪灬
Python学习python开发语言
Python命令汇总:雷电模拟器文章目录Python命令汇总:雷电模拟器写在前面一、模拟器参数操作二、模拟器应用操作三、模拟器模拟操作`参考网站名称`雷电模拟器命令操作合集写在前面使用目的:雷电模拟器库函数调用(调用时注意函数前缀)一、模拟器参数操作添加模拟器add(name:str)获取安装包列表get_package_list(index:int)->list检测是否安装指定的应用has_in
- Python入门初学一、Python简介及发展,带你深入认识Python
2401_86437188
python开发语言
从整体上看,Python语言最大的特点就是简单,该特点主要体现在以下2个方面:Python语言的语法非常简洁明了,即便是非软件专业的初学者,也很容易上手。和其它编程语言相比,实现同一个功能,Python语言的实现代码往往是最短的。对于Python,网络上流传着“人生苦短,我用Python”的说法。因此,看似Python是“不经意间”开发出来的,但丝毫不比其它编程语言差。事实也是如此,自1991年P
- Python在测试中的用途_pathon在软件测试中的应用
2401_86437188
python开发语言
Python+Selenium实现web端的UI自动化:Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7,8,9,10,11),MozillaFirefox,Safari,GoogleChrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览
- Python必备库大全,建议留用
2401_86437188
python开发语言
mechanize-有状态、可编程的Web浏览库。socket–底层网络接口(stdlib)。UnirestforPython–Unirest是一套可用于多种语言的轻量级的HTTP库。hyper–Python的HTTP/2客户端。PySocks–SocksiPy更新并积极维护的版本,包括错误修复和一些其他的特征。作为socket模块的直接替换。网络爬虫框架1.功能齐全的爬虫grab–网络爬虫框架(
- 进程间的数据桥梁:`multiprocessing.Queue` 的应用
清水白石008
pythonPython题库服务器运维
进程间的数据桥梁:multiprocessing.Queue的应用在多进程编程中,由于每个进程都有自己独立的内存空间,因此进程之间的数据交换和共享比线程间的数据传递要复杂一些。Python提供了多种机制来实现进程间的数据传递,其中multiprocessing.Queue是一个常用且强大的工具。本文将深入探讨multiprocessing.Queue在进程间数据传递中的作用,并结合实例进行讲解,帮
- Selenium之免登录获取CSDN代码块内容(Java)
fuqying
seleniumjava
Selenium安装配置可见:Selenium安装及配置和Python/Java案例-CSDN博客免登录获取CSDN代码块内容packagecom.fuqying;importorg.openqa.selenium.By;importorg.openqa.selenium.JavascriptExecutor;importorg.openqa.selenium.WebDriver;importor
- Selenium安装及配置和Python/Java案例
fuqying
pythonseleniumjava
什么是Selenium?Selenium起源2004年,是一个开源、免费、简单、灵活,对Web浏览器支持良好的自动化测试工具,在UI自动化、爬虫等场景下是十分实用的。Selenium的用途*Selenium*有很多功能,但其核心是Web浏览器自动化的一个工具集,它使用最好的技术来远程控制浏览器实例,并模拟用户与浏览器的交互。它允许用户模拟终端用户执行的常见活动;将文本输入到字段中,选择下拉值和复选
- 毫秒级响应的VoIP中的系统组合推荐
狂爱代码的码农
VOIP那些事kamaimio
在高并发、低延迟、毫秒级响应的VoIP场景中,选择合适的操作系统组合至关重要。以下是针对Ubuntu+linux-lowlatency、CentOSStream+kernel-rt和Debian+自定义PREEMPT_RT的详细对比及推荐:1.系统组合对比特性Ubuntu+linux-lowlatencyCentOSStream+kernel-rtDebian+自定义PREEMPT_RT易用性高(
- Redis桌面(GUI)管理客户端
(?
redis
Redis桌面(GUI)管理客户端:AnotherRedisDesktopManagerAnotherRedisDeskTopManager是GitHub上的一个开源项目,是Redis可视化管理的利器,提供在Windows、MacOS平台的安装包,体积小,完全免费。更快、更好、更稳定的Redis桌面(GUI)管理客户端,兼容Windows、Mac、Linux,性能出众,轻松加载海量键值gitee地
- SecureCRT 设置打开时默认UTF-8
杨青松
linux
要在SecureCRT中设置打开时默认使用UTF-8编码,请按照以下步骤操作1:打开SecureCRT并连接到Linux终端。点击菜单栏中的Options,选择GlobalOptions。点击General中的DefaultSession,然后点击EditDefaultSettings。在弹出的对话框中点击Appearance。点击Characterencoding中的下拉按钮,指定编码为UTF-
- 打造高质量Python代码:使用Black、Ruff和Mypy进行格式化与Lint
llzwxh888
python数据库服务器
#打造高质量Python代码:使用Black、Ruff和Mypy进行格式化与Lint在软件开发过程中,确保代码的风格、可读性和正确性是每位开发者面临的重要任务。借助于现代工具,我们可以自动化许多重复性的检查任务,从而提高代码质量和开发效率。在这篇文章中,我们将探讨如何使用Black、Ruff和Mypy为Python代码进行格式化和Lint。##引言面对不断增长的代码库,维护代码风格和质量可以变得非
- 提高代码质量:使用Python Lint工具black、ruff和mypy
ndAbsAfaqwdav
python服务器开发语言
提高代码质量:使用PythonLint工具black、ruff和mypy在软件开发过程中,代码质量是一个非常重要的环节。良好的代码格式和风格不仅使代码更易于阅读和维护,还能减少潜在的错误和问题。本文将介绍如何使用Python的三个流行工具:black,ruff,和mypy,帮助开发者提升代码质量。引言在这篇文章中,我们将探讨如何有效使用black,ruff,和mypy来提高Python代码的质量。
- 初探FastAPI:从Flask到FastAPI的入门指南
WqxEditor
fastapiflaskpython
FastAPI和Flask是两个非常流行的PythonWeb框架,它们都提供了强大的功能和易用性,但在某些方面有所不同。本文将介绍FastAPI的基本概念和用法,并通过比较Flask和FastAPI的相似之处来帮助你更好地理解FastAPI。什么是FastAPI?FastAPI是一个现代化的PythonWeb框架,它旨在提供高性能、易用性和可靠性。它基于Python3.7+的类型提示和异步编程特性
- [全面掌握Python代码格式化与静态检查:使用Black, Ruff, 和 Mypy]
ahdfwcevnhrtds
python服务器linux
全面掌握Python代码格式化与静态检查:使用Black,Ruff,和Mypy引言在Python开发中,代码的可读性和一致性是至关重要的。为了确保代码达到高标准的格式化和静态检查,Black、Ruff和Mypy成为了开发者们的得力辅助手段。本篇文章将为您介绍如何使用这些工具来提升代码质量,并通过一个完整的示例演示其使用方法。主要内容1.Black:自动格式化工具Black是一个“无争议”的Pyth
- Ruff:Python圈的最快代码分析工具!
BbflNim
pythonmacos前端
随着后端开发的不断发展,代码分析工具成为了开发者们必备的利器之一。在Python圈中,Ruff已经崭露头角,成为了性能最快的代码分析工具。本文将介绍Ruff的特点以及如何使用它来优化Python代码。Ruff是一个基于Python的代码分析工具,它专注于提供快速而准确的代码分析和性能优化。Ruff的设计目标是通过静态分析和动态追踪相结合的方式,帮助开发者发现代码中的瓶颈,并提供针对性的优化建议。下
- Flask与FastAPI对比选择最佳Python Web框架的指南
一键难忘
pythonflaskfastapiFlask
Flask与FastAPI对比选择最佳PythonWeb框架的指南在现代的Web开发中,Python的Web框架为开发者提供了多种选择,其中Flask和FastAPI是目前最流行的两个框架。Flask因其简洁、灵活和轻量而广受欢迎,而FastAPI凭借其高性能和异步支持,逐渐成为了越来越多开发者的首选。在这篇文章中,我们将深入比较Flask与FastAPI,分析它们的特点、优势和适用场景,并帮助你
- Python - pyautogui库 模拟鼠标和键盘执行GUI任务
Ethel L
自动化测试python
安装库:pipinstallpyautogui导入库:importpyautogui获取屏幕尺寸:s_width,s_height=pyautogui.size()获取鼠标当前位置:x,y=pyautogui.position()移动鼠标到指定位置(可以先使用用上一个函数调试获取当前位置参数再使用):pyautogui.moveTo(x,y)#x,y是屏幕上的坐标鼠标点击:pyautogui.cl
- python的ruff简单使用
golemon.
Pythonpython开发语言
Ruff是一个用Rust编写的高性能Python静态分析工具和代码格式化工具。它旨在提供快速的代码检查和格式化功能,同时支持丰富的配置选项和与现有工具的兼容性。ruff是用rust实现的pythonLinter&Formatter。安装:condainstall-cconda-forgeruff#pippipinstallruff它可以作为代码检查工具和代码格式化工具使用运行代码检查ruffche
- 【问题】升级指定conda虚拟环境的python到指定版本
Jackilina_Stone
【EH】报错处理人工智能pythonlinux问题
1背景当前conda环境的名字为python38,进入环境python38命令如下:condaactivatepython382升级python到3.10版本condainstallpython=3.103查看python版本
- python字典从头到尾_从头到尾开发并销售python API
weixin_26750481
python人工智能
python字典从头到尾IrecentlyreadablogpostaboutsettingupyourownAPIandsellingit.我最近阅读了一篇有关设置和销售自己的API的博客文章。Iwasquiteinspiredandwantedtotestifitworks.Injust5daysIwasabletocreateanAPIfromstarttoend.SoIthoughtIsh
- python实例化类的存储内存地址_【JVM之内存与垃圾回收篇】对象实例化内存布局与访问定位...
学姐吖
对象实例化内存布局与访问定位从各自具体的内存分配上来讲new的对象放在堆中对象所属的类型信息是放在方法区的方法当中的局部变量放在栈空间这new的对象怎么把三块粘合到一起就是这章的内容了对象实例化面试题美团:对象在JVM中是怎么存储的?对象头信息里面有哪些东西?蚂蚁金服:二面Java对象头有什么?从对象创建的方式和步骤开始说对象创建方式new:最常见的方式,单例类中调用getInstance的静态类
- 虚拟环境的python升降级办法
@@wo
python开发语言
首先先进入自己建的虚拟环境中1.将python=3.12版本降级为3.7版本condainstall-ypython=3.72.升级办法condaupdatepython3.查看当前python版本办法python--version4.新建虚拟环境办法condacreate-npyupmaskpython==3.8pyupmask可换为自己想建的环境名,版本可变5.进入虚拟环境condaactiv
- 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独立出来,数据持