当前位置: 首页 > news >正文

iOS 知识点记录

王巍

博客地址:OneV's Den 

git地址:onevcat (Wei Wang) · GitHub

江湖人称喵神,目前就职于line。喵神的博客涉及方面比较广, 有Obejctive-C, Swift, SwiftUI, Unity等等。博客内容很有深度,非常值得关注。

戴铭

博客地址:戴铭的博客 

git地址:ming1016 (戴铭) · GitHub

《iOS开发高手课》和《跟戴铭学iOS编程》作者,前滴滴出行技术专家。

郭曜源

博客地址:Garan no dou | 一只魔法师的工坊 

git地址:ibireme · GitHub

著名的YYKit作者,博客内容更多的是Obejctive-C相关, 其中有不少性能优化相关的,目前更新较少。

念茜

博客地址:念茜_【Android 系统与应用】,【iOS 应用程序开发】,【Qt 应用程序开发】-CSDN博客

安全大佬,博客内容包含iOS和安卓,主要是安全攻防方面,也包含一些其他技术内容。博客似乎搬家了,但没找到新的。

bang

博客地址:bang’s blog git地址:bang590 (bang) · GitHub

JSPatch作者。博客技术内容主要是Obejctive-C,目前更新也比较少。

Kenshincui

博客地址:https://www.cnblogs.com/kenshincui/

NSHipster

博客地址:NSHipster

博客内容内容较广,有Obejctive-C, Swift, CoCoa, Xcode等等。

唐巧

博客地址:唐巧的博客 

git地址:tangqiaoboy (Tang Qiao) · GitHub

就职于猿辅导,首届国内Swift开发者大会的组织者。博客更新率较高,但目前比较少涉及具体的技术问题。

黄文臣

博客地址:黄文臣_iOS开发详解,iOS进阶,Swift入门教程(1.0)-CSDN博客

抖音iOS架构师, 内容涉及iOS音视频,汇编,动画等方面。

李忠

博客地址:Limboy

来自蘑菇街,RAC实践的国内先驱者。博客更新率较高,但已经比较少涉及一些具体的技术问题。

萧宸宇

博客地址:Ewan's Blog

博客中内容涉及较广,其中包含了许多iOS开发的文章。

ina

博客地址:IAN博客 | 苹果技术分享网

iOS & macOS 开发者|独立博客博主

sunny

博客地址:sunnyxx的技术博客 

git地址:sunnyxx (Yuan Sun) · GitHub

博客目前已经很久不更新了,但有很多文章放到现在也值得一看。

阿毛

博客地址:https://xiangwangfeng.com/ 

git地址:xiangwangfeng (阿毛) · GitHub

Tualatrix Chou

博客地址:I'm TualatriX

王令天下的Blog

博客地址:码农人生

学习Flutter的同学可以关注一下。

码农人生

博客地址:码农人生

已经很久不更新,iOS音视频相关。

iOS 整体架构

iOS 整体框架及类继承框架图 - 简书

002-知识体系| iOS系统整体框架及类继承框架图-综述 - 掘金

001-知识体系|建立自己的iOS知识体系 - 掘金

  • Cocoa Touch Layer
    触摸层提供应用基础的关键技术支持和应用的外观。如NotificationCenter的本地通知和远程推送服务,iAd广告框架,GameKit游戏工具框架,消息UI框架,图片UI框架,地图框架,连接手表框架,UIKit框架、自动适配等等

  • Media Layer
    媒体层提供应用中视听方面的技术,如图形图像相关的CoreGraphics,CoreImage,GLKit,OpenGL ES,CoreText,ImageIO、QuartzCore等等。声音技术相关的CoreAudio,OpenAL,AVFoundation,视频相关的CoreMedia,Media Player框架,音视频传输的AirPlay框架等等

  • Core Services Layer
    系统服务层提供给应用所需要的基础的系统服务。如Accounts账户框架,广告框架,数据存储框架,网络连接框架,地理位置框架,运动框架等等。这些服务中的最核心的是CoreFoundation和Foundation框架,定义了所有应用使用的数据类型。CoreFoundation是基于C的一组接口,Foundation是对CoreFoundation的OC封装

  • Core OS Layer
    系统核心层包含大多数低级别接近硬件的功能,它所包含的框架常常被其它框架所使用。Accelerate框架包含数字信号,线性代数,图像处理的接口。针对所有的iOS设备硬件之间的差异做优化,保证写一次代码在所有iOS设备上高效运行。CoreBluetooth框架利用蓝牙和外设交互,包括扫描连接蓝牙设备,保存连接状态,断开连接,获取外设的数据或者给外设传输数据等等。Security框架提供管理证书,公钥和私钥信任策略,keychain,hash认证数字签名等等与安全相关的解决方案。

