问题列表 - 第23095页

Ruby:为什么Array.sort对于大型对象来说速度慢?

一位同事需要在Rails应用程序中对一组ActiveRecord对象进行排序.他尝试了显而易见的Array.sort!但看起来非常缓慢,需要32秒才能获得3700个物体.所以以防万一它是速度变慢这些大发物,他通过排序小对象的数组,然后重新排序ActiveRecord对象的原始数组匹配重新实现排序-如下面的代码.田田!排序现在需要700毫秒.

这真让我感到惊讶.Ruby的排序方法最终会复制关于该位置的对象而不仅仅是引用吗?他正在使用Ruby 1.8.6/7.

def self.sort_events(events)
  event_sorters = Array.new(events.length) {|i| EventSorter.new(i, events[i])}
  event_sorters.sort!
  event_sorters.collect {|es| events[es.index]} 
end

private

# Class used by sort_events
class EventSorter
  attr_reader :sqn
  attr_reader :time
  attr_reader :index

  def initialize(index, event)
    @index = index  
    @sqn   = event.sqn
    @time  = event.time  
  end

  def <=>(b)
    @time != b.time ? @time <=> b.time : @sqn <=> b.sqn
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby sorting performance

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

我可以将2种风格加入到超级风格中吗?

我希望将两种风格结合在一起,形成一种超级风格,方便我的页面使用和自定义.

有可能定义这样的东西吗?(如果是这样的话)

.bold { font-weight: bold;}
.color1 {color: white;}

.boldColor {.bold; .color1;}

where .boldColor is effectively

.boldColor {font-weight:bold; color:white;}
Run Code Online (Sandbox Code Playgroud)

我希望这样,以便我可以在页面上拥有样式,并且能够在一个地方轻松地更改许多地方的颜色.我目前正在使用,<p class="bold color">但我的一些课程变得越来越长,所以我希望能够使用<p class="boldColor">

谢谢

css styles class

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

生成给定字符串的所有可能字母组合的算法,最多2个字母

生成给定字符串的所有可能字母组合的算法,最多2个字母

试图在AS3中创建一个Anagram求解器,例如这个在这里找到:

http://homepage.ntlworld.com/adam.bozon/anagramsolver.htm

我在绕着不同长度的字符串生成所有可能的字母组合时遇到了问题.如果我只生成一个固定长度的排列,对我来说这不会是一个问题...但我希望减少字符串的长度并从原始字母集中获取所有可能的排列最大长度小于原始字符串的字符串.例如,假设我想要一个2的字符串长度,但我有一个3字母的字符串"abc",输出将是:ab ac ba bc ca cb.

理想情况下,算法会产生一个完整的可能组合列表,从原始字符串长度开始,直到最小字符串长度为2.我感觉可能有一个小的递归算法来做到这一点,但不能包裹我的大脑它.我在AS3工作.

谢谢!

algorithm permutation actionscript-3

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

IE7没有消化JSON:"解析错误"

在尝试获取JSON时,我的回调函数没有触发.

$.ajax({
    type:"GET",
    dataType:'json',
    url: myLocalURL,
    data: myData,
    success: function(returned_data) { 
        alert('success');
    }
});
Run Code Online (Sandbox Code Playgroud)

最奇怪的部分是:

  1. 我的JSON(s)在JSONlint上验证
  2. 这只能在IE7上失败...它适用于Safari,Chrome和所有版本的Firefox(甚至在IE8中).如果我使用'错误',那么它会报告"parseError"...即使它验证了!

有什么我想念的吗?IE7是否不处理某些字符,数据结构(我的数据没有任何非字母数字,但它有嵌套的JSON)?我已经使用了大量其他AJAX调用(即使在IE7中),但是除了这个调用之外.

这里返回的示例数据是:(这是一个结构完整的示例,意味着它只缺少一些第二层字段,但遵循这个确切的层次结构)

{"question":{
             "question_id":"19",
             "question_text":"testing",
             "other_crap":"none"
            },
  "timestamp":{
              "response":"answer",
              "response_text":"the text here"
              }
}
Run Code Online (Sandbox Code Playgroud)

我完全不知所措.希望有人能够了解正在发生的事情......谢谢!

编辑 这里是我正在使用的虚拟数据SIMPLEST案例的副本......它仍然无法在IE7中运行.

{
  "question":{
         "question_id":"20",
         "question_text":"testing :",
         "adverse_party":"none",
         "juris":"California",
         "recipients":"Carl Chan"
         }
}
Run Code Online (Sandbox Code Playgroud)

我开始怀疑这是一个JSON问题......但我不知道它还能是什么.下面是我发现,可能是原因的一些其他资源,但他们似乎并没有工作,要么: http://firelitdesign.blogspot.com/2009/07/jquerys-getjson.html(Django使用统一由默认,所以我不认为这是导致它)

有人还有其他想法吗?

django ajax jquery json

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

NSString sizeWithAttributes:不准确

我想知道屏幕上显示的NSString的宽度(以像素为单位).所以我可以使NSTextField的边界恰好是字符串本身的长度.所以我用IB的"标签"的NSTextField并为那些谁不知道我的意思,我根据标题为"标签"标签,字体"龙力大13像素",不可选,不可编辑,常规尺寸,无背景, IB的宽度为38px宽.

如果我想以编程方式获取其宽度,我会使用

[@"Label" sizeWithAttributes: [NSDictionary dictionaryWithObject: [NSFont fontWithName: @"Lucida Grande" size: 13] forKey: NSFontAttributeName]].width
Run Code Online (Sandbox Code Playgroud)

