Skip to content

Commit 4bc39e5

Browse files
authored
Merge pull request #88 from sidristij/cover
Chinese and new structure
2 parents 2cf7993 + 794fd31 commit 4bc39e5

File tree

5 files changed

+133
-89
lines changed

5 files changed

+133
-89
lines changed

Readme.md

+12-89
Original file line numberDiff line numberDiff line change
@@ -1,89 +1,12 @@
1-
![CLR Book](./bin/BookCover.png)
2-
3-
# О книге (rus)
4-
5-
Эта книга задумана мной как максимально полное описание работы .NET CLR, и частично - .NET Framework и призвана в первую очередь заставить посмотреть читателя на его внутреннюю структуру под несколько другим углом: не так, как это делается обычно. Связано это в первую очередь с утверждением, которое может показаться многим очень спорным: любой разработчик обязан пройти школу C/C++. Почему? Да потому что из высокоуровневых эти языки наиболее близки к процессору, и программируя на них начинаешь чувствовать работу программы сильнее. Однако, понимая, что мир устроен несколько иначе и у нас зачастую нет никакого времени изучать то, чем мы не будем напрямую пользоваться, я и решил написать эту книгу, в которой объяснение всех вопросов идет с более глубокой чем обычно - позиции и с более сложными или же попросту альтернативными примерами. Которые, помимо своей стандартной миссии - на самом простом коде показать как работает тот или иной функционал, сделать реверанс в альтернативную реальность, показав что все сильно сложнее чем может показаться изначально. Зачем? Чтобы и у вас возникло чувство понимания работы CLR до последнего винтика.
6-
7-
**Если вы хотите показать, что книга вам нравится или выразить благодарность, ставьте звезду проекту, делайте fork и создавайте Pull Requests!**
8-
9-
*автор, Станислав Сидристый*
10-
11-
# Table of contents
12-
13-
1. Common Language Runtime
14-
2. Memory management basics: user layer
15-
1. Heap basics
16-
1. Thread stack
17-
2. [RefTypes, ValueTypes, Boxing & Unboxing](./en/ReferenceTypesVsValueTypes.md)
18-
3. Memory, Span
19-
4. Types and objects structure
20-
5. Small Objects Heap
21-
6. Large Objects Heap
22-
7. Garbage Collection
23-
8. Statics
24-
3. Memory management layer: how CLR work
25-
1. Small Objects Heap detailed
26-
1. Sample: getting memory dump, pinned objects
27-
2. Large Objects Heap
28-
1. Sample: getting slow heap and how to avoid this
29-
3. Garbage Collection
30-
1. Mark & Sweep
31-
2. Optimizations
32-
3. Finalization
33-
4. [IDisposable: Disposable Design Principle](./en/LifetimeManagement/2-Disposable.md)
34-
4. Commands flow
35-
1. Application Domains
36-
1. Introduction
37-
2. Isolation
38-
3. Security model
39-
2. Exceptional situations
40-
1. Introduction to exceptional situations
41-
2. Architecture
42-
3. Exceptions events
43-
4. Types of exceptional situations
44-
45-
# Содержание
46-
47-
1. Common Language Runtime
48-
2. Основы менеджмента памяти: пользовательский слой
49-
1. [Heap basics](./ru/MemoryManagementBasics.md)
50-
2. [Стек потока](./ru/ThreadStack.md)
51-
3. [RefTypes, ValueTypes, Boxing & Unboxing](./ru/ReferenceTypesVsValueTypes.md)
52-
4. [Memory, Span](./ru/MemorySpan.md)
53-
5. [Структура объектов в памяти](./ru/ObjectsStructure.md)
54-
6. Small Objects Heap
55-
7. Large Objects Heap
56-
8. Garbage Collection
57-
9. Statics
58-
3. Слой управления памятью: как работает CLR
59-
1. Подробно про Small Objects Heap
60-
1. Пример: дамп памяти, влияние pinned objects на аллокацию
61-
2. Large Objects Heap
62-
1. Пример: как легко испортить кучу, как этого избегать
63-
3. Garbage Collection
64-
1. Mark & Sweep
65-
2. Оптимизация поколений
66-
3. Финализация
67-
4. Проблемы, связанные с GC и финализацией
68-
5. [Шаблон Disposable (Disposable Design Principle)](./ru/LifetimeManagement/2-Disposable.md)
69-
5. [Шаблон Lifetime](./ru/LifetimeManagement/3-Lifetime.md)
70-
4. Поток исполнения команд
71-
1. Домены приложений
72-
1. [Введение в домены приложений](./ru/AppDomains/1-AppDomains-Intro.md)
73-
2. [Изоляция](./ru/AppDomains/2-AppDomains-Isolation.md)
74-
3. [Модель безопасности](./ru/AppDomains/3-AppDomains-Security.md)
75-
2. Исключительные ситуации
76-
1. [Введение в исключительные ситуации](./ru/ExceptionalFlow/1-Exceptions-Intro.md)
77-
2. [Архитектура исключительной ситуации](./ru/ExceptionalFlow/2-Exceptions-Architecture.md)
78-
3. [События об исключительных ситуациях](./ru/ExceptionalFlow/3-Exceptions-Events.md)
79-
4. [Виды исключительных ситуаций](./ru/ExceptionalFlow/4-Exceptions-Types.md)
80-
81-
# Лицензия
82-
83-
Находится в файле [LICENSE](LICENSE)
84-
85-
# Благодарности
86-
87-
Благодарю всех, кто внес вклад как в виде хороших комментариев так и в виде правок ошибок в словах и грамматике. С вами книга становится более удобной и легкой для прочтения.
88-
89-
Также благодарю всех тех, кто делал pull requests на github а также давал хорошие комментарии и советы - на habrahabr.ru, где производилась первичная вычитка некоторых текстов.
1+
## This book is available in English, Русском and 中文:
2+
3+
- If you want to show that you like this book or to express your gratitude to author, Star this project, Fork it and Pull Requests to it.
4+
- Если вы хотите показать, что книга вам нравится или выразить благодарность, ставьте звезду проекту, делайте fork и создавайте Pull Requests!
5+
- 如果你想表明你喜欢这本书或者表达你对作者的感激之情,点击一个星星。
6+
7+
Cover | From Author, Stanislav Sidristij
8+
-------|-----
9+
[![CLR Book](./bin/BookCover.png)](./en/readme.md) | This book was thought as a full description of how .NET CLR and to some extent .NET Framework function. I tried to draw reader's attention to their internals from a different, unusual point of view. Primarily, it is caused by statement — quite disputable — that any software developer must know C/C++. Why? The reason is that among all high-level languages these are the nearest to the CPU, and if you build your program in these languages you feel better how it runs. However, our world looks different than we expect and we often have no time to learn things we won't use; that's why I decided to write this book where issues are explained deeper than usual and with a more intricate or alternative examples. Beyond their standard goal — to show a specific functionality with a simple code — these examples pave the way to alternative reality by showing that things may turn out to be more complicated than they seem. With that in mind, you will feel how every single cog works in CLR. If you want to show that you like this book or to express your gratitude to author, star this project, fork it and pull requests to it.
10+
[![CLR Book](./bin/BookCover-ru.png)](./ru/readme.md) | Эта книга задумана мной как максимально полное описание работы .NET CLR, и частично - .NET Framework и призвана в первую очередь заставить посмотреть читателя на его внутреннюю структуру под несколько другим углом: не так, как это делается обычно. Связано это в первую очередь с утверждением, которое может показаться многим очень спорным: любой разработчик обязан пройти школу C/C++. Почему? Да потому что из высокоуровневых эти языки наиболее близки к процессору, и программируя на них начинаешь чувствовать работу программы сильнее. Однако, понимая, что мир устроен несколько иначе и у нас зачастую нет никакого времени изучать то, чем мы не будем напрямую пользоваться, я и решил написать эту книгу, в которой объяснение всех вопросов идет с более глубокой чем обычно - позиции и с более сложными или же попросту альтернативными примерами. Которые, помимо своей стандартной миссии - на самом простом коде показать как работает тот или иной функционал, сделать реверанс в альтернативную реальность, показав что все сильно сложнее чем может показаться изначально. Зачем? Чтобы и у вас возникло чувство понимания работы CLR до последнего винтика
11+
[![CLR Book](./bin/BookCover-ch.png)](./ch/readme.md) | 本书是我对.NET CLR工作的最全面描述,部分是.NET Framework,主要是为了让读者从一个稍微不同的角度看待它的内部结构:不是通常的方式。这主要是因为这个声明对许多人来说似乎很有争议:任何开发人员都必须通过C / C ++学校。为什么呢?是的,由于更高级别的语言,这些语言最接近处理器,并且在其中编程,您开始感觉到程序的工作更强大。然而,我意识到这个世界有些不同,而且我们经常没有时间研究我们不会直接使用的东西,所以我决定写这本书,其中所有问题的解释来自比平时更深的位置,而且更复杂或者只是替代的例子。除了他们的标准任务之外 - 在最简单的代码上,展示这个或那个功能是如何工作的,对一个替代现实做出一种屈膝的态度,表明一切都比最初看起来要复杂得多。为什么呢?这样你就能理解CLR到最后一个螺丝的工作
12+
wwwwwwwwwwwwwwwwwwwwwwwwwww|

