自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 NSURLSession 实际应用(一)

NSURLSession的实际应用本文介绍如何使用 NSURLSession 进行网络传输较复杂的数据——包含 file(UIImage,NSData等)类型的 json数据文章索引词NSURLSession 的使用Types of URL SessionsNSJSONSerialization dataWithJSONObjectPOST multipart/form-data with Objective-CObjective-C 拼接NSData 数据HTTP协议Postman 测

2021-09-16 23:28:55 368

原创 iOS Runtime 基础实用篇

前言本篇博文主要以初学者学习Runtime 的角度介绍,由浅入深同时结合简单的示例,让读者更快捷的学习。【注】若读者对本文中的内容有所疑惑或者不对的地方,请不要吝啬您的留言,让我们一起成长本文结构Runtime 介绍 OC 类基础结构介绍 OC 函数是如何调用的 Runtime 消息转发Runtime 介绍 Runtime 是什么? Objective-C 拓展了 C 语言,添加了 面向对象特性 和 消息传递机制,拓展的核心是一个用 C 语言和汇编语言写的 R...

2021-08-06 16:47:07 251

原创 Effective Objective-C 2.0 - 第三七条:理解“块”这一概念

前言 块可以实现闭包,该项特性言语特性是作为“拓展”(extension)而加入GCC编译器中的。Clang 10.4 和 iOS 4.0都含有块正常执行所需的运行期组件,从技术层面江,这是位于C语言层面的特性,可以在C , C++, OC, OC++代码中使用它。块基础知识 块和函数相似,只不过块是直接定义在另一个函数内部,和定义它的函数共享同一个范围的东西。块其实就是一个值(对象),可以进行赋值。块的语法结构如下:return_type (^block_name)(paramete..

2021-03-29 21:28:24 180

原创 Fishhook原理解析

初识fishhookFishhook 是 facebook 的开源库。官方描述,它的作用是:... enables dynamically rebinding symbols in Mach-O binaries running on iOS in the simulator and on device支持对 iOS 模拟器和设备上运行的 Mach-O 二进制文件,动态地重绑定其中的...

2020-04-03 20:19:00 3009

原创 Xcode调用一个printf都会进行那些操作

背景知识进程是特殊文件在内存中加载得到的结果。一个IOS app的进程,就是MachO文件在内存中加载得到的结果。比如这是一个 arm64 架构下的 MachO 文件。Mach 加载器会读取 MachO 文件中的加载命令(Load Commands),这些命令决定了如何布局这个进程的内存空间。(这里需要注意:内存地址和 MachO 文件的 offset 是两个概念,对于 TEXT ...

2020-04-03 20:05:40 407

原创 MachO文件详解

什么是Macho文件? 苹果开发者对它一定不陌生,特别是喜欢逆向的同学,对它的研究更是必不可少。在可安装的每一个.app包中,都有一个与app同名的可执行文件,它可能长这样:(如果你碰到显示为白色的MachO文件,说明当前用户对其没有可执行权限)...

2020-04-03 17:29:21 2903

原创 IOS封装.framework 及其使用

一:什么是.framework?这个问题相信做iOS的都知道答案。 在我们的日常开发中,经常会用到各种已经封装好的库,比如支付宝、微信SDK等等中的库,这些库可以给我们的开发带来很大的便利。有的时候,由于工作的需要,我们需要对自己的项目进行封装,生成库,方便别人的使用。在这里就边参考好点的博客,边总结一下我们经常看到的.framework。那什么是“库”呢?“库”是共享程序代码的...

2020-03-28 16:54:32 576

原创 数据同步两种方式

背景如果数据要存储多份的时候,为了保证数据的准备性,我们需要保证数据更新的同步性同步方式1.全量同步:就是每天定时(避开业务高峰期)或者周期性全部把数据从一个地方拷贝到另一地方。(全部的数据)2.增量同步:只需要去同步那些改动过,需要跟新的数据。增量的基础是全量,首先需要将全量数据拷贝过来,然后再采用增量方式同步更新。增量会抓取某个时刻(更新时间)或者检查点(checkpoint)...

2020-03-06 14:46:28 10733 3

原创 "_OBJC_CLASS_$_文件名", referenced from: objc-class-ref in文件名

当往工程中添加文件时:注意1.确保该.m文件在其中2.勾选该文件对应的target二:尝试 关闭 或者 修改路径名()Desktop/t/lite/Article

2020-02-06 19:19:12 727

原创 iOS App 利用xcconfig文件来配置多环境

先了解几个概念 1.Xcode Workspace A workspace is an Xcode document that groups projects and other documents so you can work on them together. A workspace can contain any number of Xcode projects, plus ...

2020-01-17 15:13:28 750

原创 tableview 的一些属性

我们可以通过设置tableView的separatorStyle属性来设置有无分割线以及分割线的风格,其中style定义如下:typedef enum { UITableViewCellSeparatorStyleNone, UITableViewCellSeparatorStyleSingleLine, UITableViewCellSeparatorStyleSi...

2019-12-13 20:50:02 152

原创 UIScrollView 的contentSize contentOffset 和 contentInset属性

IOS中,UIScrollView是可以滚动的视图,其中最常用的UITableView就是继承了UIScrollView。跟所有的view一样,UIScrollView有一个frame属性,同时,UIScrollView还具有contentSize、contentOffset和contentInset属性。contentSizecontentSize是UIScrollView可以...

2019-12-13 20:47:35 641

转载 UIView的autoresizingMask属性

@property(nonatomic) UIViewAutoresizing autoresizingMask;UIViewAutoresizing是一个枚举类型,默认是UIViewAutoresizingNone,也就是不做任何处理。该属性用于自动调节子控件在父控件中的位置和宽高typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing)...

2019-12-13 20:37:09 180

原创 iOS --- Blocks底层原理详解(三)

在这篇文章中(https://blog.csdn.net/genzld/article/details/103338243),已经介绍了block的底层本质实现以及了解变量的捕获,本文继续探寻block的本质block对 对象变量 的捕获 block一般在使用过程中都是对对象变量进行捕获,那么对象变量的捕获和基本数据类型变量相同吗? 查看以下代码思考:当block中访问的...

2019-12-03 11:42:19 199

原创 IOS --- Blocks底层原理详解(二)

看本文前的疑问block的原理是怎样的?本质是什么? __block的作用是什么?有什么使用注意点? block的属性修饰词为什么是copy?使用block有哪些使用注意? block在修改NSMutableArray,需不需要添加__block首先对block有一个基本的认识block本质上也是一个oc对象,他内部也有一个isa指针。block是封装了函数调用以及函数调用环境的O...

2019-12-01 19:58:41 576

原创 iOS --- Blocks详解(一)

一:什么是Blocks Blocks是C语言的扩充功能,用一句话表示他的扩充功能:带有自动变量(局部变量)的匿名函数。顾名思义,匿名函数就是不带有名称的函数。而C语言是不允许这样的函数存在的,即便是函数指针,也是知道函数名的。int (*funcptr) (int) = &func;int result = (*funcptr)(10); 通过Block,源代码中就能使...

2019-12-01 14:53:04 605

原创 IOS --- UITableView 制作简单的UITalbeView对象

一:首先明确你要将这个UITalbeView应用到哪个View当中!二:明确委托和协议机制!三:明白什么是延迟加载(懒加载)!四:确定展示的数据的储存方式,即明确储存数据结构!@interface ViewController ()<UITableViewDataSource,UITableViewDelegate>@property (nonatomic, str...

2019-11-28 14:51:43 98

原创 Objective--C 对象初始化

前言目前为止我们已经学习了两种不同的方法创建对象。第一种是[类名 new];第二种是[[类名 alloc]init];这两种方法是等价的,但是Cocoa惯例是使用alloc和init而不使用new。那么这两者有什么区别呢? 1.首先new是调用了alloc 和init 2.第二种方法的init可以选择非系统默认的,可选择性更强 3.并且alloc分配内存的时候使用了zo...

2019-11-26 15:46:52 246

原创 文本输入 委托 协议

本文章介绍委托(delegation)和UITextField的使用。委托是Cocoa Touch中一种常见的设计模式。一:继续上一篇博客,了解一下UITextField 它可以接受用户的输入文本,例如在相关页面中需要与用户进行数据交互时,使用到的UI组件。- (void)loadView{ CGRect frame = [UIScreen mainScreen].bou...

2019-11-25 19:33:00 133

原创 IOS -----UIButton UILable UITextField

一:UIButton 1.定义 这就是一个简单按钮的制作 UIButton* btn = [[UIButton alloc]initWithFrame:CGRectMake(x,y,length,weigth)];//定义一个按钮,并且初始化 按钮矩形大小btn.tag = 100;//设置该按钮的标签是100(如何使用呢? 在该视图中:其他作用域中...

2019-11-24 17:04:02 216

原创 Objective-C基础学习 Foundation Kit

前言:Cocoa中Foundation框架的介绍 Foundation框架只是Cocoa的一部分,并且没有内置到Objective-C中,但是他还是非常重要的。Cocoa实际上是由很多不同框架组成的,在IOS平台上开发程序,那么你将会用到User Interface Kit(UIKit框架)。Foundation是UI框架的基础,因为它不包含UI对象。同时Foundation是以coreFo...

2019-11-24 12:03:10 149

原创 __attribute__ ((__packed__)) 关键字

该关键字的作用:可以让结构体,按照紧凑排列的方式,占用内存,例如#include <stdio.h>#include <iostream> using namespace std; struct test1 { char c; int i;}; struct __attribute__ ((__packed__)) test2 { ...

2019-08-19 17:55:45 668

原创 Ubuntu下监测网络状态命令

一:首先监测Ubuntu是否安装相应的net-tools,若没安装则安装sudo apt-get install net-tools二:检测网络状态常用的基本命令1. ifconfig输出结果分析:drew@ubun:~$ ifconfigeth0 Link encap:以太网 硬件地址 d0:17:c2:aa:11:b8 inet ...

2019-08-16 15:27:09 3660

原创 ubuntu 安装KVM前期准备工作

基本的Ubuntu操作系统安装好之后,安装KVM需要的包。在这之前需要做一些准备工作1.确认CPU是否支持虚拟化执行命令:egrep -o '(vmx|svm)' /proc/cpuinfo如果返回值大于0,则代表支持,否则硬件设置:去BIBO中设置,启动物理机的时候 按Delete键,找到VT支持用lscpu查看CPU架构信息2.配置国内镜像,否则会出现各种...

2019-08-16 14:48:57 1088

原创 Linux内核解读 ------ 内存篇 上 (二)

物理内存初始化 首先来考虑一下几个问题: 1.在系统启动时,Linux内核如何知道系统中有多大的内存空间??? 2.在32bit的Linux内核当中,用户空间和内核空间之比为3:1,可以修改成2:2吗? 3.物理内存页面如何添加到伙伴系统中,是一页一页的添加还是以2的几次幂加入呢?1.内存概述 从硬件角度看内存,随机存储器(RAM,Random Access...

2019-07-12 17:47:03 796

原创 Linux内核解读 ------ 内存篇 上 (一)

前言: Linux大部分用于商用系统,所以想设计出好的系统模型,如果你能够从底层的角度来深刻的了解Linux,那么我相信你的IT路将会一马平川。接下来的Linux内核系列的博客将会持续更新,作者从知道到认识然后了解Linux这个伟大的系统已经过去两个多年头了,仍然还是Linux界的菜鸟。实习期间,师从中科院博士,架构师是清华大学博士,在这个过程中我学到了不少也成长了不少,小编将会和各位读...

2019-07-08 21:31:38 280

原创 LeetCode49————字母异位词分组

题目描述:给定一个字符串数组,将字母异位词组合在一起,字母异位词指字母相同,但排列不同的字符串。示例:输入:["eat","tea","tan","ate","nat","bat"]输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]说明:1.所有输入均为小写字母2.不考虑答案输出的顺序。解...

2019-06-20 20:05:21 264

原创 企业新型安全模式

一:“零信任”模式的由来从IT基础设施早期,企业一向使用边界防御措施来保护对内部资源的访问,边界模型专注于传统的基于边界的网络安全架构,通过防火墙,WAF,IPS等边界安全产品/方案对企业网络边界进行重重防界防御,若没有外部攻击且假设内部安全便可保证网络安全性。大量的网络安全事故调查显示:一方面黑客等外部网络攻击导致网不安全性;另一方面,也存在内部问题,内部人员的误操作和恶意破坏一直是企业...

2019-06-20 17:06:41 749

原创 Intel X86 CPU系列寻址方式

X86体系Intel所谓的X86体系,是指Intel从16位微处理器8086开始的整个CPU芯片系列,系列中的每种型号都保持与以前的各种型号兼容,主要有8086,8088,80186,80286,80386,80486以及以后各种型号的Pentium芯片。该篇文章主要是结合Linux内核的储存管理对其寻址方式做一些简要的说明。 在X86体系中,8086和8088是16位的处理器,而从...

2019-05-29 16:58:17 1024

原创 第二篇 Linux ----- SQL基本语句 ----- DDL语句

SQL简介 SQL语句是一种能够和数据库进行交互,以完成用户所需要的各种工作。SQL是SreuctureQueryLanguage(结构化查询语言)的缩写,是使用关系模型的数据库应用语言,有IBM开发。 SQL语句主要划分为3类:》DDL(Data Definntion Languages)语句: 数据定义语言 定义了不同的数据段,数据库...

2019-04-25 16:18:15 287

原创 第一篇 Linux ----- MySQL服务器的启动,链接

Linux版本red hat6.3 MySQL版本5.1.61一:启动关闭MySQL服务器》1. RMP包安装的启动:service mysql start/stopservice mysqld //->5.0版本》2.使用mysqld脚本启动:service mysqld //查看路径/etc/inint.d/mysqld start ...

2019-04-25 11:30:25 630

原创 ACM容器的使用(unordered_map)

输入:1 1 3输出:6输入:0 0 0输出:3#include&lt;unordered_map&gt; int main() { unordered_map&lt;int,int&gt;myvec; int temp = 0; int total = 0; int arr[3] = { 0,0,0 }; for (int i =...

2019-03-10 19:04:30 477

原创 测量计算机大小端的方法

什么机器的大小端? 某些机器选择在储存器中按照最低有效字节到最高有效字节的顺序储存对象,而另一些机器则按照从最高有效字节到最低有效字节储存的顺序储存对象。前一种方式---最低有效字节在最前面的方式,成为小端法(little endian)。大多数Intel兼容机都采用这种小端模式的规则,后一种规则----最高有效字节在最前面的方式,称为大端法(big endian),大多数的IBM和Sun...

2019-01-23 14:52:00 183

原创 Linux下core文件调试

一:core dumped错误在Linux上编写C/C++程序时,往往会发生如下错误:core dumped#include&lt;iostream&gt;using namespace std;int main(){ int *p; *p = 20;//使用了野指针}对于上述这样的一个小小程序很容易定位到错误的源头,但是对于成百上千行的代码来说定位一...

2019-01-23 14:13:15 1537

原创 软链接和硬链接

软链接--符号链接:相当于Windows的快捷方式创建命令:ln -s 文件名  软链接的名字 (ln - link  s - soft)特点:软链接的特点 1. 在Linux中 , 软链接文件的颜色为 浅蓝色。 2. 软链接的大小为原文件的文件名的大小,即路径长度。 3. 软链接创建时最好给出原文件的绝对路径。 4. 目录也可以创建软链接,方法同上。 ...

2019-01-23 12:19:01 220

转载 查看Linux最大文件描述符数

一:系统   1.系统最大打开文件描述符数: /proc/sys/fs/file-max   2.查看:                $ cat /proc/sys/fs/file-max   3.重新设置:        ①临时性: $ echo 1000000 &gt; /pro/sys/fs/file-max         ②永久性:在配置文件/etc/sysct...

2019-01-20 19:52:16 5409

原创 C++ 11 Lambda表达式

  C++ 11的几大新特性为:引入了lambda表达式;改进了智能指针......。利用Lambda表达式,更方便的定义和创建匿名函数。这项新功能的添加同样也是用来缩短了(调用代码)距离,简洁,效率,功能性都有提升,下面详细介绍。C++声明Lambda表达式[ capture list ] ( params list ) mutable exception -&gt; return t...

2019-01-16 17:28:32 495

原创 C++构造函数 初始化列表 的神秘之处

首先了解类对象的构造顺序是怎样的:1.分配内存,调用构造函数时,隐式/显式的初始化个数据成员(构造函数列表的初始化方式不是按照列表的顺序,而是按照变量声明的顺序同时初始化显隐    数据成员);2.进入构造函数后在构造函数中执行一般赋值与计算。使用初始化列表的原因: 一:只能使用初始化列表  1.初始化 const 修饰的类成员(常变量) 或 初始化引用成员数据;(因为这些...

2019-01-14 22:04:30 245

原创 C++ 11 --智能指针

为什么会出现智能指针??  在编写C++程序代码的过程中,往往都会涉及到堆内存的开辟和释放,使用new和delete关键字,特别是堆内存上的释放是通过程序员手动完成的,它不像栈内存上,只要生存周期结束了即可由系统自动回收。  但是很多粗心的程序员,由于各种情况可能忘记手动释放堆内存或因为一些细节原因而未进行堆内存的释放,最终导致产生大量的内存泄漏,造成资源浪费,因此智能指针出来了。什么...

2019-01-13 21:02:39 257

转载 TCP滑动窗口和拥塞控制机制详解

滑动窗口的定义: 1.“窗口”对应的是一段可以被发送的字节序列,其连续的范围称为窗口;2.“滑动”则是指这段“允许发送的范围”是可以随着发送的过程而变化的,方式就是按顺序“滑动”。 滑动窗口的作用: 是一种流量控制方法,该协议允许发送方在停止等待确认前可以连续发送发个分组。由于发送方不必每发送一个分组就停下来等待确认,因此该协议可以加速数据的传输。 在了解具体的例子之前我们先来...

2018-12-29 16:10:51 10398 2

空空如也

空空如也

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

TA关注的人

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