Course Outline
- Sockets
- Creating datagram sockets
- Receiving and sending data
- Creating and accepting TCP connections
- Closing sockets
- Handling errors
- 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
- Waiting for data
- Blocking sockets
- Non-blocking sockets and select
- Select as a way to wait for "any of these sockets"
- Organizing reads and writes
- Dealing with short reads and writes
- Reading up to a delimiter
- Pipelined requests
- Application-level buffers
- Event-driven architecture
- Using select for multiplexing all client connections in one thread
- State machines
- Callback hell
- Event libraries
- "Green" threads
- 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
- 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
- Integration with the operating system
- Traditional daemons
- Systemd socket activation
- Logging
- Handling signals
- Performance and scalability optimizations
- Choosing the right architecture
- Setting socket options
Requirements
- C language
- Linux user skills
Testimonials (5)
The breadth of the topis covered was quite a bit and the trainer tried to do justice to that.
Lakshmipriya Sivakumar - Deque Systems Inc
Course - Spring Boot, React, and Redux
I like the professionality of the trainer, he really knows what he is talking about and able to explain almost even the simple subjects on the topic which is great.
Marlon - National Confederation of Cooperatives
Course - React with Next.js
trainer very knowledgeable clear classes explains the importance of learn the topic gives enough background on topic
Li Fang Bren Ong - DBS Bank Limited
Course - Ant Design
Learned a whole lot about the topic
Zsolt Langviser - Accenture Industrial SS
Course - NestJS: Beginner to Advanced
The labs were interesting and probably the most useful learning tool to me. Anything I missed or forgot about was relearned or reinforced in the labs.