• 博客(190)
  • 收藏
  • 关注

原创 结合YOLOv8和OpenCV WeChat QRCode打造一款二维码识别器

本文字数:3876字预计阅读时间:25分钟01引言二维码(QRCode)在现代生活中有广泛应用,从支付系统到信息传递,它们无处不在。本文提出了一种如何识别二维码的方法,主要贡献在于优化处理分辨率较高的图像时,由于二维码在整张图片中占据的比例较小,传统的OpenCV WeChat QRCode的识别方法表现不佳的问题。下面描述详细的优化过程。02OpenCV WeChat QRCodeWeCha...

2024-09-06 07:31:50 883

原创 Dubbo框架那些值得细品的设计

本文字数:4231字预计阅读时间:30分钟Dubbo是一个优秀的高性能RPC框架,也是一个经历过时间考验的优秀服务框架。优秀的框架就必然有很多值得学习和借鉴的设计。01微内核和扩展点Dubbo的内核中只包含了服务调用、集群管理、路由策略等最基础的核心功能。而除了核心之外的其他功能,全都通过扩展实现。包括:序列化、协议、负载均衡、过滤器等。每个扩展都有一个对应的接口定义,具体实现可以自定动态加载和替...

2024-09-06 07:31:50 639

原创 鸿蒙Harmony开发——设备发烫问题分析

;本文字数:4207字预计阅读时间:25分钟设备过热问题是影响用户体验和设备性能的重要因素。过热不仅会导致性能下降,还可能损坏硬件。因此,开发者需要及时发现、分析并解决这一问题。本文将首先介绍评估设备过热的关键指标,然后基于Trace数据,讲解如何分析和处理设备过热的问题。最后,通过实际案例,详细展示如何定位、分析和优化设备过热现象。本文主要采用Trace数据进行分析,可以使用SmartPerf ...

2024-08-22 07:31:04 1101

原创 搜狐新闻HarmonyOS Push开发实践

本文字数:1795字预计阅读时间:15分钟01背景搜狐新闻作为HarmonyOS的合作伙伴,于2023年12月成功上架鸿蒙单框架应用市场,成为首批鸿蒙应用矩阵的一员。推送作为新闻类应用的重要组成部分,我们将其纳入到二期功能开发中。本文将推送集成过程中的步骤和经验分享给大家。02开发环境IDE:DevEco Studio NEXT Developer Beta2 Build Version: 5.0...

2024-08-22 07:31:04 1046

原创 Dubbo服务自动Web化之路

本文字数:6047字预计阅读时间:40分钟01故障出现事情起源于一次故障,2023年12月14日14点26分,大量Dubbo服务报出异常,无法链接zookeeper集群:Session 0x0forserver dubboZk.xxx.com/10.x.x.x:2181,Closing socket connection.Attempting reconnect except it is ...

2024-08-15 07:30:18 881

原创 Android自定义表情删除时卡顿问题的定位与优化

本文字数:2001字预计阅读时间:15分钟01背景在我们的实际应用中,用户在发布文本时,输入大量表情后尝试从中间删除时,会出现明显的卡顿问题。这种操作可能耗时长达2s,导致用户体验受到严重影响。通过使用 Profiler 分析耗时的方法,我们找到了造成卡顿的原因,并参考了 emoji2 源码提出了解决方案。02原因分析如图所示,当从中间删除一个表情时,耗时方法从SpannableStringBui...

2024-07-25 07:31:57 307

原创 FlutterWeb启动耗时优化

本文字数:4307字预计阅读时间:30分钟01前言在之前的文章中,我们详细的介绍过Flutter Web从0到部署上线的流程,并且针对其中遇到的问题进行了分析与修复:https://www.jianshu.com/p/6213f8a88288我们也对Flutter Web的项目进行了打包部署上线。在产品体验中会发现,跟传统的web端网页对比,还是明显感觉到性能上的差异,特别是启动的过程明显耗时较长...

2024-07-18 07:30:39 1274

原创 一个能让普通View轻松实现嵌套滚动的控件

本文字数:2810字预计阅读时间:20分钟01背景和现状在Android的事件分发机制当中,在同一个事件流中,如果由父控件拦截/消费了,那么子控件就没办法再获取到该事件流。这种传统的事件分发机制在嵌套滚动时会有明显不足,就是子控件无法消费父控件没有消费掉的滑动距离(因为起初是父控件接收了滑动事件,那么在同一个事件流中,所有事件都会给到父控件,子控件接收不到事件,也就无法滑动),从而造成嵌套滚动的不...

2024-07-11 07:30:14 554

原创 【low-ui-vue】实现原生可扩展动态表格组件

