自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

乞力马扎罗的雪CYF的博客

与您分享IT技术,实现共同进步。

  • 博客(730)
  • 资源 (28)
  • 收藏
  • 关注

原创 响应式编程框架ReactiveCocoa学习——基本操作符

我在上一篇博客中《响应式编程框架ReactiveCocoa介绍与入门》简单介绍了ReactiveCocoa的介绍和简单使用,主要是翻译了官方文档中的README部分,其实个人认为技术最好的学习方式就是去看官方文档。今天我仍旧来翻译官方文档中的BasicOperators部分,也就是基本操作符。我写的一部分代码示例上传至 https://github.com/chenyufeng1991/React

2016-05-22 13:37:55 7620

原创 响应式编程框架ReactiveCocoa介绍与入门

ReactiveCocoa是Github团队开发的第三方函数式响应式编程框架,在目前市面上的很多iOS App都大量使用了这个框架。以下我简称这个框架为RAC.我下面会通过几篇博客来和大家一起学习这个强大的框架。该博客的案例代码已经上传至  https://github.com/chenyufeng1991/ReactiveCocoaDemo 。当然最好的学习方式是去阅读RAC的源码,Github

2016-05-22 01:07:27 11596 2

原创 Autolayout第三方库Masonry的入门与实践

在如今的iOS开发中,Autolayout已经是不得不使用了,而且是我们主动的去拥抱Autolayout。使用Autolayout最普遍的方式就是在xib或者storyboard中可视化的添加各种约束,这也是Autolayout入门需要掌握的,关于这部分内容,可以参考《iOS开发——Autolayout的实践与技巧》这篇博客。对于比较简单的App开发,可能使用可视化Autolayout也就足够了。

2016-05-18 00:51:19 8541 1

原创 iOS开发——响应链(Responder Chain)的深入理解和代码示例

我在之前一篇博客《iOS响应者链Responder Chain浅析》中对iOS开发中遇到的响应者链概念有了基本的了解。但是仅仅停留在理解概念的基础上还是远远不够的。该博客我们会通过代码案例来深入理解响应链。该博客的示例上传至 https://github.com/chenyufeng1991/ResponderChain  。(1)首先来说说第一响应者(First Responder)。响应事件的

2016-05-15 01:27:29 9972 1

原创 NSMutableDictionary中的小坑与初始化方法详解

今天来讲NSMutableDictionary这个基础,是因为在今天的开发中遇到了一个小小的坑,当发现了这个问题后,着实觉得很不应该,所以在这里做一个记录,也同时同他人分享,少走我的弯路。本案例代码上传至 https://github.com/chenyufeng1991/InitNSMutableDictionary  。      今天遇到的问题是这样的,某个方法返回两种结果,NSMutabl

2016-05-09 23:13:54 12523

原创 iOS多线程开发——NSThread浅析

在IOS开发中,多线程的实现方式主要有三种,NSThread、NSOperation和GCD,我前面博客中对NSOperation和GCD有了较为详细的实现,可以参考《iOS多线程开发——NSOperation/NSOperationQueue浅析》《iOS多线程开发——GCD的使用与多线程开发浅析》。以及对于多线程中的同步异步,并行串行等概念,我在《GCD实践——串行队列/并发队列与iOS多线程

2016-05-09 01:08:42 7691 1

原创 Git可视化工具SourceTree的使用

我在前面几篇文章中详细介绍了Git命令行的使用《Git学习札记》《Git学习札记——进阶》,以及使用Xcode中自带的Git可视化工具的使用《Xcode中git的使用方法介绍与"Please tell me who you are"问题的解决方案》。对于Git的初学者,个人建议先学习Git命令行,然后再去使用图形化工具,这样才会对整个Git的工作流有一个完整的了解。今天我们要来学习的工具是Sour

2016-05-08 23:39:46 30081

原创 iOS多线程开发——GCD的使用与多线程开发浅析

