小编man*_*ana的帖子

Instant和LocalDateTime有什么区别?

我知道:

  • Instant是用于计算的"技术"时间戳表示(纳秒).
  • LocalDateTime是日期/时钟表示,包括人类的时区.

仍然最终IMO都可以作为大多数应用程序用例的类型.例如:目前我正在运行一个批处理作业,我需要根据日期计算下一次运行,我很难找到这两种类型之间的优缺点(除了Instant的纳秒级精度优势和时区部分) of LocalDateTime).

您能说出一些应用示例,其中只应使用Instant或LocalDateTime吗?

编辑:注意有关精度和时区的LocalDateTime的误读文档

java datetime java-8

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

Java远程调试,它在技术上如何工作?

我非常喜欢JVM的远程调试工具.但我想知道它是如何在内部工作的.

我的假设:它是通过JVM功能完成的,其中正在运行的进程正在下载/使用附加的远程调试器(如IDE)的源代码.它知道当前堆栈跟踪的行,然后可以跳转到相应的IDE断点.然后通过套接字或共享内存(远程调试器的设置)完成堆栈跟踪和应用程序状态内省的通信.

有没有人有趣的链接/资源?

java debugging remote-debugging

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

REST api版本控制(仅表示表示,而不是资源本身)

我看了一下API版本的最佳实践?,但我不太相信答案,所以我再次用更具体的例子质疑版本控制部分.我有两个URI(一个版本作为URI的一部分,一个没有):

http://xxxx/v1/user/123    -> favored solution in discussed thread
http://xxxx/user/123             
Run Code Online (Sandbox Code Playgroud)

我怀疑第一个链接是否表达了REST的想法.我觉得很http://xxxx/v1/user/123困惑,因为它表明有一天会有更高的api版本http://xxxx/v2/user/123.但这在REST术语中没有意义,api版本本身是HTTP 1.0或1.1,它已经在HTTP请求中发送.这个以REST资源为中心的视图与其他api接口(如SOAP或Java接口)非常不同(其中通常有限定名称的api版本).

在REST中,版本控制唯一有意义的是该资源的表示(例如,添加或删除新字段).此版本控制属于内容协商的部分,如:

http://xxx/user/123 + HTTP 'Accept' Header -> Content negotation through header
http://xxx/user/123?v=1                    -> for perma-links/hyperlinks
Run Code Online (Sandbox Code Playgroud)

人们还可以争辩说,这样的版本内容协商可能是路径中URI的一部分,但我觉得它反直觉,因为你最终可能会为同一资源使用不同的URI,并且必须在某些时候维护重定向.

总结:在REST URI中,没有api版本,只有资源表示的版本控制.表示版本信息属于内容协商(作为queryParam或HTTP'接受').

你怎么看?你不同意/同意哪些事情?

versioning rest api-design

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

ExecutorService,避免任务队列过满的标准方法

我正在使用ExecutorService以方便并发多线程程序.请参考以下代码:

while(xxx) {
    ExecutorService exService = Executors.newFixedThreadPool(NUMBER_THREADS);
    ...  
    Future<..> ... = exService.submit(..);
    ...
}
Run Code Online (Sandbox Code Playgroud)

在我的情况下,问题是submit()如果所有人NUMBER_THREADS都被占用则不会阻塞.结果是任务队列被许多任务淹没.这样做的结果是,关闭执行服务ExecutorService.shutdown()需要ExecutorService.isTerminated()很长时间(长时间都是假的).原因是任务队列仍然很满.

现在我的解决方法是使用信号量来禁止在任务队列中包含许多条目ExecutorService:

...
Semaphore semaphore=new Semaphore(NUMBER_THREADS);

while(xxx) {
    ExecutorService exService = Executors.newFixedThreadPool(NUMBER_THREADS); 
    ...
    semaphore.aquire();  
    // internally the task calls a finish callback, which invokes semaphore.release()
    // -> now another task is added to queue
    Future<..> ... = exService.submit(..); 
    ...
}
Run Code Online (Sandbox Code Playgroud)

我确信有更好的封装解决方案?

java concurrency

29
推荐指数
4
解决办法
5万
查看次数

Mockito比EasyMock更受欢迎?

最近我切换到了Mockito框架并且对它非常满意(另见blog-post).从EasyMock到Mockito的转换非常简单,我设法使测试兼容(即测试用例表现相同).

你是否看到真正的理由或枪战标准更喜欢EasyMock而不是Mockito?到目前为止我使用的代码库不能,但我对你的观点感兴趣.

java unit-testing easymock mocking mockito

21
推荐指数
3
解决办法
9557
查看次数

在子文件夹/路径下递归显示颠覆历史

svn help log 不会给我一个递归看历史的选项.

svn log -l3 --recursive SVN_ROOT_URL不起作用.我希望它能在SVN_ROOT_URL下面提供最后3次提交.

这真的很烦人.我总是要启动我的IDE或者看团队城市以查看项目的最后提交(虽然我不确定这些工具在幕后执行哪个svn命令).

我认为这个功能非常重要,并且希望在没有高bash脚本工作的情况下支持svn-CLI框.

svn version-control

12
推荐指数
1
解决办法
6771
查看次数

HTTP"授权"标头的多种身份验证方案

对于我们的api用户,我们需要两种身份验证:

  • 验证api-user(移动设备,合作伙伴集成)
  • 验证特定的"普通"用户,该用户拥有我们这方面的数据

标准挑战与响应是通过WWW-AuthenticateAuthorizationHeaders 处理的.我想重用这个.

我有以下用例:在第一级我们验证api用户(例如移动设备),对于一些api-actions我们还需要验证用户(例如移动设备的用户).因此,我们有一个特殊情况,我们需要"同时"两个身份验证方案.

查看http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html我看不到在"授权"标题中有两个不同的方案是可能的.


// I just made up delimiter ';'
Authorization: Digest .... ; CustomXXX ...

我是否正确,如果有的话还有其他选择吗?

security rest http

12
推荐指数
1
解决办法
4797
查看次数

设置请求标头:连接

默认情况下,Connection标题设置为Keep-Alive浏览器,以便为浏览器的其他请求保持连接打开.

当我Connection标题时close,可能有什么区别?这会影响任何性能问题吗?

(一个补充:我从xmlhttprequest设置标题)

http xmlhttprequest http-headers

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

REST api分页:使page-size成为参数(可从外部配置)

我们有一个搜索/列表资源:

http://xxxx/users/?page=1

在内部,页面大小是静态的,并返回20个项目.用户可以通过增加页码来前进.但为了更灵活,我们现在也在考虑公开页面的大小:

http://xxxx/users/?page=1&size=20

因此,这是灵活的,因为客户端现在可以在搜索时决定网络呼叫与响应的大小.当然,这有一个缺点,即服务器可能会因意外或有目的而遭受严重打击: http://xxxx/users/?page=1&size=1000000

为了稳健性,解决方案可以是配置页面大小的上限(例如100),并且当超过页面大小时,或者表示错误响应或HTTP重定向到具有最高页面大小参数的URL.

你怎么看?

api rest

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

递归运行时实现Java与其他/功能语言?

我喜欢递归,但在Java,你在某个时刻遇到了死胡同.例如,我有一个大约100K迭代的递归不起作用的情况(StackOverflowError).糟糕的是,我不得不为这个运行时堆栈限制原因切换到恼人的"命令性循环".

我想知道其他(特别是功能性)语言如何在运行时绕过堆栈溢出?我想特别是函数式语言运行时更好地处理这个问题,因为递归是核心概念......

有人有一些信息或外部资源吗?

java recursion programming-languages functional-programming

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