这个问题涉及Java集合 - 特别是Hashtable和Vector - 但也可能适用于其他地方.
我在很多地方都读到了编程接口的好处,我同意100%.例如,在不考虑底层实现的情况下编程到List接口的能力肯定有助于解耦和测试目的.考虑到内部存储结构,随机访问时间等方面的差异,我可以看到ArrayList和LinkedList如何在不同的环境下应用.但是,这两个实现可以在同一个接口下使用...是很棒的.
我似乎无法放置的是某些同步实现(特别是Hashtable和Vector)如何适应这些接口.对我来说,他们似乎不适合这个模型.大多数底层数据结构实现似乎在数据存储方式(LinkedList,Array,排序树等)方面有所不同,而同步则处理可以访问数据的条件(锁定条件).让我们看一个方法返回Map集合的示例:
public Map<String, String> getSomeData();
Run Code Online (Sandbox Code Playgroud)
让我们假设应用程序完全不关心并发性.在这种情况下,我们对该方法通过接口返回的任何实现进行操作......每个人都很高兴.世界是稳定的.
但是,如果应用程序现在需要关注并发前端怎么办?我们现在无法在不考虑底层实现的情况下运行 - Hashtable会很好,但其他实现必须满足.让我们考虑3种情况:
1)在使用集合添加/删除时,使用同步块等强制执行同步.但是,如果返回同步实现(Hashtable),这不会是过度杀伤吗?
2)更改方法签名以返回Hashtable.然而,这将我们与Hashtable实现紧密联系在一起,因此,编程到界面的优势被抛到了窗外.
3)利用并发包并更改方法签名以返回ConcurrentMap接口的实现.对我来说,这似乎是前进的方向.
从本质上讲,似乎某些同步实现在集合框架中有点不合适,因为在对接口进行编程时,同步问题几乎迫使人们考虑底层实现.
我完全忽略了这一点吗?
谢谢.
我有一个与组有HABTM关系的用户模型.我不希望用户能够在5个以上的组中,所以想要验证HABTM关系的长度.
在编辑用户页面上,我有一个复选框列表,用户可以在其中选择他们想要的组(我正在使用formtastic作为表单).
在我的用户控制器中我打电话:
@user.update_attributes(params[:user])
Run Code Online (Sandbox Code Playgroud)
这导致rails自动更新关联.
在我的用户模型中,我有以下内容:
def validate
if self.groups.length > 5
self.errors.add(:groups, "cannot have more than 5 groups")
end
end
Run Code Online (Sandbox Code Playgroud)
这导致表单验证失败,但update_attributes调用已更新数据库以反映对关联组的更改.这样,每次用户单击"保存"按钮时,即使记录无效,也会保存其组关联.
解决这个问题的最佳方法是什么?
我想也许验证需要在组模型而不是用户模型上,这会起作用吗?理想情况下,我想更新关联的组而不保存记录,进行验证,然后保存记录.
validation activerecord ruby-on-rails has-and-belongs-to-many
将linq选择分配给隐式类型的局部变量"var"时,我收到以下错误.
Error :Cannot assign method group to an implicitly-typed local variable
在
root : var mailgroup = emails.Where(p =>IsValidFormat(p.Value)).Select;
Run Code Online (Sandbox Code Playgroud)
元素字典
Dictionary<int, string> emails = new Dictionary<int, string>();
emails.Add(1, "Marry@yahoo.com");
emails.Add(2, "Helan@gmail.com");
emails.Add(3, "Rose");
emails.Add(4, "Ana");
emails.Add(5, "Dhia@yahoo.com");
Dictionary<int, string> dc = new Dictionary<int, string>();
Run Code Online (Sandbox Code Playgroud)
怎么纠正呢?
我必须在我的大学进行基础C++讲座,所以要明确一点:如果我被允许,我会使用STL.
问题:我有一个名为"shape3d"的类,我从中派生出类"cube"和"sphere".现在我必须实现"shape3d_stack",这意味着能够保存"cube"和"sphere"类型的对象.我使用了数组,当我尝试使用一堆int时,它运行得很好.我试着这样做:
shape3d_stack.cpp:
15 // more stuff
16
17 shape3d_stack::shape3d_stack (unsigned size) :
18 array_ (NULL),
19 count_ (0),
20 size_ (size)
21 { array_ = new shape3d[size]; }
22
23 // more stuff
Run Code Online (Sandbox Code Playgroud)
但是,不幸的是,编译器告诉我:
g++ -Wall -O2 -pedantic -I../../UnitTest++/src/ -c shape3d_stack.cpp -o shape3d_stack.o
shape3d_stack.cpp: In constructor ‘shape3d_stack::shape3d_stack(unsigned int)’:
shape3d_stack.cpp:21: error: cannot allocate an object of abstract type ‘shape3d’
shape3d.hpp:10: note: because the following virtual functions are pure within ‘shape3d’:
shape3d.hpp:16: note: virtual double shape3d::area() const
shape3d.hpp:17: note: virtual double …Run Code Online (Sandbox Code Playgroud) 我从YouTube(以嵌入式播放器的形式)获得Rap Exegesis上的大部分音乐.不幸的是,我正在使用的其中一个视频将被删除(由于版权问题或其他原因),从而打破了我网站上的相应页面.
理想情况下,我会有一个cronjob,可以检查(每晚说)是否有任何视频被删除并通知我.最好的方法是什么?
我认为我在本地安装的Visual Studio 2008已经有点滑板了.
任何人都知道一个很好的方法来修复或"重置"VS2008中的所有内容而无需重新安装?
如何通过说"id:17 value:###"对这两种产品进行排序
{ "ID": "16", "值": "L-AOC000"},{ "ID": "17", "值": "6.00"},{ "ID": "18", "值" : "10.00"},{ "ID": "19", "值": "7.52"},{ "ID": "20", "值": "4.75"},{ "ID": "21" "值": "3.50"}
{ "ID": "16", "值": "L-AOC001"},{ "ID": "17", "值": "7.00"},{ "ID": "18", "值" : "11.00"},{ "ID": "19", "值": "6.52"},{ "ID": "20", "值": "5.75"},{ "ID": "21" "值": "4.50"}
网上有很多文章和引言说"盐"必须保密.即使是关于Salt的维基百科条目:
为了最好的安全性,salt值保密,与密码数据库分开.当数据库被盗时,这提供了一个优势,但盐却没有.要从被盗的哈希中确定密码,攻击者不能简单地尝试使用常用密码(例如英语单词或名称).相反,他们必须计算随机字符的哈希值(至少对于他们知道的输入部分是盐),这要慢得多.
因为我碰巧知道加密盐(或初始化向量)可以与加密文本一起存储在明文上,我想问为什么这种误解会持续存在?
我的观点是,问题的根源是加密盐(分组密码的初始化向量)和散列"盐" 之间的常见混淆.在存储散列密码时,通常的做法是添加一个nonce或'salt',并且(略微)确认这个'salt'最好保密.这反过来又使得它不是一个盐在所有,但一个关键,类似于多明确命名的秘密在HMAC.如果你看文章存储密码 - 完成正确!这是从维基百科'盐'条目链接,你会看到这是在谈论这种'盐',密码哈希.我碰巧不同意大多数这些方案,因为我认为密码存储方案也应该允许HTTP摘要验证,在这种情况下唯一可能的存储是用户名的HA1摘要:realm:password,请参阅在表中存储密码和摘要式身份验证.
如果您对此问题有意见,请在此处作为回复发布.
有没有办法知道(在编码时)执行python代码时会遇到哪些异常?我最终会在90%的时间内捕获基本Exception类,因为我不知道可能抛出哪种异常类型(并且不要告诉我阅读文档.很多时候,异常可以从深层传播.文档未更新或更正的时间).有什么工具可以检查吗?(比如通过阅读python代码和库)?
我有一个大型Oracle数据库(720,000条记录aprox),其中每条记录都有自己的地理坐标(lat&lng),我只需要选择距离某一点(特定半径内)特定距离的记录.
目前我已经实现了在oracle论坛中找到的距离函数(基于hasrsine),但由于数据库有点大,每次选择花费大约50秒.
关于如何有效地做任何建议?我知道有一个名为oracle spatial&locator的扩展,但我不知道我是否可以购买它甚至它是如何工作的.非常感谢提前.最好的祝福
activerecord ×1
c# ×1
c++ ×1
cryptography ×1
encryption ×1
exception ×1
geo ×1
gps ×1
java ×1
json ×1
linq ×1
oracle ×1
php ×1
python ×1
sorting ×1
stack ×1
validation ×1
virtual ×1
youtube ×1
youtube-api ×1