本文字数:3520字预计阅读时间:20分钟所谓动态列的表格,就是列数不固定。像广为使用的elementUI的table组件就是表头写死的,这种也叫列数固定的表格。01效果当然,动态性增加了,当然要做出一定“牺牲”。这是表格组件的表头和表内容的数据格式不太一样了——我们把它分为两个数组传入:02数据传入columns:[//表头{title:'Full Name',width:...

2024-06-21 07:31:05 921

原创 Android编译优化之kapt优化

本文字数:16654字预计阅读时间:60分钟01编译缓慢分析随着项目功能越来越多,项目的编译耗时也在不断增加,即使在高配电脑上也需要近7分钟,如下图所示:这样的编译速度,严重影响了我们的开发效率,需要我们及时解决。在我们项目中,打开守护进程,并行编译和增量编译等配置,进行增量编译,获取编译报告。#在gradle.properties中添加#开启gradle daemon,org.gr...

2024-06-06 07:30:28 1456

原创 用 vue3 + phaser 实现经典小游戏:飞机大战

本文字数:7539字预计阅读时间:30分钟01前言说起小游戏,最经典的莫过于飞机大战了,相信很多同学都玩过。今天我们也来试试开发个有趣的小游戏吧!我们将从零开始,看看怎样一步步实现一个H5版的飞机大战!首先我们定好目标,要做一个怎样的飞机大战,以及去哪整游戏素材?刚好微信小程序官方提供了一个飞机大战小游戏的模板,打开【微信开发者工具】,选择【新建项目】-【小游戏】,选择飞机大战的模板,创建后就是一...

2024-05-22 07:30:44 699

原创 搜狐黑马 | 黑马9年,万物可AI

2024-05-22 07:30:44 125

原创 java类热加载原理及应用

本文字数:5232字预计阅读时间:25分钟01引言1.1背景性能优化是一个Java程序员的必备技能,但是定位性能瓶颈或者是问题点是一个费时又费力的事情。在我们的实际项目中就碰到了这样的烦恼,某业务的一个接口,平均耗时很短,但是总有约1%的流量,波动较大。多次review代码,并没有发现明显的问题,查看业务日志和三方调用日志也没有明显的问题。所以定位小概率的耗时长成为了的关键。1.2性能优化定位问题...

2024-05-16 07:31:07 496

原创 自定义View-旋转变色圆角三角形的绘制

本文字数:3151字预计阅读时间:20分钟在现代设计中,动效图在APP的UI界面中所起到的作用无疑是显著的。相比于静态的界面,动效更符合人类的自然认知体系,它有效地降低了用户的认知负载,UI动效俨然已经成为了不可或缺的一部分。那么在开发过程中,当遇到UI提供的动态物料满足不了内存以及效果的要求时,我们程序员就不得不通过代码自己去实现效果,这就引出了我们今天要实现的这个旋转变色圆角三角形。当时接到需...

2024-04-25 07:30:30 878

原创 客户端动态降级系统

本文字数:4576字预计阅读时间:20分钟01背景无论是iOS还是Android系统的设备,在线上运行时受硬件、网络环境、代码质量等多方面因素影响,可能会导致性能问题,这一类问题有些在开发阶段是发现不了的。如何在线上始终为用户提供一个相对顺畅的用户体验,是客户端开发需要考虑的一个问题。02服务降级、熔断服务端有降级机制和熔断机制,在设计客户端降级系统时可以参照服务端现有方案。例如发生性能问题或网络...

2024-04-18 07:30:30 914

原创 视频秒播优化实践

本文字数:2259字预计阅读时间:10分钟视频起播时间,即首帧时间,是视频类应用的一个重要核心指标,也是影响用户观看体验的核心因素之一。如果视频要加载很久才能开始播放,用户放弃播放甚至离开 App 的概率都会增加。视频秒播是指用户在起播时平滑播放,没有首屏的顿感,用户几乎感知不到有首帧时间的存在。我们把从开始播放到视频首帧画面展现出来这个链路的耗时称为首帧耗时,想要优化首帧耗时,达到秒播效果,我们...

2024-04-11 07:30:32 1098

原创 真机 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 1559

原创 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 1648

原创 基于openresty构建运维工具链实践

本文字数:4591字预计阅读时间:2501导读如今OpenResty已广泛被各个互联网公司在实际生产环境中应用,在保留Nginx高并发、高稳定等特性基础上,通过嵌入Lua来提升在负载均衡层的开发效率并保证其高性能。本文主要介绍接口鉴权、流量控制以及记录追踪几个工具在实际生产环境中的应用实践,用于解决实际业务问题,提升业务运维效率,对于Openresty基本原理不再赘述。1.1 OpenResty简...

2024-03-14 07:31:39 1156

原创 搜狐新闻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 967

原创 Simhash在内容去重中的应用

本文字数:2873字预计阅读时间:15分钟01一、背景信息流个性化推荐场景中依赖爬虫抓取的海量新闻库,这些新闻中不乏互相抄袭的新闻,这些内容相似的文章,会造成内容的同质化并加重数据库的存储负担,更糟糕的是降低了信息流内容的体验。所以需要一种准确高效的文本去重算法。而最朴素的做法就是将所有文本进行两两比较,简单易理解,最符合人类的直觉,这种做法对于少量文本来说,实现起来很方便,但是对于海量文本来说是...

2024-02-29 07:30:46 921

原创 探秘DWARF文件

本文字数:1865字预计阅读时间:10分钟01简介DWARF全名是Debugging With Attribute Record Formats,是一种调试信息的存放格式。DWARF是一种通用的标准格式,很多编译器对其都有支持,并且DWARF支持C、OC、go等多种语言。DWARF的作用是对机器码和代码之间进行一个映射关系,用来为调试器DEBUG提供调试信息,告诉调试器代码和二进制如何关联,在代码...

2024-02-22 07:31:06 747

原创 初始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 566

原创 搜狐新闻客户端使用Kotlin之后对JSON解析框架的探索

本文字数:7488字预计阅读时间:45分钟01引言自2017年Google发布Kotlin语言之后,Android开发由原来的Java开始向Kotlin过度,目前绝大部分Android开发岗位基本要求就是熟练使用Kotlin。事实上,很多有着多年历史的项目一开始是Java开发的,在Kotlin日渐趋于Android开发主流的过程中,混合开发成为许多项目的首选。我们的项目也是采用混合开发,面对拥有沉...

2024-01-25 07:30:24 820

原创 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 2256

原创 UICollection Compositional Layout全详解

本文字数:8325字预计阅读时间:45分钟01Collection View Layout全详解UICollectionView在iOS中是构建复杂布局的强大工具。iOS13中引入的 UICollectionViewCompositionalLayout为创建自定义布局提供了全新的可能性。本文将深入探讨Compositional Layout的工作原理,以及如何利用它创建复杂的分组、嵌套布局和增...

2024-01-04 07:30:45 1961 1

原创 OCR在审核应用落地

本文字数:6686字预计阅读时间:35分钟01背景1、业务背景在传统视频审核场景中,审核人员需要对进审视频中的文字内容进行逐一审核,避免在文字上出现敏感词、违禁词或者广告等相关词汇。这种人工审核费时费力,并且由于审核人员存在个体差异,审核尺度很难在整体上保持一致。针对当前问题我们提出以下解决方案:首先,使用OCR对视频帧进行文字识别;其次,使用审核系统当前关键词库对识别出来的文字进行关键词匹配;然...

2023-12-28 07:30:43 1430

原创 香色闺阁、微信IPA重签名实战

本文字数:1989字预计阅读时间:13分钟01背景换手机之后,原来的香色闺阁不能下载,转移的时候就丢失了。又最近看到有人截屏iPhone上装了两个微信,一个是自己重签名的;想到自己有开发者账号,但是还没试过重签名APP,是不是可以通过重签名来安装香色闺阁,以及实现多开微信?02步骤说干就干,首先从简单的开始,先来尝试重签名香色闺阁,再尝试微信,因为香色闺阁的包内容比微信的少很多,文件容易找,相对简...

2023-12-21 07:30:27 2241

原创 Android编译优化之Jetifier优化

本文字数:9048字预计阅读时间:40分钟在狐友项目的编译优化中,我们发现在 BuildAnalyzer 中有明确的 Warnings 提示,告知项目可以进行 Jetifier 优化。Jetifier是之前项目进行AndroidX迁移时引入的插件,它能辅助迁移三方库到AndroidX。Jetpack套件能够帮助你更轻松的搭建高质量的APP,它包括了依赖库、工具和指导。它通过最佳实践、模...

2023-12-14 07:30:56 2649

原创 深度解读 JS 构造函数、原型、类与继承

本文字数:6602字预计阅读时间:30分钟01前言众所周知,JavaScript 是一门面向对象的语言,而构造函数、原型、类、继承都是与对象密不可分的概念。在我们日常前端业务开发中,系统和第三方库已经为我们提供了大部分需要的类,我们的关注点更多是在对象的使用和数据处理上,而比较少需要去自定义构造函数和类,对原型的直接接触就更少了。然而,能深度理解并掌握好构造函数、原型、类与继承,对我们的代码设计大...

2023-12-07 07:30:10 454

原创 多文件并行上传方案设计

本文字数:2360字预计阅读时间:15分钟01背景抖音、快手等短视频 APP都有本地编辑视频并上传的功能,这里的上传指的就是上传视频文件,其实无论是上传视频还是其他文件,技术原理都是相同的。搜狐视频 APP的文件上传除了基础的上传功能外,还支持多个视频文件的上传处理,以串行的形式进行上传。并且,在单个视频文件的上传中,为了保证充分利用带宽,还设计了并行上传的逻辑。整体方案如下。02方案设计1、...

2023-11-09 07:30:41 202

原创 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 1092

原创 如何使用PHPicker在iOS系统无授权下获取资源

本文字数:2766字预计阅读时间:18分钟自iOS14系统开始,苹果加强了用户隐私和安全功能。新增了“Limited Photo Library Access”模式,同时在授权弹窗中增加了“Select Photo”选项。这意味着用户可以在应用程序请求访问相册时选择部分照片供应用程序读取。从应用程序的角度来看,它只能访问到用户选择的这几张照片,无法得知其他照片的存在。然而,并非所有普通用户都能够正...

2023-10-26 07:30:46 497

原创 如何开发一个 Safari 插件

本文字数:2493字预计阅读时间:15分钟由于常用浏览器是Safari,而Safari浏览器的插件比不上Chrome,所以就有了自己开发常用的Safari插件的想法。打算开发当前页面生成二维码的Extension,因为网络原因,AirDrop有时候搜不到手机,所以有了这个需求,而且这个也比较简单,所以从这个开始。01调研苹果的官方文档safari_web_extensions给出了步骤,看了好...

2023-10-19 07:30:33 980

原创 安卓camera2获取到的YUV420_888格式详解

本文字数:7885字预计阅读时间:45分钟安卓音视频开发中的一个环节是摄像头采集数据,而Android平台上摄像头采集的 API 有两套,camera1 和 camera2。本文主要讲的是 camera2 这套 API 在采集数据并指明 YUV420_888 格式时,获取到的摄像头 YUV 数据格式具体是怎么样的。01背景/问题之所以写这篇文章也是因为作者在开发过程中遇到了一些坑,然后在网上查...

2023-10-12 07:30:13 962

原创 直播流⻚⾯内存优化⽅案

本文字数:6628字预计阅读时间:39分钟01项目背景介绍项目中直播流每场直播由一张直播图片作为展示入口,用于提示用户此直播的概要。如下图:然而直播图片和容器的宽高比例出现不一致的情况。针对此情况,采取背景图contentmode展示为aspectFill且高斯模糊,上层高清图为 aspectfit,给用户一种图片填满且能清除获取信息的视觉体验。如下图:然而服务端下发直播的图片分辨率在10...

2023-09-21 07:30:26 251

原创 干净优雅的做iOS应用内全局交互屏蔽

本文字数:4930字预计阅读时间:28分钟01交互屏蔽的需求很多应用开发者都会遇到这样一个需求,当程序需要处理某个敏感的核心任务,或者执行某些动画时,需要杜绝一切外部干扰,优先保证任务的完成,之后再去处理其它任务。否则如果在处理过程中受到外部事件的干扰,可能会引入严重的问题,而规避这些问题需要额外编写过多的逻辑。例如,当程序在忙着清理应用内缓存的过程中去处理其它任务,这时候由于其它任务可能会产生新...

2023-09-14 07:30:29 501

原创 短信过滤 APP 开发

本文字数:7033字预计阅读时间:42分钟一直想开发一个自己的短信过滤 APP,但是一直没有具体实施,现在终于静下心来,边开发边记录下整体的开发过程。01垃圾短信样本遇到的第一个问题是,既然要过滤垃圾短信,那首先要识别哪些是垃圾短信?如何识别呢?参考之前训练识别钢管计数的经验,决定通过CoreML 训练Text模型来识别,那问题来了,要训练模型的短信数据集怎么来?一开始打算网上找到垃圾短信样...

2023-09-07 07:30:43 332

原创 LLM构建AI应用 —— 工程师如何使用黑盒工具

本文字数:7714字预计阅读时间:52分钟从2022年12月以来,chatGPT 的横空出世掀起了新一波的 AI浪潮,热度一直居高不下直到现在。半年时间里,从底层模型 API 到上层应用的生态逐渐建立,经过一轮轮迭代不断完善创新。本文将结合开源框架和应用程序,从工程师的角度,与大家讨论如何对大语言模型进行封装和应用,并从工程层面解决现有问题,搭建完整可商用的 AI 应用程序。LLM,Large ...

2023-08-24 07:30:49 343

原创 【获奖名单公布】yapi-to-all 接口文档驱动开发

本文字数:5574字预计阅读时间:33分钟引言前端业务开发做什么通常消费的物料通常业务的开发流程选择优化开发物料抽象以及关联我们的业务开发的各个环节如何使用 yapi-to-all核心流程总结未来SOHU01引言随着互联网的快速发展和普及,前端开发已成为现代软件开发中的重要组成部分。然而,随着前端技术的日新月异和项目的不断复杂化,前端开发人员需要编写大量的代码来实现各种功能和需求,这给开发者带来了...

2023-08-17 07:31:46 157

空空如也

空空如也

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

TA关注的人

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