自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 收藏
  • 关注

原创 资料梳理-02

1. http1.0 http1.1 http2.0 区别2.多读单写 多线程3.子线程里创建的对象什么时候释放4.判断二叉树是否是搜索二叉树(要求非递归)5.weak指针的hash表,是所有对象销毁的时候都会去访问这个表吗6.tcp如何解决数据传输安全7....

2021-02-25 11:53:14 163

原创 数据结构

1.数据结构的存储一般常用的有几种?各有什么特点?数据结构的存储一般常用的有两种 顺序存储结构 和 链式存储结构顺序存储结构:比如,数组,1-2-3-4-5-6-7-8-9-10,存储是按顺序的。再比如栈和队列等链式存储结构:比如,数组,1-2-3-4-5-6-7-8-9-10,链式存储就不一样了 1(地址)-2(地址)-7(地址)-4(地址)-5(地址)-9(地址)-8(地址)...

2020-03-12 14:48:22 127

原创 链表 VS 数组

链表1.链表是什么链表是一种上一个元素的引用指向下一个元素的存储结构,链表通过指针来连接元素与元素;链表是线性表的一种,所谓的线性表包含顺序线性表和链表,顺序线性表是用数组实现的,在内存中有顺序排列,通过改变数组大小实现。而链表不是用顺序实现的,用指针实现,在内存中不连续。意思就是说,链表就是将一系列不连续的内存联系起来,将那种碎片内存进行合理的利用,解决空间的问题。所以,链表允...

2019-11-22 11:15:57 147

原创 Carthage Vs Pods

1.Carthagecarthage更加的灵活并且没有入侵性,是去中心化的,就是说需要自己手动将carthage集成到自己的项目当中优点:把依赖的库都编译成framework,这样一来就不需要每次编译工程,都去编译一遍依赖的第三方库缺点:使用的依赖库比较多,集成起来就比较麻烦。build是framewotk库需要自行引用进来checkout文件夹是从git上下来下来...

2019-11-12 10:22:46 156

原创 Swift的特性

