自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 收藏
  • 关注

原创 语法糖

public protocol BlogPost: Equatable {var title: String { get }var author: String { get }}/// Equatable 报错/// BlogPost 只能被用作泛型约束。这是因为 Equatable 协议有一个名为 Self 的关联类型。具有关联类型的协议不能用作类型,即使他们看起来像类型。相反,它们有...

2020-04-28 11:02:05 240 1

原创 单向数据流动

import UIKitimport Foundation/单向数据流动*****//// https://onevcat.com/2017/07/state-based-viewcontroller//// 新状态 = f(旧状态, 用户行为)/// func reducer(state: State, userAction: Action) -> State/// func ...

2020-04-28 09:20:03 337

原创 函数响应式

import UIKitimport Foundation/函数响应式编程*****//// 函数式编程思想:是将操作尽可能写在一起!嵌套的函数!!/// 本质:就是往方法里面传入Block,方法中嵌套Block调用./// block可以作为对象的属性,也可以作为方法的参数,也可以作为返回值。而作为返回值是链式编程的核心/*高阶函数是至少满足下列一个条件的函数:1 接受一个或多个...

2020-04-26 15:20:03 303

原创 协议编程 Swift中,值类型优先于类

import UIKitimport Foundation/面向协议编程*****//// POP就是通过协议扩展,协议继承和协议组合的方式来设计需要编写的代码/// 协议扩展 Protocol Extensions/// 协议继承/// 协议组合/// Swift中,值类型优先于类,值类型可以从协议继承,设置支持从多个协议继承,因此,使用POP让值类型成为了Swift中的一等公民...

2020-04-26 14:32:40 148

原创 函数式编程、柯里化、存储,计算属性,枚举关联值

import UIKitimport Foundation/函数式编程*****//// 假设现在有一个零售水果的在线商店,需要频繁的用到不同的重量单位,但是最终服务器都是以kg来计算和存储,所以需要频繁的将其他的重量单位转为kg来做为数据的存储,又需要频繁的将kg转换成其他的重量单位来作为显示/// 存储属性、计算属性struct Kilogram {var kg: Double/...

2020-04-26 11:27:57 145

原创 Functor(函子)、Monad(单子)、Applicative(高级函子)

