Руководство - Как создать красивое оглавление в раздаче книги

Страницы:  1
Ответить
 

ia tut mimo prohodil

Стаж: 13 лет

Сообщений: 19


ia tut mimo prohodil · 02-Июн-24 13:39 (7 месяцев назад, ред. 02-Июн-24 14:50)

У многих возникает проблема с красивым оформлением оглавления раздачи.

Для решения проблемы Вам понадобится текстовый редактор Notepad++ и редактор кода Visual Studio Code и Python 3.
Если В вашей книге есть распознанное оглавление, то скопируйте его в текстовый редактор - notepad++.
Создайте разделитель номера страницы и названия страницы, я чаще всего использую разделитель ТАБ, а также удалите переносы строк там, где раздел разбит на две строки.

Разделение номера страницы и его названия, в виде повторяющихся точек\звёздочек удалите.

Сохраните файл в папке компьютера.
Вызовите редактор кода, я использую Visual Studio Code.
Воспользуйтесь примерами моего кода:
пример обработки оглавления из раздачи https://rutr.life/forum/viewtopic.php?t=6520962
исходный текст
Предисловие 5
Благодарности 7
Об этой книге 9
Для кого эта книга 10
Из чего состоит эта книга: дорожная карта 10
Об этой книге 11
О коде 12
Требования к программному/аппаратному обеспечению 14
Форум для обсуждений liveBook 14
Об авторе 16
Об иллюстрации на обложке 17
1. Числовые типы 18
Упражнение 1. Игра «Угадай число» 20
Упражнение 2. Сложение чисел 30
Упражнение 3. Время выполнения 34
Упражнение 4. Шестнадцатеричный вывод 39
2. Строки 44
Упражнение 5. Поросячья латынь 46
Упражнение 6. Предложения на поросячьей латыни 52
Упражнение 7. Убби-Дубби 55
Упражнение 8. Сортировка строк 59
3. Списки и кортежи 63
Упражнение 9. Первый-последний 66
Упражнение 10. Суммируем что угодно 77
Упражнение 11. Упорядочение имен по алфавиту 81
Упражнение 12. Слово с наибольшим количеством повторяющихся букв 91
Упражнение 13. Печать записей кортежей 96
4. Словари и множества 101
Упражнение 14. Ресторан 107
Упражнение 15. Дождевые осадки 111
Упражнение 16. Dictdiff 119
5. Файлы 129
Упражнение 18. Последняя строка 132
Упражнение 19. Создаем словарь из /etc/passwd 139
Упражнение 20. Счетчик слов 146
Упражнение 21. Самое длинное слово в файле 150
Упражнение 22. Чтение и запись в CSV 156
Упражнение 23. JSON 162
Упражнение 24. Переворачиваем строки 168
6. Функции 173
Упражнение 25. Генератор XML 178
Упражнение 26. Калькулятор с префиксной нотацией 188
Упражнение 27. Генератор паролей 195
7. Функциональное программирование с генераторами 201
Упражнение 28. Объединение чисел 205
Упражнение 29. Сложение чисел 216
Упражнение 30. Сглаживание списка 219
Упражнение 31. Перевод содержимого файла на поросячью латынь 222
Упражнение 32. Переворачиваем словарь 225
Упражнение 33. Преобразование переменных 228
Упражнение 34 231
Упражнение 35a. Гематрия, часть 1 235
Упражнение 35b. Гематрия, часть 2 238
8. Модули и пакеты 243
Упражнение 36. Налог с продаж 250
Упражнение 37. Меню 258
9. Объекты 267
Упражнение 38. Ложка для мороженого 273
Упражнение 39. Чашка для мороженого 282
Упражнение 40. Ограничения для чаши 294
Упражнение 41. Чашка побольше 303
Упражнение 42. FlexibleDict 307
Упражнение 43. Животные 312
Упражнение 44. Клетки 318
Упражнение 45. Зоопарк 323
10. Итераторы и генераторы 329
Упражнение 46. MyEnumerate 336
Упражнение 47. Круг 341
Упражнение 48. Все строки, все файлы 345
Упражнение 49. Сколько времени прошло 348
Упражнение 50. MyChain 352
Код на python для обработки
Код:
# Объявление пустого списка для хранения обработанных строк
outline = []
# Указание пути к файлу
fname = r'H:/Tor/Books/Python/новый 2.txt'
# Открытие файла в режиме чтения с указанием кодировки
with open(fname, 'r', encoding='utf-8') as inf:
    # Считывание всех строк из файла и сохранение их в списке lines
    lines = inf.readlines()
# Обработка каждой строки из файла
for line in lines:
    # Удаление пробельных символов в начале и конце строки и разбивка строки по табуляции
    parts = line.strip().split('\t')
    # Если в строке три элемента, объединяем первые два элемента и оставляем последний
    if len(parts) == 3:
        combined = f"{parts[0]} {parts[1]}"
        outline.append([combined, parts[2]])
    else:
        outline.append(parts)
# Обработка элементов списка outline для формирования отформатированных строк
for item in outline:
    first_part, second_part = item[0], item[1]
    total_length = len(first_part + second_part)
    # Определение количества точек для заполнения промежутка до 100 символов
    dots = '.' * (100 - total_length)
    # Вывод строки с отступом или без в зависимости от первого символа
    if first_part[0].isdigit():
        print('')  # Добавление пустой строки перед выводом строки, если первый символ - цифра
        print(f"{first_part}{'.' * (74 - len(first_part + second_part))}{second_part}")
    else:
        print(f"      {first_part}{'.' * (68 - len(first_part + second_part))}{second_part}")
