自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(96)
  • 资源 (3)
  • 收藏
  • 关注

原创 iOS vs Flutter(语法篇)

iOS开发者入门Flutter首先说一下,为什么要关心iOS和Flutter的区别问题。因为移动端开发的业务逻辑设计模式等是一致的,区别可能只在于使用的语言不同,实现逻辑的风格不同而已。所以这里我们先分析一下iOS和Flutter的区别到底有哪些,有利于我们更快地去入门。生命周期:页面加载的生命周期:移动端开发首先要关注的一点肯定要了解一个页面加载的生命周期,就像了解iOS的viewcon...

2019-07-29 16:15:24 1611

原创 操作系统的进程管理

进程组成:PCBPCB:系统为每个运行的程序配置一个数据结构,称为进程控制块(PCB),用来描述进程的各种信息(如程序代码存放位置)PCB,程序段,数据段三部分构成了进程实体(进程映像)。所谓创建进程,实际上是创建进程实体中的PCB。撤销进程实际就是撤销进程的PCB,PCB是进程存在的唯一标志。PCB组成:(进程的管理者)进程描述信息进程标识符PID创建此进程的父进程用户标志符...

2019-07-09 19:22:38 409

原创 内存管理 || 虚拟内存的管理

覆盖技术:程序设计分为常驻区以及覆盖区覆盖区可以通过运行与阻塞时换入换出实现内存空间的共享同一覆盖区的程序模块之间必须不存在相互调用关系[外链图片转存失败(img-xKQeXqbG-1562608467748)(/Users/peiyuwang/Library/Application Support/typora-user-images/image-201907081644...

2019-07-09 01:57:09 558

原创 内存管理 || 物理内存的管理

内存管理的层次内存管理的目标抽象:逻辑地址空间(不考虑底层细节,只需访问一个连续的地址空间)保护:独立地址空间(不会被别的进程破坏)共享访问相同内存(进程间数据传递)虚拟化更多的地址空间(把最需要的数据放入内存,暂时不需要的数据放到磁盘)地址空间 & 地址生成物理地址空间逻辑地址空间地址空间定义:物理地址空间:主存和磁盘等硬件直...

2019-07-08 14:33:38 306

原创 KVO的实现原理

KVO是通过isa-swizzing的方法来实现的。就是比如B作为观察者观察A的属性name时,在运行时会动态生成一个A的子类notify_A类,然后将A类的实例对象的isa指针指向notify_A这个子类,然后在子类中重写的方法有三个:name的set方法- (void) setName:(NSString*) name{ willChangeValueForKey; _name ...

2019-06-12 01:20:50 1704

原创 iOS | Grand Central Dispatch (GCD)

进程和线程:进程是一个正在运行的应用程序,一个应用程序可以对应一个或多个进程。应用程序是一个没有生命的实体,只有运行之后,才能成为一个活动的实体,也就是进程。进程是操作系统分配资源的基本单元。进程在运行的过程中拥有独立的内存单元,一个进程崩溃后,不会对其他进程造成影响。线程是独立运行和独立调度的基本单位,线程才是程序真正的执行单元,负责代码的执行。一个进程可以有一个或多个线程,同一个进程的线...

2019-06-04 10:59:58 159

原创 iOS | Blocks

概要Blocks时c语言的扩充功能,就是带有自动变量(局部变量)的匿名函数模式语法:^ 返回值类型 参数列表 表达式例如:^int (int count) {return count + 1;}可省略返回值类型,Block语法将按照return语句的类型返回int型返回值^(int count) {return count + 1;}如果不使用参数,参数列表也可省略^{print...

2019-06-02 15:15:01 190

原创 iOS多线程和网络

提供的功能通过URL将数据下载到内存通过URL将数据下载到文件系统将数据上传到指定的URL在后台完成上述操作(支持后台网络操作,除非用户强行关闭应用程序)NSURLConnection和NSURLSession的关系示意图NSURLSession中的请求都看做一个请求任务(task)。NSURLSession的Task继承关系如下:NSURLSessionTask 是一个...

2019-06-02 00:59:25 193

原创 iOS | 内存管理(MRC和ARC的区别以及实现)

自动引用计数(ARC)是指内存管理中对引用采取自动计数的技术。使用ARC,就无需再次键入retain或者release代码,这降低了程序崩溃,内存泄漏等风险的同时,很大程度上减少了开发程序的工作量。ARC技术使得编译器清楚目标对象,并能立刻释放那些不再被使用的对象。如此一来,应用程序将具有可预测性,且能流畅运行,速度也将大幅提升。MRC人工引用计数(Manual Reference Coun...

2019-05-31 13:25:15 931

原创 iOS | 深拷贝和浅拷贝 + assign

浅拷贝:不拷贝对象本身,仅仅是拷贝指向对象的指针(copy)深拷贝:直接拷贝整个对象的内存到另一块内存上去(mutableCopy)以下特殊情况:不可变情况下被拷贝指针重新赋值。 NSString *str1 = @"str1"; NSString *str2 = [str1 copy]; str1 = @"asdf"; NSLog...

2019-05-30 18:04:46 255

原创 iOS的MVC设计模式和MVVM的异同点以及iOS中如何实现数据绑定

设计模式:MVC在模型对象(model)中封装数据和基本行为模型对象维护应用程序的数据,并定义操作数据的特定逻辑。只要是加载的是包含有应用程序永久信息的数据,就将其放到model中。理想状况下,模型对象同用于对其进行显示和编辑的用户界面之间不应该有任何直接的关联。使用视图对象(view)视图对象可以响应用户操作,并懂得如何将自己展现在屏幕上。视图对象通常从应用程序的模型对象获取...

2019-05-24 00:27:53 1383 1

原创 系统分析与设计 || HomeWork5

HomeWork 5使用 UMLet 建模:1、根据订旅馆建模文档,Asg-RH.pdf绘制用例图模型(到子用例)给出 make reservation 用例的活动图2、根据课程练习“投递员使用投递箱给收件人快递包裹”的业务场景分别用多泳道图建模三个场景的业务过程:根据上述流程,给出快递柜系统最终的用例图模型用正常色彩表示第一个业务流程反映的用例用绿色背...

2019-05-23 16:45:51 162

原创 系统分析与设计 || HomeWork4

HomeWork4A. 简答题1. 用例的概念在软件和系统工程中,用例是一列操作或事件步骤,用于表示系统所提供的服务,它定义了系统是如何被参与者所使用的,它描述的是参与者为了使用系统所提供的某一完整功能而与系统之间发生的一段对话。同时,用例也是一组相关的成功和失败场景集合,用来描述参与者如何使用系统来实现其目标。2. 用例和场景的关系?什么是主场景或happy path?1)....

2019-05-23 15:54:28 404

原创 计算机图形学 || 基础光照之冯氏光照模型

冯氏光照模型:Basic:1. Phong光照模型:组成分量:环境光照(Ambient Lighting)即使在黑暗的情况下,世界上通常也仍然有一些光亮(月亮、远处的光),所以物体几乎永远不会是完全黑暗的。为了模拟这个,我们会使用一个环境光照常量,它永远会给物体一些颜色。// ambientfloat ambientStrength = 0.1;vec3 ambient ...

2019-05-12 16:58:40 1724 1

原创 IOS应用生命周期

IOS应用生命周期分为以下5种状态:Not running(非运行状态)应用程序没有运行或被系统终止Inactive(前台非活动状态)正在进入前台状态但是不能接受事件处理Active(前台活动状态)进入前台,能接受事件处理Background(后台状态)如果有可执行的代码则执行代码,没有或执行完毕则马上进入挂起状态。Suspended(挂起状态)冷...

2019-04-26 15:21:36 236

原创 CSAPP || Datalab

1. bitXorbitXor - x^y using only ~ and &Example: bitXor(4, 5) = 1Legal ops: ~ &Max ops: 14Rating: 1int bitXor(int x, int y) { return ~(x & y) & ~(~x & ~y);}2. tmintm...

2019-04-22 13:10:34 2185 2

原创 计算机图形学 || Camera

Basic:1. 投影(Projection):把上次作业绘制的cube放置在(-1.5, 0.5, -1.5)位置,要求6个面颜色不一致。float vertices[] = { // 顶点位置 // 颜色坐标 -2.0f, -2.0f, -2.0f, 1.0f, 0.0f, 0.0f, 2.0f, -2.0f, -2...

2019-04-18 11:10:42 851

原创 系统分析与设计 || HomeWork3

HomeWork31. 简单题(1) 简述瀑布模型、增量模型、螺旋模型(含原型方法)的优缺点,从项目特点、风险特征、人力资源利用角度思考瀑布模型:优点:能降低软件开发的复杂程度,提高软件开发过程的透明性,提高软件开发过程的可管理性。推迟软件实现,强调在软件实现前必须进行分析和设计工作。在一个阶段完成之后,我们只需要关注后续阶段。为软件开发过程提供了一个模板,这个模板使得分...

2019-04-17 23:25:45 155

原创 系统分析与设计 || HomeWork2

HomeWork21. 简答题(1) 用简短的语言给出对分析、设计的理解分析: 强调对软件产品的需求、可行性进行分析。确定要做什么功能,需要什么成本,承担什么风险,能否成功,有怎样的收益,值不值得这么做。设计:从软件或硬件层次给出一个理论上能满足需求的解决方案,并不是指具体实现,比如系统的结构、软件设计层级等。(2) 用一句话描述面向对象的分析与设计的优势面向对象的分析与设计使用相同的...

2019-04-17 23:22:44 162

原创 Blender人物骨骼绑定

Blender人物骨骼绑定1. 建立骨骼父子关系:某些物体依附到其他物体上并成为它的子物体,可由骨骼按E键直接分裂出子骨骼。2.将骨骼建立和三维模型的父子关系:3. 设置反向运动学正常的正向运动学是FK,也就是父骨骼带动子骨骼,而如果想要实现子骨骼带动父骨骼进行运动,则需要IK反向运动学。未使用IK前:分别给左手右手左脚右脚添加IK属性,同时设置链长为2,使得手脚的运动分别带动...

2019-04-15 16:31:23 24749 1

原创 计算机图形学 || Translation

Basic:1. 画一个立方体(cube):边长为4, 中心位置为(0, 0, 0)。分别启动和关闭深度测试glEnable(GL_DEPTH_TEST) 、 glDisable(GL_DEPTH_TEST) ,查看区别,并分析原因。着色器:顶点着色器:#version 330 corelayout (location = 0) in vec3 aPos;//layout (loc...

2019-04-10 15:27:21 725

原创 Blender小球弹动效果

实现小球弹动的动画效果:建模(Model something)材质(Create materials)光照 (Add lighting)&& 摄像机(Camera)动画(Animation)建模:根据要求共需要如下四个模型:圆形小球我使用的是棱角球(不用经纬球的原因是经纬球的软体碰撞效果很差,会穿过平面)。然后在编辑模式下对棱角球进行细分处...

2019-04-10 14:03:03 2376

原创 外部排序 || c++实现多路归并的败者树算法

算法概念:如果我们要对大规模文件进行排序,不能一次装入内存中,只能从外存一次次读取分别排序,而外存的IO时间复杂度很高,所以我们应该尽量减少针对外存读写的次数。如果我们只是简单地进行二路归并的话,归并路数越少归并的次数就越多,每次归并都要进行一次IO操作。所以我们考虑尽量进行多路归并,而多路归并不同于简单地二次归并只需对两组数进行指针移动归并,为了降低多路归并中归并的时间复杂度。我们考虑使用...

2019-04-01 17:33:30 1674 1

原创 c || 读入文本中的数字(忽略掉非数字的无用字符)

关于读取文本发现一个贼好用的组合 getc和ungetc组合进行字符是否合法的判断。int freadNum(FILE *fp, int *i){ int tmp; int count = 0; while ((tmp = getc(fp)) != EOF) { if ((tmp >= '0'&& tmp <= '...

2019-04-01 15:08:01 790

原创 算法 || c++实现各种经典内部排序

经典的排序算法如下:插入排序直接插入排序折半插入排序希尔排序交换排序冒泡排序鸡尾酒排序(双向冒泡)快速排序选择排序简单选择排序堆排序归并排序基数排序 / 桶排序代码实现://// main.cpp// sort//// Created by peiyu wang on 2019/3/28.// Copyright © 2019 ...

2019-03-29 18:28:09 188

原创 查找 || 哈希表的c++实现

哈希表的构造方法:直接定址法数字分析法平方取中法折叠法除留余数法随机数法处理冲突的方法:开放地址法线性探测再散列二次探测再散列伪随机探测再散列再哈希法链地址法建立一个公共溢出区装填因子:平均查找长度ASL跟哈希表构造方法和处理冲突的方法都有关。一般情况下,处理冲突方法相同的哈希表,其平均查找长度依赖于哈希表的装填因子:α=表中填入的记录数哈希表的长度...

2019-03-28 17:17:49 1029

原创 malloc动态分配内存越界问题

char *a = (char*)malloc(3 * sizeof(char));strcpy(a, "123");free(a);以上代码会报错,如果加断点调试的话会发现报错点是在free(a)上。具体原因是忘记了字符串末尾的’\0’结束字符,所以这段内存申请是存在申请不足的问题,从而使得使用时出现了堆越界问题。我们先想为什么 free()函数为什么不需要指定内存大小就能对动态申请...

2019-03-28 14:06:36 2292

原创 计算机图形学 || openGL中的camera

摄像机/观察空间摄像机位置摄像机位置简单来说就是世界空间中一个指向摄像机位置的向量。glm::vec3 cameraPos = glm::vec3(0.0f, 0.0f, 3.0f);摄像机方向这里指的是摄像机指向哪个方向。现在我们让摄像机指向场景原点:(0, 0, 0)。这里运用将两个矢量相减,就能得到这两个矢量的差,用场景原点向量减去摄像机位置向量的结果就是摄像机的指向向量。由于我...

2019-03-27 17:54:30 3101

原创 动态查找树 || 键树的c++实现(双链树)

概念:键树又称为数字查找树,树中的每个结点中不是包含一个或几个关键字,而是只含有组成关键字的符号。例如,若关键字为数值,则结点中只包含一个数位;若关键字为单词,则结点中只包含一个字母字符。这种树会给某种类型关键字的表的查找带来方便。举例:{CAI,CAO,LI,LAN,CHA,CHANG,WEN,CHAO,YUN,YANG,LONG,WANG,ZHAO,LIU,WU,CHEN}我们先针对首...

2019-03-27 15:06:58 473 1

原创 计算机图形学 || Bresenham算法画三角形边框以及圆形并用栅格化对其进行填充

Bresenham算法在进行直线的扫描转换时,由于不涉及浮点数运算,只是整数类型的运算,所以大大提高了计算速率。Basic:1. 使用Bresenham算法(只使用integer arithmetic)画一个三角形边框:input为三个2D点;output三条直线(要 求图元只能用 GL_POINTS ,不能使用其他,比如 GL_LINES 等)。Bresenham画直线的算法主要步骤是判断...

2019-03-27 13:40:08 4022

原创 动态查找树 || B-树的c++实现

B-树是一棵平衡的多路查找树,它在文件系统中很有用。一棵m阶的B-树或为空树或为满足以下特性的m叉树:树中的每个结点至多有m棵子树。若根结点不是叶子结点,则至少有两颗子树。除根结点外的所有非终端结点至少有Ceiling(m/2)(向上取整)棵子树所有的非终端结点中包含下列信息数据:(n, A0, K1, A1, K2, A2, … , Kn, An)n表示有n个结点...

2019-03-26 13:04:32 454

原创 ios开发入门

开发一个应用程序看起来复杂,实际上我们可以分为以下几个方面来看:设计用户界面定义交互实现行为整合数据我们这里需要先提一种典型的软件设计典范,也就是我们常说的MVC模式。((业务模型)Model-(用户界面)View-(页面业务逻辑)Controller)目的:将M和V实现代码分离,从而使同一个程序可以用不同的表示形式。1. 设计用户界面视图层次:视图层次定义了视图相对于其他视...

2019-03-25 15:16:37 194

原创 动态查找树 || 平衡二叉树的c++实现

在满足二叉查找树的特性上,还要满足左右子树深度之差绝对值不大于1。构造方法:插入过程中,采用平衡旋转技术获得。

2019-03-22 12:58:31 331

原创 动态查找表 || 二叉排序树的c++实现

二叉排序树的特性:若左子树不空,左子树上所有结点的值均小于它的根结点值。若右子树不空,右子树上所有结点的值均大于它的根结点值。左右子树分别为二叉排序树。删除算法:被删除的结点是叶子结点。被删除的结点只有左子树或有右子树。被删除的结点既有左子树又有右子树。对于第三种我们选择删除结点的左子树的最右结点。查找性能的分析:(平均查找长度)不同树的平均查找长度不同,即使是相同序...

2019-03-21 17:02:05 402

原创 数据结构 || 次优查找树的c++实现

参考严蔚敏老师的数据结构(c语言版),并用c++加以实现//// main.cpp// Search_Optimal//// Created by peiyu wang on 2019/3/19.// Copyright © 2019 peiyu wang. All rights reserved.//#include <iostream>#includ...

2019-03-19 23:18:05 259

原创 算法 || 快速排序的c++实现

快速排序的思想:设置两个左右哨兵,每次取最左边的数作为基准数,然后先移动右哨兵,找出第一个比基准数小的数;之后然后移动左哨兵,找到第一个比基准数大的数,此时交换两个哨兵指向的数,然后继续移动重复上述过程,直到两个哨兵重合,交换基准数与哨兵指向的数。再接着对基准数的左右两边分别重复上述过程(可用递归实现)。具体过程可参考博客:https://blog.csdn.net/adusts/articl...

2019-03-19 18:09:35 113

原创 计算机图形学 || 坐标系统的认识并创建3D旋转小物体

坐标系统(coordinate system)局部空间(物体空间)局部空间是指物体所在的坐标空间,即对象最开始所在的地方。想象你在一个建模软件(比如说Blender,Blender中通过移动浮标来决定新建物体的局部坐标)中创建了一个立方体。你创建的立方体的原点有可能位于(0, 0, 0),即便它有可能最后在程序中处于完全不同的位置。甚至有可能你创建的所有模型都以(0, 0, 0)为初始位置(...

2019-03-15 16:55:58 559

原创 系统分析与设计 || HomeWork1

HomeWork1A. 软件工程的定义引文:Software engineering is “(1) the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, that is, the ap...

2019-03-15 00:34:39 301

原创 计算机图形学 || OpenGL中的线性代数(矩阵的变换)

位移位移(Translation)是在原始向量的基础上加上另一个向量从而获得一个在不同位置的新向量的过程,从而在位移向量基础上移动了原始向量。和缩放矩阵一样,在4×4矩阵上有几个特别的位置用来执行特定的操作,对于位移来说它们是第四列最上面的3个值。如果我们把位移向量表示为(Tx,Ty,Tz),我们就能把位移矩阵定义为:[100Tx010Ty001Tz0001]⋅(xyz1)=(x+Txy+T...

2019-03-14 17:14:51 931

原创 计算机图形学 || 画简单三角形并利用ImGUI改变三角形颜色

GUI and Draw simple graphics基础知识学习来源learnOpenGL重要概念顶点数组对象(VAO)顶点缓冲对象(VBO)索引缓冲对象(EBO)图形渲染管线3D坐标转为2D像素的处理过程是由OpenGL的图形渲染管线管理的,它分为两部分工作。第一部分把3D坐标转为适应屏幕的2D坐标。第二部分把2D坐标转变为实际有颜色的像素。顶点输入标准化设...

2019-03-13 16:38:34 3403

Start Developing iOS Apps Today(objective-c)

马上着手开发 iOS 应用程序 (Start Developing iOS Apps Today)

2019-03-25

计算机视觉测试报告

计算机视觉测试报告

2018-10-19

模式识别与机器学习 艾伯特

模式识别与机器学习!

2018-09-05

空空如也

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

TA关注的人

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