ورود به حساب

نام کاربری گذرواژه

گذرواژه را فراموش کردید؟ کلیک کنید

حساب کاربری ندارید؟ ساخت حساب

ساخت حساب کاربری

نام نام کاربری ایمیل شماره موبایل گذرواژه

برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید


09117307688
09117179751

در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید

دسترسی نامحدود

برای کاربرانی که ثبت نام کرده اند

ضمانت بازگشت وجه

درصورت عدم همخوانی توضیحات با کتاب

پشتیبانی

از ساعت 7 صبح تا 10 شب

دانلود کتاب Rust in Action: Systems programming concepts and techniques

دانلود کتاب Rust in Action: مفاهیم و تکنیک های برنامه نویسی سیستم ها

Rust in Action: Systems programming concepts and techniques

مشخصات کتاب

Rust in Action: Systems programming concepts and techniques

ویرایش:  
نویسندگان:   
سری:  
ISBN (شابک) : 9781617294556 
ناشر: Manning Publications Co. 
سال نشر: 2021 
تعداد صفحات: 0 
زبان: English 
فرمت فایل : EPUB (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود) 
حجم فایل: 6 مگابایت 

قیمت کتاب (تومان) : 32,000



ثبت امتیاز به این کتاب

میانگین امتیاز به این کتاب :
       تعداد امتیاز دهندگان : 14


در صورت تبدیل فایل کتاب Rust in Action: Systems programming concepts and techniques به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.

توجه داشته باشید کتاب Rust in Action: مفاهیم و تکنیک های برنامه نویسی سیستم ها نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.


توضیحاتی در مورد کتاب Rust in Action: مفاهیم و تکنیک های برنامه نویسی سیستم ها

Rust in Action زبان برنامه نویسی Rust را با کاوش در مفاهیم و تکنیک های برنامه نویسی سیستم های متعدد معرفی می کند. شما Rust را با بررسی نحوه کار کامپیوترها در زیر کلاه یاد خواهید گرفت. شما متوجه خواهید شد که در حال بازی با فضای ذخیره سازی مداوم، حافظه، شبکه و حتی دستکاری با دستورالعمل های CPU هستید. این کتاب شما را با استفاده از Rust برای گسترش سایر برنامه‌ها راهنمایی می‌کند و به شما ترفندهایی برای نوشتن کدهای سریع کورکورانه می‌آموزد. شما همچنین برنامه نویسی موازی و همزمان را کشف خواهید کرد. خرید کتاب چاپی شامل یک کتاب الکترونیکی رایگان در قالب‌های PDF، Kindle و ePub از انتشارات منینگ است.


توضیحاتی درمورد کتاب به خارجی

Rust in Action introduces the Rust programming language by exploring numerous systems programming concepts and techniques.You'll be learning Rust by delving into how computers work under the hood. You'll find yourself playing with persistent storage, memory, networking and even tinkering with CPU instructions. The book takes you through using Rust to extend other applications and teaches you tricks to write blindingly fast code. You'll also discover parallel and concurrent programming. Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications.



فهرست مطالب

