小编amn*_*amn的帖子

有人能给我一个很好的解释非阻塞套接字的"发送"行为吗?

我现在已经阅读了至少10次文档,并且还阅读了大约10个代码片段和完整程序,其中非阻塞套接字用于发送数据.问题是,有些教程要么适合初学者(Beejs fi),要么在他们的假设中非常草率; 那些不复杂的是专门的代码示例,无法解释他们为什么这么做.send在我看来,即使是SO知识库也没有详尽地涵盖整个行为范围.我所追求的是有关fe的详细信息:

  • 返回代码0的确切含义是什么,是否值得检查,errno或者只是在没有进一步调查的情况下丢弃连接?
  • 获得负回报值是否需要关闭连接变坏,或者只是这样,除非errno是EWOULDBLOCK,EAGAIN或EINTR(......其他)?
  • errno返回值是否值得检查> 0?显然,该值表示"已发送"的数据量(在引号中,因为它确实是一个很长的过程,正确),但由于套接字是非阻塞的,这是否意味着可以立即发出另一个呼叫,或者,errno再次,一个人应该等待下一个发送时机(使用select/poll/epoll)?
  • 基本上,首先检查返回值,然后才检查errno值?或者,也许send将errno在每次调用,返回值,而不管?这会使错误检查更容易......
  • 如果有人获得EINTR,那么程序要采取什么样的良好,强健的行为呢?只需记录状态并在下一次发送时重试,比如EWOULDBLOCK和EAGAIN?
  • 是否为一个检查都 EWOULDBLOCK 和 EAGAIN?我们可以相信两者具有相同的价值,还是依赖于实施?
  • 是否send返回EMSGSIZE了流式套接字?如果没有,那么没有缓冲区大小太大,对吧?
  • 返回值本身是否等于任何已知的错误代码?

如果你能提供一个强大的非阻塞发送代码的例子,那将是绝对赞赏的.

sockets nonblocking send berkeley-sockets

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

SQL:任何直接的方式来订购结果FIRST,然后按另一列排序?

我在SQL中看到,GROUP BY必须在ORDER BY表达式之前.这是否意味着在分组后完成排序会丢弃相同的行/列?

因为我似乎需要首先按时间戳列A排序行,然后丢弃列A中具有相同值的行.不确定如何完成此操作...

我正在使用MySQL 5.1.41

create table
(
    A int,
    B timestamp
)
Run Code Online (Sandbox Code Playgroud)

数据可能是:

+-----+-----------------------+
|  A  |  B                    |
+-----+-----------------------+
|  1  |  today                |
|  1  |  yesterday            |
|  2  |  yesterday            |
|  2  |  tomorrow             |
+-----+-----------------------+
Run Code Online (Sandbox Code Playgroud)

我的目标是:

+-----+-----------------------+
|  A  |  B                    |
+-----+-----------------------+
|  1  |  today                |
|  2  |  tomorrow             |
+-----+-----------------------+
Run Code Online (Sandbox Code Playgroud)

基本上,我希望列B中具有最新时间戳的行(想想ORDER BY),并且列A中的每个值只有一行(想想DISTINCT或GROUP BY).

我的实际项目详情,如果您需要这些:

在现实生活中,我有两张桌子 - users和payment_receipts.

