Modern systems programming with Scala Native write lean, high-performance code without the JVM /
Clasificación: | Libro Electrónico |
---|---|
Autor principal: | |
Formato: | Electrónico eBook |
Idioma: | Inglés |
Publicado: |
Raleigh :
The Pragmatic Bookshelf,
2020.
|
Temas: | |
Acceso en línea: | Texto completo (Requiere registro previo con correo institucional) |
Tabla de Contenidos:
- Cover
- Table of Contents
- Acknowledgments
- Foreword
- Preface
- Who This Book Is For
- What's In This Book
- Working with the Code
- Online Resources
- Systems Programming in the Twenty-First Century
- What Is Systems Programming?
- Moving Toward Modern Systems Programming
- Why Scala Native?
- What Makes Scala Native Different
- Part I-Foundations of Systems Programming
- 1. The Basics: Input and Output
- Working with Output
- Working with Input
- Case Study: Google NGrams
- What's Next
- 2. Arrays, Structs, and the Heap
- The Stack and the Heap
- Structs, Arrays, and Sorting
- Sorting an Array
- Aggregation at Scale
- What's Next
- 3. Writing a Simple HTTP Client
- Defining Terms
- Working with TCP
- Making a TCP Connection
- Testing Network Code with Netcat
- Introducing HTTP
- Implementing HTTP
- Testing Our Code
- What's Next
- 4. Managing Processes: A Deconstructed Shell
- Running a Program
- Introducing exec
- What Went Wrong?
- Introducing Concurrency with fork() and wait()
- Supervising Multiple Processes
- Working with Pipes
- What's Next
- 5. Writing a Server the Old-Fashioned Way
- Understanding How a Server Works
- Building Our Server
- Creating a Minimum Viable Server
- Handling HTTP
- Performance Testing with Gatling
- What's Next
- Part II-Modern Systems Programming
- 6. Doing I/O Right, with Event Loops
- Blocking and Polling
- Introducing libuv
- Working with Asynchronous TCP Sockets
- Building an Asynchronous HTTP Server
- What's Next
- 7. Functions and Futures: Patterns for Distributed Services
- Designing an Asynchronous API
- Introducing Futures
- Implementing Futures
- Implementing an ExecutionContext
- Futures and Promises
- Introducing libcurl
- Asynchronous curl
- What's Next
- 8. Streaming with Pipes and Files
- Looking at Streams, Files, and Descriptors
- Streaming Pipe Input in libuv
- Streaming File Input in libuv
- Streaming File Output in libuv
- Stream Processors
- What's Next
- 9. Durability: An Embedded Key-Value Database with LMDB
- Introducing Embedded Storage
- Defining LMDB Concepts
- Working with the LMDB API
- Serialization and Deserialization with JSON
- Putting LMDB on the Web
- What's Next
- 10. Services: Encapsulation and Abstraction for Modern Designs
- Services and Distributed Systems
- Parsing, Revisited
- Moving from Server to Service
- Implementing an Idiomatic Service DSL
- Integrations and Ecosystems
- The Way Forward
- A1. Setting Up the Environment
- Running Scala Native on Mac OS
- Why Use Containers?
- Installing and Configuring Docker
- Running Scala Native in Docker
- Index
- SYMBOLS
- DIGITS
- A
- B
- C
- D
- E
- F
- G
- H
- I
- J
- K
- L
- M
- N
- O
- P
- Q
- R
- S
- T
- U
- V
- W
- Z