在Django视图中我正在做这样的事情..
lists = Stuff.objects.exclude(model2=None)
for alist in lists:
if alist.model2.model3.id == target_id:
addSomeStuff
Run Code Online (Sandbox Code Playgroud)
缓慢来自于从if语句中的模型(数据库行)到模型.
当列表中只有大约486个项目时,这实际上需要几秒钟才能运行.我认为这很慢,因为正在执行486*2 + 1 db查找.如果我在哪里重写它,那么它立刻抓住了整个model2表和model3表,然后只是在那里过滤,它将是3分贝命中,我相信它会更快.这会破坏django所做的所有好处.
有没有办法说服django做这样的批量数据查找?
考虑这个javascript:
function addX(n)
{
return 3 + n;
}
alert(addX(6)); //alerts 9
eval('var newFunc = ' + addX.toString().replace("3", "5") + ';');
alert(newFunc(10)); //alert 15
Run Code Online (Sandbox Code Playgroud)
请忽略这样一个事实:它使用和方法可疑,危险,难以在大型代码库中使用,等等.它允许您根据用户的输入动态修改功能.我没有证明,但我也很容易.
我希望你能告诉我如何在lisp中做到这一点.我已经阅读了很多教程,阅读了很多关于宏的内容,提出了一个更广泛的问题,尝试了很多东西,但最终还是做得很短.
我想知道,在lisp中,我可以在运行时修改此函数,而不是添加5.或者用户可能输入的任何其他内容.
(define (addX n)
(+ 3 n))
Run Code Online (Sandbox Code Playgroud)
我不是在寻找currying!我知道我可以这样做:
(define addXCurry
(lambda (x)
(lambda (n)
(+ x n))))
(define add5 (addXCurry 5))
(add5 10)
Run Code Online (Sandbox Code Playgroud)
但这是在创建一个功能工厂.
我正在使用一个简单的例子,因为我想完全理解一些简单的东西.
编辑 谢谢大家的答案.我想我围绕宏的大笨蛋(据我所知),是因为我没有看到一个完全将修改与写作分开的东西.javascript示例很简单 - 但您可以根据用户输入执行更复杂的重写.
我见过的宏都是基于"编译时"(或者我编写的程序员编写的时间).就像在C++中一样,您不能拥有动态模板参数 - 必须在编译时知道它.
(看起来)在lisp中,你无法在运行时根据javascript中的方式从根本上改变过程,因为你丢失了源代码.您可以评估并重新定义它,但不能遍历列表的元素(列表是函数定义),检查每个元素并决定是否更改它.例外情况似乎是Rainer答案中的例子,这些例子都是不稳定的.
我需要在终端服务器上实现应用程序的单个VB.NET实例.为此,我使用了Flawless Code博客中的代码.它运行良好,除了代码是用C#编写并使用VB.NET不支持的匿名方法.我需要重写以下内容,以便将其用作VB.NET中的事件.
static Form1 form;
static void singleInstance_ArgumentsReceived(object sender, ArgumentsReceivedEventArgs e)
{
if (form == null)
return;
Action<String[]> updateForm = arguments =>
{
form.WindowState = FormWindowState.Normal;
form.OpenFiles(arguments);
};
form.Invoke(updateForm, (Object)e.Args); //Execute our delegate on the forms thread!
}
}
Run Code Online (Sandbox Code Playgroud) 在http://www.justinshattuck.com/2007/01/18/mysql-injection-cheat-sheet/?akst_action=share-this上,有一节声称可以绕过某些亚洲字符编码的mysql_real_escape_string
用BIG5或GBK绕过mysql_real_escape_string()
"注入字符串"
に关する追加情报:上面的字符是中文Big5
这是真的吗?如果是这样,如果您无法访问预先准备好的声明,您将如何保护您的网站不受此影响?
我一直在疯狂地将组合框绑定到类的枚举类型属性,其中枚举本身在同一个类中声明.
我试图按照这里提供的答案(wpf组合框绑定到枚举我做错了什么?)具体我使用建议的MarkupExtension代码和匹配的xaml代码.
我的工作代码是:
在单独的文件中定义枚举.
namespace EnumTest
{
public enum TestEnum {one, two, three, four };
}
Run Code Online (Sandbox Code Playgroud)
使用Enum的类(请注意,已删除propertyChanged代码以简化操作):
namespace EnumTest
{
public class Test : INotifyPropertyChanged
{
private TestEnum _MyVar;
public TestEnum MyVar {
get { return _MyVar; }
set
{
_MyVar = value;
OnPropertyChanged("MyVar");
}
}
public Test()
{
_MyVar = TestEnum.three;
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用该类的程序文件:
namespace EnumTest
{
public partial class Window1 : Window
{
Test _oTest = new Test();
public Window1()
{
InitializeComponent();
cmbBox.DataContext = _oTest; …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序需要检测它是否以提升的权限运行.我目前的代码设置如下:
static bool IsAdministrator()
{
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
return principal.IsInRole (WindowsBuiltInRole.Administrator);
}
Run Code Online (Sandbox Code Playgroud)
这可以检测用户是否是管理员,但如果以没有提升的管理员身份运行则不起作用.(例如在vshost.exe中).
如何判断高程是否[已经生效或]可能?
我成为了面向对象代码时代的专业程序员,并且拥有多年用C++编程的经验.我经常处理具有多年遗留代码的大型项目,这些代码混合了c ++和c.我觉得在纯c部分系统上工作不太舒服.从C++编程我理解所有的c语法,但是我知道如何组织一个没有对象的复杂c程序,以及构成我想要填充的内存的最佳实践.我作为一个java程序员工作后学习了c ++,并且认为更多的c会让我成为一个更好的c ++程序员,并且将一点点的java翻译成c ++程序员
有谁知道如何在Javascript中关闭所有弹出窗口(javascript窗口弹出窗口)?
例:
我需要提供有关浏览器显示(分辨率)统计数据的一些数据.显然有W3学校,但他们声称这些是他们网站的结果,并偏向精通技术的用户.有谁知道一些更一般的统计数据?他们需要可信.
我正在专门处理C++,但这确实与语言无关.
只是为了给出问题的一些背景...我有一个基于树/图的结构,其中每个节点都包含多个项的集合.
我有一个类封装了一些通用集合(list,map,vector,LinkedList,等等).我希望能够以最有效的方式从该集合中获取所有项目,而无需客户端编辑私有集合.
这是我所拥有的简化示例:
class MyClass
{
public:
// Basic constructors and such
void AddItem(int item) { _myItems->push_back(item); }
private:
list<int>* _myItems;
};
Run Code Online (Sandbox Code Playgroud)
显然,检索指向_myItems的指针的getter不起作用,因为这将允许客户端编辑_myItems.
尝试1:
我可以创建一个新列表并返回指向该列表的指针......但是我不喜欢这个想法,因为创建和删除的责任现在位于不同的对象中.
尝试2:
我认为最好创建一些CopyTo方法,例如:
void CopyItemsToList(list<int>* inList) { // copy the items to client list }
Run Code Online (Sandbox Code Playgroud)
这样,客户端负责mem管理,并且很容易扩展它以允许更多的数据结构.我对这种方法的关注是成本......列表可能非常大,复制项目的成本可能会很高
尝试3:
只需使用值类型并返回(让复制构造函数处理它),而不是保持指向类中列表的指针.但是,这似乎是性能成本与#2相同......
无论如何,还有其他任何方式去做吗?让我知道你们的想法......谢谢.