小编Mic*_*rdt的帖子

我对类型系统的理解是否正确?

以下陈述代表了我对类型系统的理解(它在Java世界之外的实践经验太少); 请更正任何错误.

静态/动态区别似乎非常明确:

  • 静态类型语言为每个变量,字段和参数分配一个类型,编译器会阻止不兼容类型之间的分配.示例:C,Java,Pascal.
  • 动态类型语言将变量视为可以保存任何所需内容的通用容器 - 只有在您对值实际执行操作时才会在运行时检查类型(如果有的话),而不是在分配它们时.示例:Smalltalk,Python,JavaScript.
  • 类型推断允许静态类型语言看起来像(并具有一些优点)动态类型语言,通过从上下文推断类型,这样您就不必在大多数时间声明它们 - 但与动态语言不同,不能例如最初使用变量来保存字符串然后为其分配一个整数.示例:Haskell,Scala

我不太确定强弱差别,我怀疑它的定义不是很明确:

  • 强类型语言为每个运行时值分配一个类型,并且只允许执行为该类型定义的操作,否则会出现显式类型错误.
  • 弱类型语言没有运行时类型检查 - 如果您尝试对不支持的值执行操作,则结果是不可预测的.它实际上可能会做一些有用的事情,但更有可能你会得到损坏的数据,崩溃或一些难以理解的二次错误.
  • 似乎至少有两种不同类型的弱类型语言(或者可能是连续统一体):
    • 在C和汇编程序中,值基本上是比特桶,因此任何事情都是可能的,如果你让编译器解除引用以空字符结尾的字符串的前4个字节,你最好希望它引导一个不包含合法机器代码的地方.
    • PHP和JavaScript通常也被认为是弱类型的,但不要将值视为不透明的位桶; 但是,它们将执行隐式类型转换.
  • 但是这些隐式转换似乎主要适用于字符串/整数/浮点变量 - 这是否真的能保证分类为弱类型?或者还有其他问题,这些语言的类型系统可能会混淆错误?

language-agnostic type-systems

16
推荐指数
2
解决办法
1675
查看次数

在java中使用TypeLiteral

请提供一些有关如何TypeLiteral使用Google Guice或Java EE的基本信息,如果使用简单的代码解释它将会非常有用,提前感谢

java guice java-ee

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

java库vs android库

Java库和android库有什么区别,各有什么优点/缺点?

java eclipse android

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

如何诊断File.delete()返回false/find unclosed streams?

我正在使用第三方JPEG/EXIF操作库(Mediautil),这让我感到头痛.我想更改图像的EXIF数据.为此,我需要将更新的版本写入临时文件,删除原始文件,然后将临时文件重命名为原始名称.

我的问题是File.delete()调用失败并返回false,可能是因为库仍以某种方式打开它 - 但我已经完成了我在API中找到的所有内容,使其关​​闭所有流.更糟糕的是:问题似乎与时间有关,而且单元测试它发生的地方有时会失败,有时也不会 - 但代码不是多线程的.

奇怪的是,有一个库调用可以解决问题 - 但它也删除了我实际上并不想要的EXIF缩略图.看看代码,我绝对看不到它关闭任何可能保持开放的流.

任何想法如何攻击这个问题?

编辑: 这是在Windows XP,Java 6.另一件事:我发现,如果我在打电话System.gc()之前打电话File.delete(),它可以工作 - 大概是因为这触发了一些终结器.所以它肯定似乎是一个未封闭的流.

java io

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

如何使用+ - */实现XOR?

如何仅使用基本算术运算来实现XOR运算(在两个32位整数上)?按顺序除以2的每个幂后,是否必须按位进行,或者是否有快捷方式?关于最简单,最短的代码,我并不关心执行速度.

编辑: 这不是家庭作业,而是hacker.org上的谜语.重点是在基于堆栈的虚拟机上实现XOR,操作非常有限(类似于brainfuck语言,是 - 没有shift或mod).使用该VM是困难的部分,尽管通过简短的算法当然更容易.

虽然FryGuy的解决方案很聪明,但我必须采用我原来的理想(类似于litb的解决方案),因为在这种环境中难以使用比较.

language-agnostic bit-manipulation xor

