0%

一、重点

  • 新增一个中断处理程序的步骤
    1. 编写新的中断处理程序
    2. 获取中断号m。
    3. 将新的中断处理程序装入内存或驻留内存,将新的中断处理程序的偏移地址和段地址保存到物理地址4*m和4*m+2处。
阅读全文 »

排序方法 平均时间复杂度 最坏时间复杂度
插入排序 $O(n^2)$ $O(n^2)$
合并排序 $O(nlgn)$ $O(nlgn)$
快速排序 $O(nlgn)$​ $O(n^2)$
随机快速排序 $O(nlgn)$ -
计数排序 $O(n+k)$ -
基数排序 $O(d(n+k))$ $O(d(n+k))$
桶排序 $O(n)$ -

单源最短路径

单源最短路径问题是从源结点到其它结点的最短路径问题。

一般解决方案是 Bellman-Ford 算法,其允许负值权重的边。当存在负值环路时,算法返回不存在问题的解,否则返回最短路径及权重。思想是通过松弛操作逐渐降低权重。

还有著名的 Dijkstra 算法,其要求所有边的权重都为非负。其利用了贪心算法的思想,每次都选择最短路径。

阅读全文 »

图的表示和存储方式

邻接链表 邻接矩阵

邻接链表因为在表示稀疏图时非常紧凑而成为通常的选择。

在稠密图的情况下,我们可能倾向于使用邻接矩阵表示法。快速判断任意两个节点之间是否有边相连,可能也需要使用邻接矩阵表示法。

简介

贪心算法和动态规划算法一样,通常用来求解最优化问题

贪心算法的思想是每一步都选择局部最优解,很多时候这种方法能得到最优解,而且速度比动态规划快很多,也更简单。

阅读全文 »

简介

动态规划(dynamic programming),这里的 programming 不是编程的意思,而是表格的意思,意味着将求出的子问题的解存到表格中,以便下次用到时直接查表取出。动态规划与分治法类似,都是通过组合子问题的解来求解原问题。是典型的以空间换取时间的时空权衡的例子。

阅读全文 »

分治法的思想,将原问题分解为几个规模较小但类似于原问题的子问题,递归地求解这些子问题,然后再合并这些子问题的解来建立原问题的解。

分治模式在每层递归时的三个步骤:

分解步骤将问题划分为一些子问题,子问题的形式与原问题一样,只是规模更小。

解决步骤递归的求解子问题,如果子问题的规模足够小,则停止递归直接求解。

合并步骤将子问题的解组合成原问题的解。

阅读全文 »

数据结构研究组织大量数据的方法,算法分析则是对算法运行时间的评估。

算法是为求解一个问题需要遵循的、被清除地指定的简单指令的集合。

数据结构在计算机科学界至今没有一个标准的定义

普遍认可的算法的定义:算法是解决特定问题求解步骤的描述。

算法的特性:

  • 有穷性
  • 确定性
  • 可行性
  • 输入
  • 输出
阅读全文 »

WDF Windows Driver Frameworks Windows 程序驱动程序框架

INF driver setup information 设备安装信息

dp

Density-independent Pixels 像素无关密度

一个基于屏幕物理密度的抽象的单位。

TA 与 屏幕物理密度/像素密度 相关,对应不同的 density

阅读全文 »

使用

By default, to avoid poor UI performance, Room doesn’t allow you to issue queries on the main thread. When Room queries return LiveData, the queries are automatically run asynchronously on a background thread.

为避免糟糕的 UI 性能,Room 不允许你在主线程查询数据库。但当查询返回 LiveData 时,查询将自动异步运行在后台线程。

阅读全文 »

REST (REpresentational State Transfer) 表现层状态转换。

REST 是一种设计风格,便于不同软件在网络上传递信息。

SOAP

SOAP (Simple Object Access Protocol) 简单对象访问协议。

SOAP 是网络交换数据的一种协议规范。

RESTful

REST 是名词,RESTful 是动词。

RESTful API

符合 REST 风格的 API 称为 RESTful API。

要绘制东西,需要 4 个基本组件:存储像素点的 Bitmap、主持绘制的 Canvas、绘图的基本元素(Path,Rect,text,Bitmap等)、描述颜色和样式的 Paint。

阅读全文 »

Git

简介

Git是一个免费的,开源的分布式版本控制系统,被设计用来又快又好地处理大大小小的项目。

阅读全文 »

自定义 View 有两种方法:

继承 View 的子类,如TextView

直接继承 View 类。需要自己绘制 UI 元素。

