OpenJDK17-JVM 源码阅读 - ZGC - 并发标记 | 京东物流技术团队
ZGC简介:
ZGC是金东源码Java垃圾回收器的前沿技术,支持低延迟、金东源码大容量堆、金东源码测网速的源码染色指针、金东源码读屏障等特性,金东源码自JDK起作为试验特性,金东源码JDK起支持Windows,金东源码JDK正式投入生产使用。金东源码在JDK中已实现分代收集,金东源码预计不久将发布,金东源码性能将更优秀。金东源码
ZGC特征:
1. 低延迟
2. 大容量堆
3. 染色指针
4. 读屏障
并发标记过程:
ZGC并发标记主要分为三个阶段:初始标记、金东源码并发标记/重映射、重分配。本篇主要分析并发标记/重映射部分源代码。
入口与并发标记:
整个ZGC源码入口是ZDriver::gc函数,其中concurrent()是一个宏定义。并发标记函数是concurrent_mark。
并发标记流程:
从ZHeap::heap()进入mark函数,使用任务框架执行任务逻辑在ZMarkTask里,具体执行函数是work。工作逻辑循环从标记条带中取出数据,直到取完或时间到。查看github源码此循环即为ZGC三色标记主循环。之后进入drain函数,从栈中取出指针进行标记,直到栈排空。标记过程包括从栈取数据,标记和递归标记。
标记与迭代:
标记过程涉及对象迭代遍历。标记流程中,ZGC通过map存储对象地址的finalizable和inc_live信息。map大小约为堆中对象对齐大小的二分之一。接着通过oop_iterate函数对对象中的指针进行迭代,使用ZMarkBarrierOopClosure作为读屏障,实现了指针自愈和防止漏标。
读屏障细节:
ZMarkBarrierOopClosure函数在标记非静态成员变量的指针时触发读屏障。慢路径处理和指针自愈是核心逻辑,慢路径标记指针,快速路径通过cas操作修复坏指针,并重新标记。
重映射过程:
读屏障触发标记后,对象被推入栈中,下次标记循环时取出。ZGC并发标记流程至此结束。
问题回顾:
本文解答了ZGC如何标记指针、三色标记过程、如何防止漏标、soap库源码指针自愈和并发重映射过程的问题。
扩展思考:
ZGC在指针上标记,当回收某个region时,如何得知对象是否存活?答案需要结合标记阶段和重分配阶段的代码。
结束语:
本文深入分析了ZGC并发标记的源码细节,对您有启发或帮助的话,请多多点赞支持。作者:京东物流 刘家存,来源:京东云开发者社区 自猿其说 Tech。转载请注明来源。
高度优化,京东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 提供了更广泛的模型转换支持。
自发布以来,itest考试源码dabnn 已被多个二值网络研究项目采用,包括商汤科技的 IR-Net 和北航等机构的 Balanced Binary Neural Networks with Gated Residual。这些应用展示了 dabnn 在二值网络领域的重要性与实用性。
Nacos 配置中心源码 | 京东物流技术团队
Nacos配置中心的源码解析
Nacos配置中心的入口位于spring-cloud-starter-alibaba-nacos-config-2.2.5.RELEASE.jar中的spring.factories文件,其中包含NacosConfigBootstrapConfiguration类,作为配置中心的核心入口,它管理了三个关键组件:NacosConfigProperties、NacosConfigManager和NacosPropertySourceLocator。
NacosConfigManager主要负责管理NacosConfigProperties和ConfigService,构造时会创建ConfigService实例,该实例中包含MetricsHttpAgent和ServerHttpAgent,前者负责与Nacos服务器的通信,后者通过NacosRestTemplate发送GET请求获取配置信息。
客户端工作主要由NacosConfigService负责,它初始化一个ClientWorker,包含一个定时任务线程池用于每隔毫秒轮询配置,以及一个线程池处理来自Nacos的配置更新。这些线程池执行checkConfigInfo、checkLocalConfig、checkUpdateDataIds、getServerConfig和checkListenerMd5等方法,确保配置的实时更新和缓存管理。
当配置更新时,Nacos会发布RefreshEvent,由Spring Cloud的RefreshEventListener监听。该监听器会根据@RefreshScope注解刷新相关bean,涉及的刷新操作包括提取环境变量,更新配置文件,触发环境变更事件,并重新加载配置。
在服务端,DumpService类负责将配置数据保存到磁盘,包括全量或增量更新。ExternalDumpService在初始化时执行dumpConfigInfo方法,根据条件决定是否全量更新。ConfigCacheService则负责将配置写入磁盘并更新MD5缓存,同步到客户端。
客户端获取配置通过HTTP GET请求,监听配置则是通过POST请求的长连接轮询。Nacos管理端变更配置通过POST请求,修改后会触发ConfigDataChangeEvent,用于同步到其他节点。
总的来说,Nacos配置中心通过精细的架构设计,实现了配置的高效获取、更新和同步,确保了应用环境的动态刷新。
京东商城项目实战HTML+CSS+JavaScript
本文将分享仿京东商城HTML+CSS+JavaScript实战项目,让您深入了解电商网站开发。下载完整源码请前往《仿京东商城html网页源码》进行获取。
项目结构清晰,下载后您将看到包含HTML、CSS、JavaScript及所需的完整源码。通过本项目,您将学习到电商网站的核心开发技术。
页面展示包含京东商城首页及其多个类别,如下:
首页包括轮播图、商品分类(如家电通讯、电脑数码等)、生活的橱窗、家电通讯、电脑数码、服饰鞋包、美容珠宝、家具生活、母音玩具、食品保健、图书音像以及脚部相关商品。全方位展示京东商城丰富商品。
通过本项目,您可以学习如何构建结构清晰、功能丰富的电商网站页面,掌握HTML、CSS、JavaScript的实战应用。下载完整源码,立即开始您的电商网站开发之旅!
源码资本投了哪些公司
源码资本投资的公司包括美团、趣头条、乐言科技、达达-京东到家等。 源码资本是一家知名的投资机构,其在多个领域都有布局。源码资本对创业公司的投资主要集中在互联网和相关科技领域。其中,美团是源码资本的一个重要投资项目,美团作为一个综合性的生活服务平台,拥有庞大的用户群体和市场份额。趣头条则是一个新兴的资讯平台,源码资本在其早期阶段就进行了投资,见证了其快速成长。此外,源码资本还投资了乐言科技等人工智能企业以及达达-京东到家等电商物流领域的公司。 具体来说,源码资本不仅为这些公司提供资金支持,还通过自身的经验和资源帮助这些公司更好地发展。他们不仅帮助公司解决一些运营上的问题,还会在技术、市场等方面提供一些指导和建议。这种全方位的支持有助于被投资公司快速成长,并为源码资本带来更多的回报。通过多元化的投资布局,源码资本成功地赢得了行业内的高度认可。nodejs最新京东m端h5st 4.2签名算法4.2版本逆向,京东API接口,京东商品数据采集
分析京东m端使用的新版本h5st 4.2签名算法,与之前的4.1版本相比,算法在混淆window、JD等环境变量方面显著提高,增加了逆向难度。本文详细解析4.2版本的逆向过程,帮助读者了解其加密机制。
在逆向研究中,关注的是4.2版本签名算法的加密逻辑。为了实现对京东API接口的访问,需要解码并理解其中的加密过程。具体而言,重点关注评论接口和参数h5st。
对于参数h5st,其加密结果为%3Biwtagp9mzt%3Be%3BtkwaacblMyszeDMrMjMz4egDE8H9pUcx3gZF-xLwr2oOECX4cd8O4rqH_H1v1EJsrbFkhTR1r9ID2kf_%3B6a1e6cedbaaebaeabcddfacce4c%3B4.2%3B%3B0aeefafc5a7faa1ad5ecfdaad5fe7e4aacccbbcedaa6faacdaec2fdcd9cfadabecbfd6c8dcaacaeb2acc2f9dee2fcdac8faacdbaddfcccbedeccedbffc1d8fddad2bafbdb7accaec0beb7a1bbdc9afcecee4efddabbfbfdafd5be6fd3afbfec6dd0bfdbf6acba2e4fceacdeae4abffeddfc1b8cbace,版本号显示为4.2。
在解码body参数后,发现其加密位置与h5st 4.1版本的加密逻辑相似。通过验证,与浏览器返回的结果一致,这表明加密过程已成功复现。
通过全局搜索h5st字符串,定位到其位置,结合单步调试,最终逆向得到h5st 4.2源码的部分代码片段。在nodejs环境中调试请求,成功获取数据,标志着逆向研究的完成。
综上所述,本文详细阐述了京东m端h5st 4.2签名算法的逆向过程,包括参数解析、加密解码、代码分析以及实际请求实现,为理解京东API接口的加密机制提供了直观的路径。
2024-11-30 10:47
2024-11-30 10:37
2024-11-30 10:25
2024-11-30 09:11
2024-11-30 08:07