- STM32 消息队列处理串口发送的报文
S安东尼
stm32嵌入式硬件单片机
文章目录概要整体流程具体实现小结概要本文写自正在做的项目,需要使用串口2处理EasyModBus传输的报文,原本采用中断处理的方式,在屏幕,按键,感应器同时传输下,产生了丢包现象,偶发性的死机问题,所以改用消息队列进行缓存,逐条处理。整体流程创建队列串口中断接收报文,简易判别添加入队列解包任务,从队列中取出报文解包做相应处理具体实现创建队列结构体#defineQUEUE_LENGTH20struc
- RabbitMQ的安装
白泽27
rabbitmq分布式
典型应用场景:异步处理。把消息放入消息中间件中,等到需要的时候再去处理。流量削峰。例如秒杀活动,在短时间内访问量急剧增加,使用消息队列,当消息队列满了就拒绝响应,跳转到错误页面,这样就可以使得系统不会因为超负载而崩溃Linux下安装#拉取镜像dockerpullrabbitmq:3.8-management#创建容器启动dockerrun-d--restart=always-p5672:5672-
- Ambari——编译——解决解决windows和linux下phantomjs链接超时问题
空了虾摸索
Ambariambari-排错ambariwindowslinux
您的支持是我继续创作与分享的动力源泉!!!您的支持是我继续创作与分享的动力源泉!!!您的支持是我继续创作与分享的动力源泉!!!错误日志:[INFO]CopyingextractedfolderC:\Users\LENOVO\AppData\Local\Temp\phantomjs\phantomjs-2.1.1-windows.zip-extract-1786692611821\phantomjs
- Linux下复制粘贴快捷键
huzimu_
笔记
Linux下复制粘贴快捷键终端下:复制:ctrl+shift+c粘贴:ctrl+shift+v控制台下:复制:ctrl+insert或鼠标选中粘贴:shift+insert或单击鼠标左键
- Winsock编程入门和枚举协议
bcbobo21cn
VC++协议分析和开发EnumProtocolsMSAFD协议winsock
Winsock的初始化和清除代码类似如下;if((ret=WSAStartup(MAKEWORD(2,2),&wsadata))!=0){wsprintf(buf,TEXT("winsock初始化失败,错误:%d"),ret);......return0;}。。。。。。if(WSACleanup()==SOCKET_ERROR){wsprintf(buf,TEXT("WSACleanup失败,错误
- linux下自定义显示文件拷贝进度
王牧犊
Linuxlinux服务器运维
1.首先在终端中执行拷贝命令cp-a-r/path/to/source/./path/to/destination/2.打开新的终端执行进度显示命令bashprogress.sh/path/to/source//path/to/destination/source/3.j脚本"progress.sh"中内容如下#!/bin/bash#src_dir="/path/to/source/"src_di
- linux下的进程间通信
江洋之道
linux运维服务器
转自http://blog.csdn.net/eroswang/article/details/1772350详细的讲述进程间通信在这里绝对是不可能的事情,而且笔者很难有信心说自己对这一部分内容的认识达到了什么样的地步,所以在这一节的开头首先向大家推荐著名作者RichardStevens的著名作品:《AdvancedProgrammingintheUNIXEnvironment》,它的中文译本《U
- linux下golang环境配置问题记录
runscript.sh
linuxgolang运维
vscode工具,golang-dlv调试,爆出:GOPATHsettoGOROOT(/usr/local/go)hasnoeffect解决方案:环境配置PATH,需要包含GOPATH和GOROOT/bin工具箱默认放在GOPATH目录下。exportGOROOT=/usr/local/goexportGOPATH=/root/testexportPATH=$PATH:$GOROOT/bin:$G
- linux测试环境搭建教程,linux下gtest测试环境搭建步骤
魔屋
linux测试环境搭建教程
Step1:下载gtest1.解压后进入gtest目录,如下:继续make,又出错,原因同上。解决路径:googlemock/CMakeFiles/gmock_main.dir/flags.make继续make,又出错,原因同上。解决路径:googletest/gtest/CMakeFiles/gtest.dir/flags.make继续make,又出错,原因同上。解决路径:googletest/
- 【编程入门】应用市场(Java版)
蓝不蓝编程
背景前面已输出多个系列:《十余种编程语言做个计算器》《十余种编程语言写2048小游戏》《17种编程语言+10种排序算法》《十余种编程语言写博客系统》《十余种编程语言写云笔记》《N种编程语言做个记事本》目标为编程初学者打造入门学习项目,使用各种主流编程语言来实现。[图片上传失败...(image-af9b3a-1677333595958)]左侧为前端版本:安卓、iOS、鸿蒙、Flutter、Vue、
- GPT对话代码库——基于STM32F103 1,标志位切换模式 & 2,串口的接受和发送
玄奕子
单片机stm32嵌入式硬件GPT
目录1,问:1,答:2,问:2,答:1.初始化LED灯相应的GPIO口2.初始化USART33.实现发送功能4.实现接收字符串功能5.主函数3,问:3,答:1.配置NVIC以使能USART3中断2.在USART3初始化函数中开启接收中断3.编写USART3的中断服务函数来处理接收到的字节提问模型:GPT-4-TURBO-PREVIEW提问时间:2024.03.091,问:使用stm32f103C8
- uboot 中的bootargs 如何 修改 内核的 cmdline和 linux 内核如何生成 /proc/cmdline
sunfanup
linux开发cc++linux
一、在U-Boot中,可以通过修改环境变量“bootargs”来修改内核的启动参数(cmdline)。以下是在U-Boot中修改内核的cmdline的一般步骤:进入U-Boot的命令行界面。这可以通过串口连接到设备,并在启动时按下适当的按键(如Enter键或空格键)来实现。使用“printenv”命令查看当前的环境变量。找到名为“bootargs”的变量。使用“setenv”命令修改“bootar
- centos安装FastDFS
lingFei_y
javacentosfastdfs
1.Centos下安装FastDFS1.1上传将课前资料中的文件上传到linux下的/home/leyou/fdfs目录:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o32zAtGy-1576464628974)(assets/1526205834487.png)]1.2安装依赖FastDFS运行需要一些依赖,在课前资料提供的虚拟中已经安装好了这些依赖,如果大家想
- Linux文件系统的目录结构详解
wdsoft
linuxlinux目录
一、前言文章对Linux下所有目录一一说明,对比较重要的目录加以重点解说,以帮助初学者熟练掌握Linux的目录结构。二、目录1、什么是文件系统2、文件系统的类型3、目录结构的详细解读4、一些重要子目录的解读5、附录:目录结构的简明查阅手册三、正文我想,不光是我,对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步。下面大家跟飘扬一起来学习吧………….1
- Arduino与processing之间的通信——进阶版
小明在考研
Arduino单片机
本次需要实现Arduino获取板子的偏转角度并通过串口发送给processing,processing部分根据传输过来的各个轴的偏转角度建立对应偏转角度的3D模型。这就涉及了两个轴正负方向的偏转,我的实现思路是使用串口传输字母+数字格式的信息,字母用来判断是哪个轴发生偏转,偏转的角度是正是负,数字就用来表示偏转的角度。此次是Z轴和X轴这两个。Arduino部分这部分的难点在于从传感器获取到的信息是
- STM32采用串口DMA方式向上位机连续发送数据
亚大贼
stm32arm嵌入式硬件
目录前言一、DMA简介1.1DMA功能框图1.1.1DMA请求1.1.2通道1.1.3仲裁器1.2DMA数据配置1.2.1数据传输方向:1.2.2数据传输大小和单位1.2.3什么时候传输完成1.3DMA库函数配置过程二、串口DMA方式向上位机发送数据2.1新建工程2.2设置RCC2.3打开USART1及DMA模式
- 介绍Node.js+Electron框架下和常用(HID 串口 BLE)硬件通信方法
古木12345
分享node.jselectronjavascript
介绍框架下的模块node.jsNode.js®是一个开源的、跨平台的JavaScript运行时环境。能通过node插件直接js调用c++(内置v8)Node.js(nodejs.org)electronElectron可以让我们使用纯JavaScript调用丰富的原生API来创建桌面应用。可以内嵌reactvue等前端框架,直接将web页面转换成桌面客户端程序。Electron|使用JavaScr
- python非阻塞输入_python并发编程:非阻塞IO
weixin_39914732
python非阻塞输入
非阻塞IO(non-blockingIO)Linux下,可以通过设置socket使其变为non-blocking,当对一个non-blockingsocket执行读操作时,流程是这个样子从图中可以看出,当用户进程发出read操作时,如果kernel中的数据还没有准备好,那么它并不会block用户进程,而是立刻返回一个error。从用户进程角度讲,它发起一个read操作后,并不需要等待,而是马上就得
- linux的mail命令含义,Linux下的mail命令
会飞的卡卡奇
linux的mail命令含义
TheLinuxcommandlinecanbeverypowerfulonceyouknowhowtouseit.Youcanparsedata,monitorprocesses,automatebackupsanddoalotofotherusefulandcoolthingsusingit.Thereoftencomesaneedtogenerateareportandmailitout.I
- c#/ .net8 香橙派orange pi +SSD1306 oled显示屏 显示中文+英文 实例
.net亦洪
c#.net开发语言
本文使用香橙派orangepipi3lts+SSD1306oled显示屏作为例子,其它型号的也是一样使用的在nuget包中安装Sang.IoT.SSD1306;以下两个二选一SkiaSharp;//在window下运行装这个SkiaSharp.NativeAssets.Linux.NoDependencies;//在linux下运行一定要装这个在c#.net8中开发的代码usingSang.IoT
- RT-Thread设备驱动框架
sscb0521
RT-Thread单片机
RT-Thread设备驱动框架1、什么是I/O设备?I/O设备是input/output设备,串口,定时器,adc,i2c,spi,flash,SD,USB等都是I/O设备。2、rt-thread怎么管理I/O设备?RT-Thread设计了I/O设备框架。从上到下共有3层。应用设备管理层设备驱动框架层设备驱动硬件2.1设备管理层设备管理层统一定义了6个设备操作接口,具体到某类设备的话,可能只用到其
- Linux - 权限概念
ketil27
linux运维服务器
Linux下有两种用户:超级用户(root)、普通用户。超级用户:可以再linux系统下做任何事情,不受限制普通用户:在linux下做有限的事情超级用户的命令提示符是“#”,普通用户的命令提示符是“$”命令:su[用户名]功能:切换用户。列如:要从root用户切换到普通用户user,则使用suuser。要从普通用户user切换到root用户则使用suroot(root可以省略),此时系统会提示输入
- 【QT】关于QSerialPort的错误处理 (Error Handling)及错误类型
我不是程序猿儿
QT之路qt开发语言
QSerialPort是Qt框架中用于串口通信的类,它提供了与串行端口进行数据读写和配置的功能。这个类封装了底层操作系统对串口的处理,使得开发者可以方便地在跨平台应用中实现串口通信。回顾:写数据(WritingData)要向串口写数据,首先需要打开串口并配置相关参数(如波特率、数据位、校验位等)。写数据通常使用write()方法。例如:QSerialPortserial;serial.setPor
- Spark整合hive(保姆级教程)
万家林
sparkhivesparkhadoop
准备工作:1、需要安装配置好hive,如果不会安装可以跳转到Linux下编写脚本自动安装hive2、需要安装配置好spark,如果不会安装可以跳转到Spark安装与配置(单机版)3、需要安装配置好Hadoop,如果不会安装可以跳转到Linux安装配置Hadoop2.6操作步骤:1、将hive的conf目录下的hive-site.xml拷贝到spark的conf目录下(也可以建立软连接)cp/opt
- 何查看 Linux 下 CPU、内存和交换分区的占用率?
益达_glmsb
访问官网查看更多信息http://www.hanyunintel.com在大多数情况下我们只想查看内存使用情况,并没有考虑占用的百分比究竟是多少。如果你想要了解这些信息,那你看这篇文章就对了。--VinothKumar在Linux下有很多可以用来查看内存占用情况的命令和选项,但是我并没有看见关于内存占用率的更多的信息。在大多数情况下我们只想查看内存使用情况,并没有考虑占用的百分比究竟是多少。如果你
- mac电脑创建data目录
追风林
macosjava个人开发
开发的同学.在linux下.一些日志记录创建的/data/**目录…但是在mac电脑是没有data目录的…大家可以用这个方式来新建.亲测1,在/System/Volumes/Data下创建/data目录并设置目录权限cd/System/Volumes/Datasudomkdirdatasudochmod-R777data2,编辑文件/etc/synthetic.confsudovim/etc/sy
- linux下搭建boost、muduo、mysql、nginx
孜孜不倦fly
后端开发c++
参考博客:1.boost:C++网络编程-Boost::asio异步网络编程-01-boost库源码编译安装2.muduo:C++muduo网络库知识分享01-Linux平台下muduo网络库源码编译安装3.mysql:sudoapt-getinstallmysql-serversudoapt-getinstallmysql-clientUbuntu安装和使用MySQLERROR1698(2800
- windows系统配置别名
Java码农老王
windows别名
习惯了linux下的别名管理机制,而windows下却没有类似的功能。我看有些博客介绍说windows下配置别名还得修改注册表,太麻烦了(个人认为,windows的这一套,终究会被抛弃)。我自己摸索出一条比较便利的方式。1.创建一个名为alias的目录,专门放置自定义别名的脚本2.创建自定义脚本,脚本名为别名,以.cmd为后缀。比如ll命令:ll.cmd:@echooffls-l--color=a
- Squid代理:APT、PyPI和Docker的内网穿透解决方案
星谐
运维linuxscm运维网络linux
如果你是在内网环境,并且你知道一台服务器可以链接外网,可以通过Squid代理的方式更新apt、pypi、docker源。你可以通过在服务器A(172.16.16.122,可上外网)上设置代理服务器来实现服务器B通过服务器A访问外部APT源的需求。以下是具体步骤:内网环境下1.在可以访问外网的服务器A上安装代理服务假设你使用的是Squid作为代理服务器,因为它是Linux下常用的代理服务器软件之一。
- 算法——数值算法——牛顿迭代法
戏拈秃笔
数据结构与算法(java版)算法
目录牛顿迭代法一、1021:[编程入门]迭代法求平方根牛顿迭代法迭代法(Iteration)是一种通过反复递推计算来逼近解的方法。而牛顿迭代法(Newton'smethod)则是一种特定的迭代法,用于求解方程或函数的根、最小值、最大值等问题。一、1021:[编程入门]迭代法求平方根题目描述用迭代法求平方根公式:求a的平方根的迭代公式为:X[n+1]=(X[n]+a/X[n])/2要求前后两次求出的
- 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独立出来,数据持