Course Outline

  1. Sockets
    • Creating datagram sockets
    • Receiving and sending data
    • Creating and accepting TCP connections
    • Closing sockets
    • Handling errors
  2. Handling more than one client in a simple way
    • Prefork model, as found in Apache
    • Forking a new process per client
    • Cleaning up after finished processes
    • Threads
    • Inetd, systemd units
  3. Waiting for data
    • Blocking sockets
    • Non-blocking sockets and select
    • Select as a way to wait for "any of these sockets"
  4. Organizing reads and writes
    • Dealing with short reads and writes
    • Reading up to a delimiter
    • Pipelined requests
    • Application-level buffers
  5. Event-driven architecture
    • Using select for multiplexing all client connections in one thread
    • State machines
    • Callback hell
    • Event libraries
    • "Green" threads
  6. Problem of 10000 connections
    • Problems with prefork model and select-based loop
    • poll as an alternative to select
    • Realtime signals and why you shouldn't use them
    • Epoll (linux) and kqueue (BSD)
    • Why and when epoll and kqueue are faster than poll/select
  7. Timeouts and timers
    • SIGALARM
    • Timeout as a select argument
    • A simple case of all-equal timeouts
    • Priority queue as an abstract data stracture
    • Binary heap as a priority queue implementation
    • Timer wheel
    • timerfd
  8. Integration with the operating system
    • Traditional daemons
    • Systemd socket activation
    • Logging
    • Handling signals
  9. Performance and scalability optimizations
    • Choosing the right architecture
    • Setting socket options

 

Requirements

  • C language
  • Linux user skills
 14 Hours

Number of participants



Price per participant

Testimonials (5)

Related Courses

Building Interactive Applications with React, Redux and GraphQL

28 Hours

Spring Boot, React, and Redux

14 Hours

Managing Vue JS State with Vuex

7 Hours

Next.js 14 Advanced Development

21 Hours

React with Next.js

14 Hours

Managing React State with MobX

14 Hours

Material UI

7 Hours

Ant Design

7 Hours

NestJS: Beginner to Advanced

14 Hours

REST API Development with LoopBack

14 Hours

Building Web Apps using the MEAN stack

35 Hours

Node.js & Express.js Basics, working with PM2 & WebStorm

21 Hours

Qt Quick and QML

7 Hours

Mathematica - wprowadzenie, wizualizacja i prezentacja danych

14 Hours

Mathematica for Machine Learning

14 Hours

Related Categories

1