小编w.b*_*ian的帖子

异步套接字服务器如何工作?

我应该声明我还没有询问具体的实现细节(但是),而只是概述了正在发生的事情.我理解套接字背后的基本概念,需要对整个过程进行澄清.我(可能是非常错误的)理解目前是这样的:

套接字不断监听想要连接的客户端(在自己的线程中).发生连接时,会引发一个事件,该事件会生成另一个线程以执行连接过程.在连接过程中,客户端被分配了自己的套接字,用于与服务器通信.然后,服务器等待来自客户端的数据,当数据到达时,会引发一个事件,该事件产生一个线程,将数据从流中读入缓冲区.

我的问题是:

我的理解有多少?

每个客户端套接字是否需要它自己的线程来监听数据?

如何将数据路由到正确的客户端套接字?这是TCP/UDP /内核的内容吗?

在这种线程环境中,通常会共享什么样的数据,争论的焦点是什么?

任何澄清和其他解释将不胜感激.

编辑:

关于通常共享什么数据和争用点的问题,我意识到这更像是一个实现细节,而不是关于接受连接和发送/接收数据的一般过程的问题.我查看了几个实现(SuperSocket和Kayak)并注意到会话缓存和可重用缓冲池之类的一些同步.随意忽略这个问题.我很感激您的反馈意见.

sockets multithreading tcp asyncsocket

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

是否可以将TeamCity配置为使用Visual Studio 2015附带的MSBuild?

我正在尝试在TeamCity中构建一个ASP.NET vNext项目.当它尝试构建时,我收到以下错误:

C:\...\MyApp.kproj(7, 3): error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\AspNet\Microsoft.Web.AspNet.Props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

它正在寻找的文件实际上位于 C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\AspNet\Microsoft.Web.AspNet.Props

我假设我需要让TeamCity使用Visual Studio 2015附带的msbuild版本.这甚至可能吗?

teamcity visual-studio-2015 asp.net-core

12
推荐指数
2
解决办法
4833
查看次数

使用$ resource.query,我想返回一个包含实际资源数组的对象

默认情况下,$resource.query()设置为期望成为$resource对象的对象数组.为了以一种漂亮,安静的方式适应分页,我将GET /api/widgets端点设置为返回以下对象:

{
  currentPage: 1,
  perPage: 20,
  totalItems: 10039,
  items: [{...}, {...}, {...}]
}
Run Code Online (Sandbox Code Playgroud)

有没有办法使它成为angular将知道items属性是作为$resource对象的项目数组?

angularjs angular-resource

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

无法使用模拟器在本地运行azure Web角色

我有一个Web角色,我正在尝试使用模拟器在本地运行.我让它在另一台计算机上工作,但我不能让它在另一台计算机上工作,并且已经远远地重新格式化并从头开始.

当我从Visual Studio启动网站时,Chrome会显示以下消息:

This webpage is not available

The connection to 127.0.0.1 was interrupted.

底部还列出了错误代码:

Error 101 (net::ERR_CONNECTION_RESET): The connection was reset.

构建输出中有一件有趣的事情是这些行:

Starting process 'C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\Windows Azure Tools\v1.8\Debugger\WindowsAzureDebugger.exe' with arguments '"C:\Program Files\IIS Express\iisexpress.exe" /trace:error /config:"C:\Users\brian\AppData\Local\dftmp\Resources\159c7254-b7d0-4076-a4fd-820b00feca5f\temp\temp\RoleTemp\applicationHost.config" /site:"deployment18(27).AzureApp.MyApp.Web_IN_0_Web"'...

Process 'C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\Windows Azure Tools\v1.8\Debugger\WindowsAzureDebugger.exe' exited with exit code 0.

如果我从命令行运行C:\Program Files\IIS Express\iisexpress.exe" /trace:error /config:"C:\Users\brian\AppData\Local\dftmp\Resources\159c7254-b7d0-4076-a4fd-820b00feca5f\temp\temp\RoleTemp\applicationHost.config" /site:"deployment18(27).AzureApp.MyApp.Web_IN_0_Web",我收到以下消息:

The system cannot find the file specified. Unable to start IIS Express in background.

我不知道它找不到什么文件,但我已经确认我传递的配置文件确实存在.任何人都知道这里发生了什么?

azure iis-express azure-web-roles

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

