我试图通过搜索网页来了解FlexibleContexts扩展正在做什么,这些网页可以解释为凡人(例如,像我一样读过LYHFGG的人),但我没有找到任何这样的资源.
因此,我向专家们询问这个话题:有人可以解释一下这个扩展的作用,它为什么存在,并给出一两个简单的例子,说明如何以及为什么要使用它?
此外,如果我读别人的代码,其使用这个扩展名,那我怎么知道,以了解使用此扩展编写的代码扩展?
我试图重现这个基准测试,它将PHP 7与旧版本在Wordpress服务器上进行比较:http://talks.php.net/oz15#/wpbench
我的配置几乎相同,服务器有i7,SSD,16GB RAM和debian.服务器软件是nginx.令人惊讶的是,我的结果与上面提到的结果有很大不同.
在我的测试中,Siege(https://www.joedog.org/siege-home/)输出以下内容:
对于PHP 7.0.0RC1:
siege -c100 -r100 http://10.22.255.133/wordpress/
** SIEGE 3.0.8
** Preparing 100 concurrent users for battle.
The server is now under siege.. done.
Transactions: 10000 hits
Availability: 100.00 %
Elapsed time: 131.61 secs
Data transferred: 95.77 MB
Response time: 0.75 secs
Transaction rate: 75.98 trans/sec
Throughput: 0.73 MB/sec
Concurrency: 56.98
Successful transactions: 10000
Failed transactions: 0
Longest transaction: 1.01
Shortest transaction: 0.04
Run Code Online (Sandbox Code Playgroud)
对于PHP 5.6.12:
siege -c100 -r100 http://10.22.255.133/wordpress/
** SIEGE …Run Code Online (Sandbox Code Playgroud) 在我们的应用程序中,我们使用Hystrix,因为我们调用了多个外部服务。我们想为我们调用的每个外部服务配置一个线程池(具有特定的大小)。
假设有三个外部服务,分别称为S1,S2,S3。此外,我们有10个扩展类HystrixCommand,称为C1至C10。
C1和C2调用S1,并且应使用具有15个线程的相同线程池。在C1的构造函数中,我们对进行以下调用super:
super(Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("S1"))
.andThreadPoolKey(ThreadPools.S1)
.andThreadPoolPropertiesDefaults(HystrixThreadPoolProperties.Setter().withCoreSize(15))
.andCommandPropertiesDefaults(HystrixCommandProperties.Setter().withExecutionTimeoutInMilliseconds(timeout)));
Run Code Online (Sandbox Code Playgroud)
在一个命令(C1)的构造函数内部,我们将S1的线程池大小指定为15。这ThreadPools是一个自定义类,其中的final static属性S1由
S1 = HystrixThreadPoolKey.Factory.asKey("S1");
Run Code Online (Sandbox Code Playgroud)
现在的实际问题是:(1)为什么在a HystrixCommand而不是中央线程池定义(似乎不是Hystrix的概念)中指定线程池核心大小(对于S1为15 )。
假设在C2(与上面的代码段相同的)构造函数中,我们用一个非15的参数调用withCoreSize。(2)将使用哪个参数?
(3)有没有一种方法可以在一个类中为服务S1,S2和S3定义三个线程池,并从命令类中引用它们?
Hystrix的使用方法指南似乎不包含与此相关的信息。如果有人有时间回答这个问题,那就太好了。
给出以下类型定义
newtype Constant a b = Constant { getConstant :: a }
deriving (Eq, Show)
Run Code Online (Sandbox Code Playgroud)
这个Functor instance定义是有效的
instance Functor (Constant a) where
fmap _ (Constant x) = Constant x
Run Code Online (Sandbox Code Playgroud)
而明显等同的instance定义
instance Functor (Constant a) where
fmap _ x = x
Run Code Online (Sandbox Code Playgroud)
因类型检查错误而失败(摘录)
Expected type: Constant a b
Actual type: Constant a a1
Run Code Online (Sandbox Code Playgroud)
使用GHC版本8.0.2.
问题是,为什么这两个(显然是等价的)instance定义在类型检查方面表现不同.
haskell ×2
concurrency ×1
ghc ×1
hystrix ×1
java ×1
mysql ×1
nginx ×1
php-7 ×1
typechecking ×1
wordpress ×1