我在前面的博客中《GCD实践——串行队列/并发队列与IOS多线程详解》中对iOS中的同步异步、串行并行做了较为详细的讲解。在之后的几篇GCD实践的博客中对GCD的使用也有较为详细的实现。但是我们要注意的是,那里用到的GCD是别人对苹果的原生GCD接口封装后的使用,虽然用起来更为方便,但是为了有全面的学习,我还是推荐去用苹果原生的GCD。该案例代码上传至 https://github.com/che

2016-04-29 18:22:17 15409

原创 iOS开发——使用Navigation和TabBar构造App框架与界面栈的重构

对于iOS开发来说,Navigation和TabBar是最常用到的界面元素。我在前面几篇博客中《iOS开发——代码生成TabBar与视图切换详解》《iOS纯代码实现界面建立、跳转、导航栏(无storyboard、无nib)》《iOS开发——界面跳转与返回及视图类型详解》中较为详细的实现了导航栏和TabBar的实现,以及一些界面跳转的实现。但是,在实际开发中,越来越发现Navigation和TabB

2016-04-29 12:46:08 7109 2

原创 iOS开发——Autolayout的实践与技巧

已经好久没有更新博客了,由于最近工作真的非常繁忙,所以就疏于分享了。今天我们来深入交流一下Autolayout的开发与使用。我在  http://blog.csdn.net/CHENYUFENG1991/article/details/47165751, http://blog.csdn.net/CHENYUFENG1991/article/details/47062527,两篇博客中对Autol

2016-04-24 00:13:19 7393 1

原创 iOS开发——Block引起循环引用的解决方案

内存问题始终是软件开发中的头等大事,iOS开发中也不例外,在面试中也是必问的问题。今天我们主要来讲讲Block中涉及的循环引用问题。当我们自己一开始写代码的时候,可能会大量在block中使用self,但是当看到别人优秀的代码的时候,发现别人常常不是用self,而使用weakSelf. 为什么呢?本文的示例代码上传至 https://github.com/chenyufeng1991/Block_W

2016-03-18 01:04:39 9942

原创 Xcode真机调试失败:The identity used to sign the executable is no longer valid

在Xcode中突然好久没有使用真机调试了,今天使用真机的时候,出现如下的警告,并真机运行失败:The identity used to sign the executable is no longer valid.Please verify that your device's clock is proprtly set,and that your signing certificate is n

2016-03-16 22:56:44 4655

原创 C语言实现二叉查找树(BST)的基本操作

我们在上一篇博客中讲解了二叉树,这一次我们来实现二叉树的进阶——二叉查找树(Binary Search Tree),又称二插排序树(Binary Sort Tree)。所以简称为BST。二插查找树的定义如下:1.若左子树不为空,则左子树上所有节点的值均小于它的根节点的值;2.若右子树不为空,则右子树上所有节点的值均大于它的根节点的值;3.左右子树也分别为二叉排序树;二叉排序树的一个重要特点就是中序

2016-03-16 00:23:08 12836 3

原创 C语言实现二叉树的基本操作

我在前面的博客中讲解了链表、栈和队列,这些数据结构其实都是线性表,并且给出了详细的实现。从今天开始,我们将要来学习树,树作为一种数据结构我们经常会用到,作为起步和基础,我们先来实现二叉树,也就是每个节点有不超过2个子节点的树。对于树的操作,最基本的创建、遍历、求树高、节点数等。代码上传至 https://github.com/chenyufeng1991/BinaryTree 。(1)节点的定义t

2016-03-11 21:45:03 27068 4

原创 C语言使用非循环双向链表实现队列

在前面两篇博客中,我分别使用了静态数组和动态数组来模拟循环队列。但是线性表中和队列最神似的莫过于链表了。我在前面也使用了大量的篇幅来讲述了链表的各种操作。今天我们使用一种比较特殊的链表——非循环双向链表来实现队列。首先这里的说明的是构建的是普通的队列,而不是循环队列。当我们使用数组的时候创建循环队列是为了节省存储空间,而来到链表中时,每一个节点都是动态申请和释放的,不会造成空间的浪费,所以就不需要

2016-03-09 23:17:21 4990

原创 C语言实现使用动态数组实现循环队列