使用T-SQL连接所有父行的字符串的最有效方法是什么?

我有一个表具有自引用外键,表示其父行.为了以最简单的形式说明问题,我们将使用此表:

CREATE TABLE Folder(
    id int IDENTITY(1,1) NOT NULL, --PK
    parent_id int NULL,        --FK
    folder_name varchar(255) NOT NULL)
Run Code Online (Sandbox Code Playgroud)

我想创建一个标量值函数,它将文件夹名称的连接字符串及其所有父文件夹名称一直返回到根文件夹,该文件夹将由null parent_id值指定.

我目前的解决方案是一种程序方法,我认为这种方法并不理想.这是我正在做的事情:

CREATE FUNCTION dbo.GetEntireLineage
    (@folderId INT)
    RETURNS VARCHAR(MAX)
AS
BEGIN
    DECLARE @lineage VARCHAR(MAX)
    DECLARE @parentFolderId INT

    SELECT @lineage = folder_name, @parentFolderId = parent_id FROM Folder WHERE id = @folderId

WHILE NOT @parentFolderId IS NULL
    BEGIN
        SET @parentFolderId = (SELECT parent_id FROM Folder WHERE parent_id = @parentFolderId)
        SET @lineage = (SELECT @lineage + '-' + (SELECT folder_name FROM Folder WHERE parent_id …
Run Code Online (Sandbox Code Playgroud)

sql t-sql database sql-server stored-procedures

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

在加载控制器之前验证路由前提条件

我在Angular中编写单页应用程序,特别是angular.dart,但我假设这个问题仍然适用于AngularJS.

例如,以下路线:

/ login - 预计没有人登录.如果某人经过身份验证但未注册,则重定向到"注册"路由,如果已注册,则重定向到"主页"路由.

/ register - 期待尚未完成注册过程的经过身份验证的用户.如果未经过身份验证,请重定向到登录.如果已通过身份验证,请重定向到主页.

/ home - 期待经过身份验证和注册的用户.如果未经过身份验证,则重定向到"登录"路由,如果未注册,则重定向到"注册"路由.

我已经完成了相当多的搜索,但是在加载与特定路径关联的控制器之前无法找到内置或惯用的方法来确保满足某些先决条件,并且在不满足这些前提条件时适当地重定向.

任何帮助将不胜感激!

dart angular-dart

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

现在不推荐使用Controller,我该使用什么呢?

我有两个顶级控制器,现在Controller已经弃用了,我想知道如何将它们转换为它们需要的任何东西.

dart angular-dart

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

如何使Windows成为符合POSIX标准的开箱即用操作系统?

这个问题的动机是一个牵强附会的梦想,我可以在*nix平台上提供的许多优秀软件可以轻松移植到Windows.微软最近对开源和开放采取了不同的方法,所以我真的很想知道,如果微软这么倾向,这样的事情是多么可行.我感到好奇的一些更具体的事情是,如果可以在不破坏向后兼容性的情况下完成,也许可以对所涉及的工作量进行某种程度的衡量.如果有任何具体的技术例子可以突出这样做的特殊困难,那也将非常感激.

unix linux windows operating-system posix

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

有没有办法从Intellij的调试器中过滤嘈杂的堆栈帧?

我正在尝试使用Intellij的调试器调试一些代码,并且调用堆栈充满了AOP和代理相关的堆栈帧.这使得很难找到相关的堆栈帧.除了过滤掉所有库堆栈帧之外,有没有办法过滤这些?

java debugging callstack intellij-idea

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

代码生成的 Swagger“必需”与“可为空”

我注意到在使用typescript-fetch生成器生成 API 客户端时,生成的接口将所有属性指定为可为空,即使在 swagger/open API 定义中未指定为可为空。此外,将它们设为不可为空的唯一时间是使用required = true.

我还没有发现“必需”和“可空”之间的明确区别,因为它与它应该如何影响代码生成有关,但直观地说,“必需”似乎应该让客户端强制在创建请求时存在一个值,而具有nullable = false(这是默认值)应该在响应对象上生成一个不可为空的属性。

我正在寻找两者之间的明确区别,以便确定 code-gen 在指定字段是否可为空方面是否存在问题。

swagger swagger-codegen

8
推荐指数
0
解决办法
549
查看次数