统计计算六|自助法及置换检验(Bootstrap and Permutation Test)

系列文章目录

统计计算一|非线性方程的求解
统计计算二|EM算法(Expectation-Maximization Algorithm,期望最大化算法)
统计计算三|Cases for EM
统计计算四|蒙特卡罗方法(Monte Carlo Method)
统计计算五|MCMC( Markov Chain Monte Carlo)

文章目录

  • 系列文章目录
  • 一、Bootstrap(自助法)
  • 二、基于 Jackknife 法的估计
    • (一)基本思想
    • (二)估计量偏差的 Jackknife 估计
    • (三)估计量标准差的 Jackknife 估计
  • 三、Permutation Test 置换检验


一、Bootstrap(自助法)

(一)基本思想

X 1 , X 2 , . . . , X n X_1, X_2, . . . , X_n X1,X2,...,Xn 为来自总体分布 F ( x ; θ ) F(x; θ) F(x;θ) 的样本,对于感兴趣参数 θ θ θ,通常可采用极大似然估计或者矩估计等估计方法得到 θ θ θ 的估计 θ ^ ( X 1 , X 2 , . . . , X n ) \hat{θ}(X_1, X_2, . . . , X_n) θ^(X1,X2,...,Xn)。但是一般情况下很难推导出 θ ^ ( X 1 , X 2 , . . . , X n ) \hat{θ}(X_1, X_2, . . . , X_n) θ^(X1,X2,...,Xn)的分布,进而得到估计量的均值和方差。

  • 如果 F ( x ; θ ) F(x; θ) F(x;θ) 分布形式已知,可以通过蒙特卡洛方法模拟出与 θ ^ ( X 1 , X 2 , . . . , X n ) \hat{θ}(X_1, X_2, . . . , X_n) θ^(X1,X2,...,Xn)同分布的样本,进而根据样本的信息估计 θ ^ ( X 1 , X 2 , . . . , X n ) \hat{θ}(X_1, X_2, . . . , X_n) θ^(X1,X2,...,Xn)的分布以及分布特征。

蒙特卡洛步骤:

  • 从总体分布 F ( x ; θ ) F(x;\theta) F(x;θ)中独立产生 n n n个数据 X 11 , X 12 , . . . , X 1 n X_{11},X_{12},...,X_{1n} X11,X12,...,X1n,得到的 θ \theta θ的估计,记为 θ 1 ^ = : θ ^ 1 ( X 11 , X 12 , . . , X 1 n ) \hat{\theta_1}=:\hat{\theta}_1(X_{11},X_{12},..,X_{1n}) θ1^=:θ^1(X11,X12,..,X1n)
  • 重复上述步骤 m m m次,得到的估计分别为 θ ^ 1 , θ ^ 2 , . . . , θ ^ m \hat{\theta}_1,\hat{\theta}_2,...,\hat{\theta}_m θ^1,θ^2,...,θ^m
  • 基于样本 θ ^ 1 , θ ^ 2 , . . . , θ ^ m \hat{\theta}_1,\hat{\theta}_2,...,\hat{\theta}_m θ^1,θ^2,...,θ^m推断 θ ^ 1 ( X 11 , X 12 , . . , X 1 n ) \hat{\theta}_1(X_{11},X_{12},..,X_{1n}) θ^1(X11,X12,..,X1n)的分布, E ( θ ^ ) E(\hat{\theta}) E(θ^) V a r ( θ ^ ) Var(\hat{\theta}) Var(θ^)可以分别用该样本的均值和方差估计,即 E ^ ( θ ^ ) = m − 1 ∑ i = 1 m θ ^ i \hat{E}(\hat{\theta})=m^{-1}\sum_{i=1}^m\hat{\theta}_i E^(θ^)=m1i=1mθ^i V a r ^ ( θ ^ ) = m − 1 ∑ i = 1 m ( θ ^ i − E ^ ( θ ^ ) ) 2 \hat{Var}(\hat{\theta})=m^{-1}\sum_{i=1}^m(\hat{\theta}_i-\hat{E}(\hat{\theta}))^2 Var^(θ^)=m1i=1m(θ^iE^(θ^))2
  • 如果 F ( x ; θ ) F(x; θ) F(x;θ) 分布形式未知,唯一的信息只有样本 X 1 , X 2 , . . . , X n X_1, X_2, . . . , X_n X1,X2,...,Xn。不能利用蒙特卡洛方法从总体 F ( x ; θ ) F(x;\theta) F(x;θ)中产生数据,进而不能近似 θ ^ ( X 1 , X 2 , . . . , X n ) \hat{\theta}(X_1, X_2, . . . , X_n) θ^(X1,X2,...,Xn)的分布及其相关特征。Bootstrap方法是利用样本分布 X 1 , X 2 , . . . X n X_1,X_2,...X_n X1,X2,...Xn代替总体分布,从分布 X 1 , X 2 , . . . , X n X_1, X_2, . . . , X_n X1,X2,...,Xn中有放回的产生数据,进而近似 θ ^ ( X 1 , X 2 , . . . , X n ) \hat{\theta}(X_1, X_2, . . . , X_n) θ^(X1,X2,...,Xn)的分布