Получившийся результат, который нужно заключинь в тэг PRE или NFO на торрент сайте
      Предисловие........................................................5
Благодарности......................................................7
Об этой книге......................................................9
Для кого эта книга................................................10
Из чего состоит эта книга: дорожная карта.........................10
Об этой книге.....................................................11
О коде............................................................12
Требования к программному/аппаратному обеспечению.................14
Форум для обсуждений liveBook.....................................14
Об авторе.........................................................16
Об иллюстрации на обложке.........................................17
1. Числовые типы........................................................18
Упражнение 1. Игра «Угадай число».................................20
Упражнение 2. Сложение чисел......................................30
Упражнение 3. Время выполнения....................................34
Упражнение 4. Шестнадцатеричный вывод.............................39
2. Строки...............................................................44
Упражнение 5. Поросячья латынь....................................46
Упражнение 6. Предложения на поросячьей латыни....................52
Упражнение 7. Убби-Дубби..........................................55
Упражнение 8. Сортировка строк....................................59
3. Списки и кортежи.....................................................63
Упражнение 9. Первый-последний....................................66
Упражнение 10. Суммируем что угодно...............................77
Упражнение 11. Упорядочение имен по алфавиту......................81
Упражнение 12. Слово с наибольшим количеством повторяющихся букв..91
Упражнение 13. Печать записей кортежей............................96
4. Словари и множества.................................................101
Упражнение 14. Ресторан..........................................107
Упражнение 15. Дождевые осадки...................................111
Упражнение 16. Dictdiff..........................................119
5. Файлы...............................................................129
Упражнение 18. Последняя строка..................................132
Упражнение 19. Создаем словарь из /etc/passwd....................139
Упражнение 20. Счетчик слов......................................146
Упражнение 21. Самое длинное слово в файле.......................150
Упражнение 22. Чтение и запись в CSV.............................156
Упражнение 23. JSON..............................................162
Упражнение 24. Переворачиваем строки.............................168
6. Функции.............................................................173
Упражнение 25. Генератор XML.....................................178
Упражнение 26. Калькулятор с префиксной нотацией.................188
Упражнение 27. Генератор паролей.................................195
7. Функциональное программирование с генераторами......................201
Упражнение 28. Объединение чисел.................................205
Упражнение 29. Сложение чисел....................................216
Упражнение 30. Сглаживание списка................................219
Упражнение 31. Перевод содержимого файла на поросячью латынь.....222
Упражнение 32. Переворачиваем словарь............................225
Упражнение 33. Преобразование переменных.........................228
Упражнение 34....................................................231
Упражнение 35a. Гематрия, часть 1................................235
Упражнение 35b. Гематрия, часть 2................................238
8. Модули и пакеты.....................................................243
Упражнение 36. Налог с продаж....................................250
Упражнение 37. Меню..............................................258
9. Объекты.............................................................267
Упражнение 38. Ложка для мороженого..............................273
Упражнение 39. Чашка для мороженого..............................282
Упражнение 40. Ограничения для чаши..............................294
Упражнение 41. Чашка побольше....................................303
Упражнение 42. FlexibleDict......................................307
Упражнение 43. Животные..........................................312
Упражнение 44. Клетки............................................318
Упражнение 45. Зоопарк...........................................323
10. Итераторы и генераторы.............................................329
Упражнение 46. MyEnumerate.......................................336
Упражнение 47. Круг..............................................341
Упражнение 48. Все строки, все файлы.............................345
Упражнение 49. Сколько времени прошло............................348
Упражнение 50. MyChain...........................................352
пример обработки оглавления из раздачи https://rutr.life/forum/viewtopic.php?t=6535150
исходные строки
Preface xv
Acknowledgments xxiii
About the Author xxvii
1 The Performance Evolution of Java: The Language and the Virtual
Machine 1
A New Ecosystem Is Born 2
A Few Pages from History 2
Understanding Java HotSpot VM and Its Compilation Strategies 3
The Evolution of the HotSpot Execution Engine 3
Interpreter and JIT Compilation 5
Print Compilation 5
Tiered Compilation 6
Client and Server Compilers 7
Segmented Code Cache 7
Adaptive Optimization and Deoptimization 9
HotSpot Garbage Collector: Memory Management Unit 13
Generational Garbage Collection, Stop-the-World, and Concurrent
Algorithms 13
Young Collections and Weak Generational Hypothesis 14
Old-Generation Collection and Reclamation Triggers 16
Parallel GC Threads, Concurrent GC Threads, and Their
Configuration 16
The Evolution of the Java Programming Language and Its Ecosystem: A
Closer Look 18
Java 1.1 to Java 1.4.2 (J2SE 1.4.2) 18
Java 5 (J2SE 5.0) 19
Java 6 (Java SE 6) 23
Java 7 (Java SE 7) 25
Java 8 (Java SE 8) 30
Java 9 (Java SE 9) to Java 16 (Java SE 16) 32
Java 17 (Java SE 17) 40
Embracing Evolution for Enhanced Performance 42
2 Performance Implications of Java’s Type System Evolution 43
Java’s Primitive Types and Literals Prior to J2SE 5.0 44
Java’s Reference Types Prior to J2SE 5.0 45
Java Interface Types 45
Java Class Types 47
Java Array Types 48
Java’s Type System Evolution from J2SE 5.0 until Java SE 8 49
Enumerations 49
Annotations 50
Other Noteworthy Enhancements (Java SE 8) 51
Java’s Type System Evolution: Java 9 and Java 10 52
Variable Handle Typed Reference 52
Java’s Type System Evolution: Java 11 to Java 17 55
Switch Expressions 55
Sealed Classes 56
Records 57
Beyond Java 17: Project Valhalla 58
Performance Implications of the Current Type System 58
The Emergence of Value Classes: Implications for Memory
Management 63
Redefining Generics with Primitive Support 64
Exploring the Current State of Project Valhalla 65
Early Access Release: Advancing Project Valhalla’s Concepts 66
Use Case Scenarios: Bringing Theory to Practice 67
A Comparative Glance at Other Languages 67
Conclusion 68
3 From Monolithic to Modular Java: A Retrospective and Ongoing
Evolution 69
Introduction 69
Understanding the Java Platform Module System 70
Demystifying Modules 70
Modules Example 71
Compilation and Run Details 72
Introducing a New Module 73
From Monolithic to Modular: The Evolution of the JDK 78
Continuing the Evolution: Modular JDK in JDK 11 and Beyond 78
Implementing Modular Services with JDK 17 78
Service Provider 79
Service Consumer 79
A Working Example 80
Implementation Details 81
JAR Hell Versioning Problem and Jigsaw Layers 83
Working Example: JAR Hell 85
Implementation Details 86
Open Services Gateway Initiative 91
OSGi Overview 91
Similarities 91
Differences 92
Introduction to Jdeps, Jlink, Jdeprscan, and Jmod 93
Jdeps 93
Jdeprscan 94
Jmod 95
Jlink 96
Conclusion 96
Performance Implications 97
Tools and Future Developments 97
Embracing the Modular Programming Paradigm 97
4 The Unified Java Virtual Machine Logging Interface 99
The Need for Unified Logging 99
Unification and Infrastructure 100
Performance Metrics 101
Tags in the Unified Logging System 101
Log Tags 101
Specific Tags 102
Identifying Missing Information 102
Diving into Levels, Outputs, and Decorators 103
Levels 103
Decorators 104
Outputs 105
Practical Examples of Using the Unified Logging System 107
Benchmarking and Performance Testing 108
Tools and Techniques 108
Optimizing and Managing the Unified Logging System 109
Asynchronous Logging and the Unified Logging System 110
Benefits of Asynchronous Logging 110
Implementing Asynchronous Logging in Java 110
Best Practices and Considerations 111
Understanding the Enhancements in JDK 11 and JDK 17 113
JDK 11 113
JDK 17 113
Conclusion 113
5 End-to-End Java Performance Optimization: Engineering Techniques and
Micro-benchmarking with JMH 115
Introduction 115
Performance Engineering: A Central Pillar of Software Engineering 116
Decoding the Layers of Software Engineering 116
Performance: A Key Quality Attribute 117
Understanding and Evaluating Performance 117
Defining Quality of Service 117
Success Criteria for Performance Requirements 118
Metrics for Measuring Java Performance 118
Footprint 119
Responsiveness 123
Throughput 123
Availability 124
Digging Deeper into Response Time and Availability 125
The Mechanics of Response Time with an Application Timeline 126
The Role of Hardware in Performance 128
Decoding Hardware–Software Dynamics 129
Performance Symphony: Languages, Processors, and Memory
Models 131
Enhancing Performance: Optimizing the Harmony 132
Memory Models: Deciphering Thread Dynamics and Performance
Impacts 133
Concurrent Hardware: Navigating the Labyrinth 136
Order Mechanisms in Concurrent Computing: Barriers, Fences, and
Volatiles 138
Atomicity in Depth: Java Memory Model and Happens-Before
Relationship 139
Concurrent Memory Access and Coherency in Multiprocessor
Systems 141
NUMA Deep Dive: My Experiences at AMD, Sun Microsystems,
and Arm 141
Bridging Theory and Practice: Concurrency, Libraries, and Advanced
Tooling 145
Performance Engineering Methodology: A Dynamic and Detailed
Approach 145
Experimental Design 146
Bottom-Up Methodology 146
Top-Down Methodology 148
Building a Statement of Work 149
The Performance Engineering Process: A Top-Down Approach 150
Building on the Statement of Work: Subsystems Under
Investigation 151
Key Takeaways 158
The Importance of Performance Benchmarking 158
Key Performance Metrics 159
The Performance Benchmark Regime: From Planning to Analysis 159
Benchmarking JVM Memory Management: A Comprehensive Guide 161
Why Do We Need a Benchmarking Harness? 164
The Role of the Java Micro-Benchmark Suite in Performance
Optimization 165
Getting Started with Maven 166
Writing, Building, and Running Your First Micro-benchmark in JMH 166
Benchmark Phases: Warm-Up and Measurement 168
Loop Optimizations and @OperationsPerInvocation 169
Benchmarking Modes in JMH 170
Understanding the Profilers in JMH 170
Key Annotations in JMH 171
JVM Benchmarking with JMH 172
Profiling JMH Benchmarks with perfasm 174
Conclusion 175
6 Advanced Memory Management and Garbage Collection in
OpenJDK 177
Introduction 177
Overview of Garbage Collection in Java 178
Thread-Local Allocation Buffers and Promotion-Local Allocation
Buffers 179
Optimizing Memory Access with NUMA-Aware Garbage Collection 181
Exploring Garbage Collection Improvements 183
G1 Garbage Collector: A Deep Dive into Advanced Heap
Management 184
Advantages of the Regionalized Heap 186
Optimizing G1 Parameters for Peak Performance 188
Z Garbage Collector: A Scalable, Low-Latency GC for Multi-terabyte
Heaps 197
Future Trends in Garbage Collection 210
Practical Tips for Evaluating GC Performance 212
Evaluating GC Performance in Various Workloads 214
Types of Transactional Workloads 214
Synthesis 215
Live Data Set Pressure 216
Understanding Data Lifespan Patterns 216
Impact on Different GC Algorithms 217
Optimizing Memory Management 217
7 Runtime Performance Optimizations: A Focus on Strings, Locks, and
Beyond 219
Introduction 219
String Optimizations 220
Literal and Interned String Optimization in HotSpot VM 221
String Deduplication Optimization and G1 GC 223
Reducing Strings’ Footprint 224
Enhanced Multithreading Performance: Java Thread Synchronization 236
The Role of Monitor Locks 238
Lock Types in OpenJDK HotSpot VM 238
Code Example and Analysis 239
Advancements in Java’s Locking Mechanisms 241
Optimizing Contention: Enhancements since Java 9 243
Visualizing Contended Lock Optimization: A Performance Engineering
Exercise 245
Synthesizing Contended Lock Optimization: A Reflection 256
Spin-Wait Hints: An Indirect Locking Improvement 257
Transitioning from the Thread-per-Task Model to More Scalable
Models 259
Traditional One-to-One Thread Mapping 260
Increasing Scalability with the Thread-per-Request Model 261
Reimagining Concurrency with Virtual Threads 265
Conclusion 270
8 Accelerating Time to Steady State with OpenJDK HotSpot VM 273
Introduction 273
JVM Start-up and Warm-up Optimization Techniques 274
Decoding Time to Steady State in Java Applications 274
Ready, Set, Start up! 274
Phases of JVM Start-up 275
Reaching the Application’s Steady State 276
An Application’s Life Cycle 278
Managing State at Start-up and Ramp-up 278
State During Start-up 278
Transition to Ramp-up and Steady State 281
Benefits of Efficient State Management 281
Class Data Sharing 282
Ahead-of-Time Compilation 283
GraalVM: Revolutionizing Java’s Time to Steady State 290
Emerging Technologies: CRIU and Project CRaC for Checkpoint/Restore
Functionality 292
Start-up and Ramp-up Optimization in Serverless and Other
Environments 295
Serverless Computing and JVM Optimization 296
Containerized Environments: Ensuring Swift Start-ups and Efficient
Scaling 297
GraalVM’s Present-Day Contributions 298
Key Takeaways 298
Boosting Warm-up Performance with OpenJDK HotSpot VM 300
Compiler Enhancements 300
Segmented Code Cache and Project Leyden Enhancements 303
The Evolution from PermGen to Metaspace: A Leap Forward Toward
Peak Performance 304
Conclusion 306
9 Harnessing Exotic Hardware: The Future of JVM Performance
Engineering 307
Introduction to Exotic Hardware and the JVM 307
Exotic Hardware in the Cloud 309
Hardware Heterogeneity 310
API Compatibility and Hypervisor Constraints 310
Performance Trade-offs 311
Resource Contention 311
Cloud-Specific Limitations 311
The Role of Language Design and Toolchains 312
Case Studies 313
LWJGL: A Baseline Example 314
Aparapi: Bridging Java and OpenCL 317
Project Sumatra: A Significant Effort 321
TornadoVM: A Specialized JVM for Hardware Accelerators 324
Project Panama: A New Horizon 327
Envisioning the Future of JVM and Project Panama 333
High-Level JVM-Language APIs and Native Libraries 333
Vector API and Vectorized Data Processing Systems 334
Accelerator Descriptors for Data Access, Caching, and Formatting 335
The Future Is Already Knocking at the Door! 335
Concluding Thoughts: The Future of JVM Performance Engineering 336
Index 337
пример кода на python для преобразования
Код:
import re #импорт модуля регулярных выражений
def find_number_start_index(s): # функция поиска индекса последнего пробела в строке
    # Используем регулярное выражение для поиска числа в конце строки
    match = re.search(r'\d+$', s)
    if match:
        return match.start()
    else:
        return None