我在上一篇博客《C语言实现使用静态数组实现循环队列》中实现了使用静态数组来模拟队列的操作。由于数组的大小已经被指定,无法动态的扩展。所以在这篇博客中,我换成动态数组来实现。动态数组可以不断开辟内存空间,只是会在数组的初始化时有所不同,其他对数组的操作都是一样的。代码上传至 https://github.com/chenyufeng1991/Queue_DynamicArray 。(1)声明变量st

2016-03-07 09:18:34 6392 3

原创 C语言实现使用静态数组实现循环队列

队列是一种先进先出的的数据结构,我们同样可以使用数组、链表等来实现。我们可以在队列的尾部进行插入元素,在队列的头部取出元素。普通的队列由于空间利用率不高,所以我们一般都用循环队列。循环队列中最重要的的两个操作就是判断是否为空和是否已满。当head==tail时,表示队列为空。当(tail+1)%MAX_SIZE == head,表示队列已满。       我判断队满的方法:牺牲一个单元来区分对空和

2016-03-06 22:39:15 10377 3

原创 C语言实现使用带头结点的单链表来构造栈结构

我在前面两篇博客中分别使用了静态数组、动态数组两种方式来构造栈,实现起来很方便,但总觉得灵活性还不够,因为无论怎样,我们都是要指定数组的长度。这篇博客中我们将会使用带头结点的单链表来模拟栈。为什么选用单链表呢?因为对于栈来说,弹出、压入等操作都是对栈顶来操作的。而单链表对第一个节点的操作是最为方便的。两者刚好能对应起来。代码上传至 https://github.com/chenyufeng1991

2016-03-06 17:26:30 5777

原创 C语言实现使用动态数组来构造栈结构

我在面前一篇博客《C语言实现使用静态数组来构造栈结构》中使用了静态数组来模拟栈的操作。静态数组的大小是在代码中写死的,是存储在用户栈上面的,使用起来不灵活。在这篇博客中我会使用动态数组来构造,此时使用的内存是动态申请的,只是在数组的创建和释放上面有差别,其他的使用都一样。注意:动态申请的内存需要我们手动去释放,因为这些占用的内存是在运行时堆上,不会在程序退出后释放。而存放在栈上面的会在程序退出后自

2016-03-06 15:10:07 5044

原创 C语言实现使用静态数组来构造栈结构

在数据结构中,栈是一种很重要的存在。这是一种先进后出的结构,就像一个“死胡同”一样。今天我们先用最简单的方式静态数组来模拟栈。代码上传至 https://github.com/chenyufeng1991/Stack_StaticArray 。(1)声明栈的大小,数组,和一个栈顶指针。栈顶指针可以取出栈顶的数据。#define STACK_SIZE 50static int stack[STA

2016-03-06 11:34:58 4920

原创 经典算法学习——非循环双向链表实现冒泡排序(带头结点尾结点)

我在之前的博客中分别对三种不同的链表进行了冒泡排序,区分的类型有单链表和双向链表,有带头结点的和不带头结点的。其实实现的整体思路是一样的,分别以(n-1)次遍历链表,比较前后两个节点的大小并判断是否交换。为了学习的完整性,在这篇博客中我们将会来实现对带头结点尾结点的双向非循环链表进行冒泡排序。代码上传至 https://github.com/chenyufeng1991/DoubleLinkedL

2016-03-04 23:05:19 4684

原创 C语言实现双向非循环链表(带头结点尾结点)的节点插入

对于双向链表,个人推荐使用带头结点尾结点的方式来处理会比较方便。我在《C语言实现双向非循环链表(不带头结点)的节点插入》中详细实现了在不带头结点的情况下的插入。这次我们将会来在使用头结点尾结点的情况下在任意的位置插入元素。代码上传至 https://github.com/chenyufeng1991/InsertNodeDoubleLinkedList_HeadNode 。核心代码如下://插入一

2016-03-04 16:18:08 3185

原创 C语言实现非循环双链表节点的删除(带头结点尾结点)

