6 Matching Annotations
  1. Last 7 days
    1. 简而言之就是数组实现了 IntoIterator 特征,Rust 通过 for 语法糖,自动把实现了该特征的数组类型转换为迭代器(你也可以为自己的集合类型实现此特征)

      rust中数组不是迭代器,是因为是些了IntoIterator特征,rust 通过for 语法糖,自动把实现该特征的数组类型转换成了迭代器。

  2. Jun 2025
    1. const实际上并没有定义一个变量,而是一个常量,其值不能再被改变。相对应的,let定义了一个普通变量。

      const 定义过的值是一个常量,不能被改变。

    2. 浏览器还不支持JavaScript的所有最新功能。由于这个事实,很多在浏览器中运行的代码都是从较新版本的JavaScript转写成较旧的、更兼容的版本。 如今,最流行的方式是通过使用Babel进行转码。在用create-react-app创建的React应用中,转译是自动配置的。

      通过babel 把新的特性,改写成老的语法,兼容老的版本。

  3. Sep 2024
    1. 栈的分配速度肯定比堆上快,但是读取速度往往取决于你的数据能不能放入寄存器或 CPU 高速缓存。

      栈的分配速度更快,但是读取速度取决域你的数据能不能放入寄存器或者CPU 高速缓存。

  4. Jun 2023
  5. May 2023
    1. 这里先说一下加锁的机制,其是如何实现线程保护的。这个实现的大致过程为:首先在需要同步的代码块前面加上lock.acquire()语句,表示需要先成功获取该锁,才能继续执行下面的代码,然后在需要同步的代码块后面加上lock.release()语句,表示释放该锁。所以,如果当一个线程或进程获取该锁,而且该锁没有被释放的话,那么其他的线程或进程是无法成功获取该锁的,从而也就没法执行下面的同步代码块,从而起到保护作用,直至释放该锁,其他的线程或进程才可以成功获取该锁,然后继续执行下面的代码块。通过上述,一个明显的基本前提是,不同线程或进程面对的锁必须是同一把锁,即同步代码块前后的lock对象必须是同一个,不然如果每个线程或进程有自己不同的锁,那么这个锁也就自然起不到保护作用。
      1. 通过锁来控制同步代码的是否可以执行