- 博客(424)
- 资源 (9)
- 收藏
- 关注
原创 常用命令清单
获取签名文件MD5 :keytool -list -v -keystore lagoueducation.jks跳转至路由页adb shell am start -a android.intent.action.VIEW -d "lagou://lagou.com/edit?type=2\&id=1"
2020-08-28 18:17:38
362
原创 正确查看依赖关系./gradlew :app:dependencies
你的命令包含所以直接执行会报错是正常的,因为,并且你构建的 Variant 名称跟release不同。
2025-11-03 10:24:05
350
原创 Linux:例行任务管理(corn at)
摘要:cron和at是Linux系统常用的任务调度工具。at用于安排一次性任务(如指定时间关机),通过at 时间创建任务,atq查看任务,atrm删除任务。cron用于周期性任务(如每日备份),通过crontab -e编辑任务,格式为"分 时 日 月 周 命令",支持特殊符号如*(每)、,(或)等。关键区别:at处理单次任务,cron处理重复任务。注意使用绝对路径,普通用户只能管理自己的任务。
2025-08-26 11:27:45
470
原创 Linux:检查用户信息(user who w + finger)
摘要: Linux/macOS中的users、who、w命令均用于查看用户登录信息,但功能层级递进: users:仅列登录用户名(简洁,重复登录会重复显示)。 who:扩展显示终端、登录时间及IP(who am i可查当前用户)。 w:最全面,包含系统负载(1/5/15分钟均值)及用户进程(如top)。 跨系统一致性:核心功能在macOS/Linux中完全通用,仅who -r的运行级别显示等极少数细节存在差异,不影响日常使用。 应用场景:快速确认登录用户→users;排查登录来源→who;监控系统负载及用户
2025-08-26 10:43:07
828
原创 Android 在 2020-2025 都做哪些更新?
《Android开发五年全景复盘与迁移指南(2021-2025)》摘要:本文系统梳理了近五年Android生态的关键变化,包括平台版本演进(Android 12-15)、Google Play合规要求(2025年起强制targetSdk 35)、工具链升级(JDK 17/AGP 8/Kotlin 2.0)和Jetpack Compose发展。重点解析了权限模型变革(如通知运行时权限、细粒度媒体访问)、隐私合规要求(Data Safety表单、Privacy Sandbox)以及开发实践迁移方案(存储访问、前
2025-08-13 18:41:36
1617
原创 SSH登录是个啥?咋不用 账号密码 代替呢?
指用户在一个系统中登录后,不需要再次输入凭据即可访问其他受信系统。你在公司登录了邮箱系统,再打开 GitLab、Jenkins、Wiki 就自动登录了。登录方式安全性用户体验场景账号密码❌低✅简单基本应用、过渡方案SSH 密钥✅高⚠️初期麻烦服务器远程、安全场合✅高✅极佳企业系统、社交登录✅高✅良好前后端分离系统证书✅极高⚠️复杂企业 VPN、K8s、TLS开发/运维类系统(Jenkins、Git、Docker):强烈推荐SSH 密钥登录。
2025-07-21 16:19:16
852
原创 TCP的三次握手和四次挥手
下一个关联的概念是连接(Connection)——连接是数据传输双方的契约。连接是通信双方的一个约定,目标是让两个在通信的程序之间产生一个默契,保证两个程序都在线,而且尽快地响应对方的请求,这就是连接(Connection)。设计上,连接是一种传输数据的行为。传输之前,建立一个连接。具体来说,数据收发双方的内存中都建立一个用于维护数据传输状态的对象,比如双方 IP 和端口是多少?现在发送了多少数据了?状态健康吗?传输速度如何?等。所以,连接是网络行为状态的记录。和连接关联的还有一个名词,叫作。
2025-07-21 11:45:14
997
原创 Android 多语言适配(I18n)
是“国际化”(Internationalization)的缩写,其中 是单词 “internationalization” 的第一个字母, 代表字母 和 之间的 18 个字母, 是单词的最后一个字母。这种缩写形式主要用于软件开发领域,以简洁地表示支持多语言的概念。多语言或国际化在软件中通常指的是使软件能够适配多种语言和地区的过程,不仅包括翻译文本,还包括考虑日期和时间格式、货币单位、数字格式、排序规则等地区差异性问题。使用 作为国际化的缩写,可以让开发者快速识别代码库中与多语言支持相关的部分,比如文
2025-07-15 18:13:27
1062
原创 HTTPS 的前世今生:一场关于“信任”的技术革命
HTTPS:互联网安全的“护城河” HTTPS(HTTP + TLS)是当今互联网的安全基石,通过加密、身份认证和完整性校验,保护数据传输安全。相比HTTP的“裸奔”风险,HTTPS能抵御监听、篡改和钓鱼攻击。其核心流程包括TLS握手(交换密钥)和数据加密传输,免费证书(如Let's Encrypt)降低了部署门槛。尽管HTTPS无法解决所有安全问题,但它是现代网站的基本标配,提升用户信任和SEO排名。正如护城河守护城池,HTTPS构建了网络世界的安全屏障。
2025-07-15 18:10:43
303
原创 IPsec:网络层的加密盾牌与HTTPS的差异解析
高安全场景可叠加使用(如IPsec隧道内跑HTTPS),实现。二者协同构建了现代互联网的分层防御体系。通过以上对比可见,IPsec是。,但需权衡性能损耗。
2025-07-15 17:46:24
1073
原创 IPSec和HTTPS对比(一)
在IPSec隧道模式下,虽然原始IP地址和端口被加密隐藏,但主机到主机的寻址依然能精准实现,其核心在于。加密算法强度(如AES-256) + 密钥定期更新(IKEv2协议) → 理论不可破解。,既保护了隐私,又实现了精准的主机到主机通信。如同寄送机密文件——
2025-07-15 17:21:59
782
原创 网络:TCP序列号和滑动窗口,顺序保证
摘要:TCP通过序列号(SEQ)和滑动窗口机制保证数据顺序与高吞吐量。序列号标记字节位置,接收方按序确认(ACK),缓存乱序数据;滑动窗口动态调整发送量(min(rwnd, cwnd)),实现管道化传输。高级优化包括窗口缩放突破64KB限制、SACK选择性重传及BBR拥塞算法。粘包(Nagle)与拆包(MTU)不影响顺序性。核心在于平衡顺序与并行,以滑动窗口为枢纽,结合动态调整实现高效可靠传输。(149字)
2025-07-15 14:28:32
933
原创 ViewPager FragmentPagerAdapter在系统杀死应用后重建时UI不刷新的问题
通过重写getItemId改变Fragment的Tag生成规则,从根本上阻断了系统对旧Fragment实例的复用机制。此方案以最小代码改动实现了数据与UI的强一致性,适用于动态数据场景的ViewPager适配。但需注意:长期持有大量Fragment对象可能引发内存压力,建议结合使用以优化资源回收。
2025-04-25 16:31:20
652
原创 技术负责人接手问题团队的破局之道:从止血到重建的实战指南
当你发现晨会变成“点头会”——60%的成员习惯性沉默,跨部门协作邮件平均3天得不到回复,说明团队已陷入“信心黑洞”。从战备力量中挑选3-5人组成特种小组,给予独立决策权。某团队正是靠这样的小组,用半年完成核心系统重构。某供应链团队通过优化数据库索引,把报表生成速度从2小时缩短到10分钟,立即赢得业务方支持。在取得初步信任后启动架构治理,但要用业务语言包装:“这次改造能让需求交付提速30%”
2025-03-28 10:38:19
880
原创 app依赖库libs资源和代码的可见性规则
现象原因解决方案能访问 libFeedback 的资源资源自动合并到 APK,全局可见无需额外配置无法访问依赖导致代码不传递使用api或 app 直接依赖 libFeedback代码编译报错Utils类或方法不是public,或依赖未传递检查修饰符并调整依赖配置选择方法 1 或方法 2 取决于架构设计。如果 libFeedback 是 libVip 的实现细节,用;如果是公共 API,用api。
2025-03-17 10:06:00
843
原创 Android 检测设备是否 Root
为了准确判断设备是否已经Root,通常可以结合以上几种方法进行检测。单独依赖某一种方法可能会存在误判的风险(例如,某些Root工具会隐藏自己),因此建议使用多个方法的组合来增加检测的准确性。SafetyNetAPI是推荐的方式,它可以通过Google的服务器来验证设备的安全性,避免了本地Root检测的很多限制。
2024-12-30 17:23:42
3237
1
原创 Android 动画深度解析
例如,在使用一些较新的转场动画 API 时,如果应用需要兼容低版本系统,可以通过条件判断来使用不同的实现方式,在高版本中使用新的 API 来实现炫酷的转场效果,而在低版本中采用传统的、兼容性更好的动画手段来模拟类似的过渡效果,保证不同版本设备上的用户都能获得相对一致的体验。它突破了传统动画仅针对 View 组件的局限,能够对任何对象的属性施展动画魔法,无论是位置、大小、透明度,还是自定义对象的特有属性,皆可在其掌控之下实现平滑自然的变化。另外,硬件加速也是提升动画性能的一大利器。
2024-12-19 11:34:02
1452
原创 如何在 Android 项目中实现跨库传值
在一个复杂的 Android 项目中,我们通常会有多个库(lib),而主应用程序(app)依赖所有这些库。目前遇到的问题是,在这些库中,libAd需要获取libVip的 VIP 等级状态,但这两个库之间没有直接依赖关系。
2024-12-10 13:15:13
635
原创 忘提交文件,想合并提交,git commit --amend
如果你已经进行了提交并且忘记包含一个文件,但希望将这个文件合并到之前的一次提交中,可以使用 来进行修改。以下是步骤:添加文件到暂存区:使用 修改最后一次提交:编辑提交信息(可选):强制推送到远程仓库(如果已推送过):使用 可以在确保没有其他人更新该分支的情况下安全地强制推送。协作警告:如果你在与他人协作的公共分支上操作,应格外小心,因为 会覆盖远程历史记录,可能会影响其他开发人员的工作。本地分支:如果这是一个尚未推送或仅在本地使用的分支,则可以放心地执行上述步骤而无需担心对他人的影响。
2024-12-10 11:41:21
841
原创 深克隆和浅克隆,深克隆的5种实现方式
是把原型对象中成员变量为值类型的属性都复制给克隆对象,把原型对象中成员变量为引用类型的引用地址也复制给克隆对象,也就是原型对象中如果有成员变量为引用对象,则此引用对象的地址是共享给原型对象和克隆对象的。
2024-09-26 16:16:21
1505
原创 TextView字体Sans-serif Medium
除了使用内置的字体,你还可以加载自定义字体。在res/font文件夹中添加自定义字体文件,并通过引用。例如,假设你有一个自定义字体文件放在中:在res/font文件夹中创建一个新的 XML 文件,例如</在布局文件中使用自定义字体:属性提供了一种方便的方法来设置不同的字体系列。你可以选择内置的字体,也可以加载自定义字体,以满足应用程序的设计需求。
2024-09-06 20:14:41
1521
原创 Attribute application@networkSecurityConfig value=(@xml/network_security_config) fromAndroidManifest
这个错误提示说明在你的项目和库中都定义了属性。为了解决这个冲突,你需要使用属性来指定哪个配置应该被替代。tools:这通常是在<manifest>元素的开头。</</这样做将会告诉构建系统使用你在项目中定义的文件,而不是库中定义的文件。
2024-07-25 15:46:08
835
1
原创 APP国际化查询表:简称-国家-语言
简称国家/地区名语言简称语言AF阿富汗ps, fa普什图语, 波斯语AL阿尔巴尼亚sq阿尔巴尼亚语DZ阿尔及利亚ar阿拉伯语AO安哥拉pt葡萄牙语AR阿根廷es西班牙语AU澳大利亚en英语AT奥地利de德语AZ阿塞拜疆az阿塞拜疆语BH巴林ar阿拉伯语BD孟加拉国bn孟加拉语BY白俄罗斯be, ru白俄罗斯语, 俄语BE比利时nl, fr, de荷
2024-07-25 14:38:38
939
1
原创 RecyclerView嵌套ScrollView卡顿解决
以上方法都是为了避免嵌套在ScrollView中引起的性能问题。最推荐的方法是使用或者将头部和列表合并到一个中。如果仍然遇到问题,可以尝试其他优化技术,例如减少视图层次结构或优化适配器中的数据绑定逻辑。
2024-06-27 14:48:00
1420
原创 手机网络卡顿,试试飞行模式
切换飞行模式的效果相当于给手机的网络连接“重启”了一次,能够解决许多由网络连接、IP地址、DNS缓存等问题引起的网页访问问题。如果这种情况频繁发生,建议联系网络运营商进行检查或更换更稳定的网络环境。
2024-06-17 20:31:28
3560
原创 Android 上展示 GIF 动图的方法
使用ImageView加载 WebP 格式优点:简单直接,节省存储空间。缺点:需要将 GIF 转换为 WebP,且 WebP 支持有限。使用Glide优点:强大的图片加载和缓存功能,支持复杂的图像处理。缺点:库较大,增加 APK 大小。使用Fresco优点:支持多种图片格式,高效的内存和磁盘缓存管理。缺点:库较大,学习曲线较陡。使用优点:专用于 GIF,功能丰富,内存使用优化较好。缺点:仅限于 GIF,不支持其他格式。使用Movie类优点:不需要额外的第三方库,轻量级。缺点。
2024-06-14 18:58:51
5125
原创 ConstraintLayout:layout_constraintWidth_default和layout_constraintHorizontal_bias组合
在 Android 开发中,是一个强大的工具,用于构建灵活且响应迅速的用户界面。在本文中,我们将深入探讨两个关键属性——和,并展示如何使用这些属性来实现一个常见的布局需求。
2024-06-14 18:37:14
1440
原创 ConstraintLayout:layout_constraintHorizontal_chainStyle
是ConstraintLayout中的一个属性,用于定义水平链(horizontal chain)中各个视图之间的布局方式。在ConstraintLayout中,链是一组通过双向约束连接在一起的视图的集合,可以是水平的也可以是垂直的。属性决定了如何分配链内视图之间的空间或者如何对齐这些视图。
2024-05-14 16:43:03
2187
1
原创 uri.getQueryParameters(name)返回一个列表(List)
综上所述,返回列表是为了更灵活地处理URI中的查询参数,尤其是对于同一个参数名可能对应多个值的情况。这种设计既保证了功能的强大,也使得API的使用更加灵活和方便。开发者需要根据自己的需求,从返回的列表中获取一个或多个值。
2024-05-13 19:45:01
655
原创 ArtifactResolveException: Could not resolve all files for configuration ‘:app:googleArm32DebugRuntim
遇到这个错误,通常意味着Gradle在构建过程中无法解析项目依赖的一些文件。
2024-05-10 15:32:00
1963
原创 Android:lib库之间互不依赖,怎么传值?
如果libA与libB需要共享很多数据或逻辑,可以考虑创建一个新的库(比如CommonLib),专门用于存放共享的代码和资源。既然主工程依赖了所有的库,你可以通过主工程来协调libA和libB之间的数据共享。例如,可以在主工程中获取libB的值,并将其以参数的形式传递给libA。通常来说,尽量避免模块间的直接依赖,采用一种松耦合的方式来组织代码,可以使项目更加灵活和可维护。定义一个接口,在libA中声明需要的方法,然后在主工程中实现这个接口,并将libB的数据传递到libA。接口访问到libB的值。
2024-04-30 18:14:53
567
3
原创 Android isNetworkConnected如何判断APP连接到了无网络热点
在考虑网络检测方法时,速度和稳定性是两个重要的考量因素。开发者需要基于应用的具体需求和目标用户所在地的网络环境来选择最适合的方案。对于需要快速反馈且目标用户遍布全球的应用,使用DNS解析可能是最优的选择,尤其是当选择如Google DNS或Cloudflare DNS这样的全球性服务时。然而,在特定地区(例如中国大陆),为了确保最佳的访问速度和稳定性,选择本地DNS服务可能更加合适。对于主要面向特定地区用户的应用,例如中国大陆,采用HTTP HEAD请求并选择本地流行且稳定的网站(如。
2024-04-23 15:16:45
2007
1
原创 isListEqual方法比较
在未排序的情况下,为了确定一个列表是否包含另一个列表的所有元素(并且反之亦然),你可能需要对列表中的每个元素执行多次查找操作,这在最坏的情况下会带来O(n^2)的时间复杂度。当两个列表被排序后,我们可以保证相同的元素将会出现在相同的位置,这样就可以通过一个简单的顺序比较来确定两个列表是否相等,而不需要对每个元素进行多次查找。因此,在选择使用排序方法之前,请确保考虑到了你的具体需求,包括列表的大小、元素的类型以及是否需要保持元素的原始顺序。如果列表中的元素是唯一的且元素的顺序不重要,则可以考虑使用。
2024-04-19 18:10:22
547
原创 查看apk是64位32位(三种方法)
通过检查APK文件,你可以确定该APK支持的架构类型,包括它是为64位(例如arm64-v8ax86_64)还是32位(例如x86)架构准备的。Android应用程序可以包含多个不同的二进制文件,每个文件针对不同的处理器架构,这些文件通常被称为ABI(Application Binary Interface)。一个APK可以同时包含32位和64位的二进制版本,以便在各种设备上提供最佳性能。
2024-04-19 17:20:28
16987
2
原创 Git删除未跟踪的文件Untracked files
请注意,这个命令会从你的工作目录中永久删除这些文件,因此在执行之前请确保你不再需要这些文件或已经妥善备份。请注意,这个命令会从你的工作目录中永久删除这些文件,因此在执行之前请确保你不再需要这些文件或已经妥善备份。选项执行删除操作之前,请确保你完全了解将要删除哪些文件,以及这些文件是否真的不再需要或已有备份。选项执行删除操作之前,请确保你完全了解将要删除哪些文件,以及这些文件是否真的不再需要或已有备份。在 Git 中,要删除未跟踪的文件(Untracked files),你可以使用。
2024-04-10 17:42:32
3268
原创 Mac命令行查找SDK/JDK安装位置
如果其中任何一个环境变量被设置,并且指向了 Android SDK 的安装路径,那么 Android SDK Platform Tools 的安装位置也会在其中。通常情况下,Android SDK 的默认安装路径是在用户的 home 目录下的。在不同的系统上,Java 可能安装在不同的位置,因此搜索结果可能会有所不同。环境变量被设置,并且指向了 Java 的安装路径,那么 Java 的安装位置就是该路径。Java 的安装通常位于系统的。命令的安装路径,通常情况下,它会在 Android SDK 的。
2024-03-28 11:42:00
1805
原创 String.format
只是字符串的一部分,并不属于格式化占位符。所以最终输出的格式可能类似于 “↓downloadSpeed/s - ↑uploadSpeed/s”,其中。请注意,上表只是简单概述了一些常用的通配符,更多的格式化选项和复杂的使用方法可以参考Java的官方文档。每个通配符都可以有一系列可选的格式修饰符,如宽度、精度和对齐方式等,来进一步控制格式化的输出。表示占位符的顺序索引,确保了即使参数顺序变动,也总是按照索引位置替换。方法用于格式化字符串。它使用占位符来替换特定的值。表示占位符是用于字符串类型的值,数字。
2024-03-21 16:32:40
522
Scrollview中嵌套ViewPager和ListView常出现的问题
2016-03-30
Android:ScrollView中嵌套ViewPager和ListView示例
2016-03-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