哪个会给我33.293457.所以这大约是实际宽度的5 px ..

attributes objective-c nsstring

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

打开位于addin文件夹中的XML文件

在VSTO Excel中添加代码:

Dim XMLDoc As XElement = XElement.Load("XMLFile1.xml")
Run Code Online (Sandbox Code Playgroud)

产生FileNotFound误差的消息(" 找不到文件'C:\用户\道格\文档\ XMLFile1.xml’. ")这是看在我的文档文件夹,但在XML文件位于VS项目文件夹为该项目.我已将XML文件的"复制到输出目录"属性设置为"始终复制".当我更改代码以包含XML文件的完整路径时,代码可以正常工作.

此外,如果我在Windows控制台或其他类型的项目中包含上述代码,它将正确运行.我只是在Excel Addin中获取它.以上适用于VSTO 2008/Excel 2003和VSTO 2010/Excel 2010.

.net excel vsto

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

使用指向数组的指针

我正在玩谷歌的Go语言,我遇到了一些在C语言中相当基本的东西,但是到目前为止我看到的文档似乎没有涉及

当我将一个指向一个切片的指针传递给一个函数时,我假设我们有一些方法可以访问它,如下所示:

func conv(x []int, xlen int, h []int, hlen int, y *[]int)

    for i := 0; i<xlen; i++ {
        for j := 0; j<hlen; j++ {
            *y[i+j] += x[i]*h[j]
        }
    }
 }
Run Code Online (Sandbox Code Playgroud)

但Go编译器不喜欢这样:

sean@spray:~/dev$ 8g broke.go
broke.go:8: invalid operation: y[i + j] (index of type *[]int)
Run Code Online (Sandbox Code Playgroud)

足够公平 - 这只是猜测.我有一个相当简单的解决方法:

func conv(x []int, xlen int, h []int, hlen int, y_ *[]int) {
    y := *y_

    for i := 0; i<xlen; i++ {
        for j := 0; j<hlen; j++ {
            y[i+j] …
Run Code Online (Sandbox Code Playgroud)

pointers go

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

如何使用公共const迭代器和私有非const迭代器提供类似stl的容器?

我有一个包含std :: list的类,并希望为const_iterator提供public begin()和end(),为plain iterator提供private begin()和end().

但是,编译器看到私有版本并抱怨它是私有的而不是使用公共const版本.

我知道C++不会在返回类型(在本例中为const_iterator和iterator)上重载,因此它选择非const版本,因为我的对象不是const.

如果没有在调用begin()之前将我的对象转换为const,或者没有重载名称,那么有没有办法实现这一点?

我认为这是人们之前已经解决过的一种已知模式,并且希望如何解决这个问题.

class myObject {
public:
  void doSomethingConst() const;
};

class myContainer {
public:
  typedef std::list<myObject>::const_iterator const_iterator;
private:
  typedef std::list<myObject>::iterator iterator;

public:
  const_iterator begin() const { return _data.begin(); }
  const_iterator end()   const { return _data.end();   }
  void reorder();
private:
  iterator begin() { return _data.begin(); }
  iterator end()   { return _data.end();   }
private:
  std::list<myObject> _data;
};

void myFunction(myContainer &container) {
  myContainer::const_iterator itr = container.begin();
  myContainer::const_iterator endItr = container.end();
  for (; itr != endItr; …
Run Code Online (Sandbox Code Playgroud)

c++ iterator stl overloading const

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

如何识别客户端(客户端套接字)?

根据我的理解,serverSocket = new ServerSocket(portNumber)我们创建了一个可能"监听"指示端口的对象.通过clientSocket = serverSocket.accept()我们强制服务器套接字"监听"其端口并从任何尝试通过与服务器关联的端口连接到服务器的客户端"接受"连接.当我说"客户端尝试连接到服务器"时,我的意思是客户端程序执行"nameSocket = new Socket(serverIP,serverPort)".

如果客户端尝试连接到服务器,则服务器"接受"此客户端(即创建与此客户端关联的"客户端套接字").

如果新客户端尝试连接到服务器,则服务器会创建另一个客户端套接字(与新客户端关联).但是服务器如何知道它是一个"新"客户端还是已经有套接字的"旧"客户端?或者,换句话说,如何识别客户?通过他们的IP?通过他们的IP和端口?通过一些"签名"?

如果"旧"客户端再次尝试使用Socket(serverIP,serverIP)会发生什么?服务器会创建与此客户端关联的第二个套接字吗?

sockets networking client-server

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

将包含html的smtp邮件发送到gmail帐户

我发现这个小代码可以向gmail用户发送电子邮件.我希望邮件的正文包含html(例如,解码链接以使其保存与其指向的URL不同的文本).

我使用的是c#.net 3.5.我在我的代码中使用了这些类:

  • MAILMESSAGE
  • SmtpClient

如何才能做到这一点?

这是我的代码的副本:

            MailMessage message = new MailMessage("me@gmail.com", WebCommon.UserEmail, "Test", context.Server.HtmlEncode("<html> <body> <a href='www.cnn.com'> test </a> </body> </html> "));
            System.Net.NetworkCredential cred = new System.Net.NetworkCredential("him@gmail.com", "myPwd");
            message.IsBodyHtml = true;

            System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("smtp.gmail.com");

            smtp.UseDefaultCredentials = false;
            smtp.EnableSsl = true;
            smtp.Credentials = cred;
            smtp.Port = 587;

            smtp.Send(message);
Run Code Online (Sandbox Code Playgroud)

谢谢!

.net c# gmail

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