我是一名Java程序员,对企业界不熟悉.最近我使用Groovy和Java 开发了一个应用程序.我编写的所有代码都使用了相当多的静态代码.高级技术部门要求我减少使用的静力学数量.我用Google搜索了同样的东西,我发现很多程序员都反对使用静态变量.
我发现静态变量使用起来更方便.而且我认为它们也是有效的(如果我错了,请纠正我),因为如果我必须对一个类中的函数进行10,000次调用,我很乐意将该方法设置为静态并使用简单的方法Class.methodCall()而不是用10,000个类的实例来混乱内存,对吧?
此外,静态减少了代码其他部分的相互依赖性.他们可以充当完美的国家持有者.除此之外,我发现静态在一些语言中得到广泛实现,如Smalltalk和Scala.那么为什么程序员(尤其是Java世界)中普遍存在对静态的压迫呢?
PS:如果我对静力学的假设是错误的,请纠正我.
Input >> list = [[1,2,3], [6], [3,4,5,6]]
Output >> [1,2,3,3,4,5,6,6]
Run Code Online (Sandbox Code Playgroud)
我想知道是否有比这更简单的事情
l = []
list.each{ l = l + it }
println l
Run Code Online (Sandbox Code Playgroud)
像默认的groovy闭包或方法?
我是新来的Groovy和我已经遇到了一些问题了解each{}和eachwithindex{}语句Groovy中.
是each和eachWithIndex实际的方法?如果是这样,他们采取的论点是什么?
在groovy文档中有这个例子:
def numbers = [ 5, 7, 9, 12 ]
numbers.eachWithIndex{ num, idx -> println "$idx: $num" } //prints each index and number
Run Code Online (Sandbox Code Playgroud)
好吧,我看到那numbers是一个数组.什么是num和idx上面的语句?什么是->运营商吗?
我知道,$idx和$num打印的价值,但它是如何idx和num自动正与数组的索引和内容相关的?这背后的逻辑是什么?请帮忙.
我有一种情况,我需要通过读取注册表设置返回目录路径.注册表值以格式返回一条路径
%CommonProgramFiles%\System\web32.dll
Run Code Online (Sandbox Code Playgroud)
而消费者代码期望它的格式
C:\Program Files\Common Files\System\web32.dll
Run Code Online (Sandbox Code Playgroud)
如何在.net代码中解析此类目录路径?
我试图理解currying在函数式编程中是如何工作的.我已经通过wiki和关于SO的几个问题.
我理解currying是关于将一个带有n个参数的函数分成n个或更少的函数,每个函数都有一个参数.我理论上理解它,但在编码时我无法连接点.也许是因为我缺乏函数式编程语言或C#的知识(正如上面问题中的许多答案所述).
无论如何,我理解groovy和java.所以我试着add(a,b)在groovy中得到标准函数的大纲,但我无法完成它.
def closure = { arg ->
// ??
}
def add(anotherClosure , a){
return closure // ??
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮我理解使用groovy闭包的curry吗?
我正在运行从mongodb获取数据的php脚本.我有一个非常庞大的数据库,我得到这个例外..我的mongodb版本是1.6.5
PHP Fatal error: Uncaught exception 'MongoCursorTimeoutException'
with message 'cursor timed out
(timeout: 30000, time left: 0:0, status: 0)
Run Code Online (Sandbox Code Playgroud)
我的查询是这样的
private function executeRegex($start_date, $end_date, $source, $collection, $db)
{
$criteria = array(
'date' => array(
'$gte' => new MongoDate(strtotime($start_date)),
'$lt' => new MongoDate(strtotime($end_date))
),
'uid'=> array(
'$ne' => '-',
),
'source' => new MongoRegex($source)
);
$value = $db->command(array('distinct' => $collection, 'key' => 'uid', 'query' => $criteria));
return count($value['values']);
}
Run Code Online (Sandbox Code Playgroud)
如何将超时设置为无限,以便我不会得到此异常
我正在研究一个由复杂的对象组合驱动的java编码的复杂企业应用程序.例如:在特定情况下,要执行操作,这是流程:
login() ->
Followed by defined sequence of 10 to 20 method calls in different classes ->
Followed by a logout()
Run Code Online (Sandbox Code Playgroud)
在框架内,几乎所有操作(包括登录,注销和许多10到20个方法调用)都没有返回类型.任何错误的行为都由框架处理.说,在登录
public void login(){
try{
//login actions
//chained sequence of calls
}catch(){
// framework handling exceptions and other rollback options
}
}
Run Code Online (Sandbox Code Playgroud)
中间10到20个动作是对框架的不同层次结构的不同对象的方法调用.
随机类看起来像这样:
class someobject{
def variable
void action1(){ do something on variable }
void action2(){ do something on variable }
...
}
Run Code Online (Sandbox Code Playgroud)
变量经常改变状态,这些动作只有一个我觉得很烦人的框架定义的序列.
我会说,或许如果有适当的返回类型或者至少有一些这样的方法,就像在布尔的情况下那样login(),生活将会轻松得多.由于对一系列空隙返回功能的严格遵守,我发现很难通过调试来理解流程,单元测试也成了我的噩梦.
所以现在,我的印象是,编写返回内容的函数总是更好,特别是当涉及一系列操作时.那么,这是一个安全的推定吗?我想对此发表意见.如果我错了,请纠正我.
我在日志文件中看到了大量的错误.似乎没有任何东西导致我们的用户没有看到任何错误.什么可能导致他们?我们正在运行CF 8.
仅供参考:他们每秒发生多次.
12/11 12:30:13 error jrunx.scheduler.SchedulerService.cancel()
java.lang.NoSuchMethodException: jrunx.scheduler.SchedulerService.cancel()
at java.lang.Class.getMethod(Class.java:1605)
at jrunx.rmi.RMIBroker.invokeService(RMIBroker.java:280)
at jrunx.rmi.RMIBroker.invoke(RMIBroker.java:137)
at sun.reflect.GeneratedMethodAccessor27.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
at sun.rmi.transport.Transport$1.run(Transport.java:159)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
IOException upon attempt to marshall 0 argument of type jrun.servlet.session.SessionHolder.
12/11 12:30:13 error
java.lang.reflect.UndeclaredThrowableException
at $Proxy2.cancel(Unknown Source)
at jrunx.kernel.ServiceAdapter.unscheduleRunnable(ServiceAdapter.java:760)
at jrun.servlet.session.SessionService.unscheduleRunnable(SessionService.java:1019)
at jrun.servlet.session.SessionHolder.reschedule(SessionHolder.java:148)
at jrun.servlet.session.JRunSession.setMaxInactiveInterval(JRunSession.java:135)
at jrun.servlet.session.SessionService.createSession(SessionService.java:1250)
at jrun.servlet.ForwardRequest.getSession(ForwardRequest.java:384)
at coldfusion.runtime.AppHelper.setupJ2eeSessionScope(AppHelper.java:521)
at coldfusion.runtime.AppHelper.setupSessionScope(AppHelper.java:592)
at coldfusion.tagext.lang.ApplicationTag.doStartTag(ApplicationTag.java:279) …Run Code Online (Sandbox Code Playgroud) 我正在使用一种方法,它返回一个数据源.方法如下:
public static DataSource getDataSource(){
String url;
//url="jdbc:hsqldb:file:"+filePath;
url = "jdbc:hsqldb:file:D:/EclipseWorskpace/ew-pg/lmexadapter/hsqldb-example/src/main/webapp/WEB-INF/data/db/hsqldb.jar";
BasicDataSource basicDataSource = new BasicDataSource();
basicDataSource.setUsername("SA");
basicDataSource.setPassword("password");
basicDataSource.setDriverClassName("org.hsqldb.jdbc.JDBCDriver");
basicDataSource.setUrl(url);
System.out.println("$$$$$$$$ URL is : " + url);
return basicDataSource;
}
Run Code Online (Sandbox Code Playgroud)
我从dao调用这些方法.并且所有这些我使用ibatis进行OR映射.当我通过junit test运行我的测试用例时,它给了我一个例外:
" org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class 'org.hsqldb.jdbcDriver'
at org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1259)
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1192)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:884)
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:113)
at org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.invoke(TransactionAwareDataSourceProxy.java:213)
... 35 more
Caused by: java.lang.ClassNotFoundException: org.hsqldb.jdbcDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1253)
... 39 more …Run Code Online (Sandbox Code Playgroud) 有没有办法从Windows上的网络共享位置读取文件?
比方说,我就是这个简单的代码,它从Addons文件夹中读取一个名为readMe.txt的文本文件.
import java.io.File;
class Sample{
public static void main(String[] ar){
File file = new File("Addons/ReadMe.txt");
System.out.println(file.getAbsolutePath());
//followed by printing the contents of file
}
}
Run Code Online (Sandbox Code Playgroud)
我使用的是Windows批处理执行此文件runme.bat有
java Sample
PAUSE
Run Code Online (Sandbox Code Playgroud)
只有当我将Addons文件夹与ReadMe.txt,Sample.class,runme.bat文件放在本地驱动器中时,bat才会运行并执行上面的类.
将它放在具有UNC路径的网络共享位置时,如\\name\Shared
在这种情况下,bat文件通常从C:\ Windows启动基础并抛出classNotFoundException.我宁愿将共享驱动器映射到*Z:*驱动器或其他什么,但我不想这样做.
我希望代码以编程方式检测和检索Addons文件夹中Readme.txt的内容,而不管它是在本地驱动器上还是在共享驱动器上执行.有没有办法实现这个目标?请帮忙..
谢谢
Veekay