AI笔记本

2026年以前手搓博客一千多篇。如今 Claw、Cursor、Claude 等 AI Agent 横空出世。只需一句话,AI 就能生成文章、调整格式、润色语言,并一键自动发布。欢迎来到 AI 驱动博客时代 🚀

文章列表

Android

Android特有的数据结构:SparseArray

Android特有的数据结构:SparseArraySparseArray ,稀疏数组,是Android中特有的数据结构,从Android 1.0就有,主要目的是为了节省内存。SparseArray 的实现简洁,源码仅500余行,值得学习。1、SparseArray数据存储方式java中的HashMap是采用数组+链表存储(java1.8以后,链表超过8个采用红黑树存储)。而SparseArray

1.8k
Android

ContentObserver内容观察者源码解析

ContentObserver内容观察者源码解析一定要看看ContentObserver源码内部是如何实现观察者模式观察ContentProvider内容的。用它来观察我们感兴趣的ContentProvider是很有用的(见ContentProvider笔记)。1、注册先从ContentResolver注册ContentObserver的registerContentObserver()方法开始:

2.2k
No variants found for ':base'. Check build files to ensure at least one variant exists.
分享

No variants found for ':base'. Check build files to ensure at least one variant exists.

No variants found for ':base'. Check build files to ensure at least one variant exists.从GitHub上clone新项目到本地,打开的时候经常会遇到各种错误,比如:之前也遇到过在别人电脑上可以正常开发调试,项目或代码clone到自己电脑上出问题。发生这种情况,一般都是和本地的配置有关:gradle配置、JDK配置

3.1k
分享

R8编译问题:Missing classes detected while running R8

R8编译问题:Missing classes detected while running R8Android R8是一个代码混淆和压缩工具,可以将应用程序的大小和安全性优化。它引入了一些新功能,如成员内省、混淆指针、类内省等。但R8使用起来一直不友好,因为自从使用R8之后编译问题不断。主要还是和混淆相关,经常报错,最近又遇到一个:Missing classes detected while ru

8.4k
startActivityForResult的替代方法:registerForActivityResult
Android

startActivityForResult的替代方法:registerForActivityResult

startActivityForResult的替代方法:registerForActivityResult在startActivityForResult的用法一文的最后提到startActivityForResult方法已经废弃,推荐使用AndroidX中的registerForActivityResult方法。将ActivityResultCallback注册到ActivityResultReg

2.7k
关闭gradle离线模式
分享

关闭gradle离线模式

关闭gradle离线模式例行升级项目依赖和插件版本后,用Android Studio重新编译报错:不知何故gradle开启了离线模式(offline mode),这样可以加快编译速度,省去联网更新依赖的时间。不过正因为如此,导致上面的报错。因为更新了依赖,需要联网下载。关闭离线编译模式即可。每天一个坑,记录。相关博客: Maven离线依赖库

1.7k
startActivityForResult的原理
Android

startActivityForResult的原理

startActivityForResult的原理在startActivityForResult的用法一文中简单回顾了启动Activity之间传递数据的方法,这样的设计方便了开发者。背后的原理其实很简单,如果熟悉Activity启动流程,不难发现,其实startActivityForResult就穿插在其中。本篇探索startActivityForResult的原理,顺便回顾一下Activity启

2.2k
Android

startActivityForResult的用法

startActivityForResult的用法startActivity(),应该是安卓开发初学者最先接触的一个方法。从一个Activity:A启动跳转到另一个Activity:B,借助启动的Intent能够携带一些参数,数据流向A->B:1、startActivityForResult方法通常还会有一些场景,启动完B,返回到A界面。需要返回结果,这时候就要用到startActivityFor

1.8k
解决mysql导入数据库失败#1046 - No database selected
数据库

解决mysql导入数据库失败#1046 - No database selected

解决mysql导入数据库失败#1046 - No database selected定期用MySql备份命令mysqldump ,站点数据备份:将服务器上的数据库备份后,文件同步到本地,导入本地localhost站点再备份一份。遇到下面的错误:错误SQL 查询:---- Table structure for table `bbs_attach` --DROP TABLE IF EXISTS `b

1.7k
免费开源的数据库工具:DBeaver
数据库

免费开源的数据库工具:DBeaver

免费开源的数据库工具:DBeaver分享一个免费、开源、跨平台(支持Windows、Mac OS X 和 Linux)的数据库连接工具:DBeaver。GitHub:https://github.com/dbeaver/dbeaver下载地址:https://dbeaver.io/download/DBeaver基于 Java 开发,支持 MySQL、PostgreSQL、 Oracle、DB2、

1.7k
init 初始化块中无法 return?
Kotlin

init 初始化块中无法 return?

init 初始化块中无法 return?在 Kotlin 类中 , 可以定义 init 初始化块 , 在其中可以为 变量赋值 , 执行一些检查相关的代码 , 该 init 初始化块在 创建类实例对象 时执行 。调用顺序为:主构造函数 -> init -> 次构造函数。而且允许定义多个 init 初始化块,它们将按顺序执行。最近用Kotlin写代码的时候才发现,在init 初始化块中不能直接retu

