- C# 查询注册表,判断本机是否安装Office2003,2007,2010,2013,2016和WPS
钟一白
publicvoidCheck_OfficeAndWps(){//是否安装OfficeboolisOfficeInstall=false;//是否安装WpsboolisWpsInstall=false;//Office版本intofficeVersion=0;//32位RegistryKeylocalMachine32=Registry.LocalMachine;RegistryKeyakey03
- 记录|如何全局监听鼠标和键盘等事件
小白鼠零号
winformC#VisualStudiovisualstudiowinformc#
目录前言一、MyMessager类二、Form中进行Timer监听更新时间前言参考文章:C#winfrom长时间检查不到操作,自动关闭应用程序本来是想,如果一段时间没有操作软件,这个软件就自动退出的任务。但是在C#中,采用winform后,有很大的困难。表现为:监听困难,理论上是只要进行Form监听就可以了,但是实际上Form上面有许多的Panel和Button等控件在上面进行监听,所以如果要写鼠
- C#检测目标软件是否安装
我们要发财了
c#microsoft开发语言
C#检测目标软件是否安装代码运行原理:查找注册表是否有包含目标软件关键词的键方法1:RegistryKeyregKey=Registry.LocalMachine;//注册表指定路径RegistryKeyregSubKey=regKey.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall");//取得指定路径键值数组st
- EmguCV学习笔记 C# 9.2 VideoWriter类
VB.Net
C#EmguCVc#图像计算机视觉emgucvopencvvb.net.net
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。教程VB.net版本请访问:EmguCV学习笔记VB.Net目录-CSDN博客教程C#版本请访问:EmguCV学习笔记C#目录-CSDN博客笔者的博客网址:https:/
- AES加密类库教程
马安柯Lorelei
AES加密类库教程AES-Encryption-ClassesAESencryptioninPython,PHP,C#,Java,C++,F#,Ruby,Scala,Node.js项目地址:https://gitcode.com/gh_mirrors/ae/AES-Encryption-Classes项目介绍本教程将详细介绍GitHub上的一个开源项目——AES-Encryption-Classe
- unity3d引擎缓存优化技术_unity3d优化总结篇
weixin_39732991
unity3d引擎缓存优化技术
转自http://www.unitymanual.com/thread-21597-1-1.html此总结由自己经验及网上收集整理优化内容包括:1.代码方面;2.函数使用方面;3.ngui注意方面;4.数学运算方面;5.内存方面;6.垃圾回收方面等等...本着相互交流共同进步的原则好了,总结如下:1.尽量避免每帧处理,可以每隔几帧处理一次比如:[C#]纯文本查看复制代码functionUpdate
- 【Unity优化】优化Android平台拖动地图表现
留待舞人归
unityandroid游戏引擎
一、Android平台上拖动不平滑的现象团队使用的热更新框架还是比较老的ToLua,拖动地图的逻辑,实现的方案是,在地图上放置一个合适大小的Image组件作为RaycastTarget的对象,统一接受和处理跟地图拖动相关的逻辑。在C#层专门建立一个DragManager作为拖动事件管理器,其内部实现了IDragHandler,IPointerDownHandler,IPointerUpHandle
- 浅谈C#之Wpf
CN.LG
WPFc#开发语言
一、基本介绍C#WPF(WindowsPresentationFoundation)是一个用于构建Windows客户端应用程序的UI框架,它是.NETFramework的一部分。WPF以其分离的架构、数据绑定功能和图形能力而闻名。WPF以其分离的架构、数据绑定功能和图形能力而闻名。二、关键特性分离的架构:WPF支持MVC(Model-View-Controller)架构模式,将用户界面(UI)、业
- C# Socket异步通讯
CN.LG
Winformc#
客户端:Socketsock=null; byte[]buffer=newbyte[1024]; privatevoidbtnStart_Click(objectsender,EventArgse) { try { sock=newSocket(AddressFamily.InterNetwork,SocketType.Stream,Protoc
- 浅谈C#事件
CN.LG
C#c#开发语言
一、基本介绍事件是一种特殊的多播委托,用于实现发布-订阅模式。事件允许对象在发生特定情况时通知其他对象。事件的发布者(也称为事件源)定义事件,并在适当的时机触发事件;事件的订阅者(也称为事件处理程序)订阅事件,并在事件被触发时接收通知。事件的基本使用定义事件:在类中定义一个事件,通常使用event关键字。publicclassPublisher{//定义一个事件publiceventEventHa
- 如何用C#写一个实现像股票行情的波动曲线图
senbar
.NET王国gis开发c#floatgdi+数据库c
有一个数据库A(价格,日期)该表每天都会向里面新增数据,如何用C#实现用横坐标表示时间,纵坐标表示价格的曲线图GDI+看看我大一的时候的课程设计诸如这样的代码就可以啦:for(intcounter=0;counter<=24;counter++){Penmypen=newPen(Color.Green,3);GraphicsmyGraphics=this.tabPage3.CreateGraphi
- 【量化分析】Python、JavaScript(Node.js)、Java、C#和Ruby五种主流语言的实例代码给大家演示一下如何获取股票实时交易数据
309556666
python股票数据API股票数据接口股票API服务股票市场数据实时股票数据
最近一两年,股票量化分析越来越受欢迎了。想要入行,首先得搞定股票数据。毕竟,所有量化分析都是建立在数据之上的,实时交易、历史交易、财务、基本面,这些数据咱们都得有。咱们的目标就是挖掘这些数据中的价值,来指导咱们的投资策略。为了找数据,我可是尝试了各种方法,自己动手写过网易、申万行业的爬虫,还试过同花顺问财的,连聚宽的免费API都用过。但爬虫这东西,数据总是不稳定,给量化分析带来不少困扰。在量化分析
- 【C#】【EXCEL】Bumblebee/Classes/ExWorksheet.cs
hmywillstronger
c#excel前端
Bumblebee/Classes/ExWorksheet.csFlowdiagram当然,我会为您创建一个基于这段代码的流程图,并提供中英双语说明。这个流程图将展示ExWorksheet类的主要功能和方法。ExWorksheet类ExWorksheetClass构造函数Constructors属性Properties方法Methods默认构造函数DefaultConstructor从ExRang
- C#——类与结构
Jarrett_Zheng
C#与上位机开发语言c#
在未学习面向对象语言时,我常常将类比作一种结构体,其实类与结构体也确实很相似,类用来做函数的集合,结构用来做变量的集合,接下来将从几个角度刨析类与结构的不同。类vs结构类和结构在设计和使用时有不同的考虑因素,类适合表示复杂的对象和行为,支持继承和多态性,而结构则更适合表示轻量级数据和值类型,以提高性能并避免引用的管理开销。类和结构有以下几个基本的不同点:值类型vs引用类型:结构是值类型(Value
- 尝试自己实现Linq的Count,Where,Select方法。
李公子lm
.NET技术linqc#委托泛型C#进阶
前言今天我们来自己尝试实现一下Linq类库中的一些常用的Count,Where,Select方法。通过自己实现这些常用的基础功能,可以加深我们对委托,泛型,以及扩展方法的理解。正式开始之前呢,还是先简单说一下关于委托,泛型以及扩展方法的一些知识。基础知识委托C#中普通方法接受的是参数可以是类,可以是变量。而委托接受的是方法,可以理解为委托是可以指向方法的类型,把一个方法当做变量进行传递。C#默认提
- 深入详解 C# 中的 Task.Run 与 Thread 的区别与联系
猿享天开
学懂C#-高级编程技术精讲开发语言c#
引言在C#中,Task.Run和Thread都可以用于并发编程,但它们在设计理念、底层实现、适用场景等方面存在显著的区别与联系。本文将详细探讨这些方面的内容,以帮助开发者在实际项目中选择合适的工具来实现并发编程。一、Task.Run与Thread的区别1.使用方式Task.Run简洁的异步任务启动:Task.Run用于启动一个异步任务,并返回一个表示该任务的Task对象。它更容易与async和aw
- C#编程技术指南:从入门到精通的全面教程
猿享天开
学懂C#-高级编程技术精讲c#开发语言C#编程技术指南
无论你是编程新手,还是想要深化.NET技能的开发者,本文都将为你提供一条清晰的学习路径,从C#基础到高级特性,每一站都配有详尽解析和实用示例,旨在帮助你建立坚实的知识体系,并激发你对C#及.NET生态的热情。目录第一部分:C#基础——构建你的第一个程序1.环境搭建2.第一个C#程序3.变量、数据类型与控制流1)变量2)数据类型3)控制流4)条件判断(if语句)5)循环(for语句)6)循环(whi
- 学懂C#编程:常用框架学习(三)——.NET Framework框架下的Entity Framework (EF)开发应用详解
猿享天开
学懂C#-高级编程技术精讲c#学习.netEFEF框架
目录一、EntityFramework概述二、EntityFramework的核心组成部分EntityDataModel(EDM):EntityClient:ObjectServices:ADO.NETProvider:三、分层结构应用程序层:EntityFramework层:数据库层:四、EF主要的功能包括五、三种开发模式详解1.代码优先(CodeFirst)2.数据库优先(DatabaseFi
- c#视觉应用开发中如何使用OpenCV库进行计算机视觉处理?
openwin_top
C#视觉应用开发问题系列计算机视觉c#opencv
microPythonPython最小内核源码解析NI-motion运动控制c语言示例代码解析python编程示例系列python编程示例系列二python的Web神器Streamlit如何应聘高薪职位在C#中使用OpenCV库进行计算机视觉处理,通常会借助一个叫做EmguCV的封装库。EmguCV是OpenCV的一个跨平台的.NET封装,使得在C#中调用OpenCV变得更加方便。安装EmguCV
- C# 实现傅里叶变化(DFT)
大浪淘沙胡
C#c#开发语言DFT
1、DFT函数类usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceDFT_FFTApp.Utils{publicclassDFT{//////DFT/////////publicstaticList>DFTNative(
- 用C# WPF简单实现仪表控件
Dotnet9.com
WPF自定义控件c#WPFC#WFP自定义控件仪表控件Gauge
时间如流水,只能流去不流回!点赞再看,养成习惯,这是您给我创作的动力!本文Dotnet9https://dotnet9.com已收录,站长乐于分享dotnet相关技术,比如Winform、WPF、ASP.NETCore等,亦有C++桌面相关的QtQuick和QtWidgets等,只分享自己熟悉的、自己会的。阅读导航:一、先看效果二、本文背景三、代码实现四、文章参考五、代码下载一、先看效果二、本文背
- C#实现仪表盘
大浪淘沙胡
Winformc#开发语言仪表盘
1、仪表盘控件usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Drawing;usingSystem.Drawing.Drawing2D;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSyste
- c#——特性
Matrix Y
c#linqc#
定义特性的定义——用于在运行时传递程序中各种元素(类,方法、结构、枚举、组件等)的行为信息的声明性标签。----特性不等于注释。,net有两种类型特性——预定义特性和自定义特性创建自定义特性创建的自定义特性的命名方式——自定义特性+Attribute。该类继承于AttributeusingSystem;usingSystem.Collections.Generic;usingSystem.Linq
- C# 基于NModbus4的数据读写
那人_那事
c#Modbus
本文主要介绍基于开源modbus库NModbus4的数据读写添加引用usingModbus.Device;属性privateModbusIpMaster_master;privatestring_ipAddress;privateTcpClient_tcpClient;//////设备IP地址///publicstringIpAddress{get=>_ipAddress;set=>_ipAddr
- C# 第十四弹 —————— 扩展方法
qq_29241013
C#学习C#C#
关键字this,这是一个很实用的方法,尤其是Unity3D中更为实用哦。继续举个栗子,eg:classTest{privatedoubled1;privatedoubled2;privatedoubled3;publicTest(doubled1,doubled2,doubled3){this.d1=d1;this.d2=d2;this.d3=d3;}publicdoubleSum(){retur
- 【C# / Extension】 扩展方法01 —— 扩展String & StringBuilder
ls9512
C#.NETc#扩展
C#扩展方法系列C#扩展方法简介String扩展CheckNull扩展检查是否为空publicstaticboolIsNullOrEmpty(thisstringinput){returnstring.IsNullOrEmpty(input);}与此相反,还可以写成publicstaticboolIsNotNullOrEmpty(thisstringinput){return!string.IsN
- C#进阶——各种方法特性
Echo_Lee0
C#c#
静态方法特点:1、生命周期一旦创建–应用结束才会结束2、全局3、效率高用处:用户登录信息、系统配置信息、系统设置、SQLHelper注意:静态的东西创建多了占用内存会很大,不是必要的情况不要创建静态的对象调用:静态方法中调用非静态方法时,不可以直接调用,需要把所在类初始化以后再调用Form1form1=newForm1();form1.Test();构造方法用处:初始化对象或者初始化一些数据特点:
- 【C#】过滤Sql语句非法字符串
KevinTseng
过滤Sql语句非法字符串//////过滤SQL非法字符串/////////publicstaticstringGetSafeSQL(stringvalue){if(string.IsNullOrEmpty(value))returnstring.Empty;value=Regex.Replace(value,@";",string.Empty);value=Regex.Replace(value,
- md5哈希c语言程序,【笔记】C Sharp哈希值计算MD5
娜携年华
md5哈希c语言程序
[C#]纯文本查看复制代码publicdelegatevoidAsyncCheckHeadler(AsyncCheckEventArgse);publicclassMD5Checker{//支持所有哈希算法privatestaticHashAlgorithmhashAlgorithm;//文件缓冲区privatestaticbyte[]buffer;//文件读取流privatestaticStre
- C# 多个点拟合圆并给出圆心坐标
Nobody-H
C#
多个点拟合圆并给出圆心坐标。publicstaticPointFFitCenter(Listpts,doubleepsilon=0.1){doubletotalX=0,totalY=0;intsetCount=0;for(inti=0;iepsilon){doubleii=Math.Pow(pts[i].X,2)+Math.Pow(pts[i].Y,2);doublejj=Math.Pow(pts
- 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独立出来,数据持