- 博客(281)
- 资源 (80)
- 收藏
- 关注
原创 android——基础架构设计与实现
作为从业多年的 Android 开发者,我有幸参与了多个从零开始的项目开发,涵盖工具类应用(如安全防护)、内容类应用(如交友直播软件)以及物联网工具(如蓝牙、wifi等智能控制)。基于这些实践经验,我将分享对 Android 应用架构的理解与思考,希望能为开发者同行提供参考。
2025-04-01 20:02:20
1129
原创 kotlin——MVVM框架下的大型项目优化、以及activity和viewmodel臃肿的优化
在大型项目中,随着项目越做越大,activity和viewmodel的代码会越来越多,尽量保持Activity和ViewModel的代码精简和易于维护是非常重要的。个人建议700行以上就应该考虑,尽量让代码控制在1000行以内。不然随着代码多维护起来困难,代码混乱,有bug时定位问题难,增加需求代码难等问题就会随之而来,那应该怎么办呢?(Code Review):定期进行团队内部代码审查,发现并修复代码中的冗余和不良编码习惯。中处理的数据过多,可以考虑将其拆分为多个小的。更加专注和易于理解。
2024-06-22 12:01:44
935
原创 android——解决bug的流程以及细节(定位当前activity、定位哪里调用了当前的方法)
解决bug的第一步,当然是稳定的复现bug。根据我的经验,如果一个bug可以被稳定的复现,至少它就被解决了70%。通过观察bug的现象,就可以对bug做个大致的归类或者定位了。是因为数据问题?还是第三方库的问题?还或者是代码的问题?接着就是debug,看日志等常规操作了~如果经过上面的操作,你还是一筹莫展,那么请往下看。遇到bug,先观察bug现象,然后想想大概是什么原因导致的,然后尝试复现它,再调试它,处理它。
2024-06-21 11:01:51
2321
原创 android——开发中哪些习惯会影响卡顿的发生、如何提高代码健壮性(稳定性)
自从Android引入 ART 并且在Android 5.0上成为默认的运行时之后,对象分配和垃圾回收(GC)造成的卡顿已经显著降低了,但是由于对象分配和GC有额外的开销,它依然又可能使线程负载过重。在一个调用不频繁的地方(比如按钮点击)分配对象是没有问题的,但如果在在一个被频繁调用的紧密的循环里,就需要避免对象分配来降低GC的压力。2.4:不要在activity的onResume和onCreate中进行耗时操作,比如大量的计算等。2.1:主线程中不要直接操作数据库,数据库的操作应该放在数据库线程中完成。
2023-02-01 22:21:50
753
原创 python——根据公司名称查找公司地址(批量)、随机生成姓名、随机生成手机号
根据公司名称查找公司地址(批量)、随机生成姓名、随机生成手机号;各个功能都已经封装成了独立的方法,直接粘贴使用即可。
2022-09-26 22:10:14
7934
原创 vue——后台管理系统之动态路由权限(左侧菜单按角色分配显示)
后台管理系统之——动态路由添加使用(左侧菜单按角色权限动态显示)按照每个角色所拥有的权限来进行对应的展示,实现动态挂载路由,按需显示,官网的说明太过于简单,以至于本人花了很多时间才做出一个完整的动态路由,希望对大家能有所帮助...
2022-07-09 01:55:07
2533
原创 nodejs——后端项目实战(后台基础框架)
3、数据库:mysqlusername:wangyao password:wy1234、使用postman进行post请求访问能获取到数据,代表登录功能完成。
2022-03-19 11:10:42
9187
原创 微信小程序——设计模式(单例,状态模式,观察者模式、代理模式、策略模式【表单验证】)
1、单例// 单例var mySingleCase = function () { // 私有变量和方法 var attribute = "我是‘私有’属性" function showPrivate() { console.log("我是私有方法的输出") } return { publicMethon() { // console.log("我是公共方法--调用私有方法") showPrivate() }, pu
2021-04-16 14:00:51
3455
原创 uniapp——网络请求的封装、全局样式,全局变量、传值(父子组件,不同页面等)
网络请求的封装根据thorUI开源框架给出的代码进行封装,还有如果需要token来请求的话,需要自己去获取token,然后写到代码:const tui = { delayed: null, //接口地址 interfaceUrl: function() { return 'https://www.thorui.cn' }, /** * 请求数据处理 * @param string url 请求地址 * @param string method 请求方式: GET or POS
2020-12-30 15:21:26
4327
1
原创 微信小程序——数组操作 (增加删除修改遍历)map、filter、forEach、find的用法、二维数组,排序,求和、指定长度数组赋值
Array.push() ->在数组后面继续插入内容Array.pop() ->拿走数组最后一个内容Array…shift()->拿走数组的第一个内容 (unshift也是拿走最后一个)Array.reverse()->对数组从大到小排列Array.sort()->对数组从小到大排列**Array.splice(起始位置 , 位数,”增添内容”)->从数组中取出以起始位置开始的位数的内容,并写入增添内容,可用来删除内容与替换,例如people.aplice(1,2,“name”)
2020-06-23 09:21:51
49565
3
原创 微信小程序个人中心-我的界面
个人中心-我的界面简介我们在开发微信小程序的时候,基本上都会有一个个人中心的界面,简称我的界面,里面有保存每个用户的个人信息,个人设置,个人的数据记录。所以本文主要针对这个页面做了一个自己熟练的界面,下面来看看效果图:效果图...这种效果的整体布局固定不变,如果想要更好看的效果,可以修改里面的图片小图标,还有背景颜色,又或者加上动图都是可以的,但是整体的框架基本就是这样,所以下面来...
2020-04-24 17:14:51
58086
原创 微信小程序中好看的按钮样式(渐变色)、view的点击变色效果、按钮漂亮的圆角边框、解决hover设置失效
在.wxss文件中代码如下:/* border-radius: 98rpx;是控制按钮边变圆 */.goodbutton { margin-top: 30px; width: 80%; background-color: rgb(252, 126, 67); color: white; border-radius: 98rpx; background: bg_red...
2018-09-22 09:56:54
43125
11
原创 rust——从零实现一个轻量级 Mock API 服务
负责接收连接,handle负责读取请求,路由模块负责决定响应,shared模块负责复用响应构造和 JSON 资产读取。它不追求替代成熟 Web 框架,而是把一次 API 调用背后的关键步骤完整摊开,非常适合作为 Rust 网络编程和前后端联调的起点。
2026-08-21 15:25:09
314
原创 CMD——快速掌握GET与POST请求示例(doc终端)
这段内容展示了两种HTTP请求示例: GET请求:通过curl发送到http://139.9.***.**:****/api/User/52,用于获取用户ID为52的数据(IP和端口已脱敏)。 POST请求:使用curl向http://127.0.0.1:3000/submit提交数据"hello world",-XPOST指定方法,-d携带请求体。 示例演示了基础API调用方法,适用于本地测试(127.0.0.1)或远程服务交互。
2026-08-07 15:47:52
61
原创 rust——实战综合示例(解析配置文件内容、用户输入验证、链式调用与 Option、桌面图标自动整理)
本文展示了三个Rust编程示例:1) 配置文件解析,演示了从文件读取配置并处理可能错误的完整流程;2) 用户输入验证,展示如何通过循环重试机制获取有效数字输入;3) Option类型的链式调用,说明如何使用Option处理可选字段并通过方法链进行流畅操作。这些示例涵盖了错误处理、用户交互和可选值处理等常见编程场景,体现了Rust强大的类型系统和错误处理能力。
2026-06-29 14:13:23
92
原创 Rust 所有权系统:核心概念与实战示例
Rust 所有权系统:核心概念与实战示例 摘要: Rust 的所有权系统是其独特的内存管理机制,通过编译时检查确保内存安全,无需垃圾回收。核心规则包括:每个值有唯一所有者、所有权可转移、离开作用域自动释放。文章通过多个代码示例展示了所有权转移、Copy类型、引用借用、可变引用、函数参数所有权和返回值处理等场景。特别强调了引用与可变引用的使用限制、切片作为无所有权引用、生命周期标注的必要性,以及常见陷阱(如循环中借用冲突、自引用结构等)的解决方案。所有权系统使 Rust 既能高效管理内存,又避免了手动内存管理
2026-06-26 19:12:10
330
原创 android——Compose 大型项目分层架构:ViewModel 拆分策略与实践
Compose 大型项目分层架构:ViewModel 拆分策略与实践 本文针对 Jetpack Compose 项目中 ViewModel 膨胀问题提出解决方案。作者指出,随着业务迭代,ViewModel 容易演变为"巨型 Fragment",导致重组性能问题和架构混乱。 核心解决方案是按业务能力而非UI结构拆分ViewModel,提出四大原则:业务能力拆分、单状态流、禁止横向调用、UI仅负责组合。文章详细介绍了Feature+Sub ViewModel分层模型、状态切片策略和边界判断标准,强调避免将Vie
2026-06-26 11:08:44
187
原创 AI——移动端大模型部署新范式:基于sherpa-onnx的Android离线语音识别实战(语音转文字)
《Android离线语音识别实战:基于sherpa-onnx的轻量化部署方案》摘要 本文介绍了利用sherpa-onnx框架在Android设备实现离线语音识别(ASR)的完整解决方案。该方案具有三大核心优势:1)完全离线运行,保障数据隐私;2)极简架构(核心库<50MB),支持INT8量化模型压缩;3)全栈语音处理能力(支持ASR/TTS/KWS)。文章详细展示了从环境配置、模型部署到实时音频流处理的完整开发流程,重点解析了如何通过线程优化、内存池管理和动态降频等技术实现毫秒级响应。实测表明,量化模
2026-06-15 14:18:14
673
原创 AI——使用RAG增强检索进行
本文介绍了使用llama.cpp运行DeepSeek-R1-Distill-Qwen-1.5B模型构建RAG系统的完整方案。主要内容包括:1)安装必要的Python库(llama-cpp-python、langchain等);2)构建本地知识库的步骤:文档加载、切分、向量化存储;3)集成llama.cpp配置检索器和模型,设置Prompt模板;4)实现问答功能并加入安全清理机制。文章还提供了常见问题优化建议,如调整chunk参数、降低temperature值等。该方案结合了llama.cpp的高效本地推理和
2026-05-28 17:40:43
71
原创 AI——5分钟搞定!手把手教你用llama.cpp在Windows上本地运行大模型(集成显卡也能用)
其实就4个核心步骤:1.下载llama.cpp2.设置环境变量3.下载模型文件(GGUF格式)4.运行`llama-cli -m 模型名`不需要Python环境,不需要pip安装,不需要理解什么注意力机制——下载、解压、运行,三步搞定。你的电脑配置怎么样?按这个教程跑起来了吗?欢迎评论区告诉我!---- llama.cpp下载:https://llama-cpp.com/download/- 模型镜像站:https://hf-mirror.com/
2026-05-20 19:33:00
550
原创 AI——大模型的应用场景
针对检验报告、设备铭牌、药品说明书、认证证书等图片,实现高精度文字提取,并依据医学知识图谱和上下文逻辑自动纠正识别错误(如形近字、专业术语)。系统能在部件磨损、温度异常等微小征兆时发出预警,并自动触发主动维护工单和备件申领,推动售后服务从“被动维修”转向“主动保养”,最大化设备在线率,创造服务增值收入。为医院新入职的医护人员提供虚拟仿真操作环境,AI实时捕捉用户操作动作并给予纠错指导,培训后自动依据操作规范打分,输出技能缺陷报告。这能将法规工程师从繁琐的文案工作中解放出来,缩短产品注册周期,降低合规风险。
2026-05-19 14:30:26
282
原创 Android——组件化实战:Application启动时用ARouter实现跨模块调用
本文介绍了在Android组件化开发中,使用ARouter实现Application启动时跨模块调用的方法。通过将公共接口定义在基础模块,业务模块实现接口并用@Route注解标记,在Application中通过ARouter.getInstance().navigation(接口.class)获取服务对象,实现模块间解耦调用。关键步骤包括:配置ARouter、定义接口、实现接口并注解、Application中获取服务调用。该方法避免了模块间的直接依赖,使Application能轻松调用其他模块功能,适用于初
2026-03-25 16:03:11
482
1
原创 kotlin——使用retrofit框架上传文件(视频)
本文展示了Kotlin实现的视频上传功能代码,主要包含四个部分: VideoUploadUtil:使用协程在IO线程启动上传任务,处理视频路径并调用Repository VideoUploadRepository:单例类,负责构建多部分表单请求体,包括时间、部门代码等文本参数和视频文件 VideoUploadApi:定义上传接口,使用@Multipart注解处理文件上传 VideoUploadReqBean:数据类封装上传请求参数 代码采用协程异步处理,包含完善的异常捕获机制,通过Retrofit实现HTT
2026-03-12 11:28:18
67
原创 C#——报错:System.Net.Sockets.SocketException (10049): 在其上下文中,该请求的地址无效。
摘要:Kestrel启动失败问题解决方案:当Kestrel无法绑定指定网络地址时,需修改Properties/launchSettings.json文件中的applicationUrl参数。将示例中的192.168.101.145替换为本地实际IP地址(如192.168.101.137),保存后重新运行项目即可解决绑定问题。该操作主要针对Development环境的配置调整。
2026-02-03 19:09:31
226
原创 android——Android Studio 路径迁移指南(释放 C 盘空间)
摘要: 针对Windows系统下Android Studio占用C盘空间的问题,本文提供了三类核心文件(.android、.gradle、.AndroidStudio)的迁移方案: .android:通过环境变量ANDROID_SDK_HOME指定模拟器镜像新路径; .gradle:通过GRADLE_USER_HOME环境变量重定向缓存目录; .AndroidStudio:修改idea.properties配置文件中的config.path和system.path。 操作后需重启AS验证路径生效,迁移旧文件
2026-01-26 17:55:48
2435
2
原创 C#——意框架(结构说明)
本文将结合工程约定与模块模板,详细说明module目录下各常见子项目/文件夹的核心职责、放置内容及设计原则。以下结构适用于多数基于DDD(领域驱动设计)思想的分层架构项目,可根据实际技术选型(如ORM框架)微调命名。
2026-01-15 10:32:47
984
原创 android——开发中的常见Bug汇总与解决方案(闪退)
Bug是程序员成长路上的必经之路。面对bug,我们要有:1. **耐心** - 仔细分析日志和堆栈信息2. **方法论** - 使用二分法、断点调试等技巧3. **预防意识** - 编写健壮的代码,添加充分的测试4. **学习心态** - 每个bug都是学习的机会记住:没有不会写bug的程序员,只有不会调试的程序员。希望这份汇总能帮助大家在Android开发路上走得更加顺畅!---**持续更新中...** 如果你有其他常见的bug案例,欢迎在评论区分享!
2025-12-19 17:30:55
915
原创 android——热修复(补丁)
文章摘要:Tinker补丁打包流程包括:1)生成基准包;2)修改代码但不新增/删除资源;3)配置补丁信息(可选);4)运行命令生成补丁包。关键点:基准包路径、TinkerId版本号、Application类配置需准确,补丁包最终输出在tinkerPatch目录。注意资源修改限制,补丁包名为patch_signed_7zip.apk。(135字)
2025-07-09 17:16:30
483
原创 android——屏幕适配
在 Android 开发中,屏幕适配是非常关键的。因为 Android 设备具有各种各样的屏幕尺寸、分辨率和像素密度。如果没有进行良好的屏幕适配,应用可能会出现显示不完整、元素拉伸或压缩变形、字体大小不合适等问题,极大地影响用户体验。屏幕适配是一个综合性的工作,需要结合布局、资源和代码等多种方式,以确保应用在各种 Android 设备上都能有良好的显示效果。
2024-12-26 14:01:33
2011
原创 图片无损放大(免费)
下载地址:我用夸克网盘分享了「Lossless.Zoomer.x64_3.1.0.zip」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。我们可以使用软件工具:Lossless.Zoomer.x64_3.1.0 来进行无损放大(免费)链接:https://pan.quark.cn/s/e6599ccfeb29。1、使用Lossless.Zoomer.x64_3.1.0。使用左上角的设置--打开--只能放大jpg的文件。
2024-12-23 14:48:49
584
原创 android——jetpack startup初始化框架(启动性能优化)
Android Jetpack Startup是一个库,它简化了Android应用启动过程,尤其是对于那些需要处理复杂数据绑定和初始化逻辑的应用。它的核心在于提供了一个。这样的自定义方法中。这种做法可能导致UI阻塞,特别是当初始化操作耗时时,用户体验可能会变差。,用于声明应用的初始化逻辑,这个逻辑会在首次启动时异步运行,而不是直接在。AsyncInitializer 类。中初始化,所有的代码通常会放在。LogInitializer类。或相关生命周期方法内,如。
2024-11-05 10:41:33
674
pdf-to-ppt.zip
2024-08-01
介绍 该项目基于MVVM项目MVVMHabi,kotlin 语言编写的android MVVM模式基础框架
2023-12-15
xml和compose的结合 二级列表GCP列表的简单示例(包括二级列表选中则自动选中一级列表,列表绑定数据)
2023-12-11
android 热修复(补丁)
2025-07-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