bin/BookCover-ch.png

1.19 MB
Loading

ch/readme.md

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
![](../bin/BookCover-ch.png)
2+
3+
4+
# Table of contents
5+
6+
1. Common Language Runtime
7+
2. Memory management basics: user layer
8+
1. Heap basics
9+
1. Thread stack
10+
2. [RefTypes, ValueTypes, Boxing & Unboxing](./ReferenceTypesVsValueTypes.md)
11+
3. [Memory, Span](./MemorySpan.md)
12+
4. Types and objects structure
13+
5. Small Objects Heap
14+
6. Large Objects Heap
15+
7. Garbage Collection
16+
8. Statics
17+
3. Memory management layer: how CLR work
18+
1. Small Objects Heap detailed
19+
1. Sample: getting memory dump, pinned objects
20+
2. Large Objects Heap
21+
1. Sample: getting slow heap and how to avoid this
22+
3. Garbage Collection
23+
1. Mark & Sweep
24+
2. Optimizations
25+
3. Finalization
26+
4. [IDisposable: Disposable Design Principle](./LifetimeManagement/2-Disposable.md)
27+
4. Commands flow
28+
1. Application Domains
29+
1. Introduction
30+
2. Isolation
31+
3. Security model
32+
2. Exceptional situations
33+
1. Introduction to exceptional situations
34+
2. Architecture
35+
3. Exceptions events
36+
4. Types of exceptional situations
37+
38+
# License
39+
40+
You can find here: [LICENSE](../LICENSE)

