小编ab_*_*v86的帖子

通过数字或关联键更好地访问数组?

我遍历一个数组数组并通过关联键访问数组的值,这是一个代码片段.注意:我从不迭代整个数组,但只有10的窗口.

//extract array from a db table (not real code)
$array = $query->executeAndFetchAssociative;

$window_start = 0;

for($i = $window_start; $i<count($array) && $i<$window_start+10; $i++)
  echo($entry["db_field"]);
Run Code Online (Sandbox Code Playgroud)

这是一种Web界面的分页器.我收到了windows_start值并显示了接下来的10个值.

概念执行:

  1. 收到windows_start号码
  2. 开始循环进入外部数组的window_start-TH数组
  3. 通过关联索引显示内部数组的字段值
  4. 移至window_start + 1

内部阵列有大约40个字段.外部数组可以在显示数据库表时增长很多.现在我看到,随着外部数组越来越大,10级窗口的执行需要越来越多的时间.

我的代码需要一些"性能理论":

如果我通过数字键输入内部数组的值,我可以获得更好的性能吗?通常,使用数字索引访问数组值比使用关联索引(字符串)访问更快?

如何输入长度为N的数组的随机条目($ array [random_num])?O(N),O(N/2)就是例如

最后,迭代数组的速度取决于数组长度?我的意思是我总是迭代10个数组元素,但数组长度如何影响我的固定长度迭代?

谢谢Alberto

php arrays performance associative-array

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

Chrome阻止警报弹出

我有一个基于PHP,HTML和javascript的典型Web应用程序。

用户可以从HTML页面触发一个JavaScript操作,该操作与服务器进行一些Ajax交互。此javascript函数碰巧提示一些警报消息,需要用户确认。

当第二条警报运行时,浏览器(Chrome版本18.0.1025.142 m)在警报框中显示一条消息和一个复选框,用户可以在其中“阻止此页面上的其他对话框窗口”(这不是我翻译的确切文本)从我的浏览器中的意大利语输入)。

用户可以告诉浏览器阻止连续的警报,这对我的应用程序不利。

有没有一种方法可以提示更多警报,从而避免用户阻止它们的功能?

也许我应该使用警报以外的其他东西,也许是jQuery组件?如果我这样做,哪一个类似于警报?

html javascript browser

3
推荐指数
1
解决办法
5222
查看次数

java 6线程中断

我有这段代码:

public class ThreadInteraction {
       public static void main(String[] argv) {
        System.out.println("Create and start a thread t1, then going to sleep...");
        Thread1 t1 = new Thread1();
        t1.start();


        try{
            Thread.sleep(1000);
        }
        catch(InterruptedException e) {
            System.out.println(e.toString());
        }

            //let's interrupt t1
            System.out.println("----------- Interrupt t1");
        t1.interrupt();

        for(int i =0; i<100; i++)
            System.out.println("Main is back");
     }
}

class Thread1 extends Thread {
      public void run() {
         for(int i =0; i<10000; i++)
              System.out.println(i + "thread1");
      }
 }
Run Code Online (Sandbox Code Playgroud)

它似乎t1.interrupt()不起作用,因为在我的输出中出现所有10000 t1打印.难道我做错了什么?

java multithreading

2
推荐指数
1
解决办法
776
查看次数

Java Arrays binarySearch

好的伙伴在这里是我的简单代码,我在其中构建一个String数组并尝试搜索此数组中的字符串:

String[] arr = new String[5];
arr[0] = "ccc";
arr[1] = "aaa";
arr[2] = "bbb";
arr[3] = "eee";
arr[4] = "ddd";

System.out.println(Arrays.binarySearch(arr,"eee"));
Run Code Online (Sandbox Code Playgroud)

直接来自Java 6 binarySearch文档:"在进行此调用之前必须对数组进行排序.如果未对其进行排序,则结果未定义"!

实际上我运行我的代码几次得到输出总是3这是我的NOT SORTED数组中的eee的位置,但结果似乎没有"未定义",如文档所述.

我错过了什么?

谢谢

java arrays binary-search

2
推荐指数
2
解决办法
2780
查看次数