12
推荐指数
3
解决办法
5628
查看次数

无法通过Java删除目录

在我的应用程序中,我编写了从驱动器中删除目录的代码,但是当我检查File的删除功能时,它不会删除该文件.我写了一些像这样的东西

//Code to delete the directory if it exists
File directory = new File("c:\\Report\\");
if(directory.exists())
directory.delete(); 
Run Code Online (Sandbox Code Playgroud)

目录未使用仍然无法删除目录

java

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

Groovy系列,0.5步长

在Groovy中,指定一系列整数以及它们之间的0.5步是最常用的方式是什么?例如:1,1.5,2,2.5,3,3.5,4

编辑:澄清:作为最终结果,我需要一个范围对象用于Grails约束.虽然我认为列表也可以.

syntax groovy range

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

Hibernate中的Multimap

我需要一个将条目存储为键值对的集合(所以我可以通过键查找值),但是我需要一个允许多个值使用hibernate共享同一个键的集合

hibernate multimap

9
推荐指数
1
解决办法
4727
查看次数

Grails:复选框未设置为false

我正在开发一个Grails(1.0.4)应用程序,我想在网格视图中编辑单个页面上的集合集合.我只是依赖于Spring MVC的索引参数处理才能使它工作得很好,除了一件事:

网格中的布尔值(或者,就此而言,布尔值)可以通过复选框设置,但不能取消设置,即当我选中复选框并更新时,该值设置为true,但之后当我再次编辑时,取消选中复选框并且更新,它仍然是真的.

这是复选框的GSP代码:

<g:checkBox name="tage[${indexTag}].zuweisungen[${indexMitarb}].fixiert" value="${z.fixiert}" />
Run Code Online (Sandbox Code Playgroud)

这是生成的HTML:

<input type="hidden" name="tage[0].zuweisungen[0]._fixiert" />
<input type="checkbox" name="tage[0].zuweisungen[0].fixiert" checked="checked" id="tage[0].zuweisungen[0].fixiert"  />
Run Code Online (Sandbox Code Playgroud)

我发现了一个Grails错误,它描述了这个效果,但它在1.0.2中标记为固定,并且在那里描述的问题机制(隐藏字段名称中的下划线放在错误的位置)在我的情况下不存在.

任何想法可能是什么原因?

grails spring-mvc

9
推荐指数
1
解决办法
5765
查看次数

如何防止Spring MVC进行重定向?

我想处理更新实体的AJAX请求.我真的不需要它返回任何东西.问题是Spring MVC坚持将重定向发送到同一个URL(显然正在进行重定向后获取),浏览器尽职尽责.

如何才能完成Spring MVC控制器方法并返回一些内容而不发送重定向?在网上搜索只会导致对如何进行重定向的无可争议的讨论,而不是如何避免重定向.

这是对http://localhost:9090/pex/api/testrun/f0a80b46-84b1-462a-af47-d1eadd779f59e这些标头的PUT请求:

Host: localhost:9090
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0
Accept: */*
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Length: 20
Content-Type: application/json
Referer: http://localhost:9090/pex/api/testrun/f0a80b46-84b1-462a-af47-d1eadd779f59e/visualizations/common-api?slas=lp,internal,external
X-Requested-With: XMLHttpRequest
Connection: keep-alive
Authorization: Basic xxxx
Run Code Online (Sandbox Code Playgroud)

响应的状态代码为"302 Found",没有正文内容和这些标题:

Content-Language: "de"
Content-Length: "0"
Location: "http://localhost:9090/pex/api/testrun/f0a80b46-84b1-462a-af47-d1eadd779f59e"
Server: "Jetty(6.1.10)"
access-control-allow-origin: "*"
Run Code Online (Sandbox Code Playgroud)

这是服务器端代码:

@RequestMapping(value = "/api/testrun/{testrunId}", method = RequestMethod.PUT, consumes = "application/json")
@ResponseBody
public Testrun updateOverview(@PathVariable("testrunId") final String testrunId, @RequestBody final String body) {
    return testrunService.updateOverview(testrunId, body);
}
Run Code Online (Sandbox Code Playgroud)

这是进行AJAX调用的Javascript代码:

$(document).ready(function() {
    $("#update_name_form").submit(function …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc

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