1.初始化顺序子类的属性必须要在父类的初始化方法调用之前初始化class ClassA { let name: String init(name: String) { self.name = name }}class ClassB: ClassA { let age: Int init(name: String, age: I...

2019-11-11 17:11:38 846

原创 Pods安装

1、查看当前Ruby版本ruby -v2、升级Ruby环境,首先需要安装rvm(第一步要下载一些东西等两分钟左右)curl -L get.rvm.io | bash -s stable source ~/.bashrcsource ~/.bash_profile3、查看rvm版本rvm -v 显示如下(或者是其他版本)rvm 1.29.3 ...

2019-08-27 14:35:22 141

原创 OC知识--app卡顿原因

第一. 界面卡顿的原因在 VSync信号到来后,系统图形服务会通过 CADisplayLink 等机制通知 App,App 主线程开始在 CPU 中计算显示内容,影响因素:对象创建;对象调整;对象销毁;布局计算;Autolayout;文本计算;文本渲染;图片的解码;图像的绘制.随后 CPU 会将计算好的内容提交到 GPU 去,由 GPU进行变换、合成、渲染。随后 GPU 会把渲染结果提交到...

2019-04-19 13:27:08 603

原创 OC知识--app优化

CPU和GPU在屏幕成像的过程中,CPU和GPU起着至关重要的作用。1、CPU即是中英处理器,对象的创建和销毁、对象属性的调整、布局计算、文本的计算和排版、图片格式的装欢和转码、图像的绘制等都是CPU处理的。2、GPU即是图片处理器,主要的工作是纹理的渲染。卡顿的原因:卡顿的原因主要是GPU和CPU所花的时间太长,垂直同步信号来的时候,计算和渲染才做还没有完成,所以掉帧了...

2019-04-17 10:51:47 183

原创 资料梳理-- XX && YY

1.@synthesize && @dynamic@synthesize,编译器自动生成setter和getter的方法,在你没有手动去实现这两个方法时。@dynamic,告诉编译器你会动态生成setter和getter方法,不会要编译器帮你生成。2.NSProxy && NSObjectNSProxy应用3.NSCache &&a...

2019-03-08 16:44:49 415

原创 OC知识--NSProxy

NSProxy是一个类似于NSObject的根类。NS_ROOT_CLASS@interface NSProxy <NSObject>{ Class isa;}NSProxy实现了包括NSObject协议在内基类所需的基础方法,但是作为一个抽象的基类并没有提供初始化的方法。它接收到任何自己没有定义的方法他都会产生一个异常,所以一个实际的子类必须提供一个初始化方...

2019-03-08 15:23:21 271

原创 OC知识--Weak

weak表其实是一个hash(哈希)表,Key是所指对象的地址,Value是weak指针的地址数组weak 实现原理的概括Runtime维护了一个weak表,用于存储指向某个对象的所有weak指针。weak表其实是一个hash(哈希)表,Key是所指对象的地址,Value是weak指针的地址(这个地址的值是所指对象指针的地址)数组。weak 的实现原理可以概括一下三步:1、初始化时...

2019-03-07 15:05:45 331

原创 OC知识--多线程

本文主要是分享iOS多线程的相关内容,为了更系统的讲解,将分为以下7个方面来展开描述。多线程的基本概念 线程的状态与生命周期 多线程的四种解决方案:pthread,NSThread,GCD,NSOperation 线程安全问题 NSThread的使用 GCD的理解与使用 NSOperation的理解与使用一、多线程的基本概念进程:可以理解成一个运行中的应用程序,是系统进行资源...

2019-03-07 10:06:56 547

原创 OC知识--Runloop

RunLoop 是 iOS 和 OS X 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理。之后会介绍一下在 iOS 中,苹果是如何利用 RunLoop 实现自动释放池、延迟回调、触摸事件、屏幕刷新等功能的。目录RunLoop 的概念 RunLoop 与线程的关系 RunLoop 对外的接口 RunLoop 的 Mo...

2019-03-06 21:45:52 160

原创 OC知识--Autoreleasepool

AutoreleasepoolBlock

2019-03-06 21:27:22 158

原创 OC知识--RUNTIME

Runtime用处获取属性列表 class_copyPropertylist 获取方法列表 class_copyMethodList 获取成员变量列表 class_copyIvarList 获取协议列表 class_copyProtocolList 方法重写、拦截 动态添加方法 关联对象 方法交换一、面向对象的类 -> 面向过程的结构体类对象(objc_clas...

2019-03-06 21:21:22 149

原创 OC知识--KVO

首先我们先介绍KVO的底层实现原理: 我们注册监听的时候,会对注册者动态的创建一个子类对象,然后底层找方法的的isa指针就变成指向新创建的子类对象。当改变注册对象某个属性的时候,就重写属性的set方法来进行监听。这么说可能理解上不是很明白,下面我们结合代码来分析:我们常见一个Person对象是继承与NSObject,有一个name属性。我们把Person的类对象的name属性注册...

2019-03-06 21:09:21 107

原创 OC知识点--完整的单例

完整的单例方法,保证init、alloc、copy、mutableCopy时,都能保证只创建唯一单例//.h文件#import <Foundation/Foundation.h>@interface Singleton : NSObject//单例方法+(instancetype)sharedSingleton;@end//.m文件#import "Singleto...

2019-03-06 17:58:43 203

原创 网络知识--4.SOCKET

SOCKET和HTTP的区别:HTTP协议:简单的对象访问协议,对应于应用层。HTTP协议是基于TCP链接的。TCP协议:对应于传输层IP协议:对应与网络层TCP/IP是传输层协议,主要解决数据如何在网络中传输;而HTTP是应用层协议,主要解决如何包装数据。SOCKET是对TCP/IP协议的封装,SOCKET本身并不是协议,而是一个调用接口(API),通过SOCKET,我们才能使用TC...

2019-03-06 17:35:46 185

原创 网络知识--3.HTTPS

1.HTTPS简单说明 HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。 即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的H...

2019-03-06 17:22:49 831

原创 网络知识--2.TCP三次握手与四次挥手

TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急) Sequence number(顺序号码) Acknowl...

2019-03-06 16:10:32 236

原创 资料梳理-App启动时间

在Xcode中,可以通过设置环境变量来查看App的启动时间,Edit Scheme->Run->Arguments->Environment Variables->DYLD_PRINT_STATISTICS:1Total pre-main time: 654.59 milliseconds (100.0%) dylib loading tim...

2019-03-06 14:41:30 180

原创 资料梳理-App启动流程

App启动Dyld2流程:加载dyld到App进程 加载动态库(包括所依赖的所有动态库) Rebase/Bind 初始化Objective C Runtime 其它的初始化代码1.加载dyld到App进程 系统加载程序可执行文件Mach-O(Header,LoadCommands,Data)后,通过分析文件LoadCommands->LC_LOAD_DYLINKE...

2019-03-06 11:30:21 232

原创 python脚本-修改Assets图片文件

修改Assets下目录的图片文件资源,代码中图片引用有拼接图片名称情况,需单独修改import os#文件前缀filename_prefix = 'XXXX'#文件后缀filename_suffix = 'XXXX'target_url = '/Users/HOSTNAME/work/PROJECTNAME/PROJECTNAME/PROJECTNAME/PROJECTNAME...

2019-02-28 18:27:38 1334

原创 python脚本-批量修改文件名

批量修改iOS工程目录文件名import os#文件前缀filename_prefix = 'HEADER'#文件后缀filename_suffix = 'SUFFIX'#需要更新文件目录target_path = '/Users/HOSTNAME/demo/PROJECTNAME/PROJECTNAME'#需要查询文件目录project_path = '/Users/H...

2019-02-28 10:53:40 251

原创 资料梳理-01

1.如果是只读,需要用线程锁吗 ? 不需要。线程安全是由于多线程访问和修改共享资源而引起不可预测的结果。因此,如果都是访问共享资源而不去修改共享资源也可以保证线程安全,比如:设置只读属性的全局变量2.自动释放池原理?AutoreleasePool3.SDWebImage如何处理gif图?从缓存取出来还是gif吗? 在SDWebImage的核心文件中有...

2019-02-28 10:33:22 157

原创 shell脚本-iOS打包

1.打包导出配置文件ExportOptions.plist文件 provisioningProfiles 包签名,hoc证书名字 signingCertificatehoc证书 SHA-1 签名<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIS...

2019-02-18 15:28:33 163

原创 逆向开发--8.HOOK

一.概述    在iOS逆向中是指改变程序运行流程的一种技术    1.Method Swizzle  利用runtime特性,动态改变SEL和IMP对应关系    2.fishhook    Fackbook提供的一个动态修改链接machO文件的工具,利用machO文件加载原理,通过修改懒加载和非懒加载两个表的指针达到C函数hook目的    3.Cydia Substrate ...

2019-01-28 17:52:20 159

原创 逆向开发--7.dyld

     dyld(the dynamic link editor)是苹果的动态连接器,是苹果操作系统一个重要组成部分,在系统内核做好程序准备工作之后,交由dyld负责余下的工作    1.+ (void)load{} 方法断点,起始 _dyld_start,跳入dyldbootstrap::start(macho_header const*, int, char const**, ...

2019-01-25 18:04:42 395

原创 逆向开发--6.MachO文件

一.MachO文件介绍    1.MachO其实是Mach Object文件格式的缩写,是Mac以及iOS上可执行文件的格式,类似Windows上的PE格式(Portable Executable),linux上的ELF格式(Executable and Linking Format)    2.作为.out格式的替代,Mach-O提供更强的扩展性    3.常见MachO格式的文件...

2019-01-24 18:15:30 338

原创 逆向开发--5.iOS代码注入

一.Framework注入1.PROJECT TARGETS 下方 "+","Cocoa Touch Framework","MuyangHook"2.左侧"MuyangHook" 新建类3.编译build,新的Framework会出现在 Products/.app “Show in Finder”成目录4.显示app包内容.app/Frameworks/里包含新建Framewor...

2019-01-18 17:59:39 272

原创 网络知识--1.HTTP报文结构

一.HTTP请求报文结构一个HTTP请求报文由四个部分组成:请求行\r\n、请求头部\r\n、空行\r\n、请求数据。1.请求行     请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。比如GET /data/info.html HTTP/1.1 ,方法字段就是HTTP使用的请求方法,比如常见的GET/POST,其中HTTP协议版本有两种:HTT...

2019-01-17 14:28:44 598

原创 逆向开发--4.iOS签名与重签名

一.iOS签名    苹果为了解决应用滥用    a.限制在苹果后台注册过的手机才可以安装,b.限制签名只能针对某一个具体的App,c第三控制App的权限  以上所有包含在entitlements描述文件里,XCode会自动打包到App内。    开发时,编译完App,XCode用本地私钥M对App进行签名,同时把公钥M通过CSR文件通过苹果后台生成的cer证书 和 pp描述文件(设备...

2019-01-16 17:31:53 962

原创 逆向开发--3.RSA加密

一.RSA加密    质数:一个大于1的自然数,除了1和它本身外,不能被其他自然数整除(除0以外)的数称之为质数(素数);否则称为合数    互质数:公约数只有1的两个数,叫做互质数。    模运算:让m去被n整除,只取所得的余数作为结果,就叫做模运算。m mod n = x    同余:给定一个正整数m,如果两个整数a和b满足a-b能被m整除,即(a-b)modm=0,那么就称...

2019-01-15 14:14:18 233

原创 逆向开发--2.哈希加密 & base64加密

一、哈希HASH哈希(散列)函数  MD5 SHA1/256/512 HMACHash的特点:     1.算法是公开的     2.对相同数据运算,得到的结果是一样的     3.对不同数据运算,如MD5得到的结果是128位,32个字符的十六进制表示,没法逆运算 1.MD5加密MD5加密的特点:不可逆运算对不同的数据加密的结果是定长的32位字符(不管文件多大...

2019-01-15 11:01:17 317

原创 逆向开发--1.对称加密

1.定义    采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。2.优缺点    优点是算法公开、计算量小、加密速度快、加密效率高    缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人...

2019-01-15 10:47:33 186

原创 多线程编程--NSOperation

一.简介NSOperation是一个抽象的基类,表示一个独立的计算单元,可以为子类提供有用且线程安全的建立状态,优先级,依赖和取消等操作。系统已经给我们封装了NSBlockOperation和NSInvocationOperation这两个实体类。NSOperation本身是抽象基类,因此必须使用它的子类,使用NSOperation子类的方式有2种:1> Foundatio

2016-04-08 10:01:52 248

原创 多线程编程--NSThread

每个iOS应用程序都有个专门用来更新显示UI界面、处理用户的触摸事件的主线程,因此不能将其他太耗时的操作放在主线程中执行,不然会造成主线程堵塞(出现卡机现象),带来极坏的用户体验。一般的解决方案就是将那些耗时的操作放到另外一个线程中去执行,多线程编程是防止主线程堵塞,增加运行效率的最佳方法iOS支持多个层次的多线程编程,层次越高的抽象程度越高,使用也越方便,也是苹果最推荐使用的方法。下面根

2016-04-07 10:41:04 265

转载 【iOS开发】使用Paros监控iPhone发出的HTTP请求

Paros 抓包

2015-04-29 10:16:57 834

转载 使用self. 导致的内存泄露

请看第一段代码:在MyObject.m中self.aObj = [[NSObject alloc] init];......- (void)dealloc{        [self.aObj release];        [super dealloc];}你能否看出这里的内存泄露?接下来看第二段:aObj = [[NSObject alloc]

2014-11-17 09:30:15 256

转载 保存用户密码的安全方法 .

作为一名iPhone开发者, 你需要对你的用户安全负责. 请问, 你是怎么保存用户的密码的? 直接保存到plist里?加密? AES? DES? 能保证你的代码不被反编译拿到你的加密Key? 这也未免太不苹果了吧. 我Google了一下, 国内的开发者根本没有注意到这个问题.苹果系统中有个程序叫”钥匙串” (Keychain)

2014-11-17 09:23:48 370

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除