小编mus*_*iKk的帖子

使用http状态202进行异步操作

我正在为接受用户贡献数据的服务编写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处理数据的任何意见或经验.

rest

59
推荐指数
3
解决办法
2万
查看次数

我可以用逻辑运算符OR搜索github标签吗?

我试图在github上过滤我的所有问题,如下所示:

label:bug OR label:enhancement
Run Code Online (Sandbox Code Playgroud)

但显然这不起作用.我发现这个页面 https://help.github.com/articles/searching-issues/ 我觉得它必须写在那里,但我无法弄清楚如何去做.

难道真的是那个人不能过滤两个标签的问题吗?我的意思是,这将是一项基本任务,不是吗?

好吧,如果有人能给我一个提示,我会很高兴听到它.

github filter

47
推荐指数
3
解决办法
1万
查看次数

我可以在Hibernate管理的表中添加"ON DELETE CASCADE"吗?

我有一些由Hibernate管理的表,有各种外键约束.Cascade on delete目前仅由Hibernate管理.为了解决测试数据,我经常手动创建和删除一些行.如果我可以将ON DELETE CASCADE添加到外键约束中,这对我有很大的帮助,但我不知道Hibernate是否因为数据库在Hibernate之前删除了东西而绊倒了.


很多人似乎都专注于DDL.我的目的不是指示Hibernate使用SQL DELETE CASCADES创建DDL.我只是想知道如果我在数据库指定一个ON DELETE CASCADE 除了cascade = CascadeType.REMOVE在参考注释上有JPA 之外是否有任何伤害,例如@ManyToOne.

java sql hibernate jpa

15
推荐指数
2
解决办法
7146
查看次数

什么是"模拟阻塞"(在tomcat doc中看到)?

我在官方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"是什么意思?

java multithreading tomcat network-programming

13
推荐指数
1
解决办法
1464
查看次数

在Perl s /// g中发生了多少次替换?

小例子:

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没有提供任何帮助(或者我找不到它).

regex perl substitution

11
推荐指数
1
解决办法
7609
查看次数

Int(酷)强制的重点是什么?

关于功能的Perl 6网站说

强制类型可以帮助您在例程中使用特定类型,但接受更广泛的输入.调用例程时,参数会自动转换为较窄的类型.

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'
Run Code Online (Sandbox Code Playgroud)

这里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)

perl6 raku

11
推荐指数
2
解决办法
310
查看次数

setSize()v/s setPreferredSize()和pack()

我不清楚setSize()和之间有什么区别setPreferredSize().如果我使用setSize()而不是,会发生什么setPreferredSize().


pack()方法究竟做了什么?

java user-interface swing

8
推荐指数
1
解决办法
1万
查看次数

findLoadedClass()返回null

根据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)

java jvm internals

8
推荐指数
1
解决办法
1768
查看次数

使用密码@的Git克隆

我需要逃避使用密码的@,因为它与主机混淆.

例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 shell command-line escaping github

8
推荐指数
2
解决办法
7336
查看次数

无法克隆Git存储库 - "对象函数......没有方法'hasMagic'"

我正在尝试克隆一个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)

ember-cli

7
推荐指数
1
解决办法
1450
查看次数