A running technical garden.
Short, practical notes I keep as I learn — idioms, strategies, complexity cheatsheets.
𝗦𝘆𝘀𝘁𝗲𝗺 𝗗𝗲𝘀𝗶𝗴𝗻 𝗞𝗲𝘆 𝗖𝗼𝗻𝗰𝗲𝗽𝘁𝘀:
- Scalability: https://lnkd.in/gpge_z76
- Latency vs Throughput: https://lnkd.in/g_amhAtN
- CAP Theorem: https://lnkd.in/g3hmVamx
- ACID Transactions: https://lnkd.in/gMe2JqaF
- Rate Limiting: https://lnkd.in/gWsTDR3m
- API Design: https://lnkd.in/ghYzrr8q
- Strong vs Eventual Consistency: https://lnkd.in/gJ-uXQXZ
- Distributed Tracing: https://lnkd.in/d6r5RdXG
- Sync vs Async Communication: https://lnkd.in/gC3F2nvr
- Batch vs Stream Processing: https://lnkd.in/g4_MzM4s
- Fault Tolerance: https://lnkd.in/dVJ6n3wA
𝗦𝘆𝘀𝘁𝗲𝗺 𝗗𝗲𝘀𝗶𝗴𝗻 𝗕𝘂𝗶𝗹𝗱𝗶𝗻𝗴 𝗕𝗹𝗼𝗰𝗸𝘀:
- Database: https://lnkd.in/gti8gjpz
- Horizontal vs Vertical Scaling: https://lnkd.in/gAH2e9du
- Caching: https://lnkd.in/gC9piQbJ
- Distributed Caching: https://lnkd.in/g7WKydNg
- Load Balancing: https://lnkd.in/gQaa8sXK
- SQL vs NoSQL: https://lnkd.in/g3WC_yxn
- Database Scaling: https://lnkd.in/gAXpSyWQ
- Data Replication: https://lnkd.in/gVAJxTpS
- Data Redundancy: https://lnkd.in/gNN7TF7n
- Database Sharding: https://lnkd.in/gMqqc6x9
- Database Indexes: https://lnkd.in/gCeshYVt
- Proxy Server: https://lnkd.in/gi8KnKS6
- WebSocket: https://lnkd.in/g76Gv2KQ
- API Gateway: https://lnkd.in/gnsJGJaM
- Message Queues: https://lnkd.in/gTzY6uk8
𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗮𝗹 𝗣𝗮𝘁𝘁𝗲𝗿𝗻𝘀:
- Event-Driven Architecture: https://lnkd.in/dp8CPvey
- Client-Server Architecture: https://lnkd.in/dAARQYzq
- Serverless Architecture: https://lnkd.in/gQNAXKkb
- Microservices Architecture: https://lnkd.in/gFXUrz_T
𝗟𝗼𝘄-𝗟𝗲𝘃𝗲𝗹 𝗗𝗲𝘀𝗶𝗴𝗻 𝗣𝗿𝗼𝗯𝗹𝗲𝗺𝘀:
- Design Parking Lot: https://lnkd.in/dQaAuFd2
- Design Splitwise: https://lnkd.in/dF5fBnex
- Design Chess Validator: https://lnkd.in/dfAQHvN4
- Design Distributed Queue | Kafka: https://lnkd.in/dQ6_B4_M
Share with someone who might need this.
Need continuous some smaller/larger value? Use heap max or min as you need.
- Effectively Using Django REST Framework Serializers
- How To Use DRF Serializers Effectively in Django
- My personal django rest framework serializer notes
- How to use DRF serializers effectively during write operations
when you have something circular, most of the time you can have one variableand another can be calculated using size, current value and doing %
LRUCache can be implemented
- Hashmap + Doubly Linked List
- Python Dict/OrderDict
- HashMap + List
At least I've tested them for fun :p
(k := next(iter(d)), d.pop(k))
will remove the leftmost (first) item (if it exists) from a dict object.
And if you want to remove the right most/recent value from the dict
d.popitem()
From python 3.7 dict guarantees that order will be kept as they inserted, and popitem will use LIFO order but we need FIFO type system. so we need OrderedDict which have popIten(last = T/F) for this req.
One thing, next(iter(dict)) will return the first key of the dict
leetcode problem 287. Find the Duplicate Number has 7 solving approach. WOW!!!
Floyd's Hare and Tortoise algorithm best exaplanation video
Floyd's Tortoise and Hare is used to detect linked list cycle.
time.perf_counter() always returns the float value of time in seconds. while pref_counter_ns() always gives the integer value of time in nanoseconds.
t1_start = perf_counter()
t1_stop = perf_counter()
print("Elapsed time:", t1_stop, t1_start)
Substring a String
string[start:end:step]- from first
string[2:6] - last char
string[-1] - last char by index s
tring[-1] - from last
string[-5:] - first to last
string[1:-4]
Amortized time is the way to express the time complexity when an algorithm has the very bad time complexity only once in a while besides the time complexity that happens most of time. Good example would be an ArrayList which is a data structure that contains an array and can be extended.
Pythonic Time Complexity Wiki
Important to remember
His posts are really helpful, FAANG tips Link
Started keeping online notes!