sunzhongliang

好心态才有好状态

PLC指令

数据寻址 立即寻址 可以立即进行运算操作的数据叫立即数,对立即数直接进行读写的操作寻址称为立即寻址。 立即寻址在指令中通常以常数形式出现,其形式可以按照二进制、十进制、十六进制形式编写。 二进制形式:2#101 16进制形式:16#12F 十进制形式:190 直接寻址 直接寻址 是指指令中直接使用存储器或寄存器地址编号,直接到指定的区域读取或写入,如VB0,VW20等等 间接寻...

GithubAction持续集成

Github Action介绍 Github Action是一种持续集成和持续交付(CI/CD) 平台,可用于自动执行生成、测试和部署管道,它是Github提供的持续集成服务,在2018年的时候推出。每个Github账户每个月都有固定的免费时长用于构建,超出免费时长后收费 计划 存储 分钟数(每月) ...

flutter性能优化

const修饰的widget 对于一些不会改变的widget,flutter推荐我们使用const来修饰,这样在重绘界面时,会尽量复用已经存在的 element 节点 那么如果我们的 widget 被定义成 const,在 updateChild() 更新阶段,新旧 widget 就是同一个对象,则不会重建 widget,其背后的 elment 也不会更新,自然能起到了缓存复用的作用,加快构...

Dart语法简介

main // main函数入口 main() { print("你好, dart"); } // 表示main函数没有返回值 // 在这里写方法,也能运行 void main() { print("你好, dart"); } 变量与常量 变量 使用var来定义变量,可以自动推断变量类型 var str = "this is a string"; 也可以使用具体的...

iOS包体积优化

背景 早些年的iPhone在非WiFi模式下下载APP限制为几十MB,超过这个大小就强制必须使用WiFi下载,虽然苹果官方这些年一直在提高这个大小限制,如今的iOS 13下载超过200MB的安装包时会默认弹框请求用户是否继续下载,如果APP的安装包体积更小,则可以提高整体更新率,减少用户等待时间,更快的触达用户,因此安装包瘦身是APP优化中的重要一环。 资源瘦身 大资源文件通过运行下载 ...

写出好代码的几个要素

前言 虽说我们编写的代码最终都会编译成机器码供操作系统运行,在运行我们的代码只要不出现异常就好;那为什么还会存在软件设计架构这个话题呢?其实际上无外乎涉及到以下几个方面 代码首先是要人来阅读的,如果你的代码没有一点架构、规范、注释等等,那么阅读起来就非常困难 不好的代码,后期去修改不仅费时费力,而且还很容易产生bug 我们不能保证我们写的代码没有任何问题,如果出现问题,一个好...

swift当中的copy on write

前言 我们都知道,在函数中有两种传值方式: 值类型和引用类型, 而值类型有一个copy的操作,它的意思是当你传递一个值类型的变量的时候(给一个变量赋值,或者函数中的参数传值),它会拷贝一份新的值让你进行传递。你会得到拥有相同内容的两个变量,分别指向两块内存。 这样的话,在你频繁操作占用内存比较大的变量的时候就会带来严重的性能问题,Swift 也意识到了这个问题,所以推出了 Copy-on-W...

缓存淘汰算法LRU与LFU

LRU(Least Recently Used) LRU(Least Recently Used),即:最近最少使用,是一种常见的置换算法;LRU算法的设计原则是:如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小。 简单来说,就是在限定容量的cache中,当超过临界容量时,优先把近期最少使用的数据删除掉。 常见的做法是使用一个双向链表来实现 对于cache的操作来说...

iOS签名机制

从0开始深入理解iOS的签名机制 前言 假设Alice、Bob两个人现在要互相发信息,但有一个不怀好意的Eve想要窃听他们之间的消息 如何防止被不怀好意的人窃听? 通过一个加密手段,消息的发送者通过一个密钥将消息的内容加密后,然后再发送给接收方Bob,Bob收到加密的消息内容之后,然后再利用密钥进行解密即可 由于监听者Eve没有密钥,此时它只能监听到加密的内容,无法查看真正的...

iOS系统函数crash解析

前言 当我们有时候拿到Crash日志,发现里面都有很多的<redacted>,日志里面有一个很明显的特征是没有APP内的方法调用,全部都是系统库的调用,用dSYM也无法解析,比如这样: OS Version: iOS 14.8.1 (18H107) Report Version: 104 Exception Type: EXC_BAD_ACCESS (SIGBUS) Excep...