小编Dan*_*iel的帖子

Rust生活

偶尔我发现自己想要编写可以通过以下两种方式之一调用的函数:

// 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,如果它对答案有所影响)

lifetime rust

47
推荐指数
1
解决办法
9963
查看次数

AOP能做什么OOP不能做?

我主要是一名Java开发人员.我遇到了很多喜欢AOP的Java开发者.我也看到越来越多的AOP"设计模式"最近出现,似乎被广泛采用.即便如此,由于几个原因,我仍然不相信OO代码中的AOP通常是个好主意.

  1. 它以不透明的复杂性形式为代码添加了"魔力",这可能非常难以调试,并且可能使调试它所影响的面向对象的代码变得非常困难.

  2. 在我看来,大多数情况下是不必要的,而且(更糟糕的是)经常习惯于避免设计好,或者补偿以前糟糕的设计.

这是我在过去几年中经常看到的一个例子,作为我的问题的背景.

在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明显优于特定类型的问题.

java oop aop

31
推荐指数
4
解决办法
4364
查看次数

在GWT中缩放图像

改变的大小的图像在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 gwt image-scaling

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

如何从javax.lang.model.VariableElement获取参数类型

我正在尝试使用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 apt

14
推荐指数
1
解决办法
3389
查看次数

Java字节码操作库建议

我正在寻找一个维护良好的Java字节码操作库和一个直观的API.那里似乎有很多人.有关哪些尝试的建议?

java frameworks bytecode-manipulation

13
推荐指数
1
解决办法
3539
查看次数

创建具有非恒定长度的向量

编者注:在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)

rust

13
推荐指数
2
解决办法
5616
查看次数

HTML Opening-Comment是有效的JavaScript吗?

让非常旧的浏览器忽略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,那么它在执行时会做什么?

html javascript cross-browser

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

在Netbeans中自动生成源和文档jar

有没有办法在Netbeans中自动生成源代码和javadoc jar?理想情况下,我希望每次构建时都将我的源码和JavaDoc的jar放在dist文件夹中.

java ant netbeans jar build

11
推荐指数
2
解决办法
6338
查看次数

使用httpclient进行URL编码

我有一个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.

解决这个问题的任何其他方案?

谢谢.

java encoding apache-httpclient-4.x

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

如何在Wicket中使用Guice Servlet

在使用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)

java wicket jetty guice guice-servlet

4
推荐指数
1
解决办法
2734
查看次数

从宁静的Java客户端获取JSON

我正在使用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)

java rest soa json webservice-client

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

是什么导致"NoSuchMethodError:org.springframework.beans.BeanWrapper.setAutoGrowCollectionLimit(I)V?"

我有一个使用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)

java spring jsp hibernate maven

2
推荐指数
1
解决办法
2953
查看次数