Rust in Action MEAP V15
Copyright
Welcome
Brief contents
Chapter 1: Introducing Rust
	1.1 How is Rust used?
	1.2 What is it like to advocate for Rust at work?
	1.3 Installing Rust
	1.4 A taste of the language
		1.4.1 CHEATING YOUR WAY TO "HELLO, WORLD!"
		1.4.2 YOUR FIRST RUST PROGRAM
	1.5 Downloading the book’s source code
	1.6 What does Rust look and feel like?
	1.7 What is Rust?
		1.7.1 GOAL OF RUST: SAFETY
		1.7.2 GOAL OF RUST: PRODUCTIVITY
		1.7.3 GOAL OF RUST: CONTROL
	1.8 Rust’s Big Features
		1.8.1 PERFORMANCE
		1.8.2 CONCURRENCY
		1.8.3 MEMORY EFFICIENCY
	1.9 Downsides of Rust
		1.9.1 CYCLIC DATA STRUCTURES
		1.9.2 COMPILE TIMES
		1.9.3 STRICTNESS
		1.9.4 SIZE OF THE LANGUAGE
		1.9.5 HYPE
	1.10 Where does Rust fit best?
		1.10.1 COMMAND-LINE UTILITIES
		1.10.2 DATA PROCESSING
		1.10.3 EXTENDING AN APPLICATION
		1.10.4 RESOURCE-CONSTRAINED ENVIRONMENTS, SUCH AS MICRO-CONTROLLERS
		1.10.5 SERVER-SIDE APPLICATIONS
		1.10.6 DESKTOP APPLICATIONS
		1.10.7 DESKTOP
		1.10.8 MOBILE
		1.10.9 WEB
		1.10.10 SYSTEMS PROGRAMMING
	1.11 Rust’s hidden feature: its community
	1.12 Rust phrase book
	1.13 Summary
Chapter 2: Language Foundations
	2.1 Create a running program
		2.1.1 COMPILING SINGLE FILES
		2.1.2 COMPILING LARGER PROJECTS
	2.2 A glance at Rust’s syntax
		2.2.1 DEFINING AND CALLING FUNCTIONS
	2.3 Numbers
		2.3.1 INTEGERS AND DECIMAL (FLOATING POINT) NUMBERS
		2.3.2 INTEGERS WITH BASE 2, BASE 8 AND BASE 16 NOTATION
		2.3.3 COMPARING NUMBERS
		IMPOSSIBLE TO COMPARE DIFFERENT TYPES
		FLOATING POINT TRIP HAZARDS
		2.3.4 RATIONAL, COMPLEX NUMBERS AND OTHER NUMERIC TYPES
	2.4 Iteration
		2.4.1 CREATING ITERATORS THAT SUPPORT FOR LOOPS
	2.5 Flow control
		2.5.1 FOR: THE CENTRAL PILLAR OF ITERATION
		REFERENCES ARE USUALLY WHAT YOU WANT
		ANONYMOUS LOOPS
		AVOID MANAGING AN INDEX VARIABLE
		2.5.2 CONTINUE: SKIPPING THE REST OF THE CURRENT ITERATION
		2.5.3 WHILE: LOOPING UNTIL A CONDITION CHANGES ITS STATE
		USING WHILE TO STOP ITERATING ONCE A DURATION HAS BEEN REACHED
		AVOID WHILE TO LOOP ENDLESSLY
		2.5.4 LOOP: THE BASIS FOR RUST’S LOOPING CONSTRUCTS
		2.5.5 BREAK: ABORTING A LOOP
		BREAK FROM NESTED LOOPS
		2.5.6 IF, IF ELSE, AND ELSE: CONDITION TESTING
		CONDITIONAL TESTS RETURN VALUES
		2.5.7 MATCH: TYPE-AWARE PATTERN MATCHING
	2.6 Defining functions
	2.7 Project: Rendering the Mandelbrot set
	2.8 Advanced function definitions
		2.8.1 EXPLICIT LIFETIME ANNOTATIONS
		2.8.2 GENERIC FUNCTIONS
	2.9 Creating grep-lite
	2.10 Making lists of things with arrays, slices and vectors
		2.10.1 ARRAYS
		2.10.2 SLICES
		2.10.3 VECTORS
	2.11 Including Third Party Code
		2.11.1 ADDING SUPPORT FOR REGULAR EXPRESSIONS
		2.11.2 GENERATING CRATES' DOCUMENTATION LOCALLY
		2.11.3 MANAGING RUST TOOLCHAINS WITH RUSTUP
	2.12 Supporting Command Line Arguments
	2.13 Reading From Files
	2.14 Reading from STDIN
	2.15 Summary
