我过去常常检查是否var定义了全局:
if (window['myvar']==null) ...
Run Code Online (Sandbox Code Playgroud)
要么
if (window.myvar==null) ...
Run Code Online (Sandbox Code Playgroud)
它适用于 var myvar
现在我正在尝试切换到let,这不再起作用了.
var myvar='a';
console.log(window.myvar); // gives me a
let mylet='b';
console.log(window.mylet); // gives me undefined
Run Code Online (Sandbox Code Playgroud)
问题:一个全球性的let,没有任何的地方,如果有什么东西被像我可以定义我可以看看var从window对象?
更普遍的:
是var myvar='a'相当于window.myvar='a'?
我听到人们说在全球范围内,let并且var/表现相同,但这不是我所看到的.
我正在寻找一些实用程序类/方法来获取一个大文件String并返回一个InputStream.
如果String很小,我可以这样做:
InputStream is = new ByteArrayInputStream(str.getBytes(<charset>));
Run Code Online (Sandbox Code Playgroud)
但是当String它很大(1MB、10MB 或更多)时,会在现场分配一个字节数组,它是我的 String 的 1 到 2 倍(或更多?)。(并且由于在所有编码完成之前您不知道要分配多少字节,我认为在分配最终字节数组之前必须分配其他数组/缓冲区)。
我有性能需求,想优化这个操作。
理想情况下,我认为,我正在寻找的类/方法将在使用 InputStream 时一次一小块地对字符进行动态编码,因此不会出现内存分配的大增。
查看apache commons的源代码IOUtils.toInputStream(..),我看到它也一口气将String转换为大字节数组。
并且StringBufferInputStream已弃用,并且不能正确完成工作。
任何地方都有这样的 util 类/方法吗?或者我可以只写几行代码来做到这一点?
对此的功能需求是,在其他地方,我正在使用一个 util 方法,该方法InputStream从 this 中取出并流出字节InputStream。
我似乎没有其他人在寻找这样的东西。我在某处弄错了什么吗?
我已经开始为此编写一个自定义类,但如果有更好/正确/正确的解决方案/更正我的需要,我会停止。
我有一个变量,每秒读取和更新数千次.它需要定期重置.但"一半"的时间,该值已经是重置值.在重置(写入操作)之前首先检查值(看它是否需要重置)是一个好主意,或者我应该重置它而不管它?主要目标是优化代码以提高性能.
为了显示:
Random r = new Random();
int val = Integer.MAX_VALUE;
for (int i=0; i<100000000; i++) {
if (i % 2 == 0)
val = Integer.MAX_VALUE;
else
val = r.nextInt();
if (val != Integer.MAX_VALUE) //skip check?
val = Integer.MAX_VALUE;
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用上面的程序来测试2个场景(通过取消/评论第2个"if"行),但任何差异都会被运行持续时间的自然差异所掩盖.
谢谢.
我在一个编码环境中,我只能访问一些最基本的c函数.#include'ing其他lib是不可行的.
在这种环境中,我可以调用rand(),它在我的环境中给出了一个介于0到32767之间的随机数(我认为).下面的代码是正确的逻辑,以获得像/ rand()一样均匀分布的更大的随机数吗?
rnum = rand() * (32767 + 1) + rand();
java ×2
c ×1
inputstream ×1
javascript ×1
let ×1
performance ×1
random ×1
string ×1
var ×1
variables ×1