自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 Gradle Plugin 和 Dependencies 管理详解

在Gradle中,插件和依赖管理是开发过程中不可或缺的一部分。通过合理利用不同的依赖管理方式,如ext和,可以显著提高项目的可维护性和一致性。特别是Version Catalogs,它通过统一的配置管理,使得大型项目的依赖管理更加简洁、可靠。在实际项目中,选择适合自己团队和项目的方式尤为重要。

2024-08-27 00:59:41 1096

原创 Android 应用中广播权限未指定风险与解决方案

在Android应用中,广播(Broadcast)是一种重要的通信机制,应用可以通过广播与系统或其他应用进行通信。然而,如果在发送广播时未指定接收者的权限,可能会导致应用暴露于安全风险之下。未授权的接收者可能会拦截这些广播,甚至可能执行恶意操作。在安全检查中,发现了一个问题:应用存在“Receiver权限未指定风险”。这个问题主要涉及广播发送时未指定接收者权限,可能导致广播被未授权的应用接收,进而可能造成数据泄露或其他安全问题。

2024-08-23 11:30:03 1702

原创 乔新亮CTO成长复盘总结(三) 对专业成长的复盘

在现代职业生涯中,运气常常被认为是成功的重要因素。然而,在乔新亮老师的《CTO成长复盘》课程中,提出了“削弱运气的价值”的观点,强调了认知与努力的重要性。作为一名从程序员成长为CTO的技术领导者,通过自身经历,为我们揭示了运气之外的成功之道。在职业生涯规划中,重要的是不断努力和自我提升。即使没有按计划达到目标,也不要过于苛责自己。持续的努力和进步,将帮助你不断登上新的职业台阶。在实际工作中,认识到传统的管理方法可能无法满足移动互联网研发的高效率和高质量要求,因此改为更加科学和系统的管理方式。从经验中学习。

2024-08-08 16:47:08 400

原创 乔新亮CTO成长复盘总结(二) 对管理工作的复盘

在现代职业生涯中,运气常常被认为是成功的重要因素。然而,在乔新亮老师的《CTO成长复盘》课程中,提出了“削弱运气的价值”的观点,强调了认知与努力的重要性。作为一名从程序员成长为CTO的技术领导者,通过自身经历,为我们揭示了运气之外的成功之道。在职业生涯规划中,重要的是不断努力和自我提升。即使没有按计划达到目标,也不要过于苛责自己。持续的努力和进步,将帮助你不断登上新的职业台阶。在实际工作中,认识到传统的管理方法可能无法满足移动互联网研发的高效率和高质量要求,因此改为更加科学和系统的管理方式。从经验中学习。

2024-08-08 16:42:06 809

原创 乔新亮CTO成长复盘总结(一)对个人认知的复盘

在现代职业生涯中,运气常常被认为是成功的重要因素。然而,在乔新亮老师的《CTO成长复盘》课程中,提出了“削弱运气的价值”的观点,强调了认知与努力的重要性。作为一名从程序员成长为CTO的技术领导者,通过自身经历,为我们揭示了运气之外的成功之道。在职业生涯规划中,重要的是不断努力和自我提升。即使没有按计划达到目标,也不要过于苛责自己。持续的努力和进步,将帮助你不断登上新的职业台阶。在实际工作中,认识到传统的管理方法可能无法满足移动互联网研发的高效率和高质量要求,因此改为更加科学和系统的管理方式。从经验中学习。

2024-08-08 16:34:12 714

原创 在Java中使用JDBC查询数据库并处理结果集

在Java应用程序中,使用JDBC进行数据库查询和处理结果集是常见的需求。本文将介绍如何使用JDBC进行数据库查询并处理结果集,以及如何通过连接池(如HikariCP)来优化Java应用程序中的数据库访问。当应用程序不再需要连接时,连接被返回到池中,以供将来的请求使用。连接池可以显著减少连接创建和关闭的开销,提高应用程序的性能。在生产环境中,使用连接池是提高数据库访问性能的最佳实践。通过配置和使用HikariCP连接池,可以显著减少连接创建和关闭的开销,提高应用程序的性能和可扩展性。

