优化Entity Beans的七条守则

【进阶EJB】深入探讨三种Bean(二)——Entity Bean 通过上一篇文章,我们介绍了【进阶EJB】深入探讨三种Bean(一)——Session Bean,这篇文章继续介绍EJB的三种Bean,今天我们重点介绍一下Entity Bean。Entity Bean,通过名字我们就知道是实体Bean是存放数据的。Entity Bean是持久化的数据组件,代表持久存储的商业实体对象。通常情况下,每个Entity Bean对应于关系数据库中的单张表,Entity Bean的单个实例对应于表中的某一条数据。上篇文章中说的Session Bean可作为Entity Bean的客户 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> Entity beans提供了一个清楚的模型以描述应用程序中持久稳固的事务对象以及它们的设计。在面向对象的模型中,简单的Java对象通常被直接地描述,但是并不包括事务处理的功能,这通常需要使用事务对象来完成。Entity beans不仅仅考虑到模型中的简单类型,它也考虑到面向对象模型中的事务模型,它将所有的复杂的工作都交给了bean和容器服务。这使得应用程序可以象使用通常的Java对象那样来应用它。在保持存储数据的公开性和灵活性的同时,容器会对entity beans进行优化,而我们只需要考虑如何部署它。 基于Enterprise JavaBeans的开发方案,导致了面向对象的方法的广泛使用和对entity beans的大量使用。Sun的工程师对entity beans的实际使用作了大量的实践和研究。这篇文章是对开发中的一些经验的总结: 探索各种优化方案 对达到最佳的性能和适应性提供规则和建议 讨论如何避免一些已知的问题 一、尽可能地使用容器持久化管理 容器持久化管理(CMP)不仅仅可以大量减少编程的工作,而且在容器和容器生成的数据库访问代码中存在许多优化的可能。容器可以访问内存中的bean的缓冲,这使得它可以监控缓冲中的任何改变。如果缓冲没有被改变,这可以在提交事务前避免将缓冲存储到数据库中。这减少了不必要的调用数据库的开销。 另外一个优化的实例是对find方法的调用。根据对一个entity的参考搜寻一个entity,而接下去最可能的情况是使用这个entity。这通常包括两个数据库访问: 在数据库中寻找记录并得到主键 将记录的数据读入到内存中 CMP会进行这样的优化,只要它认为可以这样做,它会使用一个数据库访问来代替这两个数据库访问,它会在一个数据库访问中同时得到主键和记录的数据。 二、编写同时支持Bean持久化管理和容器持久化管理的代码 在许多情况下,EJB的作者无法控制EJB将如何被部署,也无法预知部署使用的容器是否支持CMP。同样的,部署者在目标容器可能会使用bean持久化管理(BMP)。你必须寻找一个方法以执行这个bean以允许BMP部署而不用破坏对更多的CMP机制优化的破坏。一个简单的方法是将商业逻辑和持久化机制分离开来。在你的CMP类中执行商业逻辑,如果选择了CMP,它可以被单独部署。实现持久化的代码被写入到BMP类中,它继承自CMP类。在CMP的超类中保持了所有的商业逻辑,并在BMP子类中增加了数据库访问的代码。这样的结构如图1所示。 图1: 将CMP和BMP分离 这个模型听起来很容易实现,但是事实上存在一些问题: 对执行类的继承是不可能的。 这样做意味着子类必须同时继承CMP超类和BMP超类。此外,BMP子类还必须继承它的直接的CMP执行。这导致了多重的类的继承,就象在图2中所示的那样,而这样的继承是不被Java程序所允许的。 图2:Java所不支持的多重继承 没有简单的方法支持改变的持久化执行 这可能是很有用的,例如,可能要执行不同的数据库提供商或是不同类型的数据库(例如关系型、对象型或其它类型)所特定的数据库定义代码。 要解决这些问题,你可以对目前的模型作一些改变。对所有BMP类抽象出一个辅助类以执行基本的持久化代码。这样的辅助类被称之为数据访问对象(DAO)。你可以通过对DAO接口的实现产生多个DAO子类,然后在实际应用时选择合适的DAO子类进行实例化。这就如图3所求。有许多方法可以选择合适的DAO子类进行实例化,例如,通过读取环境变量或是判断DB类型。 图3:代表并允许改变的DAO执行 使用这个模型,CMP执行和包含这个执行的DAO可以很方便地被继承;除了BMP类外,所有的东西都可以被执行。因为这些BMP类包含了一些具有代表性的代码的框架,对于第一个entity bean它看上去都是差不多的,你可以很容易地将一个bean拷贝到另一个而只需作很小的改动。而最终,你甚至可以使用工具来自动完成这项工作。 尽管你可能需要扩充一个entity bean以重新使用另一个entity bean所提供的逻辑,但是在EJB 1.1的说明书中不允许对一个继承自home接口的entity类型进行扩充。对一个调用的定位及建立在理论上总是被认为是一种远程调用。虽然在很多时候你可能需要使用这种子类型(例如,将它们作为一个factory方法),但是不幸地是,这样的子类型并没有被提供。这阻碍了对许多遵守EJB 1.1说明书的执行EJB的有用的设计平台的使用。 三、在ejbStores中尽量减少对数据库的访问 在使用CMP时,bean完全不受ejbStore的控制,所有的优化工件都是由容器来完成的。容器所提供的CMP优化成了区别容器性能的主要指标之一。 然而在使用BMP来部署bean时,为缓冲区维持一个dirty标志是一种很有效的做法。对缓冲区的所有改变都会对dirty标志进行设置,ejbStore将会对这个标志进行检查。如果dirty标志未被设置,这意味着缓冲区没有被改变,ejbStore将不执行所有的开销巨大的对数据库的访问。这个决窍对于那些经常对数据库进行查询而不是作真正的改变的bean尤为有效。而这通常组成了一个应用程序中的绝大部分(例如,查找一个表)。 对于这种技术,有一点需要注意。因为dirty是为了数据库的访问而设立的,因此它对于BMP的代码会更适合,也就是说,它并不太适合在CMP代码中使用。当使用我们前面介绍的执行平台时,它既可以在BMP代码中进行设置也可以在DAO中进行设置。 因为DAO不会调用任何的商业逻辑,因此它不是设置dirty标志的最合适的地方,最好你还是在BMP代码中对这个标志进行设置。这可能会使得BMP代码变得更加复杂,因为你不能在商业逻辑中考虑对超类的授权。 完全从一种科学的观点来看,EJB的作者并不需要处理系统级的问题,包括对缓冲区的处理。但是不幸的是,使用BMP的EJB 1.1并不提供这种系统优化的选择,因此bean的作者还是不得不手工对dirty标志进行设置。 四、对于调用的查找和定位的总是使用Reference Cache 无论是对于entity beans还是session beans,Reference Cache都是一项有用的技术。JNDI对例如数据资源、参考bean或者是环境实体这样的EJB资源的搜寻是相当耗费资源的,而要防止这种多余的搜寻,方法并不太复杂。要解决这个问题,通常的做法是: 将这些references定义为一个实例变量。 在setEntityContext中搜寻它们(对于session bean,相应地使用setSessionContext方法)。 setEntityContext方法仅仅在一个bean被实例化时被调用,因此在这时候搜寻所有需要的references并不太耗费资源。要避免在其它任何方法中搜寻references,特别是对于数据库访问方法、ejbLoad和ejbStore。这样的方法会被频繁地调用,这会导致大量的时间被无谓地耗费在搜寻的调用上。 定位另一个entity bean的调用也是相当耗费资源的。虽然这样的调用不一定适合bean初始化时的象setEntityContext这样的回叫,但是我们还是需要在合适的地方将搜寻的references结果保存在cache中。如果这个reference仅对当前的实体有效,你需要在实例被重新激活以描述另一个实体前清除references。这需要在ejbActivate方法中完成。 五、总是准备好你的SQL语句 在所有代码中涉及到对关系型数据库的访问总是使用SQL是一种有效的优化手段。因为对于绝大多数的当前EJB执行都使用关系型数据库,对于bean的作者需要编写数据库访问代码的EJB部署,这条规则是非常有效的。 因为每一个SQL语句都必须由数据库进行处理,数据库需要花费时间在执行SQL语句前对其进行编译。然而,对于一个性能良好的关系型数据库,会将语句和编译结果保存在cache中,对于新的SQL语句,它会将其与cache进行比照,以获得它的编译结果。然而,为了得用这种优化手段,新的语句必须完成与老的语句匹配。 未准备好的语句 对于未准备好的语句,数据和语句被传递到同一个字符串中,尽管语句可能与后来的调用完成一样,但是数据不匹配,这使得这种优化手段失去作用。 已准备好的语句 对于已准备好的语句,只将没有数据的语句传递到数据库,这使用从cache中获得编译结果成为可能。 在使用语句时,数据在其后被传递,而语句得以执行。通常地,这个语句必须经过编译,但是对于后来的语句,它可能与cache匹配,而不需要再被重新编译。这项技术具有较高的语句cache命中率(接近100%),可以最大限度地减少语句的编译。对于小型的数据库访问,这可以减少将近90%的执行时间。 六、完全地关闭所有的语句 当在BMP执行中处理数据库访问代码时,在完成数据库访问调用后要记得关闭语句。每一个未关闭的语句对应着数据库一个开启的光标。(尽管垃圾搜集器最后会对开启的语句进行检查,并在垃圾搜集(GC)时间将其关闭,但是你不能控制这样的一个时间。)保持语句开启会导致数据库过多的开启光标,这会浪费数据库的资源,而这些资源本来是可以用来改善数据库性能的。 同样,关闭语句时必须确保捕获所有的另外。在关闭一个语句时产生的另外必须不会导致另一条语句的被忽略或是保持开启状态。 七、避免死锁 应用程序不通过代码直接控制调用ejbStore(或其它CMP的等价物)的时间。何时执行这个调用是由容器决定的,这通常是在一个事务的最后进行。 如果在一个事务中涉及到一个复合的entity beans或者是复合的实体,调用ejbStore的次序并没有被定义。这也就意味着用户没有控制与那些实体相关的数据库记录的访问/锁定的次序。当涉及到多个数据表或数据行时,这很可能会导致死锁。 乐观地看,理想的情况是在容器会控制EJB中的访问和锁定,只使得容器会解决死锁问题,而开发者和部署者将不必担心这一类的问题。但是,不幸的是,目前可用的商业应用服务器很少有能很好地处理数据库的锁定问题的,对于复杂的entity bean部署,部署者将不得不自行解决死锁问题。 可适用的规则是(至少在我们编写这篇文档时是这样):我们可以假定容器会按照事务中最初调用事务方法的同样的次序来调用数据库访问。举例来说:如果在一个entity bean EB1中有一个名为m1的事务方法,而在另一个entity bean EB2中有一个名为m2的事务方法。如果在同一个事务中,EB1.m1在EB2.m2之前被访问,你也可以假定EB1.ejbLoad会在EB2.ejbLoad被调用,同样,EB1.ejbStore会在EB2.ejbStore之前被调用。这意味着,与EB1相应的实体或数据库记录会在EB2之前被锁定。为了避免死锁,必须确保在整个应用程序中,对于任何事务EB1总是在EB2之前被调用。 我们可以肯定,应用程序服务器将会变得越来越聪明,他将会知道如何组织对数据库的访问,而开发者和部署者将不再去小心翼翼地处理访问次序。然而,就象在下面这个例子中那样严格处理调用顺序的代码至少可以保证在目前的服务器上更好地工作。 Vehicle和Car bean的源代码可以从这里 下载,它使用了这儿的绝大多数的规则,你也可以将其作为将来entity bean开发的基础和模板。(要下载jar文件,右击这个连接,并选择“目标另存为”。) 展望 当entity bean的开发者和部署者有效地利用这些规则后,可以大大地提高bean的性能和适应性,使得它们可以适应不同的持久存储类型。这给了部署者以更多的选择。也就是说 -- 一次编写,处处使用,而且是有效率地处处使用。
RK3588 部署 YOLO26-Pose 人体姿态检测:Windows Docker 环境全流程 YOLO26-Pose 在 RK3588 上的部署流程是 PC 端 ONNX 导出 → RKNN 转换(INT8 量化)→ 板端推理。INT8 量化后 YOLO26s-Pose 约 35ms,YOLO26n-Pose 约 15ms,可以覆盖实时姿态检测的需求。后处理是 Python 实现的常见瓶颈——如果帧率不达标,先用 npy 保存模型输出在 PC 上验证解析逻辑的正确性,确认无误后再迁移到 C++ 实现。 阅读详情

