移动开发

Swift 高阶函数使用

Swift 高阶函数使用 map map就是是对原对象所有元素进行一对一转换处理,中间不会跳过或遗漏,包括nil元素。 使用 let numList = [1,2,3] // $0 就是 numList 里的元素 let res = numList.map{$0 + 1} print("map res = \(res)") 返回 map res = [2, 3, 4] 传入方法 var map

Android Studio修改国内镜像

国内的Android开发者,基本每隔一段时间就会碰到项目突然不能编译的情况。sdk更新、插件安装也有诸多不便,环境的折腾确实伤透了脑筋。本文主要记录下使用host配置dl.google.com的国内镜像。 1. 用文本编辑器打开host文件 host文件所在路径为: //对于Windows系统 C:\Windows\System32\drivers\etc\hosts //对于Mac系统 /e

iOS 动态库和静态库

一、库 库是程序代码的集合,是程序开发者与其他开发者之间进行代码共享的一种方式。 库根据源代码公开的情况可以: 1.开源库 开源库的源代码可见,比如 AFNetworking。 2.闭源库 闭源库的源代码不可见,是一段编译好的二进制代码 闭源库有根据相对编译时和运行时: 静态库 动态库 二、静态库和动态库区别 1.格式上的区别 静态库的格式: .a .framework 动态库的格式:

UIStackView之一问一答

前言 此篇文章作为在使用UIStackView前的一些答疑,既是扫盲篇,也是实用篇。以下会讲述一些实用的案例,目的就是让更多的人拥抱UIStackView。同时欢迎小伙伴通过评论区讲讲使用StackView遇到的问题。 答疑 排列视图间距大小不一 问:排列视图间距大小不一,可以用UIStackView吗? 答:当然可以用,UIStackView虽然有space属性,但是适用于所有的排列视图,如果想

前端开发中常用的10个小技巧,助你写出高逼格代码

1. 有条件地向对象、数组添加属性 1) 向对象添加属性 可以使用展开运算符来有条件地向对象中添加属性: const condition = true; const person = { id: 1, name: "dby", ...(condition && { age: 12 }), }; 如果 condition 为 true ,则 { age: 16 }

SDWebImage5.11源码分析(二)

接上一篇文章继续分析SDWebImage5.11的缓存部分 SDImageCache 缓存获取数据,主要是通过key缓存(上一篇文章有说),cacheType判断缓存方式,options进行缓存拓展。主要内容如下: a. 对cacheOptions类型进行筛选 b. 进入queryCacheOperationForKey方法,对具体缓存方式进行划分,其中包括内存缓存,磁盘缓存。然后又在各自缓

Swift面试题总结

1.convenience : 便利,使用convenience修饰的构造函数叫做便利构造函数 // 便利构造函数通常用在对系统的类进行构造函数的扩充时使用 便利构造函数的特点 1.便利构造函数通常都是写在extension里面 2.便利构造函数init前面需要加convericece 2.swift中Class和Struct的区别 struct SRectangle { var wid

Swift 5.5 新特性

Async/await 新旧方式的比较 以前的方式: func fetchWeatherHistory(completion: @escaping ([Double]) -> Void) { // Complex networking code here; we'll just send back 100,000 random temperatures DispatchQue

spring-retry解决重试

一、前言 在日常开发过程中,难免会与第三方接口发生交互,例如:短信发送、远程服务调用、争抢锁等场景,当正常调用发生异常时,例如:网络抖动,这些间歇性的异常在一段时候之后会自行恢复,程序为了更加健壮并且更不容易出现故障,需要重新触发业务操作,以防止间歇性的异常对程序照成的影响。常用的重试策略,比如通过 while 循环手动重复调用或是通过 JDK/CGLib 动态代理的方式来进行重试。但是这种方法比