- Kafka 如何优雅实现 Varint 和 ZigZag 编码
ByteUtils是Kafka中一个非常基础且核心的工具类。从包名common.utils就可以看出,它被广泛用于Kafka的各个模块中。它的主要职责是提供一套高效、底层的静态方法,用于在字节缓冲区(ByteBuffer)、字节数组(byte[])以及输入/输出流(InputStream/OutputStream)中读写Java的基本数据类型。ZigZag编解码过程的数学原理详解康托尔对角线映射。
- 【TypeScript学习笔记】TypeScript 核心知识点
Zaly.
Vue学习笔记typescript学习笔记
目录前言TypeScript核心概念基本类型与高级类型常用内置工具类型类型断言与类型守卫TypeScript在Vue3中的应用Vue3中TypeScript的作用范围Props和Emits的类型定义CompositionAPI中的类型支持前言TypeScript是微软开发的一个开源的编程语言,通过在JavaScript的基础上添加静态类型定义构建而成。TypeScript通过TypeScript编
- Springboot + MyBatis-Plus + PageHelper 分页性能混合优化方案
夜雨hiyeyu.com
javaspringbootmybatis后端databasespringjavaspringcloud
springboot+MyBatis-Plus+PageHelper分页性能混合优化方案一、传统分页性能瓶颈分析1.1深度分页问题1.2性能对比测试二、混合优化方案架构三、完整实现代码3.1依赖配置3.2配置类3.3混合分页工具类3.4Service层实现四、深度优化策略4.1游标分页优化4.2覆盖索引极致优化4.3分页缓存策略五、性能对比测试5.1测试环境5.2测试结果5.3内存消耗对比六、生产
- Java性能监测工具JMC的使用介绍
一、JMC介绍JMC是源自JRockitJVM的一套监控和管理工具,Oracle在发布JAVA7u4(Java7Update40)时将其包含在JDK中,用户不再需要单独下载。使用JMC可以监视和管理Java应用程序,不会导致相关工具类的大幅度性能开销,它使用为Java虚拟机(JVM)的普通自适应动态优化收集的数据。官方地址:https://www.oracle.com/java/technolog
- JAVA反序列化深入学习(三):CommonsCollections1
Neolock
漏洞原理JAVA反序列化java网络安全反序列化
ApacheCommonsCollections是一个扩展了Java标准库里的Collection结构的第三方基础库,它提供了很多强有力的数据结构类型并实现了各种集合工具类。作为Apache开源项目的重要组件,被广泛运用于各种Java应用的开发。目录JAVA环境依赖版本检查依赖配置资源下载前置知识AbstractMapDecoratorTransformedMapdecoratetransform
- JAVA工具类AES加密,模式:CBC(开箱即用)
一行一步
没有那么多废话,我知道这是一个简单的加密工具类,但是网上的工具类很杂,我这至少保证全都是自己试验过的可以直接使用!/***AES加密工具模式:CBC补码方式:PKCS5Padding*@authorAdministrator**/publicclassAESCBCUtils{//加密publicstaticStringencrypt(StringsSrc,StringencodingFormat,
- 掌握 RAG:使用 Langchain 和 Ollama 创建本地智能应用程序
知世不是芝士
langchain人工智能ai大模型大语言模型ollama本地部署大模型大模型技术
引言随着大型语言模型(LLMs)的兴起,我们见证了一种新的工具类别的诞生。然而,LLMs也存在局限性,尤其是当面对需要最新信息或专有数据的商业用例时。本文将介绍如何通过微调和RAG来解决这些问题。LLMs的局限性传统LLMs训练成本高昂,且只能访问公共信息。对于商业用途,需要模型能够提供基于内部知识的最新回应。文章介绍了两种解决这一问题的方法:微调和RAG。微调微调是针对特定数据集进一步训练预训练
- Collections集合类
进击的码奴
我一直有一种观点,就是尽量使用jdk提供的code,不要秀智商自己写。自己写的弊端很明显:1、bug问题。jdk比较都是大牛编的,还经过众多大众使用检验,bug率应该远远低于你个人写的。2、通用性。你写的规范还好,别人看函数名,类名就可以看懂。但是如果动不动就几万行、几十万或几百万行代码,谁有闲工夫一遍遍翻你写的工具类找实用方法。3、问题的警示性。你写的编译器没法智能提醒。但是像final啊,.u
- c#:TCP服务端管理类
妮妮学代码
c#tcp/ipjava
TCP客户端连接多个服务端的类1.架构图2.创建TCP客户端与服务端通信的工具类注:TcpClientAsyncTool类中是客户端连接服务端的,TcpClient实质是Server,套用服务端连接客户端的,使用过程中自行修改名称,本案例暂未修改。连接使用异步操作,其余为同步执行的。publicclassTcpClientAsyncTool{privateTcpClient_tcpClient;p
- 【Netty实战】基于Netty+WebSocket的IM通信后台服务代码详解
一、引言二、技术选型与前提条件三、核心代码实现服务的启动类ChatServer初始化器类WSServerInitializer心跳Handler类HeartBeatHandlerOkHttpUtil工具类json实体转换工具类JsonUtils发送消息的类型/动作枚举类MsgTypeEnum消息实体类ChatMsg自定义通信Handler类ChatHandler会话用户id和channel的关联处
- 小架构step系列18:工具
秋千码途
架构
1概述在写代码的时候,有很多通用的、与业务无关逻辑,这些一般写成工具类方法。这些工具类方法慢慢地被积累起来,变成了开源包,可以直接使用开源包,而不是自己再花时间来重复造这些轮子。这些工具类的开源包比较多,公司如果没有控制的话,不同的开发人员就会选自己熟悉的开源包,甚至都拿来练练手。这样的后果就是,在一个工程内使用了五花八门的工具类包,维护代码的时候不好维护,如果要升级一些框架包或者扫描漏洞,发现很
- Java并发编程详解
林晓松
Javajava开发语言
文章目录一、线程基础1.线程的本质2.创建线程的两种方式3.线程的生命周期二、线程同步与锁机制1.竞态条件(RaceCondition)2.同步解决方案3.volatile关键字三、线程间协作1.wait()、notify()、notifyAll()2.Condition接口四、并发工具类(java.util.concurrent)1.Executor框架2.并发集合3.原子类(Atomic)4.
- java中map和对象互转工具类
在项目开发中,经常碰到map转实体对象或者对象转map的场景,工作中,很多时候我们可能比较喜欢使用第三方jar包的API对他们进行转化,而且用起来也还算方便,比如像fastJson就可以轻松实现map和对象的互转,但这里,我想通过反射的方式对他们做转化,也算是对反射的学习和研究吧;1、map转对象;主要思路,将map中的key-value取出来,然后和给定的对象去匹配,为了使工具方法更具通用性,直
- JUC工具类
在黑马点评项目实战中使用Redis实现全局秒杀的课程中,提到了一个名词JUC,在测试生成随机id的有效性时使用到了JUC的工具类:CountDownLatch,这里简单进行一个介绍和了解,想学习更具体的有关多线程与并发编程的内容,可以去看黑马有专门的JUC教程。一、CountDownLatch:多线程协调工具类CountDownLatch是Java并发包(JUC)中的一个同步辅助类,主要用于协调多
- 机器视觉通用平台之点点距离算法工具类
usingCvBase;usingCWindowTool;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingHalconDotNet;usingNewtonsoft.Json;usingSystem.IO;namespaceCv
- 机器视觉通用平台之点轮廓距离算法工具类
小治视觉
c#算法visualstudiowindowsui
usingCvBase;usingCWindowTool;usingHalconDotNet;usingSystem;usingSystem.Collections.Generic;usingSystem.IO;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceCvImageTool.DistancePC{
- Jfinal+SQLite java工具类复制mysql表数据到 *.sqlite
秋林辉
sqlitejavamysql
处理了时间类型packagechangeDataBase;importjava.sql.*;importjava.util.ArrayList;importjava.util.Iterator;importjava.util.List;publicclassMySQLToSQLiteMigration{privatestaticfinalStringMYSQL_URL="jdbc:mysql://
- ThreadLocal 在 Spring 与数据库交互中的应用笔记
笑衬人心。
JAVA学习笔记数据库spring笔记
一、基本概念1.1什么是ThreadLocal?ThreadLocal是Java提供的一个线程本地存储工具类。每个线程访问ThreadLocal时,都只能看到自己线程范围内的变量副本,线程之间互不影响。常用于保存线程上下文信息,如用户登录信息、事务状态、数据库连接等。ThreadLocalthreadLocal=newThreadLocal>resources=newNamedThreadLoca
- java LockSupport park() unpark() 的用法&和wait() notify()的区别
javaLockSupportpark()unpark()的用法ockSupport类是Java并发包中的一个工具类,提供了一些基本的线程阻塞和唤醒操作。其中,unpark(Threadthread)方法是用来唤醒指定线程的关键方法。下面详细解释一下unpark方法:unpark方法的作用:唤醒线程:unpark方法可以解除指定线程的阻塞状态,使其有机会继续执行。如果线程在调用park()之前被u
- 【SpringBoot】数据脱敏
阿Q说代码
SptingBootspringboot数据脱敏自定义注解JacksonJsonSerializer序列化
文章目录什么是数据脱敏@JsonSerialize自定义Jackson注解定制脱敏策略定制JSON序列化实现脱敏工具类定义Person类,对其数据脱敏模拟接口测试总结什么是数据脱敏数据脱敏,也称为数据的去隐私化或数据变形,是一种技术手段,用于对某些敏感信息通过特定的脱敏规则进行数据的变形,从而实现敏感隐私数据的可靠保护。这样可以在开发、测试和其他非生产环境以及外包环境中安全地使用脱敏后的真实数据集
- 反射+注解实现数据库Map转换成实体Map工具类
皮卡丘比比比
实现场景因为原始的需求是从数据库中查询出来的一个实体字段比如一个Useruser=newUser()的实体类,有userName,userId两个字段。然后我返回一个list给前端,Listlist现在需求变化,我需要添加一个额外的字段,比如userCompany,就没有办法使用刚才那个返回对象的方法现在直接从数据库中多表查询一个Map如下("user_name","curry"),("user_
- queryWapper的时间类型比较方法
Coder-thinking
数据库数据库mybatis
QueryWrapper是MyBatis-Plus中的一个非常实用的工具类,它可以帮助我们构建更加灵活的查询条件。在QueryWrapper中,我们可以使用各种比较操作符来进行时间比较。以下是一些常用的时间比较操作:等于(eq):queryWrapper.eq("create_time","2021-08-01");不等于(ne):queryWrapper.ne("create_time","20
- SpringBoot文件上传下载工具类完整指南
z小天才b
Javaspringboot后端java
目录项目准备1.Maven依赖2.目录结构文件上传工具类FileUploadUtil.java文件下载工具类FileDownloadUtil.java控制器示例FileController.java配置文件application.ymlFileConfig.java(配置类)前端调用示例HTML页面注意事项1.安全考虑2.性能优化3.存储考虑4.监控和日志常见问题解决1.中文文件名乱码2.文件上传
- Java & Go SDK 管理工具与最佳实践
yuluo_YX
Javawebbasicjavagolangjavagolang开发语言
流行的版本管理工具类别工具名称GitHub链接Star数JavaSDKJabbahttps://github.com/shyiko/jabba3.2kJenvhttps://github.com/jenv/jenv6.2kSDKManhttps://github.com/sdkman/sdkman-cli6.4kGoSDKGVMhttps://github.com/moovweb/gvm10.9k
- Hutool TreeUtil快速构建树形数据结构
yifanghub
工具类java
在管理菜单、部门结构等场景时,我们经常需要将数据库中的层级数据转换为树形结构。本文将通过Hutool的TreeUtil工具类,实现零递归快速构建树形结构。一、环境准备JDK1.8+SpringBoot2.xHutool5.8.16MySQL8.0二、数据准备--创建部门表CREATETABLE`sys_dept`(`id`intNOTNULLAUTO_INCREMENT,`dept_name`va
- 底层解剖ThreadLocal及其引发的内存泄漏问题
我认为可以!
jvmjavaThreadLocalThreadLocalMap内存泄漏
首先我们先明确一点,这里我们谈论的是比如线程池中的核心线程的情况,而不是普通的run完就销毁的线程。后面会继续说明为什么。关于ThreadLocal和ThreadLocalMap假设线程run()这样:publicvoidrun(){ThreadLocalthreadLocal=newThreadLocal()就只是new了一个这个工具类,其他的什么都没有发生。并不是每个线程都有一个它,不要混淆了
- SpringBoot+Mybatis+MySQL+Vue+ElementUI前后端分离版:整体布局、架构调整(二)
喜欢敲代码的程序员
前后端分离SpringBootSpringspringbootmybatismysqlvue.jselementui
目录一、前言二、后端调整1.实体类调整2.菜单相关接口3.用户相关接口4.新增工具类5.新增菜单树返回类6.配置类、拦截器三、前端调整1.请求调整2.页面布局、样式调整1.user.vue2.index.vue3.请求拦截四、开发过程中的问题五、附:源码1.源码下载地址六、结语一、前言此文章在上次的基础上进行了部分调整,并根据用户体验(我自己)确认了页面整体布局和数据呈现,暂定就先这样,后续有需要
- easypoi中excel注解开关_easypoi: 入,Word模板导出,通过简单的注解和模板 语言(熟悉的表达式语法),完成以前复杂的写法...
weixin_39975900
===========================EasyPoiExcel和Word简易工具类easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板语言(熟悉的表达式语法),完成以前复杂的写法作者博客:http://blog.afterturn.cn/作者邮箱
- java PDF模板生成并导出(文字、表格、图片)
最新word转pdf模板导出可分页带图片http://t.csdn.cn/JmWZb1:jar包com.itextpdfitext-asian5.2.0com.itextpdfitextpdf5.4.32:制作一个pdf模板创建表单–编辑域3:工具类:/***pdf模板导出**@parammap*@paramout*@throwsException*/publicstaticvoidcreatPd
- Java字段比较工具类设计
萧曵 丶
JAVAjavapython开发语言
以下是一个设计用于比较两个同类型对象字段变化的工具类,它使用Java反射机制检查每个字段是否有变化(不考虑递归深度比较):importjava.lang.reflect.Field;importjava.util.HashMap;importjava.util.Map;importjava.util.Objects;publicclassFieldChangeComparator{/***比较两个
- 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独立出来,数据持