我在之前一篇博客《C语言实现非循环双链表节点的删除(不带头结点)》中详细讲解了不含头尾节点的双链表中删除一个节点,处理过程还是稍显麻烦。自从我们学习使用头尾节点来处理双链表后,删除过程就非常方便。代码上传至 https://github.com/chenyufeng1991/DeleteNodeDoubleLinkedList_HeadList 。核心代码如下://删除pos位置的节点int D

2016-03-04 13:03:01 3718

原创 C实现头插法和尾插法来构建双向非循环链表(带头结点尾结点)

双向链表中如果有了头结点和尾结点,对于头插法和尾插法就显得非常方便。这样在尾部插入一个元素也就不用去遍历链表了。个人建议使用这种链表来处理问题。代码上传至  https://github.com/chenyufeng1991/HeadInsertAndTailInsert_DoubleList_HeadList 。核心代码如下://创建带头结点和尾结点的双向非循环链表(头插法)void Head

2016-03-04 10:49:43 5629 1

原创 C语言实现双向非循环链表(带头结点尾结点)的基本操作

我在之前一篇博客中《C语言实现双向非循环链表(不带头结点)的基本操作》中详细实现了不带头尾节点的双向非循环链表的很多操作。其实同单链表一样,不带头结点的链表很多操作都是比较麻烦的,常常需要对第一个节点做额外的判断,提高了出错的成本。今天我们要来实现带头结点尾结点的双向非循环链表的操作,虽然额外维护了两个节点,但是操作的简便性大大提高了。代码上传至 https://github.com/chenyu

2016-03-04 09:46:16 4164

原创 经典算法学习——非循环双向链表实现冒泡排序(不带头结点)

我在前面两篇博客《经典算法学习——单链表(不带头结点)实现冒泡排序》《经典算法学习——单链表实现冒泡排序(带头结点)》中详细描述了分别使用带头结点和不带头结点的单链表实现了冒泡排序,让我们对单链表和冒泡排序有了理性的认识。今天我们将会来使用不带头结点的非循环双向链表来实现冒泡排序,在处理过程中,这种冒泡比前面两种更为简单高效。代码上传至 https://github.com/chenyufeng1

2016-03-03 19:37:30 4328

原创 C语言实现非循环双链表节点的删除(不带头结点)

不带头结点的非循环双链表在删除节点的时候比价麻烦,因为同时要维护prior和next两个指针。在处理第一个节点和最后一个节点的时候都要分别考虑,同时也需要考虑节点数量为1的情况。删除情况分为下面两类:(1)删除pos位置的节点;(2)判断x是否在链表中,若存在则删除;代码上传至 https://github.com/chenyufeng1991/DeleteNodeDoubleList  。核心代

2016-03-03 17:02:46 3277

原创 C实现头插法和尾插法来构建非循环双链表(不带头结点)

在实际使用中,双链表比单链表方便很多,也更为灵活。对于不带头结点的非循环双链表的基本操作,我在《C语言实现双向非循环链表(不带头结点)的基本操作》这篇文章中有详细的实现。今天我们就要用两种不同的方式头插法和尾插法来建立双链表。代码上传至  https://github.com/chenyufeng1991/HeadInsertAndTailInsertDoubleList  。核心代码如下://尾

2016-03-03 14:01:01 3563

原创 经典算法学习——单链表实现冒泡排序(带头结点)

我在之前一篇博客中《经典算法学习——单链表(不带头结点)实现冒泡排序》实现了对不带头结点的单链表进行冒泡排序,打破了我们常常使用数组来进行冒泡的惯例。然后带头结点的链表更为常用。该篇博客我们就要实现对带头结点的单链表进行冒泡排序。需要注意是否带头结点对处理第一个节点非常重要。代码上传至:https://github.com/chenyufeng1991/BubbleSortLinkedList_H

2016-03-01 21:12:26 18875 3

原创 C语言实现单链表的逆序打印(带头结点)

