diff --git a/README.md b/README.md
index 35455aa4a..8ed68ff8a 100644
--- a/README.md
+++ b/README.md
@@ -47,15 +47,15 @@
- code implementation
- offer test case (consider edge case)
- discussion & follow up
-* LC SQL high frequent
+- LC SQL high frequent
- [LC sql high frequent 50](https://blog.csdn.net/qq_44186838/article/details/118713154)
- [LeetCode Curated SQL 70](https://leetcode.com/problem-list/5htp6xyg/?page=1)
- [cheatsheet-mysql-a4](https://cheatsheet.dennyzhang.com/cheatsheet-mysql-a4)
-* [Resource.md](./doc/Resource.md) - `Resource` for coding interview (**keep updating**)
-* [Teach yourself CS](https://teachyourselfcs.com/)
-* [MindMapCodeInterview](./doc/cheatsheet/mind_map_code_interview.png) - Mind map for coding interview
-* [CodeInterviewCheatsheet](./doc/cheatsheet/code_interview_cheatsheet.pdf) - Coding interview cheetsheet
-* [repl.it](https://repl.it/) - Coding online!
+- [Resource.md](./doc/Resource.md) - `Resource` for coding interview (**keep updating**)
+- [Teach yourself CS](https://teachyourselfcs.com/)
+- [MindMapCodeInterview](./doc/cheatsheet/mind_map_code_interview.png) - Mind map for coding interview
+- [CodeInterviewCheatsheet](./doc/cheatsheet/code_interview_cheatsheet.pdf) - Coding interview cheetsheet
+- [repl.it](https://repl.it/) - Coding online!
* Visualization
- [visualgo - DFS / BFS](https://visualgo.net/en/dfsbfs?slide=1) - DFS, BFS visualization
@@ -63,16 +63,16 @@
- [visualgo - BST](https://visualgo.net/bn/bst) - binary search tree visualization
- [toptal-sorting-algorithms](https://www.toptal.com/developers/sorting-algorithms)- sorting algorithms online
-* [How to: Work at Google](https://www.youtube.com/watch?v=XKu_SEDAykw) — Example Coding/Engineering Interview
-* [bit_manipulation.md](./doc/bit_manipulation.md) - Bit Manipulation Cheat Sheet
-* [Py TimeComplexity](https://wiki.python.org/moin/TimeComplexity) - Py basic data structure `Time Complexity` ref
-* [Py data model](https://docs.python.org/3/reference/datamodel.html) - Python data model doc
-* [pgexercises](https://pgexercises.com/questions/aggregates/) - Postgre exercises
-* [sqlservertutorial](https://www.sqlservertutorial.net/)
-* [Books](https://github.com/yennanliu/data_science_repo/tree/master/book)
-* [freecodecamp - data-structures](https://www.freecodecamp.org/news/tag/data-structures/)
-* [LC interview-experience](https://leetcode.com/discuss/interview-experience?currentPage=1&orderBy=hot&query=)
-* [Cheatsheet](https://github.com/yennanliu/CS_basics/tree/master/doc/cheatsheet)
+- [How to: Work at Google](https://www.youtube.com/watch?v=XKu_SEDAykw) — Example Coding/Engineering Interview
+- [bit_manipulation.md](./doc/bit_manipulation.md) - Bit Manipulation Cheat Sheet
+- [Py TimeComplexity](https://wiki.python.org/moin/TimeComplexity) - Py basic data structure `Time Complexity` ref
+- [Py data model](https://docs.python.org/3/reference/datamodel.html) - Python data model doc
+- [pgexercises](https://pgexercises.com/questions/aggregates/) - Postgre exercises
+- [sqlservertutorial](https://www.sqlservertutorial.net/)
+- [Books](https://github.com/yennanliu/data_science_repo/tree/master/book)
+- [freecodecamp - data-structures](https://www.freecodecamp.org/news/tag/data-structures/)
+- [LC interview-experience](https://leetcode.com/discuss/interview-experience?currentPage=1&orderBy=hot&query=)
+- [Cheatsheet](https://github.com/yennanliu/CS_basics/tree/master/doc/cheatsheet)
* Data structure
- [py core data structure interview](https://python.plainenglish.io/python-for-interviewing-an-overview-of-the-core-data-structures-666abdf8b698)
* System design
@@ -161,33 +161,33 @@
## Algorithm
-| # | Title | Solution | Use case | Comment | Status|
-| --- | ----- | -------- | ---- | ----- | ---- |
-||Binary search|[Python](./algorithm/python/binary_search.py) | | | AGAIN|
-||Linear search|[Python](./algorithm/python/linear_search.py) | | | AGAIN|
-||Breadth-first search (BFS)| [Python](./algorithm/python/bfs.py), [JS](./algorithm/js/bfs.js)|`FIND SHORTEST PATH`|| AGAIN***|
-||Depth-first search (DFS) |[Python](./algorithm/python/dfs.py), [JS](./algorithm/js/dfs.js)| `TO CHECK IF SOMETHING EXIST`| `inorder`, `postorder`, `postorder (can recreate a tree)`| AGAIN***|
-||Bubble sort| [Python](./algorithm/python/bubble_sort.py), [JS](./algorithm/js/bubble_sort.js) , [C](./algorithm/c/bubble_sort.c)| | | OK* (3)|
-||Insertion sort| [Python](./algorithm/python/insertion_sort.py), [JS](./algorithm/js/insertion_sort.js) |`stable` sort| work very fast for `nearly sorted` array|AGAIN|
-||Bucket sort| [Python](./algorithm/python/bucket_sort.py) | | |AGAIN|
-||Quick sort| [quick_sort.py](./algorithm/python/quick_sort.py), [quick_sort_v2.py](./algorithm/python/quick_sort_v2.py), [QuickSort.java](https://github.com/yennanliu/CS_basics/blob/master/leetcode_java/src/main/java/AlgorithmJava/QuickSort.java)| | | AGAIN***|
+| # | Title | Solution | Use case | Comment | Time complexity | Space complexity | Status|
+| --- | ----- | -------- | ---- | ----- | ---- | ---- | ---- |
+||Binary search|[Python](./algorithm/python/binary_search.py) | | | | | AGAIN|
+||Linear search|[Python](./algorithm/python/linear_search.py) | | | | | AGAIN|
+||Breadth-first search (BFS)| [Python](./algorithm/python/bfs.py), [JS](./algorithm/js/bfs.js)|`FIND SHORTEST PATH`|| | | AGAIN***|
+||Depth-first search (DFS) |[Python](./algorithm/python/dfs.py), [JS](./algorithm/js/dfs.js)| `TO CHECK IF SOMETHING EXIST`| `inorder`, `postorder`, `postorder (can recreate a tree)`| | | AGAIN***|
+||Bubble sort| [Python](./algorithm/python/bubble_sort.py), [JS](./algorithm/js/bubble_sort.js) , [C](./algorithm/c/bubble_sort.c)| | | | | OK* (3)|
+||Insertion sort| [Python](./algorithm/python/insertion_sort.py), [JS](./algorithm/js/insertion_sort.js) |`stable` sort| work very fast for `nearly sorted` array| | | AGAIN|
+||Bucket sort| [Python](./algorithm/python/bucket_sort.py) | | | | | AGAIN|
+||Quick sort| [quick_sort.py](./algorithm/python/quick_sort.py), [quick_sort_v2.py](./algorithm/python/quick_sort_v2.py), [QuickSort.java](https://github.com/yennanliu/CS_basics/blob/master/leetcode_java/src/main/java/AlgorithmJava/QuickSort.java)| | | `Best : O(N Log N), Avg : O(N Log N), Worst : O(N^2)` | | AGAIN***|
||Heap sort| [Python](./algorithm/python/heap_sort.py)| | | AGAIN**|
-||Merge sort|[merge_sort_topdown.py](./algorithm/python/merge_sort_topdown.py), [mergesort_bottomup.py](./algorithm/python/mergesort_bottomup.py), [MergeSortTopDown.java](https://github.com/yennanliu/CS_basics/blob/master/leetcode_java/src/main/java/AlgorithmJava/MergeSortTopDown.java), [SQL](./algorithm/sql/Mergesort.sql) | | | OK* (2)|
-||Pancake sort| [Python](./algorithm/python/pancake_sort.py) | | | AGAIN|
-||Selection sort| [Python](./algorithm/python/selection_sort.py), [JS](./algorithm/js/selection_sort.js) | | | AGAIN|
-||Topological sort| [Python](./algorithm/python/topological_sort.py) | | Topological Sort is a algorithm can find "ordering" on an "order dependency" graph | AGAIN|
-||md5 | [Python](./algorithm/python/md5.py) | | | AGAIN|
+||Merge sort|[merge_sort_topdown.py](./algorithm/python/merge_sort_topdown.py), [mergesort_bottomup.py](./algorithm/python/mergesort_bottomup.py), [MergeSortTopDown.java](https://github.com/yennanliu/CS_basics/blob/master/leetcode_java/src/main/java/AlgorithmJava/MergeSortTopDown.java), [SQL](./algorithm/sql/Mergesort.sql) | | | | | OK* (2)|
+||Pancake sort| [Python](./algorithm/python/pancake_sort.py) | | | | | AGAIN|
+||Selection sort| [Python](./algorithm/python/selection_sort.py), [JS](./algorithm/js/selection_sort.js) | | | | | AGAIN|
+||Topological sort| [Python](./algorithm/python/topological_sort.py) | | Topological Sort is a algorithm can find "ordering" on an "order dependency" graph | | | AGAIN|
+||md5 | [Python](./algorithm/python/md5.py) | | | | | AGAIN|
||Union Find | [Python 1](./algorithm/python/union_find.py), [Python 2](./algorithm/python/union_find_if_cyclic.py), [Java 1](./leetcode_java/src/main/java/AlgorithmJava/UnionFind.java) | | | AGAIN|
-||Dynamic programming|[JS 1](./algorithm/js/dp_demo_1.js), [fibonacci_dp JS](./algorithm/js/fibonacci_dp.js) | | | AGAIN|
+||Dynamic programming|[JS 1](./algorithm/js/dp_demo_1.js), [fibonacci_dp JS](./algorithm/js/fibonacci_dp.js) | | | | | AGAIN|
||Dijkstra|[Python](./algorithm/python/dijkstra.py),[Java](./algorithm/java/DijkstraSP.java)||| AGAIN***|
-||Floyd-Warshall|[Python](./algorithm/python/floyd_warshall.py)||| not start
-||Bellman-Ford|[Python](./algorithm/python/bellman_ford.py)||| not start
-||Quick Find |[Python](./algorithm/python/quick_find.py), [Java](./algorithm/java/QuickFindUF.java) | init : O(N), union : O(N), find : O(1)|simple, but slow |AGAIN|
-||Quick Union | [Java](./algorithm/java/QuickUnionUF.java) | init : O(N), union : O(N), find : O(N)| lazy approach, route compression, optimized Quick Find|AGAIN|
-||Quick Union (Improvements) || lazy approach, path compression|AGAIN|
-||Priority Queue (`unsorted`) | [Java](./algorithm/java/UnorderedMaxPQ.java) || AGAIN|
-||LRU cache | [Python](./algorithm/python/lru_cache.py) || LC 146 | AGAIN|
-||LFU Cache | [Python](./algorithm/python/lfu_cache.py) || LC 460 | AGAIN|
+||Floyd-Warshall|[Python](./algorithm/python/floyd_warshall.py)||| | | not start
+||Bellman-Ford|[Python](./algorithm/python/bellman_ford.py)||| | | not start
+||Quick Find |[Python](./algorithm/python/quick_find.py), [Java](./algorithm/java/QuickFindUF.java) | init : O(N), union : O(N), find : O(1)|simple, but slow | | |AGAIN|
+||Quick Union | [Java](./algorithm/java/QuickUnionUF.java) | init : O(N), union : O(N), find : O(N)| lazy approach, route compression, optimized Quick Find|| | AGAIN|
+||Quick Union (Improvements) || lazy approach, path compression|| | AGAIN|
+||Priority Queue (`unsorted`) | [Java](./algorithm/java/UnorderedMaxPQ.java) || | | AGAIN|
+||LRU cache | [Python](./algorithm/python/lru_cache.py) || LC 146 | | | AGAIN|
+||LFU Cache | [Python](./algorithm/python/lfu_cache.py) || LC 460 | | | AGAIN|
## Array
diff --git a/algorithm/python/quick_sort.py b/algorithm/python/quick_sort.py
index ca9b36b34..e33f32ba8 100644
--- a/algorithm/python/quick_sort.py
+++ b/algorithm/python/quick_sort.py
@@ -1,8 +1,39 @@
#---------------------------------------------------------------
-# QUICK SORT
+# QUICK SORT V1
#---------------------------------------------------------------
# V0
+# https://www.bilibili.com/video/BV1at411T75o/
+# https://hackmd.io/@Aquamay/H1nxBOLcO/https%3A%2F%2Fhackmd.io%2F%40Aquamay%2FB1SPnfRq_
+# https://www.baeldung.com/cs/quicksort-time-complexity-worst-case
+#
+# Steps
+# Step 1) find pivot (can be any idx, we choose idx 0 for simplicity)
+# Step 2) move element < pivot to left sub array, move element > pivot to right sub array
+# Step 3) repeat above to all sub array
+def quick_sort(sorting: list, left: int, right: int) -> None:
+ if right <= left:
+ return
+ a = i = left
+ b = right
+ pivot = sorting[left]
+ while i <= b:
+ if sorting[i] < pivot:
+ sorting[a], sorting[i] = sorting[i], sorting[a]
+ a += 1
+ i += 1
+ elif sorting[i] > pivot:
+ sorting[b], sorting[i] = sorting[i], sorting[b]
+ b -= 1
+ else:
+ i += 1
+ quick_sort(sorting, left, a - 1)
+ quick_sort(sorting, b + 1, right)
+
+ return sorting
+
+
+# V1
# steps
# 0) get pivot (last element from original array)
# 1) init big, small sub array
@@ -28,6 +59,7 @@ def quick_sort(arr):
# recursive do quick_sort
return quick_sort(small) + [pivot] + quick_sort(big)
+
# V1
# https://github.com/yennanliu/Python/blob/master/sorts/quick_sort.py
from __future__ import annotations
@@ -81,12 +113,6 @@ def quick_sort(data: list) -> list:
)
-# if __name__ == "__main__":
-# import doctest
-#
-# doctest.testmod()
-
-
# V1''
# https://github.com/yennanliu/Python/blob/master/sorts/quick_sort_3_partition.py
# IDEA : quick sort partition
@@ -177,14 +203,3 @@ def three_way_radix_quicksort(sorting: list) -> list:
+ [i for i in sorting if i == sorting[0]]
+ three_way_radix_quicksort([i for i in sorting if i > sorting[0]])
)
-
-
-# if __name__ == "__main__":
-# import doctest
-#
-# doctest.testmod(verbose=True)
-#
-# user_input = input("Enter numbers separated by a comma:\n").strip()
-# unsorted = [int(item) for item in user_input.split(",")]
-# quick_sort_3partition(unsorted, 0, len(unsorted) - 1)
-# print(unsorted)
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/aws.xml b/workspace/CSBasicsJava/.idea/aws.xml
new file mode 100644
index 000000000..b63b642cf
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/aws.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/codeStyles/Project.xml b/workspace/CSBasicsJava/.idea/codeStyles/Project.xml
new file mode 100644
index 000000000..919ce1f1f
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/codeStyles/Project.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/codeStyles/codeStyleConfig.xml b/workspace/CSBasicsJava/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 000000000..a55e7a179
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/compiler.xml b/workspace/CSBasicsJava/.idea/compiler.xml
new file mode 100644
index 000000000..3f60ba163
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/compiler.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/encodings.xml b/workspace/CSBasicsJava/.idea/encodings.xml
new file mode 100644
index 000000000..63e900193
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/encodings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/jarRepositories.xml b/workspace/CSBasicsJava/.idea/jarRepositories.xml
new file mode 100644
index 000000000..712ab9d98
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml
new file mode 100644
index 000000000..6fec8f434
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml
new file mode 100644
index 000000000..9eb8596a3
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_4_0.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_4_0.xml
new file mode 100644
index 000000000..f19f6eb36
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_4_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml
new file mode 100644
index 000000000..b8581a6f5
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__jakarta_activation_jakarta_activation_api_1_2_2.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__jakarta_activation_jakarta_activation_api_1_2_2.xml
new file mode 100644
index 000000000..be90656e6
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__jakarta_activation_jakarta_activation_api_1_2_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml
new file mode 100644
index 000000000..cba9dd244
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__jakarta_xml_bind_jakarta_xml_bind_api_2_3_3.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__jakarta_xml_bind_jakarta_xml_bind_api_2_3_3.xml
new file mode 100644
index 000000000..04213f738
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__jakarta_xml_bind_jakarta_xml_bind_api_2_3_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_10_18.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_10_18.xml
new file mode 100644
index 000000000..532908c85
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__net_bytebuddy_byte_buddy_1_10_18.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_10_18.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_10_18.xml
new file mode 100644
index 000000000..a3dcc5b43
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__net_bytebuddy_byte_buddy_agent_1_10_18.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__net_minidev_accessors_smart_1_2.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__net_minidev_accessors_smart_1_2.xml
new file mode 100644
index 000000000..b3d385838
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__net_minidev_accessors_smart_1_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__net_minidev_json_smart_2_3.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__net_minidev_json_smart_2_3.xml
new file mode 100644
index 000000000..108302355
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__net_minidev_json_smart_2_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_13_3.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_13_3.xml
new file mode 100644
index 000000000..8ad499666
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_13_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_13_3.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_13_3.xml
new file mode 100644
index 000000000..57e6ac487
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_13_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_0.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_0.xml
new file mode 100644
index 000000000..f854ab00f
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_assertj_assertj_core_3_18_1.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_assertj_assertj_core_3_18_1.xml
new file mode 100644
index 000000000..6a2f2054d
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_assertj_assertj_core_3_18_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_hamcrest_hamcrest_2_2.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_hamcrest_hamcrest_2_2.xml
new file mode 100644
index 000000000..6b5496ff0
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_hamcrest_hamcrest_2_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_7_0.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_7_0.xml
new file mode 100644
index 000000000..f7cf4fec5
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_7_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_7_0.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_7_0.xml
new file mode 100644
index 000000000..cc01e3f53
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_7_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_7_0.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_7_0.xml
new file mode 100644
index 000000000..f198e4bb8
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_7_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_7_0.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_7_0.xml
new file mode 100644
index 000000000..a53686b2d
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_7_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_7_0.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_7_0.xml
new file mode 100644
index 000000000..cde8a482a
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_7_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_7_0.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_7_0.xml
new file mode 100644
index 000000000..3391deb2a
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_7_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_mockito_mockito_core_3_6_28.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_mockito_mockito_core_3_6_28.xml
new file mode 100644
index 000000000..62ca28e9f
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_mockito_mockito_core_3_6_28.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_mockito_mockito_junit_jupiter_3_6_28.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_mockito_mockito_junit_jupiter_3_6_28.xml
new file mode 100644
index 000000000..79fde7d10
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_mockito_mockito_junit_jupiter_3_6_28.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_objenesis_objenesis_3_1.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_objenesis_objenesis_3_1.xml
new file mode 100644
index 000000000..ae7339975
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_objenesis_objenesis_3_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_opentest4j_opentest4j_1_2_0.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_opentest4j_opentest4j_1_2_0.xml
new file mode 100644
index 000000000..fbc1b1635
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_opentest4j_opentest4j_1_2_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml
new file mode 100644
index 000000000..0bf8cf2b2
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_ow2_asm_asm_5_0_4.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_0.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_0.xml
new file mode 100644
index 000000000..c4c54d6d5
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_skyscreamer_jsonassert_1_5_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_30.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_30.xml
new file mode 100644
index 000000000..27229ce3e
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_30.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_30.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_30.xml
new file mode 100644
index 000000000..02b6812c3
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_30.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_4_1.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_4_1.xml
new file mode 100644
index 000000000..4197b089d
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_4_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_4_1.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_4_1.xml
new file mode 100644
index 000000000..feda55794
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_4_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_4_1.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_4_1.xml
new file mode 100644
index 000000000..601529130
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_4_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_4_1.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_4_1.xml
new file mode 100644
index 000000000..4695cb063
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_4_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_4_1.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_4_1.xml
new file mode 100644
index 000000000..4d5f9b1f3
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_2_4_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_4_1.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_4_1.xml
new file mode 100644
index 000000000..b2872ea35
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_2_4_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_4_1.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_4_1.xml
new file mode 100644
index 000000000..67569acc9
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_4_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_spring_aop_5_3_2.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_spring_aop_5_3_2.xml
new file mode 100644
index 000000000..96144a80d
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_spring_aop_5_3_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_spring_beans_5_3_2.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_spring_beans_5_3_2.xml
new file mode 100644
index 000000000..8ff344e74
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_spring_beans_5_3_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_spring_context_5_3_2.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_spring_context_5_3_2.xml
new file mode 100644
index 000000000..c9588212d
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_spring_context_5_3_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_spring_core_5_3_2.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_spring_core_5_3_2.xml
new file mode 100644
index 000000000..15b7a85b4
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_spring_core_5_3_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_spring_expression_5_3_2.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_spring_expression_5_3_2.xml
new file mode 100644
index 000000000..438fdd509
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_spring_expression_5_3_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_spring_jcl_5_3_2.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_spring_jcl_5_3_2.xml
new file mode 100644
index 000000000..238d6516a
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_spring_jcl_5_3_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_spring_test_5_3_2.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_spring_test_5_3_2.xml
new file mode 100644
index 000000000..c69b97c77
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_springframework_spring_test_5_3_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_7_0.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_7_0.xml
new file mode 100644
index 000000000..006a8d346
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_xmlunit_xmlunit_core_2_7_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/libraries/Maven__org_yaml_snakeyaml_1_27.xml b/workspace/CSBasicsJava/.idea/libraries/Maven__org_yaml_snakeyaml_1_27.xml
new file mode 100644
index 000000000..5f4b15df9
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/libraries/Maven__org_yaml_snakeyaml_1_27.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/misc.xml b/workspace/CSBasicsJava/.idea/misc.xml
new file mode 100644
index 000000000..c0572aa05
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/misc.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/modules.xml b/workspace/CSBasicsJava/.idea/modules.xml
new file mode 100644
index 000000000..9bbcff6fe
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/sbt.xml b/workspace/CSBasicsJava/.idea/sbt.xml
new file mode 100644
index 000000000..201874354
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/sbt.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/vcs.xml b/workspace/CSBasicsJava/.idea/vcs.xml
new file mode 100644
index 000000000..b2bdec2d7
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/.idea/workspace.xml b/workspace/CSBasicsJava/.idea/workspace.xml
new file mode 100644
index 000000000..03368dea2
--- /dev/null
+++ b/workspace/CSBasicsJava/.idea/workspace.xml
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1607755197976
+
+
+ 1607755197976
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/CSBasicsJava.iml b/workspace/CSBasicsJava/CSBasicsJava.iml
new file mode 100644
index 000000000..d6eeaf364
--- /dev/null
+++ b/workspace/CSBasicsJava/CSBasicsJava.iml
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/workspace/CSBasicsJava/HELP.md b/workspace/CSBasicsJava/HELP.md
new file mode 100644
index 000000000..8c6db6f44
--- /dev/null
+++ b/workspace/CSBasicsJava/HELP.md
@@ -0,0 +1,9 @@
+# Getting Started
+
+### Reference Documentation
+For further reference, please consider the following sections:
+
+* [Official Apache Maven documentation](https://maven.apache.org/guides/index.html)
+* [Spring Boot Maven Plugin Reference Guide](https://docs.spring.io/spring-boot/docs/2.4.1/maven-plugin/reference/html/)
+* [Create an OCI image](https://docs.spring.io/spring-boot/docs/2.4.1/maven-plugin/reference/html/#build-image)
+
diff --git a/workspace/CSBasicsJava/target/classes/application.properties b/workspace/CSBasicsJava/target/classes/application.properties
new file mode 100644
index 000000000..8b1378917
--- /dev/null
+++ b/workspace/CSBasicsJava/target/classes/application.properties
@@ -0,0 +1 @@
+