自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

DABAI的博客

讲清楚了才是真的懂了

  • 博客(14)
  • 收藏
  • 关注

原创 Git 我记不住的一些命令

commitgit commit --amend使用场景:已经commit了,又做了一些修改,这些修改与上一次commit所做的是同一任务,因此想作为同一个commit进行提交。可以在将修改的文件add后,使用该命令,git会将这个修改与上一次commit的内容合并为同一个commit。resetgit reset HEAD filename使用场景:取消已经暂存的(add)的filename文件。checkoutgit checkout -- filename使用场景:撤销对f

2020-07-19 00:23:40 156

转载 Swift Optional学习笔记

Optional(可选项)声明方式:在变量类型后加 ?两重含义:这里有一个值,它等于x;这里根本没有值通过给可选变量赋值为nil,表示没有值。Swift中,nil不是指针,它只是值缺失的一种特殊类型,任何类型的可选项都可以设置为nil,而不仅仅时对象类型。且只有可选项可以赋值为nil。可选项展开可选项是没法直接使用的,需要用 !展开之后才能使用(意思是我知道这个可选项有值)let str: String? = "abc"let count = str.count // err

2020-06-26 20:37:40 143

原创 关于UITableView UI与数据源不同步造成的Crash

当tableView数据源发生变换需要更新视图时,最直接的方式是直接调用reloadData方法,然而如果我们的tableView数据源巨大时,会造成很多不必要的方法调用。例如有如下程序:每当点击update时,会向tableView的数据源数组中增加两条数据,更新UI,如果我们直接调用reloadData来更新UI,会是的前面没有任何改变的4行也被刷新一遍,造成性能损失。因此通常数据源中局部数据更新时我们会调用UITableView的以下几种方法:- (void)beginUpdates;-

2020-06-25 21:34:59 1107

转载 copy修饰NSArray strong修饰NSMutableArray

strong与copy修饰符strong修饰的属性,对该属性赋值时发生指针拷贝,即浅拷贝;copy修饰的属性,对该属性赋值时发生内容拷贝,即深拷贝。(存在特殊Case)通过重写对象的setter方法实现。当将不可变对象赋值给copy修饰的不可变对象时,也是发生浅拷贝。这算是一种优化,验证见下文。对数组而言,浅拷贝即拷贝了指向数组的指针;深拷贝即拷贝了数组中存储的内容,而这个深拷贝是通过调用copy方法实现。copy与mutableCopy方法以下代码发生崩溃,为什么?@prope

2020-06-25 17:34:36 653

原创 iOS APP间跳转

App间跳转常见场景如第三方登录,例如饿了么使用支付宝登录,我们需要从饿了么App跳转至支付宝App进行授权。常用的实现App间跳转方式有以下两种:URL SchemeUniversal Link

2020-06-20 16:04:03 1546

转载 iOS KVO实现

KVO全称Key-Value Observing,可用于监听某个对象属性值的变化。KVO底层实现原理参考自:https://juejin.im/post/5adab70cf265da0b736d37a8KVO底层怎么实现,当被观察对象的属性值发生变化时,由谁来调用我们实现的observeValueForKeyPath方法?在修改属性值时一定会去调用该属性对应的setter方法,通过实现子类重写对应的setter方法,在setter方法中处理对observeValueForKeyPath方法的调用。

2020-05-11 21:30:33 219

原创 C++多态

1.多态的概念2.多态的定义及实现2.1构成多态的条件2.2重载、重写、重定义的对比接口继承·实现继承抽象类C++11 override final多态的原理,虚函数表动态绑定,静态绑定单、多继承的虚函数表的组成,生成方式

2019-03-30 21:58:43 303

原创 C++序列化容器(vector)中迭代化失效问题

insert导致的迭代器失效void vector_test(){ vector<int> v1; v1.push_back(1); v1.push_back(2); v1.push_back(3); vector<int>::iterator pos = find(v1.begin(), v1.end(), 3); v1.insert(pos, 4...

2019-02-28 09:15:39 505

原创 结构体内存对齐

结构体内存对齐 计算结构体的大小结构体s1, s2:struct s1{ char c1; int i; char c2;};struct s2{ char c1; char c2; int i;};int main(){ printf("%d\n", sizeof(struct s1)); printf("%d\n", sizeof(struct s2));...

2018-11-11 21:29:41 160

原创 一道指针笔试题

就是他int main(){ char *c[] = { "ENTER", "NEW", "POINT", "FIRST" }; char**cp[] = { c + 3, c + 2, c + 1, c }; char***cpp = cp; printf("%s\n", **++cpp); printf(&amp

2018-11-10 13:46:52 158

原创 C语言指针

1.指针是一个变量,用来存放地址,一个地址标记唯一一块内存空间;2.指针的大小是固定的,4/8个字节(32/64位机);3.指针是有类型的,指针的类型决定了指针±整数的步长(跨几个字节),以及指针解引用时可访问的内存空间(几个字节);字符指针字符指针的两种用法:1.指向某个字符变量;2.指向某个字符串首字符的地址。面试题:int main(){ char str1[] = "h...

2018-11-08 21:08:38 129

原创 数据的存储

大小端大端存储模式:数据的低位字节序内容保存在内存的高地址中,数据的高位字节序内容保存在内存的低地址中小端存储模式:数据的低位字节序内容保存在内存的低地址中,数据的高位字节序内容保存在内存的高地址中百度2015系统工程师笔试题请简述大端字节序和小端字节序的概念,设计一个小程序来判断当前机器的字节序。(10分)//int check_sys()//{// int a = ...

2018-11-03 14:54:55 180

原创 内存空间分配某面试题

以下代码在VS中运行结果是什么?为什么? int main() { //局部变量 //栈区 int arr[10] = {1,2,3,4,5,6,7,8,9,10}; int i = 0; for(i=0; i<12; i++) { printf("hehe\n"); arr[i] = 0; } return 0; }死循环打印h...

2018-10-29 08:03:56 397

原创 C语言操作符

C语言操作符算数操作符移位操作符新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入算数操作符1.%不可以作用于...

2018-10-22 16:36:07 88

空空如也

空空如也

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

TA关注的人

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