def contains_digit(s): # функция поиска наличия в строке цифр
    return any(char.isdigit() for char in s)
# Объявление пустого списка для хранения обработанных строк
outline = []
# Указание пути к файлу
fname = r'С:/Books/new_text.txt' # тут должен быть указан путь к Вашему файлу
# Открытие файла в режиме чтения с указанием кодировки
with open(fname, 'r', encoding='utf-8') as inf:
    # Считывание всех строк из файла и сохранение их в списке lines
    lines = inf.readlines()
# Обработка каждой строки из файла
for line in lines:
    cl_line = line.rstrip() # использование rstrip() для удаления символов новой строки и пробелов справа
    length_line = len(cl_line)
    last_space = find_number_start_index(line)
    #вывод первых трёх строк без номеров страниц
    if contains_digit(cl_line) == False:
        print(cl_line[:last_space])
    # вывод на печать оглавлений
    elif cl_line[0][0].isalpha():
        print(' ' * 6 + cl_line[:last_space] + ('.' * (100 - length_line)) + cl_line[last_space:])
    # вывод на печать тем и разделов каждой главы
    else:
        print(cl_line[:last_space] + ('.' * (100 + 6 - length_line)) + cl_line[last_space:])
получившийся выравненный текст, который нужно поместить в скобочки pre или nfo
Preface xv
Acknowledgments xxiii
About the Author xxvii
1 The Performance Evolution of Java: The Language and the Virtual Machine ...............................1
A New Ecosystem Is Born ...........................................................................2
A Few Pages from History ..........................................................................2
Understanding Java HotSpot VM and Its Compilation Strategies ......................................3
The Evolution of the HotSpot Execution Engine .....................................................3
Interpreter and JIT Compilation ...................................................................5
Print Compilation .................................................................................5
Tiered Compilation ................................................................................6
Client and Server Compilers .......................................................................7
Segmented Code Cache ..............................................................................7
Adaptive Optimization and Deoptimization ..........................................................9
HotSpot Garbage Collector: Memory Management Unit ................................................13
Generational Garbage Collection, Stop-the-World, and Concurrent Algorithms .......................13
Young Collections and Weak Generational Hypothesis ...............................................14
Old-Generation Collection and Reclamation Triggers ...............................................16
Parallel GC Threads, Concurrent GC Threads, and Their Configuration ..............................16
The Evolution of the Java Programming Language and Its Ecosystem: A Closer Look ..................18
Java 1.1 to Java 1.4.2 (J2SE 1.4.2) ..............................................................18
Java 5 (J2SE 5.0) ................................................................................19
Java 6 (Java SE 6) ...............................................................................23
Java 7 (Java SE 7) ...............................................................................25
Java 8 (Java SE 8) ...............................................................................30
Java 9 (Java SE 9) to Java 16 (Java SE 16) .......................................................32
Java 17 (Java SE 17) .............................................................................40
Embracing Evolution for Enhanced Performance .....................................................42
2 Performance Implications of Java’s Type System Evolution .............................................43
Java’s Primitive Types and Literals Prior to J2SE 5.0 ............................................44
Java’s Reference Types Prior to J2SE 5.0 .........................................................45
Java Interface Types .............................................................................45
Java Class Types .................................................................................47
Java Array Types .................................................................................48
Java’s Type System Evolution from J2SE 5.0 until Java SE 8 .......................................49
Enumerations .....................................................................................49
Annotations ......................................................................................50
Other Noteworthy Enhancements (Java SE 8) ........................................................51
Java’s Type System Evolution: Java 9 and Java 10 .................................................52
Variable Handle Typed Reference ..................................................................52
Java’s Type System Evolution: Java 11 to Java 17 .................................................55
Switch Expressions ...............................................................................55
Sealed Classes ...................................................................................56
Records ..........................................................................................57
Beyond Java 17: Project Valhalla .................................................................58
Performance Implications of the Current Type System ..............................................58
The Emergence of Value Classes: Implications for Memory Management ...............................63
Redefining Generics with Primitive Support .......................................................64
Exploring the Current State of Project Valhalla ..................................................65
Early Access Release: Advancing Project Valhalla’s Concepts ......................................66
Use Case Scenarios: Bringing Theory to Practice ..................................................67
A Comparative Glance at Other Languages ..........................................................67
Conclusion .......................................................................................68
3 From Monolithic to Modular Java: A Retrospective and Ongoing Evolution ...............................69
Introduction .....................................................................................69
Understanding the Java Platform Module System ....................................................70
Demystifying Modules .............................................................................70
Modules Example ..................................................................................71
Compilation and Run Details ......................................................................72
Introducing a New Module .........................................................................73
From Monolithic to Modular: The Evolution of the JDK .............................................78
Continuing the Evolution: Modular JDK in JDK 11 and Beyond .......................................78
Implementing Modular Services with JDK 17 ........................................................78
Service Provider .................................................................................79
Service Consumer .................................................................................79
A Working Example ................................................................................80
Implementation Details ...........................................................................81
JAR Hell Versioning Problem and Jigsaw Layers ....................................................83
Working Example: JAR Hell ........................................................................85
Implementation Details ...........................................................................86
Open Services Gateway Initiative .................................................................91
OSGi Overview ....................................................................................91
Similarities .....................................................................................91
Differences ......................................................................................92
Introduction to Jdeps, Jlink, Jdeprscan, and Jmod ................................................93
Jdeps ............................................................................................93
Jdeprscan ........................................................................................94
Jmod .............................................................................................95
Jlink ............................................................................................96
Conclusion .......................................................................................96
Performance Implications .........................................................................97
Tools and Future Developments ....................................................................97
Embracing the Modular Programming Paradigm .......................................................97
4 The Unified Java Virtual Machine Logging Interface ...................................................99
The Need for Unified Logging .....................................................................99
Unification and Infrastructure ..................................................................100
Performance Metrics .............................................................................101
Tags in the Unified Logging System ..............................................................101
Log Tags ........................................................................................101
Specific Tags ...................................................................................102
Identifying Missing Information .................................................................102
Diving into Levels, Outputs, and Decorators .....................................................103
Levels ..........................................................................................103
Decorators ......................................................................................104
Outputs .........................................................................................105
Practical Examples of Using the Unified Logging System ..........................................107
Benchmarking and Performance Testing ............................................................108
Tools and Techniques ............................................................................108
Optimizing and Managing the Unified Logging System ..............................................109
Asynchronous Logging and the Unified Logging System .............................................110
Benefits of Asynchronous Logging ................................................................110
Implementing Asynchronous Logging in Java .......................................................110
Best Practices and Considerations ...............................................................111
Understanding the Enhancements in JDK 11 and JDK 17 .............................................113
JDK 11 ..........................................................................................113
JDK 17 ..........................................................................................113
Conclusion ......................................................................................113
5 End-to-End Java Performance Optimization: Engineering Techniques and Micro-benchmarking with JMH ....115
Introduction ....................................................................................115
Performance Engineering: A Central Pillar of Software Engineering ...............................116
Decoding the Layers of Software Engineering .....................................................116
Performance: A Key Quality Attribute ............................................................117
Understanding and Evaluating Performance ........................................................117
Defining Quality of Service .....................................................................117
Success Criteria for Performance Requirements ...................................................118
Metrics for Measuring Java Performance ..........................................................118
Footprint .......................................................................................119
Responsiveness ..................................................................................123
Throughput ......................................................................................123
Availability ....................................................................................124
Digging Deeper into Response Time and Availability ..............................................125
The Mechanics of Response Time with an Application Timeline .....................................126
The Role of Hardware in Performance .............................................................128
Decoding Hardware–Software Dynamics .............................................................129
Performance Symphony: Languages, Processors, and Memory Models ..................................131
Enhancing Performance: Optimizing the Harmony ...................................................132
Memory Models: Deciphering Thread Dynamics and Performance Impacts ..............................133
Concurrent Hardware: Navigating the Labyrinth ...................................................136
Order Mechanisms in Concurrent Computing: Barriers, Fences, and Volatiles .......................138
Atomicity in Depth: Java Memory Model and Happens-Before Relationship ...........................139
Concurrent Memory Access and Coherency in Multiprocessor Systems ................................141
NUMA Deep Dive: My Experiences at AMD, Sun Microsystems, and Arm ................................141
Bridging Theory and Practice: Concurrency, Libraries, and Advanced Tooling ......................145
Performance Engineering Methodology: A Dynamic and Detailed Approach ............................145
Experimental Design .............................................................................146
Bottom-Up Methodology ...........................................................................146
Top-Down Methodology ............................................................................148
Building a Statement of Work ....................................................................149
The Performance Engineering Process: A Top-Down Approach ........................................150
Building on the Statement of Work: Subsystems Under Investigation ...............................151
Key Takeaways ...................................................................................158
The Importance of Performance Benchmarking ......................................................158
Key Performance Metrics .........................................................................159
The Performance Benchmark Regime: From Planning to Analysis .....................................159
Benchmarking JVM Memory Management: A Comprehensive Guide .......................................161
Why Do We Need a Benchmarking Harness? ..........................................................164
The Role of the Java Micro-Benchmark Suite in Performance Optimization ..........................165
Getting Started with Maven ......................................................................166
Writing, Building, and Running Your First Micro-benchmark in JMH ................................166
Benchmark Phases: Warm-Up and Measurement .......................................................168
Loop Optimizations and @OperationsPerInvocation .................................................169
Benchmarking Modes in JMH .......................................................................170
Understanding the Profilers in JMH ..............................................................170
Key Annotations in JMH ..........................................................................171
JVM Benchmarking with JMH .......................................................................172
Profiling JMH Benchmarks with perfasm ...........................................................174
Conclusion ......................................................................................175
6 Advanced Memory Management and Garbage Collection in OpenJDK ........................................177
Introduction ....................................................................................177
Overview of Garbage Collection in Java ..........................................................178
Thread-Local Allocation Buffers and Promotion-Local Allocation Buffers ..........................179
Optimizing Memory Access with NUMA-Aware Garbage Collection .....................................181
Exploring Garbage Collection Improvements .......................................................183
G1 Garbage Collector: A Deep Dive into Advanced Heap Management .................................184
Advantages of the Regionalized Heap .............................................................186
Optimizing G1 Parameters for Peak Performance ...................................................188
Z Garbage Collector: A Scalable, Low-Latency GC for Multi-terabyte Heaps ........................197
Future Trends in Garbage Collection .............................................................210
Practical Tips for Evaluating GC Performance ....................................................212
Evaluating GC Performance in Various Workloads ..................................................214
Types of Transactional Workloads ................................................................214
Synthesis .......................................................................................215
Live Data Set Pressure ..........................................................................216
Understanding Data Lifespan Patterns ............................................................216
Impact on Different GC Algorithms ...............................................................217
Optimizing Memory Management ....................................................................217
7 Runtime Performance Optimizations: A Focus on Strings, Locks, and Beyond ............................219
Introduction ....................................................................................219
String Optimizations ............................................................................220
Literal and Interned String Optimization in HotSpot VM ..........................................221
String Deduplication Optimization and G1 GC .....................................................223
Reducing Strings’ Footprint .....................................................................224
Enhanced Multithreading Performance: Java Thread Synchronization ................................236
The Role of Monitor Locks .......................................................................238
Lock Types in OpenJDK HotSpot VM ................................................................238
Code Example and Analysis .......................................................................239
Advancements in Java’s Locking Mechanisms .......................................................241
Optimizing Contention: Enhancements since Java 9 ................................................243
Visualizing Contended Lock Optimization: A Performance Engineering Exercise .....................245
Synthesizing Contended Lock Optimization: A Reflection ..........................................256
Spin-Wait Hints: An Indirect Locking Improvement ................................................257
Transitioning from the Thread-per-Task Model to More Scalable Models ............................259
Traditional One-to-One Thread Mapping ...........................................................260
Increasing Scalability with the Thread-per-Request Model ........................................261
Reimagining Concurrency with Virtual Threads ....................................................265
Conclusion ......................................................................................270
8 Accelerating Time to Steady State with OpenJDK HotSpot VM ...........................................273
Introduction ....................................................................................273
JVM Start-up and Warm-up Optimization Techniques ................................................274
Decoding Time to Steady State in Java Applications ..............................................274
Ready, Set, Start up! ...........................................................................274
Phases of JVM Start-up ..........................................................................275
Reaching the Application’s Steady State .........................................................276
An Application’s Life Cycle .....................................................................278
Managing State at Start-up and Ramp-up ..........................................................278
State During Start-up ...........................................................................278
Transition to Ramp-up and Steady State ..........................................................281
Benefits of Efficient State Management ..........................................................281
Class Data Sharing ..............................................................................282
Ahead-of-Time Compilation .......................................................................283
GraalVM: Revolutionizing Java’s Time to Steady State ............................................290
Emerging Technologies: CRIU and Project CRaC for Checkpoint/Restore Functionality ...............292
Start-up and Ramp-up Optimization in Serverless and Other Environments ..........................295
Serverless Computing and JVM Optimization .......................................................296
Containerized Environments: Ensuring Swift Start-ups and Efficient Scaling ......................297
GraalVM’s Present-Day Contributions .............................................................298
Key Takeaways ...................................................................................298
Boosting Warm-up Performance with OpenJDK HotSpot VM ............................................300
Compiler Enhancements ...........................................................................300
Segmented Code Cache and Project Leyden Enhancements ............................................303
The Evolution from PermGen to Metaspace: A Leap Forward Toward Peak Performance .................304
Conclusion ......................................................................................306
9 Harnessing Exotic Hardware: The Future of JVM Performance Engineering ...............................307
Introduction to Exotic Hardware and the JVM .....................................................307
Exotic Hardware in the Cloud ....................................................................309
Hardware Heterogeneity ..........................................................................310
API Compatibility and Hypervisor Constraints ....................................................310
Performance Trade-offs ..........................................................................311
Resource Contention .............................................................................311
Cloud-Specific Limitations ......................................................................311
The Role of Language Design and Toolchains ......................................................312
Case Studies ....................................................................................313
LWJGL: A Baseline Example .......................................................................314
Aparapi: Bridging Java and OpenCL ...............................................................317
Project Sumatra: A Significant Effort ...........................................................321
TornadoVM: A Specialized JVM for Hardware Accelerators ..........................................324
Project Panama: A New Horizon ...................................................................327
Envisioning the Future of JVM and Project Panama ................................................333
High-Level JVM-Language APIs and Native Libraries ...............................................333
Vector API and Vectorized Data Processing Systems ...............................................334
Accelerator Descriptors for Data Access, Caching, and Formatting ................................335
The Future Is Already Knocking at the Door! .....................................................335
Concluding Thoughts: The Future of JVM Performance Engineering ..................................336
Index ...........................................................................................337
пример обработки оглавления из раздачи https://rutr.life/forum/viewtopic.php?t=6523120
исходный текст
От издательства.................................................................................10
Вступительное слово..........................................................................12
Предисловие.....................................................................................16
Введение..........................................................................................28
ЧАСТЬ I. ОЧИСТКА
Глава 1. Охранные выражения (guard clauses)....................................33
Глава 2. Мертвый код........................................................................35
Глава 3. Нормализация симметрий.....................................................37
Глава 4. Новый интерфейс, старая реализация...................................39
Глава 5. Порядок чтения кода...........................................................41
Глава 6. Принцип связности .............................................................43
Глава 7. Соединение объявления с инициализацией...........................45
Глава 8. Пояснительные переменные.................................................47
Глава 9. Пояснительные константы....................................................49
Глава 10. Явная передача параметров...............................................51
Глава 11. Визуальная группировка инструкций .................................53
Глава 12. Извлечение функций-хелперов ..........................................55
Глава 13. Одна большая свалка.........................................................59
Глава 14. Содержательные комментарии............................................61
Глава 15. Удаление избыточных комментариев...................................63
ЧАСТЬ II. УПРАВЛЕНИЕ
Глава 16. Очистка отдельно..............................................................67
Глава 17. Цепочки............................................................................71
Глава 18. Размер наборов операций...................................................77
Глава 19. Ритм..................................................................................85
Глава 20. Распутывание....................................................................89
Глава 21. До, после, позже, никогда..................................................93
ЧАСТЬ III. ТЕОРИЯ
Глава 22. Взаимовыгодные отношения между элементами..................105
Глава 23. Структура и поведение.....................................................111
Глава 24. Экономика: ценность во времени и вариативность..............117
Глава 25. Доллар сегодня стоит больше, чем доллар завтра...............121
Глава 26. Вариативность.................................................................125
Глава 27. Опционы и денежные потоки............................................131
Глава 28. Обратимые изменения структуры......................................135
Глава 29. Сцепление......................................................................139
Глава 30. Равенство Константайна...................................................145
Глава 31. Сцепление и ослабление связей .......................................151
Глава 32. Связность........................................................................157
Глава 33. Заключение.....................................................................161
Приложение. Рекомендуемая литература и ссылки ...........................165
Об авторе.......................................................................................171
Иллюстрация на обложке.................................................................172
пример кода на python
Код:
import re
# Указание пути к файлу
fname = r'H:/Tor/Books/Python/3.txt' # тут должен быть указан путь к Вашему файлу
# Открытие файла в режиме чтения с указанием кодировки
with open(fname, 'r', encoding='utf-8') as inf:
    # Считывание всех строк из файла и сохранение их в списке lines
    lines = inf.readlines()
