我将开始一个Java项目来开发一个桌面应用程序。 什么用作表示层模式(MVC,MVP,MVVM或….)? …如果可能的话,用一些小小的例子… 🙂
我使用FileChannel.map()将文件(“sample.txt”)映射到内存,然后使用fc.close()closures通道。 之后,当我使用FileOutputStream写入文件时,出现以下错误: java.io.FileNotFoundException:sample.txt(请求的操作不能在打开了用户映射部分的文件上形成) File f = new File("sample.txt"); RandomAccessFile raf = new RandomAccessFile(f,"rw"); FileChannel fc = raf.getChannel(); MappedByteBuffer mbf = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size()); fc.close(); raf.close(); FileOutputStream fos = new FileOutputStream(f); fos.write(str.getBytes()); fos.close(); 我认为这可能是由于文件仍然映射到内存,即使我closuresFileChannel 。 我对吗?。 如果是这样,我怎样才能从内存“取消映射”文件?(我无法find任何API的方法)。 谢谢。 编辑:看起来像(添加一个unmap方法)被提交作为RFE太阳一些回: http : //bugs.sun.com/view_bug.do?bug_id=4724038
java.lang.Class.getInterfaces返回所有直接实现的接口,即不会遍历类树来获取所有父types的所有接口。 例如,层次结构 public interface A {} public interface B {} public interface C extends B {} public class Foo implements A {} // Foo.class.getInterfaces() returns [A] public class Bar implements C {} // Bar.class.getInterfaces() returns [C], note B is not included. 对于Bar我想得到[B, C] ,但是对于任意的树深度。 我可以自己写这个,但是我确定一个图书馆必须存在这样做,任何想法?
我有三个类的名称是用户和这个用户有其他类的实例。 喜欢这个; public class User{ @OneToMany(fetch=FetchType.LAZY, cascade = CascadeType.ALL) public List<APost> aPosts; @OneToMany(fetch=FetchType.LAZY, cascade = CascadeType.ALL) public List<BPost> bPosts; } public class BPost extends Post { @ManyToOne(fetch=FetchType.LAZY) public User user; } public class APost extends Post { @ManyToOne(fetch=FetchType.LAZY) public User user; } 它是这样的工作,但在数据库中生成emty表。 其中必须包含外键。 当我试图使用mappedBy和JoinColumn annotains我失败了。 我该如何解决这个问题? 额外的信息: 当我改变了; @ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name="id") public User user; 和 […]
这个问题已经被另一个SO成员问过了,但是被删除的令人失望。 评论说这些测量是有缺陷的,没有意义。 但是我能够用JMH下的一个小基准重现原来的问题: package bench; import org.openjdk.jmh.annotations.*; import org.openjdk.jmh.runner.*; import org.openjdk.jmh.runner.options.*; import java.util.concurrent.*; @State(Scope.Benchmark) public class LoopInc { private int getValue() { return ThreadLocalRandom.current().nextInt(2); } @Benchmark public int directInc() { int result = 0; for (int i = 0; i < 1000; i++) { switch (getValue()) { case 0: break; case 1: result++; break; } […]
我有一个150MB的单页excel文件,需要大约7分钟,打开一个非常强大的机器上使用以下内容: # using python import xlrd wb = xlrd.open_workbook(file) sh = wb.sheet_by_index(0) 有没有办法更快地打开Excel文件? 我打开甚至非常古怪的build议(如hadoop,火花,c,java等)。 理想情况下,我正在寻找一种方法来在30秒内打开文件,如果这不是一个梦想。 另外,上面的例子是使用python,但它不一定是python。 注意:这是来自客户端的Excel文件。 在我们收到它之前,它不能被转换成任何其他的格式。 这不是我们的文件 更新:回答一个代码的工作示例,将在30秒内打开以下200MB的Excel文件将奖励赏金: https : //drive.google.com/file/d/0B_CXvCTOo7_2VW9id2VXRWZrbzQ/view? usp =共享 。 这个文件应该有string(col 1),date(col 9)和数字(col 11)。
GWT的序列化程序对java.io.Serializable支持有限,但出于安全原因,它有一个支持types的白名单。 我find的文档,例如这个FAQ条目说,你想要序列化的任何types“必须包含在序列化策略白名单中”,并且列表是在编译时生成的,但是不能解释编译器如何决定白名单上发生了什么。 生成的列表包含许多属于标准库的types,如java.lang.String和java.util.HashMap 。 尝试序列化实现Serializable接口但不在白名单上的java.sql.Date时出现错误。 我怎样才能将这种types添加到列表中?
这可能是一个愚蠢的问题,但我从来没有find一个令人满意的方式来命名Java中的typesHashMap<K,V>的variables。 例如 – 可以说我有一个HashMap ,其中每个桶是一个<K,V>对,其中K是一个String表示“状态”, V是一个Integer代表状态的县数。 HashMap应该被命名为“ mapStateCounty ”,“ stateToCountyMap ”等。 哪一个在逻辑上看起来更具吸引力,而且直观易懂,不会令人困惑和冗长?
logback的configuration文件可以在类path中find,因此是Eclipse-project-specific,这不是我想要的。 我使用多个Java实用程序,所有这些实用程序驻留在一个单独的项目(这共享类path),我需要使用一些特定的configuration。 我试过variables替代和Joramconfiguration器,但没有为我工作。 这很可能是我的错,有一天我会解决它,但现在我需要一个简单的解决scheme。
所以,我试图让我的机器的IP地址在我的本地networking(应该是192.168.178.41 )。 我的第一个意图是使用这样的东西: InetAddress.getLocalHost().getHostAddress(); 但它只返回127.0.0.1 ,这是正确的,但对我来说不是很有帮助。 我周围search,发现这个答案https://stackoverflow.com/a/2381398/717341 ,它只是创build一个连接到一些网页(例如“google.com”)的Socket连接,并从套接字获取本地主机地址: Socket s = new Socket("google.com", 80); System.out.println(s.getLocalAddress().getHostAddress()); s.close(); 这对我的机器(它返回192.168.178.41 ),但它需要连接到互联网才能正常工作。 由于我的应用程序不需要互联网连接,它可能看起来应该试图连接到谷歌每次启动“可疑”,我不喜欢使用它的想法。 所以,经过一些更多的研究,我偶然发现了NetworkInterface类,它(有些工作)也返回了所需的IP地址: Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces(); while (interfaces.hasMoreElements()){ NetworkInterface current = interfaces.nextElement(); System.out.println(current); if (!current.isUp() || current.isLoopback() || current.isVirtual()) continue; Enumeration<InetAddress> addresses = current.getInetAddresses(); while (addresses.hasMoreElements()){ InetAddress current_addr = addresses.nextElement(); if (current_addr.isLoopbackAddress()) continue; System.out.println(current_addr.getHostAddress()); } } 在我的机器上,这返回以下内容: […]