相关推荐

云桌面如何部署?云桌面系统方案部署详细教程

云桌面作为一种比较新的技术工具,核心解决的场景是方便设计师的灵活办公,本身技术就是非常的灵活性,所以在安装部署方面青椒云也做到了十足的灵活。

2301_79113726的博客 1639

浅谈JavaBean,Entity Bean,Enterprise Bean等Bean以及POJO的含义

一、对于java bean,就是一个java模型组件,他为使用java类提供了一种标准的格式,在用户程序和可视化管理工具中可以自动获得这种具有标准格式的类的信息,并能够创建和管理这些类。  java bean 可以使应用程序更加面向对象,可以把数据封装起来,把应用的业务逻辑和显示逻辑分离开,降低了开发的复杂程度和维护成本! JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaB

泊川 743

论文解读——YOLOv11(目标检测)

YOLOv11提供了多种型号和功能,以满足不同应用场景的需求。对象检测对象检测是YOLOv11的基本功能之一。在训练时,YOLOv11能够检测图像中的对象,并输出对象的边界框和类别信息。这一功能在自动驾驶、智能安防等领域具有广泛应用。图像分割图像分割是YOLOv11的另一个重要功能。与对象检测不同,图像分割不仅检测对象的边界框,还能够对图像中的对象进行像素级别的分割。这使得YOLOv11在医疗影像分析、工业制造等领域具有更高的应用价值。姿态检测姿态检测是YOLOv11的一个独特功能。

