Understanding Inner workings of the Golang Channels

Goroutine and Channel

Making Buffered channels

ch := make(chan int, 3)      

Confusion matrix, Accuracy, Precision, Sensitivity, Specificity, F1 score, and Roc curve, let’s remember them once for all

Table of content

  1. Confusion Matrix
  2. Accuracy
  3. Precision
  4. Recall
  5. Specificity
  6. Tradeoff
  7. Roc Curve

1. Confusion Matrix


Cloud DataPrep Architechture

The Efficient Tool

What’s DataPrep
  • Intuitive and friendly interface with only clicks, not code
  • Predictive transformation suggestions powered by machine learning
  • Execution is powered by Cloud Dataflow, super fast and scalable

A Peek

Basic Abilities

  • High concurrency
  • Monitoring the number of the goroutine for leaking
  • Allowing flexible concurrency control
golang web crawler example
A Web Crawler in Go


  • Microsoft Excel
  • Apple Numbers
  • Free to use
  • Accessible everywhere
  • Easily collaborate with your team

Data Studio

  • Tableau
  • Power BI
  • Support a lot of data sources including google family products such as Google Ads
  • Rich Visualization tools
  • Share with your team easily

Big Query

Photo by Sigmund on Unsplash


type byte = uint8


1. Created by masters at Google

Go supports composite types such as an array, slice, maps, and structures. We will discuss the four composite types one by one

Golang Data Types
  1. Basic type: Numbers, strings, and booleans come under this category.
  2. Aggregate type: Array and structs come under this category. Their values are concatenations of other values in memory.
  3. Reference type: Pointers, slices, maps, functions, and channels come under this category.
  4. Interface type

Table of Content


  • Array stores collection of items with the same type (homogeneous)
  • The elements in the array store in continuous memory locations
  • Array has Fixed-size
  • Declaration styles
// Given…

Simplest Lock

  • Acquire the lock,
  • Run some block of code
  • Release the lock
def acquire_lock(conn, lock_name, acquire_timeout=10):    identifier = str(uuid.uuid4())

end = time.time() + acquire_timeout
while time.time() < end:
if conn.setnx("lock:"+lock_name, identifier)
return identifier


return False
  • We’ll set a 128-bit randomly generated UUID into the…

Jerry An

Developer in China, AI and machine learning enthusiast

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store