Coding a Life with Mi07
Android数据结构与算法语言学习MCPAbout
Coding a Life with Mi07
Android数据结构与算法语言学习MCPAbout

highlightjs

layout: article title: anki 高亮代码 tags: [] category: DSA —

连通无向图

layout: article title: “连通图” date: 2024-09-24 tags: [“图”] category: DSA —

1. Canvas 绘制

自定义绘制的方式是重写绘制方法,其中最常用的是 onDraw() 绘制的关键是 Canvas 的使用 onDraw():负责主体内容绘制 Canvas :绘制工具 Canvas 的绘制类方法: drawXXX() (关键参数:Paint) Canvas 的辅助类方法:范围裁切和几何变换 可以使用不同的绘制方法来控制遮盖关系

1.a. Draw Path

drawPath(Path path, Paint paint) 画自定义图形

1.b 仪表盘绘制

Note: 绘制虚线弧形,不能用 path.addArc() + pathDashEffect 来画,会画出奇形怪状的图形,要用canvas.drawArc 画。

1.c 饼图

默认顺时针画出来的。 每多画一个扇形,起始角度都要加起前面几个扇形的角度,划过的角度视扇形大小而定。

2. Canvas 范围裁切

范围裁切有两个方法: clipRect() 和 clipPath() 。 clipRect ```java canvas.save(); // 保存canvas状态

ScrollView 嵌套ListView会显示不全

因为ScrollView 传递给ListView时,用的是 UNSPECIFIED , ListView 设置了 heightSize if (heightMode == MeasureSpec.UNSPECIFIED) { heightSize = mListPadding.top + mListPadding.bottom + childHeight + getVerticalFadingEdgeLength() * 2; }

文本的测量

1. Paint.getTextBounds 测量文本宽高 ```kotlin val text = “Hello, Mango !” val bounds = Rect() paint.getTextBounds(text, 0, text.length, bounds) val textWidth = bounds.width() // 获取文本的宽度 val textHeight = bounds.height() // 获取文本的高度 // 确定文本的垂直边界 val textTop = bounds.top val textBottom = bounds.bottom

Android 视图(View)框架简报

简介:

Cold flow & Hot flow 解释

在 Kotlin 的 Flow 协程中,“冷流”(Cold Flow)和“热流”(Hot Flow)是两种不同类型的数据流,它们在行为和使用场景上有着显著的区别。理解这些区别对于有效地使用 Flow 至关重要。

Lambda 表达式

属性委托Property Delegation 和 KProperty

属性委托

operator运算符重载和suspend挂起函数

` suspend operator fun invoke ` 是 Kotlin 中一种特定的函数定义方式,结合了 suspend 关键字和 operator 修饰符,用于实现函数对象的调用和协程支持。 suspend operator fun invoke(todo: Todo) = repository.insertTodo(todo)

80道面试题答案

1. 你写了很多关于java面向对象的知识,你对对象的理解是什么?

Easy-从开机到打开 App 的整个大旅程

想象你的手机是一座需要慢慢唤醒并开始工作的超级大工厂。

K-字节码是什么?DEX字节码是什么?

1. 字节码(Bytecode)是什么?

K.1-Dalvik 虚拟机 和 ART

在新的 Android 版本里(实际上是从 Android 5.0 Lollipop,大约 2014 年开始),Dalvik 虚拟机已经被完全取代了。

什么是 Bootloader?——“点火钥匙 + 发动机自检”

把手机当一辆车:

1. 系统启动链

按下电源 —— 系统启动后加载引导程序 [[BootLoader]] —— 引导程序启动该Linux内核 —— 在系统文件中寻找init.rc 文件 —— 启动 init 进程。

init.rc 介绍

1. init.rc 是什么编程语言?

servicemanager.rc 代码详解

servicemanager 本身在做什么?——10 步快览

在官方代码库搜索关键词的正确方式

1. file 正则 file: 后面在 cs.android.com 用的是 RE2 正则,* 前面必须有一个字符才代表“重复”,单写 * 会被当成“字面量星号”,于是根本匹配不到任何文件名。

184. Elementary ‐Daily Life ‐ Fresh Start

对话内容

Conserve vs. Conservative vs. Conventional 详解用法

含义

beginnerself-studyfrench-dao-b2-yao-hua-duo-zhang-

零基础自学法语到 B2 水平,每天学习 30 分钟,需要有系统的学习计划,并将学习目标分解为以下几个阶段:

建立知识体系

我理解你的困扰。遗忘确实是学习过程中的自然现象,但我们可以通过一些科学的方法来加深记忆和理解:

解决学-忘-学的困境

Carrie的情况分析

MCP服务示例:运行本地Python脚本,将文章推送到Github博客

在上一篇文章里,我们学习了MCP的入门操作,在这篇文章,我们使用MCP服务来解决我的一个实际需求。

MCP QuickStart Guide

MCP是什么?

MCP服务示例:运行本地Python脚本,将文章推送到Github博客

在上一篇文章里,我们学习了MCP的入门操作,在这篇文章,我们使用MCP服务来解决我的一个实际需求。

Obsidian面板里实现自动推送笔记到Github

先决条件:

什么是写时复制?

“写时复制”(Copy-on-Write, CoW)是一种延迟复制的优化技术,广泛应用于操作系统中,尤其在进程创建(如 fork)和内存管理中。它的核心思想是:多个进程共享同一份资源(如内存页),只有在需要修改时才进行复制,从而减少资源消耗。

什么是分页和交换?

分页和交换是操作系统中虚拟内存管理的两种关键机制,用于高效利用物理内存并支持比实际物理内存更大的地址空间。以下是它们的定义和区别:

在Windows下载Youtube视频的方法,yt-dlp

简单介绍一下使用 yt-dlp 下载youtube视频的方法。

分类

Android 数据结构与算法 语言学习 MCP 操作系统 随便挖挖

标签

AOSP Activity Android DSA EnglishPod Kotlin Language MCP OS Obsidian Others Tools View words 学习策略 法语 源码分析 自定义View
泠 |  飘风不终朝,骤雨不终日。
Carrie-L
Icon CicadaMay
Iconcarrielib@qq.com