问题列表 - 第31616页

在Ruby on Rails中,如何在会话之间将对象保留在内存中

我正在尝试构建一些东西(最终是一个宝石,但现在是一个应用程序),其工作方式如下.

例如,假设DB记录是狗的品种.每个品种都有一个Dog父类和一个子类.直到运行时才知道实际品种.

当服务器开始时,它将从DB加载记录并根据记录实例化类的实例,例如我可能有两个小猎犬和贵宾犬.当有人来到服务器时,他们可能想要访问其中一个狗实例.

为什么不动态创建实例?在我的例子中,"狗"基本上是包含算法和数据的类.算法不会改变,数据变化很少(按天数排序),但算法本身的执行(使用数据和传递的一些动态数据,如时间戳)将每秒多次访问.

如果必须重新创建对象的实例并且每次只是为了在下一个请求时再次执行请求而加载数据(请求不会更改对象的状态),那将是愚蠢的.当我可以重复使用同一个对象时,我将创建并销毁多个对象.

将它保留在会话中是没有意义的,因为想要一只贵宾犬的人不需要在她的会话对象中有beagles信息; 这是无关紧要的(并且没有扩展).

如何将这些对象保留在内存中?我基本上想要一个查找表来保存实例.在Java中,我将创建一个包含某种类型的hashmap或数组的单例,它们位于内存中.在rails中我通过在lib文件夹中创建一个单例类来尝试这个.我认为 - 我可能不理解这一点 - 当会话消失时,实例(事实上它是单身人士没有实际意义)正在丢失.

我找到的最接近的答案是http://www.ruby-forum.com/topic/129372,它基本上将所有内容放在课程领域和方法中.不知怎的,似乎不对.

TIA!

另外:我来自Java.在Java中,我只是创建一个位于堆上或可能位于JNDI树中的对象,当HTTP请求进入时,它们将由一个servlet或EJB或一些每个请求项处理,然后可以访问持久对象.我似乎无法在rails中找到相应的东西.

memory persistence ruby-on-rails object

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

如何解决这个正则表达式?

帮助需要在这个正则表达式中修复一个小东西

^\d{2}\-\d{3}\-\d{6}
Run Code Online (Sandbox Code Playgroud)

它验证了这种格式11-111-111111.它工作正常.但最后一个(6位数)也验证超过6位数.这意味着如果我把11-111-11111111(最后一部分的8位数),上面的正则表达式验证它?

有人能告诉我如何将其限制为6位数吗?

regex

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

为回合制游戏服务器选择哪种协议

我正在为Java中的回合制游戏编写游戏服务器.这些都是事实:

  • 游戏的速度很慢,所以客户端需要每8秒发送一次数据,而且数据大部分时间只是一个小的增量更新(几十个字节),除了加入游戏或列表之类的情况可用游戏等
  • 服务器必须支持大量的玩家,比方说1000,玩几百个游戏中的一个
  • 当玩家转弯时,必须通知同一游戏中的其他玩家移动.游戏中玩家的最大数量约为10

首先,我从我的选项列表中排除了UDP,因为我需要一个可靠的协议,因为在极少数情况下我真的需要发送一些不适合一个数据包的数据,我不想打扰合并数据包和类似的东西,跟踪到达的包裹和其他低级别的东西的顺序.

所以困境在于是使用TCP还是HTTP.

TCP尝试#1

从客户端到服务器的连接(反之亦然)始终打开.这样,当玩家进行移动时,服务器可以容易地通知游戏中的其他玩家进行了移动.使用这种方法困扰我的主要问题是,是否建议甚至可以连续打开1000个连接和套接字?

TCP尝试#2

我想到的替代方案是,用于在客户端的每个请求上建立单独的连接/套接字.客户端将打开连接,将一些小数据发送到服务器并关闭该连接.使用这种方法,我可以有一个固定大小的线程池,比方说10,并在每个线程中单独处理客户端的请求,这样任何时候最多可以打开10个connectinos/socket.但是这种方法有两件事困扰我:

  1. 打开/关闭与客户端的连接的昂贵
  2. 在游戏中通知其他玩家的方式,因为与他们的联系很可能是关闭的.在这种情况下,每个人都应该"轮询"服务器进行更新,让我们说每一秒.

建立TCP套接字/连接的成本是多少?这是一项昂贵的操作还是仅在几毫秒(或更短)内完成?