Bootsrap方法的步骤:

  • 从样本 X 1 , X 2 , . . . , X n X_1, X_2, . . . , X_n X1,X2,...,Xn中有放回的产生数据 X 11 ∗ , X 12 ∗ , . . . , X 1 n ∗ X_{11}^*, X_{12}^*, . . . , X_{1n}^* X11,X12,...,X1n,得到的 θ \theta θ的估计,记为 θ ^ 1 ∗ = : θ ^ 1 ∗ ( X 11 ∗ , X 12 ∗ , . . . , X 1 n ∗ ) \hat{\theta}_1^*=:\hat{\theta}_1^*(X_{11}^*, X_{12}^*, . . . , X_{1n}^*) θ^1=:θ^1(X11,X12,...,X1n)
  • 重复上述步骤m次, 得到的估计分别为 θ ^ 1 ∗ , θ ^ 2 ∗ , . . . , θ ^ m ∗ \hat{\theta}_1^*,\hat{\theta}_2^*,...,\hat{\theta}_m^* θ^1,θ^2,...,θ^m
  • 利用 θ ^ 1 ∗ , θ ^ 2 ∗ , . . . , θ ^ m ∗ \hat{\theta}_1^*,\hat{\theta}_2^*,...,\hat{\theta}_m^* θ^1,θ^2,...,θ^m近似 θ ^ \hat{\theta} θ^的分布及其特征

用 Bootstrap 方法抽取到样本 X 1 ∗ , X 2 ∗ , . . . , X n ∗ X_{1}^*, X_{2}^*, . . . , X_{n}^* X1,X2,...,Xn的经验分布 F n ∗ F^*_n Fn F n F_n Fn 的逼近, F n F_n Fn 是总体分布 F F F 的逼近。这两种逼近可以表示为 F n ∗ → F n → F F^∗_n → F_n → F FnFnF。如果经验分布函数 F n ( x ) F_n(x) Fn(x) 没有靠近总体分布函数 F ( x ) F(x) F(x),则重复抽样下的分布也不会靠近 F ( x ) F(x) F(x)

(二)偏差的自助估计

1、参数 θ \theta θ的估计

估计量 θ ^ \hat{\theta} θ^的偏差: B i a s ( θ ^ ) = E ( θ ^ ) − θ Bias(\hat{\theta})=E(\hat{\theta})-\theta Bias(θ^)=E(θ^)θ;估计量 θ ^ \hat{\theta} θ^偏差的自助估计: B i a s ^ ( θ ^ ) \widehat{Bias}(\hat{\theta}) Bias (θ^)

  • 对于 θ \theta θ的估计 θ ^ \hat{\theta} θ^:基于观察到的样本数据直接得到
  • 对于 E ( θ ^ ) E(\hat{\theta}) E(θ^)的估计 E ^ ( θ ^ ) \hat{E}(\hat{\theta}) E^(θ^):利用自助法获得的 θ ^ 1 ∗ , θ ^ 2 ∗ , . . . , θ ^ m ∗ \hat{\theta}_1^*,\hat{\theta}_2^*,...,\hat{\theta}_m^* θ^1,θ^2,...,θ^m的均值来估计,即 E ^ ( θ ^ ) = m − 1 ∑ i = 1 m θ ^ i ∗ \hat{E}(\hat{\theta})=m^{-1}\sum_{i=1}^m\hat{\theta}_i^* E^(θ^)=m1i=1mθ^i
    B i a s ^ ( θ ^ ) = m − 1 ∑ i = 1 m θ ^ i ∗ − θ ^ \widehat{Bias}(\hat{\theta})=m^{-1}\sum_{i=1}^m\hat{\theta}_i^*-\hat{\theta} Bias (θ^)=m1i=1mθ^iθ^

