From 88b8ed25e8608662120933c841a80b3a7025ad19 Mon Sep 17 00:00:00 2001 From: lpthong90 Date: Sun, 3 Mar 2024 17:28:35 +0700 Subject: [PATCH] fix --- README.md | 8 ++++---- {images => assets/images}/diagram.png | Bin assets/images/thumbnail.jpg | Bin 0 -> 18237 bytes 3 files changed, 4 insertions(+), 4 deletions(-) rename {images => assets/images}/diagram.png (100%) create mode 100644 assets/images/thumbnail.jpg diff --git a/README.md b/README.md index dcc6a6b..ea957b1 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ - +

+ Order Matching Engine +

A demo project is a simple order matching engine which using double linked list and AVL tree.

@@ -29,7 +29,7 @@ Price levels without any related orders are removed to maintain efficiency in th Model diagram: -filter_options +filter_options [//]: # (Add new order flow diagram:) diff --git a/images/diagram.png b/assets/images/diagram.png similarity index 100% rename from images/diagram.png rename to assets/images/diagram.png diff --git a/assets/images/thumbnail.jpg b/assets/images/thumbnail.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2f3516f0f33c39bbca20bc14ddee9fcdffc8eb53 GIT binary patch literal 18237 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 literal 0 HcmV?d00001