- Python中的pyttsx3库:文本到语音转换的利器
会三十六变的猫
pythonpython开发语言pycharmpip
pyttsx3是一个跨平台的文本到语音转换库,它可以在没有安装其他依赖项的情况下在Windows、Linux和macOS上运行。pyttsx3使用系统自带的TTS(文本到语音)引擎,因此可以确保在各种操作系统上都具有较高的稳定性和可用性。官方文档:https://pyttsx3.readthedocs.io/en/latest/https://pyttsx3.readthedocs.io/en/l
- Linux从入门到开发实战(C/C++)Day12-ICMP协议
黒井深
linuxc语言c++
ICMP协议:InternetControlMessageProtocol网络控制报文协议作用:用来检测网络是否畅通ping命令实现流程:1.创建socketTCP:SOCK_STREAMUDP:SOCK_DGRAMICMP:SOCK_RAWSOCK_PACKETicmp协议只有root用户可以创建2.设置套字节setsockopt3.设置接收ip4.打包准备好要发送的数据包5.发包6.收包7.解
- Redis安装详解(单机安装,sentinel哨兵模式,Cluster模式)
dream21st
中间件学习笔记sentinelredisjava
文章目录1Redis单机安装1.1windows中安装1.2linux中安装2Redis主从复制安装3Redis哨兵模式安装4Springboot项目操作RedisSentinel集群5官方cluster分区搭建5.1部署架构5.2RedisCluster的优势5.3集群搭建6Springboot项目操作Cluster集群1Redis单机安装Redis安装包可以从官网下载,也可以在redis的官方
- flask下https教程
云帆@
flaskflaskhttpspython
一、定义linux下flaskhttps协议二、实现linux下flaskhttps协议生成SSL证书和密钥文件。您可以使用工具如openssl来生成自签名SSL证书和密钥文件。运行以下命令生成证书和密钥文件:opensslreq-x509-newkeyrsa:4096-nodes-outcert.pem-keyoutkey.pem-days3652.将生成的cert.pem和key.pem文件放
- Android的内核
setsailgo
androidruntime
Android的内核是基于Linux的长期支持版本的“Android通用内核(ACK)”。Android作为一个广泛使用的操作系统,其根基在于内核的设计和功能。下面将深入探讨Android内核的各个方面,从其基本结构到与Linux内核的关系,再到内核的版本管理及在设备上的应用:Android内核的基础结构基于Linux的内核:Android内核是构建在Linux长期支持版本之上的,这使得其能够充分
- CentOS 运维常用的shell脚本
一碗情深
运维运维centoslinux
文章目录一、操作系统磁盘空间查看实时获取系统运行状态获取cpu、内存等系统运行状态获取系统信息二、应用程序获取进程运行状态查看有多少远程的IP在连接本机三、用户管理统计当前Linux系统中可以登录计算机的账户有多少个创建用户四、自动化管理自动备份日志文件监控的页面地址,对tomcat状态进行重启或维护实时监控本机内存和硬盘,剩余空间不足发送报警邮件一、操作系统磁盘空间查看disk_info.shd
- Linux字符设备驱动 -- regmap子系统
lagransun
linux运维服务器
文章目录环境一、关于regmap子系统二、regmap-i2c初始化2.1regmap_get_i2c_bus()2.2__devm_regmap_init()三、regmap与irq3.1申请中断描述符irq_alloc_descs()3.2为设备申请irq_domian,建立hwirq与virq联系3.3request_threaded_irq()函数注册中断处理函数环境linux4.9arm
- linux脚本监控重启shell脚本,CentOS系统的监控进程状态并自动重启的shell脚本
小雨芝时节
在CentOS系统中利用Crontab监控进程是否被结束并自动重启。附加每天凌晨4点自动重启服务器。1、编辑Crontabcrontab-e2、按i进行编辑*/1****/root/monitor.sh#每分钟运行一遍monitor.sh脚本05***/sbin/reboot#每天凌晨5点自动重启服务器12*/1****/root/monitor.sh#每分钟运行一遍monitor.sh脚本05*
- 百度秋招测开面经
情书学长
面试百度笔记
1、自我介绍2、MySQL一、结合简历的项目说一下数据库设计如何优化二、说一下所知道的索引类型三、索引的优缺点四、索引的使用建议3、计算机基础一、TCP和UDP的区别二、TCP的三次握手的流程三、进程和线程的概念和区别四、深拷贝和浅拷贝的区别5、Linux一、文件查看前10行的命令二、文件编辑的命令三、vim和view的区别四、查看端口的命令五、查看进程的命令6、数据结构一、说一下知道的数据结构二
- Linux系统部署Kafka教学
情书学长
linux学习笔记kafka
第一步:Zookeeper安装(准备工作)1、解压安装将安装包上传到/opt/software目录下,解压并修改名称tar-zxvfapache-zookeeper-3.5.7-bin.tar.gz-C/opt/module/mvapache-zookeeper-3.5.7-bin/zookeeper2、配置服务器编号1)在/opt/module/zookeeper-3.5.7/这个目录下创建zk
- 【CTF】MISC常用工具集锦/使用方法简介
不会代码的小徐
misc网络安全测试工具
前言#MISC题型多变而且工具繁杂,因此自己花时间整理了一份工具列表,以便日后参考用流畅地阅读这篇博客,你可能需要:Python2.7.18+Python3.8+任何一个更高版本的Python,使用conda管理Linux虚拟机,kali即可流畅访问Google/GitHub等站点的网络通用工具#PuzzleSolver#专为misc手打造的瑞士军刀(?),整合了多种脚本(base,字频分析,pn
- Linux三剑客-sed
krb___
linux运维服务器
前言:sed是StreamEditor(字符流)的缩写,简称流编辑器。sed是操作、过滤和转换问吧内容的强大工具。sed是一次读取一行数据常用功能包括结合正则表达式对文件实现快速增删改查,其中查询的功能中最常用的两大功能是过滤(过滤指定字符串),取行(取出指定行)sed命令语法:sed[选项][sed内置命令字符][输入文件]选项参数解释-n取消默认sed的输出,常与sed内置命令p一起使用-i直
- 【Linux入门】iptables的安装与配置应用实例
Karoku066
linux网络运维服务器bash
文章目录iptables安装与配置安装iptablesiptables配置方法iptables命令行配置方法iptables规则匹配详细整理1.通用匹配2.隐含匹配显式匹配(扩展匹配)1.多端口匹配2.IP范围匹配3.MAC地址匹配4.状态匹配SNAT与DNATSNAT(源网络地址转换)原理与应用SNAT应用环境SNAT原理SNAT转换前提条件SNAT转换示例DNAT(目标网络地址转换)原理与应用
- 第二单元 Linux常用命令及使用
Dovis_911b
1.目录切换命令1.1目录切换命令cdusr/切换到该目录下usr目录cd../切换到上一层目录cd/切换到系统根目录cd~切换到用户主目录2.目录操作命令2.1增加目录命令:mkdir目录名称示例:在根目录/下mkdirtest,就会在根目录/下产生一个test问目录need-to-insert-img2.2查看目录命令:ls[-al]父目录注意:ls-l可以缩写成ll2.3寻找目录命令:fin
- 2024网络安全学习路线 非常详细 推荐学习
白帽黑客-晨哥
web安全学习安全数据库php
关键词:网络安全入门、渗透测试学习、零基础学安全、网络安全学习路线首先咱们聊聊,学习网络安全方向通常会有哪些问题1、打基础时间太长学基础花费很长时间,光语言都有几门,有些人会倒在学习linux系统及命令的路上,更多的人会倒在学习语言上;2、知识点掌握程度不清楚对于网络安全基础内容,很多人不清楚需要学到什么程度,囫囵吞枣,导致在基础上花费太多时间;看到很多小伙伴,买了HTML,PHP,数据库,计算机
- linux安装Oracle所需pdksh包下载
Amor风信子
linuxoracle
linux安装Oracle所需pdksh包下载:pdksh-5.2.14-37.el5.x86_64.rpm的下载提取码:msoe直接安装即可:rpm-ivhpdksh-5.2.14-37.el5.x86_64.rpm如果安装失败则尝试强制安装,强制安装命令:rpm-ivh*****.rpm--nodeps--force例如;rpm-ivhpdksh-5.2.14-37.el5.x86_64.rp
- unable to prepare context: path “.\r“ not found
嘟嘟 嘟嘟嘟
执行sh脚本的时候,报标题错误原因是脚本是在Windows上编辑,然后上传到Linux上执行。好像是2个系统编码不一样导致的vim打开脚本进入命令行输入setff=unix再保存退出即可
- Ubuntu+Qt+SDL2+FFmpeg
DarcyZhou
此文档用于Ubuntu系统中搭建FFmpeg的开发环境。Qt作为开发软件,SDL2是一套开放源代码的跨平台多媒体开发库。1.安装Qt(1)下载版本:qt-opensource-linux-x64-5.9.8.runimage.png(2)安装给文件添加可执行权限:sudochmod-R777qt-opensource-linux-x64-5.9.8.run开始安装:安装过程中选择全部安装即可。(需
- shell 脚本(Linux--ubuntu)
husky_1
介绍1.Shell介绍(1)shell是一种命令语言,也是一个用C语言编写的程序(命令解释器->“翻译官”)(2)作用:主要提供一个接口使用户与内核交互操作。(3)流程:接收用户输入的命令并且进行解析,然后将命令送入内核去执行->最后将结果返回给用户。2.Shell常见类型名称来源比较sh(BourneShell)AT&TBell实验室的SteveBourne开发最早csh(CShell)加州伯克
- chromedriver驱动下载
小太阳☀️
Python爬虫seleniumChrome爬虫
下载各个版本的chromedriver,包括linux系统、Mac系统和Windows系统下载地址一:http://chromedriver.storage.googleapis.com/index.html下载地址二:https://npm.taobao.org/mirrors/chromedriver/
- PyInstaller打包
Hi~晴天大圣
Pythonpython
一、Pyinstaller使用背景在业务场景中,经常需要Python开发一些脚本/小程序/GUI界面,交付给一些小白或未安装Python的小伙伴们使用。Pyinstaller是一个免费打包工具,它能够在Windows、Linux、MacOSX等操作系统下将Python源文件打包成可执行的.exe文件,它可以在没有安装Python的环境中运行,也可以作为一个独立文件方便传递和管理。PyInstall
- Ubuntu 18.04 出现GLIBC_2.28 not found的解决方法(亲测有效)
Yimning
UbuntuLinuxubuntulinuxdebian
关于/lib/x86_64-linux-gnu/libc.so.6:versionGLIBC_2.28’notfound`出现报错,建议不要使用源码包去编译并升级。在下文有分享一个使用官方的Debian软件包去升级使用的方法。仅供参考!环境#uname-aLinuxUbuntu5.4.0-144-generic#161~18.04.1-UbuntuSMPFriFeb1015:55:22UTC202
- 【干货】你可能不知道的 20个 Linux 网络工具
迷途不归路
转载自公众号:DevOps技术栈原文链接:http://linoxide.com/monitoring-2/network-monitoring-tools-linux/如果要在你的系统上监控网络,那么使用命令行工具是非常实用的,并且对于Linux用户来说,有着许许多多现成的工具可以使用,如:nethogs,ntopng,nload,iftop,iptraf,bmon,slurm,tcptrack
- linux(CentOS、Ubuntu)安装python3.12.2环境
weixin_41934979
linux运维服务器python
1.下载官网Python安装包wgethttps://www.python.org/ftp/python/3.12.2/Python-3.12.2.tar.xz1.1解压tar-xfPython-3.12.2.tar.xz解压完后切换到Python-3.12.2文件夹(这里根据自己解压的文件夹路径)cd/usr/packages/Python-3.12.2/1.2升级软件包管理器CentOS系统:
- Linux命令行中几个使用history相关的技巧
老率的IT私房菜
当你频繁使用Linux命令行时,有效地使用历史记录可以大大提高生产力。1.使用HISTTIMEFORMAT显示时间戳当在命令行输入history时,它将显示序号和命令。出于审计目的,将时间戳与命令一起显示可能会有所帮助。[root@localhost~]#exportHISTTIMEFORMAT='%F%T'[root@localhost~]#history|less2.使用Ctrl+r搜索历史记
- python ‘pip‘ 不是内部或外部命令,也不是可运行的程序
Jinx Boy
pythonpip
当你遇到'pip'不是内部或外部命令,也不是可运行的程序这样的错误时,通常是因为Python的pip可执行文件没有被添加到系统的环境变量中。这导致了命令行界面(如Windows的命令提示符或PowerShell,或Linux/MacOS的终端)找不到pip命令。要解决这个问题,你可以按照以下步骤操作:查找Python安装位置:找到你的Python安装目录,通常是在C:\Users\\AppData
- Go学习笔记
南方淮竹
golanggolang学习笔记常识后端开发语言人工智能
Go环境变量GOROOT:Go语言安装根目录的路径。GOPATH:若干工作区目录的路径,我们自己定义的工作空间。GOBIN:GO程序生成的可执行文件(executablefile)的路径。国内镜像https://goproxy.cn#macOSorLinuxexportGO111MODULE=onexportGOPROXY=https://goproxy.cn#othersgoenv-wGO111
- 常用时间命令和同步时间服务
不屈的铝合金
边学边记-linuxlinux
1.时间命令在Linux系统中,有很多与时间相关的命令,这些命令可以帮助用户查看系统时间、设置系统时间、计划任务等。命令功能说明date显示或设置系统日期和时间hwclock显示或设置硬件时钟(BIOS时间)ntpdate同步本地系统时间与远程NTP服务器上的时间timedatectl查询或修改系统时钟和时区设置1.1date命令【功能说明】date命令用于显示当前的系统时间或设置系统时间。【语法
- Linux系统定时任务Cron(d)
不屈的铝合金
边学边记-linuxlinux服务器运维centos
1.Cron(d)介绍Cron是Linux系统中以后台进程模式周期性执行命令或指定程序任务的服务软件。默认情况下,安装完Linux系统之后,Cron系统软件便会启动,服务对应的进程名字为Crond,Crond服务会定期(默认每分钟一次)检查系统中是否有需要执行的定时任务工作计划。如果有,便会根据其预先设定的定时任务规则自动执行该定时任务工作。注意:Cron定时任务执行的最快频率是每分钟一次,因此如
- Linux文件权限管理
不屈的铝合金
边学边记-linuxlinux服务器运维centos
1.文件权限位说明Linux文件或目录的基本权限位是由九个字符来控制的,每三位字符为一组。前三位是用户权限位中三位表示用户组权限位后三位表示其他用户权限位rwxr-xr-xuser(用户)group(用户组)others(其他用户)代表字符为u代表字符为g代表字符为o2.文件权限详细说明2.1普通文件对应权限的详细说明Linux系统中的权限对于文件和目录来说,是有一定区别的。普通文件对应的权限:权
- 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独立出来,数据持