如果偏差大于0,说明 θ ^ \hat{\theta} θ^平均来看过高估计了 θ \theta θ;偏差小于0则说明 θ ^ \hat{\theta} θ^平均来看过低估计了 θ \theta θ。因此,经过偏差修正的参数 θ \theta θ的估计量为:
θ ~ = θ ^ − B i a s ^ ( θ ^ ) \tilde{\theta}=\hat{\theta}-\widehat{Bias}(\hat{\theta}) θ~=θ^Bias (θ^)

2、参数 σ 2 \sigma^2 σ2的估计

设数据 X 1 , X 2 , . . . , X n X_1,X_2,...,X_n X1,X2,...,Xn来自方差为 σ 2 \sigma^2 σ2的分布,则 σ 2 \sigma^2 σ2的估计为 σ ^ = n − 1 ∑ i = 1 n ( X i − X ˉ ) 2 \hat{\sigma}=n^{-1}\sum_{i=1}^n(X_i-\bar{X})^2 σ^=n1i=1n(XiXˉ)2 σ 2 \sigma^2 σ2的偏差 B i a s ( σ ^ 2 ) = E ( σ ^ 2 ) − σ 2 = − σ 2 / n Bias(\hat{\sigma}^2)=E(\hat{\sigma}^2)-\sigma^2=-\sigma^2/n Bias(σ^2)=E(σ^2)σ2=σ2/n
在这里插入图片描述
此时 σ ^ 2 \hat{\sigma}^2 σ^2偏差的自助估计 B i a s ^ ( σ ^ 2 ) = m − 1 ∑ i = 1 m σ ^ i 2 ∗ − σ ^ 2 \widehat{Bias}(\hat{\sigma}^2)=m^{-1}\sum_{i=1}^m\hat{\sigma}_i^{2*}-\hat{\sigma}^2 Bias (σ^2)=m1i=1mσ^i2σ^2是否为 − σ 2 / n -\sigma^2/n σ2/n的无偏估计?
在这里插入图片描述因此 σ ^ 2 \hat{\sigma}^2 σ^2偏差的自助估计 B i a s ^ ( σ ^ 2 ) = m − 1 ∑ i = 1 m σ ^ i 2 ∗ − σ ^ 2 \widehat{Bias}(\hat{\sigma}^2)=m^{-1}\sum_{i=1}^m\hat{\sigma}_i^{2*}-\hat{\sigma}^2 Bias (σ^2)=m1i=1mσ^i2σ^2不是 − σ 2 / n -\sigma^2/n σ2/n的无偏估计。

(三)估计量标准差的 Bootstrap 估计

估计量 θ ^ \hat{\theta} θ^的标准差 S E ^ ( θ ^ ) \widehat{SE}(\hat{\theta}) SE (θ^)的自助估计就是采用 θ ^ \hat{\theta} θ^分布Bootstrap估计的标准差。
S E ^ ( θ ^ ) = ( 1 m ∑ i = 1 m ( θ ^ i ∗ − θ ^ ˉ ∗ ) 2 ) 1 / 2 \widehat{SE}(\hat{\theta})=\left(\frac{1}{m}\sum_{i=1}^m(\hat{\theta}_i^*-\bar{\hat{\theta}}^*)^2\right)^{1/2} SE (θ^)=(m1i=1m(θ^iθ^ˉ)2)1/2

自助法得到的估计 V a r ^ ( θ ^ ) \widehat{Var}(\hat{\theta}) Var (θ^) V a r ( θ ^ ) Var(\hat{\theta}) Var(θ^)之间的关系是什么?
在这里插入图片描述
因此,自助法得到的估计 V a r ^ ( θ ^ ) \widehat{Var}(\hat{\theta}) Var (θ^)的条件期望为 m − 1 m n σ ^ 2 \frac{m-1}{mn}\hat{\sigma}^2 mnm1σ^2,是方差 V a r ( θ ^ ) = n − 1 σ 2 Var(\hat{\theta})=n^{-1}\sigma^2 Var(θ^)=n1σ2的估计。

二、基于 Jackknife 法的估计

(一)基本思想

