APP开发框架介绍

Android 和 iOS 平台的主流开发语言及技术栈随着时间不断演进,目前的主要开发方式如下: 一、Android 开发 Kotlin(官方首选) 自 2019 年起,Kotlin 成为 Android 开发的官方首选语言,由 JetBrains 开发,与 Java 100% 互操作。 优势:语法简洁(减少样板代码)、空安全(降低空指针异常)、支持协程(简化异步操作)、与 Android SDK 深度集成,官方新 API(如 Jetpack Compose)优先支持 Kotlin。 应用场景:原生 Android 应用开发,尤其适合复杂业务逻辑和现代 UI 开发(如使用 Jetpack Compose 构建界面)。 Java 传统 Android 开发的主力语言,目前仍被广泛使用(大量 legacy 项目和第三方库基于 Java)。 优势:生态成熟、开发者基数大、兼容所有 Android 版本。 现状:虽然官方推荐 Kotlin,但 Java 仍是合法选择,两者可在同一项目中混用。 跨平台方案 Flutter(Dart 语言):谷歌推出的跨平台框架,通过 Dart 语言编写,可同时生成 Android 和 iOS 原生应用,性能接近原生。 React Native(JavaScript/TypeScript):基于 JavaScript 生态,通过组件化开发跨平台应用,适合快速迭代。 Kotlin Multiplatform Mobile(KMM):使用 Kotlin 编写共享业务逻辑,UI 层仍用原生语言(Android 用 Kotlin,iOS 用 Swift),适合逻辑复用。 二、iOS 开发 Swift(官方首选) ...

2025-08-20 · FLY的狐狸

Vue开发框架介绍

Vue3介绍 Vue3 是 Vue.js 框架的第三个主要版本,于 2020 年正式发布,相比 Vue2 进行了全面重构,在性能、可维护性、扩展性等方面有显著提升。它保留了 Vue 一贯的“渐进式框架”理念,同时引入了诸多现代前端技术特性,以下从核心特性、架构变化、常用 API 等方面详细介绍: 一、核心特性与优势 性能大幅提升 响应式系统重构:从 Vue2 的 Object.defineProperty 改为基于 Proxy 的响应式系统,支持监听数组索引、对象新增属性等 Vue2 中难以处理的场景,且避免了递归遍历对象的性能损耗。 编译时优化:通过“静态标记”区分模板中的静态节点(如纯文本、无绑定的标签)和动态节点,减少虚拟 DOM Diff 时的对比开销;支持“按需更新”,仅重新渲染受影响的节点。 更小的体积:移除了 Vue2 中不常用的 API(如 filter),通过 Tree-Shaking 支持按需引入,核心库体积比 Vue2 减少约 40%。 更好的 TypeScript 支持 Vue3 源码采用 TypeScript 编写,原生支持类型定义,解决了 Vue2 中使用 TypeScript 时类型推断不足的问题。 组件、Props、生命周期等 API 均提供完整的类型提示,开发工具(如 VS Code + Volar)可实现更精准的代码补全和错误检查。 Composition API(组合式 API) 替代 Vue2 中 Options API(选项式 API)的核心创新,允许按逻辑功能组织代码,而非按 data、methods、computed 等选项拆分。 解决了 Vue2 中大型组件代码分散、复用困难的问题,通过 setup 函数或 <script setup> 语法实现更灵活的逻辑组合。 二、核心 API 与语法 1. Composition API 核心函数 setup 函数:组件初始化时执行,是 Composition API 的入口,返回值可直接在模板中使用。 ...

2025-08-20 · FLY的狐狸

算法入门到进阶

