- Qt动态属性
激昂~逐流
Qtqt开发语言
一.定义Qt动态属性是一种在运行时为对象添加属性的方法,这些属性并不在对象的类定义中声明,而是在需要的时候动态添加。动态属性可以让开发者在不修改类定义的情况下为对象添加额外的数据或功能,从而实现更灵活的编程。在Qt中,可以使用setProperty()和property()方法来设置和获取动态属性。通过调用setProperty()方法可以为对象设置一个动态属性,该方法接受两个参数,第一个参数是属
- 【QT】-易错点笔记-2025-2-7
追心嵌入式
qt笔记开发语言
1,QListpList;为空不能append()追加,要先new,再用QListpList为空时,确实不能调用append()方法。原因很简单,QList是一个类对象,在C++中,指针本身并不代表它指向的对象。因此,当你有一个指向QList类型的指针时,必须确保它指向一个有效的QList实例。关键问题:如果pList是nullptr(空指针),那么你尝试调用append()时,程序会崩溃,因为n
- 介绍一下Qt中的动态属性
已是上好佳
qt数据库开发语言c++
在Qt中,动态属性是一种强大且灵活的特性,它允许你在运行时为对象添加、修改和查询属性,而不需要在类的定义中预先声明这些属性。下面为你详细介绍Qt动态属性的相关内容:1.动态属性的基本概念在传统的C++类中,属性通常是在类的定义里通过成员变量来表示的,并且在编译时就已经确定。而Qt的动态属性打破了这种限制,它可以在程序运行期间为任何继承自QObject的对象添加额外的属性,这些属性以键值对的形式存储
- qt 播放pcm音频
码农客栈_V13427279549
音视频Qtpcm音视频
一、获取PCM音频ffmpeg-iinput.mp3-acodecpcm_s16le-ar44100-ac2-fs16leoutput.pcm-acodecpcm_s16le:指定16位小端PCM编码格式(兼容性最佳)-ar44100:设置采样率为CD标准44.1kHz(可替换为16000/8000等)-ac2:保留立体声(单声道用-ac1)-fs16le:强制输出二进制裸数据格式二、播放方
- QT中的字符器类型
依旧阳光的老码农
C++语法qt开发语言
一、QT中的字符串类型在Qt中,字符串处理是非常常见且重要的任务。Qt提供了几种不同的字符串类型,每种类型都有其特定的用途和优势。以下是Qt中主要的字符串类型及其特点:1.QStringQString是Qt中最常用的字符串类,用于处理Unicode字符串。它提供了一整套丰富的函数来处理字符串,包括创建、修改、搜索、比较等。特点:Unicode支持:QString内部使用UTF-16编码,支持Uni
- PySide(PyQT),怎样在非QObject对象上应用信号槽框架
深蓝海拓
pyside6系统学习pyside6学习笔记数据库
在PySide(以及PyQt)中,信号和槽机制是基于QObject类实现的。只有继承自QObject的类才能够定义和使用信号与槽。那么如果画面中的对象不是QObject类,就无法使用信号和槽。比如下面的代码就会出错:importsysfromPySide6.QtCoreimportSignalfromPySide6.QtWidgetsimportQApplication,QGraphicsScen
- Python图形界面开发:PyQt与Tkinter对比分析
萧鼎
python基础到进阶教程pythonpyqt数据库
Python图形界面开发:PyQt与Tkinter对比分析图形用户界面(GUI)是应用程序中不可或缺的一部分,可以帮助用户更直观地与程序进行交互。Python拥有许多开发GUI的库,其中PyQt和Tkinter是最受欢迎的两个选择。本篇博客将从功能、易用性、性能、社区支持、学习曲线等角度对比分析这两个库,并通过一个简单的实战项目帮助你更直观地理解它们的差异。一、PyQt与Tkinter简介1.Py
- docker-compose部署mongodb 5.0.5集群
inventecsh
dockermongodb容器
一、服务器10.1.1.16510.1.1.16410.1.1.169二、生成mongodb.keyroot@mongodb:/data#opensslrand-base64756>mongodb.keyu2aDJG+yz9uLwdWSavN/yh7noG0wfnTvOalKO5xNuTMQ85daIqkWnOh1YgKzbosrqTvU1Np2PU4QpLJIHtwU1XfHgvkCQRR7ox
- python量化交易——金融数据管理最佳实践——使用qteasy大批量自动拉取金融数据
QTEASY量化交易
qteasy量化交易pythonpython金融量化交易
文章目录使用数据获取渠道自动填充数据QTEASY数据拉取功能数据拉取接口`refill_data_source()`数据拉取API的功能特性多渠道拉取数据实现下载流量控制实现错误重试日志记录其他功能qteasy是一个功能全面且易用的量化交易策略框架,Github地址在这里。使用它,能轻松地获取历史数据,创建交易策略并完成回测和优化,还能实盘运行。项目文档在这里。使用qteasy,您可以非常容易地在
- QT输入窗口部件之QSlider(滑动条)
点灯大神
QTqt开发语言
QSlider如果对您有用记得点赞哦)QSlider继承QAbstractSlider。QScrollBar类提供垂直或水平滑动条小部件,滑动条是用于控制有界值的典型小部件。它允许用户沿着水平或垂直凹槽移动滑块手柄,并将手柄的位置转换为合法范围内的整数值。例子创建水平和垂直滑动条,创建两个QSlider对象,一个是水平滑动条,另一个是垂直滑动条;用一个Label来显示当前水平或垂直滑动条当前的值。
- [QT基础系列]滑动条QSlider
RevsInterstellar
QT笔记qt开发语言c++c语言qt5
滑动条QSliderQSlider是滑动条控件,滑动条可以在一个范围内拖动,并将其位置转换为整数QSlider继承自QAbstractSlider,它的绝大多数属性都是从QAbstractSlider继承而来的。值滑动条和值相关的属性包括:当前值、最大值、最小值//获取和设置当前值intvalue()const;voidsetValue(int
- Qt:多线程
cfqcfqcfqcfqcfq
Qt
UI程序经常会遇到的一个问题是在执行一个长时间任务时,UI线程被阻塞,导致假面出现假死现象,之前文章也有介绍解决办法(比如使用一个进度对话框)。今天主要是通过开启一个线程方式来解决UI线程阻塞问题。想要使用线程就需要对Qt多线程编程有一个了解。在Qt中使用多线程需要用到QThread类QTHread类为用户管理多线程提供了一种平台无关的途径#include继承自QObject类在Qt帮助文档里为我
- Qt:多线程中断
cfqcfqcfqcfqcfq
Qt
线程使用有两种方法,具体介绍见:http://blog.csdn.net/cfqcfqcfqcfqcfq/article/details/51627885;;关于线程中断的函数:quit()Exit()terminate();除此之外比较常用的函数(起到阻塞作用):wait()sleep();在线程类被析构的时候,应该习惯性的设置中断和阻塞;避免出现一些不必要的错误;分别在两种线程使用方法中说明这
- QT异步编程
M_Lin_
qt开发语言
widget.h#ifndefWIDGET_H#defineWIDGET_H#include#include"mythread.h"#include"ui_widget.h"#include//QSlider类的头文件#include//用于定义样式表的QString#include//阴影效果的头文件QT_BEGIN_NAMESPACEnamespaceUi{classWidget;}QT_EN
- Linux下视频采集及其显示
wesleyluo
Linux学习C/C++编程学习linuxbuffervideostructemacsnull
说明:1、本文所提及的摄像头不是zc0301p,使用的API不是V4L,显示所使用的上位机不是QT,特此说明。2、UVC只是一个驱动,如果它能成功驱动摄像头,会在/dev目录下出现video(或video0、video1等等)。这样,就可以使用Linux提供(准确说不是Linux提供,具体的百度吧)的一套API,即V4L2来访问摄像头了。“使用”是指我们写的采集数据的程序,而不是指“摄像头驱动程序
- QML 容器控件:ScrollView
Quz
Qt6QML开发进阶之旅qt
目录1.ScrollView简介1.1主要特点2.使用示例2.1简单的ScrollView2.2使用ListView作为子项注意事项总结ScrollView是QML中用于创建可滚动视图的控件,它允许用户通过触摸或鼠标操作来滚动内容。ScrollView是QtQuick.Controls模块的一部分,通常用于替代Flickable或装饰现有的可滚动控件(如ListView或GridView)。以下是
- Qt大作业————记事本——Day4
m0mentd1
qtui开发语言
剪切复制粘贴等操作//剪切voidMainWindow::on_actionCut_triggered(){ ui->textEdit->cut(); ui->actionPaste->setEnabled(true);}//撤销voidMainWindow::on_actionUndo_triggered(){ ui->textEdit->undo();}//复制voidMainWindo
- QT作业day5
冷灵雨月
qt开发语言
实现闹钟头文件:#defineALARM_CLOCK_H#include#include#include#include#include//文本转语音类#includeQT_BEGIN_NAMESPACEnamespaceUi{classAlarm_clock;}QT_END_NAMESPACEclassAlarm_clock:publicQWidget{Q_OBJECTpublic:Alarm_
- QT作业day3
冷灵雨月
qt开发语言
1、使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin",密码是否为"123456",如果账号密码匹配成功,则输出“登录成功”,并关闭该界面,如果匹配失败,则输出登录失败,并将密码框中的内容清空头文件:#ifndefUSER_INTERFACE
- QT作业day4
冷灵雨月
windows
完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面如果账号和密码不匹配,弹出错误对话框,给出信息”账号和密码不匹配,是否重新登录“,并提供两个按钮Yes|No,用户点击Yes后,清除密码框中的内容,继续让用户进行登录,如果用户点击No按钮,则直接关闭登录界面如果用户点击取消按钮,则弹出一个问题对话框
- 作业day4
m0_58248149
c++
1.实现保留原颜色宽度2.橡皮擦3.撤销widgh.h#ifndefWIDGET_H#defineWIDGET_H#include#include#include#include#include#include#include#include#includeQT_BEGIN_NAMESPACEnamespaceUi{classWidget;}QT_END_NAMESPACEstructLineIn
- qt作业day5
m0_58248149
qt开发语言
1:是进度条通过线程自己动起来头文件(mythread.h)#ifndefMYTHREAD_H#defineMYTHREAD_H#include#includeclassmythread:publicQThread{Q_OBJECTpublic:explicitmythread(QSlider*slider,QObject*parent=nullptr);voidstop();//停止线程prot
- 如何在 Conda 环境中使用 PySide6 将 .ui 文件转换为 .py 文件
元素之窗
condaui
如何在Conda环境中使用PySide6将.ui文件转换为.py文件在PyQt或PySide6开发中,通常会使用QtDesigner设计UI界面,并生成.ui文件。但为了在Python代码中使用这些UI设计,我们需要将.ui文件转换为.py文件。本文将介绍如何在Conda环境中使用PySide6进行转换。1.确保Conda环境已激活在PowerShell或命令行中,首先激活你的Conda环境,例如
- 【Qt】Qt Widgets和QML(Qt Quick)开发界面的区别
£އއ昔年
qt开发语言
Qt提供了两种主要的UI技术:QtWidgets和QML(QtQuick)。它们的核心区别主要体现在使用方式、架构、性能、开发难度和适用场景等方面。1.QtWidgetsvs.QML总体对比对比项QtWidgetsQML(QtQuick)语言C++(带QtUI库)QML+JavaScript(底层C++)渲染方式传统窗口系统控件(原生或模拟)基于OpenGL,使用GPU加速UI风格经典桌面UI(W
- QT-绘画事件
Ryan_Gosling
qt开发语言
实现颜色的随时调整,追加橡皮擦功能widget.h#ifndefWIDGET_H#defineWIDGET_H#include#include#include#include#include#include#include//自定义Line类,存储线段的起点、终点、颜色和宽度classLine{public:Line(constQPoint&start,constQPoint&end,constQ
- QT事件----QPaintEvent绘图事件,QwheelEvent鼠标滚轮事件等; 用事件自定义按键;QT事件过滤器。
都教授_
QT项目篇qt开发语言
一、QT事件1.1QPaintEvent绘图事件QPaintEvent是Qt框架中一个重要的事件类,专门用于处理绘图事件。当Qt视图组件需要重绘自己的一部分时,就会产生QPaintEvent事件。这通常发生在以下几种情况:1.窗口第一次显示时:当窗口或控件第一次出现在屏幕上时,系统会生成一个QPaintEvent事件,通知窗口进行自身的绘制。2.窗口大小改变时:当用户改变窗口的大小时,窗口的内容通
- QT-信号与槽
Ryan_Gosling
qt命令模式开发语言
1.在注册登录的练习里面,追加一个QListWidget项目列表要求:点击注册之后,将账号显示到列表窗口小部件上面去以及,在列表窗口小部件中双击某个账号的时候,将该账号删除头文件#ifndefWIDGET_H#defineWIDGET_H#include#include#includeQT_BEGIN_NAMESPACEnamespaceUi{classWidget;}QT_END_NAMESPA
- 使用 Qt 插件和 SQLCipher 实现 SQLite 数据库加密与解密
m0_74825108
面试学习路线阿里巴巴数据库qtsqlite
SQLite作为一种轻量级的数据库,被广泛应用于各种桌面和移动应用中。然而,SQLite本身并不支持数据加密,这时SQLCipher成为一个理想的解决方案。本文将详细介绍如何在Qt项目中集成SQLCipher,实现SQLite数据库的加密与解密,包括创建加密数据库、插入数据以及查询数据的完整流程。目录简介前置条件项目配置代码实现创建加密数据库并插入数据读取加密数据库并查询数据常见问题与解决总结简介
- 03.04
Unique_yt
命令模式
1.Widget.h:#ifndefWIDGET_H#defineWIDGET_H#include#include#include#includeQT_BEGIN_NAMESPACEnamespaceUi{classWidget;}QT_END_NAMESPACEclassWidget:publicQWidget{Q_OBJECTpublic:Widget(QWidget*parent=nullp
- 03.05 QT事件
Unique_yt
qt开发语言
实现一个绘图工具,具备以下功能:鼠标绘制线条。实时调整线条颜色和粗细。橡皮擦功能,覆盖绘制内容。撤销功能,ctrl+z快捷键撤销最后一笔程序代码:Widget.h:#ifndefWIDGET_H#defineWIDGET_H#include#include#include#include#include#include#include#include#include#includeQT_BEGIN
- 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独立出来,数据持