- 博客(158)
- 收藏
- 关注
原创 js的内存机制(简单介绍)
js的内存机制一、 介绍简单的数据类型是放在栈中的,例如undefine,null,number,boolean,string,是直接引用的;复杂的数据类型的放在堆中的,只是在栈中存放了一个地址,通过地址在堆中寻找数据,例如array,objec等。注意点1:let a = 10let b = a b = 20这个上面的a不会受到影响还是10,b变成了20let objA = ...
2019-07-23 17:04:41
569
原创 小程序,列表多个定时器的实现
列表多个定时器的实现本篇是taro框架下的小程序实现思想:每一个定时器相当于一个time和index的对象,将多个这样的对象存入timeList数组,使用延时定时器执行方法functionA,functionA内循环timeList,让每个time减一,并判断是否需要循环,同时循环完之后更新UI;实现:// 数据timeoutFlag: any = 0timeoutList...
2019-07-15 19:47:02
1741
原创 【小程序】圆形进度的实现与注意点
圆形进度的绘制:xml 使用画布<canvas class='canvas-container' canvas-id='canvasId' ></canvas>js 调用绘制方法PROGRESS.createCanvas(item.canvasId, 5, 23, '#f9b159', '已抢', parseInt(this.formatProgress(...
2019-05-30 11:31:34
561
原创 从零学习小程序
从零学习小程序的步骤引言小程序开发的狂潮袭来,作为在互联网领域里面一个随风漂逐的小码农,增强自己本身技术领域的同时,也需要拓宽自己的视野,学习小程序是一个很好的选择。本人没有任何前端开发的经验,对于JS CCS HTML也是听过但是不了解,所以学习小程序开发,还要有几手准备。跃跃欲试的同学请记得将本文都看完上代码前的准备一、前端基础知识的了解其实也不需要太深刻的认知,只要大致了解一下...
2019-02-28 15:06:36
579
原创 写tebleView置顶快捷按钮遇到的坑
当你使用[self.tableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:YES];这个方法让ScrollView置顶的时候,发现只能上移一点点,那么肯定是你的scrollView的contentSize出现的问题。因为scrollView是根据contentSize的大小来决定上移多少的。而tablevie...
2018-06-05 14:56:24
385
原创 OCLint--从安装到放弃
由于公司有自动检测代码规范相关的需求,我这边记录一下研究过程首先通过百度知道了OCLlint这样的一个工具,准备着手安装这个工具一、安装homeBrew官网地址: https://brew.sh(官网里面有下载命令和介绍,记得命令行去官网去拿,因为地址有可能会改变) /usr/bin/ruby -e "$(curl -fsSL https://raw.githubuserco...
2018-03-16 18:30:53
2729
原创 使用iCarousel实现3D横屏滑动的效果
iCarousel介绍开源地址:https://github.com/nicklockwood/iCarouseliCarousel是一个基于scrollView的类,该类主要实现的效果类型是旋转。适用于iphone,iPad和macOS。iCarousel已经自带了很多基础效果。iCarousel作为融入项目的第三方框架,有几大优势: 1. 只需要引入iCarousel.h 和 i
2018-02-05 13:58:10
1003
原创 ios - 使用uicollectionView实现无限轮播
网上找到了使用scrollView实现的无限轮播的方法,需要自己写一个缓存池,不过没有找到collectionView的方法,在这边使用CollectionView实现,下面的demo本人跑起来完全没问题,如有问题的地方,希望大家指出来(里面有一些方法是自己封装的基类,会注入说明)。基本思路:在原有的数组最前面再插入一个最后的数据,在最后面插入一个最前面的数据,这有点类似于将 12345 变成 5
2017-03-14 16:03:10
4664
3
转载 iOS NSInvocation的使用
文/Mitchell(简书作者) 原文链接:http://www.jianshu.com/p/da96980648b6 著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”一、简介在 iOS中可以直接调用某个对象的消息方式有两种: * 一种是 performSelector:withObject; * 再一种就是 NSInvocation。第一种方式比较简单,能完成简单的调用。但是对
2016-10-26 10:02:05
490
原创 Masonry使用总结
Masonry有三个最基本的使用方法/** 添加约束 */[view mas_makeConstraints:<#^(MASConstraintMaker *make)block#>]/** 更新特定的约束 */[view mas_updateConstraints:<#^(MASConstraintMaker *make)block#>]/** 重置所有的约束 */[view mas_r
2016-09-28 12:51:21
8179
原创 Cocoa pods的安装使用以及过程中可能会遇到问题的汇总
具体什么是Cocoapods,网上都百度的到,但是总会遇到这样活着那样的问题,经过的一个下午的调试,我在这儿将问题都整合,并且记录。首先,你的ruby版本高于可适用的版本,所以,如果版本低了,需要先升级版本,具体方法如下:1.安装ram$ curl -L get.rvm.io | bash -s stable 等待一段时间后检查是否安装成功$ source ~/.bashrc $ source
2016-09-28 09:13:08
406
原创 理解消息传递机制和消息转发机制
消息传递机制在对象上传递方法叫做“传递消息”(pass a message)。消息有“名称”(name)或“选择子”(selector),可以接受参数,而且可能还有返回值。 在Object-c中,如果向对象传递消息,那就会使用动态绑定机制来决定需要调用的方法。在底层,所有方法都是普通的c语言函数,然而对象受到消息之后,究竟该调用哪个方法则完全于运行期决定,甚至可以在程序运行时改变。id retur
2016-09-27 11:07:47
3988
原创 IOS------Core Data的基本使用
在创建项目过程时,请选中一个标签为Use Core Data的复选框1. 实体和托管对象项目导航面板中,有一个名为Core_Data_Persistence.xcdatamodeld的文件,在这里面会有一个数据模型编辑器。它代替了使用代码创建NSObject的子类并让其遵循NSCoding和NSCopying的传统方式。而是现在数据模型编辑器中创建一些实体(entity),然后再代码中为这些实体创建
2016-09-25 20:41:44
345
原创 一个简单的时间获取客户端/服务器程序
TCP时间获取客户程序#include "unp.h"intmain(int argc, char **argv){ int sockfd, n; char recvline[MAXLINE + 1]; struct sockaddr_in servaddr; if (argc != 3) err
2016-09-18 11:01:01
3581
原创 自定义UIPresentationController
首先设置设置需要modal的控制器的代理;并且设置他的present模式为自定义 比如:vc.modalPresentationStyle = UIModalPresentationCustom;vc.transitioningDelegate = self;实现UIViewControllerTransitioningDelegate的代理方法;可以写一个单例来包含他们。并且VC的代理设为[o
2016-09-17 20:13:00
2316
转载 delegate,notification,KVO三种模式实现通信的优缺点
在开发ios应用的时候,我们会经常遇到一个常见的问题:在不过分耦合的前提下,controllers间怎么进行通信。在IOS应用不断的出现三种模式来实现这种通信: 1.委托delegation; 2.通知中心Notification Center; 3.键值观察key value observing,KVO 因此,那为什么我们需要这些模式以及什么时候用它以及什么时候不用它。
2016-09-16 10:07:28
1220
原创 IOS设计模式------代理
委托(delegate)也叫代理是iOS开发中常用的设计模式。我们借助于protocol可以很方便的实现这种设计模式。什么是代理?苹果的官方文档给了很清晰的解释:Delegation is a simple and powerful pattern in which one object in a program acts on behalf of, or in coordination with,
2016-09-16 10:03:30
301
原创 ios 开发的设计模式
首先,先列一下比较全面的设计模式清单,再从中挑一些着重讲一下。抽象工厂模式适配器模式对象建模模式责任链模式命令链模式复合模式装饰器模式门面模式迭代器模式中介模式备忘录模式MVC模式观察者模式代理模式接待员模式singleton模式模板方法模式设计模式分为三类:创造性、结构和行为 * 创造性模式是专门用于处理对象的创建。抽象工厂模式和单例被认为是创造性。 * 结
2016-09-14 16:36:38
264
原创 散列表(哈希表)
散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)这里我们把这种对应关系f称为散列函数,又称为哈希函数。按照这个思想,采用散列技术将记录存储在一块连续的存储空间中,这块连续存储空间称为散列表或哈希表散列函数的构造方法直接定址法数字分析法平方取中法折叠法除留余数法随机数法总之,现实中,应该视不同的情况采用不同的散列函数。
2016-09-08 10:24:51
537
原创 多路查找树(B树)
2-3树2-3树就是一棵多路查找树:其中的每一个结点都具有两个孩子或三个孩子。 一个2结点包含一个元素和两个孩子,一个3结点包含两个元素和三个孩子2-3-4树2-3-4树其实就是对2-3树的概念扩展,包括了4结点的使用。一个4结点包含小中大三个元素和四核孩子。B树B树是一种平衡的多路查找树,2-3树和2-3-4树都是B输的特例,结点最大的孩子数目称为B树的阶,因此2-3树是3阶B树,2-3-4树是
2016-09-08 09:57:49
434
原创 平衡二叉树
平衡二叉树,是一种二叉排序树,其中每一节点的左子树和右子树的高度差之多等于1。我们将二叉树上结点的左子树深度减去右子树深度的值称为平衡因子BF距离插入结点最近的,且平衡因子的绝对值大于1的结点为根的子树,我们称为最小不平衡子树。平衡二叉树的实现原理平衡二叉树构建的基本思想就是在构建二叉排序树的过程中,每当插入一个结点时,先检查是否因插入而破坏了树的平衡性,若是,则找出最小不平衡子树。在保持二叉排序树
2016-09-08 08:50:33
353
原创 改进的排序算法
shell排序void ShellSort(int *a){ int increment = MAXSIZE; while (increment > 1) { increment = increment / 3 + 1; for (int i = increment; i < MAXSIZE; i++) { if(a[i] <
2016-09-06 11:23:42
361
原创 简单的排序算法
冒泡排序void swap( int *i, int *j){ int temp = *i; *i = *j; *j = temp;}void BubbleSort(int *a){ for (int i = 0; i < MAXSIZE; i++) { for (int j = MAXSIZE - 1; j >= i; j--) {
2016-09-05 10:56:44
226
原创 重写NavigationControllerde的一个具体事例
首先在initialize方法里设置item的主题样式+ (void)initialize{ // 设置整个项目所有item的主题样式 UIBarButtonItem *item = [UIBarButtonItem appearance]; // 设置普通状态 // key:NS****AttributeName NSMutableDictionary *t
2016-09-02 15:33:32
258
原创 二叉排序树
二叉排序树查找操作typedef struct BiTNode{ int data; struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;/** * 递归查找二叉排序树T中是否存在key * * 指针f指向T的父结点,其初始调用值为NULL * 若查找成功,则指针p指向该数据元素结点,并返回TRUE * 否则,指针p
2016-09-02 11:30:53
197
原创 基本查找算法
顺序表查找/** 顺序表查找 */int Sequential_Search(int *a, int n, int key){ int i ; for (i = 0; i < n; i++) { if(a[i] == key) return i; } return -1;}/** 顺序表查找改进 */int Se
2016-09-02 10:23:31
276
转载 最小生成树-Prim算法和Kruskal算法
Prim算法1.概览普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)),且其所有边的权值之和亦为最小。该算法于1930年由捷克数学家沃伊捷赫·亚尔尼克(英语:Vojtěch Jarník)发现;并在1957年由美国计算机科学家罗伯特·普里姆(英语:Rob
2016-09-02 09:20:23
271
原创 设置TabBar的字体颜色大小注意细节
NSMutableDictionary *textAttr = [NSMutableDictionary dictionary]; textAttr[NSForegroundColorAttributeName] = [UIColor whiteColor]; [[UITabBarItem appearance]setTitleTextAttributes:textAttr forS
2016-09-01 17:04:19
10237
原创 赫夫曼树的定义与原理
赫夫曼:从树中一个结点到另一个结点之间的分支构成两个检点之间的路径,路径上的分支数目称做路径长度。树的路径长度就是从树根到每一结点的路径长度之和。如果考虑到带权的结点,结点的带权的路径长度为从该结点到树根之间的路径长度与结点上权的乘积。假设有n个权值,构造一棵有n个叶子结点的二叉树,每个叶子结点带权Wk,每个叶子的路径长度为lk,其中带权路径长度WPL最小的二叉树称作赫夫曼树。也称“最优二叉树”。赫
2016-09-01 09:40:06
963
原创 数据结构------二叉树
树是N(N>=0)个结点的有限集。n=0时称为空树。在任意一棵非空树种:1.有且仅有一个特定的称为根(root)的结点;2.当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2……Tm,其中每一个集合本身又是一棵树,并且称为根的字数(SubTree).结点拥有的子树数称为结点的度。度为0的结点称为叶结点或终端节点;度不为0的结点称为非终端结点或分支结点。除根结点之外,分支结点也称为内部
2016-09-01 09:13:21
325
原创 TabBarItem设置图片超出tabbar范围
苹果定义TabBarItem最大接受的是60*60的图片,如果你设置的图片超出或者偏大了。那么就是了能你用了@*2.png或者@*3.png的图片了。
2016-08-30 18:54:16
2349
原创 用appDelegate的全局变量
全局变量 AppDelegate可以在整个应用程序中调用,在其他页面中可以使用代码段获取AppDelegate的全局变量:AppDelegate *appDelegate=[[UIApplication sharedApplication] delegate]; 因此可以在AppDelegate.h中定义需要全局使用的变量。
2016-08-30 17:55:00
607
原创 自定义tabBar的使用
首先,新建一个自定义的tabbar 继承UITabBar#import "ZGTabBar.h"@interface ZGTabBar()@property (nonatomic, weak) UIButton *plusBtn;@end@implementation ZGTabBar- (id)initWithFrame:(CGRect)frame{ self = [super in
2016-08-30 17:50:32
670
原创 栈的应用------后缀(逆波兰)表示法
我们将“9+(3-1)3+10/2”变为“9 3 1 - 3 + 1 0 2 / +”的转换称为,中缀表达式向后缀表达式的转换转换规则:从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,即成为后缀表达式的一部分;若是符号,则判断其与栈顶符号的优先级,是右括号或优先级低于栈顶符号(乘除优于加减)则栈顶元素依次出栈并输出,并将当前符号进栈到最终输出后缀表达式为止计算规则:从左到右遍历表达式的每个
2016-08-30 09:55:28
361
原创 裴波那契数列与递归
裴波那契数列就是一个序列,这个数列有个十分明显的特点,那是:前面相邻两项之和,构成了后一项,例如:1,1,2,3,5,8,13。我们用迭代的办法如何实现这个数列void Fbi(int n){ if(n == 0) printf("please input n > 0\n"); if(n == 1) printf("1\n"); else i
2016-08-30 09:22:42
2452
原创 栈与队列
栈的定义:栈是限定仅在表尾进行插入和删除操作的线性表我们把允许插入和删除的一端称为栈顶(TOP),另一端称为栈底(Bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出的线性表,简称LIFO结构栈的插入操作,叫做近栈,也称为压栈、入栈 栈的删除操作,叫做出栈,也有的叫做弹栈struct SA
2016-08-28 20:54:33
406
原创 链表------创建删除增加遍历
LINKED LIST创建链表#include <stdio.h>#include<stdlib.h>#include<time.h>struct ListNode{ int data; ListNode *next;};void CreateListHead(ListNode **head, int n){ ListNode *p; ListNode *q
2016-08-28 16:16:23
353
原创 算法时间复杂度
算法的定义:是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。算法特性输入输出有穷性确定性可行性算法设计要求正确性可读性健壮性时间效率高和存储量低时间效率的度量方法事后统计方法:这种方法主要通过设计好的测试程序和数据,利用计算机计时器对不同算法编制的程序的运行时间进行比较,从而确定算法效率的高地。事前分析估算方法:在计算机程序编制前
2016-08-28 11:05:15
511
原创 数据结构------基本概念
数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理。也被称为记录数据项:一个数据元素可以由若干个数据项组成。 数据项是数据不可分割的最小单位数据对象:是性质相同的数据元素的集合,是数据的子集。不同数据元素之间是不独立的,而是存在特定的关系,我们将这些关系称为结构。 数据结构
2016-08-28 10:10:35
465
原创 ios清除缓存的两种有效方法
利用第三方框架SDWebImage获知缓存大小 [SDImageCache SharedImageCache].getsize清除缓存 [[SDImageCache SharedImageCache] clearDisk]利用文件管理创建文件管理者 [NSFileManager defaultManager] 获取路径 [mgr attributesOfItemAtPath:cach
2016-08-26 19:36:55
1680
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人