1.7k
解决Apache服务无法启动:'C:\\Windows\\SYSTEM32\\VCRUNTIME140.dll' 14.0 is not compatible with this PHP
分享

解决Apache服务无法启动:'C:\\Windows\\SYSTEM32\\VCRUNTIME140.dll' 14.0 is not compatible with this PHP

解决Apache服务无法启动:'C:\\Windows\\SYSTEM32\\VCRUNTIME140.dll' 14.0 is not compatible with this PHP博客后台数据库很久没有维护备份,趁周末准备备份一下。先启动Apache服务,但是发现启动不了:“大风大浪”的报错都见过,处理这点问题不在话下。先查看启动Apache的错误日志Apache (error.log):找

5.5k
Android 14适配总结
Android

Android 14适配总结

Android 14适配总结毕业工作至今已经适配了三个Android大版本,从Android 11到Android 12、再到Android 13。2023年,Google即将推出的Android 14,上半年已经开始第一批适配。现在,第四个Android版本已经适配完,总结记录一下。1、Android 14计划Google一般会在2月份对外发布预告,同时放出开发者预览版。“拉通”各大平台、厂商以

1.1w
发布开源组件到JitPack
开源

发布开源组件到JitPack

发布开源组件到JitPack好几个月没有更新博客,业余精力主要放到开源社区,经过近一年的一点点积累,也写了几个小组件。推荐将组件发布到JitPack,只需要简单的几步。比发布到Maven要方便简单的多,不需要修改项目引入额外的'maven-publish'等容易出错的gradle配置。1、发布release第一步,在GitHub上发布release版本,这里以WaveLoadingCircleVi

1.7k
Android Studio无线调试功能
分享

Android Studio无线调试功能

Android Studio无线调试功能三年前在adb Wifi调试一文中分享了如何用adb命令无线调试。但是不够方便,于是后来又找了一个adb无线调试插件。最近更新了Android Studio发现侧边DeviceManager工具栏多了一个Physical页面可以添加无线调试设备,官方终于正式支持无线调试这个功能了!打开手机开发者选项 > 无线调试 > 使用二维码配对设备,扫描电脑端Andro

2.3k
AndroidStudio布局打开默认分栏设置
分享

AndroidStudio布局打开默认分栏设置

AndroidStudio布局打开默认分栏设置使用AndroidStudio进行开发,新建或者打开布局XML的时候总是默认显示设计界面:这很不方便,因为基本上用不到Design工具,还得手动切换到Code界面。好在找到了设置默认打开Code界面的方法,在Settings > Editor > Design Tools选项中进行设置:可以看到Layout布局、Menu菜单等xml打开默认是打开Des

2.3k
GitHub加速访问:dev-sidecar
分享

GitHub加速访问:dev-sidecar

GitHub加速访问:dev-sidecarGitHub最近频繁出现打不开,加载慢的情况:代码也经常push不上去,重试七八遍可能提交成功:1、安装dev-sidecardev-sidecar是专门为开发者提供加速的一款网络加速工具,以更快的访问Github、StackOverflow、 NPM等开发网站。dns优选(解决国内dns污染问题)请求拦截github加速Stack Overflow 加

3.4k
Git 查看仓库远端地址
Git

Git 查看仓库远端地址

Git 查看仓库远端地址和很多开发者一样,将很多优秀的开源库代码clone到本地,以便阅读、编译和调试。并且定期pull更新,使这些仓库保持最新。时间一长,需要打开查看更多信息时,却忘记了仓库原本的地址。很简单,只需要用git的remote -v命令:即可查看clone下来的仓库对应的远端详细地址:

1.3k
Json可视化工具:JSON Crack
分享

Json可视化工具:JSON Crack

Json可视化工具:JSON Crack找到一个Json可视化的工具:JSON Crack,采用类似思维导图的方式将数据可视化,而不仅仅是将Json层级简单的可折叠展开。作者Aykut Saraç,使用TypeScript语言编写,已在GitHub上开源:github/AykutSarac/jsoncrack.com。官网:https://jsoncrack.com/editor,还可以用npm或

1.9k
如何实现特殊日期界面灰色模式?
Android

如何实现特殊日期界面灰色模式?

如何实现特殊日期界面灰色模式?在特殊的日期为了缅怀和纪念,比如清明节等,淘宝、京东、拼多多等应用的首页自动切换成灰白主题的样式。先看看如何快速实现这个功能,服务端可以将图片灰度预处理,前端也能将界面呈现灰度。按照置灰作用区域分:局部View、单个Activity页面、整个应用。①局部View置灰:淘宝APP使用局部View灰色的方法,首页往下滑动出来的不再呈现灰白色。②单个Activity置灰:优

1.8k