自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 iOS-跳转到系统蓝牙

/ 也可以使用通用设置URL作为备选。// 跳转到系统蓝牙设置。

2026-01-24 18:23:46 127

原创 Coreblutooth蓝牙

print("属性: \(characteristic.properties)")print("发现特征: \(characteristic.uuid)")serviceUUID = CBUUID(string: "180D") // 心率服务。print("发现服务: \(service.uuid)")print("写入失败: \(error)")print("信号强度: \(RSSI)")print("收到数据: \(data)")print("字节: \(bytes)")print("连接成功")

2025-12-05 15:07:47 486

原创 蓝牙的传输本质

蓝牙的本质传输使用的是‌‌,而非TCP/IP或UDP协议。蓝牙协议栈包含物理层、数据链路层、中间层协议和应用层协议,支持多种应用场景(如音频传输、文件共享等)。‌12。

2025-11-21 17:05:11 457

原创 Swift的高阶函数

Swift 中的高阶函数是指那些可以接受函数作为参数或返回函数的函数。它们常用于函数式编程风格,简化集合数据的处理。这些函数在 Swift 的标准库中定义,主要用于数组、字典等集合类型。它们让代码更简洁、易读。如果你需要具体示例或更详细的解释,请随时提问!把所有的高阶函数都列出来J已深度思考(55.3s)Swift 中的高阶函数是指那些可以接受函数(或闭包)作为参数,或者返回函数的函数。它们主要用于处理集合数据(如数组、字典、集合等),并支持函数式编程风格。

2025-11-20 17:54:14 682

原创 https的原理

加密(Confidentiality)通过混合加密机制,防止通信内容被窃听。即使数据被截获,没有密钥也无法解密。认证(Authentication)通过数字证书验证服务器的身份,防止你访问到假冒的网站(比如钓鱼网站)。完整性(Integrity)使用摘要算法(如HMAC)为数据生成一个"指纹",接收方会校验这个指纹。如果数据在传输中被篡改,校验就会失败,从而发现数据不完整。所以,当你看到浏览器地址栏出现一把小锁(🔒)和https://时,就意味着你的连接是经过上述复杂而精妙的过程保护的。

2025-11-19 17:32:56 1210

原创 iOS的蓝牙

print("📥 收到 \(bytesRead) 字节: \(data.hexString)")-- 你的协议字符串 -->print("❌ 发现服务失败: \(error.localizedDescription)")print("❌ 发现特征失败: \(error.localizedDescription)")print("❌ 读取数据失败: \(error.localizedDescription)")print("❌ 写入失败: \(error.localizedDescription)")

2025-11-19 14:15:38 957 1

原创 Swift-协议写扩展的妙用类似抽象类的感觉

这种"协议 + 提供默认实现的扩展"减少样板代码- 避免在每个类型中重复编写相同的默认实现提高开发效率- 开发者只需关注需要定制的部分保持灵活性- 仍然允许在需要时覆盖任何默认行为明确设计意图- 清晰区分必需和可选的功能这是一种符合 Swift 协议导向编程(Protocol-Oriented Programming)最佳实践的设计方式。

2025-11-19 13:46:21 672

原创 MMKV-键值对高效存储

MMKV 可以理解为是的“高性能升级版”。它通过内存映射 (mmap)和协议缓冲 (Protobuf)这两项核心技术,在保证数据安全的前提下,极大地提升了读写性能,同时提供了非常友好的 API。对于大多数需要本地轻量存储的场景,MMKV 都是一个非常优秀的选择。

2025-11-19 13:38:50 703

原创 UI相关知识

⏺ | 特性 | Plain | Grouped |return section == 0?| 设置页面 | .insetGrouped (iOS 13+) | 清晰分组,现代设计 || 表单页面 | .grouped 或 .insetGrouped | 分组清晰 |

2025-11-19 12:21:26 769

原创 Socket的粘包

print("十六进制: \(buffer.map { String(format: "%02X", $0) }.joined(separator: " "))")data.append(Data(count: MESSAGE_LENGTH - data.count)) // 填充 0。print("🔚 断开连接: \(reason), code: \(code)")) // 5 字节。

2025-11-17 14:56:14 332

原创 SwiftUI的生命周期

SwiftUI 的生命周期管理更加声明式和自动化,开发者只需关注状态变化和关键生命周期事件,框架会自动处理视图的创建、更新和销毁。Text("测试").modifier(LifecycleTracker(name: "文本视图"))print("标签页变化: \(oldTab) → \(newTab)")print("搜索词变化: \(old) → \(new)")3. 相位变化跟踪 (`.onChange(of: scenePhase)`).onAppear { print("只调用一次") }