qq_38220914的博客 4463

JBuilder9+Weblogic7实战篇之Entity Bean运用篇(一)

JBuilder9+Weblogic7实战篇ENTITY BEAN的运用(一)                                                                             作者:黄 凯        E_mail:hk_sz@163.com 一、Entity Bean 的基础理论1.1 什么是Entity Be

kanaima的专栏 1403

电子货架标签应用浅析(ESL)

​【 关注与分享,是对原创最大的鼓励 】 年底了,会断续介绍几个主要的BLE的应用及市场情况,这篇文章介绍的是电子货架标签, ESL (Electronic Shelf Label)。 文章将从应用简介,市场规模,产业链,头部玩家及系统框架进行介绍。只对技术感兴趣的可以直接拉到底。 ESL简介 ESL,是一种显示产品,其主要是替代传统的纸质标签,应用于大型商超,...

iotthings的博客 4695

Starlink地面终端天线对星(一)对星流程,星历下载,信标信号

starlink卫星终端对星采用机械伺服+相控阵电子扫描的混合模式,兼顾快速盲扫和高精度跟踪;对星流程分三步:冷启动与盲捕获 → 建立初始链路并下载星历 → 进入正常通信模式;

chen2jiang3的博客 2726

EJB(SessionBean,EntityBean)的生命周期

