自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 16153

转载 每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)

转载自:http://blog.csdn.net/cywosp/article/details/23397179一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。 

2017-08-09 17:41:48 348

原创 二叉树的遍历(C++、STL)

之前没有使用C++的STL,写二叉树的遍历的时候基本都是选择用递归来实现,了解了C++标准模板库中的stack和queue后,发现遍历二叉树更加简单了,下面给出实例代码,通过实际验证发现这种方法很简洁,很方便#include #include #include #include using namespace std;struct BitNode{ int data;

2017-07-23 17:49:46 2943

转载 进程间通信—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 1276

转载 网络IO之阻塞、非阻塞、同步、异步

转载自:http://www.cnblogs.com/Anker/p/3254269.html网络IO之阻塞、非阻塞、同步、异步总结1、前言  在网络编程中,阻塞、非阻塞、同步、异步经常被提到。unix网络编程第一卷第六章专门讨论五种不同的IO模型,Stevens讲的非常详细,我记得去年看第一遍时候,似懂非懂,没有深入理解。网上有详细的分析:http://blog.

2017-07-23 12:29:24 395

原创 malloc函数详解

在逛知乎过程中,偶然发现一个问题:malloc(0)从堆空间申请0个字节,咋办?是报错,还是返回正确地址?申请的空间又有和意义?内存碎片又是什么?带着这一系列问题,我到网上找到了一篇不错的博客,对其解释比较恰当。不过首先列出我自己实测的代码情况:#include #include int main(int argc, char const *argv[]){ char *p = (c

2017-07-21 18:12:49 379

转载 进程间通信,信号量

信号量是干啥的?   信号量就是用来解决进程间的同步与互斥问题的一种进程间通信机制。同步与互斥的通俗理解   这两个名词咱们从字面上就能理解。举个例子吧,在创建子进程时,你是怎么保证父子进程执行的先后顺序呢?我在以前的时候是通过sleep()函数来实现的,比如我想让子进程先运行再让父进程运行,那么我就在父进程的程序中加一个sleep()函数,让父进程先睡眠,这样子就能先执行

2017-07-19 21:07:29 333

转载 exec函数

(1)exec函数说明fork函数是用于创建一个子进程,该子进程几乎是父进程的副本,而有时我们希望子进程去执行另外的程序,exec函数族就提供了一个在进程中启动另一个程序执行的方法。它可以根据指定的文件名或目录名找到可执行文件,并用它来取代原调用进程的数据段、代码段和堆栈段,在执行完之后,原调用进程的内容除了进程号外,其他全部被新程序的内容替换了。另外,这里的可执行文件既可以是二进制文件,也可

2017-07-19 11:16:04 316

转载 C++中的单例模式和工厂模式

最近在学C++过程中,被两个新名词单例模式和工厂模式搞晕了,到网上找了这两篇博客,本人觉得写得很清晰,有条理,分享下单例模式:http://www.jellythink.com/archives/82工厂模式:http://www.jellythink.com/archives/62

2017-07-17 23:37:30 3268

原创 如何判断单链表里是否有环以及查找环的入口

先说明一下单链表里有环的示意图: 即链表的尾结点指向链表中的某一个结点(结点6的next指向结点3)判断单链表是否有环:快慢指针定义两个指针slow, fast。slow指针一次走1个结点,fast指针一次走2个结点。如果链表中有环,那么慢指针一定会再某一个时刻追上快指针(slow == fast)。如果没有环,则快指针会第一个走到NULL。如果单链表里有环,那么如何查

2017-07-16 15:18:52 1358 1

转载 C语言的条件编译

转载自:http://hi.baidu.com/xiaomambzh/item/272663c2476ca1b10c0a7b2dC语言的条件编译#if, #elif, #else, #endif、#ifdef, #ifndef有些程序在调试、兼容性、平台移植等情况下可能想要通过简单地设置一些参数就生成一个不同的软件,这当然可以通过变量设置,把所有可能用到的代

2017-07-16 14:00:55 519

转载 C语言位域的定义和使用

位域的定义和使用 C Bit Fields转自http://www.360doc.com/content/09/0318/16/113975_2846158.shtml位域的定义和使用   有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,

2017-07-16 13:48:38 4456

原创 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 22455

转载 Python闭包、函数式编程、装饰器深入理解

我在近段时间学习python过程中,遇到几个模糊不清的问题,特别难以理解,可能是对面向过程(C语言)用的比较多,而对面向对象编程的思想理解的不是很深刻,推荐这两篇博客,对新手比较友好,容易接受博客一:点击打开链接、博客二:点击打开链接

2017-06-14 00:23:43 203

转载 C语言可变参数函数实现

转载自C语言中文网,链接如下:点击打开链接补充一点,在函数原型int printf(const char *format,...)中,固定参数不一定只有一个,有可能有多个,不管有多少个,va_start中一定是最后一个固定的参数,后续可变参数就用va_arg来接收,va_end来结束。

2017-05-31 13:44:37 468

原创 C语言实现链表(三)

如下是实现双向链表的源代码,主要包括:创建链表、插入结点(头插法、尾插法)、遍历链表、删除结点、排序(插入、快速)、主函数(验证函数功能),源代码如下:#include #include #include #include #include //不带头结点的双向链表的操作//本结构体只是为了实现原理的方便,采用了最简单的元素结构,只有一个int型、前指针pre、后指针nextt

2017-05-23 17:18:59 345

原创 C语言实现链表(二)

如下是单向链表的具体实现,主要包括:创建链表、增加结点(头插法,尾插法)、遍历结点、删除结点、排序(插入排序、选择排序、冒泡排序),最后是主函数的验证。在此先说下我的插入排序(交换指针)的思路:如图首先新建一个新头结点newHead,将原链表中从第二个有效结点开始之后所有的结点都链接到newHead,因此原链表就只有了一个有效结点,现在将newHead此链表中的结点(头结点除外)一

2017-05-23 17:02:13 313

原创 C语言实现链表(一)

近段时间,在学习数据结构的过程中,发现链表的知识点比较难,并且又是十分重要的,在次,将这一周左右的学习总结写成这篇博客。链表具体分类来说的话可以分为4大类:单向链表,双向链表,双向循环链表,十字交叉链表,分类根据不同规则可能不同,但是这不是重点,真正的重点是理解不同链表的简单实现方式,通过其实现方式,我们就很容易明白,对于有些具体问题,可能更适合用单向链表,而另外一些问题,可能就用双向循环链表

2017-05-23 16:17:27 335

原创 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 256

转载 生活是如此的"fuck"

在终端操作过程中,是不是总有命令敲错的时候,如果你看到这篇文章,那么这种问题将会终结,详情见下面链接:装载自:点击打开链接。本人用的是ubuntu16.04,在上述链接配置中,有些文件可能不匹配,在此将本人的操作总结如下:(1)按照python,一般linux都会安装了Python,如果没有安装,则通过sudo apt-get install python来安装;(2)按照ZSH,命令:sud

2017-05-15 17:29:04 497

原创 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 3529

原创 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 1852

原创 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 21434

原创 C语言头文件<>和""的区别

1.头文件#include 2.头文件#include "":表示用户自己定义使用的头文件,编译器默认会从当前文件夹中寻找

2017-03-29 17:52:16 11812

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除