点点滴滴
不积跬步,无以至千里;不积小流,无以成江海。
储备列表
-
[原创]IAR调试信息输出到模拟终端
1使用IAR在做STM32开发时经常需要查看输出信息用于确定bug的位置,确定程序的工作输出状态是否正常。IAR在调试状态下提供了一个【Terminal I/O】的终端输出窗口,我们可以将需要输出的调试信息输出到该窗口中。一、工程配置 二、调试下载工具选择 三、调试工具连接配置<img title="[原创]IAR调试信息输出到模拟终端 - happyboy200032 - happyboy200032的博客"
soskp-yoours2015-05-31 14:38:04
阅读更多 -
[转载]SQLServer优化
2查询速度慢的原因很多,常见如下几种: 1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2、I/O吞吐量小,形成了瓶颈效应。 3、没有创建计算列导致查询不优化。 4、内存不足 5、网络速度慢 6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)&n
soskp-yoours2015-05-22 13:08:10
阅读更多 -
[转载]7种网络编程I/O模型代码实现实例之四
3BOOL 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模型代码实现实例之三
4七,IOCP大框架为书中例子,对强化了发送操作,部分异常处理,且加入了连接超时处理。注意:当一个投递完成,且对应socket上已经没有未决的投递,必须要再投递一个请求或者关闭连接,否则socket对应的数据结构无法被释放,对应socket连接断开时也无法被检测到。所以如果业务逻辑结束,要关闭连接。或者你需要等客户端来断开连接,那么你可以在业务逻辑结束后,再投递一个接收请求(客户端断开时,接收请求返回且接收的字节数为0,则此类中的异常处理
soskp-yoours2015-05-10 18:45:36
阅读更多 -
[转载]7种网络编程I/O模型代码实现实例之二
5六,重叠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模型代码实现实例之一
6阻塞模式下,send会发生阻塞(非阻塞模式下send返回WSAEWOULDBLOCK错误,重叠I/O下表现为投递的发送请求一直无法完成)的情况一般可以分为3种 :1, 服务器虽然发送了大量数据,但客户端并未调用recv函数去接。2,网络状况不佳,发送缓冲区中的数据一直发不出去。3,发送数据量很大,如下载功能,协议发送数据的速度比不上send函数将数据拷贝到发送缓冲区的速度。对于1,2情况,我们似乎可以直接关闭套接字,让客户端
soskp-yoours2015-05-10 18:40:18
阅读更多 -
[转载]使用UDP进行跨网段广播
7广播域首先我们来了解一下广播域的概念。广播域是网络中能接收任一台主机发出的广播帧的所有主机集合。也就是说,如果广播域内的其中一台主机发出一个广播帧,同一广播域内所有的其它主机都可以收到该广播帧。广播域的计算如何知道一台主机是属于哪一个广播域呢?其实计算很简单,只要用主机的IP地址与子网掩码进行与运算即可知道该主机属于哪一个广播域。例如:一台主机的IP地址为192.168.23.150,子网掩码为255.255.255.0,那么它所属的广
soskp-yoours2015-05-10 17:15:19
阅读更多 -
[转载]setsockopt设置socket状态
81.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
阅读更多 -
[转载]Linux动态库静态库说明
9一、nm命令nm命令可以列出一个函数库文件中的符号表。它对于静态的函数库和共享的函数库都起作用。对于一个给定的函数库,nm命令可以列出函数库中定义 的所有符号,包括每个符号的值和类型。还可以给出在原程序中这个函数(符号)是在多少行定义的,不过这必须要求编译该函数库的时候加“-l”选项。关于符号的类型,这里我们再多讨论一下。符号的类型是以一个字母的形式显示的,小写字母表示这个符号是本地(local)的,而大写字母则表示 这个符号是全局的(
soskp-yoours2015-05-09 21:57:16
阅读更多 -
[转载]Linux动态加载库-dlopen,dlclose,dlsym
10一、dlopen()dlopen函数打开一个函数库然后为后面的使用做准备。C语言原形是: void * dlopen(const char *filename, int flag);如果文件名filename是以“/”开头,也就是使用绝对路径,那么dlopne就直接使用它,而不去查找某些环境变量或者系统设置的函数库所在的目录了。否则dlopen()就会按照下面的次序查找函数库文件:1. 环境变量LD_LIBRARY指明的路径。
soskp-yoours2015-05-09 21:26:19
阅读更多