2024-07-30 10:29:38 809

原创 Andorid-基于ML Kit和Tesseract实现OCR身份证识别

OCR(Optical Character Recognition,光学字符识别)是一种将扫描的文档或图片中的文字转换为可编辑文本的技术。它通过图像处理和模式识别技术,将图片中的文字信息提取出来,实现从纸质文档到电子文本的转换。OCR技术已经在许多领域得到了广泛应用,例如文档数字化、文本数据采集、票据处理、身份证件识别等。其核心价值在于提高信息处理的效率和准确性,减少人工操作的时间和成本。:结合Leptonica库和LSTM网络进行字符识别和后处理。

2024-07-29 13:16:05 910

原创 解决 Android 应用安装错误:INSTALL_FAILED_BAD_PERMISSION_GROUP

遇到错误时,不要慌张。通过检查权限声明、添加或更正权限组、检查依赖库、重建项目,并重新安装应用,应该能够解决这个问题。

2024-07-24 09:19:18 884

原创 在 macOS 上使用 Jadx 进行 APK 反编译

在 macOS 上使用 Jadx 进行 APK 反编译需要正确配置 Java 环境。通过使用 Homebrew 安装 Jadx 和 OpenJDK,设置合适的 Java 版本,可以顺利进行 APK 反编译操作。如果遇到问题,请按照本文提供的解决方案进行排查和修复。

2024-07-21 12:41:57 773

原创 在 macOS 和 Windows 上临时使用指定的 Java 版本

在 macOS 和 Windows 上,临时使用指定的 Java 版本可以通过设置JAVA_HOME和PATH环境变量来实现。无论是在终端还是命令提示符中,都可以轻松切换 Java 版本,以满足不同应用程序或工具的需求。

2024-07-21 10:37:57 526

原创 如何在 Android 应用中通过 URL 获取文件扩展名

在 Android 应用开发中,经常需要根据文件 URL 获取文件的扩展名。无论是在文件管理、下载处理还是内容预览中,准确地获取文件扩展名都是关键。本文将详细介绍如何实现一个 `FileExtensionFetcher` 类,利用 HTTP 请求和 MIME 类型映射来获取文件扩展名,并分析其实际应用、性能开销及其他相关方面。

2024-07-17 14:50:48 1141

原创 如何检测Android设备的安全状态:开发者模式、ADB调试和Root检测

​ Android设备提供了多个开发工具和功能,比如开发者模式和ADB调试。这些功能虽然对开发者非常有用,但如果开启了这些功能,会导致设备的安全性降低。特别是当设备已Root时,攻击者可以获得更高的权限,从而更容易破坏应用的安全性。因此,检测设备的这些状态并做出相应的反应是确保应用安全性的关键。

2024-07-15 16:48:52 1455

原创 深入了解 Timber:全面掌握 Android 日志记录的最佳实践

`Timber` 是一个功能强大且灵活的日志记录库,能够简化日志记录过程,提高代码可维护性,并提供多种自定义和增强功能。通过合理使用 `Timber`,你可以在 Android 项目中实现高效、易维护的日志管理解决方案。

2024-07-09 09:42:38 1340

原创 Java 8 到 Java 22 新特性详解

从Java 8到Java 22,Java引入了众多新特性和改进,极大地提升了开发效率和性能。Lambda表达式、Stream API、模块系统、虚拟线程、字符串模板等特性,使Java在现代开发中依然保持着强大的竞争力。希望本文能帮助开发者更好地理解和利用这些新特性,在实际项目中充分发挥它们的优势。

2024-07-08 16:02:06 1117

原创 ClickHouse 介绍:深度解析高性能列式数据库的核心优势