Chapter 3: Compound Data Types
	3.1 Using plain functions to experiment with an API
	3.2 Modelling files with struct
	3.3 Adding Methods to a struct with impl
		3.3.1 SIMPLIFYING OBJECT CREATION BY IMPLEMENTING A NEW() METHOD
	3.4 Returning errors
		3.4.1 MODIFYING A KNOWN GLOBAL VARIABLE
		3.4.2 MAKING USE OF THE RESULT RETURN TYPE
	3.5 Defining and making use of enum
		3.5.1 USING AN ENUM TO MANAGE INTERNAL STATE
	3.6 Defining Common Behavior with Traits
		3.6.1 CREATING A READ TRAIT
		3.6.2 IMPLEMENTING STD::FMT::DISPLAY FOR YOUR OWN TYPES
	3.7 Exposing your types to the world
		3.7.1 PROTECTING PRIVATE DATA
	3.8 Creating In-line Documentation
		3.8.1 USING RUSTDOC TO RENDER DOCS FOR A SINGLE SOURCE FILE
		3.8.2 USING CARGO TO RENDER DOCS FOR A CRATE AND ITS DEPENDENCIES
	3.9 Summary
Chapter 4: Lifetimes, Ownership and Borrowing
	4.1 “Implementing” a Mock CubeSat Ground Station
		4.1.1 ENCOUNTERING OUR FIRST LIFETIME ISSUE
		4.1.2 SPECIAL BEHAVIOR OF PRIMITIVE TYPES
	4.2 Guide to the figures in this chapter
	4.3 What is an Owner? Does it Have any Responsibilities?
	4.4 How Ownership Moves
	4.5 Resolving Ownership Issues
		4.5.1 USE REFERENCES WHERE FULL OWNERSHIP IS NOT REQUIRED
		4.5.2 USE FEWER LONG-LIVED VALUES
		4.5.3 DUPLICATE THE VALUE
		IMPLEMENTING COPY
		USING CLONE AND COPY
		4.5.4 WRAP DATA WITHIN SPECIALTY TYPES
	4.6 Summary
Chapter 5: Data in Depth
	5.1 Bit Patterns and Types
	5.2 Life of an integer
		5.2.1 UNDERSTANDING ENDIANNESS
	5.3 Decimal Numbers
		5.3.1 ABOUT FLOATING POINT
		5.3.2 LOOKING INSIDE AN F32
		5.3.3 ABOUT THE SIGN BIT
		5.3.4 ABOUT THE EXPONENT
		5.3.5 ABOUT THE MANTISSA
		5.3.6 REPRESENTING DECIMAL NUMBERS IN A SINGLE BYTE WITH A FIXED-POINT NUMBER FORMAT
	5.4 Generating f32 values between 0 and 1 from random bytes
	5.5 Implementing a CPU in Software to Establish that Functions are also Data
		5.5.1 CPU 1: “THE ADDER”
		GLOSSARY OF TERMS RELATED TO CPU EMULATION
		DEFINING THE CPU
		LOADING VALUES INTO REGISTERS
		UNDERSTANDING THE EMULATOR’S MAIN LOOP
		HOW TO INTERPRET CHIP-8 OPCODES
		5.5.2 FIRST WORKING EMULATOR
		5.5.3 CPU 2: “THE MULTIPLIER”
		EXPANDING THE CPU TO SUPPORT MEMORY
		READING OPCODES FROM MEMORY
		HANDLING INTEGER OVERFLOW
		SECOND WORKING EMULATOR
		5.5.4 CPU 3: ADDING FUNCTIONS
		EXPANDING THE CPU TO INCLUDE SUPPORT FOR A STACK
		IMPLEMENTING CALL AND RETURN
		THIRD WORKING EMULATOR
		5.5.5 CPU 4: ADDING THE REST
	5.6 Summary