Jackknife 估计的基本思想是,对于给定样本 X 1 , X 2 , . . . , X n X_1, X_2, . . . , X_n X1,X2,...,Xn,每次删除其中一个 (或者几个) 样本点,基于剩下的样本采用相同的估计量公式得到 θ θ θ 的估计,经过逐个删除并分别计算估计之后,便可以得到一系列估计值,基于这些估计值进而估计 θ ^ \hat{θ} θ^的分布特征。

Jackknife 方法的步骤:

  • 从观测样本 X 1 , X 2 , . . . , X n X_1, X_2, . . . , X_n X1,X2,...,Xn中去掉第 i i i个数据 X i X_i Xi之后的剩余样本定义为第 i i i个Jackknife样本,记为: X ( − i ) = ( X 1 , . . . , X i − 1 , X i = 1 , . . . , X n ) X_{(-i)}=(X_1,...,X_{i-1},X_{i=1},...,X_n) X(i)=(X1,...,Xi1,Xi=1,...,Xn)
  • 基于第 i i i个Jackknife样本 X ( − i ) , i = 1 , 2 , . . . , n X_{(-i)},i=1,2,...,n X(i),i=1,2,...,n,得到相应的估计 θ ^ ( − i ) = θ ^ ( X ( − i ) ) , i = 1 , . . . , n \hat{\theta}_{(-i)}=\hat{\theta}(X_{(-i)}),i=1,...,n θ^(i)=θ^(X(i)),i=1,...,n

(二)估计量偏差的 Jackknife 估计

基于 θ ( − i ) ^ \hat{\theta_{(-i)}} θ(i)^ θ ^ \hat{\theta} θ^的偏差 B i a s ( θ ^ ) = E ( θ ^ ) − θ Bias(\hat{\theta})=E(\hat{\theta})-\theta Bias(θ^)=E(θ^)θ的Jackknife估计为:
B i a s ^ ( θ ^ ) = ( n − 1 ) ( 1 n ∑ i = 1 n θ ^ ( − i ) − θ ^ ) = n − 1 n ∑ i = 1 n ( θ ^ ( − i ) − θ ^ ) \widehat{Bias}(\hat{\theta})=(n-1)\left(\frac{1}{n}\sum_{i=1}^n\hat{\theta}_{(-i})^-\hat{\theta}\right)=\frac{n-1}{n}\sum_{i=1}^n(\hat{\theta}_{(-i)}-\hat{\theta}) Bias (θ^)=(n1)(n1i=1nθ^(i)θ^)=nn1i=1n(θ^(i)θ^)

设数据 X 1 , X 2 , . . . , X n X_1,X_2,...,X_n X1,X2,...,Xn来自方差为 σ 2 \sigma^2 σ2的分布,则 σ 2 \sigma^2 σ2的估计为 σ ^ = n − 1 ∑ i = 1 n ( X i − X ˉ ) 2 \hat{\sigma}=n^{-1}\sum_{i=1}^n(X_i-\bar{X})^2 σ^=n1i=1n(XiXˉ)2 σ 2 \sigma^2 σ2的偏差 B i a s ( σ ^ 2 ) = E ( σ ^ 2 ) − σ 2 = − σ 2 / n Bias(\hat{\sigma}^2)=E(\hat{\sigma}^2)-\sigma^2=-\sigma^2/n Bias(σ^2)=E(σ^2)σ2=σ2/n。此时,对于每一个Jackknife估计 θ ^ ( − i ) \hat{\theta}_{(-i)} θ^(i),基于样本量n-1的样本 X ( − i ) = ( X 1 , . . . , X i − 1 , X i = 1 , . . . , X n ) X_{(-i)}=(X_1,...,X_{i-1},X_{i=1},...,X_n) X(i)=(X1,...,Xi1,Xi=1,...,Xn)构造,因此:
在这里插入图片描述

(三)估计量标准差的 Jackknife 估计

估计量 θ ^ \hat{\theta} θ^的标准差的Jackknife估计定义为:
S E ^ J a c k ( θ ^ ) = ( n − 1 n ∑ i = 1 n ( θ ^ ( − i ) − θ ^ ˉ ( ⋅ ) ) 2 ) 1 / 2 \widehat{SE}_{Jack}(\hat{\theta})=\left(\frac{n-1}{n}\sum_{i=1}^n(\hat{\theta}_{(-i)}-\bar{\hat{\theta}}_{(·)})^2\right)^{1/2} SE Jack(θ^)=(nn1i=1n(θ^(i)θ^ˉ())2)1/2
在这里插入图片描述

