- 博客(92)
- 资源 (3)
- 收藏
- 关注
原创 Spring Boot深度解析:从理论内核到实战落地
Spring Boot的成功在于其深刻的设计哲学和精妙的工程实现:### 核心思想回顾:1. **约定优于配置**:通过智能默认值减少决策成本2. **起步即奔跑**:快速构建生产就绪的应用3. **生产就绪**:内置健康检查、指标、监控等4. **无代码生成**:运行时通过条件化配置实现智能决策### 最佳实践总结:1. **配置管理**:- 使用Profile分离环境配置- 外部化敏感信息- 版本化配置文件2. **性能优化**:- 合理使用懒加载。
2025-12-10 09:37:33
73
1
原创 Java微服务开发:理论与实践深度解析
1. **渐进式演进**:从单体逐步拆分,避免一步到位2. **契约先行**:定义清晰的API契约,保持向后兼容3. **自治团队**:每个服务由独立团队全权负责4. **自动化一切**:CI/CD、测试、部署、监控全自动化5. **防御性编程**:假设依赖会失败,设计要有弹性6. **可观测性**:指标、日志、追踪三位一体7. **安全左移**:安全考虑融入设计阶段Java微服务开发是一个系统工程,需要平衡技术深度与业务需求。
2025-12-10 09:25:21
20
原创 Android项目中MVVM架构实践
Model:数据层,负责数据获取、存储和处理View:UI层,负责展示数据和接收用户输入ViewModel:连接Model和View的桥梁,负责处理业务逻辑。
2025-12-06 10:32:58
735
原创 Android源码的模块说明
├── art/ # Android运行时。├── cts/ # 兼容性测试套件。├── kernel/ # Linux内核。├── sdk/ # 软件开发工具包。│ ├── adb/ # Android调试桥。├── make/ # Makefile系统。
2025-11-29 11:33:16
681
原创 解析工厂模式:解耦与复用的设计智慧
最后,便于实现对象创建的复杂逻辑。“手机工厂”“电脑工厂”“平板工厂”作为具体工厂类,分别实现了抽象工厂的方法,专门负责创建“手机”“电脑”“平板”对象。但其缺点也较为明显:工厂类承担了所有产品的创建逻辑,一旦产品类型大幅增加,工厂类会变得臃肿复杂,违背“单一职责原则”,同时新增产品时需要修改工厂类的判断逻辑,违背“开闭原则”。它对工厂类进行了抽象,引入“抽象工厂类”和“具体工厂类”的层级结构:抽象工厂类定义创建产品的接口,每个具体产品对应一个专属的具体工厂类,由具体工厂类负责实例化对应的具体产品。
2025-10-30 09:07:22
715
原创 Android Studio 代码注释模板设置指南
File → Settings → Editor → Live Templates,点击 + 新建模板组(如 CustomTemplates),再在组内新建模板。methodParameters().collect { it + " " + it.type.name() }.join(", ")(自动获取参数名 + 类型)${DESCRIPTION}:类描述(需手动输入),${USER}:系统用户名,${DATE}/${TIME}:创建时间(自动填充)。Template Text 注释模板(见下方示例)
2025-10-27 23:47:26
469
原创 单例模式:设计模式中的“独一无二“之道
单例模式是一把"双刃剑":用得好,可简化代码、节省资源、保证数据一致性;用得不好,则可能导致线程安全问题、测试困难、代码耦合度高等问题。使用单例模式的核心原则是:**只对真正需要"唯一实例"的类使用单例**。例如,资源管理器、全局配置等场景适合单例;而业务对象(如用户、订单)则应避免设计为单例。在实现方式的选择上,需根据场景权衡:- 简单场景可选饿汉式或静态内部类;- 高并发场景优先考虑双重检查锁;- 安全性要求极高的场景推荐枚举单例。
2025-10-27 20:14:26
619
原创 OpenCV 4.1.2 SDK 静态库作用与功能详解
每个静态库都有明确的功能定位:core 和 imgproc 构建基础能力,imgcodecs 和 videoio 负责数据 IO,features2d 和 calib3d 支撑特征与三维视觉,ml 和 objdetect 提供智能分析能力,而其他辅助库则扩展了特殊场景的应用。核心基础库是 OpenCV 所有功能的支撑,提供数据结构、内存管理、数学计算等底层能力,是其他模块依赖的核心。此类库提供图像特征点的检测、描述与匹配能力,是目标识别、图像拼接、立体视觉等高级功能的核心。
2025-10-27 20:07:46
740
原创 RxJava在Android开发中的实战指南
例如,在传统的异步编程中,我们可能需要使用回调函数来处理网络请求的结果,而在 RxJava 中,我们可以将网络请求封装成一个 Observable 对象,通过订阅这个对象来获取请求结果,并且可以在这个过程中对数据进行各种处理。这种基于事件驱动的编程模型,使得代码的逻辑更加清晰,也更易于维护和扩展。操作符则更加灵活,它可以将被观察者发送的每一个事件转换为一个新的 Observable,然后将这些新的 Observable 发射的数据合并后放进一个单独的 Observable 中发射出去,实现一对多的转换。
2025-10-26 22:09:47
297
原创 MVVM架构:从原理到实践的全维度解析
与MVC中的View不同,MVVM中的View是“被动的”——它不包含任何业务逻辑,也不直接操作Model,仅负责两件事:一是通过数据绑定机制关联ViewModel中的数据,将数据状态实时展示给用户;Model是应用的“数据层”,负责管理应用的核心数据资源和业务逻辑,是整个架构的基础。例如在一个电商APP中,Model会封装“获取商品列表”“提交订单”等接口调用逻辑,以及“计算商品折扣后价格”的业务规则,当ViewModel需要数据时,直接调用Model的方法即可,无需关心数据的具体来源和处理细节。
2025-10-26 05:55:29
867
原创 SharedPreferences的使用方法
SharedPreferences 本身不能直接修改数据,需通过 edit() 方法获取 Editor 编辑器,调用 putXxx() 方法存储数据,最后用 apply() 或 commit() 提交。String username = sp.getString("username", "未知用户");// 默认值 "未知用户"String token = encryptedSp.getString("token", "");editor.putString("username", "张三");
2025-10-23 23:58:39
773
原创 C++智能指针使用指南:告别内存泄漏的利器
为解决这一痛点,C++11标准正式引入智能指针(Smart Pointer),其核心机制是“RAII(资源获取即初始化)”——将内存资源与智能指针对象的生命周期绑定,当智能指针对象销毁时,自动释放所管理的内存。反之,智能指针释放内存后,原始指针也会变为野指针。开发中应尽量避免原始指针与智能指针混用,若必须使用原始指针(如调用C风格接口),需确保原始指针仅作为“临时访问工具”,不参与内存释放。在深入具体智能指针的使用前,需先明确智能指针的底层逻辑——RAII机制是其实现内存自动管理的核心。
2025-10-22 09:56:38
35
原创 android在sd卡中可以mkdir, 但是不可以createNewFile
优先适配分区存储,使用公共目录或应用私有目录创建文件。确保权限申请完整(静态 + 动态)。严格遵循 “先创建目录,再创建文件” 的流程,且路径需通过系统 API 获取。
2025-10-21 21:30:49
540
原创 Android访问OTG文件全解析:从连接到操作的完整指南Android系统访问U盘的实现机制与操作指南
本文详细解析了Android设备通过OTG技术访问U盘文件的实现方法。从硬件要求看,设备需支持OTG功能并使用适配转接线;系统层面需Android 3.1以上版本。操作上提供两种方案:系统文件管理器可实现基础文件传输,第三方应用支持批量处理等进阶功能。开发者可通过USBManager和StorageManager API实现深度集成。常见问题包括设备不识别(检查连接/供电)、文件无法读取(确认格式兼容性)和传输中断(避免直接拔插)等。建议选择正规配件、安全移除设备并合理格式化U盘,以保障稳定访问。随着And
2025-10-21 08:10:49
1825
原创 Android UI适配问题:从原理到实践的全面解析
不同于iOS相对统一的设备生态,Android阵营涵盖了从入门级到旗舰级的海量设备,屏幕尺寸从3.5英寸的功能机到100英寸的智能电视,分辨率从480×800到2K、4K甚至8K,屏幕密度更是从ldpi到xxxhdpi形成完整梯度。屏幕密度指单位面积内的像素数量,单位为DPI(dots per inch),Android系统将屏幕密度划分为ldpi(120)、mdpi(160)、hdpi(240)、xhdpi(320)、xxhdpi(480)、xxxhdpi(640)等多个等级。
2025-10-20 08:12:34
550
原创 SVG图片转化为Android Asset Vector矢量图的完整指南
因此,转化的核心是“将SVG的图形信息适配为Android支持的Vector Drawable语法”,确保转化后图形不失真且能在各Android版本正常显示。打开Android Studio → 进入“File” → “Settings”(Windows)/“Preferences”(Mac) → 选择“Plugins” → 在搜索框输入“SVG2VectorDrawable” → 点击“Install” → 重启IDE完成安装。点击“Path”右侧的文件夹图标,选择本地要转化的SVG文件。
2025-10-19 09:56:34
677
原创 Android 约束布局(ConstraintLayout)的权重机制:用法与对比解析
ConstraintLayout通过"链权重"机制实现类似LinearLayout的权重分配功能。核心步骤:1)创建双向约束链;2)设置链模式为weighted;3)给子控件设置layout_constraintHorizontal_weight/vertical_weight属性。关键差异:ConstraintLayout权重需基于链结构,支持多方向权重共存,且必须将控件宽/高设为0dp。相比LinearLayout,它避免了嵌套,更适合复杂布局,但实现稍复杂。典型应用场景是需要在同一
2025-10-18 17:11:19
1044
原创 Android 中 Padding 与 Margin 的深度解析:从概念到实战区分
Android布局中Padding与Margin的核心区别(摘要) Padding和Margin是控制控件间距的两个关键属性,但作用对象和效果截然不同:1)Padding是内边距,控制控件内容与边缘的距离,会扩大控件实际大小;2)Margin是外边距,控制控件与其他元素的距离,不影响控件自身。典型区别:Padding影响控件背景范围,Margin产生外部空白区域。使用场景:优化内部排版用Padding(如文字间距),调整外部布局用Margin(如控件间距)。常见误区包括混淆二者作用范围、叠加父容器Paddi
2025-10-17 19:04:45
920
原创 Android 中 gravity 与 layout_gravity 的深度解析:从概念到实践
本文详细解析Android布局中gravity与layout_gravity的核心区别: 作用对象:gravity控制子元素在控件内部的排列("内部对齐"),layout_gravity控制控件自身在父容器中的位置("外部对齐") 取值限制:layout_gravity受父容器类型影响(如LinearLayout水平/垂直布局时部分方向失效) 典型场景: 文字/子控件居中用gravity 控件在父容器靠右/底部用layout_gravity 避坑指南: 文字对齐必须用
2025-10-16 21:52:45
752
原创 Android 中 RecyclerView 与 ListView 的深度对比:从设计到实践
Android开发中,RecyclerView和ListView是两种核心列表组件。ListView作为早期控件,采用固定模板设计,简单易用但功能有限;RecyclerView通过模块化解耦,将布局、装饰、动画等功能分离为可替换组件,提供更灵活的扩展能力。性能方面,RecyclerView采用强制ViewHolder模式、三级缓存和预加载机制,显著优化了列表滑动体验。功能扩展上,RecyclerView原生支持滑动操作、自定义动画等高级特性。建议新项目优先选择RecyclerView,仅在对低版本兼容性要求
2025-10-15 20:32:43
971
原创 在windows 10下使用dosbox和nasm搭建汇编编程环境
本文简要介绍DOS汇编环境搭建方法:1.从官网下载安装DOSBox模拟器;2.下载指定版本NASM汇编器(推荐2.03.01版);3.初始化DOS环境,包括挂载DOS目录和切换驱动器。若遇到下载问题,可联系获取安装包。全文提供了具体的下载链接和基本操作指令,适合初学者快速搭建汇编开发环境。
2025-10-10 09:19:20
242
原创 分治策略的实现
分解:分解原问题为子问题,这些子问题为原问题的较小规模的问题。解决:递归地解决这些子问题,如果规模小到一定程度,则直接得出答案。合并:合并上述解决地子问题地解,得出最终解。递归情况:当子问题规模比较大时,成为递归情况;基本情况:当子问题规模不需要递归,已经触底时,此时称作基本情况。递归式:刻画算法的运行时间的等式或者不等式,如归并排序中的最坏情况下的时间复杂。
2024-06-02 09:22:27
472
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