0%

App的热更新即,不通过应用商店的审核,直接下载远程的代码更新用户手机中的app。由于iOS应用审核周期长,审核规则复杂所以热更新对于iOS平台来说显得更为迫切,但在原生的iOS代码中实现起来比较复杂,有被拒绝的风险。而React Native由于其加载jsbundle的特点,实现热更新并不复杂。而采用Js热更新的React Native并没有受到WaxPatch、JSPatch等热修复框架被禁止的影响。

React Native的热更新方案有很多种,比如微软的CodePush、或者如携程的jsbundle拆分方案等,但是基本原理都是一致的,就是远程加载jsbundle,下面记录实现热更新的几种方案

CodePush 是微软提供的一套用于热更新 React Native 和 Cordova 应用的服务。
CodePush 是提供给 React Native 和 Cordova 开发者直接部署移动应用更新给用户设备的云服务。CodePush 作为一个中央仓库,开发者可以推送更新 (JS, HTML, CSS and images),应用可以从客户端 SDK 里面查询更新。CodePush 可以让应用有更多的可确定性,也可以让你直接接触用户群。在修复一些小问题和添加新特性的时候,不需要经过二进制打包,可以直接推送代码进行实时更新。

Read more »

Symbol概述

ES5 的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突。如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突。这就是 ES6 引入Symbol的原因。

Symbol表示独一无二的值,它是 JavaScript 语言的第七种数据类型

Read more »

Realm简介

Realm是一个跨平台的移动数据库引擎,目前支持iOS、Android平台,同时支持Objective-C、Swift、Java、React Native、Xamarin等多种编程语言。Realm并不是对SQLite或者CoreData的简单封装, 是由核心数据引擎C++打造,是拥有独立的数据库存储引擎,可以方便、高效的完成数据库的各种操作。

官方文档:https://realm.io

GitHub:https://github.com/realm/realm-cocoa

Realm Studio: https://realm.io/cn/products/realm-studio

Read more »

Docker是什么

Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。

Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。

总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。

Read more »

以下笔记是边看视频课程边记录下来的,供以后自己查阅复习使用

Runtime学习笔记1

消息转发

在OC中,调用方法其实是给对象发送消息

1
2
3
[[Person new] sendMessage:@"gelo"];
// 等价于
objc_msgSend([Person new], @selector(sendMessage:), "gelo");

通过对象的isa指针找到class,如果有方法的话,直接调用。没有找到的话,通过继承树查找,进入消息转发机制

Read more »

多模式串匹配算法简介

敏感词过滤最基本的原理就是字符串匹配算法,也就是通过维护一个敏感词的字典,当用户输入一段文字内容后,通过字符串匹配算法,来查找用户输入的这段文字,是否包含敏感词。

字符串匹配算法有很多比如BF算法、RK算法、BM算法、KMP算法还有Trie树。前面四种算法都是单模式串匹配算法,只有Trie树是多模式串匹配算法。

我们可以针对每个敏感词,通过单模式匹配算法与用户输入的文字内容进行匹配。但是这样做的话,每个需要匹配的敏感词都需要扫描一遍用户输入的内容。如果敏感词有很多,并且用户输入的内容很长,这种处理的方法就显得比较低效。

与单模式匹配算法相比,多模式串匹配算法在敏感词过滤这个问题上处理就很高效了,它只需要扫描一遍主串,就能在主串中一次性查找多个模式串是否存在。

Read more »

Trie树简介

Trie 树,也叫字典树或者叫前缀树。顾名思义,它是一个树形结构。它是一种专门处理字符串匹配的树状结构,用来解决在一组字符串集合中快速查找某个字符串的问题。Trie 树的本质,就是利用字符串之间的公共前缀,将重复的前缀合并在一起。

Read more »

简介

二分查找(Binary Search)算法,也叫折半查找算法。在给顺序表结构中(也就是数组)快速查找某一个值或者某个区间。二分查找的时间复杂度是O(logn)。虽然二分查找看起来很简单,实现出来的代码不够寥寥十几行,但是就是会出错,要么漏个等号,要么少加1。也就是思路很简单,细节是魔鬼

本文均抄自Leetcode精选解题,本文原作者是labuladong

Read more »

BF算法

BF(Brute Force),暴力检索法是最好想到的算法,也最好实现。首先将原字符串和子串左端对齐,逐一比较;如果第一个字符不能匹配,则子串向后移动一位继续比较;如果第一个字符匹配,则继续比较后续字符,直至全部匹配。 时间复杂度:O(nm)。其中 n 为原字符串长度,m 为子串长度。

Read more »

定义

​ 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。

与数组的区别

​ 使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。链表最明显的好处就是,常规数组排列关联项目的方式可能不同于这些数据项目在记忆体或磁盘上顺序,数据的存取往往要在不同的排列顺序中转换。链表允许插入和移除表上任意位置上的节点,但是不允许随机存取。

Read more »