- 博客(174)
- 收藏
- 关注
原创 真机 ARM64 架构转模拟器 ARM64 架构
本文字数:2051字预计阅读时间:15分钟01需要转换架构的原因老版 Mac 使用 Intel 芯片,是x86_64架构,相应地在老版 Mac 上运行的模拟器使用的也就是 x86_64架构。由于模拟器的 x86_64 架构与真机的 arm64、armv7 等架构不冲突,业界为了方便库文件管理,通常会将模拟器架构与真机架构通过 lipo 命令合并为一个 fat 文件。对于 Intel 芯片的 Mac...
2024-03-28 07:30:40 124
原创 Sentry(Android)源码解析
本文字数:16030字预计阅读时间:40分钟01前言Sentry是一个日志记录、错误上报、性能监控的开源框架,支持众多平台:其使用方式在本文不进行说明了,大家可参照官方文档:https://docs.sentry.io/platforms/android/?original_referrer=https%3A%2F%2Fsentry.io%2F目前大部分免费的三方APM平台限制较多,好用的又收...
2024-03-21 07:30:09 1195
原创 基于openresty构建运维工具链实践
本文字数:4591字预计阅读时间:2501导读如今OpenResty已广泛被各个互联网公司在实际生产环境中应用,在保留Nginx高并发、高稳定等特性基础上,通过嵌入Lua来提升在负载均衡层的开发效率并保证其高性能。本文主要介绍接口鉴权、流量控制以及记录追踪几个工具在实际生产环境中的应用实践,用于解决实际业务问题,提升业务运维效率,对于Openresty基本原理不再赘述。1.1 OpenResty简...
2024-03-14 07:31:39 1062
原创 搜狐新闻Hybrid AI引擎端侧离线大语言模型探索
本文字数:3027字预计阅读时间:20分钟01一、导读• LLM 以及移动平台落地趋势• 搜狐AI引擎内建集成离线可运行的GPT模型• Keras 定制预训练模型• TensorFlow Lite converter 迁移到移动设备02二、LLM1.1什么是LLMLLM(Large Language Models)大语言模型,是机器学习模型的一种,它...
2024-03-07 07:31:05 851
原创 Simhash在内容去重中的应用
本文字数:2873字预计阅读时间:15分钟01一、背景信息流个性化推荐场景中依赖爬虫抓取的海量新闻库,这些新闻中不乏互相抄袭的新闻,这些内容相似的文章,会造成内容的同质化并加重数据库的存储负担,更糟糕的是降低了信息流内容的体验。所以需要一种准确高效的文本去重算法。而最朴素的做法就是将所有文本进行两两比较,简单易理解,最符合人类的直觉,这种做法对于少量文本来说,实现起来很方便,但是对于海量文本来说是...
2024-02-29 07:30:46 667
原创 探秘DWARF文件
本文字数:1865字预计阅读时间:10分钟01简介DWARF全名是Debugging With Attribute Record Formats,是一种调试信息的存放格式。DWARF是一种通用的标准格式,很多编译器对其都有支持,并且DWARF支持C、OC、go等多种语言。DWARF的作用是对机器码和代码之间进行一个映射关系,用来为调试器DEBUG提供调试信息,告诉调试器代码和二进制如何关联,在代码...
2024-02-22 07:31:06 339
原创 初始mach-o文件及在项目中应用
本文字数:2250字预计阅读时间:15分钟01认识mach-o的必要性了解mach-o的结构可以帮助认识系统加载二进制文件的动态链接和静态链接。应用层面,使用initialize的c++函数计算启动时间耗时也需要以mach-o的结构知识为铺垫。还可以用在使用clang自注册启动任务上。后续会一一展开说明。02mach-o的定义mach-o是mach object的缩写,是存储程序或库的标准格式。a...
2024-02-01 07:30:41 469
原创 搜狐新闻客户端使用Kotlin之后对JSON解析框架的探索
本文字数:7488字预计阅读时间:45分钟01引言自2017年Google发布Kotlin语言之后,Android开发由原来的Java开始向Kotlin过度,目前绝大部分Android开发岗位基本要求就是熟练使用Kotlin。事实上,很多有着多年历史的项目一开始是Java开发的,在Kotlin日渐趋于Android开发主流的过程中,混合开发成为许多项目的首选。我们的项目也是采用混合开发,面对拥有沉...
2024-01-25 07:30:24 720
原创 Flutter-Web从0到部署上线(实践+埋坑)
本文字数:7743字预计阅读时间:60分钟01前言首先说明一下,这篇文章是给具备Flutter开发经验的客户端同学看的。Flutter的诞生虽然来自Google的Chrome团队,但大家都知道Flutter最先支持的平台是Android和iOS,至今最核心的维护平台依然是Android和iOS。由于dart语言的学习成本不高,Flutter的响应式UI与Comp...
2024-01-11 07:31:28 1067
原创 UICollection Compositional Layout全详解
本文字数:8325字预计阅读时间:45分钟01Collection View Layout全详解UICollectionView在iOS中是构建复杂布局的强大工具。iOS13中引入的 UICollectionViewCompositionalLayout为创建自定义布局提供了全新的可能性。本文将深入探讨Compositional Layout的工作原理,以及如何利用它创建复杂的分组、嵌套布局和增...
2024-01-04 07:30:45 1278 1
原创 OCR在审核应用落地
本文字数:6686字预计阅读时间:35分钟01背景1、业务背景在传统视频审核场景中,审核人员需要对进审视频中的文字内容进行逐一审核,避免在文字上出现敏感词、违禁词或者广告等相关词汇。这种人工审核费时费力,并且由于审核人员存在个体差异,审核尺度很难在整体上保持一致。针对当前问题我们提出以下解决方案:首先,使用OCR对视频帧进行文字识别;其次,使用审核系统当前关键词库对识别出来的文字进行关键词匹配;然...
2023-12-28 07:30:43 1245
原创 香色闺阁、微信IPA重签名实战
本文字数:1989字预计阅读时间:13分钟01背景换手机之后,原来的香色闺阁不能下载,转移的时候就丢失了。又最近看到有人截屏iPhone上装了两个微信,一个是自己重签名的;想到自己有开发者账号,但是还没试过重签名APP,是不是可以通过重签名来安装香色闺阁,以及实现多开微信?02步骤说干就干,首先从简单的开始,先来尝试重签名香色闺阁,再尝试微信,因为香色闺阁的包内容比微信的少很多,文件容易找,相对简...
2023-12-21 07:30:27 1266
原创 Android编译优化之Jetifier优化
本文字数:9048字预计阅读时间:40分钟在狐友项目的编译优化中,我们发现在 BuildAnalyzer 中有明确的 Warnings 提示,告知项目可以进行 Jetifier 优化。Jetifier是之前项目进行AndroidX迁移时引入的插件,它能辅助迁移三方库到AndroidX。Jetpack套件能够帮助你更轻松的搭建高质量的APP,它包括了依赖库、工具和指导。它通过最佳实践、模...
2023-12-14 07:30:56 1288
原创 深度解读 JS 构造函数、原型、类与继承
本文字数:6602字预计阅读时间:30分钟01前言众所周知,JavaScript 是一门面向对象的语言,而构造函数、原型、类、继承都是与对象密不可分的概念。在我们日常前端业务开发中,系统和第三方库已经为我们提供了大部分需要的类,我们的关注点更多是在对象的使用和数据处理上,而比较少需要去自定义构造函数和类,对原型的直接接触就更少了。然而,能深度理解并掌握好构造函数、原型、类与继承,对我们的代码设计大...
2023-12-07 07:30:10 397
原创 多文件并行上传方案设计
本文字数:2360字预计阅读时间:15分钟01背景抖音、快手等短视频 APP都有本地编辑视频并上传的功能,这里的上传指的就是上传视频文件,其实无论是上传视频还是其他文件,技术原理都是相同的。搜狐视频 APP的文件上传除了基础的上传功能外,还支持多个视频文件的上传处理,以串行的形式进行上传。并且,在单个视频文件的上传中,为了保证充分利用带宽,还设计了并行上传的逻辑。整体方案如下。02方案设计1、...
2023-11-09 07:30:41 112
原创 Compose-Multiplatform在Android和iOS上的实践
本文字数:4680字预计阅读时间:30分钟01简介之前我们探讨过KMM,即Kotlin Multiplatform Mobile,是Kotlin发布的移动端跨平台框架。当时的结论是KMM提倡将共有的逻辑部分抽出,由KMM封装成Android(Kotlin/JVM)的aar和iOS(Kotlin/Native)的framework,再提供给View层进行调用,从而节约一部分的工作量。共享的是逻辑而不...
2023-11-02 07:30:56 639
原创 如何使用PHPicker在iOS系统无授权下获取资源
本文字数:2766字预计阅读时间:18分钟自iOS14系统开始,苹果加强了用户隐私和安全功能。新增了“Limited Photo Library Access”模式,同时在授权弹窗中增加了“Select Photo”选项。这意味着用户可以在应用程序请求访问相册时选择部分照片供应用程序读取。从应用程序的角度来看,它只能访问到用户选择的这几张照片,无法得知其他照片的存在。然而,并非所有普通用户都能够正...
2023-10-26 07:30:46 350
原创 如何开发一个 Safari 插件
本文字数:2493字预计阅读时间:15分钟由于常用浏览器是Safari,而Safari浏览器的插件比不上Chrome,所以就有了自己开发常用的Safari插件的想法。打算开发当前页面生成二维码的Extension,因为网络原因,AirDrop有时候搜不到手机,所以有了这个需求,而且这个也比较简单,所以从这个开始。01调研苹果的官方文档safari_web_extensions给出了步骤,看了好...
2023-10-19 07:30:33 711
原创 安卓camera2获取到的YUV420_888格式详解
本文字数:7885字预计阅读时间:45分钟安卓音视频开发中的一个环节是摄像头采集数据,而Android平台上摄像头采集的 API 有两套,camera1 和 camera2。本文主要讲的是 camera2 这套 API 在采集数据并指明 YUV420_888 格式时,获取到的摄像头 YUV 数据格式具体是怎么样的。01背景/问题之所以写这篇文章也是因为作者在开发过程中遇到了一些坑,然后在网上查...
2023-10-12 07:30:13 488
原创 直播流⻚⾯内存优化⽅案
本文字数:6628字预计阅读时间:39分钟01项目背景介绍项目中直播流每场直播由一张直播图片作为展示入口,用于提示用户此直播的概要。如下图:然而直播图片和容器的宽高比例出现不一致的情况。针对此情况,采取背景图contentmode展示为aspectFill且高斯模糊,上层高清图为 aspectfit,给用户一种图片填满且能清除获取信息的视觉体验。如下图:然而服务端下发直播的图片分辨率在10...
2023-09-21 07:30:26 196
原创 干净优雅的做iOS应用内全局交互屏蔽
本文字数:4930字预计阅读时间:28分钟01交互屏蔽的需求很多应用开发者都会遇到这样一个需求,当程序需要处理某个敏感的核心任务,或者执行某些动画时,需要杜绝一切外部干扰,优先保证任务的完成,之后再去处理其它任务。否则如果在处理过程中受到外部事件的干扰,可能会引入严重的问题,而规避这些问题需要额外编写过多的逻辑。例如,当程序在忙着清理应用内缓存的过程中去处理其它任务,这时候由于其它任务可能会产生新...
2023-09-14 07:30:29 409
原创 短信过滤 APP 开发
本文字数:7033字预计阅读时间:42分钟一直想开发一个自己的短信过滤 APP,但是一直没有具体实施,现在终于静下心来,边开发边记录下整体的开发过程。01垃圾短信样本遇到的第一个问题是,既然要过滤垃圾短信,那首先要识别哪些是垃圾短信?如何识别呢?参考之前训练识别钢管计数的经验,决定通过CoreML 训练Text模型来识别,那问题来了,要训练模型的短信数据集怎么来?一开始打算网上找到垃圾短信样...
2023-09-07 07:30:43 260
原创 LLM构建AI应用 —— 工程师如何使用黑盒工具
本文字数:7714字预计阅读时间:52分钟从2022年12月以来,chatGPT 的横空出世掀起了新一波的 AI浪潮,热度一直居高不下直到现在。半年时间里,从底层模型 API 到上层应用的生态逐渐建立,经过一轮轮迭代不断完善创新。本文将结合开源框架和应用程序,从工程师的角度,与大家讨论如何对大语言模型进行封装和应用,并从工程层面解决现有问题,搭建完整可商用的 AI 应用程序。LLM,Large ...
2023-08-24 07:30:49 227
原创 【获奖名单公布】yapi-to-all 接口文档驱动开发
本文字数:5574字预计阅读时间:33分钟引言前端业务开发做什么通常消费的物料通常业务的开发流程选择优化开发物料抽象以及关联我们的业务开发的各个环节如何使用 yapi-to-all核心流程总结未来SOHU01引言随着互联网的快速发展和普及,前端开发已成为现代软件开发中的重要组成部分。然而,随着前端技术的日新月异和项目的不断复杂化,前端开发人员需要编写大量的代码来实现各种功能和需求,这给开发者带来了...
2023-08-17 07:31:46 113
原创 【文末有惊喜!】Jetpack Compose布局优化实践
本文字数:6809字预计阅读时间:39分钟01前言我们内部团队使用 Jetpack Compose 开发项目已近一年,经历了简单布局到复杂布局的应用,对 Compose 的使用越来越成熟,构造了很多易用的基础组合,提升了项目的开发效率,与此同时Compose 布局的一些性能问题也慢慢凸显出来,因此专门对 Compose 布局优化进行了调研工作,旨在减少重组提高性能,规避负面效应,提高应用稳定性。...
2023-08-10 07:30:14 178
原创 android studio 实用插件推荐
本文字数::2352字预计阅读时间:8分钟背景现在做安卓开发的同学基本都是用Android Studio了吧,它具有强大的开放性,可以让用户根据自己的需求开发或使用一些插件辅助自己搬砖,当然开发插件我们可能还没有那么厉害,但是能做到善于使用现有的一些优秀的插件,也会使得咱们的工作效率倍增,有一些无法实现的操作,也会迎刃而解,所以在使用studio开发的过程中,插件的选择以及使用也是非常重...
2023-08-03 07:30:32 756
原创 自定义报告导出平台:几分钟生成你的汇报ppt
本文字数:6277字预计阅读时间:16分钟一、背景1.1 背景在房地产 2B 业务场景中,有这样一种情况,每个季度或者每个月,甚至每个周,交付侧需要定期产出一份报告向客户开发商汇报各种产品的使用情况,投用效率,收益比率等等,制作这样一份报告通常会耗费掉大量时间,需要排版布局,需要统计数据制作图表,需要分析总结。我们知道报告样式可以直接套用模板,如果更进一步,有这么一份模板,模板包括了所需的文字...
2023-08-03 07:30:32 326
原创 Flutter 的线程模型和异步原理
本文字数::36130字预计阅读时间:91分钟在Android应用中, 用户时常会遇到界面卡顿的情况,非常影响用户的体验。作为Android开发肯定都知道:应用在主线程里做了大量的耗时操作(例如文件读写, 数据库读写,网络访问,图片编解码等),就会导致UI不能及时刷新,出现跳帧现象。如果应用主线程不能及时处理用户的输入事件或广播消息,系统甚至会直接弹出著名的ANR对话框,提示用户杀死应用。在Flu...
2023-07-27 07:30:57 1032
原创 初步了解预训练语言模型BERT
本文字数::4024字预计阅读时间:12分钟BERT是由Google提出的预训练语言模型,它基于transformer架构,被广泛应用于自然语言处理领域,是当前自然语言处理领域最流行的预训练模型之一。而了解BERT需要先了解注意力机制与Transformers。注意力机制注意力机制(Attention Mechanism)是一种在机器学习和自然语言处理中广泛使用的技术,它可以帮助模型在处理输入数据...
2023-07-27 07:30:57 651
原创 字符编码文章
本文字数:5425字预计阅读时间:14分钟字符编码的奥秘本文旨在讲解常见的字符编码,如:Unicode、UTF-8、GBK字符集,以及emoji。起初计算机在美国发明,自然大家考虑的是如何表示英文,英语字母总共26个,加上特殊字符,用128个字符,一个byte即足以表示出来。这个就是大家所熟知的ASCII编码。对应关系很简单,一个字符对应一个byte。但很快人们发现,其他非英语国家的文字远远超...
2023-07-13 07:31:19 123
原创 CADisplayLink前世今生
本文字数:19803字预计阅读时间:50分钟用最通俗的语言,描述最难懂的技术前情描述上周同事做code review的时候说到了CADisplayLink的一些变化,感触颇深,提到了接口的一些变动,现在就自己的一些理解加上网上文档的查阅对该对象进行以下的说明:测试环境编译环境:Xcode 13.1运行设备:iPhone X,iOS 14.7.1,iPhone 13 Pro,iOS 15.5前情描述...
2023-06-15 07:30:59 1483
原创 Android性能分析工具:Perfetto介绍及用法
本文字数:8409字预计阅读时间:22分钟概念什么是Perfetto?Perfetto是Android 10中引入的全新平台级跟踪工具。这是适用于Android、Linux和Chrome的更加通用和复杂的开源跟踪项目。与Systrace不同,它提供数据源超集,可让您以protobuf编码的二进制流形式记录任意长度的跟踪记录。您可以在Perfetto界面中打开这些跟踪记录。Perfetto是一...
2023-06-08 07:31:21 4932
原创 一文搞懂Flutter的手势事件——事件分发与冲突处理详解
本文字数:43617字预计阅读时间:110分钟前言之前有两篇文章都围绕着runApp()进行展开,讲解了布局绘制的详细过程。https://www.jianshu.com/p/2ef749ff4d40/https://www.jianshu.com/p/f37f8da235ec那么接下来我们想详细的说一说Flutter是如何处理手势事件的。本文将通过源码详细分析Flutter的事件分发与冲突处理...
2023-06-01 07:30:05 752
原创 一文学会iOS画中画浮窗
本文字数:11934字预计阅读时间:40分钟背景之前有看到有人用画中画实现时分秒的计时,顺手收藏了,一直没来及看。最近使用《每日英语听力》,突然发现它用画中画实现了听力语句的显示,顿时来了兴趣,所以来研究一下是怎么实现的?顺便也研究下画中画时分秒计时的实现——每次遇到某些平台每天固定时间开抢的时候,我都希望iPhone能够显示具体到秒的计时,这样就能知道什么时候开始点击合适,而不是每次都提前一分...
2023-05-25 07:30:22 1304
原创 iOS推送播放语音播报更新
接上篇如何让iOS推送播放语音,之前的结论是iOS如果需要送审商店只能播放本地的mp3文件,这里更新一下:更新语音的播放,最终调用的方法是UNNotificationSound(named: xxx),而这个方法官方文档注释如下://Thesoundfiletobeplayedforthenotification.ThesoundmustbeintheLibrary...
2023-05-25 07:30:22 823
原创 Swift静态代码检测工程实践
本文字数:22817字预计阅读时间:58分钟引言随着App功能不断增加,工程代码量也随之快速增加,依靠人工CodeReview来保证项目的质量,越来越不现实,这时就有必要借助于自动化的代码审查工具,进行程序静态代码分析;提升自动化水平,提高团队研发效率。程序静态代码分析(Program Static Analysis)是指在不运行代码的方式下,通过词法分析、语法分析、控制流、数据流分析等技术对程序...
2023-05-18 07:30:41 688
原创 海报图片生成服务在狐友的落地实践
本文字数:22817字预计阅读时间:58分钟项目背景狐友作为搜狐的一款社交产品,在流量传播上有着旺盛的需求点。而在流量传播所需的众多载体之中,海报图片以其简单的分享形式、可定制的视觉体验、自带二维码识别导流等特点,成为了社交产品高频必备的流量载体。作为狐友的前端开发,生成海报图片就成为了我们工作中持续不断的一个重要需求点。以下是狐友目前的产品前端服务矩阵和海报图片的产品形式。图 1 狐友产品前端服...
2023-05-12 12:18:52 419
原创 MySQL慢SQL探究
本文字数:17525字预计阅读时间:44分钟前言我们在日常开发中,一定遇见过某些SQL执行较慢的情况,我们俗称“慢SQL”,如果你对系统的接口性能要求较高的话,一定不会放过这种SQL,肯定会想办法进行解决,那么,导致慢SQL出现的原因,究竟可能都有哪些呢?这是一道经典的面试题,就此我们来研究一番,下面,我们就来好好看一下,原因可能出在哪里。本篇我们将从如下几个方面进行讨论:1.慢SQL捕获2....
2023-05-05 07:31:02 853
原创 OpenGLES 实验室之2D篇 第三弹 の 直播白板
本文字数:4555字预计阅读时间:12分钟笔者之前发表的音视频文章,有图像的处理,音频的重采样等等,都属于入门级别。通过阅读它们,读者能对音视频有了了解。可在 Gitee 上面回顾。 2023 年,笔者将整理下 关于OpenGLES的实验室系列 并进行发表。首先为读者带来2D篇的系列,它大多是x y坐标,不涉及z坐标,所以用 2D篇。内容上,它不对OpenGLES的基础知识进行细说与讨...
2023-04-27 07:30:59 470
原创 KMM初探与编译过程详解
本文字数:22817字预计阅读时间:58分钟简介KMM,即Kotlin Multiplatform Mobile,是由Kotlin发布的移动端跨平台框架。相比于其他跨平台框架,KMM是原生UI+逻辑共享的理念,共享重复逻辑性的工作来提升开发效率的同时,保持原生执行效率与UI特性。所以KMM并不会替代Android和iOS的原生开发, 而是提倡将共有的逻辑部分抽出,由KMM封装成Android(K...
2023-04-20 07:30:51 979
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人