- 156个Python网络爬虫资源,妈妈再也不用担心你找不到资源!_爬虫 csdn资源
本列表包含Python网页抓取和数据处理相关的库。网络相关通用urllib-网络库(标准库)requests-网络库grab-网络库(基于pycurl)pycurl-网络库(与libcurl绑定)urllib3-具有线程安全连接池、文件psot支持、高可用的PythonHTTP库httplib2-网络库RoboBrowser-一个无需独立浏览器即可访问网页的简单、pythonic的库Mechani
- Python爬虫实战:研究pycurl库相关技术
ylfhpy
爬虫项目实战python爬虫开发语言pycurl
1.引言1.1研究背景与意义随着互联网数据量的爆炸式增长,传统爬虫框架在处理大规模数据采集任务时面临性能瓶颈。特别是在需要处理大量并发请求、高频率数据更新的场景下,提升爬虫的效率和稳定性成为关键挑战。Python作为最流行的爬虫开发语言,提供了多种网络请求库,其中pycurl因其基于C语言的libcurl库而具有出色的性能表现。1.2相关技术概述Python爬虫生态系统中的主要网络请求库包括:标准
- 推荐项目:Rust编写的终端HTTP客户端——CuTE
邵冠敬Robin
推荐项目:Rust编写的终端HTTP客户端——CuTECuTEHTTPclient/libcurlTUIfrontendinRust,withrequest+keystorage项目地址:https://gitcode.com/gh_mirrors/cute1/CuTE在繁忙的开发和系统管理世界里,有时候我们需要的是一个既简单又强大的工具来处理日常的HTTP请求。CuTE(RustTUIHTTPC
- 2025年6月个人工作生活总结
李迟
打工人的知识库生活
本文为2025年6月工作生活总结。研发编码某国产操作系统curl下载sftp服务器文件问题记录场景:某国产系统curl版本信息:#curl--versioncurl7.71.1(x86_64-koji-linux-gnu)libcurl/7.71.1OpenSSL/1.1.1f-fipszlib/1.2.11brotli/1.0.7libidn2/2.3.0libpsl/0.21.1(+libid
- libcurl:(6) Could not resolve host: api.ignitionrobotics.org
你の猫
rosubuntulinux
1.如果不影响使用大可不必在意2.检查一下~/.ignition/fuel/config.yaml文件然后将url:https://api.ignitionfuel.org用#注释掉添加url:https://api.ignitionrobotics.org3.你只是没有联网而已,仅此而已,连个网错误就没了
- 升级openssl后无法使用cmake和curl的解决方法
Lazy Dave
服务器linux运维
现象Linux升级openssl后(笔者的案例是编译源码升级1.1.1f到1.1.1k)无法使用curl,提示libcurl.so无法加载符号SSLv3_*,cmake因为依赖libcurl也无法使用。原因新版openssl默认不支持ssl3,需要手动开启。解决方案增加enable-ssl3enable-ssl3-method,重新编译openssl,重新安装。mkdirbuildcdbuild.
- QT中使用libcurl库实现到ftp服务器的上传和下载
小c君tt
qt服务器开发语言
最近新开了一个项目需要用到ftp服务器,之前没接触过这方面,刚开始觉得很简单,一两天应该就可以搞好,谁知道花了我接近一周时间,此时此刻!!!我实现了,赶紧记录一下哈哈libcurl库的下载,网上很多都需要下载之后编译,我嫌浪费时间就找了一个版本的用,(夸克网盘)链接:https://pan.quark.cn/s/64d2067a6657提取码:pVU5首先就是加入库和include包含文件,这些不
- win平台下,采用libcurl库实现http、https的get请求
pert666
httphttps网络协议
前提:编译好带openssl库的libcurl库,并链接在项目中,包含必要的头文件和库http请求:/***@brief采用libcurl库实现http请求**@parampert*@param2023年11月7日22:40:00*///$url='//www.jb51.net';//$curl=curl_init();//curl_setopt($curl,CURLOPT_URL,$url);/
- curl命令用法
追梦菜鸟
LinuxCURL
1.CURL命令简介CURL(CommandLineUniformResourceLocator),是一个利用URL语法,在命令行终端下使用的网络请求工具,支持HTTP、HTTPS、FTP等协议。CURL也有用于程序开发使用的版本libcurl。Linux、MAC一般系统默认已安装好curl,直接在终端使用命令即可,如果需要手动安装,可以到curl.haxx.se下载安装。Windows系统cur
- ubuntu18-php7.4-二进制安装
龙哥·三年风水
ubuntu服务器PHPubuntu服务器php
1、安装依赖sudoaptinstall-ybuild-essentiallibxml2-devlibssl-devlibbz2-devlibjpeg-devlibpng-devlibcurl4-openssl-devlibfreetype6-devlibgmp-devautoconfautomakelibkrb5-devlibpq-devlibzip-devlibgssapi-krb5-2lib
- C++开发:实现 FTP 客户端或服务器
倔强老吕
C++标准库c++服务器
在C++中进行FTP开发(客户端或服务器),可以使用以下方案和开源库1.C++FTP客户端库(1)libcurl(推荐)【链接】libcurl-yournetworktransferlibrary特点:跨平台(Windows/Linux/macOS)支持FTP/FTPS(SSL/TLS)/HTTP/HTTPS简单易用,API稳定示例代码(上传文件):#include#includeintmain(
- 搭建ubuntu20.04 rails和vue开发运行环境
天瑞s
vue.jsrubyonrails
搭建ubuntu20.04rails和vue开发运行环境,接下来我把运行的脚本附在下面:#1.安装基础必要的程序sudoapt-getinstall-ygitapt-utilsmakegccvimctagsscreenbuild-essentialcurlgitwgetopenssllibssl-devautoconfbisonimagemagicklibcurl3-devzlib1g-devli
- qt curl windows linux,关于qt导入libcurl库的一些心得
微惊都市
qtcurlwindowslinux
刚开始的时候我还在纠结动态链接库和静态链接库,在网上查了一下资料,在windows和linux下都有这两个概念。在windows下的动态链接库为.dll,静态链接库为.lib。在linux下的动态链接库为.so,静态链接库为.a。了解了以上的东西后,再引入一个名称叫做“导入库文件(LIB)”,这个东西的后缀也是.lib,但是这个跟windows下的静态链接库(.lib)是完全不同的概念,我刚开始的
- CURL详解
ThePromonkeyOf_HeLuo
计算机网络httpshttp
CURLcURL(客户端URL)是一个开放源代码的命令行工具,也是一个跨平台的库(libcurl),用于在服务器之间传输数据,并分发给几乎所有新的操作系统。cURL编程用于需要通过Internet协议发送或接收数据的几乎任何地方。cURL支持几乎所有的互联网协议(DICT,FILE,FTP,FTPS,GOPHER,HTTP,HTTPS,IMAP,IMAPS,LDAP,LDAPS,MQTT,POP3
- libcurl 错误码
山中毒蘑菇
Libcurl服务器运维
这个文档是小编在curl官网上使用谷歌翻译翻译的,详细信息看官网curl描述此手册页包含libcurl中的大部分(如果不是全部)可用的错误代码。还包括它们发生的原因以及您可以采取哪些措施来解决问题。卷码几乎所有“简单”的接口函数都返回一个CURLcode错误代码。当然使用curl_easy_setopt选项CURLOPT_ERRORBUFFER是一个不错的选择,因为它会提供人类可读的错误字符串,该
- 利用Ruby的Typhoeus编写爬虫程序
q56731523
ruby爬虫开发语言scrapy
Typhoeus是一个基于libcurl的HTTP客户端,支持并行请求,适合高效爬取数据。用户可能想要一个简单的例子,或者需要处理更复杂的情况,比如分页、并发请求或者数据解析。首先,我应该检查用户是否已经安装了Typhoeus。通常,Ruby库需要通过gem安装,所以在代码示例前可能需要提醒用户安装gem。然后,我需要考虑用户可能的场景:是单次请求还是多个并行请求?是否需要处理异步响应?用户可能没
- 详解C++开源网络传输库libcurl的编译过程
dvlinker
C/C++实战专栏c++开源网络传输库libcurllibssh2opensslCMake工具
目录1、引言2、直接编译libcurl工程,提示找不到ssh.h3、下载并编译libssh2开源代码,部署到libcurl目录中4、获取openssl开源库的头文件和库文件,部署到libcurl目录中5、将编译好的libcurl拿到测试项目中测试6、使用CMake工具手动生成VS工程文件,可以轻易地编译出libcurl库7、总结VC++常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)ht
- PHP5 扩展编写
php扩展内核
准备1.php版本https://www.php.net/distributions/php-5.5.8.tar.bz2tarxvfphp-5.5.8.tar2.安装依赖类库yuminstallgccbisonbison-develzlib-devellibmcrypt-develmcryptmhash-developenssl-devellibxml2-devellibcurl-develbzi
- python爬虫需要的第三方库_python爬虫常用第三方库
weixin_39943799
python爬虫需要的第三方库
原博文2018-10-2309:31−这个列表包含与网页抓取和数据处理的Python库网络通用urllib-网络库(stdlib)。requests-网络库。grab–网络库(基于pycurl)。pycurl–网络库(绑定libcurl)。urllib3–Pyth...13928相关推荐2019-12-0513:21−argparse用法总结https://blog.csdn.net/qq_245
- 获取ftp目录及子目录下的文件并下载下来
中少奇
软件开发开发工具c++ftp
/*利用AI写了一个在fedora系统下的c++程序,实现功能为,先获取ftp指定目录及子目录下的文件名称,然后把本地目录中没有的文件下载下来。#安装依赖sudodnfinstalllibcurl-devel#编译g++-oftp_sync_curlftp_sync_curl.cpp-lcurl-lstdc++fs-O2*/#include#include#include#include#incl
- 嵌入式Linux网络编程实战:基于libcurl实现Gitee文件上传
银河码
Linux网络编程linux网络giteec语言vscodetcp/ip服务器
嵌入式Linux网络编程实战:基于libcurl实现Gitee文件上传【本文代码已在立创·泰山派平台验证通过,可直接用于物联网设备数据上报场景】一、功能概述与实现效果1.1核心功能本地文件读取:支持任意二进制/文本文件Base64编码转换:符合RFC4648标准HTTP传输:通过libcurl实现,也可以使用HTTPS加密通信GiteeAPI对接:自动创建/更新仓库文件1.2运行效果演示#上传本地
- VMWare Centos7虚拟机安装并运行MongoDB
Jay_Wooz
经验数据库环境搭建mongodblinux数据库
虚拟机:CentOS-7-x86_64-Minimal-2009MongoDB:mongodb-linux-x86_64-rhel70-5.0.5运行起来#Step1.安装依赖yuminstalllibcurlopenssl-y#Step2.下载mongoDB压缩包wgethttps://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-5.
- 使用libCurl从Web服务器下载文件
eamon100
Win32软件开发c++开发语言
XlibCurl有两种下载文件方式,同步方式使用easy接口的curl_easy_perform,异步方式可以同时下载多个文件,使用multi接口的curl_multi_perform,通过curl_multi_wait等待传输事件的发生,curl_multi_info_read读取异步传输中的状态。本例使用http下载单个文件和多个文件,ftp方式上传和下载文件,ftp支持断点续传。1、头文件和
- 批量请求微信小程序封禁状态的C++代码示例
安丨
微信小程序c++小程序
概述:此C++代码示例将展示如何批量请求指定API接口,检查微信小程序是否被封禁。根据返回的code值,我们可以判断小程序是否被封禁,code为0时表示小程序被封禁,code为1表示正常。代码介绍:目标:通过C++编写批量请求的代码,检查多个小程序的封禁状态。使用的库:使用libcurl库来发送HTTP请求。libcurl是一个强大的库,广泛用于在C++中进行网络请求。API接口:https://
- 批量请求微信小程序封禁状态的C++代码示例
小程序
标题:批量请求微信小程序封禁状态的C++代码示例概述:此C++代码示例将展示如何批量请求指定API接口,检查微信小程序是否被封禁。根据返回的code值,我们可以判断小程序是否被封禁,code为0时表示小程序被封禁,code为1表示正常。代码介绍:目标:通过C++编写批量请求的代码,检查多个小程序的封禁状态。使用的库:使用libcurl库来发送HTTP请求。libcurl是一个强大的库,广泛用于在C
- 批量检查QQ域名是否被封的C++代码示例
qq
概述:此C++代码示例展示了如何批量请求指定的API接口,检查QQ域名的状态。根据API返回的status值,status为1表示域名正常,status为0表示域名被封禁。我们将使用libcurl来进行HTTP请求,使用jsoncpp解析返回的JSON数据。目标:通过C++编写代码,批量请求https://api.52an.fun/qq/api.php?url=接口,检查多个QQ域名的封禁状态,并
- centos7升级curl到最新版包含离线安装方法
llody_55
vim
当前版本[root@consul~]#curl-Vcurl7.29.0(x86_64-redhat-linux-gnu)libcurl/7.29.0NSS/3.53.1zlib/1.2.7libidn/1.28libssh2/1.8.0Protocols:dictfileftpftpsgopherhttphttpsimapimapsldapldapspop3pop3srtspscpsftpsmtp
- centos7编译安装php7.4
T暴风雪
PHPLinuxlinux服务器centos
1.安装依赖包yuminstalllibxml2libxml2-developensslopenssl-develbzip2bzip2-devellibcurllibcurl-devellibjpeglibjpeg-devellibpnglibpng-develfreetypefreetype-develgmpgmp-devellibmcryptlibmcrypt-develreadlinerea
- Linux网络编程(HTTP协议)
花落已飘
Linux网络编程实战网络linuxhttp
文章目录前言一、HTTP协议概述二、HTTP服务器和客户端三、Linux环境下使用C语言创建http客户端和服务器使用libcurl实现HTTP客户端使用libmicrohttpd实现HTTP服务器代码解析HTTP客户端(libcurl)HTTP服务器(libmicrohttpd)总结前言本篇文章带大家学习Linux网络编程中的HTTP协议,并且后面使用HTTP协议来实现一个完整的实战项目。一、H
- 交叉编译树莓派的curl库支持ssl
骑车男孩
树莓派curl
1.开发环境(1)装有openssl的ubuntu(2)交叉编译工具arm-linux-gnueabihf-gcc(3)openssl和libcurl源码交叉编译工具的安装https://blog.csdn.net/qq_46777053/article/details/110221159libcurl源码的获取https://github.com/curl/curl/releases/tag/c
- 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独立出来,数据持