三、Permutation Test 置换检验

置换检验(permutation test)是统计学上一种基于反证法、重抽样原则的非参数性检验。

  • H0 : F = G, 即所有样本都服从同一分布
  • H1 : F ≠ \neq = G, 即样本不服从同一分布

置换检验通过对比样本置换后的检验统计量与置换前的检验统计量来决定是否拒绝零假设。p 值为假设检验中假设零假设为真时观测到的至少与实际观测样本相同的样本的概率。很小的 p 值说明在零假设下观测到的概率很小。

置换检验的步骤:

  • 首先计算两样本(样本容量设为 n A n_A nA n B n_B nB)之间原本的检验统计量。检验统计量可以是两样本间平均数之差 ( X ˉ A − X ˉ B ) (\bar{X}_A − \bar{X}_B) (XˉAXˉB)、方差之差 ( S A 2 − S B 2 ) (S^2_A − S^2_B) (SA2SB2),或 t 值 ( t ) (t) (t)、卡方检验中的卡方值 ( χ 2 ) (χ^2) (χ2) 等。
  • 将两个样本打乱后再重新选出两组容量等于之前两样本的新样本(即两个样本容量同样为 nA 和 nB 的样本),并计算新的检验统计量。
  • 如接受零假设 H0 : F = G,即样本源于同一分布,则随机抽样计算出的新检验统计量应不难大于最初置换前算出的两样本间检验统计量(如为双侧检验,则是其绝对值应不难大于置换前算出的两样本间检验统计量),即这个概率应大于设定的 I 型错误(假阳性)概率 α。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/20012.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flutter开发实战-下拉刷新继续下拉路由进入活动页面实现

flutter开发实战-下拉刷新继续下拉路由进入活动页面实现 很多应用都有首页通过下拉刷新,继续下拉进入新的活动会场进入方式。在Flutter中,也可以通过pull_to_refresh来实现控制刷新页,继续下拉进入新的活动会场页面 一、引入pull_to_refres…

深入解析HTTP方法与路由响应

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、HTTP方法概述 1. GET方法 2. POST方法 二、路由与响应处理 1. 路由的默认响应 2. 处…

SpringBoot 基于jedis实现Codis高可用访问

codis与redis的关系 codis与redis之间关系就是codis是基于多个redis实例做了一层路由层来进行数据的路由,每个redis实例承担一定的数据分片。 codis作为开源产品,可以很直观的展示出codis运维成本低,扩容平滑最核心的优势. 其中&#xff0…

JavaWeb笔记整理+图解——Listener监听器

欢迎大家来到这一篇章——Listener监听器 监听器和过滤器都是JavaWeb服务器三大组件(Servlet、监听器、过滤器)之一,他们对于Web开发起到了不可缺少的作用。 ps:想要补充Java知识的同学们可以移步我已经完结的JavaSE笔记&#x…

宏集JMobile Studio—实现HMI界面高自由度设计

一、简介 物联网HMI的组态软件是数据可视化的重要工具,工程师可以通过图形化界面来配置、监控和管理现场采集的数据。目前,市面上大多数的组态软件里的可视化控件库都由设计师预先部署,用户只能调用而不能完全自定义控件,导致可视…

点餐小程序服务器怎么选

点餐小程序服务器怎么选?随着科技的不断发展,点餐小程序已成为餐饮行业的新宠。它不仅提升了顾客的点餐体验,也为商家带来了更多的便利。然而,面对市场上琳琅满目的服务器选择,如何为您的点餐小程序挑选一台合适的服务…

20240531在飞凌的OK3588-C开发板上跑原厂的Buildroot测试ETH0接口【仅供参考】

20240531在飞凌的OK3588-C开发板上跑原厂的Buildroot测试ETH0接口 2024/5/31 20:28 rootrk3588-buildroot:/# ifconfig eth0 up rootrk3588-buildroot:/# ifconfig eth1 up rootrk3588-buildroot:/# ifconfig rootrk3588-buildroot:/# rootrk3588-buildroot:/# ifconfig eth1…

化妆品企业如何借助CRM客户管理应用,实现业绩飞跃?

