当以面向对象的方式实现大海捞针搜索时,您基本上有三种选择:
1. needle.find(haystack)
2. haystack.find(needle)
3. searcher.find(needle, haystack)Run Code Online (Sandbox Code Playgroud)
你更喜欢哪个?为什么?
我知道有些人更喜欢第二种选择,因为它避免引入第三种物体.然而,我不禁感到第三种方法在概念上更"正确",至少如果你的目标是塑造"现实世界".
在哪种情况下,您认为引入辅助对象是合理的,例如本例中的搜索器,何时应避免使用?
是否可以生成整个Django站点的图表?例如,为了理解模型/数据库结构,我使用graphViz,这对跟踪模型结构非常有用,对讨论非常有用.
我很好奇,如果完整的Django网站存在类似的东西,那么urls/models/views/templates所有这些都可以用图形表示.我不太清楚这会是什么样子但是如果有任何工具可以做到这一点我很好奇.
这将以编程方式生成一个图表,显示站点不同部分之间的代码流.
程序(例如C或C++)如何安排在计算机内存中?我对段,变量等有点了解,但基本上我对整个结构没有扎实的了解.
由于内存中的结构可能不同,我们假设Windows上有一个C++控制台应用程序.
一些指向我具体的指示:
类似教程的材料的链接是受欢迎的,但请不要参考样式材料,假设汇编程序等知识.
我正在使用C(而不是C++),我不确定如何避免使用全局变量.
我对C,它的语法以及如何编写基本应用程序有相当不错的把握,但我不确定构造程序的正确方法.
真正的大型应用程序如何避免使用全局变量?我很确定总会有至少一些,但对于用C编写的大型游戏和其他应用程序,最好的方法是什么?
是否有任何好的,开源软件严格用C编写,我可以看一下?我无法想到任何问题,其中大多数似乎都是用C++编写的.
谢谢.
编辑
下面是一个示例,我将在一个简单的API挂钩应用程序中使用全局变量,它只是另一个进程中的DLL.
具体而言,此应用程序挂钩了另一个应用程序中使用的API函数.它通过使用WriteProcessMemory覆盖对原始的调用,并使其调用我的DLL来实现.
但是,当取消挂起API函数时,我必须回写原始内存/机器代码.
因此,我需要为该机器代码维护一个简单的字节数组,每个API函数都挂钩一个,并且有很多.
// Global variable to store original assembly code (6 bytes)
BYTE g_MessageBoxA[6];
// Hook the API function
HookAPIFunction ( "user32.dll", "MessageBoxA", MyNewFunction, g_MessageBoxA );
// Later on, unhook the function
UnHookAPIFunction ( "user32.dll", "MessageBoxA", g_MessageBoxA );
Run Code Online (Sandbox Code Playgroud)
对不起,如果那令人困惑.
我正在写一个樱桃应用程序,我想知道构建我的处理程序和代码的最佳方法是什么?
我认为通过cherrypy.root进行分配是简单的,但是编写处理程序并分配它们的一些做法是什么?
(请允许我证明我的困惑!)我最初的想法是编写一个标准的处理程序类,根据当前的URL或类/方法组合推断出要运行的模板.然后我会多次将该处理程序的一个实例分配给创建页面的路径.我不认为这有效,因为递归引用不会正常工作.
所以,鉴于我已经在绘制自己的源代码应该如何看待的事实,我会喜欢一些指针和示例!
随意提出一些详细的问题让我澄清一下.虽然那里有大量的樱桃教程材料,但它往往只会划伤表面.
出于好奇,程序入口点名称"main"的起源是什么?
例如,假设我有hello.java(任意),如果它正在运行并且用户通过在运行时提供输入来更改该应用程序中的一些可访问(非私有)变量,则此应用程序将具有与尚未执行的变量不同的变量.另一个程序(最好是java)可以从该应用程序获取或显示该变量的更新信息.
如果我有这样的程序
一个声明我的主库函数的头文件,primary()并定义了一个简短的简单辅助函数helper().
/* primary_header.h */
#ifndef _PRIMARY_HEADER_H
#define _PRIMARY_HEADER_H
#include <stdio.h>
/* Forward declare the primary workhorse function */
void primary();
/* Also define a helper function */
void helper()
{
printf("I'm a helper function and I helped!\n");
}
#endif /* _PRIMARY_HEADER_H */
Run Code Online (Sandbox Code Playgroud)
定义它的主要函数的实现文件。
/* primary_impl.c */
#include "primary_header.h"
#include <stdio.h>
/* Define the primary workhorse function */
void primary()
{
/* do the main work */
printf("I'm the primary function, I'm doin' work.\n");
/* …Run Code Online (Sandbox Code Playgroud)