小编dav*_*ave的帖子

用于Java的REST客户端?

使用JSR 311及其实现,我们有一个强大的标准,可以通过Rest公开Java对象.但是在客户端方面似乎缺少可与Apache Axis for SOAP相媲美的东西 - 隐藏Web服务并将数据透明地封送回Java对象.

如何创建Java RESTful客户端?使用HTTPConnection和手动解析结果?或者专业客户,例如Jersey或Apache CXR?

java rest client

229
推荐指数
11
解决办法
30万
查看次数

PHP Traversable类型提示

我有一个相对简单的功能,它使用了一个 foreach

function foo($t) {
     $result;
     foreach($t as $val) {
         $result = dosomething($result, $val);
     }
     return $result;
}
Run Code Online (Sandbox Code Playgroud)

我想输入提示,Traversable似乎是我需要的确切类型提示

 function foo(Traversable $t) {
Run Code Online (Sandbox Code Playgroud)

然而,这给出了E_RECOVERABLE_ERROR使用数组时(当然可以在a中使用foreach):例子

 Argument 1 passed to foo() must implement interface Traversable, array given
Run Code Online (Sandbox Code Playgroud)

有没有办法输入提示或这是不可能的?

php arrays php-7.1

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

是否可以通过编程方式确定文件移动是否会导致副本?

我的Java程序需要同步移动服务器上的文件,即.在同一组本地文件系统中.显而易见的解决方案是使用Files.move().但是,在某些情况下,我已经阅读过,例如.跨文件系统,移动将回退到复制和删除.当我移动大文件时,我希望能够在副本发生时向用户报告进度(因为会有明显的延迟).

但是,我找不到使用Java API执行此操作的简单方法.我可能会编写自己的报告进度的复制例程,但是我需要知道移动是否会产生副本.

一种可能性似乎是这样的:

try {
    Files.move(src, dest, CopyOption.ATOMIC_MOVE);
} catch (AtomicMoveNotSupportedException  e) {
    // Perform a copy instead (and report progress)
}
Run Code Online (Sandbox Code Playgroud)

但是,如果在所有情况下这都是正确的,我不清楚Java doco.这确实是一个正确的解决方案?如果没有,还有另一种方式吗?

java

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

如何将用户定义的类型作为输入传递给存储过程?

我有两个涉及用户定义类型的相关存储过程.第一个接受对象ID并返回用户定义类型的相应实例.第二个接受相同用户定义类型的实例并使用它执行某些操作.

我正在使用Java,JDBC和一些Spring JDBC.我已经成功完成了第一个存储过程,即.我可以从数据库中检索用户定义类型的实例,但是,我无法使第二个存储过程工作.

这是我到目前为止的基本概要:

架构(PL/SQL)

create or replace type example_obj as object
  (ID     NUMBER,
   NAME   VARCHAR2(100))

create or replace type example_tab as table of example_obj

create or replace package
example as

procedure getExample
(p_id      in number,
 p_example out example_tab);

procedure useExample
(p_example  in example_tab);

end example;
Run Code Online (Sandbox Code Playgroud)

实体(Java) - 表示Java中的用户定义类型

public class Example {
    public BigDecimal ID;
    public String Name;
}
Run Code Online (Sandbox Code Playgroud)

Mapper(Java) - 从SQL类型映射到Java类型并返回

public class ExampleMapper extends Example implements SQLData {
    public static final String SQL_OBJECT_TYPE_NAME = "example_obj";
    public static …
Run Code Online (Sandbox Code Playgroud)

java oracle stored-procedures jdbc spring-jdbc

9
推荐指数
1
解决办法
3644
查看次数

数据库设计能够保存随时间变化的人的信息吗?

我们使用第三方产品来管理我们的体育中心会员资格.我们有几种会员类型(例如,初级,学生,员工,社区)和几种会员身份(例如,年度,活动,非活动,暂停).不幸的是,该产品仅记录会员当前的会员类型和状态.我希望能够跟踪我们的会员类型和状态随时间变化的方式.

目前,我们可以访问产品的数据库设计.它在SQL Server上运行,我们定期针对产品表运行自己的SQL查询,以生成我们自己的表.然后,我们将表格链接到Excel中的数据透视表以生成图表.所以我们熟悉数据库设计和SQL.但是,我们仍然坚持如何最好地解决这个问题.

该产品记录会员的会员购买情况以及他们的开始和到期日期.因此,我们可以回过头来确定会员在任何时间点的类型和状态.举例来说,如果他们买了在2007年1月1日,一个初级会员,并于2007年12月31日到期,那么他们买了2008年6月1日,一个学生会员,我们可以看到他们的状态,从主动去激活到激活(于扬分别于2008年1月和2008年6月1日),他们的类型从初中到学生(2008年6月1日).

基本上我们希望将成员的类型和状态属性转换为时间属性有效性 a-la Fowler(或其他随时间变化的事物).

我们的问题(最后:) - 鉴于上述情况:您建议我们使用什么数据库表设计来保存此成员信息.我想它会有一个MemberID列,所以我们可以键入现有的Member表.它还需要存储成员的状态和类型以及他们所持有的日期范围.我们希望能够轻松地针对此表编写查询,以确定在给定时间点我们拥有的每种类型和状态的成员数量.

更新2009-08-25:已经进行了侧面跟踪,并且还没有机会尝试提出的解决方案.希望尽快这样做,并根据结果选择答案.

sql sql-server database-design temporal-database

8
推荐指数
1
解决办法
1033
查看次数

为什么我的服务器发送的事件成批到达?

我有一个基于Java 8 / Spring4的Web应用程序,它向使用某些Javascript并更新进度条的基于浏览器的客户端报告使用服务器发送事件(SSE)的长时间运行过程的进度。在我的开发环境和开发服务器上,SSE几乎实时地到达客户端。我可以看到他们使用Chrome开发器工具(以及它们的时间戳)到达了,进度条也顺利更新。

但是,当我部署到生产环境中时,会观察到不同的行为。在长时间运行的过程完成之前,事件不会到达浏览器。然后它们全部到达一个突发状态(根据开发工具,所有事件的时间戳都在几百毫秒之内)。进度条在整个过程中停留在0%,然后很快迅速跳到100%。同时,我的服务器日志告诉我事件是定期生成和发送的。

这是相关的服务器端代码:

public class LongRunningProcess extends Thread {
    private SseEmitter emitter;
    public LongRunningProcess(SseEmitter emitter) {
        this.emitter = emitter;
    }
    public void run() {
        ...
        // Sample event, representing 10% progress
        SseEventBuilder event = SseEmitter.event();
        event.name("progress");
        event.data("{ \"progress\": 10 }"); // Hand-coded JSON
        emitter.send(event);
        ...
    }
}

@RestController
public class UploadController {
    @GetMapping("/start")
    public SseEmitter start() {
        SseEmitter emitter = new SseEmitter();
        LongRunningProcess process = new LongRunningProcess(emitter);
        process.start();
        return emitter;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是相关的客户端Javascript:

EventSource src = new …
Run Code Online (Sandbox Code Playgroud)

javascript java spring server-sent-events

6
推荐指数
1
解决办法
681
查看次数

如何将整数流过滤到列表中?

我正在尝试处理一个流Integers并收集与谓词(通过compare()函数)匹配的整数到列表中.这是我编写的代码的大致轮廓.

private List<Integer> process() {
    Z z = f(-1);
    return IntStream.range(0, 10)
        .filter(i -> compare(z, f(i)))
        .collect(Collectors.toCollection(ArrayList::new)); // Error on this line
}

private boolean compare(Z z1, Z z2) { ... }
private Z f(int i) { ... }
Run Code Online (Sandbox Code Playgroud)

不幸的是我的解决方案没有编译,我无法理解突出显示的行的编译器错误:

IntStream类型中的方法collect(Supplier <R>,ObjIntConsumer <R>,BiConsumer <R,R>)不适用于参数(Collector <Object,capture#1-of?,Collection <Object >>)

有什么建议?

java java-8 java-stream

5
推荐指数
1
解决办法
2385
查看次数

如何从Thymeleaf模板访问库JAR文件中的样式表?

我有一组基于Spring的Java Web应用程序和一个公共框架库,可通过JAR文件对它们全部使用。我正在使用Thymeleaf进行查看。

我有一个通用的Thymeleaf模板,供多个Web应用程序使用。模板HTML文件及其关联的样式表都在库JAR文件中。当Web应用程序基于框架模板显示视图时,该模板将由Thymeleaf找到并处理。

我的问题是我无法弄清楚如何导入样式表,以便将样式表加载并传递回浏览器。最终结果是未样式化(尽管正确)的HTML。

我正在使用Gradle作为构建工具。

这是我与框架相关的项目结构:

common-framework/src/main
    ../java                        - contains the framework code
    ../resources                   - contains the framework resources
       ../static
           ../css
               example.css         - Style sheet for use in templates
       ../templates
           ../fwk
               example.html        - Thymeleaf template
Run Code Online (Sandbox Code Playgroud)

这是示例应用程序的相关项目结构:

app/src/main
    ../java                        - contains the application code
    ../resources                   - contains the application resources
       ../templates
           ../app
               start.html          - Thymeleaf template
    ../webapp
        ../resources
            ../css
               app.css             - Style sheet for use in the app
Run Code Online (Sandbox Code Playgroud)

这是ViewResolver bean,应用程序和框架都使用它来定位模板:

@Bean
public ViewResolver viewResolver()
{
    ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
    templateResolver.setTemplateMode("HTML5"); …
Run Code Online (Sandbox Code Playgroud)

java spring web-applications thymeleaf

5
推荐指数
1
解决办法
444
查看次数

如何将函数引用传递给我的方法并使用它们?

我有一个工作方法,我想使用lambdas或函数引用更通用.也就是说,对于在我的方法中调用的一些方法,我想将它们指定为我的方法的参数.但是我无法理解它.

假设我有以下基本类结构

class B {}
class C {
    public Set<Integer> getIds() { ... }
    public void addB(B b) { ... }
}
Run Code Online (Sandbox Code Playgroud)

我有自己的工作方法

private void p1(Map<Integer, C> cs, Map<Integer, B> bs) {
    for (C c : cs.values()) {
        for (Integer id : c.getIds()) {
            if (bs.containsKey(id)) {
                c.addB(bs.get(id));
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是所谓的p1(cs, bs);- 到目前为止一切顺利.

使其更通用的第一步是为getIds()方法提供lambda .我使用以下方法实现了:

private void p1(Map<Integer, C> cs, Map<Integer, B> bs, Function<C, Set<Integer>> f) {
    for (C c : cs.values()) {
        for …
Run Code Online (Sandbox Code Playgroud)

java lambda java-8 method-reference

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

Tsql从表中获取最新记录

我有这张桌子:

Location                      date                temp

1                             12-12-2009         19
1                             14-12-2009         21
1                             13-12-2009         17
2                             12-12-2009         18
2                             14-12-2009         16
2                             18-12-2009         12
2                             15-12-2009         14
Run Code Online (Sandbox Code Playgroud)

现在我想为所有位置选择最新的(最新日期)行,所以他的示例第2行和第7行.我该怎么做?

我可以选择最新的1个位置,前1个日期为一个位置,我尝试按位置分组,日期,但后来我想念温度....

亲切的问候,米歇尔

sql t-sql

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