indexOf 与 for 循环性能分析

console.clear()
let a = []
// populating array data
for (let i = 0; i < 100000; i++) {
    a.push(i)
}
let testNum = 90000
let found
let totalMS4ForLoop = 0
let totalMS4ForIn = 0
let totalMS4IndexOf = 0
let start
let end
// simulating 10000 requests which are come consecutively
for (o = 0; o < 10000; o++) {
start = Date.now()
  for (let i = 0; i < a.length; i++) {
    if (a[i] == testNum) { found = a[i]; break }
  }
  end = Date.now()
  totalMS4ForLoop += end - start
start = Date.now()
  for (let j in a) {
    if (a[j] == testNum) { found = a[j]; break }
  }
  end = Date.now()
  totalMS4ForIn += end - start
start = Date.now()
  found = a[a.indexOf(testNum)]
  end = Date.now()
  totalMS4IndexOf += end - start
}
console.log("100000x10000 for-loop executions took total " + totalMS4ForLoop + " ms.")
console.log("100000x10000 for-in executions took total " + totalMS4ForIn + " ms.")
console.log("100000x10000 indexOf executions took total " + totalMS4IndexOf + " ms.")

100000x10000 for-loop executions took total 283 ms.
100000x10000 for-in executions took total 33368 ms.
100000x10000 indexOf executions took total 113 ms.

Java 调用方法 方法名是个变量

在Java中,你可以使用反射来动态地调用方法,其中方法名是一个变量。以下是一个简单的示例:

import java.lang.reflect.Method;

public class Main {
    public static void main(String[] args) {
        try {
            // 创建一个包含方法名的字符串变量
            String methodName = "printMessage";

            // 获取类Main的Class对象
            Class<?> c = Main.class;

            // 使用Class对象和方法名获取Method对象
            Method method = c.getDeclaredMethod(methodName, String.class);

            // 创建一个实例对象
            Main mainInstance = new Main();

            // 使用Method对象和实例对象调用方法
            method.invoke(mainInstance, "Hello, World!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void printMessage(String message) {
        System.out.println(message);
    }
}

在这个示例中,我们创建了一个名为methodName的字符串变量,它包含我们想要调用的方法的名称。然后,我们使用这个变量和getDeclaredMethod方法从Main类的Class对象获取Method对象。接下来,我们创建一个Main类的实例,并使用Method对象和实例调用方法。注意,我们需要传递一个参数类型给getDeclaredMethod方法,这告诉Java我们调用的方法需要一个什么样的参数。在这个例子中,我们假设方法需要一个String类型的参数。

需要注意的是,反射应该谨慎使用,因为它可能会破坏封装性并可能影响性能。你应该只在没有其他选择的情况下使用它,比如在编写框架、插件或其他需要在运行时动态加载和调用方法的代码时。

使用JS,判断是一个变量是否为数字或字符串数字

当你使用 JavaScript 时,可以编写一个函数来判断一个变量是否为数字,包括字符串中表示数字的情况。以下是一个示例函数:

function isNumeric(value) {
  // 使用 typeof 来判断变量是否为数字类型
  if (typeof value === 'number') {
    return true;
  }

  // 使用正则表达式来检查字符串是否表示数字
  if (typeof value === 'string' && value.trim() !== '') {
    // 去除字符串两端的空格,并检查是否为空字符串
    return /^\d+(\.\d+)?$/.test(value.trim());
  }

  return false;
}

Continue reading 使用JS,判断是一个变量是否为数字或字符串数字

cdr设置

HOSTS添加

127.0.0.1 apps.corel.com
127.0.0.1 mc.corel.com
127.0.0.1 origin-mc.corel.com
127.0.0.1 iws.corel.com
127.0.0.1 idp.corel.com

如有Clash,配置-更多配置

apps.corel.com,mc.corel.com,origin-mc.corel.com,iws.corel.com,idp.corel.com

js 数组 倒序

要对 JavaScript 中的数组(也称为列表)进行倒序排列,可以使用数组的 reverse() 方法。例如,假设有以下数组:

const arr = [1, 2, 3, 4, 5];

要将该数组倒序排列,只需调用 reverse() 方法:

arr.reverse();

此操作将修改原始数组 arr,使其成为 [5, 4, 3, 2, 1]

如果你不想直接修改原始数组,你可以首先创建原始数组的一个副本,然后再调用 reverse() 方法:

const arr = [1, 2, 3, 4, 5];
const reversedArr = arr.slice().reverse();

此操作将不会修改原始数组 arr,而是返回一个新的数组 reversedArr,它是 arr 的副本,且已经倒序排列。

js 二维数组 的key 按照指定顺序排序

要按照指定顺序对 JavaScript 二维数组中的 key 进行排序,可以使用 Array.sort() 方法和传递一个自定义的排序函数。

例如,假设有以下二维数组:

const arr = [
  { name: 'Alice', age: 28 },
  { name: 'Bob', age: 21 },
  { name: 'Charlie', age: 35 },
  { name: 'David', age: 18 }
];

要按照 name 属性的特定顺序进行排序,可以按照以下方式调用 Array.sort() 方法:

const order = ['Charlie', 'Bob', 'David', 'Alice'];
arr.sort((a, b) => order.indexOf(a.name) - order.indexOf(b.name));

这将按照 ['Charlie', 'Bob', 'David', 'Alice'] 数组中指定的顺序对二维数组进行排序。

windows chrome 浏览器 关闭 preflight 预检策略

Chrome 浏览器的 CORS 预检请求(Cross-Origin Resource Sharing Preflight Request),在 Chrome 浏览器中关闭这些预检请求,使用以下方法:

在 Chrome 浏览器的地址栏中输入 chrome://flags/#out-of-blink-cors ,并启用此标志。这将禁用浏览器在 Blink 内核(Chrome 浏览器的核心渲染引擎)内执行 CORS 预检请求,从而提高性能。但是,注意这可能会导致某些网站无法正常工作。关闭 Chrome 浏览器并重新启动它以使更改生效。

需要说明的是,这种调整可能会影响您使用浏览器的方式,并可能对您的计算机的安全和稳定性产生影响。因此,请在更改浏览器设置之前慎重考虑,并确保在进行任何更改之前备份您的计算机以避免任何潜在的损失或问题。