小编Pie*_*nry的帖子

monk vs Mongongb的mongoose

我正在学习NodeJs.

要从NodeJS连接并使用MongoDB,我看到很多使用Monk或Mongoose的例子.

这两个库是否相同?它们具有相同的功能还是各自具有特定的用途?

作为NodeJS的初学者,我应该使用哪个?

以下是一些使用Monk的代码示例:

var mongo = require('mongodb');
var monk = require('monk');
var db = monk('localhost:27017/nodejsapp');

----
exports.userlist = function(db) {
    return function(req, res) {
        var collection = db.get('users');
        collection.find({},{},function(e,docs){
            res.render('userlist', {
                "userlist" : docs
            });
        });
    };
};
Run Code Online (Sandbox Code Playgroud)

这里有一个使用Mongoose的示例:

   var mongoose = require('mongoose');
----
 mongoose.connect('localhost', 'test');
 var db = mongoose.connection;
  db.on('error', console.error.bind(console, 'connection error:'));
  db.once('open', function callback() {
   console.log('Connected to DB');
});

// User Schema
var userSchema = mongoose.Schema({
   username: { type: String, required: true, unique: true }, …
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js monk

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

如何在Spring中有条件地启用或禁用预定作业?

我使用@Scheduled注释在Spring中定义具有cron样式模式的预定作业.

cron模式存储在配置属性文件中.实际上有两个属性文件:一个默认配置,一个依赖于环境的配置文件配置(例如dev,test,prod customer 1,prod customer 2等)并覆盖一些默认值.

我在spring上下文中配置了一个属性占位符bean,它允许我使用${}样式占位符从我的属性文件中导入值.

作业bean看起来像这样:

@Component
public class ImagesPurgeJob implements Job {

    private Logger logger = Logger.getLogger(this.getClass());

    @Override
    @Transactional(readOnly=true)
    @Scheduled(cron = "${jobs.mediafiles.imagesPurgeJob.schedule}")
    public void execute() {
        //Do something
            //can use DAO or other autowired beans here
    }
}
Run Code Online (Sandbox Code Playgroud)

我的上下文XML的相关部分:

<!-- Enable configuration of scheduled tasks via annotations -->
    <task:annotation-driven/>

<!-- Load configuration files and allow '${}' style placeholders -->
    <bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:config/default-config.properties</value>
                <value>classpath:config/environment-config.properties</value>
            </list>
        </property>
        <property name="ignoreUnresolvablePlaceholders" value="true"/>
        <property name="ignoreResourceNotFound" …
Run Code Online (Sandbox Code Playgroud)

java cron spring scheduled-tasks

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

为什么我在java.time中不能在几分钟或几小时内获得持续时间?

在Java 8及更高版本中可用Duration的新JSR 310 date API(java.time包)中的类中,javadoc说:

此类以秒和纳秒为单位模拟时间量或时间量.它可以使用其他基于持续时间的单位进行访问,例如分钟和小时.此外,DAYS单位可以使用,并且被视为完全等于24小时,因此忽略了夏令时效果.

那么,为什么以下代码崩溃?

Duration duration = Duration.ofSeconds(3000);
System.out.println(duration.get(ChronoUnit.MINUTES));
Run Code Online (Sandbox Code Playgroud)

这提出了一个UnsupportedTemporalTypeException:

java.time.temporal.UnsupportedTemporalTypeException: Unsupported unit: Minutes
    at java.time.Duration.get(Duration.java:537)
Run Code Online (Sandbox Code Playgroud)

那么从持续时间对象中提取分钟和小时的推荐方法是什么?我们是否必须从秒数开始计算?为什么这样实现?

java java-8 java-time

54
推荐指数
5
解决办法
4万
查看次数

Intellij IDEA:指定JPA验证的数据源

我有一个Spring项目,用于在Intellij IDEA中设置的小型Web应用程序.

它在Hibernate之上使用JPA作为持久层.数据源(MySQL)在Spring应用程序上下文中定义:

    <!-- Values are configured via the property override -->
    <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" >
        <property name="driverClassName" value=""/>
        <property name="url" value=""/>
        <property name="username" value=""/>
        <property name="password" value=""/>
    </bean>
Run Code Online (Sandbox Code Playgroud)

实际值从属性文件中读取,并在Spring运行时使用属性覆盖机制注入.

然后将数据源注入到同一应用程序上下文中的实体管理器工厂中:

    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="myDataSource"/>
    </bean>
Run Code Online (Sandbox Code Playgroud)

最后,实体管理器使用注释注入DAO:

/**
 * Shared, thread-safe proxy for the actual transactional EntityManager
 */
@PersistenceContext
private EntityManager em;
Run Code Online (Sandbox Code Playgroud)

当我构建并部署到Tomcat时,一切正常,但Intellij的JPA验证似乎并不了解从何处获取数据源.

在我的实体中,表的名称和列的名称用红色下划线,验证消息是"无法解析表"或"无法解析列":

@Entity
@Table(name = "domain")
public class Domain extends AbstractAgendaEntity {
Run Code Online (Sandbox Code Playgroud)

在这个例子中,它"domain"是不被认为有效的部分.

我已经在"数据库"工具窗口中手动配置了我的数据库,我可以在控制台中看到我的表并执行SQL查询.

如何告诉Intellij使用此数据源来解析JPA实体的表名?

java spring jpa intellij-idea

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

Servlet过滤器的执行顺序

我偶然发现我的网络应用程序中的一个错误,让我摸不着头脑(并最终拉我的头发)一段时间才发现发生了什么事.

基本上,我在我的web.xml中定义了2个过滤器,这两个映射是这样的:

<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <servlet-name>SpringMVCDispatcher</servlet-name>
</filter-mapping>

<filter-mapping>
    <filter-name>SpringFormMethodFilter</filter-name>
    <url-pattern>/administration/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)

它们都是Spring MVC过滤器.我的问题是我得到的表单数据并没有被解释为UTF-8,尽管在其他任何有机会从它读取之前,encodingFilter应该将请求编码设置为UTF-8.

我终于注意到,在编码过滤器之前执行了表单方法过滤器,尽管定义过滤器映射的顺序应该是它们被链接的顺序:

链中的过滤器顺序与过滤器映射在Web应用程序部署描述符中出现的顺序相同.

(来自Oracle)

当我使用相同的映射,即映射到servlet而不是URL模式时,对于两个映射,订单都会恢复,并且一切都按预期工作:

<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <servlet-name>SpringMVCDispatcher</servlet-name>
</filter-mapping>

<filter-mapping>
    <filter-name>SpringFormMethodFilter</filter-name>
    <servlet-name>SpringMVCDispatcher</servlet-name>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)

这是Servlet规范的一部分还是Tomcat的故障?是否在某处提供了文件,我应该提交错误报告吗?

我在Java 7中使用Tomcat 7.0.39.

tomcat servlets servlet-filters tomcat7

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

Oracle是否支持全文搜索?

是否有Oracle等同于MS SQL的全文搜索服务?

如果是这样,有没有人实现它并有好/坏的经历?

oracle full-text-search oracle-text

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

在Java 8中用流替换嵌套for循环的正确方法是什么?

在学习Java 8流和lambas时,我尝试用流替换以下嵌套for循环:

List<Long> deskIds = new ArrayList<>();
for(ProvidedService memberService : service.getAllNodesDepthFirst()){
   for(Desk d : memberService.getDesks()){
     deskIds.add(d.getId());
   }
}
Run Code Online (Sandbox Code Playgroud)

循环迭代一个'ProvidedService'对象列表,并为每个对象迭代'Desk'对象的list属性,并将'Id'字段提取到列表中.

我使用流来提出以下代码:

List<Long> deskIds = new ArrayList<>();
service.getAllNodesDepthFirst().stream().forEach(srv -> {
    deskIds.addAll(srv.getDesks().stream().map(Desk::getId).collect(Collectors.toList()));
});
Run Code Online (Sandbox Code Playgroud)

这是正确/最佳的方式吗?或者有没有办法在没有第二个嵌套流的情况下执行此操作?

java java-8 java-stream

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

SOAP Web服务回调架构?

我对Web服务,JAX-WS等都很陌生,所以也许没有问题......

所以,我想实现一个Web服务来使两个系统进行通信."客户端"系统对在"服务器"系统上生成的事件感兴趣.但"客户端系统"本​​身就是不同应用程序的服务器.服务器是Java(tomcat中的WAR).客户端是.Net.

应该只有一个客户端系统,但客户端系统中有几个客户端进程,每个客户端进程都对不同类别的事件感兴趣.

我将实现服务器端和测试客户端.其他人将实现.Net代码.

运行顺序应该沿着这一行:

  1. 服务器正在运行......
  2. 客户端启动对话,"注册"到服务器,并请求一些初始数据.
  3. 服务器保留已注册客户端的端点列表
  4. 在服务器中,有一个监听器在某些事件发生时得到通知.然后,它将浏览已注册客户的列表,并将事件转发给每个客户
  5. 在某些时候,客户端可以"取消注册"不通知服务器它不再想要接收事件.

首先,这听起来像是可行的吗?

是否有一个标准的内置机制,使用SOAP(服务器上的JAX-WS,客户端的.Net可用的任何东西) - 服务器可以用来从客户端获取回调端点?

例如,我使用RMI做了一些非常相似的事情,在这种情况下,客户端可以只向自己发送远程引用,服务器可以稍后存储ant引用.

最后,是否有一个标准库来存储端点引用,make(集体)回调,并且可能使列表保持最新,删除那些没有响应的客户端,以便进行一些"ping"调用?

为清楚起见,注意:我需要的不仅仅是带回调的异步方法:来自客户端的一条消息将从服务器到客户端生成许多回调消息.

.net java web-services callback jax-ws

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

模拟Zebra打印机

可能重复:
使用.NET WinForm打印预览ZPL II命令,然后再将其发送到Zebra打印机

我正在开发一个Java应用程序,可以打印Zebra打印机的票证.

问题是我正在远程工作,无法访问Zebra打印机(或任何其他打印机).

我想知道是否有办法模拟Zebra打印机,以便我可以看到我的应用程序生成的打印作业的结果(PDF,位图图像等).

据我所知(我对此很新)Zebra打印机使用ZPL命令.

是否有适用于Windows(7)的软件打印机模拟器接受ZPL命令并输出PDF /位图/ ...?

windows emulation zpl zebra-printers

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

如何在openlayers 3中悬停光标?

我设法为从远程GeoJSON资源添加的要素图层添加交互性.当我点击某个功能时,我会获取其ID,在地图区域外的页面上触发AJAX请求并显示有关该功能的相关信息.

我用过Select互动.

我想让用户更清楚地知道他可以点击地图上的功能.当鼠标悬停在一个包含的功能时,有什么办法可以将鼠标光标改为"手"的"光标" ol.layer.Vector

我在文档中,在本网站上或通过谷歌搜索找不到任何内容.

javascript openlayers-3

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