摘要: 一、SQL语句执行顺序 结合上图,整理出如下伪 SQL 查询语句。 从这个顺序中可以发现 所有的查询语句都是从 FROM 开始执行的。在实际执行过程中,每个步骤都会为下一个步骤生成一个虚拟表,这个虚拟表将作为下一个执行步骤的输入。 接下来,我们详细的介绍下每个步骤的具体执行过程。 二、FROM:执行 阅读全文
posted @ 2020-02-26 14:00 和风细羽 阅读(1395) 评论(0) 推荐(0) 编辑
摘要: 一、SQL 语句 什么是 SQL SQL 全称 structured query language 结构化查询语言,是用于访问和处理数据库的标准的计算机语言。 SQL 指结构化查询语言 SQL 使我们有能力访问数据库 SQL 是一种 ANSI 的标准计算机语言 SQL 能做什么? SQL 可与数据库 阅读全文
posted @ 2020-02-26 14:00 和风细羽 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 一、读写锁读写锁实际是一种特殊的自旋锁,它把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则需要对共享资源进行写操作。读操作可以共享,写操作是排他的,可以有多个在读(与 CPU 数相关),只能有唯一个在写,但不能同时既有读者又有写者。如果读写锁当前没有读者,也没有写者,那么写者可以立刻获得读写锁,否则它必须自旋在那里,直到没有任何写者或读者。如果读写锁没有写者,那么读者可以立... 阅读全文
posted @ 2020-02-26 13:53 和风细羽 阅读(1595) 评论(0) 推荐(0) 编辑
摘要: 一、NSOperation 和 NSOperationQueue 简介NSOperation、NSOperationQueue 是苹果提供给开发者使用的一套多线程解决方案。实际上是基于 GCD的更高一层的封装,完全面向对象。但是比 GCD 更简单易用、代码可读性也更高。为什么要使用 NSOperation、NSOperationQueue? 添加在操作完成后执行的代码; 添加操作之间的依赖关... 阅读全文
posted @ 2020-02-26 13:53 和风细羽 阅读(935) 评论(0) 推荐(0) 编辑
摘要: Github:AOMultiproxier、HJProtocolDispatcher协议实现分发器,能够轻易实现将协议事件分发给多个实现者。一、AOMultiproxier.h#define AOMultiproxierForProtocol(__protocol__, ...) ((AOMultiproxier *)[AOMultiproxier multiproxierForProtocol... 阅读全文
posted @ 2020-02-26 13:51 和风细羽 阅读(752) 评论(0) 推荐(0) 编辑
摘要: 方式 1:#!/usr/bin/env python# _*_ coding:utf-8 _*_#第一步:首先生成一个500位的数组 驼峰类型的元素 用作文件名 eg:AsdfdfGsdimport randomimport os,sysimport stringfirst = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"second = "abcdefghijklmnopqrstuv... 阅读全文
posted @ 2020-02-26 13:51 和风细羽 阅读(804) 评论(0) 推荐(0) 编辑
摘要: 一、Massive AppDelegateAppDelegate 是应用程序的根对象,它连接应用程序和系统,确保应用程序与系统以及其他应用程序正确的交互,通常被认为是每个 iOS 项目的核心。随着开发的迭代升级,不断增加新的功能和业务,它的代码量也不断增长,最终导致了 Massive AppDelegate。在复杂 AppDelegate 里修改任何东西的成本都是很高的,因为它将会影响你的整个 A... 阅读全文
posted @ 2020-02-26 13:50 和风细羽 阅读(1220) 评论(0) 推荐(0) 编辑
摘要: 将一个工程分解成各个组件,然后按照某种方式任意组织成为一个拥有完整业务逻辑的工程。大致讨论组件化的三种方案:url-block、protocol-class(和 url-controller 类似)、target-action,以及应用这三种组件化方案的时机、步骤、利弊等。一、为什么需要组件化随着公司业务的不断发展,项目的功能越来越复杂,各个业务代码耦合越来越多,代码量急剧增加,传统的 MVC 或... 阅读全文
posted @ 2020-02-26 13:49 和风细羽 阅读(8669) 评论(0) 推荐(0) 编辑
摘要: 一、ImageMagick使用 ImageMagick 对 png 图片做轻量压缩(基本没有减少体积),不损失图片质量,会改变图片文件 hash 值。方法:安装 ImageMagick $ brew install imagemagick压缩工程目录下所有 png 文件 find . -iname "*.png" -exec echo {} \; -exec convert {} {} \... 阅读全文
posted @ 2020-02-26 13:48 和风细羽 阅读(375) 评论(0) 推荐(0) 编辑
摘要: 一、图像从文件到屏幕过程首先明确两个概念:水平同步信号、垂直同步信号。CRT 的电子枪按照上图中的方式,从上到下一行一行的扫描,扫描完成后显示器就呈现一帧画面,随后电子枪回到初始位置继续下一次的扫描。当电子枪切换到新的一行准备扫描时,显示器会发送一个水平同步信号(Horizonal Synchronization),简称HSync;完成一帧画面绘制后,电子枪会回到原位,显示器会发送一个垂直同步信号... 阅读全文
posted @ 2020-02-26 13:47 和风细羽 阅读(1031) 评论(0) 推荐(0) 编辑
摘要: 一、图片加载的工作流 概括来说,从磁盘中加载一张图片,并将它显示到屏幕上,中间的主要工作流如下: 假设我们使用 +imageWithContentsOfFile: 方法从磁盘中加载一张图片,此时的图片并没有解压缩; 然后将生成的 UIImage 赋值给 UIImageView; 接着一个隐式的 CA 阅读全文
posted @ 2020-02-26 13:47 和风细羽 阅读(1704) 评论(0) 推荐(0) 编辑
摘要: Xcode 的工程选项里有一项 Compress PNG Files,会对 PNG 进行 Premultiplied Alpha。游戏开发中会更加关注这个格式,省一些运行时计算。Premultiplied Alpha 是什么呢?Alpha Blending: To Pre or Not To Pre 这篇文章其实说的很清楚。还有《Real Time Rendering》一、Alpha Blendi... 阅读全文
posted @ 2020-02-26 13:46 和风细羽 阅读(996) 评论(0) 推荐(0) 编辑
摘要: 一、前言 《iOS编译过程的原理和应用》文章介绍了 iOS 编译相关基础知识和简单应用,但也很有多问题都没有解释清楚: Clang 和 LLVM 究竟是什么 源文件到机器码的细节 Linker 做了哪些工作 编译顺序如何确定 头文件是什么?XCode 是如何找到头文件的? Clang Module 阅读全文
posted @ 2020-02-26 13:45 和风细羽 阅读(1325) 评论(0) 推荐(0) 编辑
摘要: 文章:皮拉夫大王在此 - iOS应用瘦身方法思路整理 一、iOS 内置资源的集中方式 1.1 将图片存放在 bundle 这是一种很常见的方式,项目中各类文件分类放在各个 bundle 下,项目既整洁又能达到隔离资源的目的。采用 bundle 的加载方式为 [UIImage imageNamed:" 阅读全文
posted @ 2020-02-26 13:43 和风细羽 阅读(919) 评论(15) 推荐(2) 编辑
摘要: FastImageCache 是 Path 团队开发的一个开源库,用于提升图片的加载和渲染速度,让基于图片的列表滑动起来更顺畅,来看看它是怎么做的。一、优化点iOS 从磁盘加载一张图片,使用 UIImageVIew 显示在屏幕上,需要经过以下步骤:从磁盘拷贝数据到内核缓冲区从内核缓冲区复制数据到用户空间生成 UIImageView,把图像数据赋值给 UIImageView如果图像数据为未解码的 P... 阅读全文
posted @ 2020-02-26 13:42 和风细羽 阅读(2146) 评论(0) 推荐(0) 编辑
摘要: 一、爱奇艺爱奇艺移动应用优化之路:如何让崩溃率小于千分之二iOS8 对于 App 的 text 段有 60MB 的限制;超过 200MB 的 App 需要连接 WIFI 下载(之前是 150MB)过大会导致启动慢,rebase/binding 时间长除去商店中 App 的简介、截图,很多用户都会关注 App 的大小,尤其是使用空间为 8G、16G 的用户安装包大小的优化,主要包含两大块:资源大小的... 阅读全文
posted @ 2020-02-26 13:42 和风细羽 阅读(739) 评论(0) 推荐(0) 编辑
摘要: 在 WWDC 2016 上首次提到了关于 App 应用启动速度优化的话题:Session 406 Optimizing App Startup Time。一、冷启动与热启动热启动是,APP会恢复之前的状态继续运行,这种就是热启动,我们平时所说的APP在后台的存活时间,其实就是APP能执行热启动的最大时间间隔。而冷启动则是APP从被加载到内存到运行的状态,下面我们要讲的主要是冷启动。热启动:由于某种... 阅读全文
posted @ 2020-02-26 13:42 和风细羽 阅读(1468) 评论(0) 推荐(1) 编辑
摘要: 用 ARC 管理内存在正确的地方使用 reuseIdentifier尽量把 views 设置为完全不透明如果你有透明的 Views 你应该设置它们的 opaque(不透明)属性为 YES。例如一个黑色半透明的可以设置为一个灰色不透明的 View 替代。原因是这会使系统用一个最优的方式渲染这些 views。这个简单的属性在 IB 或者代码里都可以设定。Apple的文档对于为图片设置透明属性的描述是:... 阅读全文
posted @ 2020-02-26 13:41 和风细羽 阅读(450) 评论(0) 推荐(0) 编辑
摘要: 前言iOS性能优化系列篇之“优化总体原则”不要提前过度优化要找到性能瓶颈要在不同性能指标间权衡要理解优化任务的底层运行机制要有技术保障体系一、启动速度优化1.1 学习文章WWDC 启动速度优化视频 Session 406 Optimizing App Startup TimeiOS性能(二) 启动时间优化1.2 操作步骤查看启动时间配置 Xcode 环境变量在日志中打印启动时间:打开工程 -> E... 阅读全文
posted @ 2020-02-26 13:41 和风细羽 阅读(1254) 评论(0) 推荐(0) 编辑
摘要: 通常设置圆角方式imageView.clipsToBounds = YES;imageView.layer.cornerRadius = 50;这样设置会触发离屏渲染,比较消耗性能。比如当一个页面上有十几个头像,这样设置了圆角会明显感觉到卡顿。注意:UIImageView 处理png 图片的圆角是不会产生离屏渲染的。(iOS9.0 之后不会离屏渲染,iOS9.0 之前还是会离屏渲染)。一、设置圆... 阅读全文
posted @ 2020-02-26 13:41 和风细羽 阅读(945) 评论(0) 推荐(0) 编辑