SessionBean:Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要建立一个Bean的实例时,EJB容器不一定要创建一个新的Bean的实例供客户机调用,而是随便找一个现有的实例提供给客户机。当客户机第一次调用一个Stateful Session Bean 时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用Statef...

ayaya 282

​网格划分理论:CFD理论67 网格划分-三大理论问题_哔哩哔哩_bilibili传统解释非结构化网格是不对的——计算传热学大叔专题讨论2--CFD网格类型_哔哩哔哩_bilibili

传统解释非结构化网格是不对的——计算传热学大叔。fluent计算理论和离散方法原理视频推荐。

qq_15963745的博客 183

Java各种对象(PO,BO,VO,DTO,POJO,DAO,Entity,JavaBean,JavaBeans)的区分

PO:持久对象 (persistent object),po(persistent object)就是在Object/Relation Mapping框架中的Entity,po的每个属性基本上都对应数据库表里面的某个字段。完全是一个符合Java Bean规范的纯Java对象,没有增加别的属性和方法。持久对象是由insert数据库创建,由数据库delete删除的。基本上持久对象生命周期和数据库密切相...

weixin_30415801的博客 481

华为OD机试 - 比赛的冠亚季军(Python/JS/C/C++ 双机位C卷 100分)

有个运动员,他们的id为0到N-1,他们的实力由一组整数表示。他们之间进行比赛,需要决出冠亚军。比赛的规则是0号和1号比赛,2号和3号比赛,以此类推,每一轮,相邻的运动员进行比赛,获N (3\leq N< 10000)胜的进入下一轮,实力值大的获胜,实力值相等的情况,id小的情况下获胜,轮空的直接进入下一轮。(0 <= 实力值 <= 10000000000)。输入一行N个数字代表N的运动员的实力值。输出冠亚季军的id,用空格隔开。

