コース概要

  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

 

要求

  • C language
  • Linux user skills
 14 時間

参加者の人数



Price per participant

お客様の声 (5)

関連コース

Building Interactive Applications with React, Redux and GraphQL

28 時間

Spring Boot, React, and Redux

14 時間

Managing Vue JS State with Vuex

7 時間

Next.js 14 Advanced Development

21 時間

React with Next.js

14 時間

Managing React State with MobX

14 時間

Material UI

7 時間

Ant Design

7 時間

NestJS: Beginner to Advanced

14 時間

REST API Development with LoopBack

14 時間

Building Web Apps using the MEAN stack

35 時間

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

21 時間

Qt Quick and QML

7 時間

Mathematica - wprowadzenie, wizualizacja i prezentacja danych

14 時間

Mathematica for Machine Learning

14 時間

関連カテゴリー