|
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
Стаж: 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
|
|
|