Chapter 6: Memory
	6.1 Pointers
	6.2 Exploring Rust’s reference and pointer types
		6.2.1 RAW POINTERS IN RUST
		6.2.2 RUST’S POINTER ECOSYSTEM
		6.2.3 SMART POINTER BUILDING BLOCKS
	6.3 Providing programs with memory for their data
		6.3.1 THE STACK
		6.3.2 THE HEAP
		WHAT IS THE HEAP?
		6.3.3 WHAT IS DYNAMIC MEMORY ALLOCATION?
	6.4 Virtual Memory
		6.4.1 BACKGROUND
		6.4.2 STEP 1: HAVING A PROCESS SCAN ITS OWN MEMORY
		6.4.3 TRANSLATING VIRTUAL ADDRESSES TO PHYSICAL ADDRESSES
		6.4.4 STEP 2: WORKING WITH THE OPERATING SYSTEM TO SCAN AN ADDRESS SPACE
		6.4.5 STEP 3: READING AND WRITING BYTES TO PROCESSES' MEMORY
	6.5 Wrap up
Chapter 7: Files & Storage
	7.1 What is a file format?
	7.2 Creating your own file formats for data storage with serde
		7.2.1 WRITING DATA TO DISK WITH SERDE & THE BINCODE FORMAT
	7.3 Implementing a hexdump Clone
	7.4 File operations in Rust
		7.4.1 OPENING A FILE IN RUST AND CONTROLLING ITS FILE MODE
		7.4.2 INTERACTING WITH THE FILE SYSTEM IN A TYPE-SAFE MANNER WITH STD::FS::PATH
	7.5 Implementing a key-value store with a log-structured, append-only storage architecture
		7.5.1 THE KEY-VALUE MODEL
		7.5.2 INTRODUCING ACTIONKV V0.1: AN IN-MEMORY KEY-VALUE STORE WITH A COMMAND LINE INTERFACE
	7.6  actionkv v0.1 front-end code
		7.6.1 TAILORING WHAT IS COMPILED WITH CONDITIONAL COMPILATION
	7.7 Understanding the core of actionkv: the libactionkv crate
		7.7.1 INITIALIZING THE ACTIONKV STRUCT
		7.7.2 PROCESSING AN INDIVIDUAL RECORD
		7.7.3 WRITING MULTI-BYTE BINARY DATA TO DISK IN A GUARANTEED BYTE ORDER
		7.7.4 VALIDATING I/O ERRORS WITH CHECKSUMS
		IMPLEMENTING PARITY BIT CHECKING
		7.7.5 INSERTING A NEW KEY-VALUE PAIR INTO AN EXISTING DATABASE
		7.7.6  LIBACTIONKV FULL CODE LISTING
		7.7.7 WORKING WITH KEYS AND VALUES WITH HASHMAP AND BTREEMAP
		7.7.8 CREATING A HASHMAP AND POPULATING IT WITH VALUES
		7.7.9 RETRIEVING VALUES FROM HASHMAP AND BTREEMAP
		7.7.10 HOW TO DECIDE BETWEEN HASHMAP AND BTREEMAP
		7.7.11 ADDING DATABASE INDEX TO ACTION_KV V0.2
	7.8 Summary
Chapter 8: Networking
	8.1 Just enough HTTP
	8.2 Generating an HTTP GET request with reqwest
	8.3 Trait Objects
		8.3.1 WHAT DO TRAIT OBJECTS ENABLE?
		8.3.2 WHAT IS A TRAIT OBJECT?
		8.3.3 CREATING A TINY ROLE-PLAYING GAME
	8.4 TCP
		8.4.1 WHAT IS A “PORT NUMBER”?
		8.4.2 CONVERTING A HOSTNAME TO AN IP ADDRESS
	8.5 Ergonomic Error Handling for Libraries
		8.5.1 ISSUE: UNABLE TO RETURN MULTIPLE ERROR TYPES
		8.5.2 WRAPPING DOWNSTREAM ERRORS BY DEFINING OUR OWN ERROR TYPE
		DEFINE AN ENUM THAT INCLUDES THE UPSTREAM ERRORS AS VARIANTS
		ANNOTATE THE ENUM WITH #[DERIVE(DEBUG)]
		IMPLEMENT STD::FMT::DISPLAY
		IMPLEMENT STD::ERROR::ERROR
		USE MAP_ERR() IN YOUR CODE TO CONVERT THE UPSTREAM ERROR TO YOUR OMNIBUS ERROR TYPE
		IMPLEMENT STD::CONVERT::FROM TO REMOVE THE NEED TO CALL MAP_ERR()
		8.5.3 CHEAT WITH UNWRAP() AND EXPECT()
	8.6 MAC addresses
		8.6.1 GENERATING MAC ADDRESSES
	8.7 Implementing state machines with Rust’s enums
	8.8 Raw TCP
	8.9 Creating a virtual networking device
	8.10 “Raw” HTTP
	8.11 Wrapping Up