我在之前一篇博客《C语言实现单链表(不带头结点)的逆序打印》中详细实现了对一个不带头节点的链表的逆序打印,整体思路也是非常的简单,也就是依次遍历原链表,然后把取出的节点用头插法建立一个新的链表,新链表就是原链表的逆序。这篇博客我会来实现使用带头结点的链表实现逆序,思路同上述是一样的。代码上传至  https://github.com/chenyufeng1991/ReverseLinkedList

2016-03-01 20:07:18 6993 1

原创 C语言实现单链表的节点插入(带头结点)

我在之前一篇博客《C语言实现单链表(不带头结点)节点的插入》中详细实现了如何在一个不带头结点的单链表中进行节点的插入。但是在实际应用中,带头结点的链表更为常用,更为方便。今天我们就要来使用带头结点的单链表进行节点的插入。示例代码上传至 https://github.com/chenyufeng1991/InsertList_HeadNode  。核心代码如下:Node *InsertNode(No

2016-03-01 19:09:56 5029

原创 C语言实现单链表节点的删除(带头结点)

我在之前一篇博客《C语言实现单链表节点的删除(不带头结点)》中详细实现了如何在一个不带头结点的单链表的删除一个节点,在这一篇博客中我改成了带头结点的单链表。代码示例上传至 https://github.com/chenyufeng1991/DeleteLinkedList_HeadNode。删除类型有两种:(1)删除某个位置pos的节点;(2)判断x值是否在链表中,若存在则删除该节点;核心代码如下

2016-03-01 16:09:57 10491

原创 C实现头插法和尾插法来构建单链表(带头结点)

我在之前一篇博客《C实现头插法和尾插法来构建单链表(不带头结点)》中详细实现了如何使用头插法和尾插法来建立一个不带头结点的单链表,但是在实际使用中,我们用的最多的还是带头结点的单链表。今天我们就来实现一下带头结点链表的头插和尾插。代码上传至 https://github.com/chenyufeng1991/HeadInsertAndTailInsert_HeadNode 。核心代码如下://创建

2016-03-01 14:27:06 5221

原创 C语言实现单链表(带头结点)的基本操作

我在之前一篇博客《C语言实现单链表(不带头结点)的基本操作》中具体实现了不带头结点的单链表的11种操作:如计算链表长度、初始化、创建链表、清空链表等等。但是在实际使用中,带头结点的单链表往往比不带头结点的单链表用的更多,使用也更为方便。因为不用单独考虑第一个节点的情况了,第一个节点和其他后续节点的处理全都一样了,简化操作。这篇博客将会来实现带头结点的单链表的11种操作。代码上传至: https:/

2016-03-01 13:40:10 13868 3

原创 C语言实现双向非循环链表(不带头结点)的清空

我在之前一篇博客《C语言实现单链表的基本操作》实现了如何清空一个单链表,现在换成了双向的非循环链表,整体思路是一样的。代码上传至:https://github.com/chenyufeng1991/ClearDoubleLinkedList  。核心代码如下:Node *ClearDoubleLinkedList(Node *pNode){ if (pNode == NULL) {

2016-02-28 13:23:37 2841

原创 C语言实现双向非循环链表(不带头结点)的节点插入

我在之前一篇博客中《C语言实现双向非循环链表的逆序打印》讲到了如何逆序输出一个双向非循环链表,让我们对这种链表类型有了理性的认识。今天我们要来实现的是对双向非循环链表进行节点的插入。大家可以和《C语言实现单链表节点的插入》单链表的节点插入对比着学习。代码上传至  https://github.com/chenyufeng1991/InsertDoubleLinkedList 。核心代码如下:Nod

2016-02-28 10:08:34 4101 1

原创 C语言实现双向非循环链表(不带头结点)的逆序打印

我在上一篇博客中《C语言实现双向非循环链表》实现了如何构造一个双向非循环链表,并实现了正向打印。我还在之前一篇博客《C语言实现单链表的逆序打印》中实现了单链表的逆序打印。这篇博客我们来实现对双向非循环链表进行逆序打印,实现起来非常的简单。代码已经上传至 https://github.com/chenyufeng1991/ReverseDoubleLinkedList 。核心代码如下://打印非循环

