小编Fai*_* Ng的帖子

与全局'var'不同,javascript'let'全局变量不是'window'的属性

我过去常常检查是否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,没有任何的地方,如果有什么东西被像我可以定义我可以看看varwindow对象?

更普遍的:
var myvar='a'相当于window.myvar='a'
我听到人们说在全球范围内,let并且var/表现相同,但这不是我所看到的.

javascript var let

10
推荐指数
1
解决办法
7570
查看次数

任何使用大字符串并返回 InputStream 的实用程序类/方法?

我正在寻找一些实用程序类/方法来获取一个大文件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

我似乎没有其他人在寻找这样的东西。我在某处弄错了什么吗?

我已经开始为此编写一个自定义类,但如果有更好/正确/正确的解决方案/更正我的需要,我会停止。

java string inputstream

6
推荐指数
1
解决办法
941
查看次数

在重置之前检查重置值的值 - 性能影响?

我有一个变量,每秒读取和更新数千次.它需要定期重置.但"一半"的时间,该值已经是重置值.在重置(写入操作)之前首先检查值(看它是否需要重置)是一个好主意,或者我应该重置它而不管它?主要目标是优化代码以提高性能.

为了显示:

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"行),但任何差异都会被运行持续时间的自然差异所掩盖.

谢谢.

java variables performance

4
推荐指数
1
解决办法
72
查看次数

如何从c函数rand()中获取更大的随机数

我在一个编码环境中,我只能访问一些最基本的c函数.#include'ing其他lib是不可行的.

在这种环境中,我可以调用rand(),它在我的环境中给出了一个介于0到32767之间的随机数(我认为).下面的代码是正确的逻辑,以获得像/ rand()一样均匀分布的更大的随机数吗?

rnum = rand() * (32767 + 1) + rand();

c random

4
推荐指数
1
解决办法
2975
查看次数

标签 统计

java ×2

c ×1

inputstream ×1

javascript ×1

let ×1

performance ×1

random ×1

string ×1

var ×1

variables ×1