Chapter 9: Time and Time Keeping
	9.1 Background
	9.2 Sources of Time
	9.3 Definitions
	9.4 Encoding Time
		9.4.1 REPRESENTING TIME ZONES
	9.5 clock v0.1.0: Teaching an application how to tell the time
	9.6  clock v0.1.1: Formatting timestamps to comply with ISO 8601 and email standards
		9.6.1 REFACTORING THE CLOCK V0.1.0 CODE TO SUPPORT WIDER ARCHITECTURE
		9.6.2 FORMATTING THE TIME AS A UNIX TIMESTAMP OR A FORMATTED STRING ACCORDING TO ISO 8601, RFC 2822, AND RFC 3339
		9.6.3 PROVIDING A FULL COMMAND-LINE INTERFACE
		9.6.4 THE FULL CLOCK V0.1.1 CODE LISTING
	9.7 clock v0.1.2: Setting the time
		9.7.1 COMMON BEHAVIOR
		9.7.2 SETTING THE TIME IN OPERATING SYSTEMS THAT USE LIBC
		LIBC IS TYPE-HEAVY AS IT USES MANY ALIASES
		NON-WINDOWS CLOCK CODE
		9.7.3 SETTING THE TIME ON MS WINDOWS
		WINDOWS API INTEGER TYPES
		REPRESENTING THE TIME IN WINDOWS
		WINDOWS CLOCK CODE
		9.7.4 CLOCK V0.1.2 FULL CODE LISTING
	9.8 Improving error handling
	9.9 clock v0.1.3 Resolving differences between clocks with the Network Time Protocol (NTP)
	9.9 clock v0.1.3 Resolving differences between clocks with the Network Time Protocol (NTP)
		9.9.1 SENDING NTP REQUESTS AND INTERPRETING RESPONSES
		9.9.2 ADJUSTING THE LOCAL TIME AS A RESULT OF THE SERVER’S RESPONSE
		9.9.3 CONVERTING BETWEEN TIME REPRESENTATIONS THAT USE DIFFERENT PRECISIONS AND EPOCHS
		9.9.4 CLOCK V0.1.3 FULL CODE LISTING
	9.10 Summary
Chapter 10: Processes, Threads and Containers
	10.1 Anonymous Functions
	10.2 Spawning Threads
		10.2.1 WHAT DOES IT MEAN TO "JOIN" THREADS?
		10.2.2 CREATING MORE THREADS TAKES ALMOST NO TIME AT ALL
		10.2.3 EFFECT OF SPAWNING MANY THREADS
		YIELDING CONTROL WITH THREAD::YIELD_NOW()
		10.2.4 SHARED VARIABLE
	10.3 Closures (||{}) vs functions and methods (fn)
	10.4 Procedurally generated avatars from a multi-threaded parser and code generator
		10.4.1 HOW TO RUN RENDER-HEX AND ITS INTENDED OUTPUT
		10.4.2 SINGLE-THREADED RENDER-HEX OVERVIEW
		INPUT PARSING
		INTERPRET INSTRUCTIONS
		GENERATING AN SVG
		SOURCE CODE FOR THE SINGLE-THREADED VERSION OF RENDER-HEX
		10.4.3 SPAWNING A THREAD PER LOGICAL TASK
		USING A FUNCTIONAL PROGRAMMING STYLE
		USING A PARALLEL ITERATOR
		10.4.4 USING A THREAD POOL AND TASK QUEUE
		ONE-WAY COMMUNICATION
		WHAT CAN BE SENT THROUGH A CHANNEL?
		TWO-WAY COMMUNICATION
		IMPLEMENTING A TASK QUEUE
	10.5 Concurrency and task virtualization
		10.5.1 THREADS
		10.5.2 WHAT IS A CONTEXT SWITCH?
		10.5.3 PROCESSES
		10.5.4 WEB ASSEMBLY
		10.5.5 CONTAINERS
		10.5.6 WHY USE AN OPERATING SYSTEM AT ALL?
	10.6 What you have learned