en/readme.md

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
![](../bin/BookCover.png)
2+
3+
4+
# Table of contents
5+
6+
1. Common Language Runtime
7+
2. Memory management basics: user layer
8+
1. Heap basics
9+
1. Thread stack
10+
2. [RefTypes, ValueTypes, Boxing & Unboxing](./ReferenceTypesVsValueTypes.md)
11+
3. [Memory, Span](./MemorySpan.md)
12+
4. Types and objects structure
13+
5. Small Objects Heap
14+
6. Large Objects Heap
15+
7. Garbage Collection
16+
8. Statics
17+
3. Memory management layer: how CLR work
18+
1. Small Objects Heap detailed
19+
1. Sample: getting memory dump, pinned objects
20+
2. Large Objects Heap
21+
1. Sample: getting slow heap and how to avoid this
22+
3. Garbage Collection
23+
1. Mark & Sweep
24+
2. Optimizations
25+
3. Finalization
26+
4. [IDisposable: Disposable Design Principle](./LifetimeManagement/2-Disposable.md)
27+
4. Commands flow
28+
1. Application Domains
29+
1. Introduction
30+
2. Isolation
31+
3. Security model
32+
2. Exceptional situations
33+
1. Introduction to exceptional situations
34+
2. Architecture
35+
3. Exceptions events
36+
4. Types of exceptional situations
37+
38+
# License
39+
40+
You can find here: [LICENSE](../LICENSE)

ru/readme.md

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
![](../bin/BookCover-ru.png)
2+
3+
# Содержание
4+
5+
1. Common Language Runtime
6+
2. Основы менеджмента памяти: пользовательский слой
7+
1. [Heap basics](./MemoryManagementBasics.md)
8+
2. [Стек потока](./ThreadStack.md)
9+
3. [RefTypes, ValueTypes, Boxing & Unboxing](./ReferenceTypesVsValueTypes.md)
10+
4. [Memory, Span](./MemorySpan.md)
11+
5. [Структура объектов в памяти](./ObjectsStructure.md)
12+
6. Small Objects Heap
13+
7. Large Objects Heap
14+
8. Garbage Collection
15+
9. Statics
16+
3. Слой управления памятью: как работает CLR
17+
1. Подробно про Small Objects Heap
18+
1. Пример: дамп памяти, влияние pinned objects на аллокацию
19+
2. Large Objects Heap
20+
1. Пример: как легко испортить кучу, как этого избегать
21+
3. Garbage Collection
22+
1. Mark & Sweep
23+
2. Оптимизация поколений
24+
3. Финализация
25+
4. Проблемы, связанные с GC и финализацией
26+
5. [Шаблон Disposable (Disposable Design Principle)](./LifetimeManagement/2-Disposable.md)
27+
5. [Шаблон Lifetime](./LifetimeManagement/3-Lifetime.md)
28+
4. Поток исполнения команд
29+
1. Домены приложений
30+
1. [Введение в домены приложений](./AppDomains/1-AppDomains-Intro.md)
31+
2. [Изоляция](./AppDomains/2-AppDomains-Isolation.md)
32+
3. [Модель безопасности](./AppDomains/3-AppDomains-Security.md)
33+
2. Исключительные ситуации
34+
1. [Введение в исключительные ситуации](./ExceptionalFlow/1-Exceptions-Intro.md)
35+
2. [Архитектура исключительной ситуации](./ExceptionalFlow/2-Exceptions-Architecture.md)
36+
3. [События об исключительных ситуациях](./ExceptionalFlow/3-Exceptions-Events.md)
37+
4. [Виды исключительных ситуаций](./ExceptionalFlow/4-Exceptions-Types.md)
38+
39+
# Лицензия
40+
41+
Находится в файле [LICENSE](LICENSE)

0 commit comments

Comments
 (0)