2025-11-14 14:12:50 198

原创 Swift中View和ViewController的生命周期

text。

2025-11-14 13:59:17 646

原创 swift中的NSHashTable<ObjectType>

print("Swift Set: \(Date().timeIntervalSince(start3))s") // 编译错误,TestObject 需要 Hashable。pointerArray.addPointer(Unmanaged.passUnretained(obj1).toOpaque()) // 可以重复。| 特性 | Set | NSMutableSet | NSHashTable.weakObjects() |

2025-11-14 10:37:06 889

原创 swift中defer的使用

return // ✅ defer 会先执行 unlock(),然后再 return。deferTrap1() // 输出: 10(defer 最后执行,此时 value 已经是 10)defer { lock.unlock() } // 多个返回路径,必须用 defer。return // 提前返回,unlock() 不会执行!defer { print("第1个defer") } // 最后执行。defer { print("第3个defer") } // 最先执行。

2025-11-14 10:29:48 941

原创 最清晰的解释结构体和类在项目中使用的场景

print("Class: \(Date().timeIntervalSince(start2))s") // ~0.15s(慢 50%)// user2 = User(name: "Charlie") // ❌ 不能改引用。| 内存 | 栈(小)/堆(大) | 堆 || 继承 | ❌ | ✅ || 多态 | ❌ | ✅ |

2025-11-14 10:15:05 402

原创 Swift的逃逸闭包

escaping允许异步回调- 在函数返回后执行支持闭包存储- 可以保存在属性或数组中启用延迟执行- 通过 DispatchQueue 或定时器需要内存管理- 必须注意避免循环引用在你的蓝牙命令场景中,@escaping是必需的,因为蓝牙通信是异步的,响应会在未来的某个时间点到达,而不是在函数执行期间。

2025-11-11 16:17:18 952

原创 Swift-Enum

swiftcase northcase southcase eastcase west// 简写方式swiftswift。

2025-11-11 09:21:24 574

原创 Swift的Runloop和NSObject

swift// 时间间隔类型// 便捷构造方法swift// 添加端口保持 RunLoop 运行// 处理网络请求。

2025-11-10 16:44:52 752

原创 Swift-GCD和NSOperation

iOS的GCD和NSOperation的swift版本,全部知识体系。

2025-11-10 16:39:29 969

原创 Swift-snapKit使用

snapKit的使用注意SnapKit 是一个优秀的 Swift Auto Layout 库,但在使用中需要注意一些重要事项。

2025-11-10 16:25:46 830

原创 Swift-static和class

staticswift// 实现协议要求print("初始化设置")特性staticclass存储属性✅ 支持❌ 不支持计算属性✅ 支持✅ 支持可重写性❌ 不可重写✅ 可重写适用类型类、结构体、枚举仅类内存特性全局唯一全局唯一访问方式理解这个区别对于设计良好的 Swift 代码架构非常重要!

2025-11-10 16:17:13 744

原创 Swift-高级特性

/ 是否在新手引导中 @objc dynamic var isInGuide = false { didSet { log.info("D3200 MFIDataManager isInGuide: \(isInGuide)") } }解释下这个。

2025-11-10 15:23:44 356

原创 SwiftUI

2025-11-08 18:26:20 290

原创 SwiftUI知识二

2025-11-08 18:12:31 105

原创 flutter-2024面试题

2024-04-113,671阅读10分钟。

2025-10-30 14:06:18 1192

原创 java-数据库

UPDATE employee SET employer_id = 1 WHERE name IN ('张无忌', '杨逍', '范遥', '谢逊', '殷天正', '韦一笑', '小昭', '殷离', '黛绮丝', '说不得', '冷谦', '周颠', '彭莹玉', '铁冠道人', '阳顶天');UPDATE employee SET employer_id = 2 WHERE name IN ('张三丰', '宋远桥', '俞莲舟', '张松溪', '殷梨亭', '莫声谷', '宋青书');

2025-10-30 11:27:24 771

原创 iOS-performSelecter

1.performSelecor 是延迟到运行时才会去检查方法是否存在,编译时不会检查方法是否存在,比如我们运行时添加一个方法,而在编译时是不存在的,所以就需要用perform来调用2.直接调用一般需要导入头文件或者声明方法,而perform不需要perform 如果想传递三个参数以上,有三种方式。

2025-10-24 11:27:56 771

原创 iOS的锁