ClickHouse 作为一款高性能的列式数据库,以其出色的性能、灵活的架构和丰富的功能,成为大数据分析领域的重要工具。其列式存储、数据压缩、高性能查询、实时分析、分布式架构、SQL 支持以及与其他工具的兼容性,使其在处理海量数据时表现卓越。 如果你的工作涉及到大规模数据处理和分析,ClickHouse 是一个值得考虑的解决方案。它能够帮助你快速获取数据洞察,优化存储成本,并确保系统的高效和稳定。

2024-07-04 17:58:13 1024

原创 探索 Neo4j:图数据库的强大应用

Neo4j 是一款开源的图数据库,它使用节点、关系和属性来表示和存储数据。与传统关系数据库不同,Neo4j 通过图形数据模型直观地表达数据之间的复杂关系,使得查询和分析高度连接的数据变得更加简单和高效。Neo4j 广泛应用于社交网络、推荐系统、网络安全等领域。Neo4j 作为一款领先的图数据库,通过其独特的图形数据模型和高效的查询语言,提供了一种全新的数据存储和查询方式。无论是处理社交网络数据、推荐系统、网络安全,还是构建知识图谱,Neo4j 都表现出色。

2024-07-04 16:16:06 921

原创 初识 ANTLR4:构建强大解析器的利器

ANTLR4 是一款广泛使用的解析器生成工具,它允许开发者通过定义语法规则来自动生成解析器代码。ANTLR4 支持多种编程语言,并且能够处理从简单数据格式到复杂编程语言的各种输入。其直观的语法定义语言和强大的错误处理机制,使得 ANTLR4 成为开发语言识别和处理系统的首选工具。ANTLR4 作为一款功能强大且易于使用的解析器生成工具,广泛应用于编程语言的编译器和解释器、数据格式解析、协议解析等领域。通过定义语法规则,ANTLR4 能够自动生成高效的解析器,帮助开发者快速构建语言识别和处理系统。

2024-07-04 16:05:54 590

原创 如何准确测量 Android 应用中 Activity 和 Fragment 的启动时间

在 Android 应用开发中,了解每个 Activity 和 Fragment 的启动时间对于性能优化至关重要。本文将介绍几种方法来准确测量 Activity 和 Fragment 的启动时间,并提供实际操作步骤,以帮助提升应用的响应速度和用户体验。

2024-07-04 11:37:51 1138 1

原创 深入分析 Android HTTPS 证书管理策略:设置本地证书、使用系统默认证书和忽略证书

设置本地证书:提供最高的安全性和合规性,适用于高安全要求的应用,但维护复杂。使用系统默认证书:配置简单、维护轻松,适用于一般的商业应用。忽略证书验证:仅适用于开发和测试阶段,安全性极低,绝不推荐在生产环境中使用。根据应用的实际需求和安全要求选择合适的 SSL 证书管理策略,以确保应用的数据传输安全和用户隐私保护。

2024-07-02 13:38:49 1482 1

原创 如何在35岁程序员的职业危机中脱颖而出

35岁并不是程序员职业生涯的终点,而是一个新的起点。通过业务能力、技术壁垒、管理能力和心理素质的多维度提升,程序员们完全可以在职业危机中脱颖而出,找到属于自己的机遇和发展方向。持之以恒的努力和积极的心态将帮助你在职场中迎接新的挑战,创造新的辉煌。让我们一起加油,迎接更加美好的未来!

2024-06-29 06:10:51 521

原创 深入解析三大跨平台开发框架:Flutter、React Native 和 uniapp

开发者可以编写自定义原生组件或模块,扩展 Weex 的功能。这些自定义组件可以使用 Java 或 Kotlin 编写(对于 Android),或者使用 Objective-C 或 Swift 编写(对于 iOS),然后通过 Weex 的接口将其暴露给 JavaScript 层。Flutter:适合需要高性能和一致性 UI 表现的应用,尤其是在高度自定义和复杂的 UI 场景中。:适合需要快速开发和良好社区支持的项目,能够在一定程度上平衡开发效率和性能。

