我正在学习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) 我使用@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 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)
那么从持续时间对象中提取分钟和小时的推荐方法是什么?我们是否必须从秒数开始计算?为什么这样实现?
我有一个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实体的表名?
我偶然发现我的网络应用程序中的一个错误,让我摸不着头脑(并最终拉我的头发)一段时间才发现发生了什么事.
基本上,我在我的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.
是否有Oracle等同于MS SQL的全文搜索服务?
如果是这样,有没有人实现它并有好/坏的经历?
在学习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)
这是正确/最佳的方式吗?或者有没有办法在没有第二个嵌套流的情况下执行此操作?
我对Web服务,JAX-WS等都很陌生,所以也许没有问题......
所以,我想实现一个Web服务来使两个系统进行通信."客户端"系统对在"服务器"系统上生成的事件感兴趣.但"客户端系统"本身就是不同应用程序的服务器.服务器是Java(tomcat中的WAR).客户端是.Net.
应该只有一个客户端系统,但客户端系统中有几个客户端进程,每个客户端进程都对不同类别的事件感兴趣.
我将实现服务器端和测试客户端.其他人将实现.Net代码.
运行顺序应该沿着这一行:
首先,这听起来像是可行的吗?
是否有一个标准的内置机制,使用SOAP(服务器上的JAX-WS,客户端的.Net可用的任何东西) - 服务器可以用来从客户端获取回调端点?
例如,我使用RMI做了一些非常相似的事情,在这种情况下,客户端可以只向自己发送远程引用,服务器可以稍后存储ant引用.
最后,是否有一个标准库来存储端点引用,make(集体)回调,并且可能使列表保持最新,删除那些没有响应的客户端,以便进行一些"ping"调用?
为清楚起见,注意:我需要的不仅仅是带回调的异步方法:来自客户端的一条消息将从服务器到客户端生成许多回调消息.
我正在开发一个Java应用程序,可以打印Zebra打印机的票证.
问题是我正在远程工作,无法访问Zebra打印机(或任何其他打印机).
我想知道是否有办法模拟Zebra打印机,以便我可以看到我的应用程序生成的打印作业的结果(PDF,位图图像等).
据我所知(我对此很新)Zebra打印机使用ZPL命令.
是否有适用于Windows(7)的软件打印机模拟器接受ZPL命令并输出PDF /位图/ ...?
我设法为从远程GeoJSON资源添加的要素图层添加交互性.当我点击某个功能时,我会获取其ID,在地图区域外的页面上触发AJAX请求并显示有关该功能的相关信息.
我用过Select互动.
我想让用户更清楚地知道他可以点击地图上的功能.当鼠标悬停在一个包含的功能时,有什么办法可以将鼠标光标改为"手"的"光标" ol.layer.Vector?
我在文档中,在本网站上或通过谷歌搜索找不到任何内容.
java ×5
java-8 ×2
spring ×2
.net ×1
callback ×1
cron ×1
emulation ×1
java-stream ×1
java-time ×1
javascript ×1
jax-ws ×1
jpa ×1
mongodb ×1
mongoose ×1
monk ×1
node.js ×1
openlayers-3 ×1
oracle ×1
oracle-text ×1
servlets ×1
tomcat ×1
tomcat7 ×1
web-services ×1
windows ×1
zpl ×1