2016-02-27 20:55:15 4104

原创 C语言实现双向非循环链表(不带头结点)的基本操作

双向链表也叫双链表,它的每个数据节点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任何一个节点开始,都可以很方便的访问它的前驱结点和后继节点。别人常常来构造双向循环链表,今天我们特立独行一下,先来尝试构造双向非循环链表。示例代码上传至  https://github.com/chenyufeng1991/DoubleLinkedList 。构造节点:typedef struct

2016-02-27 20:02:13 5441

原创 经典算法学习——单链表(不带头结点)实现冒泡排序

我在之前一篇博客《经典算法学习——冒泡排序》中简单实现了使用数组进行冒泡排序。这篇博客我们将来实现使用链表如何排序,其实整体的思路是一样的。示例代码上传至: https://github.com/chenyufeng1991/BubbleSortLinkedList 。算法描述如下:(1)比较相邻的前后两个数据,如果前面数据大于后面的数据,就将两个数据交换;(2)这样对数组的第0个数据到N-1个数

2016-02-26 14:53:56 6285 8

原创 C语言实现单链表(不带头结点)的逆序打印

我在前面几篇博客中《C语言实现链表节点的插入》《C语言实现链表节点的删除》《C实现头插法和尾插法来构建链表》《C语言实现链表的基本操作》实现了链表的很多增删改查操作。这里我们要来实现链表的逆序打印,使用C来实现。代码上传至 https://github.com/chenyufeng1991/ReverseLinkedList 。       基本算法是:(1)使用尾插法构建原链表;(2)依次遍历原

2016-02-26 13:17:49 6008

计算机专业外语

这是自己整理的计算机专业外语的词汇和缩略词。

2014-06-22

语法分析报告

该程序实现了对源程序的语法分析,进行自顶向下的LL(1)分析。

2014-06-22

软工UML试题

这是软件工程专业2010 2011年的UML考试例题

2014-06-22

西科大09年uml试卷

2009 2010年西科大的UML考试的复习例题 必做

2014-06-22

词法分析报告

这是编译程序的第一步,要进行词法分析程序。这是一份报告。

2014-06-22

编译原理概念整理

这是自己一学期的编译书本概念整理。这就不用去看形式化的书本内容了。

2014-06-22

UML考试简答

UML的复习资源,上面有西科大最近几年的UML考试简答题资料。

2014-06-22

数据挖掘试卷

数据挖掘和数据仓库,各种算法。做本套试卷可以帮你顺利考试。

2014-06-22

软件项目管理试卷

软件项目管理,我们用的书是韩万江的。试卷有很大的价值

2014-06-22

编译原理试题

这是自己整理的编译原理试卷。种类丰富。难度不同。

2014-06-22

uml复习试卷

这是自己收集的UML期末考试试卷,会有不少原题。

2014-06-22

Linux期末试卷

这是自己收集的各个学校的Linux期末试卷,有比较大的参考性。

2014-06-22

UML期末复习

这是软件建模与UML期末复习资料,简化了书本内容。

2014-06-22

编译原理期末复习

这是自己整理的编译原理期末复习资源,可以帮你考得高分。

2014-06-22

期末Linux复习资料整理

这是自己整理的Linux期末复习整理资源 可以帮你顺利考的高分

2014-06-22

ActiveX程序

使用用C++技术开发的ActiveX小程序。

2014-06-03

操作系统。

操作系统复习资料,是我自己整理的。供大家学习。

2014-06-03

java注释模板

这是关于使用java开发工具中要用到的模板,有助于你开发出好的程序。

2014-06-03

俄罗斯方块

这是关于俄罗斯方块的代码。基本实现游戏功能,来给大家共享下。

2014-06-03

课程设计 字符串

这是大一时写的C++代码,共享给大家,是关于C++的总结。

2014-06-03

字符串代码

这是我的课程设计作业,来给大家分享,是关于字符串的操作。

2014-06-03

C++第一章幻灯片

一维非常敬业的老师制作的C++PPT。欢迎大家来下载。

2013-07-03

空空如也

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

TA关注的人

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