我正在为接受用户贡献数据的服务编写REST API.我想保持所有操作完全异步,这包括PUT,POST,DELETE甚至GET请求.我的想法是接收请求,处理它以确保它是一个有效的请求,然后传递HTTP 202接受的响应以及数据最终可用的URL和令牌,以便后续请求可以与处理的数据匹配.如果请求无效,那么我将发送HTTP 400.
然后,客户将负责检查我在将来的某个时间提供的URL,并传递令牌.如果数据可用,我返回正常的200或201,但如果我仍在处理请求,我将发送另一个202,表明处理尚未完成.如果处理数据有错误,我会根据需要发送4xx或5xx状态.
我想这样做的原因是我可以将所有有效请求转储到请求池中,并让工作人员从队列中提取并处理请求,因为它们可用.由于我不知道池的大小或可用的工作人员数量,因此无法确定我能够以足够快的速度获得请求以满足Google App Engine的30秒限制.
我的问题是:我是否通过以这种方式处理请求来歪曲REST?例如,浏览器似乎需要立即响应请求.对于我的HTML页面,我计划使用结构化页面进行响应,然后使用AJAX处理数据请求.
我最感兴趣的是以这种方式使用REST处理数据的任何意见或经验.
我试图在github上过滤我的所有问题,如下所示:
label:bug OR label:enhancement
Run Code Online (Sandbox Code Playgroud)
但显然这不起作用.我发现这个页面 https://help.github.com/articles/searching-issues/ 我觉得它必须写在那里,但我无法弄清楚如何去做.
难道真的是那个人不能过滤两个标签的问题吗?我的意思是,这将是一项基本任务,不是吗?
好吧,如果有人能给我一个提示,我会很高兴听到它.
我有一些由Hibernate管理的表,有各种外键约束.Cascade on delete目前仅由Hibernate管理.为了解决测试数据,我经常手动创建和删除一些行.如果我可以将ON DELETE CASCADE添加到外键约束中,这对我有很大的帮助,但我不知道Hibernate是否因为数据库在Hibernate之前删除了东西而绊倒了.
很多人似乎都专注于DDL.我的目的不是指示Hibernate使用SQL DELETE CASCADES创建DDL.我只是想知道如果我在数据库中指定一个ON DELETE CASCADE 除了cascade = CascadeType.REMOVE在参考注释上有JPA 之外是否有任何伤害,例如@ManyToOne.
我在官方tomcat配置文档中看到了以下描述(省略了APR连接器描述):
Java Blocking Connector Java Nio Blocking Connector
Classname Http11Protocol Http11NioProtocol
Tomcat Version 3.x 4.x 5.x 6.x 6.x
Support Polling NO YES
Polling Size N/A Unlimited - Restricted by mem
Read HTTP Request Blocking Non Blocking
Read HTTP Body Blocking Sim Blocking
Write HTTP Response Blocking Sim Blocking
SSL Support Java SSL Java SSL
SSL Handshake Blocking Non blocking
Max Connections maxThreads See polling size
Run Code Online (Sandbox Code Playgroud)
"Sim Blocking"是什么意思?
小例子:
perl -e '$s="aaabbcc";$c=()=$s=~/a/g;print"$c\n$s\n"' (m // g)输出
3
aaabbcc
Run Code Online (Sandbox Code Playgroud)
而perl -e '$s="aaabbcc";$c=()=$s=~s/a/x/g;print"$c\n$s\n"'(s /// g)输出
1
xxxbbcc
Run Code Online (Sandbox Code Playgroud)
我想一次做两件事而不必先匹配:替换并知道替换的数量.显然,/// g不会返回标量上下文中的替换次数 - 与m // g匹配时不同.这可能吗?如果有,怎么样?
perlre,perlvar和perlop没有提供任何帮助(或者我找不到它).
强制类型可以帮助您在例程中使用特定类型,但接受更广泛的输入.调用例程时,参数会自动转换为较窄的类型.
Run Code Online (Sandbox Code Playgroud)sub double(Int(Cool) $x) { 2 * $x } say double '21'; # 42 say double Any; # Type check failed in binding $x; expected 'Cool' but got 'Any'这里Int是强制参数的目标类型,而Cool是例程接受作为输入的类型.
但这个潜艇有什么意义呢?是不是$x只是一个Int?为什么要限制调用者Cool为参数实现?
我通过加倍的例子困惑,因为Int已经is Cool.所以我做了一个示例,其中类型不共享层次结构:
class Foo { method foomethod { say 'foomethod' } }
class Bar {}
class Quux is Foo {
# class Quux { # compile error
method Bar { Bar.new }
}
sub foo(Bar(Foo) $c) { …Run Code Online (Sandbox Code Playgroud) 我不清楚setSize()和之间有什么区别setPreferredSize().如果我使用setSize()而不是,会发生什么setPreferredSize().
pack()方法究竟做了什么?
根据JVM规范,启动类加载的类加载器由JVM 记录为启动类加载器.而且,根据ClassLoader的JavaDoc #findLoadedClass()方法
如果Java虚拟机已将此加载器记录为具有该二进制名称的类的初始加载器,则返回具有给定二进制名称的类.
(强调我的)
考虑一个简单的类加载器
class SimpleClassLoader extends ClassLoader {
void foo() {
System.err.println(loadClass("foo.Bar"));
System.err.println(findLoadedClass("foo.Bar"));
}
}
Run Code Online (Sandbox Code Playgroud)
鉴于foo.Bar实际存在于类路径中,new SimpleClassLoader().foo()打印
class foo.Bar
null
Run Code Online (Sandbox Code Playgroud)
根据上面给出的原因,SimpleClassLoader应该是启动类加载器并且findLoadedClass("foo.Bar")应该只返回成功加载的类.
现在考虑第二个版本:
class SimpleClassLoader2 extends ClassLoader {
SimpleClassLoader2() {
super(null); // disables delegation
}
protected Class<?> findClass(String name) {
try {
byte[] b = IOUtils.toByteArray(new FileInputStream("path/to/foo/Bar.class"));
return defineClass("foo.Bar", b, 0, b.length);
} catch (Exception …Run Code Online (Sandbox Code Playgroud) 我需要逃避使用密码的@,因为它与主机混淆.
例1:
git clone https://user:p@ssword@github.com/user/repo.git
当我运行上面的例子时,这是错误的,因为密码有@他知道下一个参数是主机.试图用\逃脱,或者你可以使用""之间的网址,但事实并非如此.
例2:
(echo user; echo p@ssword) | git clone https://github.com/usuario/repo.git
当我只使用命令时,git clone https://github.com/usuario/repo.git他询问用户和密码,所以我使用了上面的命令,这与我用来更改一行上的root密码的命令相同.
我正在尝试克隆一个Git存储库,其中包含一个Ember-CLI项目(https://github.com/tgfischer/StockMarketApp).当我这样做时,我收到以下错误:
tom@tom-fischer:~/Desktop/StockMarketApp$ ember server
version: 0.2.0-beta.1
Could not find watchman, falling back to NodeWatcher for file system events
Livereload server on port 35729
Serving on http://0.0.0.0:4200/
Object function glob(pattern, options, cb) {
if (typeof options === "function") cb = options, options = {}
if (!options) options = {}
if (typeof options === "number") {
deprecated()
return
}
var g = new Glob(pattern, options, cb)
return g.sync ? g.found : g
} has no method 'hasMagic'
TypeError: Object function …Run Code Online (Sandbox Code Playgroud)