运行所有代码后,一行简单的节点程序会立即退出:
console.log('hello');
Run Code Online (Sandbox Code Playgroud)
但是,在执行所有代码后,侦听端口的http服务器程序不会退出:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,是什么造就了这个差异?是什么让第一个程序在执行所有代码后退出,而第二个程序继续存在?
我在Java中理解,规范说当最后一个非守护进程线程退出时,JVM退出.那么,nodejs世界的机制是什么?
当我打开套接字连接时,我在套接字打开后立即将socket.Close()逻辑放入defer函数中.但是,如果socket.Close()会导致另一个恐慌怎么办?我应该总是在外部延迟内嵌套另一个延迟/恢复以防止我的程序崩溃吗?像这样:http://play.golang.org/p/GnEMQS-0jj
谢谢,Elgs
我在材料ui演示页面上找到了左侧菜单:http://www.material-ui.com/#/components/app-bar非常吸引人.但是,它似乎不是材料ui提供的组件之一.我想知道是否有任何组件库有这样的侧面菜单?谢谢.
当我阅读and的文档(https://angular.io/api/common/NgForOf)时,我想我明白如果 trackBy 函数返回的值发生变化,Angular 只会重做 DOM,但是当我玩它在这里(https://stackblitz.com/edit/angular-playground-bveczb),我发现我实际上根本不理解它。这是我的代码的重要部分:ngFortrackBy
export class AppComponent {
data = [
{ id: 1, text: 'one' },
{ id: 2, text: 'two' },
{ id: 3, text: 'three' },
];
toUpper() {
this.data.map(d => d.text = d.text.toUpperCase());
}
trackByIds (index: number, item: any) {
return item.id;
};
}
Run Code Online (Sandbox Code Playgroud)
和:
<div *ngFor="let d of data; trackBy: trackByIds">
{{ d.text }}
</div>
<button (click)=toUpper()>To Upper Case</button>
Run Code Online (Sandbox Code Playgroud)
我预料到的点击按钮应该不是单从小写改为上,但它确实。我以为我trackByIds在trackByin 中使用了该函数*ngFor …
我经常听到Node只在一个线程中运行.但是,我不明白的是节点如何只用一个线程进行非阻塞.假设有100个并发请求进入节点Web服务器,服务器生成100个回调来处理请求.如果每个100个回调需要1秒即可完成,而如果所有的人都在1个线程,他们在一系列的工作要做,它意味着它将100秒阻止?
我使用此网址中的示例代码成功获取了电子邮件标头列表:https://godoc.org/code.google.com/p/go-imap/go1/imap#example-Client.但是,我仍然无法获取电子邮件的正文.任何人都可以展示一些可以从Golang的imap服务器获取电子邮件正文的工作示例代码吗?
我正在服务器端的Golang中编写一个http拦截器.我可以从中读取http请求正文r.Body.现在,如果我想修改正文内容,如何在控件传递给下一个拦截器之前修改请求体?
func(w http.ResponseWriter, r *http.Request) {
// Now I want to modify the request body, and
// handle(w, r)
}
Run Code Online (Sandbox Code Playgroud) p {
animation-duration: 3s;
animation-name: slidein;
}
@keyframes slidein {
from {
margin-left: 100%;
width: 300%;
}
to {
margin-left: 0%;
width: 100%;
}
}
Run Code Online (Sandbox Code Playgroud)
对于上面的动画CSS代码,我想知道是否有任何方法可以从Javascript 传递margin-left和width作为参数的值.
我创建了一个带有resteasy 2.3.4 Final的小型Web应用程序,并将其部署到Tomcat 7.0.30.tomcat启动时收到以下错误消息:
...
INFO: JSF1048: PostConstruct/PreDestroy annotations present. ManagedBeans methods marked with these annotations will have said annotations processed.
Sep 11, 2012 9:28:08 PM org.apache.catalina.core.StandardContext filterStart
SEVERE: Exception starting filter org.jboss.resteasy.plugins.server.servlet.Filter30Dispatcher
java.lang.NoClassDefFoundError: javax/enterprise/context/spi/Contextual
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2404)
...
Run Code Online (Sandbox Code Playgroud)
我的web.xml如下:
<context-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/services</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan.resources</param-name>
<param-value>true</param-value>
</context-param>
<servlet>
<servlet-name>Resteasy</servlet-name>
<servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Resteasy</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud) 似乎有两种不同的方式在Golang中声明一个函数,如下所示:
package main
import "fmt"
var someFunc = func(arg string) {
fmt.Println(arg)
}
func main() {
someFunc("Hello")
}
Run Code Online (Sandbox Code Playgroud)
以上工作.但是,以下不起作用:
package main
import "fmt"
var someFunc = func(arg string) {
fmt.Println(arg)
}
var main = func() {
someFunc("Hello")
}
Run Code Online (Sandbox Code Playgroud)
它会抱怨:
runtime.main: undefined: main.main
Run Code Online (Sandbox Code Playgroud)
那么func someFunc()和之间的区别是var someFunc = func()什么?
我发现这个的原因可能是因为我编写了很多Javascript代码.似乎在Go中,我很少看到人们声明一个类似的功能var someFunc=func().在这两个中,我们可以说哪一个比另一个更正确吗?