小编oks*_*ayt的帖子

从Windows中的系统时钟获取当前时间(以毫秒为单位)?

如何在C++中获取系统时钟的当前时间(以毫秒为单位)?这是一个特定于Windows的应用程序.

c++ windows

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

在spring-mvc中将json解析为java对象

我熟悉如何@Controller使用@ResponseBody注释从我的方法返回json .

现在我正在尝试将一些json参数读入我的控制器,但到目前为止还没有运气.这是我的控制器的签名:

@RequestMapping(value = "/ajax/search/sync")
public ModelAndView sync(@RequestParam("json") @RequestBody SearchRequest json) {
Run Code Online (Sandbox Code Playgroud)

但是当我尝试调用这个方法时,spring抱怨说: Failed to convert value of type 'java.lang.String' to required type 'com.foo.SearchRequest'

删除@RequestBody注释似乎没有什么区别.

手动解析json是有效的,所以Jackson必须在classpath中:

// This works
@RequestMapping(value = "/ajax/search/sync")
public ModelAndView sync(@RequestParam("json") String json) {
    SearchRequest request;
    try {
        request = objectMapper.readValue(json, SearchRequest.class);
    } catch (IOException e) {
        throw new IllegalArgumentException("Couldn't parse json into a search request", e);
    }
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我想尝试做一些不受支持的事情吗?

java json spring-mvc jackson

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

在常春藤中推广几个模块(集成 - >里程碑)

Ivy非常适合管理依赖项,但它并不是要处理许多模块的整个软件生命周期.这就是说,它有几个特点,似乎支持它(比如statusbranch属性),以及常春藤最佳实践Blurb的暗示能够促进整合修订里程碑或释放,"有一些工作".

遗憾的是,我还没有找到关于如何管理开发 - >测试 - >部署周期的明确指导.以下是我想要实现的一些事项:

(鉴于开发人员通常在本地工作空间中的许多模块上工作)

  1. Dev可以在本地发布对模块的更改,以便工作区中的其他模块可以获取更新的工件.
  2. Dev可以使用一个命令将版本指定为"准备部署以进行测试".
  3. 测试人员可以使用一个命令将版本指定为"准备好prod".
  4. Dev可以从源重建任何版本,并且正确地选择适当的依赖项(也称为可重复的构建).

我很清楚的一些事情是:

  • 修订版status应用于表示该修订版是仅用于开发,是否已准备好进行测试,或是否已准备好进行生产
  • branch属性应足以处理不同的项目分支

以下是我正在努力解决的问题:

如何促进集成构建

假设我在我的工作区中检出了这些模块:

模块依赖图

现在我对模块a感到满意,并决定使用我工作区中签出的版本发布里程碑.回购中需要做的是:

  • e-1.0-RC1 发表
  • d-1.1-RC2获得发布,e-1.0-RC1作为依赖项引用
  • c-2.0-RC1获得发布,d-1.1-RC2作为依赖项引用
  • b-3.3-RC1获得发布,e-1.0-RC1作为依赖项引用
  • 最后,a-7.1-RC2获取发布,引用c-2.0-RC1b-3.3-RC1依赖.

如果我为此尝试自己动手,我可能最终会做一些工作区管理,ivy.xml查找和替换等等.在我打开那些蠕虫之前,我想得到一些意见.解决这个问题的最佳方法是什么?

ant deployment version-control ivy

26
推荐指数
1
解决办法
760
查看次数

Spring的存储过程 - 从过程返回的结果始终为空

我正在使用Spring的JdbcTemplate和StoredProcedure类.我无法让存储过程类为我工作.

我在oracle数据库上有一个存储过程.它的签名是

CREATE OR REPLACE PROCEDURE PRC_GET_USERS_BY_SECTION
(user_cursor OUT Pkg_Types.cursor_type
 , section_option_in IN Varchar2
 , section_in IN Varchar2) AS ....
Run Code Online (Sandbox Code Playgroud)

哪里

TYPE cursor_type IS REF CURSOR;
Run Code Online (Sandbox Code Playgroud)

我创建了以下存储过程类来从oracle过程中获取信息

    private class MyStoredProcedure extends StoredProcedure 
{
    public MyStoredProcedure(JdbcTemplate argJdbcTemplate) 
    {
        super(argJdbcTemplate, "PRC_GET_USERS_BY_SECTION");
        declareParameter(new SqlOutParameter("output", OracleTypes.CURSOR));
        declareParameter(new SqlParameter("input1", Types.VARCHAR));
        declareParameter(new SqlParameter("input2", Types.VARCHAR));
        compile();          
    }


    public Map<String, Object> execute() {

        Map<String, Object> inParams = new HashMap<String, Object>();
        inParams.put("input1", "BG");
        inParams.put("input2", "FE");
        Map output = execute(inParams);
        return output;
    }
}
Run Code Online (Sandbox Code Playgroud)

我在我的一个DAO类中的方法中调用它

    public List<String> getUserListFromProcedure() throws BatchManagerException …
Run Code Online (Sandbox Code Playgroud)

java oracle stored-procedures jdbc spring-jdbc

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

使用一个罕见数字生成两个数字之间的随机数

我可以用c生成两个数字之间的随机数.

arc4random()%(high-low+1)+low;
Run Code Online (Sandbox Code Playgroud)

那么现在我的要求是......我想做一个罕见的数字....这意味着如果

高= 5,低= 1,稀有= 3,

超过3将很少出现1,2,4和5 ...

谢谢

c random

11
推荐指数
3
解决办法
3070
查看次数

如何使用Java在远程计算机上执行Linux命令?

我有两个安全的Linux服务器.在一台机器上,我的Java应用程序正在运行 我需要在第一台机器上用Java在第二台机器上运行Linux命令.我怎么能这样做?

java linux ssh

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

如何将Hibernate映射集加载为不可修改的集?

我正在处理的应用程序使用Hibernate专门从数据库中获取一堆持久对象到内存.应用程序将不时地从数据库刷新此内存中快照,这应该是与数据库的唯一通信.

然后将内存中的对象用于一堆计算.计算不得修改这些对象.除了某个地方偶然发生的事情,我不得不花一天时间追捕这个虫子.现在我想知道使整个对象树不可变的最佳方法是什么.

假设类层次结构如下所示:

public class Building { // persistent entity
    private String name; // hibernate-mapped property
    private Set<Person> inhabitants; // hibernate-mapped collection

    // getters
}

public class Person { // persistent entity
    private String name; // hibernate-mapped property

    // getters
}
Run Code Online (Sandbox Code Playgroud)

我已阻止客户通过以下方式访问数据库:

  • 热切地获取所有实体和集合
  • 使用mutable=falseHibernate映射标记所有实体和集合
  • 不提供Hibernate会话的任何实例,或状态改变dao方法.

现在我想防止的错误是,有人不小心走了building.getInhabitants().clear();.我可以想到这些选择:

  1. 吸气剂包装:在通话中getInhabitants首先换行,然后返回.inhabitantsCollections.unmodifiableSet()

    • 优点:最少的工作,最少的额外代码
    • 缺点:感觉hacky
  2. 包装类:重命名BuildingMutableBuilding,PersonMutablePerson,并提供一成不变的类BuildingPerson.由于我的应用程序有一个清晰的快照点,我可以将记录作为可变对象(我现在这样做)获取,制作深度不可变的副本并将该对象树呈现给客户端.

    • 优点:直接java,没有Hibernate魔法.我可以使用我最喜欢的关键字:final
    • 缺点:编写和维护更多代码.另外,Hibernate会将可变实例保留在内存中吗?
  3. Hibernate映射魔术:使用一个魔术关键字来指示Hibernate将其设置的集合包装在我的实体对象中Collections.unmodifiableSet()或等效.(注意:我使用的是xml映射文件)

    • 优点:优雅,没有额外的代码 …

java collections hibernate immutability

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

Java匿名类和可访问的私有变量

interface Test {
public void test();
}

public class TestMain {
private String h = "AAA";

public static void main(String[] args) {
    TestMain t = new TestMain();
}

public TestMain() {
    Test t = new Test() {
        public void test()  {
            System.out.println( h );
        }
    };

    t.test();
}

}
Run Code Online (Sandbox Code Playgroud)

上述来源效果很好.

但我认为变量'h'应该无法从匿名类中访问.我需要知道它为什么运作良好.

感谢您提前的所有帮助!

java private inner-classes

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

Java保持框架集中

你能帮帮我吗?我有一个JDialog与一些文本字段,复选框和按钮.我希望当帧不再聚焦时,消失.所以我在JDialog中添加了一个焦点监听器,当焦点丢失时,我打电话给dialog.setVisible(false);.问题是,如果我点击复选框,文本字段或按钮,框架将失去焦点并消失.在用户点击其外部区域之前,我怎么能保持专注?

编辑:我指的"框架"是一个JDialog.我不使用Frame也不使用JFrame.所有组件都放在JDialog上.我希望它在没有聚焦时隐藏,但要保持专注,直到用户点击它的区域外.

java swing focus

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