我知道Java的AsynchronousFileChannel是异步api(不会阻塞调用线程),并且可以在系统线程池中使用线程。
我的问题是:AsynchronousFileChannel操作是否具有1:1的线程比率?
换句话说,如果循环使用AsynchronousFileChannel读取100个文件,它将使用100个线程来执行该操作还是仅使用少量线程(以标准NIO方式)?
Freemaker 模板使用以下语法呈现变量:${name}
Javascript ES6 模板字符串具有类似的语法 ${name}
问题是当freemarker 在服务器上运行时,它会尝试渲染javascript 代码中的模板,因为Freemarker 认为它遇到了一个变量(实际上它是一个应该在客户端渲染的javascript 模板)。关于如何处理的建议?
一种方法是将所有 JS 包装在一个 freemarker 注释中(因此它永远不会被评估),
或者将 JS 代码放在一个单独的文件中(没有内联在 html 页面中),这样它就不会被 freemarker 评估。
我们正在开发一个站点,允许用户向其他用户发送半实时事件。当用户有新事件时,UI 将显示一个图标(非常标准的东西)。
我读过定期短轮询的扩展性不如 websockets,因为它给 web 服务器带来了更大的压力。我不太确定为什么会这样?
我们正在使用 tomcat NIO(每个线程比率没有一对一的连接)。据我了解,Tomcat NIO 非常擅长使用少量线程处理较长的 HTTP 连接超时。
因此,如果定期轮询时间小于连接超时,则轮询不应创建另一个 TCP 握手,因为它只会重用现有的 HTTP 1.1 连接。
因此,上述内容似乎不会对服务器造成太大压力。它可能不像长轮询或 websockets 那样实时,但我不明白为什么它不应该扩展(假设服务器可以快速响应指示新事件的响应——我们使用内存中的并发哈希图,所以这应该很快,没有必要的数据库访问)。
我错过了什么吗?
谢谢,-亚当