小编ada*_*amM的帖子

Java AsynchronousFileChannel-线程使用

我知道Java的AsynchronousFileChannel是异步api(不会阻塞调用线程),并且可以在系统线程池中使用线程。

我的问题是:AsynchronousFileChannel操作是否具有1:1的线程比率?

换句话说,如果循环使用AsynchronousFileChannel读取100个文件,它将使用100个线程来执行该操作还是仅使用少量线程(以标准NIO方式)?

java io asynchronous nio

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

使用带有 javascript ES6 模板字符串的 freemarker

Freemaker 模板使用以下语法呈现变量:${name}

Javascript ES6 模板字符串具有类似的语法 ${name}

问题是当freemarker 在服务器上运行时,它会尝试渲染javascript 代码中的模板,因为Freemarker 认为它遇到了一个变量(实际上它是一个应该在客户端渲染的javascript 模板)。关于如何处理的建议?

一种方法是将所有 JS 包装在一个 freemarker 注释中(因此它永远不会被评估),

或者将 JS 代码放在一个单独的文件中(没有内联在 html 页面中),这样它就不会被 freemarker 评估。

javascript template-engine freemarker

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

定期短轮询是否在服务器上扩展?

我们正在开发一个站点,允许用户向其他用户发送半实时事件。当用户有新事件时,UI 将显示一个图标(非常标准的东西)。

我读过定期短轮询的扩展性不如 websockets,因为它给 web 服务器带来了更大的压力。我不太确定为什么会这样?

我们正在使用 tomcat NIO(每个线程比率没有一对一的连接)。据我了解,Tomcat NIO 非常擅长使用少量线程处理较长的 HTTP 连接超时。

因此,如果定期轮询时间小于连接超时,则轮询不应创建另一个 TCP 握手,因为它只会重用现有的 HTTP 1.1 连接。

因此,上述内容似乎不会对服务器造成太大压力。它可能不像长轮询或 websockets 那样实时,但我不明白为什么它不应该扩展(假设服务器可以快速响应指示新事件的响应——我们使用内存中的并发哈希图,所以这应该很快,没有必要的数据库访问)。

我错过了什么吗?

谢谢,-亚当

java ajax tomcat comet

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

标签 统计

java ×2

ajax ×1

asynchronous ×1

comet ×1

freemarker ×1

io ×1

javascript ×1

nio ×1

template-engine ×1

tomcat ×1