![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c
shanguangy111
这个作者很懒,什么都没留下…
展开
-
带超时的system
int _system_timeout(const char *cmdstring, int timeout);原创 2015-08-01 13:13:23 · 2508 阅读 · 0 评论 -
connect调用失败后需关闭描述符
connect函数原型 #include int connect(int socket, const struct sockaddr *address, socklen_t address_len);查看connect的帮助文档,用法中有这么一段APPLICATION USAGE原创 2017-06-02 00:29:36 · 431 阅读 · 0 评论 -
哪种方法效率更高或更可读
来由:阅读lighttpd源码时,发现lighttpd申请特定倍数内存时,使用的方法较为晦涩,于是,就想对比自己以前在阅读git源码时学到的方法,感觉git的方法更胜一筹 lighttpd方法:#define BUFFER_PIECE_SIZE 64int get_entry_size(int size){ int ret_size = size; if(size <= 0)原创 2017-03-06 22:42:57 · 243 阅读 · 0 评论 -
x86_32栈的调用结构
下面将通过一段代码分析x86_32栈的使用方法,程序运行后不停的重新调用main函数重新运行。原理: In x86_32, When one function named ‘function_A’ call another function named ‘function_B’ the function_B’s stack look like below: Param原创 2017-01-15 16:03:32 · 914 阅读 · 0 评论 -
函数工作原理
*函数由多个部分组成:*1.函数名 函数名是函数开始地址的一个标签2.参数 函数的参数是给函数处理的资料,是函数中的变量。比如,在数学中,有个sine函数。如果你想让计算机计算2的正弦值,那么你可以调用函数名为sine的函数,以2为参数。另外,函数的参数可以有不止一个,甚至可以没有3.本地变量4.静态变量 静态变量是直到程序结束都一直有效的变量。函数内的静态变量对其他模翻译 2016-12-31 13:28:13 · 1426 阅读 · 1 评论 -
链接时 库在命令行位置的影响
请看下面的Makefile文件 这是一个不一定好 但能正常工作的Makefile,但我曾困惑为什么下面的会编译出错 上面最本质的变化是库在可重定位文件(即.o文件)之前出现,慢慢的随着知识的对链接时符号解析规则的了解知道了其中的秘密: 在链接开始前,链接器会创建三个空集合E,U,D,其中E表示可重定位文件(.o文件 这个集合中的文件会被合并成可执行文件),U表示引用了但尚未定义转载 2016-10-22 10:50:51 · 265 阅读 · 0 评论 -
mac地址自增(通用简易版)
上一篇关于mac地址自增的博文可行的必要条件是sizeof(long long) >= 6,这一次,我们使用更简洁但更浪费空间的方法(这是大自然最擅长的:浪费)。#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>int main(void){ char mac[] = "00:0C:原创 2016-08-09 22:34:06 · 2953 阅读 · 0 评论 -
mac地址自增
mac地址又叫硬件地址,占用6个字节的空间,一般采用16进制并以冒号分割各个字节的方式表示。在32位的机器中,一般long型占4个字节,long long占8个字节,因此,我们可以将mac地址存储在long long的内存空间中,然后对其做加一运算。代码如下:#include <stdio.h>#include <string.h>#include <stdlib.h>#include <u原创 2016-08-08 23:13:19 · 2421 阅读 · 0 评论 -
dp学习之AvoidRoads解法二(算法优化)
在上一篇AvoidRoads解法中,虽然能得到正确的答案但存在很大的瑕疵,比如需要分三种情况: 第一种 x>0,y=0 第二种 x=0,y>0 第三种 x>0,y>0 程序分完这三种情况后显得很长,因此有必要进行优化。 优化源代码如下(c++):#include <iostream>#include <vector>#include <cstdio>#include <string原创 2016-04-16 21:47:08 · 368 阅读 · 0 评论 -
dp学习之AvoidRoads解法
这是来自Topcoder的一道动态规划有关的题目,原文如下: https://community.topcoder.com/stat?c=problem_statement&pm=1889&rd=4709&rm=&cr=152347本题大意是在直角坐标系中,从(0,0)到(width, height)有几种不同的走法,其中路径长必须为width+height,另外,还有一些相邻点之间不可达的路径。原创 2016-04-16 17:58:42 · 370 阅读 · 0 评论 -
dp学习之BadNeighbors解法二(算法优化)
上一篇文章中,使用动态规划求解了BadNeighbors问题,虽然那种解法可以解决问题但存在一些可以优化的地方,这一篇文章对上一种解法进行优化。 我们依然定义数组为x0,x1….xn-1其中x0和xn-1依然不相连 上一篇问题只中定义dp[i]为包含xi的x0,x1,…xi的最大值。这次我们改变定义方式定义dp[i]为x0,x1,…xi的最大值(即dp[i]不是一定要包含xi),因而状态转移方程原创 2016-04-04 12:42:16 · 632 阅读 · 0 评论 -
dp学习之BadNeighbors解法
这是来自Topcoder的一道动态规划有关的题目,原文如下 The old song declares “Go ahead and hate your neighbor”, and the residents of Onetinville have taken those words to heart. Every resident hates his next-door neighbor原创 2016-04-04 11:53:45 · 1026 阅读 · 0 评论 -
mknod命令 linux
个人觉得linux的软件设计思想异常强大,比如把所有的设备都当做文件来处理,大大简化了程序员的负担,向提出这个思想的大神s致敬!!先来看看linux系统中设备管理的基本知识: 我们的linux操作系统跟外部设备(如磁盘、光盘等)的通信都是通过设备文件进行的,应用程序可以打开、关闭、读写这些设备文件,从而对设备进行读写,这种操作就像读写普通的文件一样easy。linux为不同种类的转载 2015-09-08 23:07:48 · 406 阅读 · 0 评论 -
使用select唤醒睡眠中的线程
有时我们需要使用多线程每隔一定时间自动去完成一些特定的工作,但有时我们也需要线程在某种情况发生时,从睡眠中唤醒并立即去完成工作,这时sleep就显得无能为力了,但这正是select登场的时候。 这里我们就不介绍select的用法了,如果您还不知道select怎么用的,您可以去找本书看看,悄悄的告诉你,可以去《unix网络编程卷1:套接字联网api》这本上取经。select原型: int原创 2015-08-16 18:12:41 · 2961 阅读 · 1 评论 -
使用inet_pton验证字符串是否是合法的ipv4或ipv6地址
inet_pton是用来讲ipv4和ipv6地址转换成二进制形式 inet_pton()函数原型: #include <arpa/inet.h> int inet_pton(int af, const char *src, void *dst);返回值: 返回值为1 表示 函数执行成功 返回值为0 表示 对指定的协议来说 网络地址不是有效的的 返回值为-1 表示原创 2017-06-02 00:41:00 · 6496 阅读 · 0 评论