问题标签 [non-volatile]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 这种行为是 JIT 的原因吗?
受这个问题的启发,我编写了测试:
该程序在常见情况下打印:
首先:我解释这种行为是存在 JIT 编译器。“预热”后每个线程的 JIT 编译器缓存值非volatile
字段。对的?
第二:如果第一个正确或不正确,我该如何验证这一点?
PS - 我知道PrintAssebly -option。
更新:环境:Windows 7 64bit,JDK 1.7.0_40-b43(热点)。
memory - 断电时如何防止“部分写入”数据损坏?
在嵌入式环境中(使用 MSP430),我看到一些数据损坏是由部分写入非易失性存储器引起的。这似乎是由写入期间的功率损耗引起的(写入 FRAM 或信息段)。
我正在使用 CRC 验证存储在这些位置的数据。
我的问题是,防止这种“部分写入”损坏的正确方法是什么?目前,我已修改我的代码以写入两个单独的 FRAM 位置。因此,如果一个写入中断导致无效 CRC,则另一个位置应保持有效。这是一种常见的做法吗?我是否需要为任何非易失性存储器实现这种双重写入行为?
java - 变量的 volatile 写入是否可以避免乱序写入?
易失性写入是否确保在一个线程中发生的任何写入(非易失性/易失性写入)对其他线程都是可见的?
以下给定代码是否总是90,80
作为输出产生?
我关心的是方法 initVariables()。JVM是否可以自由地以下列方式重新排序代码块?:
因此,我们得到阅读器线程的输出为: 0,0
或者,它们可以按以下方式重新排序:
因此,我们得到阅读器线程的输出:90,0
multithreading - 什么时候不使用volatile?
是否有过我们不会对线程之间共享的对象的类成员使用 volatile 的情况?我的理解是 volatile 关键字确保对象值不被线程缓存,而是始终从内存中读取,但不将其标记为 volatile 并不意味着它将始终被线程缓存。所以我的问题是,我们是否可以通过不将此类标记为 volatile 来保证任何事情,或者代码是否会对随机行为开放?
编辑:我知道对所有事情都使用 volatile 并不能保证我的逻辑的正确性。我的问题更多是理论上的,是我理解 Java 内存模型的尝试。
excel - INDIRECT 的非 VBA 替代品
我正在寻找一种非 VBA 替代方法来将以下易失性公式(由于INDIRECT()
正在使用)更改为非易失性公式:
...其中上面的单元格引用D1
包含一个公式,该公式可以计算出包含电子表格中数据的最后一行的行号(下面的示例列表中的 6):
有什么办法可以用INDIRECT
其他一些非易失性函数替换?
memory - 如何从板子本身的非易失性存储器启动 DE1-SoC?
我有一块 DE1-SoC 板,想尝试一下。(板子说明: http ://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=205&No=836&PartNo=1 )
我的愿望是合并非易失性存储。
首先,实施以下练习会让我很高兴:
到目前为止,我已经实现了使用连接到板上的额外按钮来更改 HEX LED 值的“能力”。但是,如果板子关闭,整个“能力”就没有了。然后我需要将电路板重新连接到我的 PC 并将二进制代码重新下载到 FPGA。除此之外,存储在 LEDS 中的值也将重置为默认值。我想避免将我的 FPGA 重新连接到计算机。
如何开始工作?
查看内存的电路板文档:
这是否意味着 DE1-SoC 没有内置非易失性存储?如果有,如何访问它?
我还将电路板的所有引脚分配放在一个文件“de1soc_pin_assignments.qsf”中
我可以将外部 SD 卡连接到“Micro SD 卡插槽”并将其用作闪存吗?是否可以将二进制代码从 SD 卡“引导”到 FPGA(以及整数到 LEDS)?如果是,我应该使用哪个引脚?
非常感谢您提前提供的帮助
linux - 当进程崩溃时,操作系统是否会刷新 CPU 缓存?
当操作系统(假设 Linux)通过 GPF 或 SIGKILL 或类似的方式突然终止进程时,操作系统是否会将修改后的 CPU 缓存行刷新到主内存?是否有不同的行为取决于 CPU 或操作系统?
我正在评估非易失性内存功能,并且想知道应用程序在崩溃时将什么状态写入内存。具体来说是否缺少当前修改的 CPU 缓存行。我还没有找到关于这个的官方声明。
谢谢你的帮助!
linux - 如果在小区域上发出请求,则减少 NVME SSD 上的随机读取 IOP
(TL;DR) 在 NVME SSD(Intel p3600 和 Avant)上,如果我在磁盘的一小部分而不是整个磁盘上发出随机读取,我会看到 IOPS 下降。
在一遍又一遍地读取相同的偏移量时,对于 4k 块大小,IOPS 约为 36-40K。随着随机读取区域的扩大,IOPS 逐渐增加。该程序(见下文)在 Linux 上使用异步 IO 来提交读取请求。
操作系统:Linux 4.2.0-35-generic
固态硬盘:英特尔 P3600 NVME 闪存
什么可能导致这个问题?
程序可以运行如下
并验证您是否还看到上面看到的 IOPS 增加模式
c++ - 指向非易失性数据的易失性指针
假设我有以下声明:
我相信这定义了一个可变指针“正常”变量。
对我来说,这可能意味着两件事之一:
第一个猜测
指针可以更改,但数字不会更改,恕不另行通知。这意味着其他一些线程(编译器不知道)可以更改指针,但如果旧指针指向“12”,那么新指针(指针的新值,因为线程会更改它) 将指向另一个“12”。
对我来说,这似乎毫无用处,我认为这不是真正的操作。
第二个猜测
指针可以改变,因此如果指针改变,编译器必须在使用它之前重新加载指针中的值。但是如果它验证指针没有改变(通过添加检查),它可以假设它指向的值也保持不变。
所以我的问题是:
声明一个指向非易失性数据的易失性指针实际上有什么作用?
c# - 断电时保留变量值的最佳方法是什么?
有没有办法将值初始化为特定值以外的内存地址?我有一个在启动时打开的 winform,我希望它可以保存用户以前的条目。我的(蹩脚的)想法是嵌入一个文本文件并将该文件中的值读取到相关变量中?有没有更专业/更清洁的方式来做我想做的事?
为了清楚起见,假设我有一个变量:string pet = "dog"
. 稍后在程序中用户会将这个值更改为"fish"
. 现在我想将该值存储在某处,并在发生断电事件时保留它,以便在程序重新启动时,该变量pet
将被初始化为存储的内存值,"fish"
.