- 博客(196)
- 资源 (10)
- 收藏
- 关注
原创 YYModel源码解读
YYModel 是一个非常优秀的数据转模型,模型转字典与JSON串的库。而且代码量非常少。可见作者架构,抽象,对OC理解已经到了一个很高的高度。希望站在巨人的肩膀上有一天自己也能达到。 YYModel 库结构 类 含义 YYClassInfo 类信息 YYModel 管理头文件,使用过程中引入这一个即可 NSObject+YYModel 顶级类添加转换接口,方便进行转换 字典数据转换为对象,将如下字典数据映射到相应的模型上,示例代码如下: 字典数据: NSDiction
2020-08-08 18:14:40
685
原创 YYImage 播放动图原理分析
#一、通常使用动图有以下几种方式 GIF GIF是一种位图。位图的大致原理是:图片由许多的像素组成,每一个像素都被指定了一种颜色,这些像素综合起来就构成了图片。GIF采用的是Lempel-Zev-Welch(LZW)压缩算法,最高支持256种颜色。由于这种特性,GIF比较适用于色彩较少的图片,比如卡通造型、公司标志等等。如果碰到需要用真彩色的场合,那么GIF的表现力就有限了。GIF通常会自带一个调色板,里面存放需要用到的各种颜色。在Web运用中,图像的文件量的大小将会明显地影响到下载的速度,因此我们可
2020-07-25 20:32:41
1761
原创 Https是如何保证通讯安全的
这个问题困扰了很久,最近看了资料,总结一番,总结不到位的地方还请指出 http是明文传输而https加密传输(http的发展历史及各版本的差异,报文头这里就不介绍了,有兴趣的同学自己查阅资料)这是它们最大的区别。那https是如何达到安全传输的呢,这个需要先了解下http与https的osi层次结构(图来源《图解http》) 很明显https 是在tcp与http之间添加了一层ssl(Secure Sockets Layer)层,俗称安全套接层 SSL释义:请参看这里博文,有详细讲解: https:.
2020-05-29 21:00:28
949
原创 IOS自定义键盘(swift/Objc)
效果图 自定义键盘的核心思想 设置UITextFiled 的InputView 切换键盘的思路为重新设置UITextFiled 的InputView然后再调用textFiled?.reloadInputViews() *剩下的就是按键的布局与代理设置了 swift版本采用策略模式实现,Objc版本使用常规模式实现 swift版本的策略模式实现的角色划分如下: 策略管理类–键盘管理类KeyboardMgr 通用策略类–键盘基类KeyboardBaseView 具体的策略类–数字键盘、随机数字键盘、
2020-05-27 15:43:33
1490
1
原创 IOS 文本滚动标签效果(Objc/Swift)
实现效果 实现原理:动画改变文本的y坐标,同时使用把移出父布局的视图立即移到父视图的下方,使用一个临时UIView来交替上下两个视图,达到利用的效果 实现核心代码如下: Object-c版本: #import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN typedef void(^OnClickListener)(NSString* title); @interface ScrollLabel : UILabel @property(nonatom
2020-05-21 20:17:50
1170
原创 Object-c基本排序(快排,直接选择,直接插入)
直接插入排序算法思想: 插入排序首先考虑数组的前两个元素,即data[0]与data[1],如果次序颠倒了,就交换。然后考虑data[2],将其插入到前面已经排序好的位置上,依次到最后一个元素为止。 直接插入排序代码如下: -(void)insertSort{ printf("直接插入排序之前数组结果为:\n"); [self.array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){ .
2020-05-14 18:17:54
380
原创 Object-c 二叉树的遍历(前序、中序、后序以及非递归遍历)
二叉树的结构 二叉树是树的特殊形式,它包含结点值(可空),左孩子结点(可空),右孩子结点(可空)。空树即三者均为空,当任一结点只有左孩子或右孩子时,这颗树的结构就与链表类似了。 定义一个二叉树的结点代码清单如下: #import <Foundation/Foundation.h> NS_ASSUME_NONNULL_BEGIN @interface TreeNode : NSObject @property(nonatomic,assign) NSInteger value; @pro.
2020-05-12 21:01:00
11993
原创 Object-C 栈的应用实现两个大数相加
对于两个非常大的数,如1233333333333333333333333333+9090909090909090909090090909909090909090909090是无法直接相加的。因为已经超过了整型变量的限制可以使用下面代码获得基本类型在运行平台的存储范围: NSLog(@"72----------byte:%ld max :%ld min:%ld",sizeof(NSInteger),NSIntegerMax,NSIntegerMin); 为了解决这个问题,可以将这种非常大的数据看成.
2020-05-11 16:46:48
453
原创 Object-c 符号匹配的实现
基本思想: 对于读入的字符串,按顺序依次读取一个字符,如果该字符为左分隔符,则将其存入栈中。如果发现一个右分隔符,则与栈中弹出的元素相比较。如果二者相互匹配,则继续处理将标志match修改为true。反之中断处理并提示出错同时将标志macth修改为fasle。到达字符串末尾时检测栈是否为空与标志的状态得到匹配的最终结果 BOOL result = stack.isEmpty() && 核心代码如下: -(BOOL)match:(NSString *)str{ BOOL.
2020-05-11 14:49:00
289
原创 Object-c 实现迷宫
关于本例子中用到的栈结构请参看:https://www.jianshu.com/p/e535df1a86d8 迷宫分析: 迷宫通常是用一个二维数组来表示,通路以0表示,不通以1表示,出口位置以e表示,起点为s表示(如下图所示)。 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 0 e 1 1 0 0 s 1 1 1 1 1 1 1 1 程序中使用1个栈与一个与迷宫数组规格一样的数组,一个用来有存储下一步待走的索引,以上图为例当前s在二维数组中的索引..
2020-05-10 19:54:59
306
原创 Object-c 实现一个栈
栈释义 栈是一种线性数据结构,存储以及查找数据时只能访问栈的一端。类似于餐厅的盘子,新盘子放到这一叠盘子最上面,取的时候也是从最上面开始。最后放的盘子的也是最先被取走的那个。因此栈称为后进先出(Last in First Out )。 下列演示了一系列的栈的操作: 栈中至少有一个元素的时候才能取出,否则应当给予空栈的提示。只有空间足够的时候才能再添加一个元素,否则应当给予栈满的提示。因些根据这些状态对于栈而言通常操作包括: 栈空判断 栈满判断 弹出栈顶元素 入栈操作 本例使用数组实现.
2020-05-10 18:19:04
285
原创 object-c 队列的两种实现方式(数组+链表)
队列是一个简单的等待序列,入队(新添加)的元素放在尾部,出队(删除的元素)从第一个开始。队列是先进先出结构(First In First out) 构造一个队列通常需要包含以下几个接口 初始化,这个过程用来设定队列的大小。 入队 出队 判断队空 判断队满 实现方式一:数组实现 例:有一个序列 1,2,3,4,5依次入队。在队列的表现形式如下: 初始时,假设队列空间大小为5。 1入队时:|1|0|0|0|0| 2入队时:|1|2|0|0|0| 3入队时:|1|2|3|0|0| 4入队时:|.
2020-05-09 17:15:23
988
原创 《深入理解Java虚拟机 JVM高级特性与最佳实践》读书笔记--JAVA自旋锁与自适应自旋锁
自旋锁释义: 请求锁的线程(假设为线程A)再未获得锁的时候,不进入阻塞状态,而是让它「再执行一会」即占用CPU一会,看看持有锁的线程是否很快释放锁资源。但是为了让这个线程A进入「等待」的状态,需要让它执行一个忙循环(自旋),这项技术称为自旋锁。 自旋锁的优劣势分析 线程A的状态切换是由系统进行的,而这个过程则会消耗系统资源的,如果请求锁的「忙循环」时在一个很小的时间片之内就得到锁,...
2020-05-08 16:19:18
401
原创 Object-c单链表的操作
如果一个节点指向另一个节点的指针作为数据成员,那么多个这样的结点可以连接起来用一个变量能够访问整个节点序列。这样的节点序列就是最常用的链表实现方法。链表是一种由节点组成的数据结构,每一个节点都包含某些信息及指向链表中的另一个结点的指针。如果序列中的节点只包含后继节点的链接,该链表则称为单向链表。 链表包含两个数据成员:info 与 next。info用于存储数据,next用于将节点链接起来...
2020-05-07 15:29:38
361
原创 Java 多线程Latch模式-对比IOS 的线程依赖
Latch 模式背景释义: 有A、B、C、D若干个并行任务,现在F任务需要等ABCD全部完成之后再进行,只要其中任一一个并发任务未执行完F任务就阻塞或者抛出超时异常、取消任务 代码翻译: 抽象任务接口约束类 public abstract class Latch { protected int limit; public Latch(int limit){ ...
2020-04-29 12:19:52
19548
原创 IOS-使用UICollectionView+UIScrollView实现悬停、导航条跟随列表滚动滑动
本例子主要实现2个主要功能 悬停 UIScrollView 的中Item随着滚动列表联动变化 效果图: 悬停的变化通过 监听UIConllectionView ContentSet变化再改变待悬停视图和y坐标即可,核心代码如下: - (void)scrollViewDidScroll:(UIScrollView *)scrollView{ self.pageSuperVi...
2020-04-28 20:20:55
23087
2
原创 java 多线程-Balking模式(犹豫模式)
#原文案例来自于《java 高并发编程详解》 Balking 模式释义 比如我们在用word 编写文档的时候,每次文字编辑都代表着文档的状态发生了改变,除了我们手动使用ctrl+s保存文档以外,word还可以设置自动保存。如果word自动保存文档的线程正在准备执行保存动作的时候,恰好我们手动进行了保存动作,那么自动保存文档的线程将会放弃本次保存动作—摘自《java 高并发编程详解》 下面用代码...
2020-04-26 09:16:08
302
原创 Java Balking模式
#原文案例来来自于《java 高并发编程详解》 Balking 模式释义 比如我们在用word 编写文档的时候,每次文字编辑都代表着文档的状态发生了改变,除了我们手动使用ctrl+s保存文档以外,word还可以设置自动保存。如果word自动保存文档的线程正在准备执行保存动作的时候,恰好我们手动进行了保存动作,那么自动保存文档的线程将会放弃本次保存动作—摘自《java 高并发编程详解》 下面用代...
2020-04-25 22:23:39
19471
原创 Java多线程- 自定义Future模式
Future 模式释义 来源于《Java 高并发编程详解》 假设有个任务需要执行比较长的时间,通常需要等待任务执行结束或者出错 才能返回结果,在些期间调用者只能陷入阻塞苦苦等待,对此Future设计模式提供了一种凭据式的解决方案。在日常生活中凭据的使用很常见,比如你去服装店想订做一套西装,但又不想将宝贵的时间花在漫长的等待设计师制做西装的过程中,于是裁缝给你开了一张凭据,上面言道: 定做西...
2020-04-25 17:05:31
21118
原创 Android/IOS 使用路径实现酷炫动画
https://s31.aconvert.com/convert/p3r68-cdx67/vznv1-6aig0.gif
2020-04-08 17:14:36
7875
原创 IOS--简易的窗帘动画
IOS–简易的窗帘动画 使用原理 UIview的动画控制窗帘的高度 #import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN typedef NS_ENUM(NSInteger, ToastAnimtype) { DONE, RELOCATION, PAWER_SAVE, }; @interface Win...
2020-03-12 15:48:01
588
原创 ReactNative 手绘环形统计图
一、效果图 二、绘图使用了RN中的ART , 对于每段的计算需要注意 1.角度计算应该转换为弧度,转换公式如下: /** * 角度转弧度 * @param angle * @returns {number} */ degress2Radians(angle){ return angle / 180.0 * 3.1415926; ...
2019-04-28 20:32:28
2026
原创 IOS 编辑框焦点失去与获取时提示文本的的动画
一、本文实现的效果如图 二、实现思路 扩展一个UIView ,内部使用一个UILabel与UITextFiled,其中UILabel 使用动画控制缩放与位移,在UITextFiled 获取焦点时启动动画,进行UILabel 缩放并往上移,失去焦点且文本内容为空时再使用动画控制UILabel恢复到原来的状态。源码如下: #import <UIKit/UIKit.h> NS_ASSUM...
2019-04-25 20:07:38
406
原创 React Native 滑动组件
一、先放上效果图镇楼 二、封装这种组件,算是常规操作,练的多了,就有思路了。这里简单的说下封装的思路 动态创建中间的指示文本,一般是根据数组的内容来创建这些文本,有些时候,在创建好了之后我们还需要去获得这些组件的引用方便丢相应的接口出去,典型的如果,为每个控件绑定点击事件,在原生android与ios还好,创建好组件对象之后,再用一个对象数据将其存入起来,之后从这个数组中获取即可,但是在Re...
2019-04-20 11:26:23
2612
原创 ReactNative随手势滑动的进度条
一、效果图 二、 这里没什么分析的,主要是处理手势事件,然后把手指滑动的x座标传递上面的滑动文本即可,权当一个demo使用 直接放上源码: import React from 'react'; import {View, Dimensions, StyleSheet, PanResponder, Text,ProgressViewIOS,ProgressBarAndroid,Platform} ...
2019-04-03 10:39:20
2299
原创 ReactNative FlatList 支持多类型Item的MVC写法
一、无图无真相,放上效果图先 二、封装的思路可参考之前的文章:https://blog.csdn.net/d06110902002/article/details/77929490 三、数据模型基类: /** * FlatList 的数据模型基类 * 对于基要展示的所有数据均扩展此类 */ import ModelType from './ModelType'; export defa...
2019-04-02 11:26:22
20990
原创 移动端实习生菁英计划
一、菁英计划发展方向 二、第一阶段计划 代码托管工具与项目背景介绍(耗时1天) 项目框架介绍(耗时1-5天) 三、第二阶段:项目开发语言基础学习 java、Object-c、Swift语言基础学习(5-15天掌握一门开发语言) 项目框架介绍(耗时1-5天) 参考书籍: 《java核心编程》 《java编程思想》 《Java多线程编程核心技术》 《实战Java高并发程序设计》 《Jav...
2018-11-28 18:29:05
824
原创 Android/IOS-使用贝赛尔曲线画曲线图与填充图
一、按照惯例先放上效果图 二、从这个效果图来看需要画下列几部分 座标轴: 画座标轴,这个相信比较简单,画2条直线即可,但是如果座标轴的刻度随着输入的数据而变化的话,估计需要花点时间了。这样封装的目的就是为了在固定的区域可以展示不同的数据范围。如上图,横轴表示的是1-31之间的数,竖轴表示的是0-6000之间的数。但是来了一组横轴数据范围为10-100每个刻度为10,竖轴范围为0-1200每个...
2018-11-08 10:13:40
20048
原创 IOS中使用GCD与信号量机制实现读者写者(读者优先)
一、读者写者问题是操作系统中非常经典的线程同步问题,像jdk中有读写锁用来处理这类问题。在读者写者模式中又有几种不同的同步模式,如: 读者优先 式的读者写者类型 写者优先 式的读者写者类型 公平竞争 式的读者写者类型 但不管是哪种类型,在处理 这个问题时都遵循下列几个互斥条件,否则会出现“假死”即都处于等待,或出现脏数据问题。 允许读者–读者之间同时执行读操作临界资源 不允许写者–写者...
2018-11-01 15:27:44
19907
原创 java多线程--简易使用同步锁实现一对一交替打印
一、本例需要分析的地方不多,只需要使用一个同步锁+一个计数器就能搞定,直接奉送源码吧: package com.example.liuxiaobing.statemodel.mutil_thread.onebyoneprint; /** * Created by liuxiaobing * Date on 2018/9/23 * Copyright 2013 - 2018 Qian...
2018-09-23 11:56:05
20119
1
原创 Cordova-android系列源码解读(一)加载h5页面流程
Cordova是一个比较成熟的跨跨平台框架,核心思想就是Native提供h5容器,业务逻辑由h5处理,因为h5是直接跑在浏览器中的,既而达到跨平台目的 本文旨在梳理cordovar第一个流程,在android平台加载h5过程。 先放出目的:加载h5是通过WebView.loadUrl控制实现的 ...
2018-09-01 15:19:21
1323
原创 mac搭建cordova环境流程
问题来源:MAC 安装cordova 安装nodejs 8.0.0 之后,用命令:sudo npm install -g cordova ionic 安装cordova 和 ionic 然后用命令:cordova -v 查看版本号 ,然后报了如下错误日志。必须用 sudo cordova -v 才可以用。 wjwdeMacBook-Pro:eamWeb wjw$ cordova -v /u...
2018-09-01 13:47:33
1192
原创 软件产品发布流程
软件产品发布流程 一 目的 主要用于指导从项目到产品,从产品到市场的发布过程同时指导项目组开展产品发布。已实现下列目的: - 指导发布活动,有效控件产品发布过程; - 有效控制和追踪产品版本; 二 范围 适用本司所有软件产品的发布。 三 涉及人员 产品经理: 负责软件的设计与发布,并跟进项目研发状态同时审核项目发布过程。 研发工程师: ...
2018-08-22 15:11:49
27319
原创 MVC框架模式在移动开发中的实践
一、MVC框架模式介绍: MVC (Model View Controller),是模型(model)视图(view)控制器(controller)的缩写,一种软件设计模式,用于组织代码用一种功能模块和数据模块分离的方法 层次角色职责划分如下: Model:模型层,负责处理数据的加载或者存储 View:视图层,负责界面数据的展示,与用户进行交互 Controller...
2018-08-02 16:38:37
1022
转载 AspectJ/AOP 在android上的实践小结
这编文章写的很详细,在此转载: https://www.jianshu.com/p/f90e04bcb326 本文测试的效果图如下: 本文要当日记类,方便下次用到的时候用: package com.haocai.aopdemo; import android.Manifest; import android.os.Bundle; import android.support.v7....
2018-08-01 20:22:46
379
原创 Object-c并发三曲---NSOperation的总结
// // ViewController.m // MultiThread // // Created by liuxiaobing on 2018/7/27. // Copyright © 2018 liuxiaobing. All rights reserved. // #import &quot;ViewController.h&quot; #import &quot;CustomNSOperation.h&quot; ...
2018-07-27 16:03:21
311
翻译 Object-c Block分析
本文是来自一位大神的分析博客,俺找不到他的博客地址了: 代码记录下来当作 自己的笔记吧 // // main.m // BlockDemo // // Created by liuxiaobing on 2018/7/25. // Copyright © 2018 liuxiaobing. All rights reserved. // #import <Foundatio...
2018-07-26 10:44:38
311
RetrolFit+rxjava + okHttp与服务 交互的例子+取消retrolfit网络请求
2016-11-22
openGL搭建环境所需资源2
2017-04-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