语言
文章平均质量分 83
hard_man
这个作者很懒,什么都没留下…
展开
-
Sequence point 中文
摘自维基百科:In C[4] and C++,[5] sequence points occur in the following places. (In C++, overloaded operators act like functions, and thus operators that have been overloaded introduce sequence po原创 2012-08-14 15:51:50 · 853 阅读 · 0 评论 -
算法(4)数据结构:堆
#1.0 问题描述实现数据结构:堆。#2.0 问题分析堆一般使用数组来表示,其中某个节点下标i的两个子节点的下标为 2i+1 和 2i+2。堆是一棵完全二叉树。堆有3种基本操作:创建,插入,删除。这3种操作都需要通过“调整堆”的方式来实现。调整堆是指,对堆中的某个节点,若它的值和它所有子节点相比,不是最大/最小,那么就需要将最大/最小的元素和当前节点交换,这种操作成为“调整堆”。创建...原创 2019-04-08 17:18:15 · 174 阅读 · 0 评论 -
算法(3)简单四则运算
#1.0 问题描述实现10以内四则运算(只包含数字,±*/和小括号)#2.0 问题分析四则运算使用“后缀表达式”算法来计算,后缀表达式可以无需考虑运算符优先级,直接从左至右依次计算。问题分解成2部分,一是将“中缀表达式”(我们正常写的四则运算字符串样式,即我们的输入表达式)转为“后缀表达式”;二是使用“后缀表达式”求值。“中缀表达式”转“后缀表达式”流程:首先建立一个栈和一个队列,...原创 2019-04-08 17:17:46 · 2206 阅读 · 0 评论 -
算法(2)KMP算法
#1.0 问题描述实现KMP算法查找字符串。#2.0 问题分析“KMP算法”是对字符串查找“简单算法”的优化。字符串查找“简单算法”是源字符串每个字符分别使用匹配串进行匹配,一旦失配,模式串下标归0,源字符串下标加1。可以很容易计算字符串查找“简单算法”的时间复杂度为O(m*n),其中n表示源字符串长度,m表示匹配串长度。KMP算法的匹配方式同简单算法的匹配方式相同,只不过在失配的时...原创 2019-04-08 17:17:11 · 299 阅读 · 0 评论 -
算法(1)斐波那契数列
#1.0 问题描述实现斐波那契数列,求第N项的值#2.0 问题分析斐波那契数列最简单的方法是使用递归,递归和查表法同时使用,可以降低复杂度。根据数列特点,同时进行计算的数值其实只有3个,所以可以使用3个变量循环递进计算结果。3个变量可以简化为2个变量。#3.0 代码实现3.1使用swift实现func fbnq(_ n: Int) -> UInt64{ if n ...原创 2019-04-08 17:16:40 · 330 阅读 · 0 评论 -
javascript函数全解
0.0 概述本文总结了js中函数相关的大部分用法,对函数用法不是特别清晰的同学可以了解一下。1.0 简介同其他语言不同的是,js中的函数有2种含义。普通函数:同其他语言的函数一样,是用于封装语句块,执行多行语句的语法结构。构造函数:不要把它当作函数,把它当作class,内部可以使用this表示当前对象。【注】后续代码基于ES6&ES7标准,笔者是在nodejs v10.7.0...原创 2018-11-14 23:12:05 · 253 阅读 · 0 评论 -
iOS中你可能没有完全弄清楚的(二)自己实现一个KVO源码及解析
前几天写了一篇blog(点这里),分析了系统KVO可能的实现方式。并添加了简单代码验证。既然系统KVO不好用,我们完全可以根据之前的思路,再造一个可以在项目中使用的KVO的轮子。代码已经上传到github: https://github.com/hardman/AWSimpleKVO。看了觉得有帮助的同学,可以点一下github的star。1. 功能介绍支持如下功能:...原创 2018-08-16 10:52:40 · 342 阅读 · 0 评论 -
iOS中你可能没有完全弄清楚的(一)synthesize
1. 什么是synthesizesynthesize中文意思是合成,代码中我们经常这样用。@interface Test: NSObject@property (nonatomic, unsafe_unretained) int i;@end@implementation Test@synthesize i;@end复制代码使用synthesize的2个...原创 2018-08-03 11:32:04 · 1315 阅读 · 0 评论 -
0基础JavaScript入门教程(一)认识代码
1. 环境:JavaScript简称js,后续我们将使用js来代替JavaScript。认识代码前,需要安装js代码运行环境。安装nodejs:在https://nodejs.org/zh-cn/ 下载LTS版本,然后安装 安装visual studio code:https://code.visualstudio.com/ 下载安装 注:本教程基于ES6标准安装完成后,打开vi...原创 2018-07-30 17:56:34 · 1320 阅读 · 0 评论 -
iOS的KVO实现剖析
KVO原理对于KVO的原理,很多人都比较清楚了。大概是这样子的:假定我们自己的类是Object和它的对象 obj, 当obj发送addObserverForKeypath:keypath消息后,系统会做3件事情:动态创建一个Object的子类,名字可自定义假设叫做 Object_KVONotify。 同时,子类动态增加方法 setKeypath:,动态添加的方法会绑定到一个c语言的函...原创 2018-07-17 15:30:30 · 252 阅读 · 0 评论 -
C语言的一个之前没有见过的特性
代码:#include int test(){ int a = ({ int aa = 0; int bb = 1; int cc = 2; if(aa == 0 && bb == 1) printf("aa = %d, bb = %d\n", aa, bb); //return -原创 2012-05-21 19:48:38 · 731 阅读 · 0 评论 -
多继承中虚基类构造函数的一种调用规则
规则:如果父类中有虚基类(A),且有一个直接基类(B)是虚基类的子类,那么子类(C或D)若不显式调用虚基类的有参数构造函数,它的直接基类(B)即使在构造列表中调用了非默认构造函数,那么也会直接调用虚基类的默认构造函数。#include using namespace std;const int CONST = 1;#define CC CONSTclass A{public:原创 2013-02-26 11:30:21 · 1670 阅读 · 0 评论 -
lua的table+setfenv+setmetatable陷阱
--file1.luax = funciton()print("this is x")end---------------file2.lualocal t = {}local _G = _Gsetfenv(1,t) --设置了这个之后,只要是在本文件中对未声明变量的访问,全部会导致递归。_G.setmetatable(t, {__index = f原创 2013-01-11 19:47:36 · 4234 阅读 · 0 评论 -
算法(5)哈希表
1.0 问题描述实现数据结构:哈希表。2.0 问题分析哈希表可以看作我们经常使用的字典(swift)或对象(js),可以让一个key&value对一一对应,可以快速根据key找到value。哈希表内部使用数组实现,我们需要将不论任何类型的key计算出与之一一对应的数字来,数字的大小介于0到数组尺寸之间,这样,我们可以把value直接存储到数组的对应位置。通过key计算出唯一数字...原创 2019-04-25 23:28:57 · 261 阅读 · 0 评论