小编Car*_*ers的帖子

递归比循环更快吗?

我知道递归有时比循环更清晰,而且我不会询问何时应该使用递归迭代,我知道有很多问题已经存在.

我要问的是,递归是否比循环更快?对我来说,似乎总是能够改进循环并让它比递归函数更快地执行,因为循环不会不断地设置新的堆栈帧.

我特别关注在递归是处理数据的正确方法的应用程序中递归是否更快,例如在一些排序函数,二叉树等中.

iteration recursion performance loops

270
推荐指数
8
解决办法
11万
查看次数

你能"编译"PHP代码吗?

我知道PHP在服务器上运行之前被编译为字节代码,然后可以缓存该字节代码,这样就不必为每个Web访问重新解释整个脚本.

但是你可以"编译"php并上传一个二进制文件,它只能由字节码解释器运行吗?

php bytecode

221
推荐指数
7
解决办法
23万
查看次数

在JavaScript中将数组解压缩为单独的变量

这是一个简单的问题,我以前做过.我只是不记得它是怎么称呼的.

在python我可以这样做:

arr = ['one', 'two']
one, two = arr
Run Code Online (Sandbox Code Playgroud)

我怎么用JavaScript做到这一点?

javascript arrays

126
推荐指数
5
解决办法
6万
查看次数

如何在旧台式计算机上构建小型操作系统?

这可能是徒劳的,因为我知道编写一个操作系统是无法忍受的复杂(尤其是自己).

  • 我不希望构建下一个linux或Windows.

  • 我知道这将是可怕的,而且越野车,并且不会起作用,但那很好.

我想在Assembly,C和(某些)C++中自己编写所有内容.

这是一个未来的项目,因为我现在忙于其他一些事情并且没有立即的时间,但我想我现在会问它,所以也许我可以得到很多答案,它可以构建并成为这种方法的有用资源(我所见过的其他一切都涉及构建minix,使用现有的引导程序,在虚拟引导程序中构建它等).

我想用显示器,键盘和鼠标设置一个旧的桌面,然后开始使用空白硬盘.

我想学习如何编写我自己的bootloader(我已经找到了很多有关这方面的资源,但为了完整性,请仍然添加一些好的),我自己的USB驱动程序(如果有必要),CD驱动程序(如果有必要的话) )等等,从头开始.

  • 如何将代码放入计算机?用软盘做它最好吗?大多数计算机可以通过USB记忆棒完成吗?

  • 我需要哪些司机,你能建议任何建议吗?

  • 启动序列之后 - 然后是什么?我如何进入保护模式等

  • 如何在没有操作系统帮助的情况下管理内存?我只是使用我想要的任何地址吗?无需初始化?

  • 毫无疑问,我会遇到什么会让我困惑?

  • 我怎样才能使命令行O/S和图形命令行?

  • 什么是图形操作系统?比如,我怎么做一些命令行,一个字体,一个顶部的图片?

  • 我在哪里可以阅读有关设置多任务环境的信息?(即,有两个并行运行的图形命令行).

  • 我该如何设置一种窗口系统?设置简单的多任务处理后,如何在屏幕上显示图形?

相信我,我知道这是一个非常复杂的项目,我可能永远无法完成它或在任何用途上写任何东西.

还有很多其他的部分我还没有提到过,如果你想到的话,也可以自由添加.

请为每个答案添加一个"主题" - 例如,USB驱动程序,然后可能是资源列表,需要注意的事项等.

此外,请不要建议建立另一个操作系统或预先存在的代码.我知道我将阅读许多预先存在的代码(例如Linux内核,或示例资源,现有驱动程序等),但最终我想自己完成所有的写作.我知道我应该建立其他的东西,而且还有很多其他的问题,如果我改变主意并走那条路,我就可以读到这些问题.但这一切都是关于从头开始做整件事.

关于如何获得图形的任何建议?不同的视频模式以及如何使用它们等?

c assembly bootstrapping operating-system osdev

110
推荐指数
13
解决办法
5万
查看次数

如何在Python中创建一个简单的消息框?

我正在寻找与alert()JavaScript 相同的效果.

我今天下午用Twisted.web写了一个简单的基于网络的翻译.你基本上通过一个表单提交一个Python代码块,然后客户端来抓取它并执行它.我希望能够制作一个简单的弹出消息,而不必每次都重写一大堆样板wxPython或TkInter代码(因为代码通过表单提交然后消失).

我试过tkMessageBox:

import tkMessageBox
tkMessageBox.showinfo(title="Greetings", message="Hello World!")
Run Code Online (Sandbox Code Playgroud)

但这会在背景中打开另一个带有tk图标的窗口.我不想要这个.我正在寻找一些简单的wxPython代码,但它总是需要设置一个类并进入一个应用程序循环等.在Python中没有简单,无需捕获的方法来制作消息框吗?

python wxpython tkinter

98
推荐指数
9
解决办法
29万
查看次数

有没有理由在C++ 03中使用'auto'关键字?

请注意,此问题最初发布于2009年,在C++ 11批准之前以及auto关键字的含义发生重大变化之前.提供的答案仅适用于C++ 03的含义auto- 即指定的存储类 - 而不是C++ 11的含义auto- 即自动类型推导.如果您正在寻找有关何时使用C++ 11的建议auto,则此问题与该问题无关.

