点点滴滴

不积跬步,无以至千里;不积小流,无以成江海。

储备列表

  • [转载]代码定位:__FILE__ , __FUNCTION__ , __LINE__

    1

    当程序需要输出一些内容,而又想知道输出的内容是在哪里输出的时候,这几个全局变量就派上用场了。__FILE__,  __FUNCTION__,   __LINE__ 从名字可以直接看出来了,对应的:代码文件名, 函数名, 行号。示例代码://__FUNCTION__,__LINE__,__FILE__//testout.c#include <stdio.h>#include <stdlib.h>

    soskp-yoours2015-06-04 12:11:16

    阅读更多
  • [转载]linux捕捉Ctrl+C

    2

    #include <signal.h>#include <stdlib.h>#include <stdio.h>#include <unistd.h>void my_handler(int s){printf("Caught signal %d\n",s);exit(1);}int main(int argc,char** argv){   struct sigacti

    soskp-yoours2015-06-04 11:05:07

    阅读更多
  • [原创]IAR调试信息输出到模拟终端

    3

    使用IAR在做STM32开发时经常需要查看输出信息用于确定bug的位置,确定程序的工作输出状态是否正常。IAR在调试状态下提供了一个【Terminal I/O】的终端输出窗口,我们可以将需要输出的调试信息输出到该窗口中。一、工程配置 二、调试下载工具选择 三、调试工具连接配置<img title="[原创]IAR调试信息输出到模拟终端 - happyboy200032 - happyboy200032的博客"

    soskp-yoours2015-05-31 14:38:04

    阅读更多
  • [转载]SQLServer优化

    4

    查询速度慢的原因很多,常见如下几种:    1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)    2、I/O吞吐量小,形成了瓶颈效应。    3、没有创建计算列导致查询不优化。    4、内存不足    5、网络速度慢    6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)&n

    soskp-yoours2015-05-22 13:08:10

    阅读更多
  • [转载]7种网络编程I/O模型代码实现实例之四

    5

    BOOL CIOCPServer::PostRecv(CIOCPContext *pContext, CIOCPBuffer *pBuffer){    // 设置I/O类型    pBuffer->nOperation = OP_READ;    ::EnterCriticalSection(&pContext->Lock);    /

    soskp-yoours2015-05-10 18:46:30

    阅读更多
  • [转载]7种网络编程I/O模型代码实现实例之三

    6

    七,IOCP大框架为书中例子,对强化了发送操作,部分异常处理,且加入了连接超时处理。注意:当一个投递完成,且对应socket上已经没有未决的投递,必须要再投递一个请求或者关闭连接,否则socket对应的数据结构无法被释放,对应socket连接断开时也无法被检测到。所以如果业务逻辑结束,要关闭连接。或者你需要等客户端来断开连接,那么你可以在业务逻辑结束后,再投递一个接收请求(客户端断开时,接收请求返回且接收的字节数为0,则此类中的异常处理

    soskp-yoours2015-05-10 18:45:36

    阅读更多
  • [转载]7种网络编程I/O模型代码实现实例之二

    7

    六,重叠I/O模型若需要建线程池,可参考事件选择模型。若纠结于send,可参考下面的IOCP。#include <WinSock2.h>#include <Windows.h>#include <MSWSock.h>#include <stdio.h>#pragma comment(lib,"Ws2_32.lib")#define BUFFER_SIZE 4096typedef struc

    soskp-yoours2015-05-10 18:43:16

    阅读更多
  • [转载]7种网络编程I/O模型代码实现实例之一

    8

    阻塞模式下,send会发生阻塞(非阻塞模式下send返回WSAEWOULDBLOCK错误,重叠I/O下表现为投递的发送请求一直无法完成)的情况一般可以分为3种 :1,  服务器虽然发送了大量数据,但客户端并未调用recv函数去接。2,网络状况不佳,发送缓冲区中的数据一直发不出去。3,发送数据量很大,如下载功能,协议发送数据的速度比不上send函数将数据拷贝到发送缓冲区的速度。对于1,2情况,我们似乎可以直接关闭套接字,让客户端

    soskp-yoours2015-05-10 18:40:18

    阅读更多
  • [转载]使用UDP进行跨网段广播

    9

    广播域首先我们来了解一下广播域的概念。广播域是网络中能接收任一台主机发出的广播帧的所有主机集合。也就是说,如果广播域内的其中一台主机发出一个广播帧,同一广播域内所有的其它主机都可以收到该广播帧。广播域的计算如何知道一台主机是属于哪一个广播域呢?其实计算很简单,只要用主机的IP地址与子网掩码进行与运算即可知道该主机属于哪一个广播域。例如:一台主机的IP地址为192.168.23.150,子网掩码为255.255.255.0,那么它所属的广

    soskp-yoours2015-05-10 17:15:19

    阅读更多
  • [转载]setsockopt设置socket状态

    10

    1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,不经历TIME_WAIT的过程:BOOL bDont

    soskp-yoours2015-05-09 22:35:39

    阅读更多