- 线程池-1:线程池是如何复用线程的?
进窄门见微光行远路
并发编程java开发语言
这段代码实现了一个简单的线程池SimpleThreadPool。主要包括以下几个关键部分:构造函数:初始化最大线程数maxPoolSize、任务队列taskQueue、当前线程数currentPoolSize,以及锁lock和条件taskAvailable。submit(Runnabletask)方法:用于提交任务到线程池。如果当前线程数小于最大线程数,会创建并启动一个新的工作线程来执行任务;否则
- 14、传输层原理及多路复用解复用
单俞浩
计算机网络网络传输层原理多路复用和解复用
一、传输层原理1、传输层是进程与进程之间的服务,是远程主机之间的逻辑通信2、传输层的报文传输过程发送方:将应用层的报文分为报文段,然后传送给网络层;接收方:将报文段重组成报文,然后传递给应用层3、传输层与网络层之间的关系(1)传输层协议:TCP和UDP,网络层协议:IP分组的传输协议(2)传输层服务:主机之间的逻辑通信,网络层服务:进程之间的逻辑通信传输层依赖于网络层的服务,并对网络层提供的服务进
- 【代码随想录算法训练营第42期 第三十九天 | LeetCode198.打家劫舍、213.打家劫舍II、337.打家劫舍III】
天.真
算法leetcode
代码随想录算法训练营第42期第三十九天|LeetCode198.打家劫舍、213.打家劫舍II、337.打家劫舍III一、198.打家劫舍解题代码C++:classSolution{public:introb(vector&nums){if(nums.size()==0)return0;if(nums.size()==1)returnnums[0];vectordp(nums.size());dp
- 【DOTA2】DPC中国区联赛结束,EHOME成功保级
一竞技
1、2022DPC中国联赛第三赛季结束了最后一个比赛日的争夺,经过了一天的加赛,DPC中国联赛第三赛季的排名全部出炉。最终,RNG获得冠军;Aster、XG、PSG.LGD通过加赛,分列2、3、4名,获得了通往阿灵顿Major的资格;VG在加赛中输给EHOME,与DEC一同遗憾降级。2、根据液体百科利雅得大师赛参赛人员信息显示:TI亚军、知名乌克兰Dota2职业选手Resolut1on将代替战队三
- Docker容器如何与主机同网段其它主机互通?
lingshengxiyou
linuxDPDKc++docker容器linux服务器后台开发
一、前言1、使用场景对开发者而言,随着容器的普遍使用,开发者可以很方便的搭建项目的简易测试环境。有时候为了项目可以在任意机器一键运行,不用配置连接IP等信息。所以希望可以提前固定容器的IP地址,而且一个项目有时候涉及多个容器,可能还会部署在多台机器上。所以如果容器间可以固定IP跨机器通信的话,会有很大方便。(免费订阅,永久学习)学习地址:Dpdk/网络协议栈/vpp/OvS/DDos/NFV/虚拟
- @Autowired获取配置文件中被注入实例的两种方式
weixin_30719711
java
一、说明二、那么在JavaBean中如何通过@Autowired获取该实例呢?有两种方式:1.直接获取@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration("classpath:applicationContext_test.xml")publicclassMyTest1{@AutowiredprivateHibernateTem
- Spring高手之路22——AOP切面类的封装与解析
砖业洋__
Spring高手之路JavaspringaopAdvisorTargetSource
文章目录1.AOP是如何收集切面类并封装的?2.Advisor是什么,它是怎么构建的?2.1什么是Advisor2.2Advisor的构建(源码分析+时序图说明)3.TargetSource的构建和作用3.1TargetSource的作用3.2TargetSource的构建1.AOP是如何收集切面类并封装的?在Spring中,AOP(Aspect-OrientedProgramming,面向切面编
- CentOS 7 yum 不能安装package
surayang
Linuxyuminstallpackageerror
CentOS7使用yum安装时出现下面的错误:[root@localhostDownloads]#yuminstallncurses-develLoadedplugins:fastestmirror,langpacksLoadingmirrorspeedsfromcachedhostfile*base:ftp.sjtu.edu.cn*extras:ftp.sjtu.edu.cn*updates:c
- 网站建设完成后,门户网站如何做seo
博洋科技
seo门户网站前端
门户网站由于其信息量大、类别多样的特点,在SEO优化方面面临着独特的挑战和机遇。正确有效地进行SEO优化,不仅能够提升门户网站在搜索引擎中的排名,还能显著增加网站流量和用户参与度。以下将详细介绍门户网站如何正确进行SEO优化:网站建设完成后,门户网站如何做seo关键词研究与优化关键词选择:门户网站需要识别并选择与其内容相关的关键词,包括热门关键词和长尾关键词。通过工具如GoogleKeywordP
- 什么样性格的人最适合做HR?
人力运营那点事
HR到底应该具备什么样的性格?什么样的性格是适合做HR的?,这是很多未入行或入行不久的人经常问的一个问题。其实:只要你喜欢HR,你就来做吧!性格不是唯一的决定因素!这话包含两层意思:▼HR有很多岗位,每个岗位需要的性格特质是不一样的;▼性格可以通过后天的努力去做一些“调整”!现在,我们先科普一下PDP性格测试:PDPPDP的全称是ProfessionalDyna-MetricPrograms(行为
- 【网络】UDP协议创建流程详解(第三篇)
爱编程的小猴
网络网络udp网络协议
目录1.创建套接字socket()函数原型参数返回值2.bind()一、网络编程中的bind()函数主要用途函数原型返回值3.recvfrom()一、函数原型二、返回值三、常见错误4.sendto()一、函数原型二、参数说明三、返回值四、使用注意事项1.创建套接字socket()socket()函数是网络编程中的一个基本且关键的函数,它用于创建一个新的套接字(socket)。套接字是网络通信中的端
- JavaDay21 tcp三次握手、tcp和udp协议的区别、交互图片的练习
自称二次元人的程序员
Java基础的作业整理tcp/ipjava
1.简述TCP的三次握手。TCP的三次握手:TCP协议中,在发送数据的准备阶段,客户端与服务器之间的三次交互,以保证连接的可靠。(1)第一次握手,客户端向服务器端发出连接请求,等待服务器确认;(2)第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求;(3)第三次握手,客户端再次向服务器端发送确认信息,确认连接。完成上述的三次握手后,客户端和服务器端的连接就已经建立了,每次连接的创建
- 000FPGA(Field Programmable Gate Array)概述
linford1026
笔记
转载自知乎https://zhuanlan.zhihu.com/p/385475453FPGA(FieldProgrammableGateArray)现场可编程逻辑门阵列,属于专用集成电路中的一种半定制电路,是可编程的逻辑阵列,其能够有效解决原有的器件门电路数较少的问题。本文主要从FPGA结构特点、产业链、应用领域等方面进行具体介绍。1、FPGA基本结构及特点FPGA芯片的基本结构包括IOE(输入
- FPGA - 现场可编程门阵列 LFE3-17EA-6MG328C
choushanchou4289
FPGA-现场可编程门阵列LFE3-17EA-6MG328C制造商:Lattice产品种类:FPGA-现场可编程门阵列封装:Tray系列:LFE3商标:LatticeCNHTS:8542319000HTS代码:8542310001MXHTS:85423199产品类型:FPGA-FieldProgrammableGateArray工厂包装数量:168子类别:ProgrammableLogicICsT
- 在Android开发中,如何使用SharedPreferences(简称SP)一个轻量级的数据存储方式
西瓜本瓜@
androidjava原生开发工具类
目录全局SharedPreferences工具类代码说明:如何使用这个工具类?在Android开发中,SharedPreferences(简称SP)是一个轻量级的数据存储方式,常用于保存应用的配置信息或少量的数据。为了便于在全局使用,可以将其封装到一个工具类中。以下是一个带有详细中文注释的全局SharedPreferences存储工具类的Java代码示例:全局SharedPreferences工具
- WordPress 后台缓存插件:WP Admin Cache提高缓存页面
818源码资源站
源码下载00818.cn源码下载818资源站缓存
使用WordPress建站会安装一些静态缓存插件,比如:WPRocket、CacheEnabler、CometCache、W3TotalCache、WPSuperCache、WPFastestCache、HyperCache等等,这些都用于缓存前端。今天介绍一款专门用于缓存后台的插件:WPAdminCache。启用后,提速效果还是很明显,比如后台所有文章页面秒开。缓存会在更新文章、保存设置、保存小
- Error:null value in entry: incrementalFolder=null
努力与幸运
一般是在Androidstudio异常退出(比如强制关机)后,重新打开后运行项目出现该问题。删除项目根目录的.gradle文件夹,然后CleanProject——RebulidProject。
- MarkDown测试
颜色不1样的烟火
标题1标题2标题3标题4标题5标题6正文正文正文正文链接百度一下,你就知道图片三文鱼引用床前明月光,疑是地上霜。举头望明月,低头思故乡。代码引用HelloWorldpublicstaticvoidmain(String[]args){System.out.println("HelloWorld");}代码例子:return-1;column1column2column3data[0][0]data
- Puock基于WordPress开发的高颜值的自适应主题 支持白天与黑夜模式v2.8.4
专业软件系统开发
源码下载wordpress主题
内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍WordPress管理后台中的「外观」-「主题」中点击「添加」,选择Puock的主题包进行上传安装并启用即可。提示:为了防止主题不兼容,请在安装主题前进行数据备份,防止数据字段重复覆盖等情况发生。环境要求WordPress>=6.0,PHP>=7.4主题特性支持白天与暗黑模式全局无刷新加载支持博客、CMS、企业三
- 如何降级 WordPress 到旧版本
Linux大师
|我们都知道,每当WordPress有新本的时候,我们都可以在后台一键更新。但是有些时候,我们的主题或插件可能不兼容新版本的WP,这时候我们如果要降级为之前的旧版本,该怎么操作呢?下面一起来看看。|手动降级1.下载对应的WordPress旧版本下载你目前使用的语言版本(即如果你使用官方中文版,就下载官方中文的旧版本,如果是英文原版,就下载英文旧版本)WordPress官方中文版各版本下载地址:ht
- @PrintParameter
M_ENG
packagecom.meng.d_common.annotation;importjava.lang.annotation.*;/***打印参数**@authorMENG*@version2017/7/13*@see*/@Target({ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic@interfa
- 如何有效解决建筑业数字化转型的三大障碍
数字搬运家
聚焦十四五时期建筑业数字化,智能化发展趋势,近年来,我国建筑业转型升级取得明显进展,但主要依赖资源要素投入、大规模投资拉动发展,数字化程度较低的问题还比较突出。尽管近几年建筑行业增加值增速与GDP增速差距收窄,增速放缓,但是建筑业在国民经济中的重要性却并没有降低,其规模也依然非常巨大,建筑业正在从快速增长期走向高质量可持续发展期。当前建筑产业数字化存在三个主要障碍一是建筑业上下游产业链长、参建方众
- 科研绘图系列:R语言单细胞差异基因四分图(Quad plot)
生信学习者2
R语言可视化r语言数据分析数据挖掘
介绍在单细胞分析领域,为了探究不同分组间同一细胞类型的基因表达差异,研究者们常采用四分图(QuadPlot)作为分析工具。该图形的横轴代表比较组1,而纵轴代表比较组2。通过这种布局,四分图能够有效地展示两组间共有的差异表达基因,从而为深入理解细胞类型在不同条件下的分子特性提供直观的视角。这种可视化方法不仅揭示了组间基因表达的异同,还有助于识别可能在生物学过程或疾病发生中起关键作用的基因。加载R包导
- webpack打包报错UglifyJs Unexpected token: punc (,)
enjoy嚣士
React+Antdwebpack前端node.js
项目当dev命令运行时能正常运行,打包后却报错UglifyJsUnexpectedtoken:punc(,),>yarnbuildCreatinganoptimizedproductionbuild...Failedtocompile.Failedtominifythebundle.Error:static/js/main.jsfromUglifyJsUnexpectedtoken:punc(,)
- 0-1背包问题
能力越小责任越小YA
算法算法动态规划c++
问题描述:N种物品,每种物品只有1个,每个物品有自己的重量和价值,有一个最多只能放重量为M的背包。问:这个背包最多能装价值为多少的物品?二维dp数组解法:dp数组的含义:dp[i][j]表示下标为0-i(物品的编号)之间的物品任取,放进容量为j的背包里的最大价值;递推公式:dp[i][j]=max(dp[i-1][j],dp[i-1][j-weight[i]]+value[i]);初始化:dp[i
- 完全背包&多重背包问题(动态规划)
能力越小责任越小YA
算法算法动态规划c++
完全背包问题:每个物品使用次数没有限制,与0-1背包的不同之处在于遍历背包的顺序是正序。#includeusingnamespacestd;intmain(){intn,v;cin>>n>>v;vectorweight(n),values(n),dp(v+1,0);//dp[j]:容量为j的背包的最大价值for(inti=0;i>weight[i]>>values[i];}for(inti=0;i
- minio的联邦扩容
睡不醒的双眼皮
云原生
#1.需要先部署etcd服务自行解决#2.docker运行命令###单机部署dockerrun-itd--nameminio--restart=always--net=host\-e"MINIO_ROOT_USER=admin"\-e"MINIO_ROOT_PASSWORD=Renjc0027"\-e"MINIO_ETCD_ENDPOINTS=http://192.168.100.141:3066
- 至尊王城
爱吃鱼的清
隐私协议IntroductionWeregardsuserinformationsecurityandprivacyprotectionas"lifeline."Weadheretothe"everythingbasedonuservalue"philosophy,andstrivetoimprovethetransparencyofinformationprocessing,enhanceyou
- 【网络安全】WordPress Uncontrolled Resource Consumption
秋说
网络安全web安全漏洞挖掘wordpress
未经许可,不得转载。文章目录WordPresswp-cron.php实战漏洞危害解决措施WordPressWordPress是全球最广泛使用的内容管理系统(CMS),目前约有43%的网站依赖于它。由于其用户友好的界面和丰富的插件功能,WordPress成为了全球最受欢迎的CMS。然而,在使用WordPress的过程中,用户常常忽视一些潜在的配置问题,其中之一就是wp-cron.php文件的设置。w
- 经济学人2019年3月9日Politics this week
英语学习社
Politicsthisweek《经济学人》2019年3月9日刊AbdelazizBouteflika,thepresidentofAlgeria,defiedprotestersbyregisteringtorunforafifthterminoffice.Theailingoctogenarianiswidelyseenasafigureheadforacabalofgeneralsandbu
- 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独立出来,数据持