学Java,找哪吒 1588

Vue+Echarts监控大屏实例四:智慧农业监控模板实例

本实例通过Vue-Echarts实现了智慧农业监控模板实例界面,学习并使用了vue-echarts的使用,接入高德地图并展示,添加了全屏切换、加载动画小鼓、站点切换及退出等相关功能,提供源码下载。

Java、前端、小程序学习笔记、问题汇总、项目实例分享,有需要请联系。 7671

5.23Java各种对象(PO,BO,VO,DTO,POJO,DAO,Entity,JavaBean,JavaBeans)的区分

作者:https://www.cnblogs.com/lyjin/p/6389349.html PO:持久对象(persistent object):---po就是在Object/Relation Mapping框架中的Entity---po的每个属性基本上都对应数据库表里面的某个字段。-----------持久层对象生命周期和数据库密切相关。 VO:值对象(Value ...

anxmq48288的专栏 253

嵌入式面经篇八——进程&线程

记录一些招聘公司在招聘嵌入式软件岗位时的一些问题,此文为第八篇。进程上文:是指进程由用户态切换到内核态时需要保存用户态时CPU寄存器中的值,进程状态以及堆栈上的内容。即保存当前进程的状态,以便再次执行该进程时,能够恢复切换时的状态,继续执行。进程下文:是指切换到内核态后执行的程序,即进程运行在内核空间的部分。中断上文:硬件通过中断触发信号,导致内核调用中断处理程序,进入内核空间。这个过程中,硬件的一些变量和参数也要传递给内核,内核通过这些参数进行中断处理。

明天你好的博客 1854

实体entity、JavaBean、Model、POJO、domain的区别

实体entity、JavaBean、Model、POJO、domain的区别 Java Bean、POJO、 Entity、 VO , 其实都是java 对象,只不过用于不同场合罢了。 按照 Spring MVC 分层结构: JavaBean: 表示层 (Presentation Layer) Entity: 业务层 (Service layer) Dao: 数据访问层...

MrBlackWhite的博客 4万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

SessionBean和EntityBean有什么区别?

SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件。EntityBean被用来代表应用系统中用到的数据。 SessionBean是一种非持久性对象,不会做持久化存储,只在一次会话中有效,会话结束则自动消除;而EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体,会

chuyue369的博客 4088

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

什么是JavaBean、bean? 什么是POJO、PO、DTO、VO、BO ? 什么是EJB、EntityBean?

