- 博客(72)
- 资源 (6)
- 收藏
- 关注
原创 配置Nginx实现外网访问文件夹
摘要:本文介绍了在阿里云服务器上通过Nginx配置实现外网访问指定文件夹的方法。主要包括:安装并启动Nginx服务、配置目录映射、设置文件夹权限、重启Nginx生效、配置阿里云安全组规则等步骤。同时提供了访问验证方法,并提示了autoindex开启会暴露目录结构的安全风险,建议生产环境限制IP访问或添加认证。对于大文件下载还给出了性能优化建议。全文详细说明了从安装配置到安全防护的完整实现过程。
2025-12-03 10:47:13
179
原创 安装宝塔面板阿里云版本
摘要:阿里云服务器安装宝塔面板阿里云版本需满足系统要求,通过SSH执行自动安装命令,完成后显示登录信息。需配置安全组放行8888等必要端口,登录后绑定账号并安装运行环境。部署网站时可创建站点、配置数据库及SSL证书,利用内置阿里云OSS/CDN插件实现云服务集成。面板提供监控、备份及安全防护功能,建议配合阿里云监控实现全面运维管理。(150字)
2025-12-03 10:10:21
471
原创 Android性能分析工具
本文介绍了Android性能分析的常用工具和方法,涵盖CPU、内存、电池、网络和渲染性能等方面。主要工具包括Android Studio内置的Android Profiler(监控CPU、内存、网络和电池)、Systrace(系统级性能分析)、Perfetto(新一代跟踪工具)以及第三方工具如LeakCanary(内存泄漏检测)和Charles Proxy(网络抓包)。此外还提供了电池分析工具Battery Historian和GPU渲染分析方法。文章最后给出了代码优化建议,包括避免主线程阻塞、减少过度绘制
2025-12-02 12:36:45
777
原创 鸿蒙网络请求流式返回实现方法
摘要:鸿蒙系统实现HTTP流式请求可通过@ohos.net.http或@ohos.request模块完成。关键步骤包括:创建请求对象、监听dataReceive/headerReceive事件处理分块数据、指定ARRAY_BUFFER/stream响应类型。需注意服务器需支持分块传输,建议设置合理缓冲区、使用AbortController控制请求,并在非UI线程处理大数据流。该方法适用于HarmonyOS 3.0+,适用于需要实时处理网络流数据的场景,需注意内存管理和编码转换问题。
2025-12-02 09:54:32
356
原创 Android截屏汇报问题
本文介绍了基于MediaProjection的Android截屏功能实现方案。通过HScreenCaptureActivity处理授权弹框,HScreenCaptureService实现截屏核心逻辑,包括创建前台服务、虚拟显示映射和图片保存。系统采用广播机制通知业务层处理截屏结果,并考虑了文件缓存清理。目前方案在主流设备上运行流畅,但需针对低版本机型进行兼容性优化。关键实现点包括:1) 前台服务声明mediaProjection类型;2) ImageReader处理屏幕数据;3) 完善的广播通信机制。该方案
2025-12-02 09:48:32
766
原创 Android摇一摇
本文提出了一种通过"摇一摇"手势简化APP错误报告流程的方案。该方案利用SensorManager监听加速度传感器数据,通过计算位移区间判断用户摇动动作,并在后台Service中实现无UI界面的摇动检测。当检测到摇动时,系统会发送广播通知业务层进行截屏和日志自动上传。文章详细介绍了摇动检测工具类的实现代码,包括传感器注册、摇动判断逻辑和事件回调处理,并说明了如何在Service中启动和停止检测功能。实际测试表明,该方案在保证低功耗的同时,显著提升了用户提交错误报告的意愿和便捷性。
2025-12-01 18:03:26
743
原创 Compose和Fragment混合显示示例
本文介绍了Jetpack Compose与传统Fragment的混合开发方案。在Fragment中使用Compose时,通过ComposeView的setContent方法实现Compose界面;在Compose中使用Fragment时,则借助AndroidView和FragmentContainerView容器,在update回调中进行Fragment的替换操作。两种方式分别通过ComposeView将Compose转换为View布局,以及通过AndroidView在Compose中嵌入传统View,实现
2025-12-01 17:36:14
314
原创 Koin使用入门
本文介绍了在Android项目中引入Koin依赖注入框架的实践。通过添加Koin依赖,创建测试类HTestServer和BluetoothViewModel,并配置myModules模块声明,在Application中启动Koin。演示了在MainActivity中注入普通类和使用viewModel()方法注入ViewModel的具体实现。Koin框架具有使用简单、结构清晰、支持Kotlin风格和跨平台等优点,能有效降低项目复杂度,适合模块化开发,值得尝试。
2025-10-21 14:22:43
171
原创 Android约束部分控件顶出范围
该摘要介绍了如何解决IM会话标题过长导致标签被顶出的问题。通过在TextView中添加app:layout_constrainedWidth="true"约束,可以控制标题宽度:当文字过多时会自动限制宽度,避免挤压其他元素;文字较少时则正常显示在标题后。这种方案既保证了界面整洁,又保持了布局的灵活性。
2025-09-04 18:53:25
220
原创 Android输入框文字不垂直居中
摘要:升级项目targetSdk版本后,EditView文字不居中的问题源于官方为解决多语言输入抖动,默认启用了本地配置行高作为最小行高。通过查看源码发现,该特性在API版本后默认开启,导致文字垂直对齐异常。解决方案是在EditText中添加android:useLocalePreferredLineHeightForMinimum="false"属性,即可禁用该功能并自定义行高设置。
2025-08-18 18:18:42
602
原创 Android底部导航栏图标变黑色
Android系统导航栏浅色模式适配代码,适用于不同系统版本:对于Android R(11)及以上版本,使用WindowInsetsController设置浅色导航栏;对于早期版本,则通过View的systemUiVisibility属性实现。这段代码展示了如何根据不同SDK版本采用不同API来确保导航栏UI风格一致。
2025-08-07 22:00:01
480
原创 iOS打开开发者模式
iOS设备启用开发者模式的方法有两种:通过Xcode连接设备后勾选开发模式,或直接在设置中开启(iOS16+需在隐私与安全底部找到选项)。启用后需重启设备,首次使用需验证密码。该模式主要用于调试,开启后需注意应用安装安全。不同iOS版本路径可能略有差异,旧系统需通过设备管理操作。
2025-07-21 10:42:58
2998
原创 Compose Multiplatform优缺点
ComposeMultiplatform是一款高效的跨平台开发框架,允许使用Kotlin代码开发多端应用,显著提升开发效率。其优势包括声明式UI设计、热重载支持、Kotlin生态整合及官方强力支持。但存在性能不足(尤其在iOS/Web端)、API稳定性待完善、学习门槛较高、生态资源有限及包体积偏大等缺点。该框架适合已有Kotlin基础的团队,但需权衡其当前成熟度与项目需求。
2025-07-11 10:52:30
359
原创 Flutter优缺点
Flutter作为跨平台框架,具有开发效率高、性能接近原生、UI组件丰富和热重载等优势,能显著降低多平台应用的开发成本。但其安装包体积较大,部分原生功能支持滞后,Web/桌面端成熟度不足,且需要学习Dart语言和Flutter特有概念。第三方库质量参差也可能影响开发效率。总体而言,Flutter适合需要快速构建高性能跨平台应用的场景,但对安装包大小和特定平台功能有严格要求时需谨慎选择。
2025-07-11 10:45:38
781
原创 Android TensorFlow
摘要:TensorFlow Lite为Android设备提供轻量级机器学习解决方案。集成步骤包括:1)添加Gradle依赖;2)将.tflite模型放入assets文件夹并加载;3)数据预处理后通过Interpreter执行推理;4)解析输出结果。对于常见任务可使用预封装API,通过GPU delegate加速性能。优化建议包括模型量化、算子裁剪和支持动态形状。注意测试不同硬件的算子兼容性。
2025-07-05 04:00:00
302
原创 Compose数据分页加载效果
Compose实现分页加载可通过LazyColumn结合Paging库完成,需要处理加载状态和视觉优化。核心实现包括:使用collectAsLazyPagingItems收集分页数据,在LazyColumn中展示数据并处理加载中/错误状态;通过PagingConfig配置预加载参数优化性能;可添加骨架屏等加载动画提升用户体验。高级控制可通过LazyListState监听滚动位置实现手动分页触发。关键注意分页状态管理和内存优化配置。
2025-07-05 03:30:00
343
原创 Jetpack Compose CollapsingToolbarLayout效果
本文介绍了Jetpack Compose中实现CollapsingToolbarLayout效果的三种方法:1) 使用LazyColumn与Parallax效果,通过滚动偏移控制视差折叠;2) 采用CustomScrollView与NestedScrollConnection实现精确滚动控制;3) 借助第三方库简化开发。关键点包括调节translationY视差强度、alpha透明度变化,以及通过scrollState管理滚动位置。这些方案都能达到传统折叠工具栏效果,开发者可根据项目复杂度选择基础实现或精细
2025-07-04 14:47:52
349
原创 Compose LazyVerticalStaggeredGrid卡顿
《优化LazyVerticalStaggeredGrid卡顿的6个关键方法》摘要:通过减少布局层级和使用LayoutInspector分析视图结构优化布局复杂度;采用Coil/Glide实现图片异步加载和缓存,设置固定尺寸避免动态计算;启用固定跨度或预估高度减少布局计算;利用derivedStateOf减少重组范围;开启硬件加速和R8优化提升渲染效率;结合Paging3实现分页加载,并通过JankStats监控性能指标。这些方法涵盖布局优化、资源管理、状态控制等维度,可有效提升瀑布流列表的滚动流畅性。
2025-07-04 14:26:09
387
原创 Compose路由
Compose路由配置摘要:Jetpack Compose通过NavHost和NavController实现路由管理,支持参数传递(路径声明/arguments获取)、嵌套路由(navigation块)、深层链接(navDeepLink)和路由动画(EnterTransition/ExitTransition)。还提供路由拦截监听器(addOnDestinationChangedListener)用于权限校验等场景。典型配置包含路由容器定义、参数处理和导航逻辑控制,适用于构建复杂应用的导航体系。
2025-07-03 18:03:56
358
原创 KMP(Kotlin Multiplatform)改造(Android/iOS)老项目
本文详细介绍了如何将KMP(Kotlin Multiplatform)项目集成到现有Android和iOS原生项目中的改造过程。主要内容包括: 在KMP项目中,将Android模块从应用改为库依赖,并创建独立入口模块; 在原生Android项目中添加KMP模块依赖,通过ComposeView嵌入KMP页面; 在iOS项目中添加构建脚本自动生成Framework,通过UIHostingController集成KMP页面; 提供了完整的配置说明和常见问题解决方案。 改造完成后,KMP项目可以同时运行在Andro
2025-07-03 17:58:45
3210
原创 Objective-c把字符解析成字典
本文介绍了在Objective-C中解析四种字符串格式为字典的方法:1)使用NSJSONSerialization解析JSON字符串;2)通过字符串分割处理URL查询参数;3)利用NSPropertyListSerialization解析plist格式;4)自定义解析逻辑处理特殊格式。文章强调了解析时的注意事项,包括编码处理、异常捕获和复杂结构的递归解析需求,为开发者提供了不同场景下的字符串转字典方案。
2025-06-30 20:12:35
449
原创 移动端日志平台EMAS
阿里云EMAS日志平台具备多端日志采集、实时分析和全链路监控能力,支持Crash日志等类型,便于问题定位与优化。其高可用架构保障海量数据处理,提供灵活的分类管理和安全合规保障。但平台存在学习曲线陡峭、费用较高、定制化受限等不足,且日志处理有轻微延迟。该平台适合需要稳定日志服务的企业,但需权衡成本与实时性需求。
2025-06-28 23:06:36
481
原创 Swift Moya自定义插件打印日志
Moya自定义插件打印网络请求日志指南:通过创建遵守PluginType协议的插件类,可详细记录请求和响应信息。插件需实现willSend和didReceive方法,分别打印请求URL、方法、头信息、请求体,以及响应状态码、响应数据或错误。可优化日志格式,使用专业日志库,并注意过滤敏感信息。最后将插件实例添加到MoyaProvider的plugins数组中即可启用。该方案弥补了Moya默认不提供详细日志的不足,便于开发调试。
2025-06-28 22:32:44
431
原创 mPaaS 客户端诊断概述
mPaaS客户端诊断是阿里云移动开发平台提供的应用问题排查工具,支持Android/iOS平台。核心功能包括性能监控(启动耗时、页面渲染)、日志分析(自动采集/筛选)、异常诊断(崩溃堆栈、设备信息)和网络请求追踪。开发者通过集成SDK,配置日志级别和上报策略,即可在控制台查看可视化报表分析问题。高级功能支持自定义埋点、远程日志拉取和A/B测试对比。使用需注意平台差异(Android混淆规则/iOS符号表)和日志上报策略优化。该工具帮助开发者快速定位客户端问题,提升应用稳定性。
2025-06-27 23:11:05
500
原创 swift 对象转Json
Swift中对象转JSON的方法:1. 使用Codable协议,自动处理符合条件的数据结构;2. 通过JSONSerialization处理字典/数组;3. 自定义编码逻辑时手动实现Encodable协议。注意事项包括确保属性符合Codable、格式化输出选项设置,以及处理特殊类型转换。两种主要方法都需使用do-catch处理可能的编码错误。
2025-06-27 22:48:47
461
原创 swiftUI iOS16和iOS15兼容
SwiftUI跨版本兼容开发需采用条件化代码适配策略,通过API可用性检查(@available)和运行时版本检测(if#available)实现功能分派。重点包括:使用版本隔离处理iOS16新增功能(如Grid布局、NavigationStack),提供替代实现;适配布局系统时优先选择兼容组件;封装导航逻辑兼容不同版本。开发中需使用Xcode14+工具链,设置多版本部署目标(iOS15+),并通过双向模拟器测试验证所有条件分支的执行路径。
2025-06-26 23:58:23
579
原创 swiftui TextEditor去除背景方法
摘要:隐藏或自定义TextEditor背景的方法包括:1) iOS16+使用.scrollContentBackground(.hidden);2) ZStack叠加透明视图;3) 直接设置background颜色;4) iOS15需通过UITextView Appearance API调整;5) 结合cornerRadius和shadow消除边框。最新系统推荐scrollContentBackground方案,旧版本需采用兼容方法,可根据需求选择透明或自定义背景效果。
2025-06-26 23:56:37
294
原创 Android edge-to-edge模式适配
Android全面屏适配新方案 在Android 16强制edge-to-edge模式下,界面元素易与系统栏重叠。传统通过获取状态栏/导航栏高度进行位移的方法已过时。Google推荐使用WindowInsetsCompat进行动态调整:通过ViewCompat.setOnApplyWindowInsetsListener监听根布局,利用WindowInsetsCompat.Type.systemBars()获取系统栏边距,WindowInsetsCompat.Type.ime()获取键盘高度,动态设置边距。
2025-06-25 19:26:54
1938
原创 在 GitLab CI 中配置多任务
GitLab CI通过.gitlab-ci.yml文件配置多任务流水线,支持任务分组、并行执行和条件触发。主要特性包括:1) 自定义阶段(stages)控制任务执行顺序;2) 同一阶段任务自动并行;3) 通过needs字段建立任务依赖;4) 使用rules/only/except实现条件触发;5) 模板复用减少代码重复;6) 父子流水线实现多项目协作;7) 共享变量和缓存优化效率。这些功能使GitLab CI能够灵活适应复杂工作流需求,实现高效的持续集成与部署。
2025-06-25 19:26:34
770
原创 Android实时获取声音音量大小
摘要:本文介绍了三种Android平台获取实时音量的方法:1)使用AudioRecord获取原始音频数据并计算音量,适合需要精细处理的场景;2)通过Visualizer获取媒体播放音量,适用于音乐播放器应用;3)利用MediaRecorder的getMaxAmplitude方法测量麦克风输入。这三种方法都需要RECORD_AUDIO权限,且要注意动态权限检查。开发者应根据具体需求选择合适方案,并注意性能优化,如调整采样率和缓冲区大小。实现时需注意音量数值的归一化处理,以及资源消耗问题。
2025-06-24 09:07:38
533
原创 Android edge-to-edge兼容适配
Android应用Edge-toEdge适配关键要点:全面屏时代,Edge-toEdge适配能最大化利用屏幕空间,提升沉浸体验。核心配置包括设置透明系统栏和处理内容重叠。方法有:使用WindowInsetsController(API30+)或传统View适配方案;手势导航需避开敏感区域;沉浸模式可结合SYSTEM_UI_FLAG参数实现。兼容性方面需兼顾低版本API和厂商ROM特性。测试重点包括布局延伸、手势交互、图标可见性及转场效果。系统化实施这些策略,可实现高质量的Edge-toEdge适配,平衡视觉
2025-06-24 09:02:22
1980
原创 Ktor替代Feign及对比
Ktor作为Feign的替代方案,提供了基于Kotlin的轻量级HTTP客户端实现。相比Feign的注解式声明,Ktor采用DSL风格API和协程支持,更适合Kotlin异步编程。通过ktor-client-core等依赖可快速构建客户端,集成JSON序列化后能简洁处理请求响应。Ktor的优势在于原生Kotlin支持、灵活API和直接序列化集成,但需手动管理客户端生命周期。适合新Kotlin项目选用,若需兼容Java代码则要考虑混合调用方案。
2025-06-23 18:37:07
463
原创 Node鼠标键盘屏幕控制
RobotJS是Node.js的鼠标键盘控制库,支持基础操作和高级功能。可移动/点击鼠标(moveMouse/mouseClick)、输入文字/组合键(typeString/keyTap)、截取屏幕(screen.capture)及拖拽操作(dragMouse)。还能获取屏幕尺寸(getScreenSize)和模拟按键状态(keyToggle)。使用时需注意系统权限要求,macOS需辅助功能权限,Windows/Linux可能需要管理员权限,高分辨率下截图可能性能受限。安装简单:npminstallrobo
2025-06-23 18:22:30
859
原创 npm包冲突install失败
摘要:--legacy-peer-deps是npm v7+的安装选项,用于解决peerdependencies版本冲突问题。它通过放宽版本检查,适用于依赖冲突、旧项目维护和快速验证场景。使用时需注意可能引发运行时错误,建议作为临时方案。替代方案包括改用yarn/pnpm或手动指定版本。该选项体现了npm对依赖兼容性处理的灵活性,但长期仍需规范依赖管理。(149字)
2025-06-21 18:03:20
533
原创 使用Vue3开发Electorn桌面应用
摘要:本文介绍了Vue+Electron桌面应用开发的关键步骤。环境要求Node.js≥16,通过VueCLI和ElectronBuilder初始化项目。目录结构包含主进程、渲染进程和共享代码模块。配置主进程窗口属性,使用ipcMain/ipcRenderer实现进程通信。生产打包需调整vue.config.js,通过contextBridge安全调用原生API。调试时同时运行开发命令和构建命令,结合VueDevTools和Electron开发者工具。全文150字,涵盖环境搭建、项目结构、进程通信、打包配置
2025-06-21 15:02:39
239
原创 Electron 开发桌面应用概述
Electron是一个跨平台桌面应用开发框架,基于Chromium和Node.js,允许使用前端技术构建应用。环境搭建需安装Node.js和Electron,创建包含main.js、index.html和package.json的基础项目。Electron包含主进程(管理应用生命周期)和渲染进程(显示界面),通过IPC通信。开发时可使用Chromium工具调试,推荐electron-builder打包分发,并注意性能优化(如避免主进程阻塞、启用原生模块)。常见问题包括白屏、跨域和模块兼容性,通过路径检查、安
2025-06-21 15:00:44
398
原创 使用Node.js开发服务端接口
摘要:Node.js是开发高性能服务端接口的理想选择。主要步骤包括:1)选择框架(Express/Koa/Fastify);2)设置路由和处理请求数据;3)数据库集成(MongoDB/MySQL);4)错误处理和中间件应用;5)使用PM2部署服务;6)使用Postman或Jest进行测试。Express框架示例展示了创建服务、路由定义、数据解析等核心功能,Mongoose简化了MongoDB操作。合理运用中间件可实现日志记录、身份验证等功能,完整的开发流程能构建出稳定高效的服务端接口。(150字)
2025-06-21 14:47:52
387
Xcode升级缺失的arc库
2025-06-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