我正在使用会话存储将数据保存到会话中.我的initializers/session_store.rb看起来像:
::Application.config.session_store :active_record_store
Run Code Online (Sandbox Code Playgroud)
将数据添加到会话代码:
book = Book.find(1)
session[:abc] = book
Run Code Online (Sandbox Code Playgroud)
我在不同的页面访问此会话数据.访问会话数据:
book = session[:abc]
Run Code Online (Sandbox Code Playgroud)
问题是我的会话数据没有在重定向之间保留.可能是什么问题呢?
我可以看到我的会话正在按预期保存数据,但是当重定向发生时它会丢失一些数据,如果再次重定向则会丢失更多数据.令人沮丧的是.
我试图将数据从控制器传递给javascript.这是你如何做到的,
respond_to do |format|
format.html
format.json { render json: {data: @data} }
end
Run Code Online (Sandbox Code Playgroud)
然后在您的视图文件中,您应该这样做:
<%= javascript_tag do%>
window.data = <%= raw @data.to_json %>
<%end%>
<script>
for( i = 0; i < data.length; i++ ) {
alert(data[i]);
}
</script>
Run Code Online (Sandbox Code Playgroud)
合理.对?
但是,上面的代码是在json代码中只传递一个变量,即数据变量.我需要做的是将多个变量传递给我的javascript代码.
应该这样做:
respond_to do |format|
format.html
format.json { render json: {data: @data, data1: @data1, data2: @data2} }
end
Run Code Online (Sandbox Code Playgroud)
现在, - 我应该如何访问视图文件中的data1和data2变量? - 我需要修改window.data吗?我尝试了下面的代码但它没有成功.给我参数错误.
<%= javascript_tag do%>
window.data = <%= raw @data.to_json, @data1.to_json %>
<%end%>
Run Code Online (Sandbox Code Playgroud)
任何线索将不胜感激.
干杯!
我们有48,16,703个这种格式的条目.
1 abc
2 def
...
...
4816702 blah
4816703 blah_blah
Run Code Online (Sandbox Code Playgroud)
由于条目数量非常大,我担心std :: map在插入过程中会花费很多时间,因为它需要为每次插入进行平衡.
只将这些条目插入地图需要花费大量时间.我在做
map[first] = second;
Run Code Online (Sandbox Code Playgroud)
两个问题:1.我是否正确使用std :: map来处理这类案件?我是否正确插入如上所述.或者我应该使用map.insert()
我很抱歉没有做实验并写出绝对数字,但如果我们做的是正确的话,我们希望得到普遍的共识.
此外,他们的钥匙不是连续的..
PS当然,稍后我们还需要访问该地图以获取与键对应的值.
这是我最后一个问题的延续。我无法理解向量占用的内存。问题骨架:
考虑一个向量,它是列表的集合,而列表是指针的集合。就像:
std::vector<std::list<ABC*> > vec;
Run Code Online (Sandbox Code Playgroud)
ABC是我的班级。我们在64位计算机上工作,因此指针的大小为8个字节。
在项目流程的开始,我将此向量的大小调整为一个数字,以便可以将列表存储在各个索引处。
vec.resize(613284686);
Run Code Online (Sandbox Code Playgroud)
此时,向量的容量和大小将为613284686。对。调整大小后,我将列表插入相应的索引为:
// Some where down in the program, make these lists. Simple push for now.
std::list<ABC*> l1;
l1.push_back(<pointer_to_class_ABC>);
l1.push_back(<pointer_to_class_ABC>);
// Copy the list at location
setInfo(613284686, l1);
void setInfo(uint64_t index, std::list<ABC*> list>) {
std::copy(list.begin(), list.end(), std::back_inserter(vec.at(index));
}
Run Code Online (Sandbox Code Playgroud)
好的。这样插入就完成了。值得注意的是:
向量的大小为:613284686向量中的条目为:3638243731 //通过遍历向量索引并在每个索引处添加std :: lists的大小来计算得出。
现在,由于有3638243731个指针条目,因此我希望此向量占用的内存约为30Gb。3638243731 * 8(字节)=〜30Gb
但是但是当我将这些数据存储在内存中时,内存峰值将达到400G。
然后我用以下方法清除此向量:
std::vector<std::list<nl_net> >& ccInfo = getVec(); // getVec defined somewhere and return me original vec.
std::vector<std::list<nl_net> >::iterator it = ccInfo.begin();
for(; it != ccInfo.end(); ++it) { …Run Code Online (Sandbox Code Playgroud) 伙计们,
我的html中有两个文本框.我想用咖啡脚本比较他们的价值观.虽然我已经开始搜索它,但我确信我正在做预期的事情,但我仍然看到一种奇怪的行为.
事情是:
可以说,我有两个文本框,其id为"title"和"author".除此之外,我还有一个onclick触发咖啡脚本功能的按钮.
我的咖啡脚本功能如下:
check_fields = ->
elem_book_title = $("#title").val()
elem_book_author = $("#author").val()
alert(elem_book_title)
alert(elem_book_author)
if not elem_book_title?
alert("title is null")
else if not elem_book_author?
alert("author is null")
else
alert("both are ok")
Run Code Online (Sandbox Code Playgroud)
情况是,如果我只在我的"标题"文本框中输入内容,它应该提醒我"作者为空".对?但令人惊讶的是,它提醒我"两者都可以".预计?或者我错过了什么?
c++ ×2
javascript ×2
coffeescript ×1
hashmap ×1
jquery ×1
json ×1
performance ×1
session ×1
vector ×1