2024-06-28 17:48:37 6657 5

原创 Android 模块详解与实际应用案例

在 Android Studio 中创建新模块时,左侧栏会显示多个模板选项,每个模板都适用于不同类型的应用开发需求。本文将详细描述每个模块的用途,并结合实际应用案例展开深入分析,帮助开发者更好地理解和应用这些模块。

2024-06-28 12:53:53 905

原创 探索 Gradle 的 `annotationProcessor` 与 `implementation` 的奥秘

在 Android 开发中,合理使用和能大大提升我们的开发效率和代码质量。为我们提供了编译和运行时的依赖支持,而则在编译时为我们施展魔法。理解它们的区别和正确使用方法,是每一个开发者的必修课。希望这篇博客能帮助你更好地理解和使用 Gradle 的依赖配置。愿我们在代码的世界里,不断探索,不断成长。

2024-06-28 12:40:43 674

原创 使用 ActivityResultLauncher 和 ActivityResultContract 实现 Android 开发中的 Activity 结果处理

假设我们正在开发一个 SDK,这个 SDK 需要提供一个扫描功能供第三方应用使用。传统的和方法虽然可以实现这个功能,但需要第三方应用自己处理回调逻辑。为了解决这一问题,我们可以使用和,让第三方应用无需重写方法。首先,我们需要定义一个来启动目标 Activity 并接收结果。

2024-06-27 11:39:21 836

原创 产品思维精要:梁宁的30讲总结

希望我们能够在不确定的世界中建立自己的确定性,与人彼此依赖,向世界交付你的价值并获得回报。让我们一起加油。如果你追求深度关系和长期关系,观察一个人的内在驱动力和存在感是非常重要的。只有了解这些,才能在不确定的未来中,与之共同成长并建立稳定的关系。本节课介绍了三个重要的词:满足、愉悦和不爽。通过这三个词,我们可以衡量一个产品的优劣、人与人之间的关系,以及深入探索自我。希望你能够利用这些概念,提升自己的产品能力和对用户情绪的理解。恐惧是理解边界、找到动力和抓住痛点的关键。直面恐惧,才能找到真正的机会。

2024-06-26 22:59:42 2193

原创 深入解析Android DEX文件及其优化策略

通过对DEX文件的深入理解和优化处理,开发者可以显著提升Android应用的性能和用户体验。本文所探讨的优化方法和策略,希望能为广大开发者提供有价值的参考和指导。

2024-06-26 15:40:41 737

原创 Kotlin 中处理可能为 null 的类型

尝试对一个null对象进行操作时抛出的异常。在 Kotlin 中,通过引入可空类型 (),我们可以显式地声明一个变量可能为null,并提供一系列工具来安全地处理这些变量。// 使用安全调用操作符 (?.).nameuserName")// 使用 Elvis 操作符 (?:).name?")// 使用 let 函数处理非空值.let {${itname= getNullableUser() // 使用安全调用操作符 (?

2024-06-26 15:32:44 511 1

原创 使用 Gradle 引入 AAR 库的两种方式

在 Android 开发中,我们经常需要引入第三方库或自己编写的库文件,这些库文件通常以 AAR(Android Archive)格式提供。在 Gradle 中,有两种常用的方式来引入 AAR 文件:`implementation files('libs/XXX-release.aar')` 和 `implementation(name: 'XXX-release', ext: 'aar')`。本文将详细介绍这两种方式及其适用场景,并讨论在 Gradle 8.0 及以上版本中的变化和解决方案。

2024-06-26 13:16:01 1059

原创 Android 解决 “Module was compiled with an incompatible version of Kotlin“ 问题