在最长的时间里,我认为没有理由static在C中使用关键字,因为在块范围之外声明的变量是隐式全局的.然后我发现static在块范围内声明一个变量会给它一个永久的持续时间,并且在块范围之外(在程序范围内)声明它会给它文件范围(只能在该编译单元中访问).

所以这给我留下了一个我可能还没有完全理解的auto关键字:关键字.除了"局部变量"之外还有其他一些含义吗?无论你想在哪里使用它,它都没有隐含地为你做的事情?auto变量如何在程序范围内表现?static auto文件范围中的变量是什么?此关键字除完全性之外是否还有其他目的?

c++ keyword c++03

84
推荐指数
4
解决办法
7万
查看次数

C的"坏"功能与其"好"替代品相比

C中的"坏"功能是什么,它们的"好"选择是什么?

为什么坏的不好,是什么让好的更好?

我知道,例如,它gets()是"坏的",因为它没有任何形式的边界检查.什么是更好的选择?gets()

我听说gets()很糟糕,但我不记得为什么.谁知道?什么是最好的选择?

还有更多吗?

c function

66
推荐指数
6
解决办法
3万
查看次数

'this'在JavaScript类方法中未定义

我是JavaScript的新手.我所做的一切都是新的,它是现有代码的调整,并编写了一小部分jQuery.

现在我正在尝试用属性和方法编写一个"类",但是我遇到了这些方法的问题.我的代码:

function Request(destination, stay_open) {
    this.state = "ready";
    this.xhr = null;
    this.destination = destination;
    this.stay_open = stay_open;

    this.open = function(data) {
        this.xhr = $.ajax({
            url: destination,
            success: this.handle_response,
            error: this.handle_failure,
            timeout: 100000000,
            data: data,
            dataType: 'json',
        });
    };

    /* snip... */

}

Request.prototype.start = function() {
    if( this.stay_open == true ) {
        this.open({msg: 'listen'});
    } else {

    }
};
//all console.log's omitted
Run Code Online (Sandbox Code Playgroud)

问题是in Request.prototype.start,this是未定义的,因此if语句的计算结果为false.我在这做错了什么?

javascript prototype class

65
推荐指数
6
解决办法
7万
查看次数

在C#中重载赋值运算符

我知道=操作员不能超载,但必须有办法在我这里做我想要的:

我只是创建代表定量单位的类,因为我正在做一些物理学.显然我不能只从一个原语继承,但我希望我的类的行为与原语完全一样 - 我只是希望它们的输入方式不同.

所以我可以去,

Velocity ms = 0;
ms = 17.4;
ms += 9.8;
Run Code Online (Sandbox Code Playgroud)

等等

我不知道该怎么做.我想我会写一些像这样的类:

class Power
{
    private Double Value { get; set; }

    //operator overloads for +, -, /, *, =, etc
}
Run Code Online (Sandbox Code Playgroud)

但显然我不能重载赋值运算符.我有什么方法可以得到这种行为吗?

c# operator-overloading

60
推荐指数
2
解决办法
7万
查看次数

用C/C++编译DLL,然后从另一个程序中调用它

我想制作一个简单,简单的DLL,它导出一个或两个函数,然后尝试从另一个程序中调用它...到目前为止,我看到的每个地方,都是复杂的事情,将事物连接在一起的不同方式,奇怪的问题,我还没有开始意识到存在......我只是想通过做这样的事情来开始:

创建一个导出一些函数的DLL,比如

int add2(int num){
   return num + 2;
}

int mult(int num1, int num2){
   int product;
   product = num1 * num2;
   return product;
}
Run Code Online (Sandbox Code Playgroud)

我正在使用MinGW进行编译,我想在C中做到这一点,但如果在C++中做任何真正的差异,我也想知道它们.我想知道如何将该DLL加载到另一个C(和C++)程序,然后从中调用这些函数.在玩了一些DLL之后,我的目标是通过将DLL加载到visual basic中来制作用于C(++)代码的VB前端(我有视觉工作室6,我只想制作一些表格和这些表单上的对象的事件,调用DLL).

我需要知道如何调用gcc(/ g ++)来创建一个DLL,还需要知道如何编写(/生成)导出文件...以及我能在DLL中做什么/不能做什么(比如,我可以采取来自VB前端的指针/引用的参数?DLL可以在前端调用理论函数吗?或者有一个函数从VB调用"函数指针"(我甚至不知道是否可能)它?)我很确定我不能将变量传递给DLL ......但这就是我所知道的.

再次更新

好吧,我想出了如何使用gcc编译它,以使我运行的dll

gcc -c -DBUILD_DLL dll.c
gcc -shared -o mydll.dll dll.o -Wl,--out-implib,libmessage.a
Run Code Online (Sandbox Code Playgroud)

然后我有另一个程序加载它并测试函数,它工作得很好,非常感谢建议,但我尝试用VB6加载它,就像这样

Public Declare Function add2 Lib "C:\c\dll\mydll.dll" (num As Integer) As Integer
Run Code Online (Sandbox Code Playgroud)

然后我只是从表单调用add2(text1.text),但它给了我一个运行时错误:

"在C:\ c\dll\mydll.dll中找不到DLL入口点add2"

这是我为DLL编译的代码:

#ifdef BUILD_DLL
#define EXPORT __declspec(dllexport)
#else
#define EXPORT __declspec(dllimport)
#endif

EXPORT int __stdcall add2(int num){
  return num + 2; …
Run Code Online (Sandbox Code Playgroud)

c c++ vb6 dll gcc

58
推荐指数
3
解决办法
11万
查看次数