AI笔记本

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

文章列表

Kotlin

Kotlin contract 用法及原理

Kotlin contract 用法及原理在阅读Kotlin源码的时候,会发现很多常用方法里都有contract的身影:contract(契约)是一种 Kotlin 面向编译器约定的一种规则,它帮助编译器更加智能地识别某些需要特定的代码条件,为代码创建更加友好的上下文关联环境。1、contract定义Kotlin在1.3版本以实验室功能的方式开始引入contract,截止至当前Kotlin最新版本

1.6k
获取Android内置WebView内核版本
Android

获取Android内置WebView内核版本

获取Android内置WebView内核版本竟然能遇到这样奇葩的事情,网页用的技术过于新颖,以至于只支持高版本Chromium内核的,低版本安卓系统中内置的内核版本较低,无法加载前端页面。1、设置查看在系统设置里 > 应用 > 应用管理 > 显示系统应用,查看WebView组件:2、页面查看通过WebView发起的网络请求,都会带上浏览器的UA,通常页面都可以通过UA判断浏览器的内核版本。这里有两

1.1w
监听View树ViewTreeObserver深度剖析
Android

监听View树ViewTreeObserver深度剖析

监听View树ViewTreeObserver深度剖析ViewTreeObserver用来监听View视图树的变化,正如它的注释所说:ViewTreeObserver类是final类不可继承,且构造函数默认View包可见。应用只能通过getViewTreeObserver()方法获取:在ViewRootImpl构造的时候,同时也会构造一个AttachInfo,在这mAttachInfo中默认就拥有

1.7k
UsageStatsManager统计应用使用情况
Android

UsageStatsManager统计应用使用情况

UsageStatsManager统计应用使用情况UsageStatsManager提供对设备使用历史记录和统计信息的访问,时间周期为days、weeks、months、years。可以帮助开发者了解用户在设备上使用应用程序的情况,包括应用程序的启动次数、使用时长等。1、权限使用UsageStatsManager需要权限:可以通过AppOpsManager检查是否拥有UsageStatsManag

2.4k
WebView打印前端Console日志
Android

WebView打印前端Console日志

WebView打印前端Console日志安卓开发中WebView是非常常用的控件,用来加载网页,涉及前端和客户端交互开发的时候需要查看网页打印的日志,这时候可以通过重写WebChromeClient类中的onConsoleMessage()方法打印网页中的Console日志:但有时候可能会有些厂商的ROM不显示Console日志,可以通过Webview与原生的交互来实现。首先定义一个类和方法,需要

2.2k
Android

Base64与图片相互转换

Base64与图片相互转换在Android开发中,我们经常需要用到图片转换为Base64字符串、Base64字符串下载转为图片的场景,以便在网络传输或保存到本地数据库中。Base64是一种用于传输8位字节码的编码方式,通过将二进制数据编码成文本格式,方便传输和存储。1、图片转Base64以Bitmap为例,Android中的大都图片都借助Bitmap来操作。将Bitmap转成Base64字符串:首

2.0k
Code

【算法】六一·给小朋友们分糖果

【算法】六一·给小朋友们分糖果每日一题,今天六一,LeetCode今天出的题很有意思。给你两个正整数 n 和 limit 。请你将 n 颗糖果分给 3 位小朋友,确保没有任何小朋友得到超过 limit 颗糖果,请你返回满足此条件下的 总方案数 。示例 1:输入:n = 5, limit = 2输出:3解释:总共有 3 种方法分配 5 颗糖果,且每位小朋友的糖果数不超过 2 :(1, 2, 2) ,

1.7k
本地大语言模型AI工具:Ollama
AI

本地大语言模型AI工具:Ollama

本地大语言模型AI工具:OllamaOllama是一个强大的AI模型运行工具,开源地址:github/ollama。可以方便的在本地部署开源模型,避免数据泄露。 易于安装和使用:Ollama 支持 macOS、Windows 和 Linux,提供了简洁明了的安装和运行指令,让用户无需深入了解复杂的配置即可启动和运行。 丰富的模型库:通过Ollama,用户可以访问和运行包括 Llama 2、Mist

2.7k
Code

【算法】分隔链表

【算法】分隔链表链表是算法中比较能考察逻辑和编码基本功的题型。这道题有意思的是题目描述很唬人,看着有点难度是mid,仔细分析实际上只能算easy。给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。你应当 保留 两个分区中每个节点的初始相对位置。示例 1:输入:head = [1,4,3,2,5,2], x = 3

1.4k
Android

Android查看CPU使用情况

Android查看CPU使用情况使用adb shell dumpsys cpuinfo 可查看Android应用的cpu使用情况:结果说明(只了解了部分字段含义)第一行:表示最近1分钟、5分钟、15分钟的cpu平均负载;如果 1分钟load值 < 15分钟load值,说明cpu使用率在下降;如果 1分钟load值 >= 15分钟load值,说明cpu使用率还在上升,需要注意;如果是单核cpu,最大

