相关的IEEE标准定义了一个数字常量NaN(不是数字),并规定NaN应该比较为不等于它自己.这是为什么?
我熟悉的所有语言都实现了这个规则.但它经常会导致严重的问题,例如当NaN存储在容器中时,NaN存在于正在排序的数据中等时的意外行为等.更不用说,绝大多数程序员都希望任何对象都等于自身(在他们了解NaN之前,令人惊讶的是他们增加了错误和混乱.
IEEE标准经过深思熟虑,因此我确信NaN的比较与其本身相同是很糟糕的.我只是想不通它是什么.
我正在尝试为应用程序运行服务器,但我在登录时遇到错误:
[!] Object '<User at 0x7f12bc185a90>' is already attached to session '2' (this is '3')
Run Code Online (Sandbox Code Playgroud)
我正在添加的会话似乎已经存在于数据库中.这是导致问题的代码片段:
@app.route('/login', methods=['POST'])
def login():
u = User.query.filter(User.username == request.form["username"]).first()
if not u or u.password != request.form["password"]:
return error("E1")
s = Session.get_by_user(u)
if s is not None:
db_session.delete(s)
db_session.commit()
print db_session.execute("SELECT * FROM sessions").fetchall()
s = Session(u)
db_session.add(s)
db_session.commit()
return jsonify(s.values)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我在尝试添加任何内容之前从会话表中打印内容,它是空的!([])
还有什么可能导致这个?
这是"会话"实施:
class Session(Base):
__tablename__ = "sessions"
id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey('users.id'), unique=True)
user = relationship(User)
key = Column(String(50), unique=True) …Run Code Online (Sandbox Code Playgroud) 如果我从Mac调用命令
echo hello | shasum -a 256
Run Code Online (Sandbox Code Playgroud)
或者来自ubuntu
echo hello | sha256sum
Run Code Online (Sandbox Code Playgroud)
然后我得到以下结果
5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03 -
Run Code Online (Sandbox Code Playgroud)
我注意到最后有冲刺.
但是当我使用Python hashlib或Java时java.security.MessageDigest,它们会给我相同的结果如下:
2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
Run Code Online (Sandbox Code Playgroud)
所以,有人能指出我错在哪里吗?
谢谢.
蟒蛇:
>>> import hashlib
>>> hashlib.sha256("hello").hexdigest()
Run Code Online (Sandbox Code Playgroud)
Java的:
MessageDigest md = MessageDigest.getInstance("SHA-256");
String text = "hello";
md.update(text.getBytes("UTF-8"));
byte[] digest = md.digest();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < digest.length; i++) {
sb.append(String.format("%02x", digest[i] & 0xFF))
}
System.out.println(sb.toString());
Run Code Online (Sandbox Code Playgroud) 如何multiple-cursors在Emacs中插入包的数字序列?
例如:
aa| aa1
aa| => aa2
aa| aa3
Run Code Online (Sandbox Code Playgroud) import sys
def end():
foo=raw_input()
sys.exit()
print 'Press enter to Exit python and Terminal'
end()
Run Code Online (Sandbox Code Playgroud)
当我们运行程序时,我们应该能够退出Python解释器和终端本身.但它只退出python解释器,而不是终端.
提前致谢.
我正在尝试解决一个问题,我给出了一个数组,例如[0,0,1,1,2,2,6,6,9,10,10],其中所有数字都重复两次,不包括一个数字,我需要返回不重复的数字.
我想这样做:
def findNumber(self, nums):
if (len(nums) == 1):
return nums[0]
nums_copy = nums[:]
for i in nums:
nums_copy.remove(i)
if i not in nums:
return i
else:
nums_copy.remove(i)
Run Code Online (Sandbox Code Playgroud)
但是当它到达else语句时,会出现以下错误:
ValueError:list.remove(x):x不在列表中
这是在i进入时发生的nums_copy,所以我不明白为什么在这种情况下会发生这种错误?
我在用mock.patch.
这是一个测试用例:
在parent.py:
import mock
class Parent():
def __init__(self):
print("Original recipe")
Run Code Online (Sandbox Code Playgroud)
在child.py:
from parent import Parent
class Child(Parent):
def foo(self):
print('Parent is {}'.format(Parent))
Run Code Online (Sandbox Code Playgroud)
在test.py:
import mock
from child import Child
c = Child() # expect 'Original recipe'
c.foo()
with mock.patch('child.Parent'):
c = Child() # expect silence
c.foo()
Run Code Online (Sandbox Code Playgroud)
当我跑步时,test.py我希望得到:
Original recipe
Parent is <class 'parent.Parent'>
Parent is <MagicMock name='Parent' id='4325705712'>
Run Code Online (Sandbox Code Playgroud)
但我得到:
Original recipe
Parent is <class 'parent.Parent'>
Original recipe
Parent is …Run Code Online (Sandbox Code Playgroud) 我只是javaScript的初学者,拥有python的背景.我正在尝试这个练习来检查string2的每个字符是否都包含在string1中.例如,如果STRING1是"你好",我会回来true,如果字符串2是"列城"的false,如果字符串2为"低".
我提出的是这个:
function mutation(arr) {
var set = new Set(string1.split(''));
for (var i = 0; i < string2.length; i++)
if (!set.has(string2[i]))
return false;
return true;
}
Run Code Online (Sandbox Code Playgroud)
我还可以去转换字符串2为一组,然后就采取即操作的差异set(string2) - set(string1),这将取我的一组是包含字符串,但不是在字符串1个字符,但我读创建一组是昂贵的,所以我没有去先.
我检查了其他解决方案,每个人都在使用string1.indexOf(letter)方法来检查string2中的每个字母是否都在string1中.
我想知道什么时候应该使用一组差异.为什么每个人都在使用array.indexOf()花费O(n)而不是set.has()O(1)的方法的方法.如果我正在使用,是否有任何陷阱set.has().(说浏览器兼容性)?
任何建议都有帮助.
许多网站为可下载文件添加 md5 校验和,以便用户可以根据下载文件的 md5 验证字符串。有人可以修改原始文件的内容但仍保留原始 md5 校验和吗?
python ×5
python-3.x ×3
cryptography ×2
hash ×2
python-2.7 ×2
algorithm ×1
arrays ×1
c ×1
emacs ×1
ieee-754 ×1
indexof ×1
javascript ×1
lcd ×1
linux ×1
md5 ×1
mocking ×1
nan ×1
session ×1
set ×1
sha256 ×1
sqlalchemy ×1
stm32 ×1
terminal ×1