这通常是由于项目中使用了不同版本的Kotlin库导致的。要解决这个问题,我们需要确保项目中的所有Kotlin依赖项版本一致。在实际项目中,第三方库可能需要不同版本的Kotlin,这会导致版本冲突。这意味着你的项目使用的Kotlin标准库版本与编译器期望的版本不匹配。强制所有依赖项使用相同的Kotlin版本,并清理重建项目,可以解决Kotlin版本不兼容的问题。文件中引用相同的Kotlin版本,并统一所有Kotlin相关的依赖项。查看项目中所有依赖的Kotlin版本,确保它们使用的版本一致。

2024-06-26 09:28:05 2135

原创 使用注解、APT和反射+动态代理在Android中实现语法检查、视图绑定和事件注入

首先,我们定义一个自定义注解@NonEmpty,用于标记不允许为空的字段。接下来,我们实现一个自定义Lint规则,检查标记为@NonEmpty的字段是否为空。首先,创建一个类来定义Lint规则。创建文件// 检查字段是否为空的逻辑 return false;// 这里可以加入具体的逻辑,比如检查字段是否为null或空字符串 } }// 检查字段是否为空的逻辑 return false;

2024-06-24 15:03:52 993

原创 使用 Gradle Version Catalogs 集中管理依赖项

Gradle Version Catalogs 是 Gradle 7.0 引入的一项功能,用于集中管理项目中依赖项的版本信息。这使得依赖项的版本管理更加集中和简洁,特别是在管理多个模块或大型项目时。

2024-06-24 09:27:16 644

原创 如何与H5前端完美互动:掌握WebView技巧

WebView与H5前端交互

2023-05-05 12:39:43 1085

原创 Android Studio run main()方法报错

Android运行 main方法

2022-11-12 12:44:43 1751

原创 Android Studio run main()方法报错

解决方案:1. 执行run ** main() with Coverage;2. 修改.idea下的gradle.xml<GradleProjectSettings>标签节点下添加一行<option name="delegatedBuild" value="false" />保存,即可使用run ** withmain() 和 debug ** with main()...

2021-09-16 13:06:59 181

原创 Android Studio 关联远程仓库

2021-09-14 18:19:04 562

转载 Android Studio使用Git分支管理

一、首先到Git平台上创建一个空的项目由于是首次创建项目是空的,所以我们本地先提交一个工程代码上去先找一个目录执行:git clone 拉取远程仓库二、然后我们用Android Studio创建一个工程项目:将创建的工程文件复制到刚才clone下来的仓库目录里,或者在AS创建项目的时候项目路径选择刚才clone下来的目录由于是第一次提交,我们需要打开根目录下.gitignore文件忽略一些不必要的文件如build、.idea、iml等, 在.gitignore文件中输入下面内容并保同样在工程下面的每个m

2021-02-25 16:25:50 1239

原创 2021-02-22

window 常用命令一、Jenkins命令1、用管理员身份启动cmd,否则执行命令报错:否则会报系统错误52、进入jenkins安装根目录Jenkins启动命令:net startjenkinsJenkins关闭命令:net stop jenkins

2021-02-22 16:16:37 67

原创 2021-02-22

TextView设置行间距在你要设置的TextView中加入如下代码:1、android:lineSpacingExtra设置行间距,如”8dp”。2、android:lineSpacingMultiplier设置行间距的倍数,如”1.5″。

2021-02-22 10:52:10 81

原创 git 拉去远程仓库分支代码

执行命令git initgit remote add origin git@github.com:XXXX/nothing2.git git fetch origin dev(dev为远程仓库的分支名)git checkout -b dev(本地分支名称) origin/dev(远程分支名称)git pull origin dev(远程分支名称)...

2020-09-13 14:27:58 255

原创 Android动画开源框架记录

https://github.com/yipianfengye/android-zxingLibraryhttps://github.com/Yalantis/Side-Menu.Androidhttps://github.com/Yalantis/Context-Menu.Androidhttps://github.com/Yalantis/Pu...

2019-12-29 14:38:33 162

空空如也

空空如也

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

TA关注的人

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