在算法中,数据结构的选择直接影响程序的效率,其核心是匹配具体场景的操作需求(如频繁查找、插入、排序等)。常见数据结构可分为线性结构、树形结构、图形结构等,每种结构因存储方式和操作特性的不同,适用于特定场景。 一、线性结构:一对一的数据关系 线性结构是最基础的数据结构,元素间呈线性排列,核心差异在于内存存储方式(连续或离散)和操作效率。 数据结构 核心特点 优点 缺点 典型使用场景 数组(Array) 元素连续存储,通过索引访问,长度固定(静态)或动态扩容 随机访问快(O(1)),内存连续利用率高 插入/删除效率低(需移动元素,O(n));动态扩容有性能损耗 需频繁随机访问场景:如存储用户列表、矩阵运算、滑动窗口算法 链表(Linked List) 元素离散存储,通过指针/引用连接(单链表、双链表、循环链表) 插入/删除快(O(1),只需改指针);长度灵活 随机访问慢(O(n),需从头遍历);额外存储指针,内存开销大 频繁插入/删除场景:如链表式队列、LRU缓存(双链表)、邻接表(图的存储) 栈(Stack) 遵循后进先出(LIFO),仅允许在栈顶操作(push/pop) 操作简单,时间复杂度O(1) 功能单一,仅支持栈顶操作 表达式求值(如括号匹配)、递归调用栈、深度优先搜索(DFS) 队列(Queue) 遵循先进先出(FIFO),允许在队尾插入、队头删除 顺序处理数据,操作效率O(1) 中间元素操作困难 任务调度(如线程池任务队列)、广度优先搜索(BFS)、消息队列 双端队列(Deque) 队列两端均可插入/删除,结合栈和队列特性 操作灵活,两端操作O(1) 实现较复杂(如基于链表或循环数组) 滑动窗口问题、缓存实现(如Java中的ArrayDeque) 二、树形结构:一对多的层级关系 树形结构通过“父节点-子节点”形成层级,适用于具有层级关系的数据,核心是优化查找和排序效率。 数据结构 核心特点 优点 缺点 典型使用场景 二叉树(Binary Tree) 每个节点最多2个子节点(左、右),无平衡要求 结构简单,适合递归操作 极端情况下退化为链表(如有序插入成单链),查找效率低(O(n)) 基础树形结构学习,表达式树(如编译器语法解析) 二叉搜索树(BST) 左子树节点值 < 根节点值 < 右子树节点值,支持快速查找 查找、插入、删除平均效率O(logn) 不平衡时退化为链表(如顺序插入) 动态数据的查找(如字典查询),但实际中多被平衡树替代 红黑树(Red-Black Tree) 自平衡二叉搜索树,通过颜色规则(红/黑)维持平衡,最长路径不超过最短路径2倍 查找、插入、删除稳定O(logn),平衡性好 实现复杂,旋转操作耗时 TreeMap(Java)、C++ STL中的map/set,数据库索引(小型索引) B树/B+树 多路平衡查找树,B树节点存储数据,B+树数据仅在叶子节点,且叶子节点连成链表 减少IO次数(适合磁盘存储),支持范围查询 B+树非叶子节点不存数据,空间利用率更高 数据库索引(如MySQL InnoDB的聚簇索引)、文件系统(大量数据的磁盘存储) 堆(Heap) 完全二叉树,分为大顶堆(父>子)和小顶堆(父<子),支持优先操作 插入/删除O(logn),获取最值O(1) 不支持随机访问,查找效率低(O(n)) 优先队列(如任务调度按优先级执行)、堆排序、Top K问题(如取最大的10个数) 三、哈希结构:通过哈希函数快速映射 哈希结构(Hash)的核心是键值对(Key-Value)映射,通过哈希函数将键转换为存储地址,实现快速查找。 ...

2025-07-28 · FLY的狐狸

网络知识指南

TCP三次握手&四次挥手 TCP 三次握手 客户端发送 SYN 包请求连接,服务端返回 SYN+ACK 确认并请求连接,客户端再返回 ACK 确认,双方进入 ESTABLISHED 状态。 graph LR A[客户端] -->|1、SYN=1, Seq=x| B[服务端] B -->|2、SYN=1, ACK=1, Seq=y, Ack=x+1| A A -->|3、ACK=1, Seq=x+1, Ack=y+1| B A -->|4、ESTABLISHED| C[连接建立完成] B -->|4、ESTABLISHED| C 作用:建立可靠的双向连接,确保通信双方确认彼此的接收和发送能力。 过程: 第一次握手(客户端 → 服务端): 客户端发送带有 SYN=1,Seq=x 的报文,进入 SYN_SENT 状态,请求建立连接。 第二次握手(服务端 → 客户端): 服务端收到后,发送 SYN=1,ACK=1,Seq=y,Ack=x+1 的报文,进入 SYN_RCVD 状态,确认客户端请求并发起自身连接请求。 第三次握手(客户端 → 服务端): 客户端发送 ACK=1,Seq=x+1,Ack=y+1 的报文,进入 ESTABLISHED 状态。服务端收到后也进入 ESTABLISHED 状态,连接建立完成。 TCP 四次挥手 主动关闭方先发送 FIN 包请求关闭,被动关闭方返回 ACK 确认(此时仍可发送剩余数据)。 被动关闭方数据发送完毕后,再发送 FIN 包请求关闭,主动关闭方返回 ACK 确认,并进入 TIME_WAIT 状态(等待 2MSL 确保最后一个 ACK 到达),被动关闭方收到后立即关闭。 graph LR D[主动关闭方] -->|1、FIN=1, Seq=m| E[被动关闭方] E -->|2、ACK=1, Seq=n, Ack=m+1| D E -->|3、FIN=1, ACK=1, Seq=p, Ack=m+1| D D -->|4、ACK=1, Seq=m+1, Ack=p+1| E D -->|5、TIME_WAIT| F[等待超时后关闭] E -->|5、CLOSED| G[立即关闭] 作用:终止连接,确保双向数据传输都已完成,资源可安全释放。 过程: ...

2025-07-21 · FLY的狐狸

HTTP协议详解:互联网通信的基石

