- Rust实现内网穿透工具:从原理到实现
余识-
Rust从入门到精通rust开发语言
目录1.前言2.内网穿透原理3.丐版实现3.1share3.2server3.3client3.4测试4.项目优化4.1工作空间4.2代码合并4.3无锁优化4.4数据分离4.5错误处理4.6测试代码4.7参数解析本篇原文为:Rust实现内网穿透工具:从原理到实现更多C++进阶、rust、python、逆向等等教程,可点击此链接查看:酷程网1.前言rust是一门非常适合写命令行工具的语言,本文将结合
- 【产品思维09讲】点线面体:产品经理和人生选择中的战略思维
Qingzong_MA
职场小白进阶篇职场和发展
在许多关于成功与失败的讨论中,很多人认为,努力是最重要的因素。我们在学校学到的知识、职场中的技能、创业时的坚持,都给了我们“努力能改变命运”的信念。然而,在现实中,我们常常发现:同样的努力,不同的背景和选择,带来的回报却截然不同。正如我们在“相亲”过程中看到的,不是每个人都能通过一次闪耀的展示获得理想的伴侣,长期关系更重要的是稳定的点而非一时的光辉。而在做产品决策时,也不是所有的努力都能转化为成功
- pycharm jupyter notebook 需要令牌或密码
进击的铁甲小宝
python软件
pycharmjupyternotebook需要令牌或密码在终端使用命令启动jupyternotebook时:如上图所示,其中红框中的token就是所谓的令牌,将其输入即可连接上。
- MySQL利用sql文件生成数据库
magic33416563
MySQLsql专栏mysql数据库sql
1,将要导入的.sql文件移至bin文件下,这样的路径比较方便2,登录MySQL:mysql-u用户名-p如我输入的命令行:mysql-uroot-p(输入同样后会让你输入MySQL的密码)3,在MySQL中新建你要建的数据库,这时是空数据库,如新建一个名为news的目标数据库4,输入&
- 实战千问2大模型第五天——VLLM 运行 Qwen2-VL-7B(多模态)
学术菜鸟小晨
千问多模型qwen2vl
一、简介VLLM是一种高效的深度学习推理库,通过PagedAttention算法有效管理大语言模型的注意力内存,其特点包括24倍的吞吐提升和3.5倍的TGI性能,无需修改模型结构,专门设计用于加速大规模语言模型(LLM)的推理过程。它通过优化显存管理、支持大模型的批处理推理以及减少不必要的内存占用,来提高多GPU环境下的推理速度和效率。VLLM的核心特点包括:显存高效性:VLLM能够动态管理显存,
- python读取文件路径问题
Neon_Light
pythonTODO
python读取文件时,明明在同一路径下,却无法读到文件,报路径不存在。问题比较奇葩,感觉自己对路径读取相关问题也不是很透彻,先挖坑后面清楚了在整理出来。现在把工程的.idea文件夹删除,然后重新导入工程目录解决了。这个可能跟pycharm的一些设置有关,但是在vscode上也不行,跟vscode也有关系?命令行单独执行脚本现在是ok的
- Linux 文件权限详解
久绊A
#Linux服务器linux运维
目录前言查看文件权限修改文件权限符号方式数字方式前言Linux文件权限是系统中非常重要的概念之一,用于控制对文件和目录的访问。权限分为读(Read)、写(Write)、执行(Execute)三个部分,分别表示对文件的读取、修改和执行操作的权限。文件权限可以分为三类用户:文件所有者(Owner)、文件所属组(Group)、其他用户(Others)。查看文件权限可以使用ls-l命令来查看文件的详细权限
- numpy1.19.4与python3.9版本冲突解决
weixin_47154407
numpy1.19.4与python3.9版本冲突解决一、问题分析runtimeError:packagefailstopassasanitycheck解决方法如下:解决一:使用python3.9和numpy1.19.4时会发生此错误,卸载numpy1.19.4并安装1.19.3,即可解决此问题使用pipuninstallnumpy再安装numpy1.19.3版本即可,使用如下命令卸载命令:pip
- 成功解决:ssl报错:pip is configured with locations that require TLS/SSL, however the ssl module in Python i
兰若姐姐
安装教程报错解决工具使用专栏sslpippython
1、下载安装openssl#执行下载命令sudowgetwgethttps://www.openssl.org/source/openssl-3.0.7.tar.gz#解压tar-zxvfopenssl-3.0.7
- pythonnumpy库离线安装_linux Python2.7 离线安装pip、numpy、scipy、sklearn等
weixin_39974932
服务器是离线的,只能离线安装安装pip1.先安装setuptools下载地址:https://pypi.python.org/pypi/setuptools#downloads将下载后的文件解压,进入到解压后的文件所在的目录执行命令:pythonsetup.pyinstall2安装pip下载地址:https://pypi.python.org/pypi/pip#downloads将下载后的文件解压
- springboot启动时报错 错误: 找不到或无法加载主类 com.xxx.xxx.Application
qiana666
javaspring
springboot启动时报错错误:找不到或无法加载主类com.xxx.xxx.Application从svn上拉下来一个自动生成代码的小项目,遇到一个贼大的坑,运行提示找不到或无法加载主类com.xxx.xxx.Application,找了很多方法才解决,解决方法就是打开idea的控制台,输入以下三行命令mvncleancompilemvninstallmvnspring-boot:run然后,
- spring boot 服务使用过程常见bug 解决
寅灯
springboot相关springboot
springboot服务使用过程常见bug今天开始持续汇总:1、【Springboot端口号占用】Webserverfailedtostart.Portxxxxxwasalreadyinuse.检查此端口号:tasklist|findstr"50010"netstat-ano|findstr"50010"cmd命令查看端口号占用情况,例如查看端口50010,可以看出进程号为1572;cmd中通过命
- 25K! Micro-终端文本编辑器
文本编辑器
Micro-终端文本编辑器Micro是一个现代化的、用Go语言编写的终端文本编辑器。它旨在成为一个易于使用且功能丰富的Nano替代品,同时保持轻量级和高效性。各位Vim大师们可以尝试下Micro,个人观点:还是Vim强点,但是Micro比Nano强。主要特点简单直观的界面:易于安装(单单一个二进制文件)和上手,适合命令行小白用户。语法高亮和主题方案:支持超过130种语言,并有7种默认配色方案可供选
- matlab代码实现了对一幅沥青路面图像(可替换为其他图像)的处理,包括图像的读取、预处理(灰度化、对比度增强、低帽变换、滤波去噪等)
pk_xz123456
MATLAB算法matlab开发语言
%清除工作区和命令窗口clear;clc;closeall;%读取图像image_path='7876.jpg_wh860.jpg';%请将此路径替换为你的沥青路面图像的实际路径image1=imread(image_path);%图像预处理%1.灰度化image
- 关于python装numpy这些
danpengxie
pythonnumpy
弄了2个版本的,2.7和最新的3.6版本。步骤是一样的,每次要的二进制文件http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy找准了二进制文件,其下载在python的script文件夹下.然后命令截个图怕忘了(乖乖下载二进制文件,不要pipinstall.反正一会pip直接install,一会用二进制装会错的)现在装了2版本用py-2和py-3去调用
- 【Python学习】科学计算工具包SciPy-安装配置
墨夶
Python学习资料python学习scipy
SciPy安装与配置指南SciPy是一个基于Python的科学计算库,广泛应用于数学、科学和工程领域。它建立在NumPy库的基础上,提供了丰富的数学和科学计算工具。本文将详细介绍如何在不同环境下安装和配置SciPy。1.前提条件在安装SciPy之前,确保你的系统已经安装了Python和pip。你可以通过以下命令检查Python是否已经安装:python--version如果输出类似于Python3
- Python 3.9 兼容的 NumPy 版本
Distantfbc
pythonnumpy
了解与Python3.9兼容的NumPy版本。根据搜索结果,以下是一些与Python3.9兼容的NumPy版本:NumPy1.21.1:这是一个与Python3.9兼容的NumPy版本。您可以通过运行以下命令来安装这个版本的NumPy:pipinstallnumpy==1.21.1NumPy1.26.0:根据版本对应关系表,NumPy1.26.0兼容Python3.9到Python3.12。您可以
- 大数据学习(五):如何使用 Livy提交spark批量任务--转载
zuoseve01
livy
Livy是一个开源的REST接口,用于与Spark进行交互,它同时支持提交执行代码段和完整的程序。Livy封装了spark-submit并支持远端执行。启动服务器执行以下命令,启动livy服务器。./bin/livy-server这里假设spark使用yarn模式,所以所有文件路径都默认位于HDFS中。如果是本地开发模式的话,直接使用本地文件即可(注意必须配置livy.conf文件,设置livy.
- Spark Livy 指南及livy部署访问实践
house.zhang
大数据-Spark大数据
背景:ApacheSpark是一个比较流行的大数据框架、广泛运用于数据处理、数据分析、机器学习中,它提供了两种方式进行数据处理,一是交互式处理:比如用户使用spark-shell,编写交互式代码编译成spark作业提交到集群上去执行;二是批处理,通过spark-submit提交打包好的spark应用jar到集群中进行执行。这两种运行方式都需要安装spark客户端配置好yarn集群信息,并打通集群网
- 工作中常用 CMD 命令
书生-w
windowscmd
文章目录1.网络排障与端口检查1.1检测网络连通性1.2路由追踪1.3查看端口占用与连接状态2.进程管理2.1查看进程列表2.2结束指定进程3.文件与目录操作3.1快速查找并筛选日志3.2批量复制或镜像目录4.环境变量与系统信息4.1设置临时环境变量4.2设置系统环境变量4.3查看系统信息5.批处理脚本与自动化5.1将命令封装成`.bat`脚本5.2重定向和管道组合6.远程管理与故障排查6.1Te
- 大数据学习(四):Livy的安装配置及pyspark的会话执行
猪笨是念来过倒
大数据pyspark
一个基于Spark的开源REST服务,它能够通过REST的方式将代码片段或是序列化的二进制代码提交到Spark集群中去执行。它提供了以下这些基本功能:提交Scala、Python或是R代码片段到远端的Spark集群上执行;提交Java、Scala、Python所编写的Spark作业到远端的Spark集群上执行;提交批处理应用在集群中运行。从Livy所提供的基本功能可以看到Livy涵盖了原生Spar
- git 常用命令
2301_78094384
gitgit
1.常用命令gitaddREADME跟踪README文件gitrm--cachedfilename从暂存区、本地库删除filename文件gitcommit-m“”fn//把文件提交到仓库(commit命令后添加-m选项,将提交信息与命令放在同一行例:gitcommit-m“wroteareadme”filen)gitcommit--amend-m‘xxx’合并上一次提交(用于反复修改)gitst
- windows cmd命令大全
Mika-1001
windows
一、常用1以下是一些常用的WindowsCMD命令,以及它们的详细描述:dir:列出当前目录下的文件和子目录。cd:改变当前目录。copy:复制文件。move:移动或重命名文件和目录。del:删除文件或目录。erase:删除文件或目录。ren:重命名文件或目录。type:显示文件内容。echo:在命令行中显示文本或变量的值。set:设置或显示环境变量。path:显示或设置系统环境变量中的目录列表。
- Windows CMD 常用命令
书生-w
windowscmd
文章目录1.前言2.如何进入CMD3.常用文件与目录操作命令3.1切换盘符3.2`cd`改变目录3.3`dir`查看目录内容3.4创建、删除目录3.5创建、删除文件4.文件与内容操作4.1复制、移动文件4.2批量复制—`xcopy`/`robocopy`5.网络相关命令5.1`ipconfig`查看本机IP5.2测试网络连通性—`ping`5.3路由跟踪—`tracert`5.4查看端口连接状态—
- 【Python进阶】Python中的操作系统接口:使用os模块进行系统调用
m 哆哆.ღ
pythonpython开发语言
1、操作系统接口的重要性1.1操作系统接口概览操作系统接口就像一座桥梁,连接着用户程序与底层操作系统服务。它是软件开发中不可或缺的一部分,让程序员能够借助标准化的方式与操作系统进行对话,执行诸如文件管理、进程控制、系统资源分配等各种关键任务。操作系统接口可分为以下几类:●命令行接口:通过shell或命令行工具直接与系统交互。●图形用户接口:如WindowsExplorer或MacOS的Finder
- 如何生成IP地址的自签名证书
Ceramist
SSL证书
生成一个用于特定IP地址的自签名证书是一个相对直接的过程。自签名证书通常用于开发测试环境,而不是生产环境,因为它们不是由受信任的证书颁发机构(CA)签署的。下面是在命令行工具如OpenSSL中创建自签名证书的基本步骤:前提条件确保你的计算机上已经安装了OpenSSL。大多数Linux发行版默认包含了OpenSSL,而在Windows上可能需要手动安装。步骤打开命令提示符或终端:在Windows上使
- CentOS 端口开放指导
Ceramist
centoslinux运维
CentOS端口开放指导在CentOS系统中,您可以使用一些命令来管理TCP和UDP端口的开放。本指南将介绍如何进行单端口开放、范围端口开放、查看已开放端口以及关闭已开放端口等操作。单端口开放要开放单个端口,您可以使用firewall-cmd命令:sudofirewall-cmd--zone=public--add-port=PORT_NUMBER/tcp--permanent将PORT_NUMB
- Linux下比ack更快的ag搜索命令详解
linux
简介ag命令(TheSilverSearcher)是一款用C编写的快速且对开发人员友好的文本搜索工具,针对源代码搜索进行了优化。它与ack类似,但速度更快,因此深受开发人员喜爱,可用于搜索代码库。它最初是ack的克隆版,但此后其功能集略有不同。在典型使用中,ag比ack快5-10倍,使用Pthreads来利用多个CPU核心并行搜索文件。默认情况下,ag将忽略文件名匹配.gitignore、.hgi
- sed学习笔记1
我要精通C++
shell脚本与linux命令sed
0.引用《Linux命令行与shell脚本编程大全.第3版by布鲁姆,布雷斯纳汉》第19章,第21章1.今晚回家学习总结
- Linux 怎么在储存设备上创建文件系统?
linux
简介Linux中的mkfs命令用于在存储设备(例如分区、逻辑卷或整个磁盘)上创建文件系统。它代表makefilesystem(创建文件系统),是磁盘格式化的基本命令。语法mkfs[options]:目标设备,例如:/dev/sda1,/dev/sdb,/dev/loop0[options]:定制文件系统的选项支持的文件系统ext2/3/4:第二、第三和第四个扩展文件系统(mkfs.ext2、mkf
- 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独立出来,数据持