在Java中使用一系列整数获取迭代器的最短路径是什么?换句话说,实现以下内容:
/**
* Returns an Iterator over the integers from first to first+count.
*/
Iterator<Integer> iterator(Integer first, Integer count);
Run Code Online (Sandbox Code Playgroud)
就像是
(first..first+count).iterator()
Run Code Online (Sandbox Code Playgroud) 自从我两年前开始作为专业软件开发人员开始我的第一份工作以来,我读过很多关于普遍接受的方法(例如Scrum,XP),技术(例如EJB,Spring),技术(例如TDD,代码评论)的文章.软件公司的工具(bug跟踪,维基)等等.
对于其中许多人,我发现我们公司没有使用它们,我问自己为什么.我们做错了还是仅仅是我读过的这些文章并没有真正说明它在现实世界中是什么样的?这些文章更具学术性吗?
那么,请告诉我你公司的情况.讲述有关软件开发的所有内容.以下是一些建议(按照我的想法顺序).至少告诉你是否这样做,或者做一个简短的评论:
请记住:我想知道你真正做了什么,而不是你想做什么或认为你应该做什么.
你有一个Hibernate实体的公共基类,即具有id,version和其他常见属性的MappedSuperclass吗?有什么缺点吗?
例:
@MappedSuperclass()
public class BaseEntity {
private Long id;
private Long version;
...
@Id @GeneratedValue(strategy = GenerationType.AUTO)
public Long getId() {return id;}
public void setId(Long id) {this.id = id;}
@Version
public Long getVersion() {return version;}
...
// Common properties
@Temporal(TemporalType.TIMESTAMP)
public Date creationDate() {return creationDate;}
...
}
@Entity
public class Customer extends BaseEntity {
private String customerName;
...
}
Run Code Online (Sandbox Code Playgroud) 我在以下Compojure示例中获取表单参数时遇到问题:
(ns hello-world
(:use compojure.core, ring.adapter.jetty)
(:require [compojure.route :as route]))
(defn view-form []
(str "<html><head></head><body>"
"<form method=\"post\">"
"Title <input type=\"text\" name=\"title\"/>"
"<input type=\"submit\"/>"
"</form></body></html>"))
(defroutes main-routes
(GET "/" [] "Hello World")
(GET "/new" [] (view-form))
(POST "/new" {params :params} (prn "params:" params))
(route/not-found "Not Found"))
(run-jetty main-routes {:port 8088})
Run Code Online (Sandbox Code Playgroud)
提交表单时,输出始终是
params: {}
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚为什么title参数不在params地图中.
我正在使用Compojure 0.6.2.
我有一个应用程序临时需要一些特定的内存/堆用于某些进程.给定JVM作为选项的最大堆大小的合理值,JVM从一个小堆开始,并根据需要从OS请求更多内存.
我的问题是,如果我的应用程序不再需要大量内存,那么JVM会将更多内存返回给操作系统(例如,用于其他进程).目前我的应用程序似乎永远保留了内存,即使不再需要.
我正在阅读Steve McConell的Code Complete,我正在考虑他在松散耦合的一节中给出的一个例子.它是关于计算员工假期数量的方法的界面,该方法是根据员工的入职日期及其销售额计算得出的.作者建议将输入日期和销售作为方法的参数而不是雇员的实例:
int holidays(Date entryDate, Number sales)
Run Code Online (Sandbox Code Playgroud)
代替
int holidays(Employee emp)
Run Code Online (Sandbox Code Playgroud)
这个论点是,这解耦了方法的客户端,因为它不需要知道关于Employee类的任何信息.
我想到了两件事:
提供计算所需的所有参数会破坏封装.它显示了该方法的内部结构如何计算结果.
更改更难,例如当有人决定员工的年龄也应该包含在计算中时.人们必须改变签名.
你怎么看?
在开发同一家公司用Java编写的分布式应用程序时,您会选择Web服务还是RMI?在性能,松散耦合,易用性方面,有哪些优点和缺点?有人会选择WS吗?你能用RMI构建面向服务的架构吗?
我是Cojure的新手,但我读到在使用AOT编译时会为每个函数生成一个类.这是不是意味着很多消耗了perm-gen空间的类?这有什么问题吗?什么时候不使用AOT编译,但是动态生成字节码?
我应该为可能的/预测的未来更改准备我的代码,以便即使我不知道这些更改是否随时都需要更容易进行这些更改?
例如,如果我执行修改String元类的Groovy脚本,则添加方法foo()
GroovyShell shell1 = new GroovyShell();
shell1.evaluate("String.metaClass.foo = {-> delegate.toUpperCase()}");
Run Code Online (Sandbox Code Playgroud)
当我在那之后创建一个新的shell并执行它时,更改仍然存在
GroovyShell shell2 = new GroovyShell();
Object result = shell2.evaluate("'a'.foo()");
Run Code Online (Sandbox Code Playgroud)
有没有办法在执行GroovyShell后撤消所有元类更改?我试过了
shell1.getClassLoader().clearCache();
Run Code Online (Sandbox Code Playgroud)
和
shell1.resetLoadedClasses();
Run Code Online (Sandbox Code Playgroud)
但这没有改变.