问题列表 - 第11573页

优化Django:批量获取模型信息..?

在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做这样的批量数据查找?

django optimization

0
推荐指数
1
解决办法
252
查看次数

你能告诉我如何在lisp中重写函数吗?

考虑这个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答案中的例子,这些例子都是不稳定的.

lisp common-lisp

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

匿名方法 - C#到VB.NET

我需要在终端服务器上实现应用程序的单个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)

c# vb.net anonymous-methods event-handling

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

mysql_real_escape_string()是否完全防止SQL注入?

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

这是真的吗?如果是这样,如果您无法访问预先准备好的声明,您将如何保护您的网站不受此影响?

php mysql sql-injection

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

将ComboBox绑定到嵌套在类中的枚举

我一直在疯狂地将组合框绑定到类的枚举类型属性,其中枚举本身在同一个类中声明.

我试图按照这里提供的答案(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)

wpf enums combobox nested class

10
推荐指数
1
解决办法
5952
查看次数

检测是否以管理员身份运行,是否具有提升权限?

我有一个应用程序需要检测它是否以提升的权限运行.我目前的代码设置如下:

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中).

如何判断高程是否[已经生效或]可能

.net c# uac user-accounts windows-vista

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

有没有任何教程可以帮助熟练的c ++程序员学习c?

我成为了面向对象代码时代的专业程序员,并且拥有多年用C++编程的经验.我经常处理具有多年遗留代码的大型项目,这些代码混合了c ++和c.我觉得在纯c部分系统上工作不太舒服.从C++编程我理解所有的c语法,但是我知道如何组织一个没有对象的复杂c程序,以及构成我想要填充的内存的最佳实践.我作为一个java程序员工作后学习了c ++,并且认为更多的c会让我成为一个更好的c ++程序员,并且将一点点的java翻译成c ++程序员

c c++

6
推荐指数
1
解决办法
386
查看次数

使用Javascript关闭所有弹出窗口

有谁知道如何在Javascript中关闭所有弹出窗口(javascript窗口弹出窗口)?

例:

  1. 通过单击按钮打开3个新窗口,并使用window.open()打开所有3个新窗口.
  2. 单击按钮并关闭所有3个弹出窗口以收集.

javascript

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

常规浏览器显示统计信

我需要提供有关浏览器显示(分辨率)统计数据的一些数据.显然有W3学校,但他们声称这些是他们网站的结果,并偏向精通技术的用户.有谁知道一些更一般的统计数据?他们需要可信.

browser resolution cross-browser screen-resolution

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

从对象中获取项目集合的最佳实践?

我正在专门处理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相同......

无论如何,还有其他任何方式去做吗?让我知道你们的想法......谢谢.

c++ oop

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