当我访问chesseng.herokuapp.com时,我得到一个看起来像的响应头
Cache-Control:private
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/css
Date:Tue, 16 Oct 2012 06:37:53 GMT
Last-Modified:Tue, 16 Oct 2012 03:13:38 GMT
Status:200 OK
transfer-encoding:chunked
Vary:Accept-Encoding
X-Rack-Cache:miss
Run Code Online (Sandbox Code Playgroud)
然后我刷新页面然后得到
Cache-Control:private
Connection:keep-alive
Date:Tue, 16 Oct 2012 06:20:49 GMT
Status:304 Not Modified
X-Rack-Cache:miss
Run Code Online (Sandbox Code Playgroud)
所以看起来缓存工作正常.如果它适用于缓存,则Expires和Cache-Control的重点是:max-age.更令人困惑的是,当我在https://developers.google.com/speed/pagespeed/insights/上测试该页面时,它告诉我"利用浏览器缓存".
有人可以向我解释一个关系数据库(例如MySQL)与Neo4j等图形数据库相比的优缺点吗?
在SQL中,您有多个表,其中各种ID链接它们.然后你必须加入连接表.从新手的角度来看,为什么要将数据库设计为需要连接,而不是将连接从一开始显示为边缘,就像使用图形数据库一样.从概念上讲,对新手来说没有任何意义.据推测,这有一个非常技术但非概念性的原因?
在之前的一个问题中,我发现我应该设置nginx ssl终止,而不是让Rails处理加密数据.
那为什么以下存在呢?
config.force_ssl = true
Run Code Online (Sandbox Code Playgroud)
我在生产配置文件中看到了这个注释.但是,如果期望nginx将处理所有ssl的东西,以便我的rails应用程序不处理加密数据,那么做config.force_ssl = true什么?
如果我知道我将永远使用nginx,我应该把它留在生产中注释掉吗?
我读过Fortran仍然大量用于科学计算.对于已经大量投资Fortran的代码,这对我来说很有意义.
但是有理由将Fortran用于其他现代语言的新项目吗?与更流行的语言(C++,Java,Python,Ruby等)相比,Fortran中的语言设计决策是否更适合科学计算?例如,与我提到的其他语言相比,Fortran的特定语言功能是否允许编译器中的数值优化程度更高?
我试图找到一个对DataKinds扩展的解释,这对我来说只是读过Learn You a Haskell才有意义.是否有一个标准的来源,对我来说,我学到的东西很少?
编辑:例如文档说
使用-XDataKinds,GHC会自动将每个合适的数据类型提升为一种类型,并将其(值)构造函数作为类型构造函数.以下类型
并举例说明
data Nat = Ze | Su Nat
Run Code Online (Sandbox Code Playgroud)
产生以下种类和类型构造函数:
Nat :: BOX
Ze :: Nat
Su :: Nat -> Nat
Run Code Online (Sandbox Code Playgroud)
我没有明白这一点.虽然我不明白是什么BOX意思,陈述Ze :: Nat和Su :: Nat -> Nat似乎说明的是,通常已经是泽和苏都是正常的数据构造完全一样,你希望看到与ghci的情况
Prelude> :t Su
Su :: Nat -> Nat
Run Code Online (Sandbox Code Playgroud) 用例如Java编写的程序很大程度上依赖于动态调度.如何用Haskell等函数式语言表达这些程序?换句话说,Haskell在"动态调度"下表达这个想法的方式是什么?
我读到了Voltdb的命令日志.命令日志记录事务调用,而不是像在预写日志中那样更改每一行.通过仅记录调用,命令日志保持最低限度,从而限制磁盘I/O对性能的影响.
任何人都可以解释数据库理论背后为什么Voltdb使用命令日志以及为什么标准SQL数据库(如Postgres,MySQL,SQLServer,Oracle)使用预写日志?
第19页的"RabbitMQ in Action"一书给出了独占和自动删除的描述:
exclusive - 设置为true时,您的队列将变为私有,并且只能由您的应用程序使用.当您需要将队列限制为仅一个使用者时,这非常有用.
自动删除 - 当最后一个使用者取消订阅时,将自动删除该队列.如果您需要仅由一个使用者使用的临时队列,请将auto-delete与exclusive结合使用.当消费者断开连接时,队列将被删除.
但据我所知,使用独占时,自动删除是多余的.只需要独家.RabbitMQ 教程似乎就是这样说的
...一旦我们断开消费者,就应该删除队列.有一个独家标志:
result = channel.queue_declare(exclusive=True)
Run Code Online (Sandbox Code Playgroud)
在该教程中没有提及自动删除,并且sudo rabbitmqctl list_bindings似乎表明在接收器消失后队列实际上被删除了.
有人可以给我一份Paxos的实际用例列表.这是需要达成共识的真正问题,是更大问题的一部分.
以下是Paxos的用例吗?
假设有两个客户在扑克服务器上互相玩扑克.扑克服务器被复制.我对Paxos的理解是,它可以用来保持代表当前扑克之手的内存数据结构的一致性.也就是说,确保所有副本具有完全相同的内存状态.
但为什么Paxos必要?假设需要处理新卡.如果一切正常,运行相同代码的每个副本将生成相同的卡.为什么客户端不能从所有复制的服务器请求最新状态,并选择最多出现的卡.因此,如果一台服务器出现错误,客户端仍然可以通过选择多数来获得正确的状态.
haskell ×2
sql ×2
algorithm ×1
caching ×1
consensus ×1
data-kinds ×1
database ×1
distributed ×1
fortran ×1
http ×1
http-headers ×1
logging ×1
nginx ×1
paxos ×1
rabbitmq ×1
rust ×1
ssl ×1
transactions ×1
types ×1
voltdb ×1