56,966 blogs · [ { "id": "01a08761-8950-7031-b50a-4bfc798c085f", "title": "Coding and Cooking", "url": "https://www.codedump.info/en/post/20260903-cook/", "published_at": "2026-09-03T14:16:27+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce89270436d", "title": "codedump notes", "url": "https://www.codedump.info/en/", "published_at": "2026-09-03T14:16:27+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8927c3686", "title": "Posts", "url": "https://www.codedump.info/en/post/", "published_at": "2026-09-03T14:16:27+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce892a47802", "title": "Random Thoughts", "url": "https://www.codedump.info/en/tags/random-thoughts/", "published_at": "2026-09-03T14:16:27+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce89350059f", "title": "Tags | codedump notes", "url": "https://www.codedump.info/en/tags/", "published_at": "2026-09-03T14:16:27+00:00" }, { "id": "01a08761-8950-7031-b50a-4bfc7a16177f", "title": "Mini-Arrow: A Minimal Arrow Rust Implementation", "url": "https://www.codedump.info/en/post/20260815-mini-arrow/", "published_at": "2026-08-15T13:40:35+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce89a17062a", "title": "codedump notes", "url": "https://www.codedump.info/zh/", "published_at": "2026-08-15T13:40:35+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce89a58d37b", "title": "Mini-Arrow:极简的Rust实现的Arrow", "url": "https://www.codedump.info/zh/post/20260815-mini-arrow/", "published_at": "2026-08-15T13:40:35+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce89b1fef3e", "title": "Posts", "url": "https://www.codedump.info/zh/post/", "published_at": "2026-08-15T13:40:35+00:00" }, { "id": "01a08761-8950-7031-b50a-4bfc7858e07d", "title": "Chapter 4: Replication", "url": "https://www.codedump.info/dist-system-en/replication/", "published_at": "2026-06-26T00:00:00+00:00" }, { "id": "01a08761-8950-7031-b50a-4bfc78705759", "title": "Chapter 5: Distributed Consensus Algorithms", "url": "https://www.codedump.info/dist-system-en/consensus/", "published_at": "2026-06-26T00:00:00+00:00" }, { "id": "01a08761-8950-7031-b50a-4bfc794ff24c", "title": "Chapter 6: Partitioning", "url": "https://www.codedump.info/dist-system-en/partitioning/", "published_at": "2026-06-26T00:00:00+00:00" }, { "id": "01a08761-8950-7031-b50a-4bfc7983e997", "title": "Chapter 7: Transactions", "url": "https://www.codedump.info/dist-system-en/transaction/", "published_at": "2026-06-26T00:00:00+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8939cb9c7", "title": "Distributed Systems", "url": "https://www.codedump.info/en/tags/distributed-systems/", "published_at": "2026-06-26T00:00:00+00:00" }, { "id": "01a08761-894f-70f7-aeb9-35cd40404990", "title": "The Charm of Distributed Systems", "url": "https://www.codedump.info/dist-system-en/forward/", "published_at": "2026-06-25T00:00:00+00:00" }, { "id": "01a08761-8950-7031-b50a-4bfc7738ee71", "title": "Chapter 1: Overview of Distributed Systems", "url": "https://www.codedump.info/dist-system-en/introduction/", "published_at": "2026-06-25T00:00:00+00:00" }, { "id": "01a08761-8950-7031-b50a-4bfc77ad4e67", "title": "Chapter 2: Models of Distributed Systems", "url": "https://www.codedump.info/dist-system-en/systemmodel/", "published_at": "2026-06-25T00:00:00+00:00" }, { "id": "01a08761-8950-7031-b50a-4bfc784a32c2", "title": "Chapter 3: Time and Order in Distributed Systems", "url": "https://www.codedump.info/dist-system-en/time/", "published_at": "2026-06-25T00:00:00+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce89109aeef", "title": "Distributed System Illustrated", "url": "https://www.codedump.info/dist-system-en/", "published_at": "2026-06-25T00:00:00+00:00" }, { "id": "01a08761-8950-7031-b50a-4bfc7a2cdab9", "title": "Rockraft: A Strongly-Consistent KV Storage Framework Based on OpenRaft and RocksDB", "url": "https://www.codedump.info/en/post/20260412-rockraft/", "published_at": "2026-04-12T01:59:41+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce893f9f23c", "title": "Distributed | codedump notes", "url": "https://www.codedump.info/en/tags/distributed/", "published_at": "2026-04-12T01:59:41+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce894084354", "title": "Raft | codedump notes", "url": "https://www.codedump.info/en/tags/raft/", "published_at": "2026-04-12T01:59:41+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce89b7add05", "title": "Raft | codedump notes", "url": "https://www.codedump.info/zh/tags/raft/", "published_at": "2026-04-12T01:59:41+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce89c59ff14", "title": "Rockraft:基于 OpenRaft 与 RocksDB 的强一致 KV 存储框架", "url": "https://www.codedump.info/zh/post/20260412-rockraft/", "published_at": "2026-04-12T01:59:41+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce89d466206", "title": "Tags | codedump notes", "url": "https://www.codedump.info/zh/tags/", "published_at": "2026-04-12T01:59:41+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce89dc85221", "title": "分布式", "url": "https://www.codedump.info/zh/tags/%E5%88%86%E5%B8%83%E5%BC%8F/", "published_at": "2026-04-12T01:59:41+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce897260cc1", "title": "第七章 事务", "url": "https://www.codedump.info/dist-system-cn/transaction/", "published_at": "2026-04-07T00:00:00+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce897892f8e", "title": "第六章:分区", "url": "https://www.codedump.info/dist-system-cn/partitioning/", "published_at": "2026-03-29T00:00:00+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce897a22882", "title": "第五章:共识算法", "url": "https://www.codedump.info/dist-system-cn/consensus/", "published_at": "2026-03-18T00:00:00+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce897e1e08c", "title": "第四章:复制", "url": "https://www.codedump.info/dist-system-cn/replication/", "published_at": "2026-03-12T00:00:00+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8987d5cc3", "title": "第三章:分布式系统中的时间和顺序", "url": "https://www.codedump.info/dist-system-cn/time/", "published_at": "2026-03-03T00:00:00+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8990ea6b1", "title": "第二章:分布式系统模型", "url": "https://www.codedump.info/dist-system-cn/systemmodel/", "published_at": "2026-02-26T00:00:00+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce899de9e68", "title": "第一章:分布式系统概述", "url": "https://www.codedump.info/dist-system-cn/introduction/", "published_at": "2026-02-24T00:00:00+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce899eff7a8", "title": "图解分布式系统原理", "url": "https://www.codedump.info/dist-system-cn/", "published_at": "2026-02-24T00:00:00+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce89eb0512f", "title": "胡思乱想", "url": "https://www.codedump.info/zh/tags/%E8%83%A1%E6%80%9D%E4%B9%B1%E6%83%B3/", "published_at": "2025-02-27T03:15:30+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce89fa6beda", "title": "写代码与做菜", "url": "https://www.codedump.info/zh/post/20250227-cook/", "published_at": "2025-02-27T03:15:30+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce89fde4fec", "title": "Btree | codedump notes", "url": "https://www.codedump.info/zh/tags/btree/", "published_at": "2022-09-04T01:10:31+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8a0855e48", "title": "Sqlite | codedump notes", "url": "https://www.codedump.info/zh/tags/sqlite/", "published_at": "2022-09-04T01:10:31+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8a0e7468e", "title": "存储引擎", "url": "https://www.codedump.info/zh/tags/%E5%AD%98%E5%82%A8%E5%BC%95%E6%93%8E/", "published_at": "2022-09-04T01:10:31+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8a165317a", "title": "周刊", "url": "https://www.codedump.info/zh/tags/%E5%91%A8%E5%88%8A/", "published_at": "2022-09-04T01:10:31+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8a1a5eeaa", "title": "周刊(第24期):sqlite并发读写的演进之路", "url": "https://www.codedump.info/zh/post/20220904-weekly-24/", "published_at": "2022-09-04T01:10:31+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8a253464b", "title": "周刊(第23期):图解Blink-Tree:B+Tree的一种并发优化结构和算法", "url": "https://www.codedump.info/zh/post/20220807-weekly-23/", "published_at": "2022-08-07T02:33:38+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8a2a7401a", "title": "周刊(第22期):图解一致性模型", "url": "https://www.codedump.info/zh/post/20220710-weekly-22/", "published_at": "2022-07-10T06:41:24+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8a30bb13e", "title": "周刊(第21期):Lamport时钟介绍", "url": "https://www.codedump.info/zh/post/20220703-weekly-21/", "published_at": "2022-07-03T02:59:09+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8a406bbc5", "title": "Rust | codedump notes", "url": "https://www.codedump.info/zh/tags/rust/", "published_at": "2022-06-25T02:00:49+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8a49f06e0", "title": "周刊(第20期):Rust并发安全相关的几个概念(下)", "url": "https://www.codedump.info/zh/post/20220625-weekly-20/", "published_at": "2022-06-25T02:00:49+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8a55130c4", "title": "周刊(第19期):Rust并发安全相关的几个概念(上)", "url": "https://www.codedump.info/zh/post/20220619-weekly-19/", "published_at": "2022-06-19T02:42:40+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8a5d3f50d", "title": "知识管理", "url": "https://www.codedump.info/zh/tags/%E7%9F%A5%E8%AF%86%E7%AE%A1%E7%90%86/", "published_at": "2022-06-12T02:19:47+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8a6d1f9f0", "title": "周刊(第18期):网状的思考,线性的写作", "url": "https://www.codedump.info/zh/post/20220612-weekly-18/", "published_at": "2022-06-12T02:19:47+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8a6ed99f4", "title": "周刊(第17期):Read-Write Quorum System及在Raft中的实践", "url": "https://www.codedump.info/zh/post/20220528-weekly-17/", "published_at": "2022-05-28T08:16:57+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8a764b52c", "title": "周刊(第16期):图解ARIES论文(下)", "url": "https://www.codedump.info/zh/post/20220521-weekly-16/", "published_at": "2022-05-21T03:46:44+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8a7d359c4", "title": "周刊(第15期):图解ARIES论文(上)", "url": "https://www.codedump.info/zh/post/20220514-weekly-15/", "published_at": "2022-05-13T22:33:26+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8a8c237e2", "title": "周刊(第14期):重读Raft论文中的集群成员变更算法(二):实践篇", "url": "https://www.codedump.info/zh/post/20220507-weekly-14/", "published_at": "2022-05-07T09:57:08+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8a8d4e948", "title": "周刊(第13期):重读Raft论文中的集群成员变更算法(一):理论篇", "url": "https://www.codedump.info/zh/post/20220417-weekly-13/", "published_at": "2022-04-17T07:16:30+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8a99d7ebf", "title": "周刊(第12期):Page oriented类存储引擎里可能同时存在多种结构", "url": "https://www.codedump.info/zh/post/20220410-weekly-12/", "published_at": "2022-04-10T03:38:16+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8aa6f10a5", "title": "周刊(第11期):mmap适用于存储引擎吗?", "url": "https://www.codedump.info/zh/post/20220327-weekly-11/", "published_at": "2022-03-27T07:06:38+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8aa778c19", "title": null, "url": "https://www.codedump.info/zh/post/20220319-weekly-10/", "published_at": "2022-03-19T05:50:46+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8aacb9d15", "title": null, "url": "https://www.codedump.info/zh/post/20220313-weekly-9/", "published_at": "2022-03-13T03:20:59+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8abc0ac6a", "title": null, "url": "https://www.codedump.info/zh/post/20220304-weekly-8/", "published_at": "2022-03-04T14:10:11+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8ac139471", "title": null, "url": "https://www.codedump.info/zh/post/20220227-weekly-7/", "published_at": "2022-02-27T03:25:33+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8ac74a940", "title": null, "url": "https://www.codedump.info/zh/post/20220220-weekly-6/", "published_at": "2022-02-20T02:53:41+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8ad57af99", "title": null, "url": "https://www.codedump.info/zh/post/20220211-weekly-5/", "published_at": "2022-02-11T14:27:57+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8adc214a8", "title": null, "url": "https://www.codedump.info/zh/post/20220204-weekly-4/", "published_at": "2022-02-04T13:55:23+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8ae5d0547", "title": null, "url": "https://www.codedump.info/zh/post/20220201-sqlite-btree-5-btree/", "published_at": "2022-02-01T07:55:40+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8aebb4b72", "title": null, "url": "https://www.codedump.info/zh/tags/%E5%AD%98%E5%82%A8/", "published_at": "2022-02-01T07:55:40+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8af56dbf4", "title": null, "url": "https://www.codedump.info/zh/post/20220129-weekly-3/", "published_at": "2022-01-29T06:21:20+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8afbd8d2d", "title": null, "url": "https://www.codedump.info/zh/post/20220123-weekly-2/", "published_at": "2022-01-23T07:38:31+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8b0886a88", "title": null, "url": "https://www.codedump.info/zh/post/20220116-weekly-1/", "published_at": "2022-01-16T02:00:54+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8b14384e4", "title": null, "url": "https://www.codedump.info/zh/post/20220106-sqlite-btree-4-wal/", "published_at": "2022-01-06T13:48:18+00:00" }, { "id": "01a0c5e9-691f-704e-af3c-0ce8b1d73805", "title": null, "url": "https://www.codedump.info/zh/post/20220101-etcd3.5-joint-consensus/", "published_at": "2022-01-01T07:02:50+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b247373a9472", "title": null, "url": "https://www.codedump.info/zh/post/20211222-sqlite-btree-3-journal/", "published_at": "2021-12-22T11:15:31+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b2473826fa64", "title": null, "url": "https://www.codedump.info/zh/post/20211218-sqlite-btree-2-concurrency-control/", "published_at": "2021-12-18T07:25:05+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b2473869ab69", "title": null, "url": "https://www.codedump.info/zh/post/20211217-sqlite-btree-1-pagecache/", "published_at": "2021-12-17T06:22:06+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b24738e480b5", "title": null, "url": "https://www.codedump.info/zh/post/20211217-sqlite-btree-0/", "published_at": "2021-12-17T02:19:05+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b24739b6e645", "title": null, "url": "https://www.codedump.info/zh/post/20211011-raft-propose-prev-term/", "published_at": "2021-10-11T15:14:01+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b2473a3df64b", "title": null, "url": "https://www.codedump.info/zh/post/20210812-memcached/", "published_at": "2021-08-12T00:40:04+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b2473a6be10f", "title": null, "url": "https://www.codedump.info/zh/tags/%E9%9D%9E%E6%8A%80%E6%9C%AF/", "published_at": "2021-08-03T04:10:01+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b2473ae3fd7f", "title": null, "url": "https://www.codedump.info/zh/post/20210803-choice-dimension/", "published_at": "2021-08-03T04:10:01+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b2473b0c02cb", "title": null, "url": "https://www.codedump.info/zh/post/20210701-memcached/", "published_at": "2021-07-01T06:00:22+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b2473b92391f", "title": null, "url": "https://www.codedump.info/zh/tags/etcd/", "published_at": "2021-06-28T09:01:53+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b2473bfb8823", "title": null, "url": "https://www.codedump.info/zh/post/20210628-etcd-wal/", "published_at": "2021-06-28T09:01:53+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b2473c4dcb01", "title": null, "url": "https://www.codedump.info/zh/post/20210515-raft/", "published_at": "2021-05-15T05:52:08+00:00" }, { "id": "01a08761-8950-7031-b50a-4bfc7a42b784", "title": "How to Read Code", "url": "https://www.codedump.info/en/post/20200605-how-to-read-code/", "published_at": "2021-02-15T01:46:47+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b2473d3f03cb", "title": null, "url": "https://www.codedump.info/zh/post/20201105-kcp/", "published_at": "2020-11-05T14:08:40+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b2473d898a77", "title": null, "url": "https://www.codedump.info/zh/tags/%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B/", "published_at": "2020-11-05T14:08:40+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b2473e4c8d85", "title": null, "url": "https://www.codedump.info/zh/post/20200726-boltdb-4/", "published_at": "2020-07-26T09:55:11+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b2473e4d55ec", "title": null, "url": "https://www.codedump.info/zh/post/20200725-boltdb-3/", "published_at": "2020-07-25T03:26:33+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b2473ee820a0", "title": null, "url": "https://www.codedump.info/zh/post/20200711-boltdb-2/", "published_at": "2020-07-11T01:33:06+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b2473fb9a898", "title": null, "url": "https://www.codedump.info/zh/post/20200625-boltdb-1/", "published_at": "2020-06-25T13:43:17+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b24740688549", "title": null, "url": "https://www.codedump.info/zh/post/20200620-sgfap-loadavg/", "published_at": "2020-06-20T04:19:08+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b24740e18f27", "title": null, "url": "https://www.codedump.info/zh/tags/linux%E7%B3%BB%E7%BB%9F/", "published_at": "2020-06-20T04:19:08+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b24741db4643", "title": null, "url": "https://www.codedump.info/zh/post/20200615-btree-2/", "published_at": "2020-06-15T14:44:21+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b247422ed540", "title": null, "url": "https://www.codedump.info/zh/tags/%E7%AE%97%E6%B3%95%E4%B8%8E%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/", "published_at": "2020-06-15T14:44:21+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b2474274f711", "title": null, "url": "https://www.codedump.info/zh/post/20200609-btree-1/", "published_at": "2020-06-09T10:40:46+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b24742ff228a", "title": null, "url": "https://www.codedump.info/zh/post/20200605-how-to-read-code/", "published_at": "2020-06-04T16:14:14+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b2474393ec91", "title": null, "url": "https://www.codedump.info/zh/post/20200522-sgfap-softirq/", "published_at": "2020-05-22T13:52:58+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b24743fa0552", "title": null, "url": "https://www.codedump.info/zh/post/20200516-sgfap-syscall/", "published_at": "2020-05-16T08:31:03+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b24744c58724", "title": null, "url": "https://www.codedump.info/zh/post/20200503-sgfap-process-systemtap/", "published_at": "2020-05-03T06:32:57+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b2474560521e", "title": null, "url": "https://www.codedump.info/zh/post/20200503-sgfap-process-schedule/", "published_at": "2020-05-03T01:53:34+00:00" }, { "id": "01a0c5e9-6920-71f0-ad08-b247462314af", "title": null, "url": "https://www.codedump.info/zh/post/20200502-sgfap-process/", "published_at": "2020-05-02T06:41:22+00:00" } ] posts Claim your blog
Back to codedump.info
Blog · corpus.blog/blogs/codedump.info/posts

codedump.info

codedump.info

2026

2025

2022

2021

2020