2.6k
Code

【算法】LRU 缓存

【算法】LRU 缓存每天一道算法题,LeetCode已经从国服100跌倒4257名了。再复习一波,记录经典算法。请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。实现 LRUCache 类:LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的

1.5k
Android 15适配
Android

Android 15适配

Android 15适配去年的Android 14已经随着新款设备进入消费者手中。每年四月初又到了Android一年一度的大版本适配周期,Android 15开始新的计划。1、新增特性各手机厂商会从Google打patch补丁,不断升级自家的ROM。反过来Google会吸取各个OEM厂商的特性,添加到AOSP中,比如之前的深色模式、刘海屏等一些特性,原本只是各家ROM定制自己做的新feature,

2.7k
Android进入设置中应用对应的详情界面
Android

Android进入设置中应用对应的详情界面

Android进入设置中应用对应的详情界面有时候为了引导用户操作,例如手动赋予权限等,需要拉起应用对应的详情界面。在android.provider包中,系统提供了包括设置、联系人、短信等在内的诸多系统内置Provider,为开发者提供了许多方法。使用Settings类中的ACTION_APPLICATION_DETAILS_SETTINGS,源码中的描述如下:即可完成跳转系统设置里的应用详情界面

1.4k
Code

使用@Keep注解防止被混淆

使用@Keep注解防止被混淆使用proguard混淆代码是对产品本身的一种保护,常见的方法就是编写projuard-rules.pro配置文件。已经有开源项目将各类混淆配置集中到一起:github/android-proguard-snippets,提供给大家参考。一个典型的Android项目混淆配置文件如下:在AndroidStudio项目中都会用到proguard-android文件,这里大家

2.1k
Android

Android系统文件目录结构

Android系统文件目录结构Android系统目录结构,不管是系统开发还是应用开发,对文件系统目录都要有基本的认识,每个常见目录的作用及含义:/init 系统启动文件/systemapp 系统应用安装目录bin 常用的系统本地命令(二进制),大部分是toolbox的链接(类似于嵌入式Linux中的busybox)etc 系统配置文件,如hostsfont 字体目录framework Java平台

2.5k
Code

异常:JSONException: End of input at character 0

异常:JSONException: End of input at character 0解析json字符串时出现org.json.JSONException: End of input at character 0 of 异常原因是传入参数为""空的字符串,或者为" "n个空格,回到Json对象的构造方法中:借助JSONTokener去解析json格式字符串:其中nextValue()从JSON

2.4k
Git

处理git报错:cannot lock ref ‘ORIG_HEAD’

处理git报错: cannot lock ref ‘ORIG_HEAD’日常遇到坑,用git pull拉取代码头一回遇到这个报错:查阅资料了解到这个错误通常意味着ORID_HEAD引用已损坏,可能是由于之前的某个操作中断或失败导致的。要解决这个问题,需尝试重新创建ORID_HEAD引用,使它指向正确的提交。首先,删除一损坏的ORID_HEAD:创建一个新的ORID_HEAD,来指向当前的头部的提交

2.0k
Android

获取Apk的签名信息

获取Apk的签名信息篡改包名是常见的攻击手段,但修改签名是具有难度的。因此某些场景下对包进行签名校验,是安全的一种常规手段。1、使用keytools命令借助keytool工具可以查看Apk的签名,该工具在JDK的\jdk\bin目录下。可以查看到Apk的签名等信息:如果是未签名的Apk则是没有以上信息的,使用Android Studio编译出来的包含有默认签名。2、通过代码获取在Android中,

2.6k
Android

修改屏幕亮度

修改屏幕亮度使用付款码的时候会发现,打开付款码页面手机屏幕亮度会变为最亮,方便商户识别付款码。今天来了解一下如何改变手机的屏幕亮度。1、改变当前窗口的屏幕亮度修改Window中screenBrightness的值(0.0~1.0)亮度只保存在当前的Window,退出当前的窗口就会恢复原样。是主流应用采用的方法,不会影响其它应用的显示亮度。方法比较简单使用,简单几行即可实现改变窗口的亮度:应在界面推

1.6k
免费的视频编辑器:Avidemux
分享

免费的视频编辑器:Avidemux

免费的视频编辑器:AvidemuxAvidemux 是一个免费的视频编辑器,可以进行剪切、过滤和编码等任务。支持广泛的文件格式,包括 AVI 文件的编辑,DVD 的 MPEG 文件、MP4 和 ASF,并能将声音从文件中分解出来。官方下载地址:avidemux.sourceforge/download支持强大的队列任务处理和脚本功能,日常工作中用来分析录屏还是很有用的。Avidemux下载网盘下载

1.6k