![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c
Junkie0901
这个作者很懒,什么都没留下…
展开
-
数据库“长连接”与“短连接”
什么是长连接?其实长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态。通常的短连接操作步骤是:连接-》数据传输-》关闭连接;而长连接通常就是:连接-》数据传输-》保持连接-》数据传输-》保持连接-》…………-》关闭连接;这就要求长连接在没有数据通信时,定时发送数据包,以维持连接状态,短连接在没有数据传输时直接关闭就行了转载 2014-03-04 12:52:25 · 1042 阅读 · 0 评论 -
valgrind简单介绍
用C/C++开发其中最令人头疼的一个问题就是内存管理,有时候为了查找一个内存泄漏或者一个内存访问越界,需要要花上好几天时间,如果有一款工具能够帮助我们做这件事情就好了,valgrind正好就是这样的一款工具。Valgrind是一款基于模拟linux下的程序调试器和剖析器的软件套件,可以运行于x86, amd64和ppc32架构上。valgrind包含一个核心,它提供一个虚拟的CPU运行程序转载 2014-04-16 13:46:34 · 629 阅读 · 0 评论 -
Valgrind基本使用说明(具体说明见user manual)
Valgrind是运行在Linux上一套基于仿真技术的程序调试和分析工具,是公认的最接近Purify的产品,它包含一个内核——一个软件合成的CPU,和一系列的小工具,每个工具都可以完成一项任务——调试,分析,或测试等。Valgrind可以检测内存泄漏和内存越界,还可以分析cache的使用等,灵活轻巧而又强大。 一 Valgrind概观Valgrind的最新版是3.2.3,该版本包含下转载 2014-04-16 14:00:12 · 817 阅读 · 0 评论 -
C/C++ 笔试、面试题目大汇总2
一.找错题试题1:void test1(){ char string[10]; char* str1 = "0123456789"; strcpy( string, str1 );} 试题2:void test2(){ char string[10],str1[10]; int i; for(i=0; i10;转载 2014-04-17 14:32:49 · 548 阅读 · 0 评论 -
UC/OS-II的内存管理OSMemCreate()分析
我们在写应用程序的过程中通常都是采用一个malloc/free系列函数进行内存的管理,这样分配的内存空间是从应用程序的栈空间分配处理,一般而言我们在写程序的过程中要对内存空间进行适时的释放,才不至于导致栈空间的不足,当然这样也会导致内存垃圾的产生,因为不同大小的内存分配因为对齐等原因导致很多的内存不能再使用,进而使得系统的可用内存越来越小,因此在实时操作系统中通常都需要创建自己的内存管理操作。转载 2014-05-06 09:38:53 · 759 阅读 · 0 评论 -
Openssl 编程入门之 ssl编程
什么是 SSL?SSL 是一个缩写,代表的是 Secure Sockets Layer。它是支持在 Internet 上进行安全通信的 标准,并且将数据密码术集成到了协议之中。数据在离开您的计算机之前就已经被加密,然后只有 到达它预定的目标后才被解密。证书和密码学算法支持了这一切的运转,使用 OpenSSL,您将 有机会切身体会它们。理论上,如果加密的数据在到达目标之前被截取或窃听转载 2014-10-23 18:50:08 · 2824 阅读 · 0 评论 -
浅析静态库链接原理
静态库的链接基本上同链接目标文件.obj/.o相同,但也有些不同的地方。本文简要描述linux下静态库在链接过程中的一些细节。静态库文件格式静态库远远不同于动态库,不涉及到符号重定位之类的问题。静态库本质上只是将一堆目标文件进行打包而已。静态库没有标准,不同的linux下都会有些细微的差别。大致的格式wiki上描述的较清楚:Global header-------------转载 2014-09-29 11:09:51 · 627 阅读 · 0 评论 -
结构体中Char a[0]用法——柔性数组
有如下定义:typedef struct{ char a; char b[0]; }; 其中元素Char b[0];叫做柔性数组,主要用于使结构体包含可变长字段。详细内容如下:柔性数组; 【柔性数组结构成员 C99中,结构中的最后一个元素允许是未知大小的数组,这就叫做柔性数组成员,但结构中的柔性数组成员前面必须至少一个其他成员。柔性数组成员允许结构中包含一个大小转载 2013-11-25 13:06:46 · 818 阅读 · 0 评论 -
值得推荐的C/C++框架和库 (真的很强大)
值得学习的C语言开源项目- 1. WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.cz/转载 2015-03-27 17:30:14 · 9058 阅读 · 0 评论 -
LINUX core dump详解
1. 前言:有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的.但这不像编译错误一样会提示到文件->行, 而是没有任何信息, 使得我们的调试变得困难起来.2. gdb:有一种办法是, 我们用gdb的step, 一步一步寻找. 这放在短小的代码中是可行的, 但要让你step一个上万行的代码, 我想你会从此厌恶程序员这个名字转载 2014-03-27 17:14:46 · 577 阅读 · 0 评论 -
linux C中调用shell命令和运行shell脚本
1、system(执行shell 命令)相关函数 fork,execve,waitpid,popen表头文件 #include定义函数 int system(const char * string);函数说明 system()会调用fork()产生子进程,由子进程来调用/bin/sh-cstring来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的转载 2014-01-16 10:18:40 · 730 阅读 · 0 评论 -
关于select函数中struct timeval问题
如果select调用中设置了等待时间,那么每次调用时都需要重新对这个时间赋值么?就像对fd_set处理一样。 例如: fd_set readfd; struct timval tv; while(1) { FD_ZERO(&readfd); FD_SET(fd, &readfd); tv.tv_sec = 2; tv.tv_usec = 0;转载 2013-11-05 16:42:19 · 4006 阅读 · 0 评论 -
Linux时间函数
系统环境:ubuntu10.04简介本文旨在为了解Linux各种时间类型与时间函数提供技术文档。1、Linux下常用时间类型Linux下常用时间类型有四种:time_t、struct tm、struct timeval、struct timespec1.1 time_t时间类型time_t类型在time.h中定义:[cpp] view pla转载 2014-02-10 16:08:05 · 577 阅读 · 0 评论 -
Linux下send函数 Broken pipe错误的解决方法
在linux下写socket的程序的时候,如果尝试send到一个disconnected socket上,就会让底层抛出一个SIGPIPE信号。client端通过 pipe 发送信息到server端后,就关闭client端, 这时server端,返回信息给 client 端时就产生Broken pipe 信号了。对于产生信号,我们可以在产生信号前利用方法 signal(int si转载 2013-12-10 10:09:17 · 1158 阅读 · 0 评论 -
float数据在内存中的存储方法
浮点型变量在计算机内存中占用4字节(Byte),即32-bit。遵循IEEE-754格式标准。一个浮点数由2部分组成:底数m 和 指数e。 ±mantissa × 2exponent (注意,公式中的mantissa 和 exponent使用二进制表示)底数部分 使用2进制数来表示此浮点数的实际值。指数部分 占用8-bit的二进制转载 2014-01-11 09:49:47 · 510 阅读 · 0 评论 -
获得Linux系统中的IP、MAC地址等信息
实际环境和特殊需求往往会将简单问题复杂化,比如计算机IP地址,对于一个连接中socket,可以直接获得本端和对端的IP、端口信息。但在一些特殊场合我们可能需要更多的信息,比如系统中有几块网卡,他们的Mac地址是多少,每块网卡分配了几个IP(一个网卡对应多个IP)等等。这些信息往往需要通过ifconfig指令来获得,对于程序员来说,在代码中调用外部的shell指令可不是个最佳方案,因为没人能转载 2014-02-13 11:30:18 · 771 阅读 · 0 评论 -
长连接和心跳包 .
第一种设置:通过设置socket的keepalive属性#include "/usr/include/linux/tcp.h"#include "/usr/include/linux/socket.h"////KeepAlive实现,单位秒//下面代码要求有ACE,如果没有包含ACE,则请把用到的ACE函数改成linux相应的接口int keepAlive = 1;//设转载 2013-10-23 17:08:20 · 853 阅读 · 0 评论 -
CGI编程学习
一.基本原理CGI:通用网关接口(Common Gateway Interface)是一个Web服务器主机提供信息服务的标准接口。通过CGI接口,Web服务器就能够获取客户端提交的信息,转交给服务器端的CGI程序进行处理,最后返回结果给客户端。组成CGI通信系统的是两部分:一部分是html页面,就是在用户端浏览器上显示的页面。另一部分则是运行在服务器上的Cgi程序。它们之间转载 2013-12-11 17:50:50 · 552 阅读 · 0 评论 -
recv函数返回值说明
recv函数int recv( SOCKET s, char FAR *buf, int len, int flags);不论是客户还是服务器应用程序都用recv函数从TCP连接的另一端接收数据。该函数的第一个参数指定接收端套接字描述符;第二个参数指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据;第三个参数指明buf的长度;第四个参数一般置0。这里只描述同步So转载 2013-12-06 10:46:05 · 517 阅读 · 0 评论 -
Linux下如何得到本机所有IP地址及MAC地址
已知: gethost and gethostbyname,测试只能得到一个IP地址。 --------------------------------------------------------------- 原文:http://www.chinaunix.net/jh/23/161236.html ----------------------------------转载 2013-11-29 19:17:10 · 741 阅读 · 0 评论 -
Linux 串口编程
在linux下编写终端程序时,有规范模式 ,非规范模式(原始模式特殊的非规范模式)之分。不用于终端,而是在串口这种使用情况下,一般设置为原始模式(非规范的一种特殊情况)。但用read()函数,希望从串口接收指定的数量的字符时,往往接收到的实际字符数,都与指定的不同。如本人用read()希望接收 10 bytes的数据,但实验后发现,分了几次才接收到,俩次接收2bytes ,两次接收3bytes。转载 2015-03-09 14:23:42 · 598 阅读 · 0 评论