OpenJDK17-JVM 源码阅读 - ZGC - 并发标记 | 京东物流技术团队
ZGC简介:
ZGC是Java垃圾回收器的前沿技术,支持低延迟、源码源码大容量堆、京东京东染色指针、网页网页读屏障等特性,源码源码cpa虚拟挂机源码自JDK起作为试验特性,京东京东JDK起支持Windows,网页网页JDK正式投入生产使用。源码源码在JDK中已实现分代收集,京东京东预计不久将发布,网页网页性能将更优秀。源码源码
ZGC特征:
1. 低延迟
2. 大容量堆
3. 染色指针
4. 读屏障
并发标记过程:
ZGC并发标记主要分为三个阶段:初始标记、京东京东并发标记/重映射、网页网页重分配。源码源码本篇主要分析并发标记/重映射部分源代码。
入口与并发标记:
整个ZGC源码入口是ZDriver::gc函数,其中concurrent()是一个宏定义。并发标记函数是concurrent_mark。
并发标记流程:
从ZHeap::heap()进入mark函数,使用任务框架执行任务逻辑在ZMarkTask里,导航灯源码具体执行函数是work。工作逻辑循环从标记条带中取出数据,直到取完或时间到。此循环即为ZGC三色标记主循环。之后进入drain函数,从栈中取出指针进行标记,直到栈排空。标记过程包括从栈取数据,标记和递归标记。
标记与迭代:
标记过程涉及对象迭代遍历。标记流程中,ZGC通过map存储对象地址的finalizable和inc_live信息。map大小约为堆中对象对齐大小的二分之一。接着通过oop_iterate函数对对象中的指针进行迭代,使用ZMarkBarrierOopClosure作为读屏障,实现了指针自愈和防止漏标。
读屏障细节:
ZMarkBarrierOopClosure函数在标记非静态成员变量的指针时触发读屏障。慢路径处理和指针自愈是核心逻辑,慢路径标记指针,快速路径通过cas操作修复坏指针,极速摩托开奖源码并重新标记。
重映射过程:
读屏障触发标记后,对象被推入栈中,下次标记循环时取出。ZGC并发标记流程至此结束。
问题回顾:
本文解答了ZGC如何标记指针、三色标记过程、如何防止漏标、指针自愈和并发重映射过程的问题。
扩展思考:
ZGC在指针上标记,当回收某个region时,如何得知对象是否存活?答案需要结合标记阶段和重分配阶段的代码。
结束语:
本文深入分析了ZGC并发标记的源码细节,对您有启发或帮助的话,请多多点赞支持。作者:京东物流 刘家存,来源:京东云开发者社区 自猿其说 Tech。转载请注明来源。
python采集京东app端搜索商品数据(--)
一、技术要点:
1、杏彩2019源码通过使用charles工具从手机app端进行抓包,可以获取到cookie信息;
2、无需安装nodejs,整个项目采用纯python源码编写;
3、搜索商品数据的接口为:functionId=search;
4、clientVersion的值为".1.4",同时也兼容更高版本的app;
5、sign签名算法已经转换为python源码;
6、body部分需要经过uri编码处理;
7、sign签名所需的参数包括:
sign=service.get_st_sign_sv(data_json, functionId, uuid, clientVersion)
其中,data_json代表body内容;
functionId表示接口类型,此处为:functionId="search";
uuid为设备标识,可以通过抓包获取,例如:uuid="d5aada6cce";
clientVersion为app版本号,例如:clientVersion=".1.4"。
高度优化,京东AI开源的二值网络inference框架
京东 AI 开源了一个高度优化的针对 ARM 指令集的二值网络推理框架 dabnn。dabnn 是首个针对二值网络的开源推理框架,相较于 BMXNet,其速度提升了一个数量级。武汉到广西源码dabnn 已在 ACM MM 的 Open Source Software Competition 中被接收。
二值网络是一种特殊神经网络,权重和中间特征被压缩至 1 位,实现了网络量化到极致。二值网络的优势在于 1 位乘加操作能通过位运算高效实现,使其能在主流硬件平台上无缝运行。相比之下,三值、2 位、4 位等量化网络需特殊硬件平台支持,且在计算效率上无法与二值网络匹敌。
在二值网络领域,已有 BMXNet、BitStream、BitFlow 等推理框架。然而,这些框架或无源代码,或速度较慢。dabnn 则填补了这一空白,提供了针对 ARM 指令集高度优化的推理框架。论文证实了 dabnn 的高效性,并在 ACM MM 的 Open Source Software Competition 中被接收。
dabnn 通过使用 Binary Direct Convolution 实现二值卷积,而非 BMXNet 使用的 BGEMM。这种策略减少了 addv 指令的使用,优化了 ARM 架构下的计算过程。实验对比显示,dabnn 在 3x3 卷积上的推理速度相较于 TensorFlow Lite 提升了 8~ 倍,相较于 BMXNet 提升了 7~ 倍。
为方便使用,dabnn 开源了将 ONNX 模型转换为 dabnn 模型的工具。这一功能使得 dabnn 可与几乎所有训练框架兼容。与 BMXNet 相比,dabnn 提供了更广泛的模型转换支持。
自发布以来,dabnn 已被多个二值网络研究项目采用,包括商汤科技的 IR-Net 和北航等机构的 Balanced Binary Neural Networks with Gated Residual。这些应用展示了 dabnn 在二值网络领域的重要性与实用性。
Python爬虫实战之(四)| 模拟登录京东商城
本篇内容主要介绍如何通过Python实现模拟登录京东商城。京东商城登录页面需要输入用户名和密码,但实际操作中,浏览器会自动处理这些操作并提交表单数据。在爬虫模拟登录时,我们需自己实现这一过程,包括理解并处理表单数据、管理cookie和处理验证码等。
模拟登录的核心是通过POST请求向服务器提交用户名、密码等信息。由于京东登录页面包含隐藏表单字段和token,因此首先需要分析并提取这些字段信息。在浏览器开发者工具中,可以查看浏览器是如何构建这些数据并发送请求的。通过分析页面源代码,可以找到所需的字段信息。
接着,我们需要处理cookie,这是模拟登录时确保会话状态的关键。可以使用requests库来自动管理cookie,实现与服务器之间的会话交互。在初次请求时,服务器会返回cookie信息,后续请求会自动带上这些cookie,确保登录状态。
在模拟登录过程中,还可能遇到验证码问题。本文选择手动识别验证码,以理解整个登录流程。通过分析登录页面的HTML,可以找到包含验证码的链接,通过添加时间戳等参数,最终获取验证码并进行识别。
实现模拟登录的步骤如下:
1. 分析并提取登录页面的表单字段信息。
2. 使用requests库发送POST请求,提交用户名、密码、token等信息。
3. 处理验证码,手动识别并输入。
4. 检查登录状态,通过检查购物车商品信息等来验证登录是否成功。
代码实现可参考GitHub仓库链接,该仓库包含了实现京东商城模拟登录的完整代码。在实际应用中,可能需要根据目标网站的登录机制调整代码逻辑。模拟登录技术在爬虫中应用广泛,可以帮助获取特定网站的用户数据,如个人信息、历史订单等。
为了进一步提高模拟登录技术的实践能力,后续文章将分享更多关于模拟登录的实战案例和相关网站登录机制的解析。欢迎读者参与讨论和分享经验,共同提高模拟登录技术的应用水平。
京东怎么保存
该平台保存的方法是:直接保存、通过查看网页代码保存。
1、直接保存。在京东APP中找到想要保存的,长按后选择“保存”即可。
2、通过查看网页源代码保存。在京东网站中,找到感兴趣的商品页面,点击鼠标右键,选择“查看网页源代码”,在源代码窗口中按Ctrl+F或Command+F,然后在搜索框中输入“img”,找到与产品相关的链接,复制所选链接,并将其粘贴到新的浏览器标签页中,之后点击右键选择“保存图像”即可。
2024-11-14 12:15
2024-11-14 11:49
2024-11-14 11:42
2024-11-14 10:41
2024-11-14 10:20