博客更新计划
该文档主要阐明后续的博客重点更新方向:
主题 | 进度 | 备注 |
---|---|---|
《二分》 | 规划中 | 二分查找、二分搜索,算法、理论与应用 |
《DFS、BFS》 | 编写中 | 总结DFS、BFS的通用思路,题解举例 |
《动态规划》 | 规划中 | 总结从递归到动态规划、题解 |
wiki & blog
该文档主要阐明后续的博客重点更新方向:
主题 | 进度 | 备注 |
---|---|---|
《二分》 | 规划中 | 二分查找、二分搜索,算法、理论与应用 |
《DFS、BFS》 | 编写中 | 总结DFS、BFS的通用思路,题解举例 |
《动态规划》 | 规划中 | 总结从递归到动态规划、题解 |
Reference
This site is built by Vuepress, Vuepress GitHub
A basic tutorial: zero-to-deploy-build-a-documentation-system-with-vue-and-vuepress
Zon of Python By Tim Peters
translated by weigao chen
JAVA 字符串操作的优化。
Java Char Array | ||
---|---|---|
Head | Mark Word | 4 Bytes |
Class Pointer | 4 Bytes | |
Length of Array | Offset = 8 | |
Instance Data | Data of Array | |
Padding |
下述代码是为了将相邻的 PC 进行合并,并产生新的 PC 和计数,比如说:
有一系列的 PC 列表,此时我们需要将连续的 PC 合并到一起,它们后面的技术也增加到合并的结果中。
def merge_continuous_addresses(address_list, count_list):
result = {}
i = 0
while i < len(address_list):
address = address_list[i]
count = count_list[i]
j = i + 1
current_sum = count
while j < len(address_list) and int(address_list[j], 16) == int(address, 16) + 4 * (j - i):
current_sum += count_list[j]
j += 1
result[address] = current_sum
i = j
return result
On the Advantages and Disadvantages of Marketing Strategy from the Perspective of Enterprise Development
With the rapid development of Internet economy, the marketing amount of enterprises has changed greatly. Over the past decade or so, we have witnessed many micro-enterprises achieve business success through excellent marketing strategies, and many enterprises have been abandoned by the times because of improper marketing. This paper selects several typical enterprises and their landmark marketing strategies to explain how marketing strategies become the key to enterprise success.
Pacel 是 IPC 通信中的序列化和反序列化类;
官方给出了 IPC 接口的使用方式,其中规定了 Parcel 相关的操作。
JS 侧的客户端在发送消息的时候需要按照如下的方式使用:
import rpc from "@ohos.rpc"
// 使用期约
let option = new rpc.MessageOption()
let data = rpc.MessageParcel.create()
let reply = rpc.MessageParcel.create()
// 往data里写入参数
proxy.sendRequest(1, data, reply, option)
.then(function(result) {
if (result.errCode != 0) {
console.error("send request failed, errCode: " + result.errCode)
return
}
// 从result.reply里读取结果
})
.catch(function(e) {
console.error("send request got exception: " + e)
}
.finally(() => {
data.reclaim()
reply.reclaim()
})
// 使用回调函数
function sendRequestCallback(result) {
try {
if (result.errCode != 0) {
console.error("send request failed, errCode: " + result.errCode)
return
}
// 从result.reply里读取结果
} finally {
result.data.reclaim()
result.reply.reclaim()
}
}
let option = new rpc.MessageOption()
let data = rpc.MessageParcel.create()
let reply = rpc.MessageParcel.create()
// 往data里写入参数
proxy.sendRequest(1, data, reply, option, sendRequestCallback)
本文主要记录常见的 Linux 命令,特别是那些经常遇到但是容易忘记的命令用法。
Binder 内存管理指的是:管理 binder mmap 映射的这块缓冲区。其中有两个关键的数据结构:
binder_alloc:缓冲区分配器,对每个使用 binder 进行 IPC 通信的进程,事先建立一个缓冲区;
binder_buffer: 描述缓冲区的数据结构
本文先对这两个关键的数据结构进行研究,然后再逐一分析使用这些数据结构的相关函数和算法。
本文主要讲述 Binder 流程中的各个阶段,起到一个 Overview 的目的。