- 博客(25)
- 资源 (1)
- 收藏
- 关注
原创 实现一个小型数据库--记一次中级软件设计实作浮沉历程
事件起因:大三狗一枚,专业是软件应用。这学期的中级软件设计实作题目是实现一个小型的数据库,具体的题目要求如下: 建立一个类似Oracle\SQL Server的小型数据库系统:可建立表,表有字段、类型表中可通过SQL语句填入数据(只能是特定类型)和查询数据;对主键字段,应自动建立索引;当进行查询时,在主键上应是基于索引的高效查询,而不能是字符串匹配这样的原始查询。觉得题目似曾相
2015-12-15 22:13:28 5360
原创 B+树的几点总结
作者:Vernon 说明:本文主要以列表形式将B+树的特点以及注意点等列出来,主要参考《算法导论》、维基百科、各大博客的内容,结合自己的理解写的,如内容有不当之处,请各位雅正。 出处:http://blog.csdn.net/love_u_u12138 转载请注明出处。1.前言B树是为磁盘或其他直接存取的辅助存储设备而设计的一种平衡搜索树。B树类似于红黑树,但它们在降低磁盘I/O操作数方面要更
2015-12-14 21:28:34 8648 5
原创 Clang 之旅--使用 Xcode 开发 Clang 插件
前言最近在跟老大的聊天中聊到了一个比较特殊的需求:是否有办法在编译阶段检查某个方法的参数与返回值的类型相同,如果类型不一致的话能抛出编译错误的提示。这似乎已经不是 Objective-C 或者 Swift 的语言语法本身所能解决的了,老大还指点了可以从编译器等底层中进行研究。于是,我踏进了 Clang 和 LLVM 的大门。我打算将 Clang 的研究心得分为几篇文章来写,这是 Clang...
2018-03-19 11:41:00 675 1
原创 字符编码:ASCII、Unicode、UTF-8
互联网时代,知乎大V通过段子抖机灵,公众号大V通过鸡汤获得关注,微博大V通过新闻抢眼球,我们作为普通看客则刷的不亦乐乎。但是这些文章都有一个不引人注意的共同点,那就是它们都是由字符组成的(好吧,果然说的是废话☺)。字符君,也就是今天要讲的主角。 这一篇篇排版精美、引人入胜的文章都是由一个个字符组成的,集字成句,集句成段,集段成文,最终呈现在我们面前。然而这些字符在计算机内部是怎样表示的,又是怎样显
2016-10-02 14:25:12 1938
原创 Objective-C的属性(property)解析:
Property“属性”(property)是Objective-C的一项特性,用于封装对象中的数据。使用了属性的话,编译器就会自动编写访问这些属性所需的方法(setter和getter),这个过程称为“自动合成”(autosynthesis)。Attribute属性可以拥有的attribute分为四类:1. 原子性atomic:默认由编译器所合成的方法会通过锁定机制确保其原子性。nonatom
2016-04-14 08:37:14 920
原创 dynamic关键字
KVO 是允许对象在其他对象的指定属性发生变化收到相应通知的机制,在Swift API也可以使用KVO 机制,只要类是从NSObject类继承而来的即可。通过以下3个步骤可以在Swift上实现简单的KVO:在任何你想观察的属性前加上dynamic关键字class MyObjectToObserve: NSObject { dynamic var myDate = NSDate()
2016-04-13 22:33:20 668
原创 @objc关键字
前言:为了摆脱Objective-C沉重的历史包袱,Apple于2014年6月发表了新的编程语言 Swift。但是历经20多年发展浮沉的巨人Objective-C早已深入到Cocoa框架的方方面面,无数的第三方库是用 Objective-C 写成的。想要一刀切直接跨到Swift的时代,即使苹果再激进也不敢这么贸贸然。所以直到现在Swift2.0发布依然还是有许多为了兼容Objective-C所做的妥
2016-04-13 20:27:34 3104
原创 Swift的lazy关键字–延迟加载
Swift的lazy关键字–延迟加载@(Swift)[Swift, lazy]定义lazy属性就是初始值直到第一次使用的时候才执行计算的属性,这对小内存的手机所产生的性能上的优化是相当可观的。 注意:lazy属性必须是变量(var修饰符),因为常量属性(let修饰符)必须在初始化之前就有值,所以常量属性不能定义为lazy。Objective-C中的延迟加载Objective-C并没有在语法上支持延
2016-04-06 15:36:58 2253
原创 代码整洁之道读书笔记--类
1.类的组织遵循标准的Java约定,类应该从一组变量列表开始。如果有公共静态常量,应该先出现。然后是私有静态变量,以及私有实体变量。很少会有公共变量。 公共函数应跟在变量列表之后。把由某个公共函数调用的私有工具函数紧随在该公共函数后面,这符合了自顶向下原则。 所以满足这些约定的一个类大概长成下面这样:public class SomeClass{ public 公共静态常量;
2015-12-21 15:18:38 1153
原创 代码整洁之道读书笔记--对象和数据结构
1.得墨忒耳律(LoD)得墨忒耳律(维基百科)认为:模块不应了解它所操作对象内部情形,对象应该隐藏数据,曝露操作,这意味着对象不应通过存取器曝露其内部结构,因为这样更像是曝露而非隐藏其内部结构。可以简单地以下面任一种方式总结: - 每个单元对于其他的单元只能拥有有限的知识:只是与当前单元紧密联系的单元; - 每个单元只能和它的朋友交谈:不能和陌生单元交谈; - 只和自己直接的朋友交
2015-12-20 18:33:19 1455
原创 代码整洁之道读书笔记--注释
注释的恰当用法是弥补我们在用代码无法表达意图是遭遇的失败。注意,我用来“失败“一次。我是说真的。我们总无法找到不用注释就能表达自我的方法,所以总要有注释,这并不值得庆贺。 程序员应当负责将注释保持在可维护、有关联、精确的高度。我同意这一说法。但我更主张把力气用着写清楚代码上,直接保证无须编写注释。不准确的注释要比没注释坏的多。它们满口胡言。它们预期的东西永不能实现。它们设定了无需也不应再遵循的
2015-11-03 23:12:24 1488
原创 代码整洁之道读书笔记--函数
好函数的需要满足:1. 短小: 经过漫长的试错,经验告诉我,函数就该小。一个强制性的原则是,代码长度最好20行封顶。 2.代码块和缩进:if、else、while语句等,其中的语句只有一个,就是一个函数调用语句; 函数的缩进层级不该多于1层或2层。3.只做一件事: 函数应该做一件事,做好这件事,只做这一件事。判断函数是否只做了一件事,有如下2种判断方法: 1.函数是否只是做了该函数名
2015-11-01 14:42:20 683
转载 GCD深入理解
https://github.com/nixzhu/dev-blog/blob/master/2014-05-14-grand-central-dispatch-in-depth-part-2.md读书笔记。1、串行队列:串行队列中的任务一次执行一个,每个任务只在前一个任务完成时才开始。而且你不知道一个block结束和下一个block开始之间的时间长度,这些任务的执
2015-09-04 14:33:10 462
转载 iOS 大型项目开发漫谈
从http://www.cocoachina.com/ios/20150828/13170.html转载,谢谢写这篇文章的大神! 标题有些吓人请不要害怕,不过这确实不是扫盲贴,需要一定的iOS开发基础。在我多年的码农生涯中绝大部分时间都是做的小项目,大一些的可能也就是百万行代码的样子,跟Windows系统几千万行源码比简直就是小巫见大巫。不过,一个iOS项目的源码有数百万行算蛮大了。我想说的是,人
2015-08-28 22:39:17 599
原创 应用生命周期
应用生命周期作为应用程序的委托对象,AppDelegate类在应用生命周期的不同阶段会回调不同的方法。首先,先了解一下iOS应用的不同状态以及它们彼此之间的关系: 简要介绍一下iOS应用的5种状态:Not Running(非运行状态):应用没有运行或者被系统终止;Inactive(前台非活动状态):应用正在进入前台状态,但是还不能接受事件处理;Active(前台活动状态):应用
2015-08-08 20:53:45 729
原创 程序设计策略(设计一款APP的步骤)
伟大的程序起源于一个伟大的想法,但这并不意味着讲想法孕育成成功的程序是一件轻松的事。本文介绍的是一些能用于精炼想法、回顾设计选择(design options)的策略,帮助我们设计出人见人爱的程序。 明确程序定义在开发早期就完成程序的定义,能够帮你讲一堆想法和属性凝聚成一个用户梦寐以求的产品。在开发过程中,可以以该定义为标准判断潜在的功能点和行为是否靠谱。创建程序定义可以通过以下步骤来完成:1.列
2015-08-02 22:34:06 1186
转载 数据库的范式(1NF、2NF、3NF、BNCF)
数据库的范式(1NF、2NF、3NF、BNCF)转载:http://www.cnblogs.com/hi-bazinga/archive/2012/06/05/2536806.html,谢谢这位大神!第一范式:关系模式中,每个属性不可再分。属性原子性第二范式:非主属性完全依赖于主属性,即消除非主属性对主属性的部分函数依赖关系。第三范式:非主属性对主属性不存在传递函数依赖
2015-07-04 21:04:47 2446
转载 MFC六大关键技术之——消息映射与命令传递
转载自:http://blog.csdn.net/liyi268/article/details/623391题外话:刚开始学视窗程序设计的时候,我就打印了一本Windows消息详解,里面列举了各种已定义消息的意义和作用,共10多页,在编程的时候翻翻,有时觉得很受用(这个学习方法好啊~)。我发觉很多编程的朋友,虽然每天都面对消息,却很少关注它。C++程序员有一个通病,很想写“自己”的程
2015-06-12 23:20:36 654
原创 (Windows编程)Windows的消息机制(消息的结构、类型)
Windows应用程序是以消息为基础、以事件为驱动的应用程序。当应用程序在运行时,会不断地等待操作系统发送给自身的消息(while循环),然后根据不同的消息进行相应的处理。这里的消息实际上就是一种数据结构,包含窗口句柄、消息标识和一些辅助信息。消息概述:Windows应用程序是基于消息的程序设计模式。例如,当用户在窗口上移动鼠标时,操作系统就会发现这一事件,并将该事件封装成一个消息
2015-06-11 17:20:32 4198
原创 KVO简述
1、KVO的实现机制: 以下是苹果官方文档对KVO实现机制的解释:Automatic key-value observing is implemented using a technique called isa-swizzling… When an observer is registered for an attribute of an object the isa pointer
2015-03-21 00:45:31 531
原创 KVC
1、What is Key-Value coding ? KVC : NSKeyValueCoding protocol的简称(也称Key-Value coding),该协议定义了应用通过变量名(key)存取对象中的属性的机制。Key-Value coding用于key-value observing、Cocoa bindings、Core Data以及是应用支持AppleScript
2015-03-21 00:29:25 369
原创 各种排序算法汇总(插入排序:直接插入排序、折半插入排序、希尔排序)
以下是我对常见的几种排序算法的总结并给出的代码,基于C++语言实现,存储格式是顺序表。本人才疏学浅,如果有错漏还请各位指正。一、存储格式:顺序表int *data; //存储数据(data[1...size]存储待排序序列,data[0]为临时单元)int size; //可存放容量二、插入排序1.直接插入排序: (1)思路:当插入data[i](i>=2)时
2015-02-12 10:38:44 786
原创 各种排序算法汇总(交换排序:冒泡排序、快速排序)
以下是我对常见的几种排序算法的总结并给出的代码,基于C++语言实现,本人才疏学浅,如果有错漏还请各位指正。一、插入排序1.直接插入排序 :
2015-02-09 22:38:48 969
小型数据库
2015-12-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人