小编Mal*_*lax的帖子

如何有效地使用Spring的JDBCTemplate执行IN()SQL查询?

我想知道是否有一种更优雅的方式来使用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()查询构建子句.我想要像准备语句的参数替换

java sql spring jdbc jdbctemplate

172
推荐指数
3
解决办法
17万
查看次数

在不使用具有长参数列表的构造函数的情况下构建大的不可变对象

我有一些大的(超过3个字段)对象,它们可以而且应该是不可变的.每次遇到这种情况时,我倾向于使用长参数列表创建构造函数可恶.它感觉不对,难以使用,可读性受损.

如果字段是某种类似列表的集合类型则更糟糕.一个简单的方法addSibling(S s)可以简化对象的创建,但会使对象变得可变.

在这种情况下你们有什么用?我在使用Scala和Java,但我认为只要语言是面向对象的,问题就是语言不可知.

我能想到的解决方案:

  1. "具有长参数列表的构造函数可憎"
  2. Builder模式

感谢您的输入!

java oop scala immutability

96
推荐指数
7
解决办法
1万
查看次数

在Java中创建InetAddress对象

我试图将字符串(即localhost127.0.0.1)中的IP号或名称指定的地址转换为InetAdress对象.没有构造函数,而是返回InetAddress的静态方法.所以,如果我得到一个主机名,这不是问题,但如果我得到IP号怎么办?有一种方法可以获取byte [],但我不确定这对我有什么帮助.所有其他方法都获取主机名.

InetAddress API文档

java ip

70
推荐指数
3
解决办法
13万
查看次数

登录Java和一般:最佳实践?

有时当我看到我的日志代码时,我想知道我是否做得对.可能没有明确的答案,但我有以下问题:

图书馆课程

我有几个库类可能会记录一些INFO消息.致命错误报告为例外.目前我的类中有一个静态记录器实例,类名作为日志名称.(Log4j的:Logger.getLogger(MyClass.class))

这是正确的方法吗?也许这个库类的用户不希望我的实现发送任何消息,或者想要将它们重定向到特定于应用程序的日志.我应该允许用户从"外部世界"设置记录器吗?你如何处理这种情况?

一般日志

在某些应用程序中,我的类可能希望将日志消息写入未由类名称标识的特定日志.(即:) HTTP Request log这样做的最佳方法是什么?想到一个查找服务......

java logging log4j

64
推荐指数
6
解决办法
5万
查看次数

CSS:text-transform对土耳其语字符不起作用

主要浏览器的实现似乎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

html css internationalization lang uppercase

51
推荐指数
3
解决办法
2万
查看次数

删除ThreadPoolExecutor的所有排队任务

我有关于ThreadPoolExecutor的这个相当简单的问题.我有以下情况:我必须从队列中使用对象,为它们创建适当的工作人员任务并将它们提交给ThreadPoolExecutor.这很简单.但在关闭情况下,许多工作人员可能会排队等待执行.由于其中一个任务可能运行了一个小时,并且我希望相对快速地正常关闭应用程序,我想从ThreadPoolExecutor中丢弃所有排队的任务,而已经处理的任务应该正常完成.

ThreadPoolExecutor文档有一个remove()方法,但只允许删除特定的任务.purge()仅适用于已取消的Future任务.我的想法是清除队列中包含所有排队的任务.ThreadPoolExecutor提供对此内部队列的访问,但文档指出:

方法getQueue()允许访问工作队列以进行监视和调试.强烈建议不要将此方法用于任何其他目的.

所以抓住这个队列并清除它不是一个选择.此外,该文档的片段说:

当大量排队的任务被取消时,两个提供的方法remove(java.lang.Runnable)和purge()可用于协助存储回收.

怎么样?当然,我可以维护我提交给执行程序的所有任务的列表,在关闭的情况下,我遍历所有条目并使用remove()方法将它们从ThreadPoolExecutor中删除......但是...来吧,这是一个浪费记忆力和维护这份清单的麻烦.(例如,删除已执行的任务)

我感谢任何提示或解决方案!

java multithreading executorservice executor threadpool

26
推荐指数
4
解决办法
2万
查看次数

如何使用Scala提高工作效率?(工具,IDE)

您使用什么工具来使用Scala?在我的学习阶段,我使用了Scala REPL并使用TextMate攻击了一些代码并使用scalacCLI 编译它.但随着项目规模的扩大,需要更复杂的工具.

我知道Elipse,IntelliJ和Netbeans的Scala插件,我尝试了所有这些插件.最好的一个是恕我直言,但仍然远非完美.

我遇到的主要问题是缺乏自动完成功能.作为一个不那么先进的Scala编码器,我仍然不知道整个标准API,并且必须定期在Scaladoc和IDE之间切换.这感觉就像"杀死生产力".但他们都无法自动完成方法论证.(我听说方法参数不包含在编译的scala代码中,但是如何将source附加到自动完成?)

另一个非常烦人的问题是构建过程.我正在使用Maven来构建我的Scala项目并管理它们的依赖项.但是,我必须进行全面重建以测试我的更改.也许我被Java世界中的日食增量重建所破坏,但这对我来说感觉像是一个大问题.

我喜欢斯卡拉非常多,我觉得这样更高效,同时编码,但缺乏sophisticed工具,让我感觉不太生产力.两者似乎都取消了自己.

那么,我的问题是什么?我怀疑每个Scala程序员都使用良好的ol' vim或者emacsscalac他们一起工作.那么你使用什么工具?您开发了哪些工作流程以加快Scala语言的开发速度?

编辑

通过自动完成方法参数来澄清我的内容.

val myList = "foo" :: "all your base" :: Nil
myList.partition(_.length > 3)
Run Code Online (Sandbox Code Playgroud)

对于上面的代码,IntelliJ无法向我提供分区要求我必须传递() => Boolean函数的信息.事实上,IntelliJ不会检查这种约束.我可以传递一个String并且IntelliJ不会指示我的错误,直到我编译.

workflow scala

21
推荐指数
2
解决办法
8433
查看次数

在Akka阻止IO

我最近在做一些Akka并且想知道:我可以在Akka中阻止I/O而不会遇到大麻烦吗?让我们说我们有一个执行一些阻塞I/O的Actor,因为它使用了一个遗留库或者出于任何其他原因:我不能只为那些合理大小的ThreadPool并且没有阻塞I/O的Actors使用特殊的调度程序阻止所有其他演员,因为他们与不同的调度员一起运行?

这有什么缺点?什么是从演员调用第三方HTTP-API的最佳方式?

scala akka

18
推荐指数
1
解决办法
2662
查看次数

Scala XML模式匹配和属性

首先:我在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为匹配创建一个而不是使用那些不错的文字?如果:最好的方法是什么?

xml scala pattern-matching

12
推荐指数
1
解决办法
7388
查看次数

迭代列表,返回当前,下一个和当前之前的元素

我在以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的约束,任何其他解决方案也非常感谢!

谢谢!

iteration scala tuples list

11
推荐指数
1
解决办法
6221
查看次数