语言
文章平均质量分 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 · 964 阅读 · 0 评论 -
lua的table+setfenv+setmetatable陷阱
--file1.lua x = funciton() print("this is x") end ------------- --file2.lua local t = {} local _G = _G setfenv(1,t) --设置了这个之后,只要是在本文件中对未声明变量的访问,全部会导致递归。 _G.setmetatable(t, { __index = f原创 2013-01-11 19:47:36 · 4311 阅读 · 0 评论 -
多继承中虚基类构造函数的一种调用规则
规则:如果父类中有虚基类(A),且有一个直接基类(B)是虚基类的子类,那么子类(C或D)若不显式调用虚基类的有参数构造函数,它的直接基类(B)即使在构造列表中调用了非默认构造函数,那么也会直接调用虚基类的默认构造函数。 #include using namespace std; const int CONST = 1; #define CC CONST class A{ public:原创 2013-02-26 11:30:21 · 1749 阅读 · 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 · 773 阅读 · 0 评论 -
iOS的KVO实现剖析
KVO原理 对于KVO的原理,很多人都比较清楚了。大概是这样子的: 假定我们自己的类是Object和它的对象 obj, 当obj发送addObserverForKeypath:keypath消息后,系统会做3件事情: 动态创建一个Object的子类,名字可自定义假设叫做 Object_KVONotify。 同时,子类动态增加方法 setKeypath:,动态添加的方法会绑定到一个c语言的函...原创 2018-07-17 15:30:30 · 323 阅读 · 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 · 1531 阅读 · 0 评论 -
iOS中你可能没有完全弄清楚的(一)synthesize
1. 什么是synthesize synthesize中文意思是合成,代码中我们经常这样用。 @interface Test: NSObject @property (nonatomic, unsafe_unretained) int i; @end @implementation Test @synthesize i; @end 复制代码 使用synthesize的2个...原创 2018-08-03 11:32:04 · 1440 阅读 · 0 评论 -
iOS中你可能没有完全弄清楚的(二)自己实现一个KVO源码及解析
前几天写了一篇blog(点这里),分析了系统KVO可能的实现方式。并添加了简单代码验证。 既然系统KVO不好用,我们完全可以根据之前的思路,再造一个可以在项目中使用的KVO的轮子。 代码已经上传到github: https://github.com/hardman/AWSimpleKVO。 看了觉得有帮助的同学,可以点一下github的star。 1. 功能介绍 支持如下功能: ...原创 2018-08-16 10:52:40 · 448 阅读 · 0 评论 -
javascript函数全解
0.0 概述 本文总结了js中函数相关的大部分用法,对函数用法不是特别清晰的同学可以了解一下。 1.0 简介 同其他语言不同的是,js中的函数有2种含义。 普通函数:同其他语言的函数一样,是用于封装语句块,执行多行语句的语法结构。 构造函数:不要把它当作函数,把它当作class,内部可以使用this表示当前对象。 【注】后续代码基于ES6&ES7标准,笔者是在nodejs v10.7.0...原创 2018-11-14 23:12:05 · 354 阅读 · 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 · 394 阅读 · 0 评论 -
算法(2)KMP算法
#1.0 问题描述 实现KMP算法查找字符串。 #2.0 问题分析 “KMP算法”是对字符串查找“简单算法”的优化。 字符串查找“简单算法”是源字符串每个字符分别使用匹配串进行匹配,一旦失配,模式串下标归0,源字符串下标加1。 可以很容易计算字符串查找“简单算法”的时间复杂度为O(m*n),其中n表示源字符串长度,m表示匹配串长度。 KMP算法的匹配方式同简单算法的匹配方式相同,只不过在失配的时...原创 2019-04-08 17:17:11 · 368 阅读 · 0 评论 -
算法(3)简单四则运算
#1.0 问题描述 实现10以内四则运算(只包含数字,±*/和小括号) #2.0 问题分析 四则运算使用“后缀表达式”算法来计算,后缀表达式可以无需考虑运算符优先级,直接从左至右依次计算。 问题分解成2部分,一是将“中缀表达式”(我们正常写的四则运算字符串样式,即我们的输入表达式)转为“后缀表达式”;二是使用“后缀表达式”求值。 “中缀表达式”转“后缀表达式”流程: 首先建立一个栈和一个队列,...原创 2019-04-08 17:17:46 · 2293 阅读 · 0 评论 -
算法(4)数据结构:堆
#1.0 问题描述 实现数据结构:堆。 #2.0 问题分析 堆一般使用数组来表示,其中某个节点下标i的两个子节点的下标为 2i+1 和 2i+2。堆是一棵完全二叉树。 堆有3种基本操作:创建,插入,删除。 这3种操作都需要通过“调整堆”的方式来实现。调整堆是指,对堆中的某个节点,若它的值和它所有子节点相比,不是最大/最小,那么就需要将最大/最小的元素和当前节点交换,这种操作成为“调整堆”。 创建...原创 2019-04-08 17:18:15 · 232 阅读 · 0 评论 -
算法(5)哈希表
1.0 问题描述 实现数据结构:哈希表。 2.0 问题分析 哈希表可以看作我们经常使用的字典(swift)或对象(js),可以让一个key&value对一一对应,可以快速根据key找到value。 哈希表内部使用数组实现,我们需要将不论任何类型的key计算出与之一一对应的数字来,数字的大小介于0到数组尺寸之间,这样,我们可以把value直接存储到数组的对应位置。 通过key计算出唯一数字...原创 2019-04-25 23:28:57 · 336 阅读 · 0 评论
分享