首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏裸机思维

    漫谈C变量——夏虫不可语冰

    在C语言中,按照生命周期来分,变量只有两类:静态变量和动态变量。 其中,静态变量是指,在编译时刻(Compiling-time)变量的地址和大小都已经确定下来的变量。 动态变量是指,直到运行时刻(Run-time),变量的地址(有时候包括确切大小)才能在某个时刻暂时性的确定下来的变量。 基于这一原因,后面将不对全局变量和静态局部变量之流做区分,统一称为静态变量。 > 静态变量放在哪里呢? > 动态变量 C语言原生态支持的动态变量就只有局部变量了(Local Variable)。 理论上说,局部变量只在程序进入变量所在的花括号范围内时才从栈(stack)中进行分配,一旦程序出了花括号,它的声明就结束了——夏虫不可语冰说的就是局部变量那可怜的一生…… 看着新近分配的局部变量,静态局部变量深深的吸了一口烟

    3K20发布于 2020-07-28
  • 来自专栏AI科技大本营的专栏

    AlphaGo棋风已,强化学习功不可

    AlphaGo棋风已 聂卫平老师有说,AlphaGo是特意只输半颗子。这一说法我们尚不能证实,但AlphaGo的白棋在后续变化上,相对于人类棋手对局,肯定是下得比较保守的。 强化学习功不可没 从新版AlphaGo的表现来看,它更多是在自我学习的成长上,也就是通过强化学习(Reinforcement Learning)和自我对局演化成不同的版本。

    78260发布于 2018-04-27
  • 来自专栏猿说编程

    6.python变量

    何为python变量,即数据类型。python变量一共六种类型:整数/浮点数/字符串/BOOL/列表/元组/字典,今天先讲解前四种,后三种留到后面的文章在讲解。 a = 1 # 定义一个变量a ,并将 整数1 赋值给a b = 2 # 定义一个变量b ,并将 整数1 赋值给b # 等价于上面两行代码的合并,最终效果是一样 c , d = 1,2 # 定义两个变量c,d ,并将 整数1 赋值给c,整数2赋值给d # 打印变量的值 print("写法一: a = ",a) print("写法二: b = %d" a = 1.0 # 定义一个变量a ,并将 浮点数1.0 赋值给a b = 2.2 # 定义一个变量b ,并将 浮点数1.0 赋值给b # 等价于上面两行代码的合并 ,最终效果是一样 c , d = 1.5,2.3 # 定义两个变量c,d ,并将 浮点数1.5 赋值给c,浮点数2.3赋值给d # 打印变量的值 print("写法一: a = ",a) print

    92411发布于 2020-01-16
  • 来自专栏猿说编程

    6.python变量

    何为python变量,即数据类型。python变量一共六种类型:整数/浮点数/字符串/BOOL/列表/元组/字典,今天先讲解前四种,后三种留到后面的文章在讲解。 a = 1           # 定义一个变量a ,并将 整数1 赋值给a b = 2           # 定义一个变量b ,并将 整数1 赋值给b   # 等价于上面两行代码的合并,最终效果是一样 c , d = 1,2     # 定义两个变量c,d ,并将 整数1 赋值给c,整数2赋值给d   # 打印变量的值 print("写法一: a = ",a) print("写法二: b = %d" a = 1.0           # 定义一个变量a ,并将 浮点数1.0 赋值给a b = 2.2           # 定义一个变量b ,并将 浮点数1.0 赋值给b   # 等价于上面两行代码的合并 ,最终效果是一样 c , d = 1.5,2.3     # 定义两个变量c,d ,并将 浮点数1.5 赋值给c,浮点数2.3赋值给d   # 打印变量的值 print("写法一: a = ",a) print

    53420发布于 2020-03-12
  • 如何在 Python 中使变量不可继承

    因此,我们可以使用双下划线前缀来使变量不可继承。class A: SIZE = 5 def __init__(self): if self.__class__ ! metaclass__ = ClassWithSize SIZE = 5 def getsize(self): return self.SIZEclass B(A): SIZE = 6class 我们可以使用属性描述符来使变量不可继承。

    43110编辑于 2024-05-13
  • 来自专栏全栈程序员必看

    实现JQuery EasyUI右键菜单不可用效果

    我平时经常使用VS作为开发工具,使用VS的朋友也会注意到,当只有一个页面打开时,右击“Close All But This”是不可用的,我感觉这样更加的人性化。于是,我就试着实现这一功能。 首先,实现“除此之外全部关闭”不可用。 当只打开一个Tab选项卡时,右键菜单里“除此之外全部关闭”就应该不可用,这样可以提示用户没有除这一个选项卡没有其他的选项卡了。 程序实现很简单了,只要获得打开Tab选项卡的个数,如果个数为1,那么就把“除此之外全部关闭”不可用就行了。 第二,实现“当前页右侧全部关闭”不可用。 当一个Tab选项卡的右侧没有选项卡的时候,这个Tab选项卡就应该不可用。 程序实现也不难,只要获得最后一个Tab选项卡的标题和当前右键菜单所在的Tab选项卡的标题进行比较,如果一致,就把“当前页右侧全部关闭”不可用。

    1.6K40编辑于 2022-07-05
  • 来自专栏深入浅出区块链技术

    Solidity 中 immutable (不可变量)与constant(常量)

    constant 常量 constant 修饰的变量需要在编译期确定值, 链上不会为这个变量分配存储空间, 它会在编译时用具体的值替代, 因此, constant常量是不支持使用运行时状态赋值的(例如: 0.7.0; contract C { uint constant X = 32**22 + 8; string constant TEXT = "abc"; } immutable 不可变量 不可变量同样不会占用状态变量存储空间, 在部署时,变量的值会被追加的运行时字节码中, 因此它比使用状态变量便宜的多, 同样带来了更多的安全性(确保了这个值无法在修改). 这个特性在很多时候非常有用, 最常见的如 ERC20[2]代币用来指示小数位置的decimals 变量, 它应该是一个不能修改的变量, 很多时候我们需要在创建合约的时候指定它的值, 这时 immutable learnblockchain.cn/people/15 [4] 知乎: https://www.zhihu.com/people/xiong-li-bing [5] 微博: http://weibo.com/xionglb [6]

    1.5K30发布于 2020-06-01
  • 来自专栏Golang开发

    ES6——变量(let)

    ```javascript // var 的情况 console.log(foo); // 输出undefined var foo = 2; 为了纠正这种反人类的现象,ES6let所声明的变量一定要在声明语句之后才可以使用 // let 的情况 console.log(bar); // 报错ReferenceError let bar = 2; 不允许重复声明 在ES5中 使用var 可以对变量进行多次声明,在ES6中let ES6 的块级作用域 let实际上为 JavaScript 新增了块级作用域。let所声明的变量,只在let命令所在的代码块内有效。 var a = []; for (var i = 0; i < 10; i++) { a[i] = function () { console.log(i); }; } a[6](); 如果使用let,声明的变量仅在块级作用域内有效,最后输出的是 6

    50820发布于 2019-07-01
  • 来自专栏每周聚焦

    BigDecimal不可触碰的6个坑

    6避免使用BigDecimal的equals方法 BigDecimal提供了equals方法来比较两个对象是否相等。

    2.5K10编辑于 2023-03-10
  • 来自专栏猿说编程

    6.python 局部变量和全局变量

    在python开发中,变量也是有生命周期的,一旦周期结束,程序会自动清理暂用的空间,释放内存,变量分为两者,一种是局部变量,一种是全局变量,两者具体有什么区别呢…… ? 一.局部变量 一般而言在函数内部或者类中声明的变量默认都是局部变量。一旦函数结束,变量的生命周期也会结束,占用的空间会被自动释放。 def func1():     # 在函数内部定义的变量默认都是局部变量     a = 1     print(a)     # 函数结束,局部变量a的生命周期结束   # 由于a是局部变量,并且a 二.全局变量 全局变量和局部变量相反,在函数外部或者类外部声明的变量默认为全局变量。全局变量的生命周期直到程序结束才会结束,比局部变量生命周期更长。 (a) 输出结果: 2 2 三.局部变量和全局变量的区别 1.全局变量的生命周期是直到程序结束,而局部变量生命周期是函数结束; 2.如果需要在函数内部修改全局变量的值,需要在函数内部为该全局变量前面加上

    1.7K20发布于 2020-03-12
  • 来自专栏Vincent-yuan

    多线程的共享变量的内存不可见性

    即共享变量)的过程: 线程的工作内存会去读取主内存的成员变量并保存副本 线程在工作内存中修改副本 将修改后的副本的值推送给主空间并改写主空间该成员变量的值 主空间成员变量修改后的值将不会主动推送给其他线程 , 这就造成了线程的工作内存的共享变量的不同步 问题: 各个线程的工作内存不可见   即 A线程先读取共享变量a, B线程修改了共享变量a后为a`,推送给主内存并改写, 主内存不会推送给A线程,A和B的变量会不同步 工作内存中会主动去拉取主内存的共享变量并创建其副本 工作内存中的副本修改后会推送给主内存改写共享变量 volatile 会使得主内存修改后的共享变量推送其他线程 内存不可见的本质 : 线程之间有互相独立的缓存区, 当多个线程对共享数据进行操作时, 其操作彼此不可见 可以直接理解: 使用volatile之后该共享该变量线程不在工作内存缓存其副本, 所有线程对该变量的操作全是在主内存中完成 即不在存在操作的不可见,所有线程的操作的变量是位于主内存的变量 https://www.cnblogs.com/huangleshu/p/10026222.html

    90420发布于 2021-07-16
  • 来自专栏韩曙亮的移动开发专栏

    【JavaScript】JavaScript 变量 ① ( JavaScript 变量概念 | 变量声明 | 变量类型 | 变量初始化 | ES6 简介 )

    一、JavaScript 变量 1、变量概念 JavaScript 变量 是用于 存储数据 的 容器 , 通过 变量名称 , 可以 获取 / 修改 变量 中的数据 ; 变量 的 本质 是 存放数据 的 的基础上进行了优化 ; let age = 18; const 关键字 : const 关键字 用于 声明一个只读的常量 , 常量的值就不能改变 ; const gender = 0; 3、ES6 简介 使用 var 关键字 声明变量 是传统方式 , 任何时候都可以使用 ; let 和 const 声明变量的关键字 是在 ES6 中引入的 , ES6 全称 ECMAScript 2015 , 是JavaScript 语言的下一代标准 , 2015 年 6 月 正式发布 ; 其目的是 使 JavaScript 语言能够用于编写更复杂的大型应用程序 , 进而成为企业级开发语言 ; ES6 中引入的新特性 : 类 Class : 表示和操作有序的元素集合 ; Function : 可调用对象 , 执行特定任务返回结果 ; Date : 日期和时间的对象 ; RegExp : 正则表达式对象 ; Map 和 Set : ES6

    1.7K10编辑于 2024-03-12
  • 来自专栏BAT的乌托邦

    【小家java】final修饰的变量真的不可变吗?

    每篇一句 穷不练酒,富不占赌 1、概述 这可能是大家的一个共识:如果我们希望这个变量不可变,我们可以用final进行修饰。 但本篇将带你深入了解不变的含义,我相信可以让你更深的了解final的原理,也能记得更牢靠 2、栗子 被final修饰过的变量,只是说栈存储的地址不能再改变,但是却没有说地址指向的内容不能改变。 System.out.println(str2); //efg System.out.println(field.get(this)); //gfe 通过反射拿到的值是对的 我们通过反射拿到的值是正确的,而直接输出变量的值却是不对的

    1.2K20发布于 2019-09-03
  • 来自专栏大飞的部落阁

    HttpRunner-6-环境变量

    为什么要用环境变量 在自动化测试中,有时需要借助环境变量实现某些特定的目的,常见的场景包括: 切换测试环境 切换测试配置 存储敏感数据(从信息安全的角度出发) 设置环境变量 Linux 中 使用 export 方便演示,我们删除.env 中的变量,直接使用系统已存在的变量 demo_api.yml name: demo api variables: var1: value1 var2: value2 .env 和系统变量同时存在 .env 测试报告: 结论:当.env 和系统环境变量同时存在的时候,.env 的优先级大于系统环境变量。 小结 环境变量通常作为每个环境内特定不变的内容而存在,从这个点出发,我们可以将我们在项目中需要用的这种属性的变量设置为环境变量,从而在实际测试中直接调用。 函数变量&过程变量是指在某个方法中需要用到的可能会变化的入参和方法执行过程中产生的中间变量,这种类型的变量我们一般会保存在内存中或者配置文件中,当工程运行结束后,这些变量就没有意义了。

    32110编辑于 2022-06-17
  • 来自专栏javascript趣味编程

    6 不可压缩牛顿流体流动

    %parametersthat can be modified 4. nx=40;%number of points 5. ny=40; 6. xmin=0;xmax=1; %domain dimentions

    90900发布于 2018-08-08
  • 来自专栏京程一灯

    不可变和ES6中的const

    正文 ES6中的const创造的是一种不可变得binding(绑定),这不代表被const定义的变量是一个constant(常量)或是immutable(不可变的)。一个const变量是可以改变的。 ,对于const变量来讲唯一不可变的是binding,即const分配给变量名foo一个值:{},并且保证这种分配操作不会再次发生(译者:但他里面的值{}怎么不保证)。 const做到的是保证变量分配上的不可变,而非值上的不可变(译者:尽管对于基本数据类型的变量来讲这俩好像是一回事)。 那么,如何让一个变量内部的值不可变? 所以我认为,在ES6代码中使用let还是const基于以下原则是合理的: 1、没有特殊情况都用const 2、只有需要rebinding的时候(译者:如基本数据类型变量的改变)才使用let 3、不管你怎么用

    65730发布于 2019-03-28
  • 来自专栏用AI私教速通Rust

    使用默认不可变的Rust变量会踩什么坑

    讲动人的故事,写懂人的代码 Rust的变量真的是名不副实。名字中明明有个“”字,却默认不可变。还美其名曰“不可变量”。 于是不少有其他语言使用背景的初学者,经常踩误为不可变量赋值的坑。3.1.1 在循环中误为不可变量赋值在循环中求和,是常见的计算方法。 第3行声明了一个不可变量sum并初始化为0,也就是将0绑定到不可变量sum上。这里是"误用不可变量"问题的开始。第4-7行使用for循环遍历1到3的范围。第4行是Rust中的一个for循环语句。 let mut y = 5; // 可变绑定y = 6; // 允许用赋值语句修改Rust在绑定时可以进行类型推断,但也允许显式指定类型。如下所示。 4 } 5 6 fn main() { 8 let point = Point { x: 0, y: 0 };10 11 // point.x = 5; // 取消注释这行以查看编译错误

    88673编辑于 2024-10-02
  • 来自专栏飞鸟的专栏

    ES6变量的解构赋值

    ES6(ECMAScript 2015)引入了解构赋值语法,它允许我们从数组或对象中提取值,并将其赋给变量。解构赋值可以让我们更方便地处理复杂的数据结构,简化代码,并提高可读性。 数组解构赋值:使用数组解构赋值,我们可以根据数组中元素的位置,将值分配给对应的变量。 ., varN 是要声明的变量。array 是要解构的数组。 每个变量将按照数组中元素的顺序进行赋值。对象解构赋值:使用对象解构赋值,我们可以根据对象中属性的名称,将属性值分配给对应的变量。 我们使用嵌套结构来访问嵌套的属性,并将其赋给变量

    89440编辑于 2023-05-22
  • 来自专栏风骚语言Rust

    Rust中不可变量与const有何区别?

    不可变量可以防止意外修改,从而避免数据竞争和内存错误。例如,如果一个变量不可变的,则无法在多个线程中同时修改它,从而避免数据竞争。不可变量可以使代码更加简洁易读。 例如,如果一个变量不可变的,则可以明确地表明该变量的值在代码块内不会改变,从而使代码的逻辑更加清晰。不可变量可以帮助编译器进行优化。 例如,如果一个变量不可变的,则编译器可以知道该变量的值在代码块内不会改变,从而可以进行一些优化,例如消除不必要的计算。不可变量是函数式编程的重要概念。 函数式编程鼓励使用不可变量和纯函数,从而使代码更加易于理解和测试。Rust中不可变量与const有何区别?const MAX_SIZE: usize = 100;const 关键字用于定义常量。 常量与不可变量类似,但常量在编译期就确定了值,不能在运行时改变。不可变量直到运行期来能确定下来。常量具有以下优点:性能: 常量可以帮助编译器进行优化。可读性: 常量可以使代码更加易读。

    55300编辑于 2024-02-16
  • 来自专栏向治洪

    ECMAScript 6变量的解构赋值

    1,数组的解构赋值 基本用法 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。 以前,为变量赋值,只能直接指定值。 var a = 1; var b = 2; var c = 3; ES6允许写成下面这样。 / true [x, y = 'b'] = ['a']; // x='a', y='b' [x, y = 'b'] = ['a', undefined]; // x='a', y='b' 注意,ES6内部使用严格相等运算符 ES6的规则是,只要有可能导致解构的歧义,就不得使用圆括号。 但是,这条规则实际上不那么容易辨别,处理起来相当麻烦。因此,建议只要有可能,就不要在模式中放置圆括号。 (6)遍历Map结构 任何部署了Iterator接口的对象,都可以用for...of循环遍历。Map结构原生支持Iterator接口,配合变量的解构赋值,获取键名和键值就非常方便。

    3.6K70发布于 2018-02-05
领券