参考链接

Kuikly - 组件

Pager

Pager为Kuikly页面的入口类,类似iOS UI中的VC, Pager也有类似VC的生命周期:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// 已创建
override fun created() {
super.created()

}

// 页面在屏幕上可见
override fun pageDidAppear() {
super.pageDidAppear()

}

// 页面在屏幕上消失
override fun pageDidDisappear() {
super.pageDidDisappear()

}

// 页面即将消失
override fun pageWillDestroy() {
super.pageWillDestroy()

}
阅读全文 »

Kuikly是基于Kotlin MultiPlatform(KMP)构建的跨端开发框架, 支持Android、iOS、HarmonyOS和H5/小程序等多个平台, 据 PCG 开发团队的报告, Kuikly 可以提升团队 85%的开发效率.
这里记录一些我自己使用 Kuikly 遇到的一些坑, 希望后面能少点踩坑吧.

阅读全文 »

SDWebImage 是iOS 开发最流行的异步图片加载框架, 其中的缓存模块 SDImageCache 有一个很精巧的设计弱引用缓存, 源码参考

1
@property (nonatomic, strong, nonnull) NSMapTable<KeyType, ObjectType> *weakCache; // strong-weak cache

在我们的项目中引入了这个小修改, 整体的缓存命中率有1%左右的提升,

是否开启 内存缓存命中率 磁盘缓存命中率 下载命中率
开启弱引用缓存 67.99% 21.36% 10.67%
不开启弱引用缓存 66.76% 21.99% 11.25%
阅读全文 »

在 GitHub 上确实有不少优秀且实用的 iOS 图片编辑相关的开源项目和 Demo。这些项目覆盖了基础编辑(裁剪、旋转、调整)、滤镜应用、涂鸦、贴纸添加、高级特效等功能。以下是一些值得关注的项目,适合学习和集成:


🛠 一、功能较全的图片编辑框架

  1. TOCropViewController

  2. YPImagePicker

阅读全文 »

最近遇到一个问题, 需要定位到 TableView 的某一行, 历史代码是使用

1
- (CGRect)rectForRowAtIndexPath:(NSIndexPath *)indexPath;

获取到对应的cell 在 TableView 上的位置, 然后再根据业务做了一些简单的计算, 最后使用

1
- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated;

跳转到最终的位置.

但是由于这个业务比较复杂, 为了性能, 开启了预估行高(estimatedHeightForRowAtIndexPath), 实际上, TableViewCell 的高度也根据业务各不一样, 预估值也与实际情况出入较大, 导致上面的 setContentOffset 跳到了不正确的行高.

阅读全文 »

团队协作培养

团队融入

  • 信任建立
    • 主动引荐新人认识团队
    • 通过日常接触(饭搭子 / 散步/ 运动健身)、非正式交流(咖啡 / 奶茶)消除心理屏障,
      • 工作生活上的经验分享
      • 需求进度卡点交流
  • 合理授权
    • 鼓励新人独立负责任务 (了解新人是什么样的类型)
      • 爱学习的人可以减少干扰, 以答疑为主, 引导独立思考并发表观点
      • 偏懒惰的人需要积极引导, 必要时可以请上级出面帮忙给点压力
    • 导师适时把关,避免亲力亲为。
阅读全文 »

原文地址

知其然,然后知其所以然。本文主要是对学习赛博活佛Andrej Karpathy 7个小时教学视频的总结和拓展阅读笔记,推荐去看原视频,很精彩,链接在文末。从最常用的聊天应用过程分析开始,引入对话过程原理浅析,再到LLM训练过程;再结合当前主流的应用形式,在得知最新用法的同时,加深对LLM的理解;再谈谈AI的最新重大进展MCP;以及作为JAVAer,在Java领域有哪些前沿能力去整合LLM。

最后再罗列一下在公司内部一些AI平台、工具。最好的学习方法是带着问题去寻找答案,以费曼学习法为标准,产出可教学的资料。本文是个人所学梳理和所想记录,作为AI的小白,个人知识有限,难免有所错误、疏漏,请及时纠偏、不吝赐教,感谢。

阅读全文 »

最近做需求时候, 遇到一个后端联调问题, 需求是 后端A 把一个 json 转成 string 后放到 scheme 的payload参数中, json 如下, text1 是一个字符串,

1
2
3
4
{
"text1": "今天是个好日子",
"trackID1": 123456
}

转换为字符串payload后变成

1
{\"text1\":\"今天是个好日子\",\"trackID1\":123456}

scheme 大致如下:

1
scheme://test/ui/func?p={"hintPayload":"{\"text1\":\"今天是个好日子\",\"trackID1\":123456}","param2":"9"}

然后对 scheme 转义, 下发给客户端, 客户端在解析 scheme 后, 获取各个参数, 然后把payload 字符串给另一个业务后端B.
自测阶段没什么问题, 但是测试发现text1中有换行符以及"时候就不行了, 客户端问题就出在解析 scheme 时候, 会对参数做一次 string 转 json 处理, 这次处理失败了.

阅读全文 »

原文地址

1、前言

众所周知,微信在后台服务器不保存聊天记录,微信在移动客户端所有的聊天记录都存储在一个 SQLite 数据库中,一旦这个数据库损坏,将会丢失用户多年的聊天记录。而我们监控到现网的损坏率是0.02%,也就是每 1w 个用户就有 2 个会遇到数据库损坏。考虑到微信这么庞大的用户基数,这个损坏率就很严重了。更严重的是我们用的官方修复算法,修复成功率只有 30%。损坏率高,修复率低,这两个问题都需要我们着手解决。

阅读全文 »