iOS UIView 和 CALayer

UIView 和 CALayer 的关系

iOS-UIView和CALayer的关系 - 简书

iOS 中 UIView 和 CALayer 的关系 - 掘金

  • UIView 是UIKit 中的类,继承于UIResponse,可以响应事件。
  • CALayer 是 QuartzCore 中的类,继承于NSObject,负责绘制内容、动画,不能响应事件。
CALayer anchorPoint 和 Position

了解CALayer隐式动画

响应者链机制及其应用

史上最详细的iOS之事件的传递和响应机制-原理篇 - 简书

iOS响应者链、事件的传递 - 简书

事件的传递: Hittest 和 PointInside

当一个事件发生后,事件会从父控件传给子控件,也就是说由UIApplication -> UIWindow -> UIView -> subview, 从 SubView数组最后一个开始hittest, 以上就是事件的传递,也就是寻找最合适的view的过程。

拦截事件处理

在父控件的hitTest:withEvent:中返回子控件作为最合适的view!因为hittest 是从 SubView数组最后一个开始,有可能最合适的view 比想要指定的view 后添加

事件的响应: touchsBegin

接下来是事件的响应。首先看SubView能否处理这个事件,如果不能则会将事件传递给其上级视图(SubView的superView);如果上级视图仍然无法处理则会继续往上传递;一直传递到视图控制器view controller,首先判断视图控制器的根视图view是否能处理此事件;如果不能则接着判断该视图控制器能否处理此事件,如果还是不能则继续向上传 递;(对于第二个图视图控制器本身还在另一个视图控制器中,则继续交给父视图控制器的根视图,如果根视图不能处理则交给父视图控制器处理);一直到 window,如果window还是不能处理此事件则继续交给application处理,如果最后application还是不能处理此事件则将其丢弃

在事件的响应中,如果某个控件实现了touches...方法,则这个事件将由该控件来接受,如果调用了[supertouches….];就会将事件顺着响应者链条往上传递,传递给上一个响应者;接着就会调用上一个响应者的touches….方法

