移动开发

iOS. table嵌套WKWebView 自动布局 刷新闪烁问题

先说下我这遇到的情况, tableView 刷新时候闪动、或者定位出错 1.1、tablwView预设高度 自动布局 self.tableView.estimatedRowHeight = 200; self.tableView.rowHeight = UITableViewAutomaticDimension; self.tableView.estimatedSectionHeaderHeigh

Android 10.0 截屏流程

通常未通过特殊定制的 Android 系统,截屏都是经过同时按住音量下键和电源键来截屏。本篇文章就只讨论使用这些特殊按键来进行截屏。 这里我们就要明白事件是在哪里进行分发拦截的。通过源码的分析,我们发现是在PhoneWindowManager.java 中。 PhoneWindowManager#interceptKeyBeforeQueueing() // frameworks\base\ser

iOS界面优化

界面优化 本文主要介绍界面卡顿的原理以及优化 界面卡顿 通常来说,计算机中的显示过程是下面这样的,通过CPU、GPU、显示器协同工作来将图片显示到屏幕上 1、CPU计算好显示内容,提交至GPU 2、GPU经过渲染完成后将渲染的结果放入FrameBuffer(帧缓存区) 3、随后视频控制器会按照VSync信号逐行读取FrameBuffer的数据 4、经过可能的数模转换传递给显示器

iOS16适配-屏幕旋转

声明:本文适配以iOS 16 bate 2为基准 背景 iOS 16在UIKIT上有了一些更改,废弃掉了一些修改方式,比如屏幕的横竖屏旋转,这一块之前有很多中处理方法,但是如果之前用的是基于UIDevice的,那在这次更新后就会遇到强制旋转屏幕不成功,且有如下日志提示。 图1 适配前提 在iOS 16中,我们遇到了页面旋转不成功的问题,最初的代码采用如下形式 @try { if

向量数据库ChromaDB简介

💡 本文会带给你 什么是ChromaDB 相比传统数据库,有哪些独特优势 适合哪些应用场景 安装及使用案例 怎样监控性能 一. 什么是ChromaDBChromaDB是一个专为AI时代设计的开源向量数据库,核心功能是高效存储和检索高维向量数据(embeddings)。与传统基于关键词匹配的数据库不同,它通过计算向量间的余弦相似度或欧氏距离来实现语义级搜索。作为大语言模型应用的关键组件,C

Android-推荐一个任意遮罩式的引导页库(GuideView)

图片来源网络,入侵必删 在日常的Android的开发中,我们要为一个Activity或者任何一个View创建一个遮罩式的的导航提示,这里分享一个快速实现的库——GuideView。 GuideView 快速的为一个Activity里的任何一个View控件创建一个遮罩式的导航页,并且可以再高亮区域绘制任何你想要的布局或者lottie动画等炫酷效果。开源库的大佬这个库实现原理: 首先它需要

鸿蒙 手游sdk 开发教程

前言 : 各位同学的大家好 , 最近在学习鸿蒙开发, 因为我是从事手游SDK 开发的 之前也写过iOS 手游sdk 开发和安卓手游sdk 开发(kotlin 版本) 效果图: image.png image.png 设计思路 我们需要封装 init login servicelogin updateuserinfo 等对外接口给到游戏去调用 package

Android APK 编译打包流程

今天就和大家一起去探索下Android中编译打包的那些事儿。 整个构建流程大概分为两部分:编译(Compile),打包(Package) 编译 编译过程就是将 java文件 编译成 class文件,最后优化成 dex文件。 打包 打包流程就是将DEX文件和编译后的资源组合成单个APK,并且签名,生成最终的APK。 在这些工作中会有很多工具来辅助完成,比如AAPT,aidl,javac,ap

Android 10 分区存储

背景 以前,Android 开发者习惯在根目录建一个自己应用的文件夹,用于存放应用的数据。这样会导致用户卸载后,应用数据不会随之删除。导致手机文件特别混乱,长期占用空间,而且容易泄露用户隐私。 其实 Android 早就提供了 getCacheDir()、getFilesDir()、getExternalFilesDir()、getExternalCacheDir() 等 API 供开发者使用,但

2022-10-17-读完《代码整洁之道》

类要短小,想短小就得尽量单一职责,或者说因为要单一职责所以短小。“系统应该由许多短小的类而不是少量巨大的类组成” 类要高内聚,如果发现一个类有太多的属性,就要思考这些属性之间是否有关联,是否应该拆分到不同的类里 使用依赖注入,AOP 等改善架构 注意边界值,不要让代码在边界处出现异常 永远不要有重复代码 不要人为耦合。“人为耦合是指两个没有直接目的之间的模块的耦合。其根源是将变量、常量或函数不恰