标签: identity

为什么使用'=='或'is'比较字符串有时会产生不同的结果?

我有一个Python程序,其中两个变量设置为该值'public'.在条件表达式中,我的比较var1 is var2失败了,但是如果我将其更改为var1 == var2它则返回True.

现在,如果我打开我的Python解释器并进行相同的"是"比较,它就会成功.

>>> s1 = 'public'
>>> s2 = 'public'
>>> s2 is s1
True
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

python string comparison identity equality

1076
推荐指数
13
解决办法
148万
查看次数

Java中==和equals()之间有什么区别?

我想澄清一下我是否理解正确:

  • == - >是参考比较,即两个对象都指向相同的内存位置
  • .equals() - >计算对象中值的比较

我的理解是正确的吗?

java identity equality object-comparison

592
推荐指数
12
解决办法
62万
查看次数

"是"运算符与整数意外行为

为什么以下在Python中出现意外行为?

>>> a = 256
>>> b = 256
>>> a is b
True           # This is an expected result
>>> a = 257
>>> b = 257
>>> a is b
False          # What happened here? Why is this False?
>>> 257 is 257
True           # Yet the literal numbers compare properly
Run Code Online (Sandbox Code Playgroud)

我使用的是Python 2.5.2.尝试一些不同版本的Python,似乎Python 2.3.3显示了99到100之间的上述行为.

基于以上所述,我可以假设Python在内部实现,使得"小"整数以不同于大整数的方式存储,is运算符可以区分.为什么泄漏抽象?当我不知道它们是否是数字时,比较两个任意对象以查看它们是否相同的更好的方法是什么?

python int identity operators python-internals

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

SQL Server Management Studio 2012中的自动增量主键

我如何auto incrementprimary key一个SQL Server数据库表,我已经通过论坛看看,但不能看到.

我查看了属性,但看不到一个选项,我看到了一个答案,你去了Identity规范属性并将其设置为是并设置Identity increment为1,但该部分显示为灰色,我无法更改不,是的.

必须有一个简单的方法来做到这一点,但我找不到它.

sql-server identity sql-server-2012

416
推荐指数
7
解决办法
104万
查看次数

JPA hashCode()/ equals()两难

这里有一些 关于JPA实体的讨论,以及哪些hashCode()/ equals()实现应该用于JPA实体类.大多数(如果不是全部)它们依赖于Hibernate,但我想讨论它们JPA实现中性(顺便说一下,我使用的是EclipseLink).

所有可能的实现都有各自的优点缺点:

  • hashCode()/equals()合同一致性(不变性)为List/ Set操作
  • 是否可以检测到相同的对象(例如来自不同会话,来自延迟加载的数据结构的动态代理)
  • 实体是否在分离(或非持久)状态下正常运行

据我所知,有三种选择:

  1. 不要覆盖它们; 依靠Object.equals()Object.hashCode()
    • hashCode()/ equals()工作
    • 无法识别相同的对象,动态代理的问题
    • 分离实体没有问题
  2. 根据主键覆盖它们
    • hashCode()/ equals()坏了
    • 正确的身份(适用于所有管理实体)
    • 分离实体的问题
  3. 根据Business-Id(非主键字段;外键怎么办?)覆盖它们.
    • hashCode()/ equals()坏了
    • 正确的身份(适用于所有管理实体)
    • 分离实体没有问题

我的问题是:

  1. 我错过了一个选项和/或pro/con点吗?
  2. 您选择了什么选项?为什么?



更新1:

通过" hashCode()/ equals()被破坏",我的意思是连续hashCode()调用可能会返回不同的值,也就是(当正确实施)不在的感觉打破ObjectAPI文档,但是当试图从检索改变实体引起的问题Map, Set或其他基于哈希的Collection.因此,在某些情况下,JPA实现(至少EclipseLink)将无法正常工作. …

java identity hibernate jpa eclipselink

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

ASP.NET MVC 5 - 身份.如何获取当前的ApplicationUser

我的项目中有一个Article实体,其中包含ApplicationUser名为的属性Author.如何获取当前记录的完整对象ApplicationUser?在创建新文章时,我必须将Author属性设置Article为当前属性ApplicationUser.

在旧的成员机制中它很简单,但在新的身份识别方法中,我不知道如何做到这一点.

我试着这样做:

  • 为身份扩展添加using语句: using Microsoft.AspNet.Identity;
  • 然后我尝试获取当前用户: ApplicationUser currentUser = db.Users.FirstOrDefault(x => x.Id == User.Identity.GetUserId());

但我得到以下异常:

LINQ to Entities无法识别方法'System.String GetUserId(System.Security.Principal.IIdentity)'方法,并且此方法无法转换为商店表达式.来源=的EntityFramework

c# identity asp.net-mvc-5 asp.net-identity

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

如何获取覆盖hashCode()的对象的唯一ID?

当Java中的类不覆盖hashCode()时,打印此类的实例会给出一个很好的唯一编号.

对象的Javadoc说关于hashCode():

尽可能合理,Object类定义的hashCode方法确实为不同的对象返回不同的整数.

但是当类重写hashCode()时,我怎样才能获得它的唯一编号?

java identity hashcode

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

Scope_Identity(),Identity(),@@ Identity和Ident_Current()之间有什么区别?

我知道Scope_Identity(),Identity(),@@Identity,并且Ident_Current()都得到标识列的值,但我很想知道其中的差别.

我所遇到的部分争议是它们对于适用于上述这些功能的范围意味着什么?

我还想了一个使用它们的不同场景的简单例子吗?

sql sql-server identity

171
推荐指数
7
解决办法
12万
查看次数

如何以编程方式更改标识列值?

我有一个Test带有列的表的MS SQL 2005数据库ID.ID是一个标识列.

我在这个表中有行,并且所有行都有相应的ID自动增量值.

现在我想更改此表中的每个ID,如下所示:

    ALTER TABLE Test NOCHECK CONSTRAINT ALL 
    set identity_insert ID ON
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时,我收到一个错误:

    ALTER TABLE Test NOCHECK CONSTRAINT ALL 
    set identity_insert ID ON
Run Code Online (Sandbox Code Playgroud)

我试过这个:

    ALTER TABLE Test NOCHECK CONSTRAINT ALL 
    set identity_insert ID ON
Run Code Online (Sandbox Code Playgroud)

但这并没有解决问题.

我需要将标识设置为此列,但我还需要不时更改值.所以我的问题是如何完成这项任务.

t-sql sql-server identity sql-server-2005 sql-server-2005-express

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

SQL Server 2012列标识增量在第7个条目上从6跳到1000+

我有一个奇怪的情况,我的SQL Server 2012数据库中的自动标识int列没有正确递增.

假设我有一个使用int自动标识作为主键的表,它偶尔会跳过增量,例如:

1,2,3,4,5,1004,1005

这是在随机数量的随机时间表上发生的,无法复制它以查找任何趋势.

这是怎么回事?有办法让它停止吗?

sql sql-server identity sql-server-2012

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