override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {if isHidden == true || alpha < 0.05 || isUserInteractionEnabled == false {return super.hitTest(point, with: event)}else{if self.point(inside: point, with: event) {return super.hitTest(point, with: event)}else{//1.有subView时交给subView 去响应for subview in self.subviews{let coverPoint = self.convert(point, to: subview)return subview.hitTest(coverPoint, with: event)}//2.没有subView时交给自己来响应,也就是说你无论在哪儿点击都会响应(扩大点击区域)//当然这里如果你想扩大到一定的返回,可以在此处加限制let isResponse:Bool = falseif isResponse {return self}else {return nil}//3.如果你不想当没有subView时就随便响应,j就返回nilreturn nil}}
}
了解UITouch 和 UIEvent
应用

1. hittest 扩大按钮点击范围: iOS 扩大UIButton的点击范围 - 简书

@implementation CustomButton- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {// 扩大点击区域的宽度和高度CGFloat expandWidth = 20.0;CGFloat expandHeight = 20.0;// 负值会让响应区域扩大CGRect largerArea = CGRectInset(self.bounds, -expandWidth, -expandHeight);// 返回点是否在扩展后的区域内return CGRectContainsPoint(largerArea, point);
}@end

2. 管理点击事件

UIResponder 的 nextResponder属性:响应链之nextResponder - 简书

动画

iOS开发系列--让你的应用“动”起来 - KenshinCui - 博客园

iOS动画-CAAnimation使用详解 - 简书

动画类型

  • CALayer(bounds,position,anchorPoint,transform等)
  • Core Animation(基础动画,关键帧动画,动画组,转场动画,逐帧动画)
  • UIView动画封装(基础动画,关键帧动画,转场动画)

UIView封装动画存在的问题:

1:不能控制动画的暂停

2:不能进行动画的组合

。。。

这里就需要了解iOS的核心动画Core Animation(包含在Quartz Core框架中)。在iOS中核心动画分为几类:基础动画、关键帧动画、动画组、转场动画。

应用

按钮缩放、抖动动画(使用CAKeyframe实现)

iOS呼吸动画 | 迈腾大队长

https://www.cnblogs.com/sundaysgarden/articles/9252348.html

Lottie 和 PAG

从解码渲染层面对比 PAG 与 lottie - 简书

配置文件

Lottie: Json

PAG: 自研二进制文件

了解Lottie Json 文件大概内容,如何修改

性能优化

卡顿优化、内存优化、启动优化、WKWebview 启动优化、包体积优化、CPU 占用率使用时崩溃率耗电量监控流量监控网络状况监控、等等

iOS - 性能优化 - 简书

iOS面试题:对程序性能的优化你有什么建议? - 简书

内存优化

深入探索iOS 内存优化

内存管理-内存分区


iOS 内存五大区 - 简书

  • 堆区:是由程序员分配和释放,用于存放运行中被动态分配的内存段。大小不定,可增加和缩减。
  • 栈区:栈是由编译器分配和释放,用于存放程序临时创建的变量、函数的参数、局部变量等。
  • 全局(静态)区:是编译时分配的内存空间,在程序运行过程中,此内存中的数据一直存在,程序结束后由系统释放。static 修饰的变量(全局变量)始终保存到常量区。
  • 常量区:是编译时分配的内存空间,在程序结束后由系统释放。存放的是常量,是一块特殊的区域。
  • 代码区:用来存放函数的二进制代码,它是可执行程序在内存中的镜像。代码段需要防止在运行时被非法修改,只允许读操作,不允许写操作。

内存问题

 iOS 内存优化之工具介绍 - 掘金

 iOS 内存泄漏排查方法及原因分析 - 简书

  • 内存泄漏:是指申请的内存空间使用完毕之后未回收,主要由循环引用引起,例如block 里引用self,delegate 没有使用weak 修饰,Timer 定时器没有 invalidate, 置为 nil
  • 野指针:是指引用一个已经释放的内存空间,例如assign 修饰对象,对象创建即释放,只剩一个指针。
  • 内存溢出:是指程序在申请内存时,没有足够的内存空间供其使用。

内存问题检测

iOS 内存泄露、野指针调试技巧_weixin_30515513的博客-CSDN博客

  • 野指针:选中Edit Scheme,并点击 Run -> Diagnostics -> Enable Zombie Objects 设置

        完 之 后,重新运行。

  • 内存泄漏:Analyzer(静态分析);MLeaksFinder (第三方工具);Instruments Leaks (动态检测);排除法

引用计数(ARC, MRC)

+1:alloc, retain, copy,mutableCopy,new

-1:release

引用计数为0,对象释放; 谁引用,谁释放

属性修饰符

 IOS中(assign,retain,copy,weak,strong)的区别以及nonatomic的含义

MRC: assign,retain,copy

ARC: strong,weak

readwrite,  nonatomic

Weak 和 Unowned

weak

  • 用于避免强引用循环。
  • 当引用的对象被释放后,weak引用会自动被设置为nil,避免了悬挂指针(dangling pointers)。
  • 可以在声明时使用可选类型(optional)来表示weak引用,因为它可能为nil。

unowned

  • 也用于避免强引用循环。
  • 不会被自动设置为nil,所以在对象被释放后,如果你访问了一个unowned引用,会导致野指针(野引用)错误。
  • 通常用于你确切知道引用的对象在引用生命周期内不会被释放的情况,否则会导致崩溃。

卡顿优化

卡顿原因

iOS 保持界面流畅的技巧 | Garan no dou
iOS 底层 - 性能优化之CPU、GPU - 简书

iOS 底层原理 - 性能优化 - 知乎

计算机系统中 CPU、GPU、显示器是协同工作的。CPU 计算好显示内容(如视图的创建、布局计算、图片解码、文本绘制等)提交到 GPU,由 GPU 进行变换、合成、渲染,GPU 渲染完成后将渲染结果放入帧缓冲区,随后视频控制器会按照 VSync 信号逐行读取帧缓冲区的数据,经过可能的数模转换传递给显示器显示。

优化方案

CPU

  • 耗时操作放入子线程;如图片解码、尺寸计算、文本绘制等;
  • 控制线程的最大并发数量;
  • 提前计算好布局,在有需要的时候一次性调整对应属性,不要多次修改;
  • 尽量用轻量级的对象 如:不用处理事件的 UI 控件可以考虑使用 CALayer;
  • 不要频繁地调用 UIView 的相关属性 如:frame、bounds、transform 等;

GPU

相关文章:

iOS 知识点记录

王巍 博客地址:OneVs Den git地址:onevcat (Wei Wang) GitHub 江湖人称喵神,目前就职于line。喵神的博客涉及方面比较广, 有Obejctive-C, Swift, SwiftUI, Unity等等。博客内容很有深度,非常值得关注。 戴铭 博客地址:戴铭的博客 git地址:ming1016 (戴铭) GitHub 《i…...

C++系列-STL中搜索相关算法

STL中search相关算法 &#x1f4a2;search相关算法&#x1f4a2;&#x1f4a2;search算法举例&#x1f4a2;&#x1f4a2;search_n算法举例&#x1f4a2;&#x1f4a2;binary_search算法举例 &#x1f4a2; lower_bound&#x1f4a2; upper_bound&#x1f4a2; lower_bound和up…...

5.C++程序中的注释

我们来看上节所写的程序 #include <iostream> using namespace std;void prnt() //打印A {cout << "printA" << endl; }int main() {prnt();return 0; } 上面的程序中“//打印A”&#xff0c;表示说明当前函数是打印内容的函数&#xff0c;具体…...

com.kingbase8.util.KSQLException: ERROR: permission denied for table xxx

前言 在信创改造中&#xff0c;数据库替换为国产数据库是不可缺少的一部分。而可替换选项中多数选项无非是人大金仓和达梦数据库二选一。本文将介绍人大金仓在使用过程的问题以及解决办法。 问题 在使用人大金仓数据库后&#xff0c;程序运行报错 com.kingbase8.util.KSQLEx…...

开发小程序

由于之前购入的阿里云ECS放着落灰&#xff0c;碰巧又看到个有趣的项目&#xff0c;于是就做了个生成头像的小程序…由于第一次完整发布小程序&#xff0c;记录一下遇到的问题 小程序名称&#xff1a;靓仔创意头像 &#x1f602; 关于小程序 接口请求&#xff0c;在开发过程中…...

JS考核答案

1.请简述var, let, const的区别&#xff1f; &#xff08;1&#xff09;块级作用域&#xff1a;块作用域由 { }包括&#xff0c;let和const具有块级作用域&#xff0c;var不存在块级作用域。块级作用域解决了ES5中的两个问题&#xff1a; 内层变量可能覆盖外层变量 用来计数的…...

高德地图2.0 绘制、编辑多边形覆盖物(电子围栏)

1. 安装 npm i amap/amap-jsapi-loader --save移步&#xff1a;官方文档 2. map组件封装 <script lang"ts" setup> import AMapLoader from amap/amap-jsapi-loader import { onMounted, ref } from vue import { propTypes } from /utils/propTypesdefineO…...

MySQL底层为什么选择用B+树作为索引

首先&#xff0c;我们来想想为什么这么多数据结构&#xff0c;为什么要用树这种数据结构&#xff1f; 众多的数据结构在逻辑层面可分为&#xff1a;线性结构 和 非线性结构。 线性结构有&#xff1a;数组、链表&#xff0c;基于它们衍生出的有哈希表&#xff08;哈希表也称散…...

MATLAB系列05:自定义函数

MATLAB系列05&#xff1a;自定义函数 5. 自定义函数5.1 MATLAB函数简介5.2 在MATLAB中传递变量&#xff1a;按值传递机制5.3 选择性参数5.4 用全局内存分享数据5.5 在函数两次调用之间本地数据的存储5.6 函数的函数(function functions)5.7 子函数和私有函数5.8 总结 5. 自定义…...

C++速通LeetCode简单第20题-多数元素

方法一&#xff1a;暴力解法&#xff0c;放multiset中排序&#xff0c;然后依次count统计&#xff0c;不满足条件的值erase清除。 class Solution { public:int majorityElement(vector<int>& nums) {int ans 0;multiset<int> s;for(int i 0;i < nums.s…...

回收站永久删除的文件还能恢复吗?教你恢复技巧

在数字时代&#xff0c;电脑是我们工作、学习和娱乐的重要工具。然而&#xff0c;随着我们对电脑的频繁使用&#xff0c;误删文件的情况也时有发生。当我们在回收站中不小心永久删除了某个重要文件时&#xff0c;内心可能会充满焦虑和疑惑&#xff1a;这些文件还能恢复吗&#…...

Python Web 微服务架构全面解析与实战指南

Python Web 微服务架构全面解析与实战指南 目录 &#x1f3d7;️ 微服务基础概念 微服务架构与单体架构的对比微服务的优点与挑战 &#x1f504; 服务间通信 使用REST、gRPC或消息队列实现服务通信API网关的使用&#xff08;如Kong、Traefik&#xff09; &#x1f50d; 服务…...

SEAFARING靶场漏洞攻略

寻找漏洞 一&#xff0c;我们打开页面 第一个漏洞 xss漏洞 1.在登录页面显示有弹窗 第二个漏洞 sql注入漏洞 1.在输入框的地方输入-1 union select 1,2,3#我们来查看他的回显点 2.查看数据库表名 -1 union select 1,database(),3# 3.查看表名 -1 union select 1,2,group…...

ROS 编程入门的介绍

2.1 创建 ROS 功能包 ROS&#xff08;Robot Operating System&#xff09;是一种开源的机器人软件框架&#xff0c;广泛用于机器人开发中。通过使用 ROS&#xff0c;开发者可以轻松创建和管理机器人应用程序。在本节中&#xff0c;我们将介绍如何创建一个 ROS 功能包并实现一些…...

第十一章 抽象类与接口

一、抽象类和抽象方法 抽象类&#xff1a;使用abstract修饰的类 抽象方法&#xff1a;在类中没有方法体的方法&#xff0c;称为抽象方法&#xff0c;抽象方法用abstract修饰 抽象类中可以没有抽象方法&#xff0c;包含抽象方法的类必是抽象类 如果子类没有实现父类中的全部…...

请问企业的八大金刚系统是哪些?有什么共同点和区别?

我的理解的八大金刚包括&#xff1a;MES、ERP、WMS、OMS、CRM、SCM、SRM、PLM。 这些系统的主要功能及运用领域是哪些方面?他们互相之前有什么区别&#xff1f;选择时哪些是企业可能根据自身需求选择的必选项目或可选项目&#xff1f; 由于某些系统的必选性取决于企业的具体业…...

【入门】配置 Java 应用程序的完整指南

前言&#xff1a; Java 是一种广泛使用的编程语言&#xff0c;具备跨平台的特性&#xff0c;使得其应用程序可以在多种环境中高效运行。本文将介绍如何将 Java 应用程序从开发环境部署到生产环境&#xff0c;确保其能够稳定、稳定地运行运行。 确定运行环境 Java程序可以运行…...

flutter widget 设置GestureDetector点击无效

有可能是被上层的widget挡住了&#xff0c;虽然你看得到这个widget&#xff0c;但是操作不到。使用相对布局Stack要特别注意&#xff0c;这种布局会和Android一样&#xff0c;先写的布局放在下层&#xff0c;后写的&#xff0c;如果范围较大的话&#xff0c;会盖在之前的widget…...

基于SpringBoot的在线教育平台的设计与实现

文未可获取一份本项目的java源码和数据库参考。 选题的背景与意义&#xff1a; 随着互联网时代信息技术的不断发展&#xff0c;线下已经产生了很多IT技术的培训机构&#xff0c;但是价格却十分昂贵并且需要人们持续不断的去具体培训地点学习&#xff0c;因此更需要一个课程优…...

Django_Vue3_ElementUI_Release_004_使用nginx部署

1. nginx安装配置 1.1 下载nginx Download nginx 1.2 测试一下 1.3 进入nginx用命令操作 2. 部署 2.1 前端部署 2.1.1 修改nginx监听配置 …conf/nginx.conf http {... # 这里不进行修改server {listen 8010; # 监听 80 端口server_name 192.168.10.24; # 输入服务器 ip…...

Catia学习教程

写在前面 自学Catia的时候发现大部分教程在隔壁B站&#xff0c;CSDN上教程比较少&#xff0c;记录一下自己的学习过程&#xff0c;要有一定的AutoCAD和Solidworks基础&#xff0c;很多指令是相似的。 一、软件简介 CATIA&#xff08;Computer Aided Three-dimensional Intera…...

图像处理中的频域魔法:用傅里叶变换消除噪点与增强细节的3种技巧

图像处理中的频域魔法&#xff1a;用傅里叶变换消除噪点与增强细节的3种技巧 当你在处理一张模糊的医学影像或卫星图片时&#xff0c;是否想过那些隐藏在像素背后的频率秘密&#xff1f;傅里叶变换就像一台精密的频谱分析仪&#xff0c;能将图像从空间域转换到频域&#xff0c…...

具身智能“标准线”划定,行业分化加剧?

近期具身智能行业有两件大事&#xff0c;宇树科技计划 IPO&#xff0c;首个行业标准发布。这两条“标准线”的确立&#xff0c;或使品牌和投融资市场迎来马太效应&#xff0c;推动行业分化。标准确立&#xff0c;行业分化开端具身智能行业的两件大事看似关联不大&#xff0c;实…...

Nacos 2.2.0连接达梦数据库踩坑实录:从驱动版本到SQL脚本的完整避坑指南

Nacos 2.2.0与达梦数据库深度适配实战&#xff1a;从驱动选型到容器化部署的全链路解析 当微服务架构遇上国产数据库&#xff0c;技术适配的每个环节都可能成为关键战场。最近在将Nacos 2.2.0与达梦数据库进行生产级适配时&#xff0c;我经历了从驱动版本冲突到SQL脚本优化的完…...

BiLSTM时间序列预测实战:用Python搞定股票价格预测(附完整代码)

BiLSTM金融时间序列预测&#xff1a;从理论到实战的Python完整指南 金融市场如同汹涌的海浪&#xff0c;价格波动背后隐藏着无数投资者的决策与情绪。对于量化分析师和算法交易者而言&#xff0c;准确预测这些波动意味着巨大的商业价值。传统的时间序列分析方法如ARIMA在面对非…...

C#安装步骤以及流程易出错提醒修正

C# 开发环境安装步骤 Visual Studio 安装 从 Microsoft 官网 下载 Visual Studio Community&#xff08;免费版本&#xff09;。运行安装程序&#xff0c;选择“使用 C# 的桌面开发”工作负载&#xff0c;确保勾选 .NET SDK 和核心组件。 验证安装 打开命令提示符或 PowerShe…...

解锁Joplin无缝笔记体验:3大场景实现全平台知识管理自由

解锁Joplin无缝笔记体验&#xff1a;3大场景实现全平台知识管理自由 【免费下载链接】joplin Joplin 是一款安全笔记记录与待办事项应用&#xff0c;具备跨平台同步功能&#xff0c;支持 Windows、macOS、Linux、Android 和 iOS 平台。 项目地址: https://gitcode.com/GitHub…...

FireRedASR Pro实战教学:如何用pydub解决采样率偏差问题

FireRedASR Pro实战教学&#xff1a;如何用pydub解决采样率偏差问题 1. 问题背景与挑战 语音识别技术在实际应用中常常会遇到一个棘手问题&#xff1a;采样率偏差。当输入音频的采样率与模型训练时的采样率不一致时&#xff0c;会导致识别结果出现"加速"或"变…...

破局 AIGC 检测重围:PaperXie 如何让论文从 “机器量产“ 回归 “学术原创“——3000 字深度解构双效降重新范式

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AIPPThttps://www.paperxie.cn/weight?type1https://www.paperxie.cn/weight?type1 引言&#xff1a;当学术写作撞上 AIGC 检测&#xff0c;毕业与投稿的双重困局凌晨两点的图书馆&#xff0c;屏幕上刺眼…...

别再死记硬背!用Python(SymPy库)自动推导DC-DC变换器的小信号模型

用Python解放双手&#xff1a;SymPy自动推导DC-DC变换器小信号模型的工程实践 当电源工程师面对Buck、Boost电路的小信号模型推导时&#xff0c;那些繁琐的矩阵运算和拉普拉斯变换是否让你头疼不已&#xff1f;传统手工推导不仅耗时费力&#xff0c;还容易在代数运算中出错。本…...