import UIKitimport Foundation/***********Functor(函子)、Monad(单子)、Applicative(高级函子)****************//*Context(上下文)呢,我们可以将它理解为对值的一个包装,通过这层包装,我们可以得知值此时所处在的一个状态*/enum Result {case success(T)case fai...

2020-04-26 10:18:17 254

原创 下标、字面量

import UIKitimport Foundation/下标*****//*subscript(index: Int) -> Int {get {// 返回一个适当的 Int 类型的值} set(newValue) { // 执行适当的赋值操作 }}*/struct TimesTable {let multiplier: Intsubscript(in...

2020-04-24 17:08:23 112

原创 泛型

import UIKitimport Foundation/泛型*****//// 泛型编程是一种算法机制为types to-be-specified-later(类型确定滞后)的计算机编程风格func removeSameElement<T: Equatable>(_ originArr: [T]) -> [T] {return originArr.reduce(T)...

2020-04-24 16:34:55 110

原创 模式匹配

import UIKitimport Foundation/Swift 模式匹配**/enum Weather {case rain, snow, wind, sunny}let todayWeather = Weather.rainswitch todayWeather {case .rain, .snow:print("")case .wind:print("")cas...

2020-04-24 15:31:29 119

原创 写时复制

import UIKitimport Foundation/swift 写时复制**/func print(address o: UnsafeRawPointer ) {print(String(format: “%p”, Int(bitPattern: o)))}var array1: [Int] = [0, 1, 2, 3]var array2 = array1print(ad...

2020-04-24 15:01:40 189

原创 Swift 尾随闭包 map compactMap flatMap filter reduce

import UIKit/// 尾随闭包func someFuncThatTakesClosure(closure: () -> Void) {}/// 不使用尾随闭包someFuncThatTakesClosure(closure: {})/// 使用尾随闭包someFuncThatTakesClosure {}let names = [“eva”, “adon”]/...

2020-04-23 21:16:05 193

原创 pod install 查看进度

pod install --verbose --no-repo-update

2020-03-09 11:01:08 3613

原创 Swagger 2

@Api:用在请求的类上,表示对类的说明 tags="说明该类的作用,可以在UI界面上看到的注解" value="该参数没什么意义,在UI界面上也看到,所以不需要配置"@ApiOperation:用在请求的方法上,说明方法的用途、作用 value="说明方法的用途、作用" notes="方法的备注说明"@ApiImplicitParams:用在请求的方法上,...

2020-03-06 17:47:30 104

原创 SpringCloud - Eureka

pom依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> &lt...

2020-02-15 16:50:34 96

原创 SpringCloud 【1】

Lombok:@Data 省略手动get set@Builder 流式创建对象@Slf4j 日志服务@Cleanup 关闭流模块结构图重温Mybatis-Pluslogback.xml 配置mybatis-plus: mapper-locations: classpath*:com/mooc/meetingfilm/**/xml/*Mapper.xml globa...

2020-02-15 09:17:12 99

原创 Lombok+安全框架

一、lombok * cleanup * 资源关闭 文件流操作的初始化可做注解 * Data * 大而全的注解 包含 Getter Setter ToString EqualsAndHashCode * EqualsAndHashCode * 生成Equals方法和HashCode方法 * nonnull * 生成非空检查getter@Getter( ...

2020-01-11 15:13:09 278

原创 线程池

线程池的好处降低资源消耗提高响应速度提高线程的可管理性可选择阻塞队列无界队列有界队列同步移交队列// 基于数组的有界阻塞队列 public void arrayBlockQueue() { ArrayBlockingQueue queue = new ArrayBlockingQueue(10); for (int i = 0; i...

2020-01-09 17:01:29 88

原创 Google Guava工具集

一、Optionalpublic void test() { // 创建空对象 Optional<Object> empty = Optional.empty(); // 使用非null创建对象 Optional<String> roger = Optional.of("roger"); ...

2020-01-09 14:45:19 156

原创 资源处理

需要手动释放的物理资源文件/流资源套接字资源数据库连接资源不释放后果资源被长时间无效占用超过最大限制后,将无资源可用导致系统无法正常运行TWR - try with resource try (流初始化操作) { 操作 }不需要显示执行资源关闭...

2020-01-08 17:23:45 131

原创 Lambda入门

函数编程演化历程1、将业务逻辑直接写死在代码里2、将单一维度的条件作为参数传入方法中。方法内根据参数进行业务逻辑实现3、将多个维度的条件作为参数传入方法中。业务实现根据不同的参数处理不同的逻辑4、将业务逻辑封装为一个实体类,方法接受实体类为参数,方法内部调用实体类的处理逻辑5、调用方法时不再创建实体类,而是使用匿名函数的形式替代6、使用Lambda表达式替代匿名函数的形式,作为方法的参...

2020-01-07 15:15:39 92

原创 实战一

首页搭建tabbar banner 滚动导航栏颜色渐变import 'package:flutter/material.dart';import 'package:flutter_swiper/flutter_swiper.dart';const APPBAR_SCROLL_OFFSET = 100;class HomePage extends StatefulWidget { @...

2019-12-20 16:44:42 89

原创 Flutter 必备

1、图片控件图片使用2、动画

2019-12-19 15:01:23 110

原创 Flutter基础知识

基础学习地址插件官网1、StatelessWidgetContainerTextIconCloseButtonBackButtonChipDividerCardAlertDialogimport 'package:flutter/material.dart';void main() => runApp(LessGroupPage());class LessGr...

2019-12-18 16:26:35 245

原创 Flutter Dart语法

中文网Dart语言1、强类型语言、静态类型2、面向对象 oop3、JIT&AOTJIT:即时编译,开发期间,更快的编译,更快的重载AOT:事前编译,release期间,更快更流畅知识体系:常用数据类型数字【num int double】字符串 【string】布尔 【bool】集合 【List map】var 【任何数据类型 运行时数据类型】类型转换方法...

2019-12-16 13:39:32 487

原创 架构、框架

基本架构框架图片缓存阅读时长统计复杂页面架构客户端整体架构为什么使用框架、架构模块化分层解耦降低代码重合度内存设计需要注意的问题存储size淘汰策略1、以队列先进先出的特点进行淘汰2、LRU(Least Recently Used)算法【最近最久】磁盘设计存储方式大小限制淘汰策略网络设计图片请求并发量请求超时策略请求的优先级图片...

2019-12-02 17:28:13 150

原创 网络

HTTPS与网络问题TCP和UDP差错检测TCP-传输控制协议可靠传输无差错不丢失不重复按序到达面向字节流流量控制滑动窗口拥塞控制慢开始、拥塞避免快恢复、快重传DNS解析递归查询迭代查询问题:1、劫持DNS劫持与http没有关系DNS发生在http建立连接之前,udp访...

2019-11-30 14:43:38 74

原创 Runloop

Runloop通过内部维护的 事件循 环来对事件/消息进行管理的一个 对象Event loop事件循环:1、没有消息处理时,休眠避免资源占用 用户态进入内核态2、有消息处理时,立刻被唤醒 内核态进入用户态等待 不等于 死循环数据结构Runloop和NSTimer解决:addTimeToCommonModeRunloop 和 多线程...

2019-11-26 19:26:08 84 1

原创 多线程

GCD同步sync执行在当前线程,顺序执行dispatch_barrier_async多读单写异步栅栏调用dispatch_group多个任务同时执行,完成执行最后一个NSOperationQueue1、添加任务依赖2、任务执行状态的监控3、控制最大并发量isReady 是否就绪isExecuting 正在执行isFinished 已经完成isCanceled ...

2019-11-25 20:40:01 70

原创 Block

block:将函数及其执行上下文封装起来的对象block的调用实际就是函数的调用截获变量block之前声明的变量__block一般情况下,对被截获变量进行赋值,需要使用__block使用 不等于 赋值栈上的forwarding指向自己block内存管理栈上__block copyblock循环引用__weak...

2019-11-25 15:37:46 153

原创 内存管理

内存布局stack 方法调用 地址自上而下heap 通过alloc等分配的对象 地址自下而上bss 未初始化的全局变量data 已初始化的全局变量text 程序代码内存管理方案TaggedPointer : 小对象 NSNumber等NONPOINTER_ISA :散列表:NONPOINTER_ISAarm64架构散列表方式数据结构MRC...

2019-11-22 16:08:27 174

原创 动态运行时(Runtime)

objc_object:objc_class:isacache_t局部性原理:调用频率高的放到缓存,提高效率class_data_bits_tclass_ro_tmethod_t整体数据结构对象、类对象、元类对象类对象:存储实例方法列表等信息元类对象:存储类方法列表等信息消息传递父类逐级查找消息转发Method-Swizzling...

2019-11-22 13:34:05 131

原创 语言特性

Category分类用法:1、声明私有方法2、分解体积庞大的类文件3、framework的私有方法公开化分类:1、运行时决议、系统类添加2、可以添加a:实例方法、b:类方法、c:协议、d:属性(只是声明get、set,并未添加实例变量,可以通过关联对象添加实例对象)3、加载调用栈4、源码分析同名方法在不同分类中,最后编译的会生效首先获取全部的分类方法,进行组装,再...

2019-11-16 15:11:19 167

原创 设计模式

六大设计原则:1、单一职责:一个类负责一件事2、依赖倒置:抽象不应该依赖于具体实现、具体实现可以依赖抽象3、开闭:对修改关闭,对扩展开放4、里式替换:父类可以被子类替换、原有功能不受影响5、接口隔离:使用多个专门的协议,而不是一个庞大臃肿的协议,协议中的方法尽可能的少6、迪米特:一个对象对其他对象尽可能少的了解【高内聚、低耦合】1、责任链(事件响应)需求操作顺序变更需求顺序变更,...

2019-11-15 17:06:46 68

原创 UI 视图

1、UITableView重用机制:cell = [tableView dequeueReusableCellWithIdentifier:“identifier”];数据源同步:1、并行访问、数据拷贝2、串行执行2、事件传递&视图响应链事件传递:从下至上视图响应链:从上至下3、图像显示原理4、卡顿&掉帧原因滑动优化方案:5...

2019-11-15 14:17:15 204

原创 iOS 第三方库

github地址框架图:主要类关系图:AFURLSessionManager:SDWebImage:异步下载并支持缓存github地址加载流程:RAC 函数响应式编程github地址信号、订阅RACDynamicSignalRACReturnSignalAsyncDisplayKit提高iOS界面渲染性能github地址主要处理问题:1、lay...

2019-11-14 11:48:09 97

原创 mysql 支持文字、表情

添加链接描述开发项目中,数据库涉及汉字、表情,需要重新设置本地mysql字符集,database字符集,表字符集# ALTER DATABASE soul CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;# use soulALTER TABLE block CONVERT TO CHARACTER SET utf8mb4 COLLATE ...

2019-08-19 11:16:31 206

原创 微服务docker化实战(一)

业务场景1、用户可以注册和登录2、登录用户可以对课程进行CRUD操作# 用户服务- 登录- 注册- 基本信息- 无状态,无session- 单点登录# 课程服务- 登录验证- 课程的crud# 信息服务- 发送邮件- 发送短信# 用户edgeservice# 课程edgeservice# API GATEWAY项目结构图Thrift环境安装Thri...

2019-07-29 00:00:50 186

原创 微服务整体梳理

单体架构优势:易于开发易于测试易于部署易于水平伸缩挑战:代码膨胀,难以维护构建、部署成本大新人上手困难创新困难可扩展性差微服务单一职责轻量级通信隔离性有自己的数据技术多样性优势:独立性敏捷性技术栈灵活高效团队劣势:额外工作,服务拆分数据一致性沟通成本微服务引入的问题及解决方案通讯流行的RPC框架1、Dubbo/Dubbox 阿里 a...

2019-07-25 16:14:00 249

原创 Mybatis-Plus

MyBatis vs JPAMyBatis优势:1、sql语句可以自由控制,更灵活,性能较高2、sql语句与代码分离,易于阅读和维护3、提供xml标签,支持编写动态sql语句劣势:1、简单的crud也要写sql2、xml中有大量的sql维护3、自身功能有限,但支持pluginJPA优势:1、移植比较好 jpql2、提供了很多crud方法、开发效率高3、对象化程度高My...

2019-07-24 21:14:21 446

原创 docker入门

什么是dockerdocker is the world’s leading software containerization platform开源在github上跨平台 支持 linux windows maxos1、集装箱2、标准化1.运输方式:超级码头2.存储方式:标准化3.API接口:3、隔离理解Docker解决什么问题:1.环境配置2.用户隔离,功能隔...

2019-07-22 14:42:28 118

空空如也

空空如也

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

TA关注的人

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