前言: 在Java开发中经常遇到这些概念问题,有的可能理解混淆,有的可能理解不到位,特此花了很多时间理顺了这些概念。不过有些概念实际开发中并没有使用到,可能理解还不够准确,只能靠后续不断纠正了。 1、什么是POJO ? POJO(Plain Old Java Object)这种叫法是Martin Fowler、Rebecca Parsons和Josh MacKenzie在2000年的一...

有范管理美学 | 公众号/头条号:有范管理美学 8万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

JAVA中PO,BO,VO,DTO,POJO,Entity,JavaBean,JavaBeans各个对象的区别,以及lombo、jpa简介及用法...

为什么80%的码农都做不了架构师?>>> ...

weixin_33726318的博客 1034

PO,BO,VO,DTO,POJO,DAO,Entity,JavaBean,JavaBeans的区分(附图文)

PO (Persistent Object) PO((bean,entity等命名):持久化对象,它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系。 如果持久层是关系型数据库,那么,数据表中的每个字段(或若干个)就对应PO的一个(或若干个)属性。 VO(value object) 值对象 (view object)视图对象 VO(View Object):视图对象,用于展示层,它的...

魚 1908

POJO、JAVABean、Entity的区别

POJO   (Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。   其中有一些属性及其getter、setter方法的类,没有业务逻辑,有时可以作为VO(value-object)或DTO(Data Transfer Object)来使用。不允许有业务方法,也不能携带connection之类的方法,...

saiofo的博客 1万+

Java Bean、POJO、 Entity等区别

java基础 实体entity、JavaBean、Model、POJO、domain的区别 Java Bean、POJO、 Entity、 VO , 其实都是java 对象,只不过用于不同场合罢了。 按照 Spring MVC 分层结构: JavaBean: 表示层 (Presentation Layer) Entity: 业务层 (Service layer) Dao: 数据访问层 (data ...

wong_shenshen的博客 3257

J2EE学习笔记五:entity bean概念

    Entity Bean提供了一个关系数据库的面向对象的抽象,它能同时从面向对象技术和面向过程技术中获益。既然Entity Bean和Session Bean都是Enterprise Bean,那么它们必然具备一定的相同点:Entity Bean也要有一个Home Interface、Bean Interface和Bean Class,如下图所示:    Session Bean

鱼与飞鸟 3483

entity、pojo、javabean的理解区别

一、Bean 对于Bean而言,我的理解是只要是Java的类的就可以称为一个Bean,更用在Spring上,被Spring管理的对象就可以将其称作为Bean。 它不仅仅可以包括对象的属性以及get,set方法,还可以有具体的业务逻辑。 二、Entity 这个最容易理解,其特点是:数据表对应到实体类的映射 三、Model Model是MVC中一个概念,可能不和Entity一一对应,因为展示在View层中数据可能是一个Entity的精简,也可能是多个Entity的组合。一句话概括:Model是一个高

要有梦想,即使遥远 6635

177.Agent-LangGraph-MCP的构成说明

MCP架构通过MCP主机、客户端与服务器的协同,实现工具、资源与提示词的统一管理。MCP服务器提供Tools、Resources、Prompts能力,MCP客户端则负责发现、调用与读取,使Agent可按需获取上下文。其核心在于将工具从Agent中抽离,封装为可复用的服务,提升灵活性与可维护性,推动AI应用高效协作。

计算机王的博客 296

Docker Compose:搭建本地多服务开发环境

从一个 Java API、PostgreSQL 和 Redis 开始,配置服务名、端口、环境变量、健康检查、数据卷和依赖关系。理解 Compose 文件如何被解析、项目如何隔离,以及哪些数据不能依赖“重建容器”保留,能够把个人开发环境整理成团队可复用的启动入口。

m0_62221377的博客 477

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 436

【基于 WebSocket 的多用户网页五子棋】—— 数据管理模块

但行好事,莫问前程

qq_42996461的博客 254
上一篇: Jini和RMI开发中的codebase问题
下一篇: SQLJ简介
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值