Cycle travelled all the way from Bangalore to Kannan devan hills, Idukki. ;)
A wonderful journey of last 3 years has come to an end. Moved out of MBRDI / DTICI ( Daimler Trucks Innovation Center India)
Cycle travelled all the way from Bangalore to Kannan devan hills, Idukki. ;)
A wonderful journey of last 3 years has come to an end. Moved out of MBRDI / DTICI ( Daimler Trucks Innovation Center India)
I like to fork interesting github repositories and experiment with it. Those who do this actively might have faced the problem of upstream sync, where we need to sync our repository with the upstream repository. Imagine you forked a repository contains some articles which are being updated everyday, you will like them to have it synced everyday. I do ;)
Github introduced a feature called fetch upstream this year to solve this issue. But in this case you need to click on the fetch upstream button by yourself, this article is for the lazy ones who want it to be done automatically.
In this blog we are about to learn how to automate upstream fetch of any repository you cloned. We are using Github actions to do this. The below is the yaml configuration for my github action
class Node:
def __init__(self, data):
self.data=data
self.nextNode=None
class LinkedLIst:
def __init__(self):
self.head = None
self.numberOFNodes=0
# Here we get o(1) constant running time complexity for insertion.
def insert_start(self,data):
self.numberOFNodes=self.numberOFNodes+1
new_node = Node(data)
if not self.head:
self.head=new_node
else:
new_node.nextNode=self.head
self.head = new_node
#Linear running time o(n)
def insert_end(self,data):
self.numberOFNodes=self.numberOFNodes+1
new_node=Node(data)
actual_node=self.head
while actual_node.nextNode is not None:
actual_node=actual_node.nextNode
actual_node.nextNode=new_node
def size_of_list(self):
actual_node = self.head
while actual_node is not None:
print(actual_node)
actual_node=actual_node.nextNode
def traverse(self):
actual_node=self.head
while actual_node is not None:
print(actual_node.data)
actual_node=actual_node.nextNode
def deleteAtHead(self):
self.head=self.head.nextNode
self.numberOFNodes=self.numberOFNodes-1
def deleteAtTail(self):
actual_node = self.head
while actual_node.nextNode.nextNode is not None:
actual_node=actual_node.nextNode
actual_node.nextNode=None
self.numberOFNodes=self.numberOFNodes-1
linked_list=LinkedLIst()
linked_list.insert_start(4)
linked_list.insert_start(3)
linked_list.insert_start('A String type')
linked_list.insert_start(1.232)
linked_list.insert_end(12.232)
linked_list.traverse()
print('Deleting at the front')
linked_list.deleteAtHead()
linked_list.traverse()
print('Delete at the last position')
linked_list.deleteAtTail()
linked_list.traverse()
Configuration
class(es) should be imported based on a given selection criteria, usually one or more annotation attributes." Linked list
It needs a node class
It should have 2 basic characteristic
* Data
* Reference to the next node
It can be used to implement stack or queues. It does not allow random access as like in Array.
Obtaining a last node, locating a particular node requires an iteration over all or most of the items in the linked list.
Advantage
* It is dynamic data structures(No need to specify size)
* It can allocate memory on run time
* It take O(1) constant time complexity to insert an item at the beggining or removing at the beggining, unlike array where as its O(n)
* Linked list can grow organically, unlike in array where we need o(n) for re-sizing here its just about updating the reference
Disadvantages.
* Waste of memory due to references
* Nodes in the linked list must be read in order from the beginning as linked list have sequential access
* Difficult to do reverse travel , but we can enable this with back pointer. But this takes a memory
Inserting a references
* Inserting to the beginning takes O(1) constant time complexity. Because its just about adding a node
updating its next reference to the start of the linked list
* Inserting to the last node O(n) time complexity because we need to traverse throughout the linked list
to get to the last node, where last node will be pointing to a NULL reference. NULL reference is very much
important in terms of linked list because that will be the last node of the linked list
Remove
Removing at the beginning is always fast because we don't need to search for item. Its
only about removing, eg. In java assign to null.
Removing at a given point is O(n) linear time complexity.
Data Structures Overview
Bad programmers worry about code , good programmers worry about data structures and their relationships!
Data structures provide efficient ways to store data. A proper data structure can boost an Algorithm. If we need to make a app performs good then we must care about selecting proper data structure.
There is a tradeoff between running time complexity and memory time complexity. Eg. Dijktras algorithm with priority queue performs better but it will take more memory. If we need to minimize the memory then the application will be slow.
Abstract data types - Data Structures
Abstract data type is basically the logical implementation. We can use data structures like array or linked list to implement it. So Abstract data types are logical definition and data structures are concrete implementations. This is the difference between abstract data types and data structures.
Arrays - Basics
It can be N dimensional according to the needs. Arrays are good because it has O(1) time complexity to get by index.
Disadvantages are
When comes to any programming language what i check first is how to write a unit test on it.
"Coding is not difficult- Bill Gates" So what is difficult? I would say testing is difficult. Here is a basic example on how to test a small piece of python code.
The above snippet is a basic recursive program which will return the factorial of a number. Lets see how we can write a basic test case for this. I have my directory structure as follows.
Lets see the contents of n_factorial_tests.py.
Managing Concurrent Updates with Distributed Locks Managing Concurrent Updates with Distributed Locks In distri...