问题列表 - 第15114页

对接口和同步集合进行编程

这个问题涉及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接口的实现.对我来说,这似乎是前进的方向.

从本质上讲,似乎某些同步实现在集合框架中有点不合适,因为在对接口进行编程时,同步问题几乎迫使人们考虑底层实现.

我完全忽略了这一点吗?

谢谢.

java synchronization data-structures

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

验证habtm关联的长度而不保存

我有一个与组有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

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

隐式类型变量出错

将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# linq

3
推荐指数
2
解决办法
8580
查看次数

使用抽象类来实现派生类的元素堆栈

我必须在我的大学进行基础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)

c++ virtual stack abstract-class derived-class

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

以编程方式确定Youtube视频是否已被删除

我从YouTube(以嵌入式播放器的形式)获得Rap Exegesis上的大部分音乐.不幸的是,我正在使用的其中一个视频将被删除(由于版权问题或其他原因),从而打破了我网站上的相应页面.

理想情况下,我会有一个cronjob,可以检查(每晚说)是否有任何视频被删除并通知我.最好的方法是什么?

youtube youtube-api

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

我可以修复损坏的Visual Studio 2008工具栏/窗口而无需重新安装吗?

我认为我在本地安装的Visual Studio 2008已经有点滑板了.

  • 当我正在调试时,我无法查看"Watch"窗口 - 当我点击它时我会看到一个窗口然后它消失了.
  • 没有什么东西可以留在它应该的位置 - "Watch 2"窗口想要留在另一台显示器上,间歇地有一两个或两者都没有,等等.
  • 现在屏幕底部有一个大的灰色区域,每次我按Alt + Tab键都会改变形状

任何人都知道一个很好的方法来修复或"重置"VS2008中的所有内容而无需重新安装?

visual-studio-2008

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

如何使用PHP对JSON产品进行排序

如何通过说"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"}

php sorting json

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

分组密码SALT:明文或秘密?

网上有很多文章和引言说"盐"必须保密.即使是关于Salt的维基百科条目:

为了最好的安全性,salt值保密,与密码数据库分开.当数据库被盗时,这提供了一个优势,但盐却没有.要从被盗的哈希中确定密码,攻击者不能简单地尝试使用常用密码(例如英语单词或名称).相反,他们必须计算随机字符的哈希值(至少对于他们知道的输入部分是盐),这要慢得多.

因为我碰巧知道加密盐(或初始化向量)可以与加密文本一起存储在明文上,我想问为什么这种误解会持续存在

我的观点是,问题的根源是加密盐(分组密码的初始化向量)和散列"盐" 之间的常见混淆.在存储散列密码时,通常的做法是添加一个nonce或'salt',并且(略微)确认这个'salt'最好保密.这反过来又使得它不是一个盐在所有,但一个关键,类似于多明确命名的秘密HMAC.如果你看文章存储密码 - 完成正确!这是从维基百科'盐'条目链接,你会看到这是在谈论这种'盐',密码哈希.我碰巧不同意大多数这些方案,因为我认为密码存储方案也应该允许HTTP摘要验证,在这种情况下唯一可能的存储是用户名的HA1摘要:realm:password,请参阅在表中存储密码和摘要式身份验证.

如果您对此问题有意见,请在此处作为回复发布.

  1. 你认为应该隐藏用于分组密码加密的盐吗?解释原因和方式.
  2. 您是否同意全面声明"盐应该隐藏"来源于盐渍哈希并且不适用于加密?
  3. 我们可以在讨论中包含流密码(RC4)吗?

encryption cryptography

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

Python:我怎么知道方法调用可能抛出哪些异常

有没有办法知道(在编码时)执行python代码时会遇到哪些异常?我最终会在90%的时间内捕获基本Exception类,因为我不知道可能抛出哪种异常类型(并且不要告诉我阅读文档.很多时候,异常可以从深层传播.文档未更新或更正的时间).有什么工具可以检查吗?(比如通过阅读python代码和库)?

python exception

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

如何在Oracle中高效地计算坐标之间的距离

我有一个大型Oracle数据库(720,000条记录aprox),其中每条记录都有自己的地理坐标(lat&lng),我只需要选择距离某一点(特定半径内)特定距离的记录.

目前我已经实现了在oracle论坛中找到的距离函数(基于hasrsine),但由于数据库有点大,每次选择花费大约50秒.

关于如何有效地做任何建议?我知道有一个名为oracle spatial&locator的扩展,但我不知道我是否可以购买它甚至它是如何工作的.非常感谢提前.最好的祝福

oracle gps geo

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