我想知道是否有一种更优雅的方式来使用Spring的JDBCTemplate进行IN()查询.目前我做的是这样的:
StringBuilder jobTypeInClauseBuilder = new StringBuilder();
for(int i = 0; i < jobTypes.length; i++) {
Type jobType = jobTypes[i];
if(i != 0) {
jobTypeInClauseBuilder.append(',');
}
jobTypeInClauseBuilder.append(jobType.convert());
}
Run Code Online (Sandbox Code Playgroud)
这是非常痛苦的,因为如果我有九行只是为IN()查询构建子句.我想要像准备语句的参数替换
我有一些大的(超过3个字段)对象,它们可以而且应该是不可变的.每次遇到这种情况时,我倾向于使用长参数列表创建构造函数可恶.它感觉不对,难以使用,可读性受损.
如果字段是某种类似列表的集合类型则更糟糕.一个简单的方法addSibling(S s)可以简化对象的创建,但会使对象变得可变.
在这种情况下你们有什么用?我在使用Scala和Java,但我认为只要语言是面向对象的,问题就是语言不可知.
我能想到的解决方案:
感谢您的输入!
我试图将字符串(即localhost或127.0.0.1)中的IP号或名称指定的地址转换为InetAdress对象.没有构造函数,而是返回InetAddress的静态方法.所以,如果我得到一个主机名,这不是问题,但如果我得到IP号怎么办?有一种方法可以获取byte [],但我不确定这对我有什么帮助.所有其他方法都获取主机名.
有时当我看到我的日志代码时,我想知道我是否做得对.可能没有明确的答案,但我有以下问题:
图书馆课程
我有几个库类可能会记录一些INFO消息.致命错误报告为例外.目前我的类中有一个静态记录器实例,类名作为日志名称.(Log4j的:Logger.getLogger(MyClass.class))
这是正确的方法吗?也许这个库类的用户不希望我的实现发送任何消息,或者想要将它们重定向到特定于应用程序的日志.我应该允许用户从"外部世界"设置记录器吗?你如何处理这种情况?
一般日志
在某些应用程序中,我的类可能希望将日志消息写入未由类名称标识的特定日志.(即:) HTTP Request log这样做的最佳方法是什么?想到一个查找服务......
主要浏览器的实现似乎text-transform: uppercase与土耳其字符有问题.据我所知(我不是土耳其语.)有四个不同的i字符:? i I ?最后两个字符是前两个字符的大写字母.
但是应用text-transform:uppercase到? i的浏览器(IE检查,火狐,Chrome和Safari)的结果I I是不正确,可能这么多,使他们成为侮辱改变的话的含义.(这就是我被告知的)
由于我对解决方案的研究没有透露任何我的问题:这个问题是否有解决方法?第一个解决方法可能是text-transform: uppercase完全删除,但这是最后的手段.
有趣的是,W3C已经在他们的网站上测试了这个问题,但缺乏关于这个问题的进一步信息.http://www.w3.org/International/tests/tests-html-css/tests-text-transform/generate?test=5
我感谢任何帮助,期待你的回答:-)
这是一个codepen
我有关于ThreadPoolExecutor的这个相当简单的问题.我有以下情况:我必须从队列中使用对象,为它们创建适当的工作人员任务并将它们提交给ThreadPoolExecutor.这很简单.但在关闭情况下,许多工作人员可能会排队等待执行.由于其中一个任务可能运行了一个小时,并且我希望相对快速地正常关闭应用程序,我想从ThreadPoolExecutor中丢弃所有排队的任务,而已经处理的任务应该正常完成.
ThreadPoolExecutor文档有一个remove()方法,但只允许删除特定的任务.purge()仅适用于已取消的Future任务.我的想法是清除队列中包含所有排队的任务.ThreadPoolExecutor提供对此内部队列的访问,但文档指出:
方法getQueue()允许访问工作队列以进行监视和调试.强烈建议不要将此方法用于任何其他目的.
所以抓住这个队列并清除它不是一个选择.此外,该文档的片段说:
当大量排队的任务被取消时,两个提供的方法remove(java.lang.Runnable)和purge()可用于协助存储回收.
怎么样?当然,我可以维护我提交给执行程序的所有任务的列表,在关闭的情况下,我遍历所有条目并使用remove()方法将它们从ThreadPoolExecutor中删除......但是...来吧,这是一个浪费记忆力和维护这份清单的麻烦.(例如,删除已执行的任务)
我感谢任何提示或解决方案!
您使用什么工具来使用Scala?在我的学习阶段,我使用了Scala REPL并使用TextMate攻击了一些代码并使用scalacCLI 编译它.但随着项目规模的扩大,需要更复杂的工具.
我知道Elipse,IntelliJ和Netbeans的Scala插件,我尝试了所有这些插件.最好的一个是恕我直言,但仍然远非完美.
我遇到的主要问题是缺乏自动完成功能.作为一个不那么先进的Scala编码器,我仍然不知道整个标准API,并且必须定期在Scaladoc和IDE之间切换.这感觉就像"杀死生产力".但他们都无法自动完成方法论证.(我听说方法参数不包含在编译的scala代码中,但是如何将source附加到自动完成?)
另一个非常烦人的问题是构建过程.我正在使用Maven来构建我的Scala项目并管理它们的依赖项.但是,我必须进行全面重建以测试我的更改.也许我被Java世界中的日食增量重建所破坏,但这对我来说感觉像是一个大问题.
我喜欢斯卡拉非常多,我觉得这样更高效,同时编码,但缺乏sophisticed工具,让我感觉不太生产力.两者似乎都取消了自己.
那么,我的问题是什么?我怀疑每个Scala程序员都使用良好的ol' vim或者emacs与scalac他们一起工作.那么你使用什么工具?您开发了哪些工作流程以加快Scala语言的开发速度?
通过自动完成方法参数来澄清我的内容.
val myList = "foo" :: "all your base" :: Nil
myList.partition(_.length > 3)
Run Code Online (Sandbox Code Playgroud)
对于上面的代码,IntelliJ无法向我提供分区要求我必须传递() => Boolean函数的信息.事实上,IntelliJ不会检查这种约束.我可以传递一个String并且IntelliJ不会指示我的错误,直到我编译.
我最近在做一些Akka并且想知道:我可以在Akka中阻止I/O而不会遇到大麻烦吗?让我们说我们有一个执行一些阻塞I/O的Actor,因为它使用了一个遗留库或者出于任何其他原因:我不能只为那些合理大小的ThreadPool并且没有阻塞I/O的Actors使用特殊的调度程序阻止所有其他演员,因为他们与不同的调度员一起运行?
这有什么缺点?什么是从演员调用第三方HTTP-API的最佳方式?
首先:我在Scala 2.8
在XML元素上使用模式匹配时,我遇到了一些问题.我知道我可以这样做:
val myXML = <a><b>My Text</b></a>
myXML match {
case <a><b>{theText}</b></a> => println(theText)
case _ =>
}
Run Code Online (Sandbox Code Playgroud)
这是我在网上和我的两本Scala书籍中随处可见的那种例子.但是,如果我想根据属性匹配XML元素呢?
val myXML = <a><b type="awesome">An awesome Text!</b></a>
myXML match {
case <a><b type={textType}>{theText}</b><a> => println("An %s text: %s".format(textType, theText))
case _ =>
}
Run Code Online (Sandbox Code Playgroud)
编译器将抛出一个error: in XML literal: '>' expected instead of 't'对我,表明我不能使用属性,因为编译器期望元素标记被关闭.如果我尝试将XML元素与固定属性匹配,而没有花括号,则会引发相同的错误.
所以我的问题很简单:我怎么能做这样的比赛?我是否必须Elem为匹配创建一个而不是使用那些不错的文字?如果:最好的方法是什么?
我在以scala-esque和优雅的方式编写特定应用程序时遇到问题.我现在尝试了一段时间,但我找不到这个问题的"好"解决方案:
鉴于我有以下列表:
List("foo", "bar", "baz", "blah")
Run Code Online (Sandbox Code Playgroud)
我想迭代这个列表,不仅给出了每个迭代的当前元素,还给出了当前元素之前和之后的元素.这可能是一个Tuple3但不是必需的.这可能是元组签名:
(Option[T], T, Option[T])
Run Code Online (Sandbox Code Playgroud)
为了澄清我的意思,这是针对a的每次迭代的建议元组List[String],在第四次之后结束.
迭代1: (None, "foo", Some("bar"))
迭代2: (Some("foo"), "bar", Some("baz"))
迭代3: (Some("bar"), "baz", Some("blah"))
迭代4: (Some("baz"), "blah", None)
我怎么能达到这样的结果?再说一遍:我不受Tuple3的约束,任何其他解决方案也非常感谢!
谢谢!