偶尔我发现自己想要编写可以通过以下两种方式之一调用的函数:
// With a string literal:
let lines = read_file_lines("data.txt");
// With a string pointer:
let file_name = ~"data.txt";
let lines = read_file_lines(file_name);
Run Code Online (Sandbox Code Playgroud)
我的第一个猜测是使用借用的指针(&str)作为参数类型,但是当它不起作用时(它只允许我使用@str和~str),我尝试了以下(通过复制Rust库),这确实有效.
fn read_file_lines<'a>(path: &'a str) -> ~[~str] {
let read_result = file_reader(~Path(path));
match read_result {
Ok(file) => file.read_lines(),
Err(e) => fail!(fmt!("Error reading file: %?", e))
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我不明白我在做什么.从我可以收集的内容(主要来自编译器错误),我宣布一个没有限制的生命周期,并使用它来描述path参数(意味着任何生命周期都可以作为参数传递).
所以:
&str,类型参数和类型参数之间有什么区别&'a str?'self?(我正在使用Rust 0.7,如果它对答案有所影响)
我主要是一名Java开发人员.我遇到了很多喜欢AOP的Java开发者.我也看到越来越多的AOP"设计模式"最近出现,似乎被广泛采用.即便如此,由于几个原因,我仍然不相信OO代码中的AOP通常是个好主意.
它以不透明的复杂性形式为代码添加了"魔力",这可能非常难以调试,并且可能使调试它所影响的面向对象的代码变得非常困难.
在我看来,大多数情况下是不必要的,而且(更糟糕的是)经常习惯于避免设计好,或者补偿以前糟糕的设计.
这是我在过去几年中经常看到的一个例子,作为我的问题的背景.
在AOP之前(来自Hibernate文档)
public void saveMyEntityToTheDatabase(MyEntity entity) {
EntityTransaction tx = null;
try {
tx = entityManager.getTransaction();
tx.begin();
entityManager.persist(entity);
tx.commit();
} catch (RuntimeException e) {
if(tx != null && tx.isActive()) {
tx.rollback();
}
throw e;
}
}
Run Code Online (Sandbox Code Playgroud)
AOP之后
@Transactional
public void saveMyEntityToTheDatabase(MyEntity entity) {
entityManager.persist(entity);
}
Run Code Online (Sandbox Code Playgroud)
对许多人而言,AOP似乎是一个明显的胜利.对我来说,原始问题是API抽象级别不一致的症状.也就是说,它EntityManager比使用它的消息的业务级API低很多.这个问题可以通过更合适的抽象级别和更好的(OO)设计来解决.
OO解决方案
public void saveMyEntityToTheDatabase(MyEntity entity) {
database.performInTransaction(new Save(entity));
}
Run Code Online (Sandbox Code Playgroud)
此解决方案假定database对象包含与负责管理@Transactional方法的方面相同类型的事务逻辑.这解决了我上面关注的问题,因为它更明显地表明存在管理与之交互的东西EntityManager,而不是引入另一种编程范例.
最后,我的问题是:AOP可以做什么OOP不能?我有点确信它在跟踪日志记录中的用处,也许是默认toString()实现或类似的东西,但我很想知道是否有人发现它比OO明显优于特定类型的问题.
改变的大小的图像在GWT部件改变所述图像元素的大小,但不重新调整屏幕上的图像.因此,以下方法不起作用:
Image image = new Image(myImageResource);
image.setHeight(newHeight);
image.setWidth(newWidth);
image.setPixelSize(newWidth, newHeight);
Run Code Online (Sandbox Code Playgroud)
这是因为GWT 通过使用CSS 将HTML 元素设置为图像来实现其Image小部件.background-image<img... />
如何让实际图像调整大小?
我正在尝试使用Java 6元模型API查找方法的参数类型.如果类型是枚举,我也想知道它的所有类型的枚举常量名称.这是我到目前为止所得到的:
for (Element member : members) {
if(member.getKind() == ElementKind.METHOD) {
ExecutableElement methodElement = (ExecutableElement) member;
List<? extends VariableElement> parameters = methodElement.getParameters();
for (VariableElement parameter : parameters) {
//How do I get the type of the parameter here?
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在寻找一个维护良好的Java字节码操作库和一个直观的API.那里似乎有很多人.有关哪些尝试的建议?
编者注:在Rust 1.0之前问过这个问题,问题中的一些断言在Rust 1.0中不一定正确.一些答案已更新,以解决这两个版本.
我想创建一个向量,但我只知道我希望向量在运行时的大小.这就是我现在正在做的事情(即创建一个空的,可变的向量,并向其添加向量):
fn add_pairs(pairs: ~[int]) -> ~[int] {
let mut result : ~[int] = ~[];
let mut i = 0;
while i < pairs.len() {
result += ~[pairs[i] + pairs[i + 1]];
i += 2;
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
这就是我想要的方式(即创建一个向量并将所有内容放入其中,而不是一起添加大量向量):
fn add_pairs(pairs: ~[int]) -> ~[int] {
let number_of_pairs = pairs.len() / 2;
let result : ~[int, ..number_of_pairs];
let mut i = 0;
while i < pairs.len() {
result[i] = pairs[2 * i] + pairs[2 * i + …Run Code Online (Sandbox Code Playgroud) 让非常旧的浏览器忽略HTML页面中的JavaScript块的一个古老的习惯用法是<script>在HTML注释中包含元素的内容:
<script>
<!--
alert("Your browser supports JavaScript");
//-->
</script>
Run Code Online (Sandbox Code Playgroud)
原理是旧的无JavaScript浏览器将文本呈现为<script>元素的内容,因此将JavaScript放在HTML注释中会使浏览器无需呈现.
另一方面,现代浏览器将看到该<script>元素并将其内容解析为JavaScript.因此,评论需要是有效的JavaScript.-->JavaScript解析器会忽略关闭HTML注释(),因为它前面有一个JavaScript line-comment(//).
我的问题是,打开 HTML comment(<!--)不会导致JavaScript解析器失败?我从各种各样的人那里听说开场HTML评论是有效的JavaScript.如果开场评论被评估为JavaScript,那么它在执行时会做什么?
有没有办法在Netbeans中自动生成源代码和javadoc jar?理想情况下,我希望每次构建时都将我的源码和JavaDoc的jar放在dist文件夹中.
我有一个URL列表,我需要获取其中的内容.URL具有特殊字符,因此需要进行编码.我使用Commons HtpClient来获取内容.
我用的时候:
GetMethod get = new GetMethod(url);
Run Code Online (Sandbox Code Playgroud)
我得到一个"无效的"非法转义字符"例外.当我使用时
GetMethod get = new GetMethod();
get.setURI(new URI(url.toString(), false, "UTF-8"));
Run Code Online (Sandbox Code Playgroud)
我试图获取页面时得到404,因为空间被转向%2520而不仅仅是%20.
我已经看过很多关于这个问题的帖子,他们中的大多数建议逐个部分地构建URI.问题是它是一个给定的URL列表,而不是我可以手动处理的URL.
解决这个问题的任何其他方案?
谢谢.
在使用Guice Servlet设置我的Wicket项目之后,我得到了一个java.lang.IllegalStateException: filter path was not configured.该过滤器路径被配置,虽然.我错过了什么吗?
web.xml中
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<display-name>node-sitter</display-name>
<listener>
<listener-class>com.mycompany.wicketapp.inject.ServletConfig</listener-class>
</listener>
<filter>
<description>Initialises Guice</description>
<filter-name>guiceFilter</filter-name>
<filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>guiceFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)
Guice Servlet听众:
public class ServletConfig extends GuiceServletContextListener {
@Override
protected Injector getInjector() {
return Guice.createInjector(new Servlets());
}
private static class Servlets extends ServletModule {
@Override
protected void configureServlets() {
bind(WicketFilter.class).in(Singleton.class);
filterRegex("/.*").through(WicketFilter.class, withApplicationClass(WicketApplication.class));
}
private Map<String, String> withApplicationClass(Class<? extends WebApplication> applicationClass) {
Map<String, String> initParams …Run Code Online (Sandbox Code Playgroud) 我正在使用REST(Jersey 1.8)开发Web服务.目前我正在使用XML在Java客户端和服务器之间进行通信.
我需要将其更改为JSON:我该怎么做?我有大量来自NetBeans的自动生成代码,并且不知道该做什么以及如何做.在测试服务时,它显示JSON数据.我无法做的是在我的main方法中处理它.

这些是我遵循的教程
我的Java客户端main方法:
public class SOATestClient {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
PersonJerseyClient client = new PersonJerseyClient();
ClientResponse response = client.findAll_XML(ClientResponse.class);
GenericType<List<Person>> genericType = new GenericType<List<Person>>() {
};
// Returns an ArrayList of Players from the web service
List<Person> data = new ArrayList<Person>();
data = (response.getEntity(genericType));
System.out.println("Retreiving and Displaying Players Details");
for (Person person : data) {
System.out.println("FirstName: " + person.getName()); …Run Code Online (Sandbox Code Playgroud) 我有一个使用Spring和Hibernate的Maven项目.当我编译项目时它没问题,但是当我在tomcat中运行它时,我发现了这些错误:
org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/jsp/contact.jsp at line 16
13:
14: <table>
15: <tr>
16: <td><form:label path="firstname"><spring:message code="label.firstname"/></form:label></td>
17: <td><form:input path="firstname" /></td>
18: </tr>
19: <tr>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:401)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:574)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
javax.servlet.ServletException: java.lang.NoSuchMethodError: org.springframework.beans.BeanWrapper.setAutoGrowCollectionLimit(I)V
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:862)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
org.apache.jsp.WEB_002dINF.jsp.contact_jsp._jspService(contact_jsp.java:99)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:574)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
java.lang.NoSuchMethodError: org.springframework.beans.BeanWrapper.setAutoGrowCollectionLimit(I)V
org.springframework.validation.BeanPropertyBindingResult.getPropertyAccessor(BeanPropertyBindingResult.java:94)
org.springframework.validation.AbstractPropertyBindingResult.getActualFieldValue(AbstractPropertyBindingResult.java:98)
org.springframework.validation.AbstractBindingResult.getFieldValue(AbstractBindingResult.java:225)
org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:120)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:174)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:194)
org.springframework.web.servlet.tags.form.LabelTag.autogenerateFor(LabelTag.java:129)
org.springframework.web.servlet.tags.form.LabelTag.resolveFor(LabelTag.java:119)
org.springframework.web.servlet.tags.form.LabelTag.writeTagContent(LabelTag.java:89) …Run Code Online (Sandbox Code Playgroud)