240 发简信
IP属地:浙江
  • 事件穿透

    在事件响应和传递这篇文章中,讲了iOS中的事件响应和传递,今天在做项目的时候,正好碰到了一个应用的场景,因此记录下来。 需求 首页头部需要添加这样一个视图 点击左右两个按钮,...

  • 120
    改造链表支持"二分查找"

    改造之后的数据结构叫做跳表,支持类似”二分“的查找算法。 怎么提高链表查找效率? 正常链表的查询,因为要从头开始遍历,所以时间复杂度是O(n)。 试想一下给链表建立一个索引,...

  • 120
    异步绘制原理

    UI绘制的过程 当调用[UIView setNeedsDisplay]方法时,系统会立即调用对应的layer的setNeedsDisplay,之后给layer打上标记,在一次...

  • 120
    事件响应和传递

    iOS设备会产生各种事件:触摸、晃动设备、远程控制等,事件发生了就需要有响应者去接收并处理事件,这就形成了一套事件响应机制。 事件类型 在iOS开发中,UIEventType...

  • 120
    彻底搞懂import "" 和 import <>

    今天打开Xcode看到import的时候,突然想起来好像除了在刚出来工作面试iOS的时候背过它们的区别外,后来就再也没有深入了解过这两个究竟是什么作用,以致于到现在连作用区别...

  • 二分查找(下)

    4种常见的二分查找变形问题 查找第一个值等于给定值的元素 查找最后一个值等于给定值的元素 查找第一个大于等于给定值的元素 查找最后一个小于等于给定值的元素 查找第一个值等于给...

  • 二分查找(上)

    也叫折半查找算法 思考 假设我们有1000万个整数数据,每个数据占8个字节,如何设计数据结构和算法,快速判断某个整数是否出现在这1000万个数据中?占用内存最多不要超过100...

  • 排序算法(3)- 桶排序、计数排序、基数排序

    桶排序(Bucket sort) 将要排序的数据分到几个有序的桶里,每个桶里面再单独进行排序,最后把每个桶里的数据依次取出来,组成的序列就是有序序列。 看问题 对一组金额在0...

  • mysqlclient修复image not found

    Django项目要用到mysql,安装完mysqlclient之后,启动项目报错 后面部分省略,主要看这部分,提示找不到libmysqlclient.20.dylib,之前为...

  • 安装mysqlclient报错

    安装mysqlclient,报错,一般问题卡在这里 首先确保安装了openssl 我两台mac用了两种解决方式,很奇怪为什么同一种方式不行,可能是系统版本不一样 MacOS ...

  • brew安装服务开机自启动

    通过 brew services start 当我们通过 brew install 安装第三方库比如 redis 时,安装完会有这样一段提示 其中已经说明了为了现在启动和登录...

  • 正则表达式的贪婪模式和非贪婪模式

    先看一个例子 拿到一个数字 我们可以将要匹配的内容用()括起来,这里我们知道 字符描述.代表所有的单个字符,除了 \n \r{n}匹配在 {n} 前面的东西,比如:o{2} ...

  • 120
    排序算法(2)- 归并、快速

    归并排序的原理 采用分治思想,每次将数组从中间分成两部分,分别对两部分进行排序,直到不能继续分解为止 归并排序的性能分析 是否是稳定的排序算法,要看merge函数,如果从st...

  • SQL基础教程(2)

    函数、谓词、CASE表达式 函数 先创建表和数据 abs(数值) 计算绝对值 mod(被除数, 除数) 计算除法余数(求余) round(对象数值, 保留小数的位数) 四舍五...

  • 排序算法(1)- 冒泡、插入、选择

    有一些最经典的、最常用的算法,按照时间复杂度可以分为三类 排序算法时间复杂度是否基于比较冒泡、插入、选择O(n^2)是快排、归并O(nlogn)是桶、计数、基数O(n)否 如...

  • SQL基础教程(1)

    以下基于mysql 一个商品表 导入sql语句 删除表 重命名表 增加列 删除列 更改列为主键 插入行 SELECT 查询列设置别名 设置汉语要用双引号"" 设置常数显示 显...

  • 探究写时复制

    写时复制 和Objective-C不同,在Swift中,Array、Dictionary、Set这样的集合不再是引用类型而是值类型了,这意味着,每次传递不再是传递指针而是一个...

  • Swift与OC的运行时特性

    OC运行时 动态类型 动态绑定 动态装载 OC的消息转发机制 分为两步 实例变量会先查找自身有没有该方法,没有就再去父类,直到最上级父类也没有,就会转向第二步 这一步会有很多...

  • 通过两个数组实现队列

    使出栈和入栈的时间复杂度都为O(1) 就和数组的扩容一样,扩容的操作并不是时刻发生,它的频率是低频的,平摊下来接近于O(1)这里的将 right 数组 reversed 到 ...

  • 位运算的几种应用

    例1:不借助临时变量,交换两个数的值 思路:通过异或,先求出两个变量的不同的位 例2:求一个UInt二进制数中1的个数 思路:比如一个 1011 0100 这个二进制数,先用...

个人介绍
追求技术,追求卓越