- iOS序列化的进阶方案——Protocol Buffer
落影loyinglin
前言最近项目需要,引入ProtocolBuffer来做对象序列化。正文ProtocolBuffer是Google出的序列化数据格式,下面简称pb。我们更常用的序列化数据格式应该是json,json和pb本质上都是对象的序列化和反序列化,在项目中json也是前后端通信的主要数据格式。在本地存储时,我们可以使用YYModel将对象转成json对应的NSData,也可以使用NSKeyedArchiver
- YYCache 源码学习总结
科仔
YYCache内存分为内存缓存和磁盘缓存内存缓存1.内存缓存实现通过CFMutableDictionaryRef字典实现数据的存储查找2._YYLinkedMap是一个双向链表,用于实现LRU算法,当内存不足的时候最近最少用到的数据将被清除。3.YYMemoryCache是线程安全的,通过pthread_mutex_lock实现的。pthread_mutex_lock互斥锁经过苹果的优化目前是效率
- YYCache之《一》磁盘缓存的简单使用
SpringAlways
缓存是ios开发中非常常见的,今天就介绍一个优秀的缓存开源库:yycache.yycache分为两部分:磁盘缓存和内存缓存。先介绍磁盘缓存:创建缓存-(nullableinstancetype)initWithPath:(NSString*)pathinlineThreshold:(NSUInteger)thresholdNS_DESIGNATED_INITIALIZER;1、路径:路径一旦创建,
- YYModel
00after
原文史上最全YYModel的使用详解一篇文章全吃透—史上最全YYModel的使用详解Json转模型(nullableinstancetype)yy_modelWithJSON:(id)json;更新model,只更新json中有的数据使用JSON对象设置接收器的属性。@discussion将忽略json中的任何无效数据(BOOL)yy_modelSetWithJSON:(id)json;开篇说明:
- ESJsonFormat 更新 Xcode10的兼容 以及 swift4兼容
piupiu啊piupiu
ESJsonFormatformac一个很好用的应用,自动根据json数据导出对应的数据模型文件支持Swift、OC、YYModel、MJExtension但原作者很久没有进行维护了,在Xcode10上有泛型不支持、swift文件格式不正确等问题,本人闲暇之余试着维护了一下本人维护地址github地址,安装文件在ESJsonFormatForMac->Application->ESJson_DMG
- iOS YYCache 源码解析 观后感
咖啡豆8888
前言开发经常会用到数据的存储,自定义对象保存等操作。下面我们来介绍下目前最火的存储框架YYCache,他的存储使用的双向链表的存储方式、线程锁、数据库等知识。希望提升下自己的能力。YYCache的使用方法我们这里就不介绍了,各位可以自行百度。缓存架构缓存架构图YYCache从YYCache源码存数据:当调用存储方法的时候会先写入内存缓存方法,再写入磁盘缓存。//先存入内存再存入磁盘-(void)s
- YYCache源码阅读总结
foreverSun_122
为什么要有缓存? 使用缓存的2个主要原因:降低延迟:缓存离客户端更近,因此,从缓存请求内容比从源服务器所用时间更少,呈现速度更快。降低网络传输:副本被重复使用,大大降低了用户的带宽使用,其实也是一种变相的省钱(如果流量要付费的话),同时保证了带宽请求在一个低水平上,更容易维护了。缓存的策略: 按需缓存:应用把从服务器获取的内容以某种格式存放在本地文件系统,之后对于每次请求,检查缓存中是否存在这
- YYImage 播放动图原理分析
劉胡來
一、通常使用动图有以下几种方式GIFGIF是一种位图。位图的大致原理是:图片由许多的像素组成,每一个像素都被指定了一种颜色,这些像素综合起来就构成了图片。GIF采用的是Lempel-Zev-Welch(LZW)压缩算法,最高支持256种颜色。由于这种特性,GIF比较适用于色彩较少的图片,比如卡通造型、公司标志等等。如果碰到需要用真彩色的场合,那么GIF的表现力就有限了。GIF通常会自带一个调色板,
- 2021-01-01T00:00:00.000+0000 转换 NSDate
简书花花
服务端返回时间类型:2021-01-01T00:00:00.000+0000转换NSDate用YYModel转,接收类型设置为NSDate即可。举例@property(nonatomic,strong)NSDate*birthday;image.png
- 美摄SDK调试
马维启
workspace'VideoEditor.xcworkspace'target'VideoEditor'dopod'YYModel'pod'YYWebImage'pod'YYImage/WebP'endtarget'NvShortVideoCore'doPodsforNvShortVideoproject'NvShortVideoCore/NvShortVideoCore.xcodeproj'p
- iOS反向编译出model类所有属性并赋值
isaaczcbj
目前开发中,面对大量的返回参数,几乎都是用YYModel来处理model类,但是有时难免要对model类的属性进行特殊处理,这里提供了一种通过运行时来处理model属性的方法:#import"TR_Model.h"#import@interfaceTR_Model(Extension)-(void)displayCurrentModleProperty;@end具体逻辑处理如下所示:#import
- IOS 内联函数Q&A
我是繁星
Q:YYModel中有一个宏#defineforce_inline__inline____attribute__((always_inline))并且大量函数都是以内联的形式存在的,那么内联函数有什么用,并且为什么要这样写呢?A:高级语言都是经过编译器编译成c或汇编语言的,inline__inline____attribute__((always_inline))其实是一条编译器指令,编译器会将函
- YYCache源码学习
崔又淇
通常缓存是由内存缓存和磁盘缓存组成的,内存缓存容量小但是存取速度快,磁盘容量大但是存取速度慢。内存缓存YYMemoryCache包括数量限制、容量限制、时间限制、内存警告、退出后台清空缓存;采用了双向链表和字典实现了LRU淘汰算法;优化同步访问的性能,使用了pthread_mutex_lock锁来保证线程安全;磁盘缓存YYDiskCache采用了SQLite配合文件的存储方式;采用了LRU淘汰算法
- TKDragView_iOS开发常用第三方开源框架 持续更新中...
weixin_39567870
TKDragView
网络请求AFNetworkingAlamofireAFNetworkingswift版本YTKNetworkAFNetworking的封装YQNetworking基于AFNetworking3.x封装网络请求功能,API面向业务层更加友好XMNetworkingAFNetworking的封装PPNetworkHelperAFNetworking3.x与YYCache封装,一句代码搞定数据请求与缓存
- 使用 use_frameworks! 后项目YYCache库报错 Duplicate interface
sanjieshenwu1987
问题总结iOS
旧的项目更新库文件,新的库使用了@import,所以必须在pod中添加‘use_frameworks!’。然后YYCache就报错Duplicateinterface…修改库的导入方式,问题解决。//.pch文件中//原来的导入方式#import//改为#import转载:iOSDuplicateinterfacedefinitionforclass‘DDLog‘第三方库报错
- YYImage源码浅析
好有魔力
简介YYImage是与UIImage完全兼容的子类,YYImage扩展了UIImage使其支持WebP,GIF,APNG图片数据的解码.它也支持NSCoding协议来进行归解档.YYImage的接口@interfaceYYImage:UIImage//使用图片名称加载图片,此方法不会缓存图片+(nullableYYImage*)imageNamed:(NSString*)name;//使用图片路径
- iOS 14 YYAnimatedImageView加载图片失败处理
马拉萨的春天
基础知识点新知识点ioscocoamacos
升级到iOS14,之前使用的YYimage框架全部不能正常显示图片,当然动态图正常显示,静态图无法显示;原因是:14.0系统调用了下面方法,YYAnimatedImageView没有正确处理-(void)displayLayer:(CALayer)layer;1可以用以下方式处理:方式一:更改YYimage源码,在YYAnimationImageView.m中-(void)displayLayer
- dyld: Library not loaded: @rpath/YYModel.framework/
Gavin_盖文
导入库编译没问题,运行报了错报错日志报错日志截图解决方案解决步骤截图不清晰的可以留言,有错误也欢迎指出。
- iOS 一些框架源码解析
Zakerberg
YYCache源码解析YTKNetwork源码解析MJRefresh源码解析VVeboTableView源码解析PNChart源码解析SDWebImage源码解析
- YYModel 2019-06-24
雪里的懒猪
前言同项目中同事使用YYModel,比原生的要简单高效许多!!!YYModel是YYKit的高效组件之一,在实际场景中的非常实用,运用于项目中使用MVC或MVVM架构时,使用model做数据处理。自动转换模型数据自动检测数据安全性,避免carch无需继承其他类,使用方便适用model各种数据加载运用场景在使用之前先展示一些YYModel比较常用的方法,后面会具体介绍用法//字典转模型(nullab
- ios三方库解析
墨徕
YYCache源码解析YTKNetwork源码解析MJRefresh源码解析VVeboTableView源码解析PNChart源码解析SDWebImage源码解析
- iOS项目中Json转Model的坑
抢手的哥
Json转Modeljson转model,是个开发都会遇到过。都已经9102年了,谁还不会用个第三方框架搞。拿起键盘就是干!就是干.png打开podfile,把大名顶顶的YYModel写上,podinstall一下。再用上ESJsonFormat,直接根据json,都能把model生成好。特殊处理啥?返回的字段值不是我们所需的在日常开发中,经常会遇到一些接口字段返回的值,并不是我所需要的类型的情况
- 转:YYModel 的使用场景和详解
小小小Lucky
YYModel的使用场景和详解凉秋落尘关注2.32018.07.1716:09*字数1054阅读12818评论5喜欢32前言YYModel是YYKit的高效组件之一,在实际场景中的非常实用,运用于项目中使用MVC或MVVM架构时,使用model做数据处理。自动转换模型数据自动检测数据安全性,避免carch无需继承其他类,使用方便适用model各种数据加载运用场景在使用之前先展示一些YYModel比
- iOS源码阅读 —— YYModel
GG266
YYModel作为一个iOS/OSX模型转换框架,为JSON与数据模型之间的转换,提供了高性能的解决方案。在我个人的日常开发中,主要使用的方法有以下几个://JSON|字典转模型+(nullableinstancetype)yy_modelWithJSON:(id)json;+(nullableinstancetype)yy_modelWithDictionary:(NSDictionary*)d
- 走进 YYModel
水落斜阳
YYModel使用如果有这样一组json数据:{"number":"13612345678","name":"Germany","age":49}那我们会去建立相应的Object对象@interfaceTestObject:NSObject@property(nonatomic,copy)NSString*name;@property(nonatomic,copy)NSString*number;
- YYModel源码浅析
好有魔力
YYModel提供高性能的数据与model互相转换的方法,并且提供了数据类型的适配和支持自定义属性名和键的映射,使用起来非常方便.YYModel提供的接口YYModel的接口以分类的形式提供:NSObject分类@interfaceNSObject(YYModel)//使用json数据创建对象,json的类型可以使NSDictionary,NSData,NSString+(nullableinst
- iOS Undefined symbols for architecture arm64解决办法
因你而不同
iOS开发architecturearm64
Undefinedsymbolsforarchitecturearm64:"_OBJC_CLASS_$_YYCache",referencedfrom:objc-class-refinLFNetworking.o"_OBJC_CLASS_$_AFHTTPRequestSerializer",referencedfrom:objc-class-refinLFNetworking.o"_OBJC_CL
- CDN: trunk Repo update failed - 18 error(s)
君子独善其身
具体错误:CDN:trunkRepoupdatefailed-18error(s):CDN:trunkURLcouldn'tbedownloaded:https://raw.githubusercontent.com/CocoaPods/Specs/master/Specs/2/7/4/YYModel/0.9.0/YYModel.podspec.json,error:FailedtoopenTCP
- YYMemoryCache源码分析
yimiao
YYCache缓存框架YYMemoryCache内存中的缓存YYDiskCacheYYKVStorageYYMemoryCache内存缓存功能设计目标对外接口是key,value进行缓存和获取能够限制数量大小和总消耗cost获取缓存时,支持LRU(最近最少使用),MRU(最近最多使用),Key-Value快速获取实现基本思路先用一个新的数据结构node对value数据进行封装,丰富携带信息,因为v
- 用心阅读 YYCache 并改装
孙优秀丶Unique
用心阅读YYCache并改装架构YYKIT分为内存缓存和磁盘缓存,磁盘缓存又分为文件缓存和数据库缓存,作者认为,大于20K应该使用文件缓存,否则sqlite缓存YYMemoryCacheYYMemoryCache是内存缓存,速度最快,使用的是LRU思想和双向链表数据结构来实现的LRU淘汰算法是淘汰最近最少使用的数据,那么利用双向链表完全可以实现,当有新数据插入的时候,就把新数据插入到链表的头部,当
- LeetCode[位运算] - #137 Single Number II
Cwind
javaAlgorithmLeetCode题解位运算
原题链接:#137 Single Number II
要求:
给定一个整型数组,其中除了一个元素之外,每个元素都出现三次。找出这个元素
注意:算法的时间复杂度应为O(n),最好不使用额外的内存空间
难度:中等
分析:
与#136类似,都是考察位运算。不过出现两次的可以使用异或运算的特性 n XOR n = 0, n XOR 0 = n,即某一
- 《JavaScript语言精粹》笔记
aijuans
JavaScript
0、JavaScript的简单数据类型包括数字、字符创、布尔值(true/false)、null和undefined值,其它值都是对象。
1、JavaScript只有一个数字类型,它在内部被表示为64位的浮点数。没有分离出整数,所以1和1.0的值相同。
2、NaN是一个数值,表示一个不能产生正常结果的运算结果。NaN不等于任何值,包括它本身。可以用函数isNaN(number)检测NaN,但是
- 你应该更新的Java知识之常用程序库
Kai_Ge
java
在很多人眼中,Java 已经是一门垂垂老矣的语言,但并不妨碍 Java 世界依然在前进。如果你曾离开 Java,云游于其它世界,或是每日只在遗留代码中挣扎,或许是时候抬起头,看看老 Java 中的新东西。
Guava
Guava[gwɑ:və],一句话,只要你做Java项目,就应该用Guava(Github)。
guava 是 Google 出品的一套 Java 核心库,在我看来,它甚至应该
- HttpClient
120153216
httpclient
/**
* 可以传对象的请求转发,对象已流形式放入HTTP中
*/
public static Object doPost(Map<String,Object> parmMap,String url)
{
Object object = null;
HttpClient hc = new HttpClient();
String fullURL
- Django model字段类型清单
2002wmj
django
Django 通过 models 实现数据库的创建、修改、删除等操作,本文为模型中一般常用的类型的清单,便于查询和使用: AutoField:一个自动递增的整型字段,添加记录时它会自动增长。你通常不需要直接使用这个字段;如果你不指定主键的话,系统会自动添加一个主键字段到你的model。(参阅自动主键字段) BooleanField:布尔字段,管理工具里会自动将其描述为checkbox。 Cha
- 在SQLSERVER中查找消耗CPU最多的SQL
357029540
SQL Server
返回消耗CPU数目最多的10条语句
SELECT TOP 10
total_worker_time/execution_count AS avg_cpu_cost, plan_handle,
execution_count,
(SELECT SUBSTRING(text, statement_start_of
- Myeclipse项目无法部署,Undefined exploded archive location
7454103
eclipseMyEclipse
做个备忘!
错误信息为:
Undefined exploded archive location
原因:
在工程转移过程中,导致工程的配置文件出错;
解决方法:
 
- GMT时间格式转换
adminjun
GMT时间转换
普通的时间转换问题我这里就不再罗嗦了,我想大家应该都会那种低级的转换问题吧,现在我向大家总结一下如何转换GMT时间格式,这种格式的转换方法网上还不是很多,所以有必要总结一下,也算给有需要的朋友一个小小的帮助啦。
1、可以使用
SimpleDateFormat SimpleDateFormat
EEE-三位星期
d-天
MMM-月
yyyy-四位年
- Oracle数据库新装连接串问题
aijuans
oracle数据库
割接新装了数据库,客户端登陆无问题,apache/cgi-bin程序有问题,sqlnet.log日志如下:
Fatal NI connect error 12170.
VERSION INFORMATION: TNS for Linux: Version 10.2.0.4.0 - Product
- 回顾java数组复制
ayaoxinchao
java数组
在写这篇文章之前,也看了一些别人写的,基本上都是大同小异。文章是对java数组复制基础知识的回顾,算是作为学习笔记,供以后自己翻阅。首先,简单想一下这个问题:为什么要复制数组?我的个人理解:在我们在利用一个数组时,在每一次使用,我们都希望它的值是初始值。这时我们就要对数组进行复制,以达到原始数组值的安全性。java数组复制大致分为3种方式:①for循环方式 ②clone方式 ③arrayCopy方
- java web会话监听并使用spring注入
bewithme
Java Web
在java web应用中,当你想在建立会话或移除会话时,让系统做某些事情,比如说,统计在线用户,每当有用户登录时,或退出时,那么可以用下面这个监听器来监听。
import java.util.ArrayList;
import java.ut
- NoSQL数据库之Redis数据库管理(Redis的常用命令及高级应用)
bijian1013
redis数据库NoSQL
一 .Redis常用命令
Redis提供了丰富的命令对数据库和各种数据库类型进行操作,这些命令可以在Linux终端使用。
a.键值相关命令
b.服务器相关命令
1.键值相关命令
&
- java枚举序列化问题
bingyingao
java枚举序列化
对象在网络中传输离不开序列化和反序列化。而如果序列化的对象中有枚举值就要特别注意一些发布兼容问题:
1.加一个枚举值
新机器代码读分布式缓存中老对象,没有问题,不会抛异常。
老机器代码读分布式缓存中新对像,反序列化会中断,所以在所有机器发布完成之前要避免出现新对象,或者提前让老机器拥有新增枚举的jar。
2.删一个枚举值
新机器代码读分布式缓存中老对象,反序列
- 【Spark七十八】Spark Kyro序列化
bit1129
spark
当使用SparkContext的saveAsObjectFile方法将对象序列化到文件,以及通过objectFile方法将对象从文件反序列出来的时候,Spark默认使用Java的序列化以及反序列化机制,通常情况下,这种序列化机制是很低效的,Spark支持使用Kyro作为对象的序列化和反序列化机制,序列化的速度比java更快,但是使用Kyro时要注意,Kyro目前还是有些bug。
Spark
- Hybridizing OO and Functional Design
bookjovi
erlanghaskell
推荐博文:
Tell Above, and Ask Below - Hybridizing OO and Functional Design
文章中把OO和FP讲的深入透彻,里面把smalltalk和haskell作为典型的两种编程范式代表语言,此点本人极为同意,smalltalk可以说是最能体现OO设计的面向对象语言,smalltalk的作者Alan kay也是OO的最早先驱,
- Java-Collections Framework学习与总结-HashMap
BrokenDreams
Collections
开发中常常会用到这样一种数据结构,根据一个关键字,找到所需的信息。这个过程有点像查字典,拿到一个key,去字典表中查找对应的value。Java1.0版本提供了这样的类java.util.Dictionary(抽象类),基本上支持字典表的操作。后来引入了Map接口,更好的描述的这种数据结构。
&nb
- 读《研磨设计模式》-代码笔记-职责链模式-Chain Of Responsibility
bylijinnan
java设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
/**
* 业务逻辑:项目经理只能处理500以下的费用申请,部门经理是1000,总经理不设限。简单起见,只同意“Tom”的申请
* bylijinnan
*/
abstract class Handler {
/*
- Android中启动外部程序
cherishLC
android
1、启动外部程序
引用自:
http://blog.csdn.net/linxcool/article/details/7692374
//方法一
Intent intent=new Intent();
//包名 包名+类名(全路径)
intent.setClassName("com.linxcool", "com.linxcool.PlaneActi
- summary_keep_rate
coollyj
SUM
BEGIN
/*DECLARE minDate varchar(20) ;
DECLARE maxDate varchar(20) ;*/
DECLARE stkDate varchar(20) ;
DECLARE done int default -1;
/* 游标中 注册服务器地址 */
DE
- hadoop hdfs 添加数据目录出错
daizj
hadoophdfs扩容
由于原来配置的hadoop data目录快要用满了,故准备修改配置文件增加数据目录,以便扩容,但由于疏忽,把core-site.xml, hdfs-site.xml配置文件dfs.datanode.data.dir 配置项增加了配置目录,但未创建实际目录,重启datanode服务时,报如下错误:
2014-11-18 08:51:39,128 WARN org.apache.hadoop.h
- grep 目录级联查找
dongwei_6688
grep
在Mac或者Linux下使用grep进行文件内容查找时,如果给定的目标搜索路径是当前目录,那么它默认只搜索当前目录下的文件,而不会搜索其下面子目录中的文件内容,如果想级联搜索下级目录,需要使用一个“-r”参数:
grep -n -r "GET" .
上面的命令将会找出当前目录“.”及当前目录中所有下级目录
- yii 修改模块使用的布局文件
dcj3sjt126com
yiilayouts
方法一:yii模块默认使用系统当前的主题布局文件,如果在主配置文件中配置了主题比如: 'theme'=>'mythm', 那么yii的模块就使用 protected/themes/mythm/views/layouts 下的布局文件; 如果未配置主题,那么 yii的模块就使用 protected/views/layouts 下的布局文件, 总之默认不是使用自身目录 pr
- 设计模式之单例模式
come_for_dream
设计模式单例模式懒汉式饿汉式双重检验锁失败无序写入
今天该来的面试还没来,这个店估计不会来电话了,安静下来写写博客也不错,没事翻了翻小易哥的博客甚至与大牛们之间的差距,基础知识不扎实建起来的楼再高也只能是危楼罢了,陈下心回归基础把以前学过的东西总结一下。
*********************************
- 8、数组
豆豆咖啡
二维数组数组一维数组
一、概念
数组是同一种类型数据的集合。其实数组就是一个容器。
二、好处
可以自动给数组中的元素从0开始编号,方便操作这些元素
三、格式
//一维数组
1,元素类型[] 变量名 = new 元素类型[元素的个数]
int[] arr =
- Decode Ways
hcx2013
decode
A message containing letters from A-Z is being encoded to numbers using the following mapping:
'A' -> 1
'B' -> 2
...
'Z' -> 26
Given an encoded message containing digits, det
- Spring4.1新特性——异步调度和事件机制的异常处理
jinnianshilongnian
spring 4.1
目录
Spring4.1新特性——综述
Spring4.1新特性——Spring核心部分及其他
Spring4.1新特性——Spring缓存框架增强
Spring4.1新特性——异步调用和事件机制的异常处理
Spring4.1新特性——数据库集成测试脚本初始化
Spring4.1新特性——Spring MVC增强
Spring4.1新特性——页面自动化测试框架Spring MVC T
- squid3(高命中率)缓存服务器配置
liyonghui160com
系统:centos 5.x
需要的软件:squid-3.0.STABLE25.tar.gz
1.下载squid
wget http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABLE25.tar.gz
tar zxf squid-3.0.STABLE25.tar.gz &&
- 避免Java应用中NullPointerException的技巧和最佳实践
pda158
java
1) 从已知的String对象中调用equals()和equalsIgnoreCase()方法,而非未知对象。 总是从已知的非空String对象中调用equals()方法。因为equals()方法是对称的,调用a.equals(b)和调用b.equals(a)是完全相同的,这也是为什么程序员对于对象a和b这么不上心。如果调用者是空指针,这种调用可能导致一个空指针异常
Object unk
- 如何在Swift语言中创建http请求
shoothao
httpswift
概述:本文通过实例从同步和异步两种方式上回答了”如何在Swift语言中创建http请求“的问题。
如果你对Objective-C比较了解的话,对于如何创建http请求你一定驾轻就熟了,而新语言Swift与其相比只有语法上的区别。但是,对才接触到这个崭新平台的初学者来说,他们仍然想知道“如何在Swift语言中创建http请求?”。
在这里,我将作出一些建议来回答上述问题。常见的
- Spring事务的传播方式
uule
spring事务
传播方式:
新建事务
required
required_new - 挂起当前
非事务方式运行
supports
&nbs