- 博客(24)
- 收藏
- 关注
转载 C语言__attribute__的使用
转载自:http://www.cnblogs.com/astwish/p/3460618.html__ATTRIBUTE__ 你知多少?GNU C 的一大特色就是__attribute__ 机制。__attribute__ 可以设置函数属性(Function Attribute )、变量属性(Variable Attribute )和类型属性(Type Attribute )。
2017-08-24 16:39:31 16267
转载 每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)
转载自:http://blog.csdn.net/cywosp/article/details/23397179一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。
2017-08-09 17:41:48 373
原创 二叉树的遍历(C++、STL)
之前没有使用C++的STL,写二叉树的遍历的时候基本都是选择用递归来实现,了解了C++标准模板库中的stack和queue后,发现遍历二叉树更加简单了,下面给出实例代码,通过实际验证发现这种方法很简洁,很方便#include #include #include #include using namespace std;struct BitNode{ int data;
2017-07-23 17:49:46 2998
转载 进程间通信—local socket
转载自:http://blog.csdn.net/shanzhizi/article/details/16882087先上一个代码服务端:[cpp] view plain copy//s_unix.c #include #include #include #include #defi
2017-07-23 14:41:58 1338
转载 网络IO之阻塞、非阻塞、同步、异步
转载自:http://www.cnblogs.com/Anker/p/3254269.html网络IO之阻塞、非阻塞、同步、异步总结1、前言 在网络编程中,阻塞、非阻塞、同步、异步经常被提到。unix网络编程第一卷第六章专门讨论五种不同的IO模型,Stevens讲的非常详细,我记得去年看第一遍时候,似懂非懂,没有深入理解。网上有详细的分析:http://blog.
2017-07-23 12:29:24 412
原创 malloc函数详解
在逛知乎过程中,偶然发现一个问题:malloc(0)从堆空间申请0个字节,咋办?是报错,还是返回正确地址?申请的空间又有和意义?内存碎片又是什么?带着这一系列问题,我到网上找到了一篇不错的博客,对其解释比较恰当。不过首先列出我自己实测的代码情况:#include #include int main(int argc, char const *argv[]){ char *p = (c
2017-07-21 18:12:49 421
转载 进程间通信,信号量
信号量是干啥的? 信号量就是用来解决进程间的同步与互斥问题的一种进程间通信机制。同步与互斥的通俗理解 这两个名词咱们从字面上就能理解。举个例子吧,在创建子进程时,你是怎么保证父子进程执行的先后顺序呢?我在以前的时候是通过sleep()函数来实现的,比如我想让子进程先运行再让父进程运行,那么我就在父进程的程序中加一个sleep()函数,让父进程先睡眠,这样子就能先执行
2017-07-19 21:07:29 363
转载 exec函数
(1)exec函数说明fork函数是用于创建一个子进程,该子进程几乎是父进程的副本,而有时我们希望子进程去执行另外的程序,exec函数族就提供了一个在进程中启动另一个程序执行的方法。它可以根据指定的文件名或目录名找到可执行文件,并用它来取代原调用进程的数据段、代码段和堆栈段,在执行完之后,原调用进程的内容除了进程号外,其他全部被新程序的内容替换了。另外,这里的可执行文件既可以是二进制文件,也可
2017-07-19 11:16:04 333
转载 C++中的单例模式和工厂模式
最近在学C++过程中,被两个新名词单例模式和工厂模式搞晕了,到网上找了这两篇博客,本人觉得写得很清晰,有条理,分享下单例模式:http://www.jellythink.com/archives/82工厂模式:http://www.jellythink.com/archives/62
2017-07-17 23:37:30 3292
原创 如何判断单链表里是否有环以及查找环的入口
先说明一下单链表里有环的示意图: 即链表的尾结点指向链表中的某一个结点(结点6的next指向结点3)判断单链表是否有环:快慢指针定义两个指针slow, fast。slow指针一次走1个结点,fast指针一次走2个结点。如果链表中有环,那么慢指针一定会再某一个时刻追上快指针(slow == fast)。如果没有环,则快指针会第一个走到NULL。如果单链表里有环,那么如何查
2017-07-16 15:18:52 1405 1
转载 C语言的条件编译
转载自:http://hi.baidu.com/xiaomambzh/item/272663c2476ca1b10c0a7b2dC语言的条件编译#if, #elif, #else, #endif、#ifdef, #ifndef有些程序在调试、兼容性、平台移植等情况下可能想要通过简单地设置一些参数就生成一个不同的软件,这当然可以通过变量设置,把所有可能用到的代
2017-07-16 14:00:55 536
转载 C语言位域的定义和使用
位域的定义和使用 C Bit Fields转自http://www.360doc.com/content/09/0318/16/113975_2846158.shtml位域的定义和使用 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,
2017-07-16 13:48:38 4533
原创 C语言操作界面菜单思考
C语言中,制作菜单操作界面是很常见的,一般都是通过scanf("%d",&i) 与switch(i)搭配来使用,这种方法很基础,我近来发现另外一种比较不错的方法,容错处理也有,可拓展性也高:#define BUFFERSIZE 256enum login_register_status {_f_main_, _login_id_, _login_passwd_, _udpport_, _regi
2017-06-25 23:51:07 22607
转载 Python闭包、函数式编程、装饰器深入理解
我在近段时间学习python过程中,遇到几个模糊不清的问题,特别难以理解,可能是对面向过程(C语言)用的比较多,而对面向对象编程的思想理解的不是很深刻,推荐这两篇博客,对新手比较友好,容易接受博客一:点击打开链接、博客二:点击打开链接
2017-06-14 00:23:43 218
转载 C语言可变参数函数实现
转载自C语言中文网,链接如下:点击打开链接补充一点,在函数原型int printf(const char *format,...)中,固定参数不一定只有一个,有可能有多个,不管有多少个,va_start中一定是最后一个固定的参数,后续可变参数就用va_arg来接收,va_end来结束。
2017-05-31 13:44:37 510
原创 C语言实现链表(三)
如下是实现双向链表的源代码,主要包括:创建链表、插入结点(头插法、尾插法)、遍历链表、删除结点、排序(插入、快速)、主函数(验证函数功能),源代码如下:#include #include #include #include #include //不带头结点的双向链表的操作//本结构体只是为了实现原理的方便,采用了最简单的元素结构,只有一个int型、前指针pre、后指针nextt
2017-05-23 17:18:59 363
原创 C语言实现链表(二)
如下是单向链表的具体实现,主要包括:创建链表、增加结点(头插法,尾插法)、遍历结点、删除结点、排序(插入排序、选择排序、冒泡排序),最后是主函数的验证。在此先说下我的插入排序(交换指针)的思路:如图首先新建一个新头结点newHead,将原链表中从第二个有效结点开始之后所有的结点都链接到newHead,因此原链表就只有了一个有效结点,现在将newHead此链表中的结点(头结点除外)一
2017-05-23 17:02:13 334
原创 C语言实现链表(一)
近段时间,在学习数据结构的过程中,发现链表的知识点比较难,并且又是十分重要的,在次,将这一周左右的学习总结写成这篇博客。链表具体分类来说的话可以分为4大类:单向链表,双向链表,双向循环链表,十字交叉链表,分类根据不同规则可能不同,但是这不是重点,真正的重点是理解不同链表的简单实现方式,通过其实现方式,我们就很容易明白,对于有些具体问题,可能更适合用单向链表,而另外一些问题,可能就用双向循环链表
2017-05-23 16:17:27 370
原创 C和C++预处理
主要总结几点容易出错的:1. #define ADD(a,b) a+b 此处就很容易在后续引用中出现错误,例如:ADD(3,4)*ADD(5,6) 等价于 3+4*5+6,宏定义只是简单的替换,所以此处很明显不符合要求,正确宏定义为 #define ADD(a,b) ((a)+(b)) ,把a和b变量也用(),是因为如下:#define MUL(a,b) a*b 后续引用 MUL(3
2017-05-17 09:19:51 291
转载 生活是如此的"fuck"
在终端操作过程中,是不是总有命令敲错的时候,如果你看到这篇文章,那么这种问题将会终结,详情见下面链接:装载自:点击打开链接。本人用的是ubuntu16.04,在上述链接配置中,有些文件可能不匹配,在此将本人的操作总结如下:(1)按照python,一般linux都会安装了Python,如果没有安装,则通过sudo apt-get install python来安装;(2)按照ZSH,命令:sud
2017-05-15 17:29:04 518
原创 C++和C中自定义的头文件包含问题
近日在C++项目中遇到一个问题,大体是这样的:6个文件,分别是:Login.h,Login.cpp,List.h,List.cpp,Goods.h,Goods.cpp,因为其中三个.h文件是自定义的,分别对应相应的.cpp,我的Login.h中是所有的Login.cpp需要的函数的声明,然而在编译过程中,报错了,报错内容是Login.h中所有函数在此范围内全部未找到定义。这事我就觉得很奇怪,之
2017-05-12 09:45:04 3566
原创 window7和虚拟机直接共享文件夹
win下共享文件夹给虚拟机(ubuntu)1.win7下新建共享文件夹,权限都放开;2.Ubuntu下安装smbclient和cifs-utils;3.修改/etc/fstab,最后一行加如下://IP/共享文件夹 /Ubuntu目录 cifs username=win用户名,password=win密码,file_mode=0777,dir_mode=0777,iocharset=u
2017-04-11 13:53:26 1915
原创 for循环内switch中带有break、continue的问题
如下代码:char a[5]="abcd";for(i=0;i{switch(a[]i){case 'a':printf("a\n");break;case 'b':printf("b\n");break;case 'c':printf("c\n");continue;default:printf("default\n");continue;}p
2017-03-29 18:06:39 21978
原创 C语言头文件<>和""的区别
1.头文件#include 2.头文件#include "":表示用户自己定义使用的头文件,编译器默认会从当前文件夹中寻找
2017-03-29 17:52:16 12578
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人