我写了一个TokenFilter在流中添加令牌的.
如果有人能够阐明语义,我将不胜感激.特别是在(*)恢复状态时,这是否意味着我们要么覆盖当前令牌,要么在捕获状态之前创建令牌?
这大致就是我所做的
private final LinkedList<String> extraTokens = new LinkedList<String>();
private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
private State savedState;
@Override
public boolean incrementToken() throws IOException {
if (!extraTokens.isEmpty()) {
// Do we not loose/overwrite the current termAtt token here? (*)
restoreState(savedState);
termAtt.setEmpty().append(extraTokens.remove());
return true;
}
if (input.incrementToken()) {
if (/* condition */) {
extraTokens.add("fo");
savedState = captureState();
}
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
这是否意味着,对于空白标记化字符串的输入流 "a b c"
(a) -> (b) -> (c) -> ... …Run Code Online (Sandbox Code Playgroud) 嘿伙计们,怎么了?我在jsp上有以下代码.我想添加java.io等库.我可以这样做吗?先谢谢
<% @page import=java.io.BufferedReader;
@page import=java.io.IOException;
@page import=java.io.InputStreamReader;
String IP=request.getParameter("IP");
String res="";
Runtime run = Runtime.getRuntime();
Process pr = run.exec("snmpget -v 2c -c public "+IP+" SNMPv2-MIB::sysUpTime.0");
pr.waitFor();
BufferedReader buf = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line = "";
//String res="";
while ((line = buf.readLine()) != null)
{
res+=line+"\n";
}
int i=res.indexOf(")");
// System.out.println(i);
res=res.substring(i+1).trim();
//System.out.print(res);
} catch (InterruptedException ex)
{
Logger.getLogger(myMain.class.getName()).log(Level.SEVERE, null, ex);
}
catch (IOException ex) {
Logger.getLogger(myMain.class.getName()).log(Level.SEVERE, null, ex);
}
%>
Run Code Online (Sandbox Code Playgroud) 我一直试图弄清楚弹簧表单提交的最佳实践是什么,以及实现这一目标的最小样板是什么.
我认为以下是最佳实践特征
model.clear())之间的URL中到目前为止,我已经想出了这个.
@Controller
@RequestMapping("/")
public class MyModelController {
@ModelAttribute("myModel")
public MyModel myModel() {
return new MyModel();
}
@GetMapping
public String showPage() {
return "thepage";
}
@PostMapping
public String doAction(
@Valid @ModelAttribute("myModel") MyModel myModel,
BindingResult bindingResult,
Map<String, Object> model,
RedirectAttributes redirectAttrs) throws Exception {
model.clear();
if (bindingResult.hasErrors()) {
redirectAttrs.addFlashAttribute("org.springframework.validation.BindingResult.myModel", bindingResult);
redirectAttrs.addFlashAttribute("myModel", myModel);
} else {
// service logic
}
return "redirect:/thepage";
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法用更少的样板代码来做到这一点,或者这是实现这一目标所需的最少代码量?
我正在使用一个使用hibernate的spring项目,并期望使用ehcache实现二级缓存.我看到了很多方法:
spring-modules-cache它引入了@Cacheable注释
ehcache-spring-annotations一个旨在成为其继承者的工具集spring-modules-cache.
Hibernate cache很好地集成到hibernate本身,以使用例如@Cache注释执行缓存.
Programmatic cache使用代理.基于注释的配置很快变得有限或复杂(例如,几个级别的注释嵌套)
我个人认为spring-modules-cache不够彻底,因此我可能更愿意考虑更积极的发展ehcache-spring-annotations.Hibernate cache虽然似乎是最完整的实现(例如,读取和写入缓存等).
什么会激发使用哪个工具集?请分享您的缓存体验......
我试图找到一个好的方法来搜索(计算出现次数),然后以有效的方式对String数组进行排序......这是一种在嵌入式系统中运行良好的方式(32Mb)
示例:我必须计算角色A,B,C等的使用时间,保存后验排序结果...
我可以使用公共int count(String searchDomain,char searchValue)方法进行计数,但每个字符串应该包含所有字母,例如:
"This is a test string"
A:1,B:0,C:0,D:0,E:1,I:3,F:0,...
"ACAAGATGCCATTGTCCCCCGGCCTCCTGCTGCTGCTGCTCTCCGGGGCCACGGCCACCGCTGCCCTGCC"
A:7,B:0,C:22,G:18
Run Code Online (Sandbox Code Playgroud)
我的排序方法需要能够回答以下事情:按As的数量排序,B先按As排序,然后按Bs排序该子域
这不适用于家庭作业,它适用于需要在手机上运行的应用程序,我需要高效,我目前的实现太慢并且使用太多内存.
我想提供一个全面的REST API,支持JSON和XML.
域模型是复杂的类型的,并且我们注意到,以产生友好JSON和XML上使用相同的模型MappingJacksonHttpMessageConverter和JaxbMarshaller分别往往给任一可读XML或JSON可读1) .
什么是最好的方法?
1)由于地图,根标签和关系等对象的建模方式与in json中的不同xml,因此需要对要序列化的对象进行不同的设计以使其既干净json又整洁xml.诸如jaxb注释之类的实用程序只能走得那么远.
我能想到几个候选人
public class Controller {
public Foo foo() {
return new Foo();
}
}
public class XmlController extends Controller {
@Override
public XmlFoo foo() {
return new new XmlFoo(super.foo());
}
}
public class JsonController extends Controller {
@Override
public JsonFoo foo() {
return new JsonFoo(super.foo());
}
}
Run Code Online (Sandbox Code Playgroud)
给定一个模型对象 …
我经常发现需要设计具有可配置功能的对象.
举例来说,假设我正在创建一个DateIterator.可配置选项可能是迭代闭合间隔[start, end]还是开放端间隔[start, end).
new DateIterator(boolean openInterval);
Run Code Online (Sandbox Code Playgroud)
new DateIterator(Interval.OPEN_END);
Run Code Online (Sandbox Code Playgroud)
new DateIterator().openEnd();
Run Code Online (Sandbox Code Playgroud)
new OpenEndedDateIterator();
Run Code Online (Sandbox Code Playgroud)
为此我提出了一些我认为较差的替代方案,如基于整数的配置new DateIterator(Interval.OPEN_END);或基于属性的配置.
还有其他方法吗?您更喜欢哪种方法?
目标是使用JAXB生成以下XML
<foo>
<bar>string data</bar>
<bar>binary data</bar>
</foo>
Run Code Online (Sandbox Code Playgroud)
是否有允许通用 @XmlValue字段的解决方法(我需要存储byte[]和String数据)?以下是我的愿望:
@XmlRootElement
public class Foo {
private @XmlElement List<Bar> bars;
}
@XmlRootElement
public class Bar<T> {
private @XmlValue T value; // (*)
}
Run Code Online (Sandbox Code Playgroud)
但我得到了这个例外
(*)IllegalAnnotationException:
@ XmlAttribute/@ XmlValue需要引用映射到XML文本的Java类型.
我有一个我无法改变的注释,它需要两个String参数.
我想像这样使用它:
@RequestMapping( MyUrls.FOO.a, MyUrls.FOO.b )
Run Code Online (Sandbox Code Playgroud)
这就是我想象的实现方式
public enum MyUrls {
FOO("a", "b"),
BAR("c", "d");
public String a, b;
MyUrls(String a, String b) {
this.a = a;
this.b = b;
}
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为a或b不能静态解决.
我有哪些替代品比以下更好:
class MyUrls {
public static String FOO_A = "";
public static String FOO_B = "";
// ...
}
Run Code Online (Sandbox Code Playgroud) 什么是从一个Maven插件内下载远程Maven构件的最佳方式,同时还支持Maven的2.2.x1) ,3.0.x, 3.1.x和更新?
Aether似乎是一个很好的候选者,但它改变了包名称空间3.0.5和3.1破坏兼容性
周围有很多信息,
Aether在下面使用并且可能遭受相同版本的不兼容性问题Ather根据ResolveArtifact示例手动强制您的版本那么正确的,或者至少是有效的方法是什么呢?
1)如同@khmarbaise所指出的那样Maven 2.2.x是一个很好的EoL
java ×10
spring ×3
spring-mvc ×2
aether ×1
annotations ×1
boilerplate ×1
caching ×1
eclipse ×1
ehcache ×1
enums ×1
generics ×1
hibernate ×1
import ×1
jaxb ×1
json ×1
jsp ×1
lucene ×1
marshalling ×1
maven ×1
maven-plugin ×1
rest ×1
solr ×1
solr4 ×1
sorting ×1
spring-web ×1
static ×1
token ×1
xml ×1