自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 问答 (1)
  • 收藏
  • 关注

原创 kotlin空安全

不抛 ClassCastException。

2026-06-02 17:57:40 220

原创 协变,逆变

super T,下界:只能写,读只能当 Object。extends T,上界:只能读,不能写。

2026-06-02 14:51:04 186

原创 函数式编程:从命令式到“传递逻辑”

函数式编程:把「行为 / 逻辑」当作数据传递,专注做什么,而非怎么做。命令式编程:一步一步告诉计算机 “怎么做”。

2026-05-29 14:37:26 44

原创 Android 跨进程通信(IPC)全方式详解(超详细)

plaintextBinder(AIDL/Messenger/ContentProvider) > 文件共享 > Socket。

2026-05-18 14:05:21 479

原创 Java 泛型通配符

通配符格式能存什么能取什么适用无界?只能存 nullObject通用遍历上界?extends T不能存T 及父类只读下界?super TT 及子类Object只写。

2026-05-18 13:42:51 242

原创 适配器模式(Adapter)

适配器模式(Adapter Pattern)把一个类的接口转换成客户端期望的另一个接口,让原本接口不兼容、不能一起工作的类,可以通过适配器正常协作。转接头、翻译官、转换器,接口对不上,中间加个适配器做适配转换。接口不兼容,中间加一层做转换、翻译、适配。角色:目标接口、被适配者、适配器。对象适配器(组合)。接口转换,不是增强功能、不是控制访问。场景:老系统兼容、第三方 SDK 封装、多渠道统一接口、版本适配。

2026-05-15 14:06:39 358

原创 设计模式之装饰器(Wrapper)

不修改原类源码、不通过继承扩展,用。第二步:原始基础对象(被装饰者)第一步:统一抽象接口。

2026-05-14 15:44:57 35

原创 Android Watchdog 源码级深度分析(完整监控流程)

Watchdog 是单例、独立线程Watchdog 启动独立线程,每 30s 给所有核心服务线程发检测消息,服务执行 monitor () 喂狗;90s 未喂狗 → dump 栈 → 杀 system_server → 系统软重启。入口无限循环,是监控核心检测单元给线程发消息,执行monitor()超时规则:30s 警告 → 60s 再检查 → 90s 杀进程重启死锁检测monitor()空同步块,尝试获取锁判定阻塞作用范围:仅监控 system_server 进程内系统服务。

2026-05-12 11:43:48 356

原创 线程池ThreadPoolExecutor

‌任务来了 → 先看核心线程满没满?没满就新建线程。满了就看队列满没满?没满就进队列排队。队列也满了就看最大线程满没满?没满就建临时线程。都满了就拒绝任务。

2026-05-09 14:48:08 210

原创 Android Handler

Android Handler 是 Android 消息机制的核心组件,主要用于线程间通信,特别是子线程与主线程(UI线程)之间的交互。其核心作用是将耗时操作放在子线程执行,然后通过 Handler 将结果发送回主线程以更新 UI,避免主线程阻塞或非法更新 UI 导致的崩溃。

2026-05-08 14:13:36 337

原创 游戏多开思路

获取本机所有网络连接,使用GetTcpTable获取TCP连接,使用GetUdpTable获取UDP连接,检查是否有连接到服务器IP和端口号的连接,如果有,表示程序已经启动,否则程序未启动。1、首先创建一个互斥体,CreateMutex函数,第一个参数可以设置为NULL,第二个参数必须设置为false,第三个参数表示互斥体的名称,这个名称最好有一些特殊标识以防止与其他应用程序冲突,比如程序名+时间。游戏多开的方法为:手动设置多开,比如:设定文件访问权限,不允许此程序在公共目录创建文件等。

2025-02-23 16:15:39 1199

原创 数据结构->树

树(Tree)是一种重要的数据结构,它是由n(n>=0)个节点组成的集合,这些节点之间存在一些称为边(Edge)的链接,边可以表示节点之间的关系。树中有一个节点,称为根节点(Root),它没有父节点,它能够连向其他节点。除了根节点之外,树中的每个节点恰好有一个父节点,一个节点可以有多个子节点,但是每个子节点只能有一个父节点,这种节点之间的层级结构使得树成为了一种非常有用的数据结构。下面介绍一些树的基本概念。因此,在二叉搜索树中,每个节点的值都大于其左子树中的所有节点的值,小于其右子树中的所有节点的值。

2023-04-12 11:00:01 295 1

原创 数据结构->链表

循环链表(Circular Linked List)和普通链表的区别在于,最后一个节点不再指向空,而是指向链表中的某一个节点,形成一个环,从而可以使链表的最后一个节点的后继节点指向链表的头结点。在双向链表(Doubly-Linked List)中,每个节点有两个指针,一个指向其前驱结点,一个指向其后继节点,即可以从两个方向遍历链表。以上就是单向链表、双向链表和循环链表的简介及其结构体定义,链表是重要的数据结构之一,掌握链表的特点和常见操作,对于编写高效的程序很有帮助。

2023-04-12 10:52:32 390 1

原创 数据结构->数组

数组是一种线性数据结构,由相同类型的元素或变量组成,这些元素或变量在内存中是连续的一段空间。数组是C语言和C ++等编程语言中最基本的数据结构之一,广泛用于各种应用程序中。数组可以应用于各种算法和数据结构,例如排序、查找、堆栈、队列等。

2023-04-12 10:37:09 78 1

空空如也

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

TA关注的人

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