1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-08-01 16:28:03 +08:00

Compare commits

...

20 Commits

Author SHA1 Message Date
Guide
ee81831a1c
Merge pull request #2275 from Dabibio/patch-1
错别字修复
2024-02-20 15:27:26 +08:00
FUZE_B
92efaa90f7
错别字 2024-02-20 10:37:25 +08:00
Guide
8fc0709d5b
Merge pull request #2272 from Victor-PYJ/shell_string
shell脚本字符串截取结果修正
2024-02-19 17:05:22 +08:00
Victor-PYJ
3670b9e887
shell脚本字符串截取结果修正 2024-02-19 11:14:47 +08:00
Guide
0d32358899
Merge pull request #2270 from visitor23/main
typo fix
2024-02-19 08:58:36 +08:00
复制粘贴委员会首席技术专家, 加里敦大学著名bug架构师
b55441c86d
typo fix
修改了一处 布隆过滤器文章链接错误导致跳转页面失败 的问题,
将链接后缀的 'bloom-filter/' 改正为 'bloom-filter.html'
2024-02-18 19:53:22 +08:00
Guide
f92c40866f
Merge pull request #2269 from Eternal-Night-Archer/syntactic-sugar-vararg
Update syntactic-sugar.md for trasient method
2024-02-18 19:49:55 +08:00
Jiageng
5017d62219
Update syntactic-sugar.md for trasient method 2024-02-18 16:47:36 +08:00
Guide
c5260fae12
Merge pull request #2262 from 2382546457/main
Update disruptor-questions.md
2024-02-18 16:34:52 +08:00
Guide
6339b160b0 [docs fix]移除jvm垃圾回收的一篇无效参考链接 2024-02-18 16:34:32 +08:00
Guide
40f55c6023
Merge pull request #2264 from ShimenTian/patch-3
修改两处笔误
2024-02-18 16:31:22 +08:00
Guide
4da0cc7525
Merge pull request #2265 from MrXionGe/patch-1
标记CMS收集器在JDK9之后被弃用
2024-02-18 16:30:45 +08:00
Guide
5f88d50936
Merge pull request #2268 from MrXionGe/patch-2
更新了一些ZGC的描述
2024-02-18 16:27:48 +08:00
大熊同学
ff95ba7a07
更新了一些ZGC的描述 2024-02-18 15:55:45 +08:00
大熊同学
6f101ddd54
标记CMS收集器在JDK9之后被弃用 2024-02-18 15:06:00 +08:00
ShimenTian
8714711661
修改一处笔误 2024-02-18 12:46:30 +08:00
Guide
9e5c360709 [docs update]移除个人微信添加方式 2024-02-18 11:33:12 +08:00
Guide
f77a146744
Merge pull request #2263 from visitor23/main
typo fix
2024-02-17 18:36:54 +08:00
复制粘贴委员会首席技术专家, 加里敦大学著名bug架构师
0c1c435557
typo fix
修改了一处错字, 将 '准守' 改正为 '遵守'
2024-02-17 14:31:29 +08:00
2382546457
3674050479
Update disruptor-questions.md
Disruptor 缓存行多少无效填充的问题的补充
2024-02-16 14:32:56 +08:00
15 changed files with 37 additions and 31 deletions

View File