HTTP

  1. 如果我发送一个新的GET/POST只发送几个字节会有很多开销吗?
  2. 我可以同时保持与客户端的1000个HTTP连接,然后使用AJAX或类似的东西来减少开销吗?在这种情况下,1000个同时连接会对带宽/性能造成严重问题吗?

我接受任何形式的建议/意见.

java tcp http

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

Oracle varchar2最小长度

在Oracle db中,我们有一个包含varchar2类型列的表(例如USERNAME).如何为此列设置精确(或至少最小)的长度?因此,插入此表的所有用户名只能是10个(或必须至少10个)字符长.

oracle

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

获取照片集的JQuery/Flickr API问题

我一直在努力整理一个通过Flickr管理的照片相册系统,过去一天我一直在玩Flickr API,并且有以下代码,但它只是没有返回预期的HTML.insetad我的浏览器中出现上述行的错误($('#images').html(theHtml);)

  <script type="text/javascript">
     $(document).ready(function(){

   $.getJSON('http://api.flickr.com/services/rest/?&method=flickr.photosets.getPhotos&api_key=xxxxxxxxxxxxxxxxxxxxxxxxxxx&photoset_id=xxxxxxxxxxxxxxxxxxxx=&format=json&jsoncallback=?', displayImages);

   function displayImages(data) {

    var photosetID = "";
    var title = "";
    var theHtml = "";
    $.each(data.photosets.photoset, function(i,set){

     photosetID = set.id;
     title = set.title._content;
     ids.push(photosetID);
     titles.push(title);

     var sourceSquare = (set.media.m).replace("_m.jp g", "_s.jp g");

     theHtml+= '<li><a href="'+set.link+'" target="_blank">';
     theHtml+= '<img title="'+set.title+'" src="'+sourceSquare+'" alt="'+set.title+'" />';
     theHtml+= '</a></li>';
    });

    $('#images').html(theHtml);    });   });

  </script>
Run Code Online (Sandbox Code Playgroud)

我也见过这样的例子:

$.getJSON("http://api.flickr.com/services/feeds/groups_pool.gne?id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx&lang=en-us&format=json&jsoncallback=?", displayImages);
Run Code Online (Sandbox Code Playgroud)

BUt不确定组ID是什么,是否与设置ID相同?Flickr如何知道我在示例二中的身份,因为我没有看到任何API被传递.

我的偏好是让第一个例子工作,因为那是我一直在努力的,但是任何建议/例子都会得到应用

干杯

api jquery flickr

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

python:正确使用全局变量

这是代码!

import csv

def do_work():
      global data
      global b
      get_file()
      samples_subset1()
      return

def get_file():

      start_file='thefile.csv'

      with open(start_file, 'rb') as f:
        data = list(csv.reader(f))
        import collections
        counter = collections.defaultdict(int)

      for row in data:
        counter[row[10]] += 1
      return

def samples_subset1():

      with open('/pythonwork/samples_subset1.csv', 'wb') as outfile:
          writer = csv.writer(outfile)
          sample_cutoff=5000
          b_counter=0
          global b
          b=[]
          for row in data:
              if counter[row[10]] >= sample_cutoff:
                 global b
                 b.append(row) 
                 writer.writerow(row)
                 #print b[b_counter]
                 b_counter+=1
      return
Run Code Online (Sandbox Code Playgroud)

我是python的初学者.我的代码运行的方式是我调用do_work,do_Work将调用其他函数.这是我的问题:

  1. 如果我需要data只被2个函数看到我应该让它全球化吗?如果不是那么我应该如何打电话samples_subset1?我应该来自get_file还是来自do_work

  2. 代码有效,但是你可以指出其编写方式的其他好/坏事吗?

  3. 我正在处理一个csv文件,有多个步骤.我正在将步骤分解为不同的功能,例如get_file …

python csv

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

Javascript正则表达式 - 如何在大括号之间获取文本

我需要在大括号之间获取文本(如果有的话).我确实找到了这个其他帖子,但从技术上讲,它没有正确回答: 正则表达式提取方形或大括号之间的文本

它实际上没有说明如何实际提取文本.所以我到目前为止:

var cleanStr = "Some random {stuff} here";
var checkSep = "\{.*?\}"; 
if (cleanStr.search(checkSep)==-1) { //if match failed
  alert("nothing found between brackets");
} else {
  alert("something found between brackets");
}
Run Code Online (Sandbox Code Playgroud)

然后我如何从字符串中提取"东西"?而且如果我进一步考虑,我如何从这个字符串中提取'stuff'和'sentence':