性能从高到低大致排序(不同场景有差异):->OSSpinLock(已废弃) ->->->NSLock->->->->选择建议追求极致性能:使用(iOS 10+)或。需要递归:使用或。简单易用,不关心性能:使用。控制并发数:使用。读写分离:使用。理解各种锁的特性和适用场景,是编写高效、安全的多线程代码的关键。

2025-10-24 11:17:49 920

原创 iOS-类簇

类簇是 Foundation 框架中广泛使用的一种设计模式。它使用一个抽象的公共类(通常称为“抽象基类”)来对外提供简洁的接口,而将具体的、多样化的实现隐藏在幕后的一系列私有具体子类中。当你创建一个类的实例时,你实际上得到的不是这个公共类本身的对象,而是它某个私有子类的对象。NSNumberobjc// 你看起来是在创建 NSNumber 对象// 但实际上,你得到的是同一个私有子类 __NSCFNumber 的实例。

2025-10-24 11:13:06 613

原创 flutter-开发时出现的bug

点击修改到 修改手机号输入页面ChangeInputPhonePage, 由于使用了go_router框架, 所以由ChangePhonePage push进入的ChangeInputPhonePage, 当在ChangeInputPhonePage输入完成后,使用pop回到ChangePhonePage页面并带上了新的手机号, 在ChangePhonePage的push.then的回调中接收传递过来的新手机号,调用setState刷新,发现没有调用build方法,手机号没更新为新设置的手机号。

2025-10-22 11:28:44 274

转载 天机学堂-连接

https://blog.youkuaiyun.com/m0_67184231/article/details/135025767

2025-10-21 15:42:19 77

原创 Seata

XA 规范 是 X/Open 组织定义的分布式事务处理(DTP,Distributed Transaction Processing)标准,XA 规范描述了全局的TM与局部的RM之间的接口,几乎所有主流的数据库都对 XA 规范提供了支持。对于已经空回滚的业务,之前被阻塞的try操作恢复,继续执行try,就永远不可能confirm或cancel ,事务一直处于中间状态,这就是。重启微服务,现在微服务到底是连接tc的SH集群,还是tc的HZ集群,都统一由nacos的client.properties来决定了。

2025-10-21 15:21:20 840

原创 flutter-第二版

https://book.flutterchina.club/chapter3/input_and_form.html#_3-5-1-textfield

2025-10-20 13:13:21 93

原创 flutter-代码报红

如果项目中有多个壳工程, 主工程的pubspec.yml进行了pub get后,如果继续在壳工程中pub get,那么会生成ios、android、dev_tools文件夹并且报红,虽然可以运行项目,但是看着不舒服, 这种情况需要删除壳工程中的ios、android、dev_tools的文件夹,就不会报红了。注意:如果引入了新的插件时,只需要对主工程的pubspec.yml文件进行pub get就可以了。

2025-10-20 09:47:47 129

原创 flutter知识-RenderObject和Element

引用flutter之旅書中知识。

2025-10-09 14:09:34 143

原创 数据库的三大范式

范式核心要求解决的问题1NF字段原子性消除重复组,确保每个字段只包含一个值2NF完全依赖消除部分依赖,确保非主键字段完全依赖于整个主键3NF直接依赖消除传递依赖,确保非主键字段之间没有依赖关系。

2025-09-29 13:14:26 517

原创 flutter知识-Sliver布局

列表与滑动如何让组件更好地复用、处理不同的数据来展现不同的效果,是UI层面非常重要的内容,这就意味着抽离和封装的重要性。ListView、GridView等多子布局需要根据数据填充界面,动态修改条目的信息。今天将全面介绍ListView、GridView、PageView等支持滑动的组件,这也是一个页面中的重要组成部分,最后介绍Sliver家族的酷炫滑动效果。

2025-09-22 09:42:36 180

原创 flutter知识-流式布局wrap

Wrap组件可以按顺序排列多个子组件,允许指定行列的间距。并且如果排列时轴向超过父组件区域,会自动换行。所有属性见下表:[插图]Wrap的轴向和轴向间距和Flex组件一样,direction属性可决定子组件排列的方向,有横向(Axis.horizontal)和纵向(Axis.vertical)两个选择(如下图)。Wrap可以很方便地实现组件间距,spacing属性是主轴方向的组件间距,runSpacing属性是交叉轴方向的间距。

2025-09-19 14:52:35 159

原创 flutter知识-stack布局

将一个个组件堆叠在一起是非常常见的场景,Flutter提供了Stack组件来实现这样的效果,如下所示,把五颜六色的色块堆在一起:

2025-09-19 14:48:49 167

原创 flutter知识-flex布局

2025-09-19 14:20:33 97

空空如也

空空如也

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

TA关注的人

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