@ -48,14 +48,14 @@ export default hopeTheme({
notice: [ notice: [
{ {
path: "/", path: "/",
title: "Java学习路线最新版", title: "2023技术年货汇总",
showOnce: true, showOnce: true,
content: content:
"花了一个月零碎的时间,我根据当下 Java 后端求职和招聘的最新要求,对之前写的 Java 后端学习路线进行了全面的优化和改进。这可能是你所见过的最用心、最全面的 Java 后端学习路线,共 4w+ 字。", "抽空整理了一些优秀的技术团队公众号 2023 年的优质技术文章汇总,质量都挺高的,强烈建议打开这篇文章看看。",
actions: [ actions: [
{ {
text: "免费获取", text: "开始阅读",
link: "https://mp.weixin.qq.com/s/6nWgi22UT5Y7nJiPfQ_XIw", link: "https://www.yuque.com/snailclimb/dr6cvl/nt5qc467p3t6s13k?singleDoc# 《2023技术年货》",
type: "primary", type: "primary",
}, },
], ],

View File

@ -143,9 +143,7 @@ JavaGuide 知识星球优质主题汇总传送门:<https://www.yuque.com/snail
![知识星球30元优惠卷](https://oss.javaguide.cn/xingqiu/xingqiuyouhuijuan-30.jpg) ![知识星球30元优惠卷](https://oss.javaguide.cn/xingqiu/xingqiuyouhuijuan-30.jpg)
进入星球之后,记得查看 **[星球使用指南](https://t.zsxq.com/0d18KSarv)** (一定要看!!!) 和 **[星球优质主题汇总](https://www.yuque.com/snailclimb/rpkqw1/ncxpnfmlng08wlf1)** 。另外,建议你添加一下我的个人微信( **javaguide1024** ,备注 **“星球”** ,生活号,球友专属),方便后续交流沟通。 进入星球之后,记得查看 **[星球使用指南](https://t.zsxq.com/0d18KSarv)** (一定要看!!!) 和 **[星球优质主题汇总](https://t.zsxq.com/12uSKgTIm)** 。
![个人微信](https://oss.javaguide.cn/xingqiu/weixin-guidege666.jpeg)
**无任何套路,无任何潜在收费项。用心做内容,不割韭菜!** **无任何套路,无任何潜在收费项。用心做内容,不割韭菜!**

View File

@ -220,7 +220,7 @@ var="https://www.runoob.com/linux/linux-shell-variable.html"
# 注: *为通配符, 意为匹配任意数量的任意字符 # 注: *为通配符, 意为匹配任意数量的任意字符
s1=${var%%t*} #h s1=${var%%t*} #h
s2=${var%t*} #https://www.runoob.com/linux/linux-shell-variable.h s2=${var%t*} #https://www.runoob.com/linux/linux-shell-variable.h
s3=${var%%.*} #http://www s3=${var%%.*} #https://www
s4=${var#*/} #/www.runoob.com/linux/linux-shell-variable.html s4=${var#*/} #/www.runoob.com/linux/linux-shell-variable.html
s5=${var##*/} #linux-shell-variable.html s5=${var##*/} #linux-shell-variable.html
``` ```

View File

@ -396,7 +396,7 @@ ALTER TABLE `cus_order` ADD INDEX id_score_name(score, name);
索引失效也是慢查询的主要原因之一,常见的导致索引失效的情况有下面这些: 索引失效也是慢查询的主要原因之一,常见的导致索引失效的情况有下面这些:
- ~~使用 `SELECT *` 进行查询;~~ `SELECT *` 不会直接导致索引失效(如果不走索引大概率是因为 where 查询范围过大导致的),但它可能会带来一些其他的性能问题比如造成网络传输和数据处理的浪费、无法使用索引覆盖; - ~~使用 `SELECT *` 进行查询;~~ `SELECT *` 不会直接导致索引失效(如果不走索引大概率是因为 where 查询范围过大导致的),但它可能会带来一些其他的性能问题比如造成网络传输和数据处理的浪费、无法使用索引覆盖;
- 创建了组合索引,但查询条件未守最左匹配原则; - 创建了组合索引,但查询条件未守最左匹配原则;
- 在索引列上进行计算、函数、类型转换等操作; - 在索引列上进行计算、函数、类型转换等操作;
- 以 % 开头的 LIKE 查询比如 `LIKE '%abc';`; - 以 % 开头的 LIKE 查询比如 `LIKE '%abc';`;
- 查询条件中使用 OR且 OR 的前后条件中有一个列没有索引,涉及的索引都不会被使用到; - 查询条件中使用 OR且 OR 的前后条件中有一个列没有索引,涉及的索引都不会被使用到;

View File

@ -659,7 +659,7 @@ Bloom Filter 会使用一个较大的 bit 数组来保存所有的数据,数
![加入布隆过滤器之后的缓存处理流程图](https://oss.javaguide.cn/github/javaguide/database/redis/redis-cache-penetration-bloom-filter.png) ![加入布隆过滤器之后的缓存处理流程图](https://oss.javaguide.cn/github/javaguide/database/redis/redis-cache-penetration-bloom-filter.png)
更多关于布隆过滤器的详细介绍可以看看我的这篇原创:[不了解布隆过滤器?一文给你整的明明白白!](https://javaguide.cn/cs-basics/data-structure/bloom-filter/) ,强烈推荐。 更多关于布隆过滤器的详细介绍可以看看我的这篇原创:[不了解布隆过滤器?一文给你整的明明白白!](https://javaguide.cn/cs-basics/data-structure/bloom-filter.html) ,强烈推荐。
**3接口限流** **3接口限流**

View File

@ -115,7 +115,7 @@ Disruptor 真的很快,关于它为什么这么快这个问题,会在后文
## Disruptor 为什么这么快? ## Disruptor 为什么这么快?
- **RingBuffer环形数组** : Disruptor 内部的 RingBuffer 是通过数组实现的。由于这个数组中的所有元素在初始化时一次性全部创建,因此这些元素的内存地址一般来说是连续的。这样做的好处是,当生产者不断往 RingBuffer 中插入新的事件对象时,这些事件对象的内存地址就能够保持连续,从而利用 CPU 缓存的局部性原理,将相邻的事件对象一起加载到缓存中,提高程序的性能。这类似于 MySQL 的预读机制将连续的几个页预读到内存里。除此之外RingBuffer 基于数组还支持批量操作一次处理多个元素、还可以避免频繁的内存分配和垃圾回收RingBuffer 是一个固定大小的数组,当向数组中添加新元素时,如果数组已满,则新元素将覆盖掉最旧的元素)。 - **RingBuffer环形数组** : Disruptor 内部的 RingBuffer 是通过数组实现的。由于这个数组中的所有元素在初始化时一次性全部创建,因此这些元素的内存地址一般来说是连续的。这样做的好处是,当生产者不断往 RingBuffer 中插入新的事件对象时,这些事件对象的内存地址就能够保持连续,从而利用 CPU 缓存的局部性原理,将相邻的事件对象一起加载到缓存中,提高程序的性能。这类似于 MySQL 的预读机制将连续的几个页预读到内存里。除此之外RingBuffer 基于数组还支持批量操作一次处理多个元素、还可以避免频繁的内存分配和垃圾回收RingBuffer 是一个固定大小的数组,当向数组中添加新元素时,如果数组已满,则新元素将覆盖掉最旧的元素)。
- **避免了伪共享问题**CPU 缓存内部是按照 Cache Line缓存行管理的一般的 Cache Line 大小在 64 字节左右。Disruptor 为了确保目标字段独占一个 Cache Line会在目标字段前后增加了 64 个字节的填充(前 56 个字节和后 8 个字节),这样可以避免 Cache Line 的伪共享False Sharing问题。 - **避免了伪共享问题**CPU 缓存内部是按照 Cache Line缓存行管理的一般的 Cache Line 大小在 64 字节左右。Disruptor 为了确保目标字段独占一个 Cache Line会在目标字段前后增加字节填充(前 56 个字节和后 56 个字节),这样可以避免 Cache Line 的伪共享False Sharing问题。同时,为了让 RingBuffer 存放数据的数组独占缓存行,数组的设计为 无效填充128字节+ 有效数据。
- **无锁设计**Disruptor 采用无锁设计避免了传统锁机制带来的竞争和延迟。Disruptor 的无锁实现起来比较复杂,主要是基于 CAS、内存屏障Memory Barrier、RingBuffer 等技术实现的。 - **无锁设计**Disruptor 采用无锁设计避免了传统锁机制带来的竞争和延迟。Disruptor 的无锁实现起来比较复杂,主要是基于 CAS、内存屏障Memory Barrier、RingBuffer 等技术实现的。
综上所述Disruptor 之所以能够如此快,是基于一系列优化策略的综合作用,既充分利用了现代 CPU 缓存结构的特点,又避免了常见的并发问题和性能瓶颈。 综上所述Disruptor 之所以能够如此快,是基于一系列优化策略的综合作用,既充分利用了现代 CPU 缓存结构的特点,又避免了常见的并发问题和性能瓶颈。

View File

@ -36,7 +36,7 @@ icon: path
1. 你首先搞清楚自己要找什么工作 1. 你首先搞清楚自己要找什么工作
2. 然后根据招聘岗位的要求梳理一份技能清单 2. 然后根据招聘岗位的要求梳理一份技能清单
3. 根据技能清单写好最终的简历 3. 根据技能清单写好最终的简历
4. 最后再按照建立的要求去学习和提升。 4. 最后再按照简历的要求去学习和提升。
这其实也是 **以终为始** 思想的运用。 这其实也是 **以终为始** 思想的运用。

View File

@ -246,7 +246,7 @@ public static transient void print(String strs[])
} }
``` ```
从反编译后代码可以看出,可变参数在被使用的时候,他首先会创建一个数组,数组的长度就是调用该方法是传递的实参的个数,然后再把参数值全部放到这个数组当中,然后再把这个数组作为参数传递到被调用的方法中。 从反编译后代码可以看出,可变参数在被使用的时候,他首先会创建一个数组,数组的长度就是调用该方法是传递的实参的个数,然后再把参数值全部放到这个数组当中,然后再把这个数组作为参数传递到被调用的方法中。(注:`trasient` 仅在修饰成员变量时有意义,此处 “修饰方法” 是由于在 javassist 中使用相同数值分别表示 `trasient` 以及 `vararg`,见 [此处](https://github.com/jboss-javassist/javassist/blob/7302b8b0a09f04d344a26ebe57f29f3db43f2a3e/src/main/javassist/bytecode/AccessFlag.java#L32)。)
### 枚举 ### 枚举

View File

@ -464,6 +464,8 @@ JDK1.8 默认使用的是 Parallel Scavenge + Parallel Old如果指定了-XX:
- **无法处理浮动垃圾;** - **无法处理浮动垃圾;**
- **它使用的回收算法-“标记-清除”算法会导致收集结束时会有大量空间碎片产生。** - **它使用的回收算法-“标记-清除”算法会导致收集结束时会有大量空间碎片产生。**
**从 JDK9 开始CMS 收集器已被弃用。**
### G1 收集器 ### G1 收集器
**G1 (Garbage-First) 是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器. 以极高概率满足 GC 停顿时间要求的同时,还具备高吞吐量性能特征.** **G1 (Garbage-First) 是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器. 以极高概率满足 GC 停顿时间要求的同时,还具备高吞吐量性能特征.**
@ -492,22 +494,29 @@ G1 收集器的运作大致分为以下几个步骤:
与 CMS 中的 ParNew 和 G1 类似ZGC 也采用标记-复制算法,不过 ZGC 对该算法做了重大改进。 与 CMS 中的 ParNew 和 G1 类似ZGC 也采用标记-复制算法,不过 ZGC 对该算法做了重大改进。
在 ZGC 中出现 Stop The World 的情况会更少! ZGC 可以将暂停时间控制在几毫秒以内,且暂停时间不受堆内存大小的影响,出现 Stop The World 的情况会更少但代价是牺牲了一些吞吐量。ZGC 最大支持 16TB 的堆内存。
Java11 的时候 ZGC 还在试验阶段。经过多个版本的迭代不断的完善和修复问题ZGC 在 Java 15 已经可以正式使用了! ZGC 在 Java11 中引入处于试验阶段。经过多个版本的迭代不断的完善和修复问题ZGC 在 Java15 已经可以正式使用了。
不过,默认的垃圾回收器依然是 G1。你可以通过下面的参数启 ZGC 不过,默认的垃圾回收器依然是 G1。你可以通过下面的参数启 ZGC
```bash ```bash
java -XX:+UseZGC className java -XX:+UseZGC className
``` ```
在 Java21 中,引入了分代 ZGC暂停时间可以缩短到1毫秒以内。
你可以通过下面的参数启用分代 ZGC
```bash
java -XX:+UseZGC -XX:+ZGenerational className
```
关于 ZGC 收集器的详细介绍推荐阅读美团技术团队的 [新一代垃圾回收器 ZGC 的探索与实践](https://tech.meituan.com/2020/08/06/new-zgc-practice-in-meituan.html) 这篇文章。 关于 ZGC 收集器的详细介绍推荐阅读美团技术团队的 [新一代垃圾回收器 ZGC 的探索与实践](https://tech.meituan.com/2020/08/06/new-zgc-practice-in-meituan.html) 这篇文章。
## 参考 ## 参考
- 《深入理解 Java 虚拟机JVM 高级特性与最佳实践(第二版》 - 《深入理解 Java 虚拟机JVM 高级特性与最佳实践(第二版》
- <https://my.oschina.net/hosee/blog/644618> - The Java® Virtual Machine Specification - Java SE 8 Edition<https://docs.oracle.com/javase/specs/jvms/se8/html/index.html>
- <https://docs.oracle.com/javase/specs/jvms/se8/html/index.html>
<!-- @include: @article-footer.snippet.md --> <!-- @include: @article-footer.snippet.md -->

View File

@ -7,7 +7,7 @@ heroText: JavaGuide
tagline: 「Java学习 + 面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。准备 Java 面试,首选 JavaGuide tagline: 「Java学习 + 面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。准备 Java 面试,首选 JavaGuide
actions: actions:
- text: 开始阅读 - text: 开始阅读
link: /home/ link: /home.md
type: primary type: primary
- text: 知识星球 - text: 知识星球
link: /about-the-author/zhishixingqiu-two-years.md link: /about-the-author/zhishixingqiu-two-years.md

View File

@ -18,9 +18,7 @@
![知识星球30元优惠卷](https://oss.javaguide.cn/xingqiu/xingqiuyouhuijuan-30.jpg) ![知识星球30元优惠卷](https://oss.javaguide.cn/xingqiu/xingqiuyouhuijuan-30.jpg)
进入星球之后,记得查看 **[星球使用指南](https://t.zsxq.com/0d18KSarv)** (一定要看!!!) 和 **[星球优质主题汇总](https://www.yuque.com/snailclimb/rpkqw1/ncxpnfmlng08wlf1)** 。另外,建议你添加一下我的个人微信( **javaguide1024** ,备注 **“星球”** ,生活号,球友专属),方便后续交流沟通。 进入星球之后,记得查看 **[星球使用指南](https://t.zsxq.com/0d18KSarv)** (一定要看!!!) 和 **[星球优质主题汇总](https://t.zsxq.com/12uSKgTIm)** 。
![个人微信](https://oss.javaguide.cn/xingqiu/weixin-guidege666.jpeg)
**无任何套路,无任何潜在收费项。用心做内容,不割韭菜!** **无任何套路,无任何潜在收费项。用心做内容,不割韭菜!**

View File

@ -20,9 +20,7 @@
![知识星球30元优惠卷](https://oss.javaguide.cn/xingqiu/xingqiuyouhuijuan-30.jpg) ![知识星球30元优惠卷](https://oss.javaguide.cn/xingqiu/xingqiuyouhuijuan-30.jpg)
进入星球之后,记得查看 **[星球使用指南](https://t.zsxq.com/0d18KSarv)** (一定要看!!!) 和 **[星球优质主题汇总](https://www.yuque.com/snailclimb/rpkqw1/ncxpnfmlng08wlf1)** 。另外,建议你添加一下我的个人微信( **javaguide1024** ,备注 **“星球”** ,生活号,球友专属),方便后续交流沟通。 进入星球之后,记得查看 **[星球使用指南](https://t.zsxq.com/0d18KSarv)** (一定要看!!!) 和 **[星球优质主题汇总](https://www.yuque.com/snailclimb/rpkqw1/ncxpnfmlng08wlf1)** 。
![个人微信](https://oss.javaguide.cn/xingqiu/weixin-guidege666.jpeg)
**无任何套路,无任何潜在收费项。用心做内容,不割韭菜!** **无任何套路,无任何潜在收费项。用心做内容,不割韭菜!**

View File

@ -18,9 +18,7 @@
![知识星球30元优惠卷](https://oss.javaguide.cn/xingqiu/xingqiuyouhuijuan-30.jpg) ![知识星球30元优惠卷](https://oss.javaguide.cn/xingqiu/xingqiuyouhuijuan-30.jpg)
进入星球之后,记得查看 **[星球使用指南](https://t.zsxq.com/0d18KSarv)** (一定要看!!!) 和 **[星球优质主题汇总](https://www.yuque.com/snailclimb/rpkqw1/ncxpnfmlng08wlf1)** 。另外,建议你添加一下我的个人微信( **javaguide1024** ,备注 **“星球”** ,生活号,球友专属),方便后续交流沟通。 进入星球之后,记得查看 **[星球使用指南](https://t.zsxq.com/0d18KSarv)** (一定要看!!!) 和 **[星球优质主题汇总](https://t.zsxq.com/12uSKgTIm)** 。
![个人微信](https://oss.javaguide.cn/xingqiu/weixin-guidege666.jpeg)
**无任何套路,无任何潜在收费项。用心做内容,不割韭菜!** **无任何套路,无任何潜在收费项。用心做内容,不割韭菜!**

View File

@ -178,7 +178,7 @@ Session-Cookie 方案在单体环境是一个非常好的身份认证方案。
## 为什么 Cookie 无法防止 CSRF 攻击,而 Token 可以? ## 为什么 Cookie 无法防止 CSRF 攻击,而 Token 可以?
**CSRF(Cross Site Request Forgery)** 一般被翻译为 **跨站请求伪造** 。那么什么是 **跨站请求伪造** 呢?说简单用你的身份去发送一些对你不友好的请求。举个简单的例子: **CSRF(Cross Site Request Forgery)** 一般被翻译为 **跨站请求伪造** 。那么什么是 **跨站请求伪造** 呢?说简单点,就是用你的身份去发送一些对你不友好的请求。举个简单的例子:
小壮登录了某网上银行,他来到了网上银行的帖子区,看到一个帖子下面有一个链接写着“科学理财,年盈利率过万”,小壮好奇的点开了这个链接,结果发现自己的账户少了 10000 元。这是这么回事呢?原来黑客在链接中藏了一个请求,这个请求直接利用小壮的身份给银行发送了一个转账请求,也就是通过你的 Cookie 向银行发出请求。 小壮登录了某网上银行,他来到了网上银行的帖子区,看到一个帖子下面有一个链接写着“科学理财,年盈利率过万”,小壮好奇的点开了这个链接,结果发现自己的账户少了 10000 元。这是这么回事呢?原来黑客在链接中藏了一个请求,这个请求直接利用小壮的身份给银行发送了一个转账请求,也就是通过你的 Cookie 向银行发出请求。
@ -190,7 +190,7 @@ Session-Cookie 方案在单体环境是一个非常好的身份认证方案。
`Session` 认证中 `Cookie` 中的 `SessionId` 是由浏览器发送到服务端的,借助这个特性,攻击者就可以通过让用户误点攻击链接,达到攻击效果。 `Session` 认证中 `Cookie` 中的 `SessionId` 是由浏览器发送到服务端的,借助这个特性,攻击者就可以通过让用户误点攻击链接,达到攻击效果。
但是,我们使用 `Token` 的话就不会存在这个问题,在我们登录成功获得 `Token` 之后,一般会选择存放在 `localStorage` (浏览器本地存储)中。然后我们在前端通过某些方式会给每个发到后端的请求加上这个 `Token`,这样就不会出现 CSRF 漏洞的问题。因为,即使有个你点击了非法链接发送了请求到服务端,这个非法请求是不会携带 `Token` 的,所以这个请求将是非法的。 但是,我们使用 `Token` 的话就不会存在这个问题,在我们登录成功获得 `Token` 之后,一般会选择存放在 `localStorage` (浏览器本地存储)中。然后我们在前端通过某些方式会给每个发到后端的请求加上这个 `Token`,这样就不会出现 CSRF 漏洞的问题。因为,即使你点击了非法链接发送了请求到服务端,这个非法请求是不会携带 `Token` 的,所以这个请求将是非法的。
![](https://oss.javaguide.cn/github/javaguide/system-design/security/20210615161108272.png) ![](https://oss.javaguide.cn/github/javaguide/system-design/security/20210615161108272.png)

7
pnpm-lock.yaml generated
View File

@ -1,4 +1,4 @@
lockfileVersion: '6.0' lockfileVersion: '6.1'
settings: settings:
autoInstallPeers: true autoInstallPeers: true
@ -759,6 +759,7 @@ packages:
resolution: {integrity: sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==} resolution: {integrity: sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
libc: [glibc]
requiresBuild: true requiresBuild: true
dev: false dev: false
optional: true optional: true
@ -767,6 +768,7 @@ packages:
resolution: {integrity: sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==} resolution: {integrity: sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
libc: [musl]
requiresBuild: true requiresBuild: true
dev: false dev: false
optional: true optional: true
@ -775,6 +777,7 @@ packages:
resolution: {integrity: sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==} resolution: {integrity: sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==}
cpu: [riscv64] cpu: [riscv64]
os: [linux] os: [linux]
libc: [glibc]
requiresBuild: true requiresBuild: true
dev: false dev: false
optional: true optional: true
@ -783,6 +786,7 @@ packages:
resolution: {integrity: sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==} resolution: {integrity: sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
libc: [glibc]
requiresBuild: true requiresBuild: true
dev: false dev: false
optional: true optional: true
@ -791,6 +795,7 @@ packages:
resolution: {integrity: sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==} resolution: {integrity: sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
libc: [musl]
requiresBuild: true requiresBuild: true
dev: false dev: false
optional: true optional: true