var cleanStr2 = "Some random {stuff} in this {sentence}";
Run Code Online (Sandbox Code Playgroud)

干杯!

javascript regex search extract

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

ios_base.h中的C++错误

/usr/include/c++/4.4/bits/ios_base.h:在成员函数'std :: basic_ios>&std :: basic_ios> :: operator =(const std :: basic_ios>&)':
/usr/include/c ++/4.4/bits/ios_base.h:793:错误:'std :: ios_base&std :: ios_base :: operator =(const std :: ios_base&)'是私有的
/usr/include/c++/4.4/iosfwd:47:错误:在此上下文中
/usr/include/c++/4.4/iosfwd:在成员函数'std :: basic_ostream>&std :: basic_ostream> :: operator =(const std :: basic_ostream>&)':
/usr/include /c++/4.4/iosfwd:56:注意:合成方法'std :: basic_ios>&std :: basic_ios> :: operator =(const std :: basic_ios>&)'首先需要
/usr/include/c++/4.4/iosfwd:在成员函数'std :: basic_ofstream>&std :: basic_ofstream> :: operator =(const std ::)basic_ofstream>&)':
/usr/include/c++/4.4/iosfwd:84:注意:合成方法'std :: basic_ostream>&std :: basic_ostream> :: operator =(const std :: basic_ostream>&)'首先需要
/usr/include /c++/4.4/streambuf:在成员函数'std :: basic_filebuf>&std :: basic_filebuf> :: operator =(const std :: basic_filebuf>&)'中:/usr/include/c++/4.4/streambuf:778 …

c++ gcc

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

使用JavaScript在空闲时隐藏鼠标光标

如果鼠标在一段时间内(例如,五秒钟)处于非活动状态并且将其重新设置为再次激活时,是否可以使用JavaScript将cursor属性设置为属性?noneauto

编辑:我意识到这none不是该cursor属性的有效值.尽管如此,许多网络浏览器似乎都支持它.此外,这方面的主要用户是我自己,因此几乎不会出现混淆的可能性.

我有两个可以做类似的脚本:

window.addEventListener("mousemove",
    function(){
        document.querySelector("#editor").style.background = "#000";
        setTimeout("document.querySelector('#editor').style.background = '#fff'", 5000);
    }
, true);
Run Code Online (Sandbox Code Playgroud)

var timeout;
var isHidden = false;

document.addEventListener("mousemove", magicMouse);

function magicMouse() {
    if (timeout) {
        clearTimeout(timeout);
    }
    timeout = setTimeout(function() {
        if (!isHidden) {
            document.querySelector("body").style.cursor = "none";
            document.querySelector("#editor").style.background = "#fff";
            isHidden = true;
        }
    }, 5000);
    if (isHidden) {
        document.querySelector("body").style.cursor = "auto";
        document.querySelector("#editor").style.background = "#000";
        isHidden = false;
    }
};
Run Code Online (Sandbox Code Playgroud)

对于其中的每一个,当鼠标处于非活动状态超过五秒时,背景颜色变为白色,而当光标移动时,背景变为黑色.但是,它们不能使光标消失.让我感到惊讶的是,如果我将命令document.querySelector("body").style.cursor = "none";放入JavaScript控制台,它就能完美运行.在脚本中,它似乎不起作用.

我已经发布了上面的脚本,因为这是我开始使用它.我不一定要求修复任何一个脚本; …

javascript css cursor mousemove

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

Excel VBA函数根据范围中的单元格背景颜色返回真或假

我保留了我的时间表的电子表格,当我遇到并期望达到某些里程碑时.数据(日期)从左到右存储,每个项目都有自己的行.里程碑是永久设定的并且占据范围(O:AA).我的数据颜色编码为绿色(完整),橙色(截止日期),蓝色(不工作),红色(不适用).

我想要做的是编写一个函数来检查单元格是否包含橙色背景(颜色索引6)并根据该函数返回TRUE或FALSE.基本上我想汇总所有列的所有截止日期.最后我想整合一个日期检查,以便我可以看到哪些截止日期即将来临.

Function ScanForColor(Dates As Range) as Boolean
    If ScanForColor.Interior.ColorIndex = 6 Then
        ScanForColor = True
    Else
        ScanForColor = False
End Function
Run Code Online (Sandbox Code Playgroud)

我想在像= ScanForColor(O3:AA3)这样的单元格中调用该函数,我将在AB列中使用ScanForColor函数来保存过滤文档的值.

sorting excel function colors range

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