Java是否有(或者是否有可用的库)允许我拥有基于磁盘的HashMap?它不需要是原子或任何东西,但它将通过多个线程访问,如果两个同时访问同一个元素,则不应该崩溃.
谁知道什么?
在覆盖文件中的数据之前,我想非常确定旧数据存储在磁盘上.它可能是一个非常大的文件(多GB),因此需要就地更新.通常写入将是2 MB或更大(我的计划是使用4 KB的块大小).
而不是(或除了)调用fsync(),我想保留(而不是覆盖)磁盘上的旧数据,直到文件系统写入新数据.我不想依赖fsync()的主要原因是:大多数硬盘都是关于做fsync的.
所以我正在寻找的是文件系统,操作系统(例如Windows),硬盘驱动器的典型最大延迟是什么,直到数据写入磁盘,而不使用fsync或类似的方法.如果可能,我想拥有真实世界的数字.我不是在寻找使用fsync的建议.
我知道没有100%可靠的方法来做到这一点,但我想更好地了解操作系统和文件系统在这方面的工作方式.
到目前为止我发现的是:30秒是/ proc/sys/vm/dirty_expire_centiseconds的默认值.然后" 脏页面被刷新(写入)到磁盘...(当)因为页面保持脏 " 已经过了太多时间 "(但是我找不到默认时间).所以对于Linux来说,40秒似乎是安全的.但这适用于所有文件系统/磁盘吗?那么Windows,Android等等呢?我想得到一个适用于所有常见操作系统/文件系统/磁盘类型的答案,包括Windows,Android,常规硬盘,SSD等.
比方说,我决定使用Java EE堆栈来实现我的企业应用程序.
现在,对于域建模(或:用于设计MVC的M),我可以安全地假设和使用哪些API,哪些我应该远离......比如说,通过抽象层?
例如,
我应该继续使用Hibernate/JPA API调用我的模型吗?或者,我应该构建一个抽象...我自己的持久层,以避免对这两个特定的持久性API进行硬编码?为什么我这样问:几年前,这个Kodo API被Hibernate取代了.如果设计了一个持久层并对该层编码模型的其余部分(而不是通过调用特定的供应商API来乱丢模型),那么它将允许一个(相对)轻松地从Kodo切换到Hibernate到xyz.
是否建议在域模型中积极使用持久性供应商提供的*QL?我不知道由于大量使用类似HQL的语言而产生的任何现实问题(如性能,可伸缩性,可移植性等).为什么我这样问:我希望尽可能避免编写自定义代码,这可以通过比SQL更便携的查询语言来实现.
对不起,我是这个地区的新手.我在哪里可以找到关于此主题的更多信息?
Ember Js和Persistence都有一个alpha版本.AngularJs是否有类似的东西(或者它在计划中)?也许有一些与框架无关的东西?
我需要的是实际的库,它可以实现以下功能:
UPDATE
我找到了这些(学分归Miroslav)
我有一个小应用程序,具有一些保存功能.我有一个名为:Closet的数据模型类:
class Department: NSObject, NSCoding {
var deptName = ""
var managerName = ""
var Task: [Assignment]? // <----- assignment class is in example 2
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(deptName, forKey: "deptName")
aCoder.encodeObject(managerName, forKey: "mngName")
// aCoder.encodeObject(Task, forKey: "taskArray")
}
required init(coder aDecoder: NSCoder) {
super.init()
course = aDecoder.decodeObjectForKey("deptName") as! String
instructor = aDecoder.decodeObjectForKey("mngName") as! String
// Task = aDecoder.decodeObjectForKey("tasKArray") as? [Assignment]
}
override init() {
super.init()
}
}
Run Code Online (Sandbox Code Playgroud)
因此,这是主控制器数据模型,在第一个View Controller中,用户可以点击"+"按钮添加部门名称和管理员名称.问题不在于保存这个,因为我使用NSKeyedArchive成功保存并在应用程序启动时将其加载回来.
问题:
我想在这个名为Assignment的数据模型部门添加一个赋值数组,它有一个title和一个notes变量.这是作业的数据模型: …
对于我正在编写的java应用程序,我需要一个超轻量级的持久层.我需要它成为一个独立的应用程序,到目前为止,我已经玩Ammentos和Persistence4J.我喜欢他们(尤其是Ammentos),但我在网上找不到太多内容,我正在寻找关于这两个或任何其他持久层的想法,你认为这些层很容易用mysql db部署.
我过去只使用过hibernate所以我正在寻找一种只允许我进行简单保存和检索的替代方案.不需要支持任何复杂的查询.
我是 Microsoft Orleans 的新手,在阅读文档时我发现了这一点:
... Grain 持久性使用可扩展的插件模型,以便可以使用任何数据库的存储提供程序。此持久性模型的设计是为了简单性,并不旨在涵盖所有数据访问模式。Grains还可以直接访问数据库,而不需要使用Grain持久化模型。 这里
但在文档的其余部分中,仅描述了使用存储提供程序进行粒度持久性的方法。但对于这些提供程序,我仍然想知道如何像关系数据库中那样执行复杂的请求(使用 JOIN、GROUP BY、ORDER BY 等)。
所以我担心的是:
使用直接访问关系数据库进行 Grain 持久化的优点和缺点是什么?
我正在使用Perl进行与安全相关的任务,并且想知道何时发表如下声明:
$test = "new value"
执行,是$test在RAM中覆盖创建的旧值?
如果没有,有没有办法强迫这种情况发生?
我有一个带有子节点(节点)的自定义LinkedTree,节点具有邻接关系,即每个节点与上一个节点和下一个节点链接.这个LinkedTree非常重,很大,可能包含数百万个节点.

这是一个代码示例:
package tree;
import java.io.Serializable;
public class LinkedTree<E> implements Serializable {
private int size = 0;
private Node<E> first;
private Node<E> last;
private LinkedTree<E> children;
public LinkedTree() {
children = new LinkedTree<>();
}
public LinkedTree(LinkedTree<E> children) {
this.children = children;
}
public void add(E element) {
final Node<E> l = last;
final Node<E> newNode = new Node<>(l, element, null);
last = newNode;
if (l == null)
first = newNode;
else
l.next = newNode;
size++;
}
public void remove(E element) …Run Code Online (Sandbox Code Playgroud)