HTTP协议详解:互联网通信的基石 一、HTTP协议的基本概念 定义:超文本传输协议(HyperText Transfer Protocol,HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议,是互联网数据通信的基础。 核心作用:规定了客户端(如浏览器)与服务器之间传输数据的格式和规则,实现网页、API等资源的请求与响应。 二、HTTP协议的发展历程 版本 发布时间 主要特点 HTTP/0.9 1991年 简单文本传输,仅支持GET请求,无响应头,连接一次性(请求后关闭)。 HTTP/1.0 1996年 引入请求/响应头,支持多种请求方法(POST、HEAD等),但仍为非持久连接。 HTTP/1.1 1999年 持久连接(Keep-Alive)、管道化请求、分块传输、缓存机制、虚拟主机等,成为应用最广泛的版本。 HTTP/2 2015年 二进制分帧、多路复用、头部压缩(HPACK)、服务器推送(Server Push),大幅提升性能。 HTTP/3 2022年 基于QUIC协议,使用UDP传输,解决HTTP/2的“队头阻塞”问题,支持更快的连接建立和弱网络适应。 三、HTTP协议的核心架构 客户端-服务器模型(C/S模型) 客户端(如浏览器、Postman)发送请求(Request),服务器接收并返回响应(Response)。 例:用户访问https://example.com时,浏览器向服务器发送HTTP请求,服务器返回网页内容。 无状态特性 服务器不保存客户端的历史请求信息,每次请求都是独立的,需通过Cookie、Session等机制实现状态管理。 四、HTTP请求与响应的结构 1. 请求(Request)的组成 请求方法 请求URL HTTP版本\r\n 请求头字段1: 值1\r\n 请求头字段2: 值2\r\n ...\r\n \r\n 请求体(可选) 请求方法:常用方法包括: GET:获取资源(如获取网页内容)。 POST:提交数据(如表单提交)。 PUT:更新资源。 DELETE:删除资源。 HEAD:获取资源头部信息(不返回内容)。 请求头示例: User-Agent:客户端标识(如浏览器类型)。 Content-Type:请求体的数据类型(如application/json)。 Authorization:认证信息(如Token)。 2. 响应(Response)的组成 HTTP版本 状态码 状态描述\r\n 响应头字段1: 值1\r\n 响应头字段2: 值2\r\n ...\r\n \r\n 响应体(资源内容,如HTML、JSON) 状态码分类: 1xx(信息类):如100 Continue,表示请求已接收,继续处理。 2xx(成功类):如200 OK(请求成功)、201 Created(资源创建成功)。 3xx(重定向类):如301 Moved Permanently(永久重定向)、302 Found(临时重定向)。 4xx(客户端错误):如400 Bad Request(请求格式错误)、401 Unauthorized(未授权)、404 Not Found(资源不存在)。 5xx(服务器错误):如500 Internal Server Error(服务器内部错误)、502 Bad Gateway(网关错误)。 响应头示例: Content-Type:响应体的数据类型(如text/html)。 Content-Length:响应体的字节长度。 Cache-Control:缓存策略(如max-age=3600表示缓存1小时)。 五、HTTP协议的关键特性 无连接与持久连接 HTTP/1.0默认无连接(每次请求后关闭连接),HTTP/1.1默认开启持久连接(Keep-Alive),可复用连接减少开销。 管道化(HTTP/1.1) 客户端可在同一连接中依次发送多个请求,无需等待前一个响应,提升效率。 缓存机制 通过Cache-Control、ETag、Last-Modified等头字段实现资源缓存,减少重复请求。 分块传输(Chunked Transfer) 大文件可拆分为多个块传输,避免内存溢出,适用于流式数据(如视频直播)。 六、HTTP与HTTPS的区别 特性 HTTP HTTPS 安全性 明文传输,不加密,易被窃听 基于TLS/SSL加密,数据传输安全 端口 默认80端口 默认443端口 证书 无需证书 需要CA颁发的SSL证书 性能 开销小,速度快 加密开销大,速度略慢 七、HTTP/2与HTTP/3的重大改进 HTTP/2的核心优化 二进制分帧:将请求和响应拆分为二进制帧,更高效地传输数据。 多路复用:同一连接中并行处理多个请求,解决HTTP/1.1的“队头阻塞”问题。 头部压缩:使用HPACK算法压缩请求头,减少传输数据量。 HTTP/3的升级 基于QUIC协议(UDP上层),支持更快的连接建立(0-RTT)和丢包重传,在弱网络环境下表现更优。 八、HTTP协议的应用场景 Web浏览:浏览器通过HTTP请求获取网页、图片、视频等资源。 API接口:后端服务通过HTTP提供RESTful API,供客户端调用(如JSON数据交互)。 微服务通信:微服务架构中服务间通过HTTP进行远程调用。 数据推送:通过HTTP流式传输(如SSE)实现服务器向客户端主动推送数据。 九、HTTP协议的未来趋势 HTTP/3的普及:随着QUIC协议的成熟,HTTP/3将逐步替代HTTP/2,尤其在移动网络和实时通信场景中。 与WebAssembly(WASM)结合:提升浏览器端的计算能力,拓展HTTP应用场景。 如需获取相关书籍,关注公众号【FLY的狐狸】回复【HTTP】即可 ...

2025-07-05 · FLY的狐狸