小编zer*_*uno的帖子

会话[:food]和cookies.permanent [:food]之间的区别

session[:food]="pizza"cookies.permanent[:food]=pizza?之间有什么区别?
我试着阅读rails文档,它说:

Rails 2引入了一个新的默认会话存储CookieStore.CookieStore将会话哈希直接保存在客户端的cookie中.

然后我不明白,如果会话[:food]保存在cookie中,所以cookies.permanent [:food]会这样做,有什么区别?

cookies session ruby-on-rails

6
推荐指数
2
解决办法
5407
查看次数

关于 JIT 编译器和解释器的说明

我对 JIT 编译器和解释器有一些疑问。从它们的定义开始:

(翻译)来自维基百科:

在计算机科学中,解释器是直接执行(即执行)以编程或脚本语言编写的指令的计算机程序,无需事先将它们批量编译成机器语言。解释器通常使用以下策略之一来执行程序:
1) 解析源代码并直接执行其行为
2) 将源代码转换为一些有效的中间表示并立即执行
3) 显式执行存储的预编译代码 [1]作为解释器系统一部分的编译器

(JIT 编译器)来自维基百科:

在计算中,即时编译 (JIT),也称为动态翻译,是在程序执行期间(在运行时)而不是在执行之前完成的编译。 [1] 大多数情况下,这包括转换为机器代码,然后直接执行,但也可以指转换为另一种格式。

和来自 StackOverFlow:

即时编译是将非本地代码(例如字节码)在执行之前转换为本地代码。

我有 4 个问题:
1) 总是说 JIT=runtime,为什么解释器在运行时不起作用?当程序运行时,解释器不是在运行时翻译和执行每一行吗?
2) 总是说 JIT 将非本地代码转换为本地代码,那又怎样?解释器不会将代码转换为本机代码吗?如果指令未转换为本地代码,我的进程如何执行该指令?所以解释器也需要将代码翻译成本地代码。
3) 普通解释器在需要执行时翻译每一行,而使用 JIT 编译器时,每一行都在执行前进行翻译,因此在需要执行该行的那一刻是可行的。不是吗?
4) 那么解释器和 JIT 编译器之间的真正区别是什么,两者都在运行时执行程序,都从中间语言翻译为本机代码......

java interpreter jit

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

类型和类之间有什么区别吗?

我正在读一本Python书,它总是说"给定X的类型是Y",所以我感到很困惑.

在python2和python3中询问对象的类型和对象的成员类别之间有什么区别吗?

我的意思是,类型和类两个不同的概念?

这个问题来自这样一个事实:在2.1之前的蟒蛇中,调用x.__class__和调用之间存在差异type(x).

python python-2.x python-3.x

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

垃圾收集器和 gc 模块

当我对以下短语产生疑问时,我正在阅读文档:

由于收集器补充了 Python 中已使用的引用计数,因此如果您确定您的程序不会创建引用循环,则可以禁用收集器。

这是什么意思?如果我禁用垃圾收集器 ( gc.disable()) 并执行以下操作:

a = 'hi'
a = 'hello'
Run Code Online (Sandbox Code Playgroud)

'hi'留在记忆中吗?我需要自己释放内存吗?

我从这句话中理解的是,gc 是一个额外的工具,专门用于捕获引用循环,如果禁用它,内存仍然会使用对象的引用计数器自动清理,但不会管理引用循环。是对的吗?

python garbage-collection

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

__abstractmethods__和AttributeError

dir()当我注意到这个时,我正在使用内置函数:

>>> dir(type)
['__abstractmethods__', '__base__', '__bases__', '__basicsize__', '__call__', '__class__', '__delattr__', '__dict__', '__dictoffset__', '__dir__', '__doc__', '__eq__', '__flags__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__instancecheck__', '__itemsize__', '__le__', '__lt__', '__module__', '__mro__', '__name__', '__ne__', '__new__', '__prepare__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasscheck__', '__subclasses__', '__subclasshook__', '__text_signature__', '__weakrefoffset__', 'mro']
>>> type.__abstractmethods__
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: __abstractmethods__
>>> list.__abstractmethods__
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: __abstractmethods__
Run Code Online (Sandbox Code Playgroud)

我不明白,它出现在列表中,为什么我会收到这样的错误?

python python-3.x

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

perf_counter 真正做什么

阅读有关timeit.default_time()它的文档(Python 3.4)说:

默认计时器,始终是 time.perf_counter()。

但阅读旧文档(Python 2.7)它说:

以特定于平台的方式定义默认计时器。在 Windows 上,time.clock() 的粒度为微秒,但 time.time() 的粒度为 1/60 秒。在 Unix 上,time.clock() 具有 1/100 秒的粒度,而 time.time() 精确得多。

那么,是否perf_counter()简单地做一个选择来保持便携性呢?我的意思是如果系统是 windows 它返回time.clock(),否则time.time(),以便上面定义的精度等级仍然保持正确,不是吗?

简而言之,它是如何perf_counter()工作的?

python python-3.x

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

为什么没有用于 XHTML5 的官方 XML 模式?

根据本文,HTML5 有两种风格:html 和 XML。
在 W3 上,我找不到官方 DTD 或 XML 架构。在互联网上,我只找到了非官方的。

那么,如何验证 XHTML5 文档?

html validation xhtml

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

new ArrayList&lt;String&gt;() 和 new ArrayList() 之间的区别

两种声明有什么区别?

new ArrayList<String>();
new ArrayList();
Run Code Online (Sandbox Code Playgroud)

它们有效,但第二个返回警告。我不明白为什么。

ArrayList<String> arr我理解和之间的区别ArrayList arr,第一个启用类型检查控件。但是 和new ArrayList<String>()new ArrayList()?执行层面有什么区别吗?在控制方面我会失去什么?

java generics

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

数组-join和toString调用在toLocaleString调用之后返回空字符串

我不明白为什么对Array对象的joinand toString方法的调用在调用后会返回一个空字符串toLocaleString

let A = [1, 2, 3];
A.toString(); => "1,2,3"
A.join(); => "1,2,3"
A => (3) [1, 2, 3]
A.toLocaleString(); => ""
A.toString(); => ""
A.join(); => ""
A => (3) [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

我正在Google Chrome 73.0.3683.103上尝试,在Firefox上却没有遇到相同的问题。

javascript google-chrome

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

通过迭代器理解len函数

阅读文档我注意到内置函数len不支持所有迭代,只支持序列和映射(和集合).在阅读之前,我一直认为该len函数使用迭代协议来评估对象的长度,所以我真的很惊讶地阅读它.

我阅读已经发布的问题(这里这里),但我仍然感到困惑,我仍然没有得到真正的原因,为什么不允许len一般的所有迭代.

这是一个比实施原因更具概念/逻辑性的原因吗?我的意思是当我问一个对象的长度时,我要求一个属性(它有多少个元素),一个对象作为生成器没有的属性,因为它们没有内部元素,即产生元素.

此外,生成器对象可以产生无限长度,导致未定义的长度,这是其他对象不能发生的事情,例如列表,元组,dicts等等......

我是对的,还是有更多的见解/更多我不考虑的事情?

python python-3.x

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