我理解RESTful是一种架构风格,但究竟是什么让基于SOAP的Web服务不计入RESTful?
我不清楚下面(来自维基百科)的哪些内容不符合SOAP.
编辑:我刚刚遇到这个,很好地总结了它.
REST不是RPC,RPC说,"定义一些做某事的方法",而REST说,"定义一些资源,他们将拥有这些方法".这是一个微妙但重要的区别,当给定URI时,任何人都知道他们可以通过预定义的方法集与它进行交互并接收标准的HTTP响应.所以给了 http://www.peej.co.uk/我知道我可以发出一个GET并收到一些有意义的回复.然后我可以尝试使用PUT来更改它并接收有意义的HTTP错误代码,因为我没有被授权干涉它.
define_method
可用于定义方法:
define_method(:m) do |a|
end
Run Code Online (Sandbox Code Playgroud)
这相当于以下内容:
def m(a)
end
Run Code Online (Sandbox Code Playgroud)
但是,以下使用的等效形式是什么define_method
:
def m(a=false)
end
Run Code Online (Sandbox Code Playgroud)
请注意,我需要能够在m()
不给出任何参数的情况下进行调用.
由于这等于运算符(== VS ===)应该在JavaScript中的比较中使用?表示它们基本相同,除了' ===
'也确保类型相等,因此' ==
'可能执行类型转换.在Douglas Crockford的JavaScript:The Good Parts中,建议始终避免' ==
'.但是,我想知道设计两组相等算子的原始思想是什么.
您是否看到过使用' ==
'实际上比使用'更合适' ===
的情况?
有一种方法可以从谷歌的索引中排除完整的页面.但有没有办法明确地从谷歌的爬行中排除某个网页的某些部分?例如,排除通常包含无关内容的侧栏?
有没有人知道不同平台的原始理由或故事,每个平台都选择不同的,但在某种程度上相似的新线表示?最初必须做出一些设计决策.(我不相信这是随机选择......)
在Ruby中,我们可以使用super
singleton方法来调用相应的超类的单例方法,如下面的代码所示.
class Base
def self.class_method
puts "Base class method"
end
end
class Derived < Base
def self.class_method
puts "Derived class method"
super
end
end
Derived.class_method
# Derived class method
# Base class method
Run Code Online (Sandbox Code Playgroud)
但是,我似乎并不完全了解super
内部的呼吁Derived.class_method
可以达到的程度Base.class_method
.我假设它class_method
是在他们的元类上定义的,这是否意味着他们的元类有父/子关系?(我无法通过实验确认)
更新:我问的是这个问题,因为我记得在某个地方看到基地和派生类'元类之间存在某种关系(但我再也找不到了).除了知道实际如何super
工作之外,我还想确认这两个元类是否完全分开.
我做了一些Ruby类动态加载/卸载/更新实验,实现了插件基础设施.我发现了几点:
我的问题是,是否有一种简单的方法可以将旧版本"switch"创建的现有对象创建到新版本(但不是旧版本和新版本的合并版本)?在我看来,可能的方法是在卸载/加载后重新创建对象,这不适合插件(不希望它被销毁).
更新:我的意图是使用新版本更新现有对象,而不会将旧版本与新版本合并(例如更改参数数量或删除方法).卸载然后重新加载似乎是最干净的方法,尽管你必须跟踪所有这些对象并在需要时重新创建它们.此外,昂贵的物体可能不适合重新创建.这给我留下了第二个选项,禁止意外合并发生.只要没有删除方法,没有方法签名改变,合并应该可以正常工作.
以下是我的测试程序:
$ cat test.rb
load 'v1.rb'
puts "=> 'v1.rb' loaded"
a1 = A.new
puts "=> object a1(#{a1}) created"
a1.common
a1.method_v1
load 'v2.rb'
puts '',"=> class A updated by 'v2.rb'"
a1.common
a1.method_v1
a1.method_v2
a2 = A.new
puts '',"=> object a2(#{a2}) created"
a2.common
a2.method_v1
a2.method_v2
Object.send(:remove_const, 'A')
puts '',"=> class A unloaded"
A.new rescue puts $!
puts '',"=> class A does not exist now"
a1.common
a1.method_v1
a1.method_v2 rescue puts $!
a2.common
a2.method_v1
a2.method_v2
load 'v3.rb' …
Run Code Online (Sandbox Code Playgroud) 在分析 Java GC 行为时,某些工具的“垃圾收集率”指标(示例如图 19 所示,来自http://www.ibm.com/developerworks/java/library/j-ibmtools2/#fig19):单位是MB/秒。
与其他指标(例如 GC 利用率)相比,这是一个很少见的指标。它看起来代表 GC 清理的速度。但它有什么好处吗?或者应该如何最好地分析?
Ruby常量究竟意味着什么?以下代码未显示任何"常量"属性.警告就在那里,但我仍然要改变A指的是什么.
A = 1
puts A # => 1
A = 2 # warning: already initialized constant A
puts A # => 2
Run Code Online (Sandbox Code Playgroud)
或者Ruby常量只是一个没有任何执行的指示?
我注意到node.js中以下代码性能的奇怪行为.当大小content
为1.4KB时,请求的响应时间大约为16ms.但是,当大小content
只有988字节时,请求的响应时间奇怪得多,大约200ms:
response.writeHead(200, {"Content-Type": "application/json"});
response.write(JSON.stringify(content, null, 0));
response.end();
Run Code Online (Sandbox Code Playgroud)
这似乎不直观.查看Firebug的网络标签,增加/差异全部来自接收(另一方面等待两者都是16ms).
我做了以下更改来修复它,以便两个案例都有16毫秒的响应时间:
response.writeHead(200, {"Content-Type": "application/json"});
response.end(JSON.stringify(content, null, 0));
Run Code Online (Sandbox Code Playgroud)
我查看了node.js 文档,但到目前为止还没有找到相关信息.我的猜测这与缓冲有关,但是node.js可以在write()
和之间抢占end()
吗?
更新:
这是在Linux上的v0.10.1上测试的.
我试图窥视源并确定了2路径之间的区别.第一个版本有2个Socket.write调用.
writeHead(...)
write(chunk)
chunk = Buffer.byteLength(chunk).toString(16) + CRLF + chunk + CRLF;
ret = this._send(chunk);
this._writeRaw(chunk);
this.connection.write(chunk);
end()
ret = this._send('0\r\n' + this._trailer + '\r\n'); // Last chunk.
this._writeRaw(chunk);
this.connection.write(chunk);
Run Code Online (Sandbox Code Playgroud)
第二个好的版本只有1个Socket.write调用:
writeHead(...)
end(chunk)
var l = Buffer.byteLength(chunk).toString(16);
ret = this.connection.write(this._header + l + CRLF +
chunk + …
Run Code Online (Sandbox Code Playgroud) 我理解由于浮点的不精确表示,下面的代码'感觉'不一致.
"%.1f" % 1.14 # => 1.1
"%.1f" % 1.15 # => 1.1
"%.1f" % 1.16 # => 1.2
"%.0f" % 1.4 # => 1
"%.0f" % 1.5 # => 2
"%.0f" % 1.6 # => 2
Run Code Online (Sandbox Code Playgroud)
但是,有一种简单的方法可以将一致的浮点数舍入为5吗?一种方法可能是明确地进行字符串操作.是否有更简单的方法或现有的图书馆?
我想知道此查询将返回多少行:
SELECT
MONTH(DHSTMP), SUM(DHDLDY), SUM(DHBUDS), YEAR(DHSTMP)
FROM
DSHDAY
WHERE
DHSTMP BETWEEN '2009-07-26 00:00:00' AND '2011-03-09 23:59:59'
GROUP BY
YEAR(DHSTMP), MONTH(DHSTMP) ORDER BY YEAR(DHSTMP), MONTH(DHSTMP)
Run Code Online (Sandbox Code Playgroud)
所以我尝试过:
SELECT
COUNT(*)
FROM
DSHDAY
WHERE
DHSTMP BETWEEN '2009-07-26 00:00:00' AND '2011-03-09 23:59:59'
GROUP BY
YEAR(DHSTMP), MONTH(DHSTMP)
Run Code Online (Sandbox Code Playgroud)
但它告诉我每组有多少行.
如何获取第一个查询将返回的行数?
ruby ×5
constants ×1
db2 ×1
equality ×1
history ×1
java ×1
javascript ×1
metaclass ×1
newline ×1
node.js ×1
performance ×1
rest ×1
rounding ×1
soap ×1
sql ×1
text ×1
text-editor ×1
weak-typing ×1
web-crawler ×1
web-services ×1