阅读全文 »

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// 2020-3-29 19:45:53
// kotlin coroutines
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.5'
// Glide
implementation 'com.github.bumptech.glide:glide:4.11.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
// OkHttp
implementation 'com.squareup.okhttp3:okhttp:4.4.0'
// ViewPager2
implementation "androidx.viewpager2:viewpager2:1.0.0"
// dagger
// apply plugin: 'kotlin-kapt'
def dagger_version = "2.27"
implementation "com.google.dagger:dagger:$dagger_version"
kapt "com.google.dagger:dagger-compiler:$dagger_version"
// material
implementation 'com.google.android.material:material:1.2.0-alpha05'
// 2020-4-9 14:47:57
// retrofit
implementation 'com.squareup.retrofit2:retrofit:2.8.1'
implementation 'com.squareup.retrofit2:converter-gson:2.8.1'
// Room
// apply plugin: 'kotlin-kapt'
def room_version = "2.2.3"
implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version"
// optional - Kotlin Extensions and Coroutines support for Room
implementation "androidx.room:room-ktx:$room_version"
// Lifecycle
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
kapt "androidx.lifecycle:lifecycle-compiler:2.2.0"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0"
// coroutines
api "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.4"
api "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.4"

Navigation 组件由下面3个关键部分组成:

Navigation Graph XML resource 包含与navigation有关的所有信息,如destination path等。

NavHostFragment Layout XML 添加到layout的widget,显示了Navigation Graph的destination。

NavController Kotlin/Java 对象 追踪在 Navigation Graph 中的位置,协调那些destination。

阅读全文 »

配置(Android)

1
2
// kotlin coroutines
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.5'

示例:加载网络图片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val coroutineScope = CoroutineScope(Dispatchers.Main)
coroutineScope.launch(Dispatchers.Main) {
val url = getImageUrl()
Glide.with(this@MainActivity).load(url).into(iv)
}

}

private suspend fun getImageUrl() = withContext(Dispatchers.IO) {
val client = OkHttpClient()
val request = Request.Builder()
.url("http://guolin.tech/api/bing_pic")
.build()
return@withContext client.newCall(request).execute().body?.string()
}
}

withContext()可以切换到指定的线程,然后在闭包内的逻辑结束后,再切换到原来的线程继续执行。

Dispatchers

2020-03-21 22:09:50

CSS

CSS 用于指示 HTML 在浏览器中的显示样式。

CSS 组成

CSS 由选择符(选择器)与声明组成,声明由属性和值组成。

1
2
3
p {
color: blue;
}
阅读全文 »

HTML

sample

1
2
3
4
5
6
7
8
9
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>制作我的第一个网页</title>
</head>
<body>
<h1>Hello HTML</h1>
</body>
</html>
阅读全文 »

简介

HTTP (Hypertext Transfer Protocol 超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP 协议定义了客户端如何从服务器请求 Web 页面,以及服务器如何把 Web 页面返回给客户端。HTTP 是万维网数据通信的基础。

阅读全文 »

Service是一种可以在后台执行长时间运行操作而不提供界面的应用组件。

阅读全文 »

Android 构建时会编译源代码和应用资源,然后打包为APK文件。Android Studio 使用 Gradle 来自动执行和管理构建流程。Android Plugin for Gradle 与 Gradle 搭配使用,专门为 Android 应用的构建提供支持。

阅读全文 »

启用 Data Binding

Data Binding 库与 Android Gradle 插件捆绑在一起,所以不需要声明依赖,但需要启用。

阅读全文 »

概述

数字系统

可以用不同数字反映的物理量称为数字量。

表示数字量的信号称为数字信号。

处理数字信号的电子电路称为数字电路(数字逻辑电路、逻辑电路),其功能通过逻辑运算和逻辑判断完成。

阅读全文 »

写在前面

make这一阶段花费时间和机器配置有关,可能长达几小时,建议选择好时间。同时需要足够的磁盘空间,22G以上。

环境:Ubuntu 18.04.1 阿里云服务器

阅读全文 »

前言

注解在Java SE5中引入。注解好处多多,TA可以使我们的代码变得简洁,减少样板代码,还能存储有关程序的额外信息。程序员还可以自定义注解

阅读全文 »

前言

这是打算认真写博客后的第一篇,今天来研究一下Java的反射机制。

反射简介

反射机制可以让人们在运行时获得类的信息。

Class类和java.lang.reflect类库(包含Constructor Method Field Modifier Array类)为反射提供了支持。

阅读全文 »