Chapter 11: Kernel
	11.1 A fledgling operating system (FledgeOS)
		11.1.1 SETTING UP A DEVELOPMENT ENVIRONMENT FOR DEVELOPING AN OPERATING SYSTEM KERNEL
		11.1.2 FLEDGEOS PROJECT STRUCTURE
		11.1.3 A MINIMAL OPERATING SYSTEM KERNEL
		11.1.4 PANIC HANDLING
		11.1.5 WRITING TO THE SCREEN WITH VGA-COMPATIBLE TEXT MODE
		11.1.6 _START(), THE "MAIN()" FUNCTION FOR FLEDGEOS
		11.1.7 BEING POWER CONSCIOUS BY INTERACTING WITH THE CPU DIRECTLY
		11.1.8 HANDLING EXCEPTIONS PROPERLY, ALMOST
	11.2 Nice output
		11.2.1 CONTROLLING THE IN-MEMORY REPRESENTATION OF ENUMS
		11.2.2 WHY USE ENUMS?
		11.2.3 CREATING A TYPE THAT CAN “PRINT” TO THE VGA FRAME BUFFER
		11.2.4 PRINTING TO THE SCREEN
		11.2.5 FULL CODE LISTING OF FLEDGEOS WITH PRINTING ENABLED
	11.3 Implementing a panic handler that reports the error to the user
		11.3.1 RE-IMPLEMENTING PANIC() BY MAKING USE OF CORE::FMT::WRITE
		11.3.2 IMPLEMENTING CORE::FMT::WRITE
		11.3.3 FULL CODE LISTING FOR FLEDGEOS WITH USER-FRIENDLY PANIC HANDLING
	11.4 Summing Up
Chapter 12: Signals, Interrupts and Exceptions
	12.1 Disambiguating several related terms
	12.2 Avoiding writing code by relying on the default signal handling behavior
		12.2.1 USING SIGSTOP AND SIGCONT TO SUSPEND AND RESUME A PROGRAM’S OPERATION
		12.2.2 LISTING ALL SIGNALS SUPPORTED BY THE OPERATING SYSTEM
	12.3 Handling signals with custom actions
		12.3.1 GLOBAL VARIABLES IN RUST
		12.3.2 USING A GLOBAL VARIABLE TO INDICATE THAT SHUTDOWN HAS BEEN INITIATED
	12.4 Sending application-defined signals
		12.4.1 UNDERSTANDING FUNCTION POINTERS AND THEIR SYNTAX
	12.5 Ignoring signals
	12.6 Shutting down from deeply nested call stacks
		12.6.1 SETTING UP INTRINSICS IN A PROGRAM
		WHAT IS AN INTRINSIC FUNCTION?
		WHAT IS LLVM?
		12.6.2 CASTING A POINTER TO ANOTHER TYPE
		12.6.3 RUNNING THE LINUX-SPECIFIC CODE FROM LISTING 12.23 IN OTHER OPERATING SYSTEMS VIA DOCKER
		12.6.4 COMPILING THE CODE
	12.7 A note on applying these techniques to platforms without signals
	12.8 Revising exceptions
	12.9 Summary




نظرات کاربران