假设我编写了一个REST服务,其目的是将新数据项添加到系统中.
我计划发帖到
http://myhost/serviceX/someResources
Run Code Online (Sandbox Code Playgroud)
假设有效,我应该使用什么样的响应代码?我可以回复什么内容.
我正在查看HTTP响应代码的定义并看到这些可能性:
200:返回描述或包含动作结果的实体;
201:这意味着创建.含义*请求已完成,并导致创建新资源.新创建的资源可以由响应实体中返回的URI引用,其中由Location头字段给出的资源的最具体URI.响应应该包括一个实体,其中包含资源特征和位置的列表,用户或用户代理可以从中选择最合适的资源特征和位置.实体格式由Content-Type头字段中给出的媒体类型指定.*
后者听起来更符合Http规范,但我一点也不清楚
响应应该包括一个包含资源特征和位置列表的实体
手段.
建议?解释?
假设您有n个进程,n> 2.您希望在它们之间达成协议,即一个进程是活动的.所以他们需要彼此投票以确定哪一个是活跃的.
所有进程都可能随时失败,我们希望尽可能让一个进程处于活动状态,但......
我们必须永远不要同时有两个活跃,所以如果他们不能确定没有一个活跃的更好.(即我们想避免裂脑)
它们之间唯一可用的通信机制是pub-sub消息传递(不是点对点).
可以使用一个或多个数据库,但没有一个数据库应该是单点故障.IE浏览器.如果所有流程都可以工作,那将是非常不受欢迎的,并且由于丢失了单个数据库而无法这样做.
设计?需要发布什么消息?
免责声明,我来自Java背景.我没有做太多的C#.这两个世界之间存在大量的转移,但当然存在差异,其中一个是异常倾向于被考虑的方式.
我最近回答了一个C#问题,建议在某些情况下,这样做是合理的:
try {
some work
} catch (Exeption e) {
commonExceptionHandler();
}
Run Code Online (Sandbox Code Playgroud)
(原因不重要).我收到的答复我不太明白:
直到.NET 4.0,捕获异常非常糟糕.这意味着你可以捕获各种低级致命错误,从而掩盖错误.它还意味着如果某种类型的损坏触发了这样的异常,堆栈上的任何打开的finally块都将被执行,所以即使callExceptionReporter函数尝试记录并退出,它甚至可能无法到达那一点( finally块可能再次抛出,或导致更多损坏,或从磁盘或数据库中删除重要的东西).
我可能比我意识到的更困惑,但我不同意其中的一些.请其他人评论.
我知道有很多低级别的例外我们不想接受.我的commonExceptionHandler()函数可以合理地重新抛出那些.这似乎与对相关问题的答案一致.这说"根据你的上下文,使用catch(...)是可以接受的,只要重新抛出异常即可." 所以我总结使用catch(Exception)并不总是邪恶,默默地吞下某些例外.
短语"在.NET 4之前它对Catch Exception来说非常糟糕".NET 4中有哪些变化?这是对AggregateException的引用,它可能会给我们一些与我们捕获的异常有关的新事物,但我不认为更改是基本的"不要吞下"规则.
下一句话真的很麻烦.这可能是对的吗?
它还意味着如果某种类型的损坏触发了这样的异常,堆栈上的任何打开的finally块都将被执行(finally块可能再次抛出,或导致更多损坏,或从磁盘或数据库中删除重要的东西)
我的理解是,如果有一些低级代码
lowLevelMethod() {
try {
lowestLevelMethod();
} finally {
some really important stuff
}
}
Run Code Online (Sandbox Code Playgroud)
在我的代码中我调用lowLevel();
try {
lowLevel()
} catch (Exception e) {
exception handling and maybe rethrowing
}
Run Code Online (Sandbox Code Playgroud)
无论我是否捕获异常,这对于finally块的执行都没有任何影响.当我们离开lowLevelMethod()时,finally已经运行了.如果最终要做任何坏事,比如我的磁盘损坏,那么它会这样做.我捕捉异常没有任何区别.如果它到达我的异常块我需要做正确的事情,但我不能成为dmis执行最终的原因
添加 git 标签时如何防止触发 gitlab ci 管道?我在本地运行此命令(而不是在 gitlab-ci 作业中)
git tag -a "xyz"
Run Code Online (Sandbox Code Playgroud)
然后推动标签;这会触发各种管道。我想从运行中排除其中一些管道。
我想从这样的问题的思想变化这个; 这个问题是使用只,我想排除,所以我想除了。那里的答案有两种变体,一种有参考,一种没有。
build:
# ... my work here ...
except:
- tags
build:
# ... my work here ...
except:
refs:
- tags
Run Code Online (Sandbox Code Playgroud)
两者似乎都没有任何效果;我添加了一个标签,构建仍然发生。
我的理解在这里可能完全错误,因为标签这个词似乎有三种可能的含义,并且在阅读文档或示例时,我并不总是确定哪种含义适用:
我有兴趣控制如果第一种情况会发生什么。到目前为止,从评论中可以清楚地看出“除了:-tags”与我的情况无关,那么有没有可行的方法?
我的问题是:我们可以使用dojo.xhrPost发布一些Json数据吗?更多详情:
我一直在尝试使用Dojo代码将JSON数据POST到RESTful服务.似乎dojo.xhrPost和dojo.rawXhrPost的行为是不同的,或者更准确的rawXhrPost()起作用而xhrPost()不起作用.这与我对文档的阅读不一致
dojo.rawXhrPost的最初目的是一种可用于将原始帖子主体发送到服务器的方法.从1.3开始,此函数与dojo.xhrPost()相同.因此,对于dojo.rawXhrPost()的使用,请参阅dojo.xhrPost()
这意味着xhrPost()就足够了.我的代码看起来像这样 - 我有一个管理Editions of Books的"玩具"图书馆服务.代码想要POST一个新条目,
var myEdition = {"Edition":{"isbn":"44"}};
var xhrArgs = {
url: "http://localhost:8081/LibraryWink/library/editions",
postData: dojo.toJson(myEdition),
handleAs: "json",
headers: { "Content-Type": "application/json"},
load: function(data) {
dojo.byId("mainMessageText").innerHTML = "Message posted.";
},
error: function(error) {
dojo.byId("mainMessageText").innerHTML = "Error :" + error;
}
};
var deferred = dojo.rawXhrPost(xhrArgs);
Run Code Online (Sandbox Code Playgroud)
该头:{"内容类型":"应用/ JSON"}中不可或缺的一部分,使我的JAX-RC服务的理解是,内容是JSON.
我发现上面的代码完美无缺.但是如果相反我说:
var deferred = dojo.xhrPost(xhrArgs);
Run Code Online (Sandbox Code Playgroud)
POST中没有数据传输.我有一个TCP/IP监视器,可以看到没有任何传输.
那么,这是一个错误,还是我错误地驾驶xhrPost()?或者我应该使用rawXhrPost()?如果是后者,我们在什么情况下使用XhrPost这两种口味?
我正在使用Dojo并使用Mastering Dojo中描述的"模块模式" .到目前为止,我可以看到这种模式是一种通用的,广泛使用的JavaScript模式.我的问题是:我们如何调试我们的模块?
到目前为止,我还没能说服Firebug向我展示我的模块的来源.Firebug似乎只显示用于执行工厂方法的dojo eval语句.因此,我无法单步执行我的模块源代码.我试过在我的模块代码中加入"调试器"语句,Firebug似乎正常停止,但没有显示源代码.
下面的示例代码.这只是一个足够复杂的例子,使调试的需要变得合理,它并不是有用的代码.
这页纸
<!--
Experiments with Debugging
-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>console me</title>
<style type="text/css">
@import "../dojoroot/dojo/resources/dojo.css";
@import "../dojoroot/dijit/themes/tundra/tundra.css";
@import "edf.css";
</style>
<script type="text/javascript" src="../dojoroot/dojo/dojo.js">
</script>
<script type="text/javascript" >
dojo.registerModulePath("mytest", "../../mytest");
dojo.require("mytest.example");
dojo.addOnLoad(function(){
mytest.example.greet();
});
</script>
</head>
<body class="tundra">
<div id="bulletin">
<p>Just Testing</p>
</div>
</body>
</html>
<!-- END: snip1 -->
Run Code Online (Sandbox Code Playgroud)
我想调试的java脚本
dojo.provide("mytest.example");
dojo.require("dijit.layout.ContentPane");
/**
* define module
*/
(function(){
//define the main program functions...
var example= mytest.example;
example.greet= …Run Code Online (Sandbox Code Playgroud) 我怀疑我的概念在字符串池中是否清晰.请研究以下一组代码,并检查我的答案在以下一组陈述后创建的对象数量是否正确: -
1)
String s1 = "abc";
String s2 = "def";
s2 + "xyz";
Run Code Online (Sandbox Code Playgroud)
2)
String s1 = "abc";
String s2 = "def";
s2 = s2 + "xyz";
Run Code Online (Sandbox Code Playgroud)
3)
String s1 = "abc";
String s2 = "def";
String s3 = s2 + "xyz";
Run Code Online (Sandbox Code Playgroud)
4)
String s1 = "abc";
String s2 = "def";
s2 + "xyz";
String s3 = "defxyz";
Run Code Online (Sandbox Code Playgroud)
根据我所知的概念,在上面的4个案例中,在执行每组行之后将创建4个对象.
这是我得到的构建失败的升华.症状是,当使用shrinksafe进行优化时,我的构建将失败,并显示错误:
[exec] js: "<eval'ed string>#1(Function)#1(eval)", line 127: uncaught JavaScript runtime exception: TypeError: Cannot read property "1" from null
[exec] at <eval'ed string>#1(Function)#1(eval):127
[exec] at <eval'ed string>#1(Function)#1(eval):163
Run Code Online (Sandbox Code Playgroud)
如果我的代码在其nls文件中使用如下模式
"dojo/i18n!./nls/MyResource"
Run Code Online (Sandbox Code Playgroud)
但是,这个构造在很多dojo代码中很常见,它们构建得很干净.所以我通过将一些dojo代码复制到我的模块中进行了实验,发现如果将nls资源加载到dojo/dojo层中,那么我的图层构建正确,如果我在自己的图层中加载了相同的nls资源,那么我们就会失败.
因此,我将dijit/form/_ComboBoxMenuMixin.js复制到我自己的模块以及相应的nls资源.
我有三个测试用例,一个工作,另外两个给出上面的失败.
我的问题:
似乎我需要在"dojo/dojo"层中包含我自己的nls资源,它必须恰好是这一层.当然这不可能是对的吗?我有什么选择?
工作简介:
layers: {
"dojo/dojo" : {
customBase: false,
include: [
"modules/nls/ComboBox",
],
exclude: []
},
"MyLayer" : {
customBase: false,
include: [
"modules/ComboCopy",
],
exclude: []
},
}
Run Code Online (Sandbox Code Playgroud)
失败:同一层中的nls
layers: {
"dojo/dojo" : {
customBase: false,
include: [
],
exclude: []
},
"MyLayer" : {
customBase: false, …Run Code Online (Sandbox Code Playgroud) 所以我有一个很长的查询字符串,可以是......
//url=z&surl=y&time=z&codec=a264&acodec=mp3&width=400x100 或者 //url=z&surl=y&time=z&optlevel=w
我使用 request.getQueryString("url") 来检查 a) qs 是否在那里 b) 确保它不为空。这一切都导致了一大堆乱七八糟的 if 语句。我只是想知道是否有更好的方法来做到这一点。
例子..
if(request.getParameter("originalURL") != null &&
request.getParameter("originalURL").equals("") && ................)
Run Code Online (Sandbox Code Playgroud)
谢谢你们
我是OSGi的新人,但很有意思.是否可以在osgi bundle和java应用程序之间进行交互?如果有可能,怎么样?谢谢!
上下文是我有一个很大的Java SE应用程序(作者是另一个程序员),有许多依赖项.首先,我的目标是添加新功能和第二次更改架构.我将尝试使用OSGi,但我不想两次编写代码,因此我想编写新代码作为bundle.但是使用旧应用程序中的这个新功能.