这意味着您尝试访问仅包含一项(索引 0)的数组中的第二项(索引 1)。
我的代码做了一些更复杂的事情,但非常相似。我所做的是在对话框关闭时创建并写入带有空白 ContactID 的电子邮件条目。然后,当我提交联系表单时,我会看到一个包含电子邮件 ID 的字段。在“联系人保存”操作中,我检查电子邮件记录,如果 contactID 字段为空,则插入 ContactID 并保存电子邮件记录。我使用相同的部分视图来创建和编辑,因此如果是编辑现有电子邮件,或向现有联系人添加新电子邮件,则 ContactID 字段已填充。
在这个简单的情况下,当用户关闭对话框以将信息保存到父表单上的隐藏字段时可能更有意义(如果您不希望它们显示,如果您确实希望它们显示,那么 Ryan 的建议是最好的)并且然后在联系人提交中创建并保存这两条记录。
如果这是“创建”,那么我真的不明白为什么你需要 AJAX 请求来获取值......
马丁·卡尔曼的想法似乎是最好的方法,因为你没有自然地形来定义一些边界。在您的边界内生成随机点,然后将它们纳入国家边界。我可能会更进一步,比所需的国家/地区提出更多的点,然后合并几个相邻的单元格以使一些结果区域凹入。您可以使用类似于随机 Kruskal 的算法来执行合并(获取所有国家/地区,合并两个相邻国家/地区,重复直到获得所需的总数)。我无法访问 Kylotan 的链接,但它可能描述了一种更好的方法来合并由 Voronoi 生成的单元格。
如果您使用 AJAX 执行此操作,则可能需要处理 XSS 问题。也许您需要为您的应用程序编写一个可以从其他应用程序使用的简单 API。这对 Rails 来说并不困难,您可以从一些好的控制器抽象中获得帮助,例如 inherited_resources。
在某些时候,外部应用程序将使用 AJAX 向自身发送表单,并处理它并使用 JSON 或 XML...或任何您想要的格式将其发送到您的 Rails 应用程序。
我认为您应该预处理数据并创建一个结构,列出网格中矩形区域的可能多边形。这样,您可以减少必须检查点的多边形,并且附加结构将适合内存,因为它只有指向多边形的指针。
这是一张图片来说明:
你想要检查黄点位于哪个多边形。您通常会检查所有多边形,但通过网格优化(橙色线,没有绘制整个网格,仅绘制其字段之一),您只需检查填充的多边形因为它们都在或部分在网格区域内。
类似的方法是不将所有多边形数据存储在内存中,而只存储多边形边界框,每个多边形只需要 2 个而不是 3 个 X/Y 对(以及指向实际多边形数据的附加指针),但这没有第一个建议节省那么多空间。
如果在视觉模式下拉动,您还可以使用 '>
或 `>
转到刚刚拉动的视觉选择的最后一行/字符。在这种情况下,这本质上与 ']
和 `]
相同,这显然在 VsVim 等中不受支持。
我可以想到 3 个可能的问题:
- 当通过较低的 php 系统调用读取/写入文件时,文件被锁定,而您却不知道。这应该会阻止文件最多 1/3 秒。你的经期会比那个更长。
- fs 缓存启动 fsync(),整个系统会阻止对磁盘的读/写,直到完成为止。作为修复,您可以尝试安装更多 RAM 或升级内核或使用更快的硬盘,
- 您的“缓存”解决方案未分发,并且它每秒多次撞击整个系统中表现最差的硬件......这意味着您不能通过简单地添加更多机器来进一步扩展它,只能通过提高硬盘速度。您应该看看 memcache 或 APC,甚至可能是共享内存 http://www.php.net/manual/en/function.shm-put-var.php
我能想到的解决方案:
- 将该文件放入 ramdisk http://www.cyberciti.biz/faq/howto-create-linux-ram-disk-filesystem / 。这应该是避免频繁访问磁盘的最简单方法,无需其他重大更改。
- 使用内存缓存。在本地使用时速度非常快,扩展性良好,被“大”玩家使用。 http://www.php.net/manual/en/book.memcache。 php
- 使用共享内存。它是为您在这里尝试做的事情而设计的...具有“共享内存区域”...
- 更改 cron 调度程序以减少更新,也许实现某种事件系统,因此它只会在必要时更新缓存,并且不按时间
- 使“写入”脚本写入3个不同的文件,并让“读者”随机地从其中一个文件读取。这可能允许在更多文件中“分布”查找,并且可能会减少某个文件在写入时被锁定的机会......但我怀疑它会带来任何明显的好处。
那么,最好的方法是在创建主记录时创建关联记录:
class User < ActiveRecord::Base
has_one :preference_set, :autosave => true
before_create :build_preference_set
end
这将对其进行设置,以便每当创建 User
时,PreferenceSet
也会创建。如果您需要使用参数初始化关联记录,请在 before_create
中调用不同的方法,该方法调用 build_preference_set(:my_options => "here")
然后返回 <代码> true。
然后,您可以通过迭代任何没有 PreferenceSet
的记录并通过调用 #create_preference_set
构建一个来标准化所有现有记录。
如果您只想在绝对需要时创建 PreferenceSet
,那么您可以执行以下操作:
class User < ActiveRecord::Base
has_one :preference_set
def preference_set_with_initialize
preference_set_without_initialize || build_preference_set
end
alias_method_chain :preference_set, :initialize
end
发现这个 http://www.prettyklicks.com/blog/making-a-facebook-feed-using-the-graph-api-json-and-jquery/291/ 教程真正解决了问题。
只是把它放在这里以防其他人需要它。
如果是单行,请尝试以下操作:
android:ellipsize="end"
android:maxLines="1"
android:scrollHorizontally="true"
android:singleLine="true"
它对我有用。
这使用了递归:
def is_sorted(lst):
if len(lst) == 1:
return True
return lst[0] <= lst[1] and is_sorted(lst[1:])
some_list = [1,2,3,4]
print(is_sorted(some_list))
请注意,对于长序列,这将引发RuntimeError:超出最大递归深度
。
我找到了...
myDataView.RowFilter = "Convert(Time, System.String) <> ''";
您可以使用 ContentInterator 来帮助访问大型列表中的 5,000 多个项目,而不会达到列表限制并收到 SPQueryThrottleException。
ContentIterator 实现了一种回调模式,用于对查询进行分段,以便一次处理单个项目。如果您需要处理大量可能超出限制的项目,请考虑使用此功能
You can use ContentInterator which help with accessing more than 5,000 items in a large list without hitting a list throttling limit and receiving an SPQueryThrottleException.
ContentIterator implements a callback pattern for segmenting the query for processing a single item at a time. Consider using this capability if you need to process a large number of items that may exceed a throttling limit
如何在启用限制的情况下从大列表中获取数据?