create table users
(
    phone_nr int(10) unsigned not …
Run Code Online (Sandbox Code Playgroud)

mysql sql database group-by sql-order-by

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

CreateStdDispatch 如何知道调用什么方法?

我面临着实现一个IDispatch接口。有四种方法,幸运的是其中 3 种方法很简单:

function TIEEventsSink.GetTypeInfoCount(...): HResult;
{
   Result := E_NOTIMPL;
}

function TIEEventsSink.GetTypeInfo(...): HResult;
{
   Result := E_NOTIMPL;
}

function TIEEventsSink.GetIDsOfNames(...): HResult;
{
   Result := E_NOTIMPL;
}
Run Code Online (Sandbox Code Playgroud)

这是最后一种方法,Invoke这很困难。在这里,我不得不实际处理DispID并调用我的适当方法;从变体数组解组参数。

function Invoke(  
  dispIdMember: DISPID;
  riid: REFIID;
  lcid: LCID;
  wFlags: WORD;
  var pDispParams: DISPPARAMS;
  var pVarResult: VARIANT;
  var pExcepInfo: EXCEPINFO;
  var puArgErr: DWORD
): HRESULT;
Run Code Online (Sandbox Code Playgroud)

不想编写所有乏味的样板代码,我肯定会有错误,我去谷歌搜索 - 而不是做任何工作。

我在以下的 MSDN 文档中IDispatch.Invoke找到了这个片段:

通常,您不应直接实现Invoke。

优秀!我无论如何都不想实施它!继续阅读:

相反,使用调度接口来创建函数CreateStdDispatch和DispInvoke。有关详细信息,请参阅CreateStdDispatch、DispInvoke、 …

com winapi idispatch native-code

5
推荐指数
2
解决办法
1738
查看次数

什么是检索以下结果集的最佳SQL查询

我会提前说,出于对你的时间和网站的尊重 - 这是一项家庭作业.但是,我已经考虑并编写了一个解决方案,但由于我无法成功地对其进行分析或在其他地方获得相关的第三方意见,以确定它是否实际上是一个好的事实,我有点恼火.

假设我有一个简单的电影参与信息表(人物,电影,人物与电影的关系)如下:

create table film
(
    person_name varchar(48) not null,
    film_title varchar(128) not null,
    relation varchar(48) not null
);

-- { 'Mel Gibson', 'Braveheart', 'director' }
-- { 'Mel Gibson', 'Braveheart', 'cast' }
-- { 'Steven Spielberg', 'A.I.' , 'director' }
-- { 'Hilary Swank', 'Million Dollar Baby', 'cast' }
-- etc
Run Code Online (Sandbox Code Playgroud)

数据库和表格不是由我创建或维护的,我只是从中查询信息.

我需要为他们指导的每部电影中的演员(在镜头前行动)制作一套人名.该条件应不持有谁曾执导最少一部电影中,他们不采取行动,或谁没有任何指示的人的人.

我的查询(据我可以证明,产生了正确的结果集),瞧瞧:

(   
    select  person_name 
    from    film 
    where   relation = 'director'
)
except 
(
    select …
Run Code Online (Sandbox Code Playgroud)

sql optimization

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

有没有办法将文件描述符与用户定义的数据相关联?

我正在编写一个客户端 - 服务器应用程序,它使用POSIX poll函数来提供一种并发客户端处理的形式.客户端还具有状态和其他相关数据,这些数据存储在客户端结构中.

我当前的问题是,当我从poll与客户端(概念上)相关联的套接字文件描述符上获取I/O 提示时,我必须将文件描述符实际匹配到其关联的客户端数据结构.目前我进行O(n_clients)查找(我的客户端数据结构存储描述符),但我想知道是否存在更好的替代方案?

c sockets posix

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

ValidateRect 与 BeginPaint

来自 MSDN 文档:

该BeginPaint函数验证整个客户区。

ValidateRect如果在生成下一个 WM_PAINT 消息之前必须验证更新区域的一部分,则不应调用该函数。1

我多年来一直使用 Win32 API 进行编程,但我从未想过要调用该ValidateRect函数。今天我的一位同事指出,我们错过了对 的调用ValidateRect,该调用修复了我们使用 GDI 进行一些高速动画时遇到的错误(我知道,这是一个矛盾的说法)

有人可以告诉我在/对之后是否ValidateRect需要调用 to 吗?我在 MSDN 上没有看到任何文档可以阐明这一点,而且我看到的文档和示例表明没有必要进行调用。BeginPaintEndPaintValidateRect

winapi

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

如何将嵌套的git repo合并到父repo中,保留历史记录?

现在我知道大多数git专家会立即想到git rebase,但我更普遍地使用"rebase"这个词:我的项目结构如下:

.
..
.git
tools
lib
src
    .git
build
Run Code Online (Sandbox Code Playgroud)

两者.和./src目录都是明显的git存储库,并且具有很长的历史和大量的提交.存储库.忽略src目录(这是它自己的存储库).

我刚刚意识到我只想在.跟踪包括源文件在内的所有内容时只需要一个repo ,因为坦率地说,构建系统随着源代码的发展而变得非常广泛.

我的问题是我不知道如何让这个存储库保留历史记录,该历史记录现在是存储库的一部分src.它甚至可能吗?这就是我所说的'变基' - 如果./src/main.c通过./src/.git一些N次提交跟踪变化,那么我想保留这些变化并让它们成为新存储库的一部分./.git.相同的历史,重新定位的文件路径.

UPDATE

从我收集的内容来看,子树合并不是我想要的东西.简而言之,它比我需要的更多.我只需要旧回购的内容,将所有开发分支和所有提交,标签等一起看起来好像它们始终是父回购的一部分.在本质上,唯一的变化是文件本身的路径 - 在子回购跟踪之前./main.c,新的回购现在将跟踪./src/main.c,并且据我所知,git跟踪内容,而不是文件,然后改变文件路径,如上所述和对这些的引用路径,应该是相当微不足道的,对吗?

git

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

git:如何在提交时忽略对文件的更改?

我确实在寻找解决方案,但我相信我的情况与我读到的情况略有不同.

我正在一个特定的分支上工作并犯了一个错误,以一种与分支主题无关的方式编辑了一个文件,现在希望这些更改不会进入提交.我不想丢失这些更改,因为我将尝试稍后以某种方式将它们提交到另一个分支.

我试过,git rm --cached但后来我看到deleted了我的状态git status- 文件是否会从存储库中删除?我不希望这样 - 我希望它在我工作分支上的先前提交中保持不变.

git branch

5
推荐指数
2
解决办法
5158
查看次数

可以在Windows上安装KVM吗?

可以在Windows将成为主机操作系统的Windows系统上安装KVM吗?

我已经搜索了很多,但每个答案都是关于如何在KVM上以Windows身份安装Windows.

windows virtualization kvm

5
推荐指数
3
解决办法
3万
查看次数

使用动态字段将数据插入数据库

我正在使用动态文本框.

我想将文本框中输入的数据添加到我的数据库中.

我的加价:

<form name="reaction" id="reaction" method="post" action="./send.php">
    <input type="text" name="number[]" id="number1" value="15" placeholder="Number 1" /> <br />
    <input type="text" name="name[]" id="name1" value="aaaa" placeholder="Name 1" /> <br />
    <input type="text" name="price[]" id="price1" value="10" placeholder="Price 1" /> <br />
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script>
        $(document).on('click', '#add_row', function(){
            count++;
            $('#total_item').val(count);
            var html_code = '';
            html_code += '<input type="text" placeholder="Number '+count+'" name="number[]" id="number'+count+'" data-srno="'+count+'" /><br />';
            html_code += '<input type="text" placeholder="Name '+count+'" name="name[]" id="name'+count+'" data-srno="'+count+'" /><br />';
            html_code += '<input type="text" placeholder="Price '+count+'" name="price[]" id="price'+count+'" …
Run Code Online (Sandbox Code Playgroud)

html javascript php database jquery

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