我们目前正在编写一个分为多个项目/模块的应用程序.例如,让我们采用以下模块:
每个模块都有自己的Spring上下文xml文件.对于DAO模块,我有一个PropertyPlaceholderConfigurer,它使用必要的db连接参数读取属性文件.在jabber模块中,我还有一个用于jabber连接属性的PropertyPlaceHolderConfigurer.
现在主要的应用程序包括myApp-DAO和myApp-jabber.它读取所有上下文文件并启动一个大的Spring上下文.不幸的是,似乎每个上下文只能有一个PropertyPlaceholderConfigurer,因此首先加载的模块能够读取它的连接参数.另一个抛出异常,出现"无法解析占位符'jabber.host'"这样的错误
我有点理解问题是什么,但我真的不知道解决方案 - 或者是我用例的最佳实践.
我如何配置每个模块,以便每个模块都能加载自己的属性文件?现在我已经将PropertyPlaceHolderConfigurer移出了单独的上下文文件,并将它们合并到主应用程序的上下文中(使用单个PropertyPlaceHolderConfigurer加载所有属性文件).这很糟糕,因为现在每个使用dao模块的人都必须知道,他们在上下文中需要一个PropertyPlaceHolderConfigurer .. dao模块中的集成测试也会失败等等.
我很想知道来自stackoverflow社区的解决方案/想法.
jQuery UI datepicker有一个选项,只在单击按钮图像时打开日期选择器.请参阅以下示例:
http://jqueryui.com/demos/datepicker/#icon-trigger
问题是,一旦datepicker打开,焦点就在文本字段中.是否可以禁用焦点设置?
当在iPhone等移动设备上使用上述页面时,键盘会弹出,因为文本字段会获得焦点.这不是真正的用户友好,因为您必须关闭键盘才能真正到达日期选择器并使用它...
使用java线程时,必须通过同步等处理并发性带来的基本问题.
AFAIK Tomcat还可以与线程一起处理其工作负载.为什么我在Tomcat中运行时不必考虑使代码线程安全?
我有一个可变长度的字符串,在字符串的末尾是一些数字.什么是最好/最有效的方法,解析字符串并从最终获得数字作为整数?
字符串和末尾的数字可以是任意长度.例如:
abcd123 --> 123 abc12345 --> 12345 ab4cd1 --> 1
我正在使用DecimalFormat解析/验证用户输入.不幸的是,它在解析时允许字符作为后缀.
示例代码:
try {
final NumberFormat numberFormat = new DecimalFormat();
System.out.println(numberFormat.parse("12abc"));
System.out.println(numberFormat.parse("abc12"));
} catch (final ParseException e) {
System.out.println("parse exception");
}
Run Code Online (Sandbox Code Playgroud)
结果:
12
parse exception
Run Code Online (Sandbox Code Playgroud)
我实际上期望两者都有一个解析异常.如何判断DecimalFormat不允许输入"12abc"?
我正在使用一个框架,它会不时地返回带有"空"字符的格式错误的字符串.
例如,"foobar"表示为:[,f,o,o,b,a,r]
第一个字符不是空格(''),因此System.out.printlin()将返回"foobar"而不是"foobar".然而,String的长度是7而不是6.显然这使得大多数String方法(equals,split,substring,..)无用.有没有办法从字符串中删除空字符?
我试着像这样构建一个新的String:
StringBuilder sb = new StringBuilder();
for (final char character : malformedString.toCharArray()) {
if (Character.isDefined(character)) {
sb.append(character);
}
}
sb.toString();
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用.与以下代码相同:
StringBuilder sb = new StringBuilder();
for (final Character character : malformedString.toCharArray()) {
if (character != null) {
sb.append(character);
}
}
sb.toString();
Run Code Online (Sandbox Code Playgroud)
我也无法检查这样的空字符:
if (character == ''){
//
}
Run Code Online (Sandbox Code Playgroud)
显然字符串有问题..但我无法更改我正在使用的框架或等待它们修复它(如果它是框架中的错误).我需要处理这个String并对其进行sanatize.
有任何想法吗?
我正在使用Apache POI来创建xls电子表格.有没有办法检测数据是否适合纵向模式,或者我是否必须将工作表设置为横向模式?我知道如何设置模式,但我不知道如何确定数据是否适合当前的打印方向.
我目前正在开发一个网站,用户可以根据属性(年龄,身高,城镇,教育等)搜索其他用户.我现在想在用户配置文件之间实现某种评级.基于2个给定配置文件之间的相似性,通过其自己的算法计算评级.例如,用户A的用户B评级为"匹配评级"85,用户C评级为79.B和C的评级为94,依此类推......
用户应该能够搜索某些属性并按评级过滤结果.
由于评级因配置文件而异,并且还取决于用户进行搜索,因此我不能简单地向用户表添加字段并使用ORDER BY.到目前为止,我想出了两个解决方案:
我的第一个解决方案是每晚进行批处理作业,计算每个可能的用户组合的评级,并将其存储在单独的表(user1,user2,rating)中.然后,我可以使用用户表加入此表,并按评级顺序排列结果.做了一些数学后,我认为这个解决方案不能很好地扩展.
基于公式n*(n-1)/ 2,对于10个用户有45种可能的组合.对于1.000用户,我突然需要在我的评级表中插入499.500个评级组合.
第二个解决方案是留下MySQL,并在我的应用程序中即时计算评级.这也不能很好地扩展.假设搜索应该只返回100个结果到UI(顶部评分最高).如果我有10.000个用户并且我想搜索生活在纽约的每个用户按等级排序,我必须将每个居住在纽约的用户加载到我的应用程序中(假设为3.000),应用算法然后仅返回前100名给用户.这样我就从数据库中加载了2.900个无用的用户对象,并在算法上浪费了CPU,而没有对它做任何事情.
任何想法我如何在我的MySQL数据库或网络应用程序中设计这个,以便用户可以以系统扩展到超过几千个用户的方式与每个其他用户进行单独评级?
我有一个Ajax事件触发重绘各种Wicket面板.有些面板在onBeforeRender()方法中有自己的额外计算.如果有错误,我想将其显示给用户.但是我无法将FeedbackPanel添加到AjaxRequestTarget中,因为我无法在正在重绘的面板内访问它.
有没有办法在Wicket组件的onBeforeRender()中获取AjaxRequestTarget?一旦第一个组件已经处于onBeforeRender()状态,是否可以向Ajax目标添加其他组件?
如果只需要重绘的面板可以判断是否存在错误,是否有更好的方法将FeedbackPanel添加到Ajax目标?
我有多个CouchDB文档,表示带有属性userId和tag的时间戳(用户可以有n个时间戳并为每个时间戳分配一个标记).我想通过特定的userId查询CouchDB,并获取用户已使用的标签的排序列表(按事件排序).
视图怎么样?
如果我想获得按事件排序的所有标签的列表(无论来自哪个用户),或者如果我假设只有具有相同userId的文档,我会这样做:
地图:
function(doc) {
if(doc.tag) emit(doc.tag, 1);
}
Run Code Online (Sandbox Code Playgroud)
降低:
function(keys, values) {
return sum(values);
}
Run Code Online (Sandbox Code Playgroud)
但是如何对结果进行分组以便我可以按特定的userId过滤查询?
在Play中实施某种进度指标的最佳方法是什么?
我有一个简单的导入页面,用户可以上传csv文件.然后服务器进行一些长度处理,直到导入完成.我想在上传后将用户重定向到单独的页面,并在此页面上给他一些持续的反馈,即"导入的856个数据集中的150个".
上传操作会触发一个控制器方法,该方法可以在自己的线程中启动耗时的任务,但是如何通过来自另一个页面的ajax调用获取作业的状态(因为play在请求之间没有任何类型的状态) ?
我正在尝试使用ANTLR为各种时间格式(12:30,0945,1:30-2:45,...)编写语法.到目前为止,只要我没有输入未在语法文件中定义的字符,它就像魅力一样.
我正在使用以下JUnit测试,例如:
final CharStream stream = new ANTLRStringStream("12:40-1300,15:123-18:59");
final TimeGrammarLexer lexer = new TimeGrammarLexer(stream);
final CommonTokenStream tokenStream = new CommonTokenStream(lexer);
final TimeGrammarParser parser = new TimeGrammarParser(tokenStream);
try {
final timeGrammar_return tree = parser.timeGrammar();
fail();
} catch (final Exception e) {
assertNotNull(e);
}
Run Code Online (Sandbox Code Playgroud)
抛出异常(如预期),因为"15:123"无效.如果我尝试("15:23a"),但没有异常被抛出,ANTLR将其视为有效输入.
现在,如果我在语法中定义字符,ANTLR似乎会注意到它们,我再一次得到我想要的异常:
CHAR: ('a'..'z')|('A'..'Z');
Run Code Online (Sandbox Code Playgroud)
但是如何排除用户可以输入的变音符号,符号和其他内容(äöü{%&<>!).所以基本上我正在寻找一种语法:匹配一切但是"0..9,: - "
java ×6
antlr ×1
antlr3 ×1
apache-poi ×1
architecture ×1
character ×1
couchdb ×1
formatting ×1
jquery ×1
mobile ×1
mysql ×1
progress-bar ×1
properties ×1
scalability ×1
spring ×1
tomcat ×1
wicket ×1
wicket-1.6 ×1