# Обработка каждой строки из файла
for line in lines:
    # Используем регулярное выражение для очистки строки от символа переноса строки и разделения ее на список
    result = re.split(r'\.{2,}', line.strip())
    if result[0].startswith('ЧАСТЬ'):
        # Если строка начинается с 'ЧАСТЬ', печатаем это в отдельной строке
        print('\n' + result[0])
    elif result[0].startswith('Глава'):
        # Если строка начинается с 'Глава', вычисляем длину первой и второй части строки
        # и печатаем строку, добавив пробелы и точки для выравнивания
        length_string = len(result[0]) + len(result[1])
        print(' ' * 6 + result[0] + '.' * (64 - length_string) + result[1])
    else:
        # В остальных случаях также вычисляем длину строк и печатаем их,
        # добавляя точки для выравнивания
        length_string = len(result[0]) + len(result[1])
        print(result[0] + '.' * (70 - length_string) + result[1])
Результат обработки, который на торрент сайте требуется поместить в теги pre или nfo
От издательства.....................................................10
Вступительное слово.................................................12
Предисловие.........................................................16
Введение............................................................28
ЧАСТЬ I. ОЧИСТКА
Глава 1. Охранные выражения (guard clauses)...................33
Глава 2. Мертвый код..........................................35
Глава 3. Нормализация симметрий...............................37
Глава 4. Новый интерфейс, старая реализация...................39
Глава 5. Порядок чтения кода..................................41
Глава 6. Принцип связности ...................................43
Глава 7. Соединение объявления с инициализацией...............45
Глава 8. Пояснительные переменные.............................47
Глава 9. Пояснительные константы..............................49
Глава 10. Явная передача параметров...........................51
Глава 11. Визуальная группировка инструкций ..................53
Глава 12. Извлечение функций-хелперов ........................55
Глава 13. Одна большая свалка.................................59
Глава 14. Содержательные комментарии..........................61
Глава 15. Удаление избыточных комментариев....................63
ЧАСТЬ II. УПРАВЛЕНИЕ
Глава 16. Очистка отдельно....................................67
Глава 17. Цепочки.............................................71
Глава 18. Размер наборов операций.............................77
Глава 19. Ритм................................................85
Глава 20. Распутывание........................................89
Глава 21. До, после, позже, никогда...........................93
ЧАСТЬ III. ТЕОРИЯ
Глава 22. Взаимовыгодные отношения между элементами..........105
Глава 23. Структура и поведение..............................111
Глава 24. Экономика: ценность во времени и вариативность.....117
Глава 25. Доллар сегодня стоит больше, чем доллар завтра.....121
Глава 26. Вариативность......................................125
Глава 27. Опционы и денежные потоки..........................131
Глава 28. Обратимые изменения структуры......................135
Глава 29. Сцепление..........................................139
Глава 30. Равенство Константайна.............................145
Глава 31. Сцепление и ослабление связей .....................151
Глава 32. Связность..........................................157
Глава 33. Заключение.........................................161
Приложение. Рекомендуемая литература и ссылки .....................165
Об авторе..........................................................171
Иллюстрация на обложке.............................................172
Скрин кнопок PRE и NFO
Также рекомендую заключать главы в тэги жирного шрифта, этоже можно сделать в коде python, если глав много и лень ручками подправлять.
[Профиль]  [ЛС] 

Xant1k

Top Seed 01* 40r

Стаж: 16 лет 8 месяцев

Сообщений: 3718

Xant1k · 09-Июл-24 12:49 (спустя 1 месяц 6 дней, ред. 09-Июл-24 12:49)

Интересно, сенкс.
Для меня точки не очень (слишком много лишних знаков)), лучше пустое пространство. Особенно это заметно на 2 варианте у тебя. Ощущение будто смотришь не на текст а на стену с точками. Я в дизайн системах у себя от такого давно отказался. Это плохой хак)
Кстати что удивительно, оформление в книгах воспринимается проще.
Одно из лучших в мягком переплёте Карнеги мне нравится, там точки маленькие и между ними есть воздух, оно слабо заметно, зато навигация глазами легка. Монтепен собрания тоже неплохо.
Или можно нижним подчёркиванием обойтись) https://www.discogs.com/master/1254503-Stephen-Fry-Harry-Potter-And-The-Chamber-Of-Secrets
[Профиль]  [ЛС] 
 
Ответить
Loading...
Error