在当今数字化时代,化妆品企业面临着前所未有的挑战与机遇。随着消费者需求的日益多样化和市场竞争的加剧,如何高效地管理客户信息、优化客户服务流程、提升客户满意度,成为了化妆品企业亟需解决的问题。而在这个背景下,低代码平台…

C#中的实体属性详解与示例

文章目录 实体属性的定义实体属性的访问实体属性的示例总结 在C#中,实体属性是面向对象编程的重要组成部分。实体属性允许我们定义对象的特征和行为,并提供了一种方式来访问和管理这些特征。通过实体属性,我们可以封装对象的状态,…

Django信号详解

Django信号(Signals)是一种允许应用组件在特定事件发生时进行通信的机制,而不必直接引用彼此。它遵循观察者模式,允许发送者(如模型实例的保存或删除)发送信号,而接收者(信号处理器&…

【三维模型采集设备】轮廓扫描仪介绍

文章目录 一、声明二、轮廓扫描仪的分类1.1 按工作原理分类1.2 按应用场景分类1.3 按扫描精度分类1.4 按扫描方式分类1.5 按测量方式来分类 三、问答2.1 激光轮廓扫描仪采用红光、绿光和蓝光各有什么优缺点? 一、声明 本帖信息来自对网上信息的汇总,如有…

WiFi串口服务器与工业路由器:局域网应用的协同之力

在工业物联网(IIoT)迅猛发展的当下,局域网(LAN)作为连接工业设备与数据中心的桥梁,其重要性日益凸显。WiFi串口服务器与工业路由器作为局域网中的关键组件,以其独特的性能和功能,为传…

64位和32位对C++ 对long类型的使用造成程序崩溃、内存泄漏问题。

系列文章目录 1、理解32位和64位下long类型和int类型不同 2、理解release和debug版本编译的可执行程序的区别 3、谨慎在64位下对long类型与int类型去赋值和相互转换 文章目录 系列文章目录前言一、int、long类型二、使用步骤1.示例代码 前言 编译环境:qt -c、linu…

cURL error 60: SSL certificate problem: unable to get local issuer certifica

本地小程序把接口换到本地的服务器接口,然后就报错了: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) 经查询查到:此问题的出现是由于没有配…

OSPF重发布

OSPF A-->B [r2]ospf 1 [r2-ospf-1]import-route rip 默认进入路由为类型 2,种子度量为1; 重发布进入的LSA为5类/7类,优先级为150; 类型1:显示总度量种子度量沿途累加 类型2:仅显示种子度量,但选路时比较的是总度量种子度量沿…

Nginx企业级负载均衡:技术详解系列(14)—— 账户认证功能

你好,我是赵兴晨,97年文科程序员。 你有没有听说过Nginx的账户认证功能?这可不只是一个技术问题,它关系到我们上网时的安全和便利。就像家里需要一把钥匙才能进们一样,Nginx的账户认证功能就是确保有只有授权的人才能…

Go基础编程 - 03 - init函数、main函数、_(下划线)

目录 1. init 函数2. main 函数3. init 函数与 main 函数异同4. _ (下划线)示例 1. init 函数 Go语言中,init 函数用于包(package)的初始化。具有以下特征: 1. init 函数用于程序执行前包的初始化,如初始化变量等。2…

Android Studio启动第一个项目的报错——笔记

零基础第一次使用Android Studio开发遇到的问题 1 新建项目下载gradle慢的问题 直接叉掉打开gradle官网手动下载自己想要的版本 gradle官网 然后在刚刚建好的项目里找到gradle-wrapper.properties,修改distributionUrl,并把自己从官网下载的包放到和gr…

Scroll 上的明星项目Pencils Protocol ,缘何被严重低估?

近日,完成品牌升级的 Pencils Prtocol 结束了 Season 2 并无缝开启了 Season 3,在 Season 3 中,用户可以通过质押系列资产包括 $ETH、$USDT、$USDC、$STONE 、$wrsETH、$pufETH 等来获得可观收益,并获得包括 Scroll Marks、 Penci…

IO进程线程(二)文件IO(系统调用)

一、文件IO (一)概念 文件IO就是系统调用,用户空间进入内核空间的过程就是系统调用。 系统调用没有缓冲机制,效率较低,可移植性也相对较差,实时性高。 文件描述符是使用open函数打开文件时的返回值&…