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视频的方法。