1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/turnon-blog

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Java IO модель

Ключевые слова: InputStream, OutputStream, Reader, Writer, блокировка.

Java NIO

Ключевые слова: Channel, Buffer, Selector, неблокирующий, мультиплексирование.

Сериализация в Java

Ключевые слова: Serializable, serialVersionUID, transient, Externalizable, writeObject, readObject.

Сетевое программирование на Java

Ключевые слова: Socket, ServerSocket, DatagramPacket, DatagramSocket.

Инструменты ввода-вывода в Java

Ключевые слова: File, RandomAccessFile, System, Scanner.

Java Concurrency (Параллелизм в Java)

Введение в параллелизм в Java

Ключевые слова: процесс, поток, безопасность, активность, производительность, тупик, голод, переключение контекста.

Основы потоков в Java

Ключевые слова: Thread, Runnable, Callable, Future, wait, notify, notifyAll, join, sleep, yield, состояние потока, взаимодействие потоков.

Основные механизмы параллелизма в Java

Ключевые слова: synchronized, volatile, CAS, ThreadLocal.

Блокировки в Java

Ключевые слова: AQS, ReentrantLock, ReentrantReadWriteLock, Condition.

Атомарные классы в Java

Ключевые слова: CAS, Atomic.

Параллельные контейнеры в Java

Ключевые слова: ConcurrentHashMap, CopyOnWriteArrayList.

Пулы потоков в Java

Ключевые слова: Executor, ExecutorService, ThreadPoolExecutor, Executors.

Инструменты для работы с параллелизмом в Java

Ключевые слова: CountDownLatch, CyclicBarrier, Semaphore.

Модель памяти в Java

Ключевые слова: JMM, volatile, synchronized, final, Happens-Before, барьер памяти.

ForkJoin Framework

Виртуальная машина Java (JVM)

Структура JVM

Память JVM

Ключевые слова: программный счётчик, стек виртуальной машины, стек локальных методов, куча, область методов, пул констант времени выполнения, прямая память, OutOfMemoryError, StackOverflowError.

Сборка мусора в JVM

Ключевые слова: GC Roots, Serial, Parallel, CMS, G1, Minor GC, Full GC.

Байт-код JVM

Ключевые слова: bytecode, asm, javassist.

Загрузка классов в JVM

Ключевые слова: ClassLoader, родительская делегирующая загрузка.

Командная строка JVM

Ключевые слова: jps, jstat, jmap, jstack, jhat, jinfo.

GUI инструменты для JVM

Ключевые слова: jconsole, jvisualvm, MAT, JProfile, Arthas.

Практика работы с JVM

Ключевые слова: конфигурация, оптимизация.

Диагностика проблем в Java

Ключевые слова: процессор, память, диск, сеть, сборщик мусора.

Java EE

Java Web

  • Java Web: интервью.
  • Servlet: руководство.
  • JSP: руководство.
  • Filter и Listener.
  • Cookie и Session.

Сервер Java

Tomcat и Jetty — популярные лёгкие серверы Java. Nginx — популярный обратный прокси-сервер, также часто используется для балансировки нагрузки.

  • Быстрый старт с Tomcat.
  • Соединители Tomcat.
  • Контейнеры Tomcat. Основные принципы Spring

Spring — это популярный фреймворк для разработки приложений на Java. Он предоставляет разработчикам набор инструментов и библиотек, которые упрощают разработку, тестирование и развёртывание приложений.

Основные принципы Spring включают:

  • Inversion of Control (IoC) — принцип, который позволяет отделить логику приложения от деталей его реализации. Spring использует IoC для управления жизненным циклом объектов и их зависимостями.
  • Dependency Injection (DI) — механизм, который позволяет автоматически внедрять зависимости между объектами. Spring поддерживает несколько механизмов DI, таких как Constructor-based DI, Setter-based DI и Interface-based DI.
  • Aspect-Oriented Programming (AOP) — подход к программированию, который позволяет разделять сквозные задачи, такие как безопасность, логирование и управление транзакциями, от основной логики приложения. Spring предоставляет поддержку AOP через аспектно-ориентированные модули.
  • MVC (Model-View-Controller) — шаблон проектирования, который разделяет приложение на три компонента: модель, представление и контроллер. Spring MVC — это модуль Spring, который предоставляет инфраструктуру для создания веб-приложений на основе шаблона MVC.

Spring Bean — это объект, управляемый контейнером Spring. Контейнер отвечает за создание, настройку и уничтожение бинов. Бины могут быть одиночными (singleton) или прототипами (prototype).

Spring IoC — это механизм, с помощью которого контейнер Spring управляет жизненным циклом бинов и их зависимостей. IoC позволяет отделить логику приложения от деталей реализации и упрощает тестирование и повторное использование кода.

Spring Dependency Lookup — процесс поиска зависимостей между бинами в контейнере Spring. Spring использует различные механизмы для поиска зависимостей, такие как автоматическое подключение (autowiring) и явное указание зависимостей в конфигурации.

Spring Dependency Injection — механизм внедрения зависимостей между бинами в контейнере Spring. DI позволяет автоматически создавать и настраивать объекты, что упрощает разработку и тестирование приложений.

Spring IoC Dependency Source — источник, из которого Spring получает информацию о зависимостях между бинами. Источником может быть конфигурация XML, аннотации или код Java.

Spring Bean Scope — область видимости бина в контейнере Spring. Область видимости определяет, сколько экземпляров бина будет создано и как долго они будут существовать. В Spring доступны следующие области видимости: singleton, prototype, request, session и global session.

Spring Bean Lifecycle — жизненный цикл бина в контейнере Spring. Жизненный цикл включает в себя создание, инициализацию, использование и уничтожение бина. Spring позволяет настроить жизненный цикл бинов с помощью методов обратного вызова (lifecycle callbacks).

Spring Configuration Metadata — метаданные, описывающие конфигурацию бинов в контейнере Spring. Метаданные могут быть представлены в виде XML-файла, аннотаций или кода Java.

Spring AOP — аспектно-ориентированное программирование в Spring. AOP позволяет разделить сквозные задачи, такие как безопасность и логирование, от основной логики приложения и упростить их реализацию.

Spring Resource Management — управление ресурсами, такими как файлы, базы данных и сети, в приложениях Spring. Spring предоставляет инструменты для работы с различными типами ресурсов и обеспечивает их безопасность.

Spring Validation — проверка данных в приложениях Spring. Spring предоставляет механизмы для проверки входных данных, таких как формы и запросы, и позволяет генерировать сообщения об ошибках.

Spring Data Binding — привязка данных к объектам модели в приложениях Spring. Spring обеспечивает автоматическую привязку данных из форм и запросов к полям объектов модели.

Spring Type Conversion — преобразование типов данных в приложениях Spring. Spring позволяет преобразовывать данные из одного типа в другой, например, строки в числа или даты.

Spring EL Expression — язык выражений в Spring, используемый для динамического вычисления значений. Spring EL позволяет создавать выражения, которые могут быть оценены во время выполнения.

Spring Event — событие в Spring, которое может быть вызвано определённым действием. Spring позволяет регистрировать обработчики событий и выполнять их при возникновении события.

Spring Internationalization — интернационализация приложений Spring. Spring позволяет разрабатывать приложения, которые поддерживают несколько языков и локалей.

Spring Generic Handling — обработка обобщённых типов в приложениях Spring. Spring позволяет использовать обобщённые типы и методы в коде Java.

Spring Annotation — аннотация в Spring, которая используется для настройки бинов и других элементов приложения. Spring поддерживает различные типы аннотаций, такие как @Component, @Autowired и @Configuration.

Spring Environment Abstraction — абстракция среды в Spring. Spring позволяет получать доступ к информации о среде выполнения, такой как свойства системы, переменные окружения и параметры командной строки.

Это лишь краткое описание основных принципов Spring. Для более подробного изучения рекомендуется обратиться к официальной документации Spring или другим источникам информации. Широ (Shiro) проще, легче и понятнее, чем другие решения, и может удовлетворить большинство базовых потребностей в области безопасности.

Широ (Shiro):

  • проще;
  • легче;
  • понятнее;
  • удовлетворяет большинству базовых потребностей в области безопасности.

Spring Security имеет более широкий функционал и сложнее, чем Shiro. Стоит отметить, что Spring Security разрабатывается командой Spring, поэтому его интеграция с Spring и Spring Boot проще.

IO

Shiro:

  • Netty.

Java-промежуточное ПО:

  • Кэширование: кэширование можно назвать основным средством оптимизации производительности системы. Кэширование применяется в различных технологиях. Если вы хотите глубже изучить кэширование, рекомендуется сначала ознакомиться с основами кэширования, чтобы понять характеристики, принципы работы кэширования и типичные проблемы и решения при использовании кэширования.

  • Вопросы для собеседования по кэшированию.

  • Java-кэширующее промежуточное ПО.

  • Быстрое введение в Memcached.

  • Быстрое введение в Ehcache.

  • Внутреннее кэширование процессов Java.

  • HTTP-кэширование.

  • Контроль трафика: Hystrix.

Компьютерные науки

  • Структуры данных и алгоритмы:

    • Руководство по структурам данных и алгоритмам.
    • Анализ сложности. Ключевые слова: временная сложность, пространственная сложность, обозначение O, уровни сложности.
    • Линейные таблицы: массивы и связанные списки. Ключевые слова: линейная таблица, одномерный массив, многомерный массив, произвольный доступ, односвязный список, двусвязный список, кольцевой список.
    • Стек и очередь. Ключевые слова: LIFO, FIFO, кольцевая очередь.
    • Поиск в линейных таблицах.
    • Сортировка линейных таблиц.
    • Деревья и бинарные деревья.
    • Куча.
    • B+ деревья.
    • LSM деревья.
    • Trie.
    • Красные и чёрные деревья.
    • Хеш-таблицы. Ключевые слова: хеш-функция, коэффициент загрузки, коллизии хешей, открытая адресация, метод цепочек.
    • Прыгающие таблицы. Ключевые слова: многоуровневый индекс.
    • Графы.
  • Базы данных:

    • NoSQL — выбор технологии.
    • Структура данных и индексы базы данных.

    Промежуточное ПО для баз данных:

    • Краткое введение в ShardingSphere.
    • ShardingSphere Jdbc.
    • Flyway — промежуточное ПО для управления версиями.

    Реляционные базы данных:

    • Общие знания:
      • Резюме вопросов на собеседовании по реляционным базам данных.
      • Основы SQL.
      • Расширенные возможности SQL.
      • Расширение SQL.
      • Шпаргалка по SQL.

    MySQL:

    • Применение MySQL.
    • Рабочий процесс MySQL. Ключевые слова: соединение, кэш, синтаксический анализ, оптимизация, движок выполнения, журнал повторов, двоичный журнал, двухфазная фиксация.
    • Транзакции MySQL. Ключевые слова: ACID, автоматическая фиксация, уровень изоляции транзакций, взаимоблокировка, распределённые транзакции.
    • Блокировки MySQL. Ключевые слова: оптимистичные блокировки, табличные блокировки, блокировки строк, намерения блокировок, MVCC, блокировка следующего ключа.
    • Индексы MySQL. Ключевые слова: хэш, B-дерево, кластеризованный индекс, обратный просмотр.
    • Оптимизация производительности MySQL.
    • Эксплуатация и обслуживание MySQL.
    • Конфигурация MySQL.
    • Часто задаваемые вопросы по MySQL.

    Другие:

    • PostgreSQL — руководство по применению.
    • H2 — руководство по применению.
    • SQLite — руководство по применению. API

API (Application Programming Interface) — это интерфейс прикладного программирования, который позволяет приложениям взаимодействовать друг с другом.

Elastic

Elastic — компания, которая разрабатывает и поддерживает продукты для поиска и анализа данных. Продукты Elastic включают в себя Elasticsearch, Logstash, Kibana и другие инструменты.

Elasticsearch Java API

Elasticsearch Java API — это набор библиотек для работы с Elasticsearch на языке Java. Он предоставляет разработчикам возможность создавать, изменять и удалять документы в индексе Elasticsearch.

Elasticsearch High Level REST Client

High Level REST Client — это клиентская библиотека для Elasticsearch, которая упрощает работу с REST API Elasticsearch. Она предоставляет более высокий уровень абстракции, чем низкоуровневый REST API.

Elasticsearch Cluster and Sharding

Cluster and Sharding — это функции Elasticsearch, которые позволяют распределять данные по нескольким узлам кластера и обеспечивать высокую доступность и производительность.

Elasticsearch Operations

Operations — это задачи, связанные с управлением кластером Elasticsearch, такие как мониторинг, настройка, резервное копирование и восстановление.

Сеть

Сеть — это совокупность компьютеров и других устройств, связанных между собой для обмена данными. Сеть может быть локальной или глобальной.

Computer Network Interview Summary

Computer Network Interview Summary — это обзор основных вопросов, которые могут задать на собеседовании по компьютерным сетям.

Computer Networks Guide

Computer Networks Guide — это руководство по компьютерным сетям, которое содержит информацию о различных аспектах компьютерных сетей, таких как топология, протоколы, устройства и т. д.

Network Layers

Network Layers — это уровни модели OSI (Open Systems Interconnection), которая описывает взаимодействие между компьютерами в сети. Модель OSI состоит из семи уровней: физического, канального, сетевого, транспортного, сеансового, представления и прикладного.

Physical Layer

Physical Layer — это первый уровень модели OSI, который отвечает за передачу битов по физической среде, такой как кабель или радиоволны.

Data Link Layer

Data Link Layer — это второй уровень модели OSI, который обеспечивает надёжную передачу данных по каналу связи.

Network Layer

Network Layer — это третий уровень модели OSI, который определяет маршрут передачи данных от отправителя к получателю.

Transport Layer

Transport Layer — это четвёртый уровень модели OSI, который управляет передачей данных между двумя конечными точками.

Application Layer

Application Layer — это седьмой уровень модели OSI, на котором работают приложения, использующие сеть.

Hypertext Transfer Protocol (HTTP)

Hypertext Transfer Protocol — это протокол, используемый для передачи гипертекста, такого как веб-страницы, между клиентом и сервером.

Domain Name System (DNS)

Domain Name System — это система, которая преобразует доменные имена в IP-адреса.

Transmission Control Protocol (TCP)

Transmission Control Protocol — это надёжный протокол передачи данных, который гарантирует доставку данных в правильном порядке.

User Datagram Protocol (UDP)

User Datagram Protocol — это ненадёжный протокол передачи данных, который не гарантирует доставку данных.

Internet Control Message Protocol (ICMP)

Internet Control Message Protocol — это вспомогательный протокол, который используется для диагностики проблем в сети.

Распределённая система

Распределённая система — это компьютерная система, состоящая из нескольких узлов, которые взаимодействуют друг с другом для выполнения общей задачи.

Distributed Systems Interview Summary

Distributed Systems Interview Summary — это обзор основных вопросов, которые могут задать на собеседовании по распределённым системам.

Distributed Theory

Distributed Theory — это раздел информатики, который изучает принципы проектирования и реализации распределённых систем.

Paxos Algorithm

Paxos — это алгоритм достижения консенсуса в распределённой системе. Алгоритм Paxos позволяет нескольким узлам договориться о значении некоторого параметра.

Raft Algorithm

Raft — это ещё один алгоритм достижения консенсуса в распределённой системе, похожий на Paxos.

Gossip Algorithm

Gossip — это метод распространения информации в распределённой системе. В алгоритме Gossip узлы периодически обмениваются информацией о своих соседях.

Replication

Replication — это процесс создания копий данных на нескольких узлах распределённой системы. Репликация обеспечивает высокую доступность данных и их устойчивость к сбоям.

Partitioning

Partitioning — это разделение данных на несколько частей, каждая из которых хранится на отдельном узле. Разделение данных позволяет распределить нагрузку между узлами и повысить производительность системы.

Leader Election

Leader Election — это процесс выбора лидера в распределённой системе. Лидер отвечает за координацию действий других узлов.

Transactions

Transactions — это механизм обеспечения целостности данных в распределённой системе. Транзакции позволяют выполнять несколько операций над данными как одну операцию.

Locks

Locks — это механизм синхронизации доступа к данным в распределённой системе. Блокировки позволяют избежать конфликтов при одновременном изменении данных несколькими узлами.

ZooKeeper

ZooKeeper — это распределённая система координации, которая используется для управления конфигурацией, распределением ресурсов и другими задачами в распределённых системах.

Flow Control

Flow Control — это механизм ограничения скорости передачи данных в сети. Управление потоком позволяет избежать перегрузки сети и потери данных.

Load Balancing

Load Balancing — это распределение нагрузки между несколькими серверами. Балансировка нагрузки позволяет повысить производительность и доступность системы.

Service Routing

Service Routing — это выбор маршрута передачи данных между клиентами и серверами. Маршрутизация позволяет оптимизировать трафик и обеспечить высокое качество обслуживания.

Session Management

Session Management — это управление сеансами взаимодействия между клиентами и серверами. Управление сеансами позволяет обеспечить безопасность и конфиденциальность данных.

ID Generation

ID Generation — это создание уникальных идентификаторов для объектов в распределённой системе. Генерация идентификаторов позволяет избежать коллизий и обеспечить уникальность объектов.

Fault Tolerance

Fault Tolerance — это способность системы продолжать работу после отказа одного или нескольких компонентов. Отказоустойчивость обеспечивается путём резервирования компонентов и использования механизмов восстановления.

RPC

RPC (Remote Procedure Call) — это технология вызова удалённых процедур, которая позволяет вызывать функции на удалённом сервере, как если бы они были локальными. RPC

RPC (Remote Procedure Call) — это технология удалённого вызова процедур, которая позволяет одной программе вызывать процедуры или функции другой программы, расположенной на другом компьютере в сети.

RPC 基础

RPC является важным инструментом для создания распределённых систем и обеспечивает взаимодействие между различными компонентами системы. Он позволяет разработчикам создавать приложения, которые могут работать на разных компьютерах и взаимодействовать друг с другом через сеть.

В основе RPC лежит идея о том, что программа может вызывать процедуру или функцию на удалённом компьютере так же, как она вызывает процедуру или функцию локально. Для этого используется специальный протокол, который определяет формат запроса и ответа, а также способ передачи данных между компьютерами.

Существует несколько реализаций RPC, таких как DCE RPC, CORBA, SOAP и другие. Они различаются по сложности, производительности и безопасности.

Основные компоненты RPC:

  • клиент — программа, которая вызывает удалённые процедуры;
  • сервер — программа, предоставляющая удалённые процедуры для вызова;
  • протокол — набор правил и форматов, определяющих взаимодействие между клиентом и сервером;
  • транспортный уровень — механизм передачи данных между клиентом и сервером.

Для обеспечения надёжности и безопасности RPC использует различные механизмы, такие как аутентификация, шифрование и контроль доступа. Это позволяет защитить систему от несанкционированного доступа и атак.

Преимущества RPC:

  • упрощение разработки распределённых приложений;
  • повышение эффективности взаимодействия между компонентами системы;
  • обеспечение гибкости и масштабируемости системы.

Недостатки RPC:

  • сложность реализации и настройки;
  • снижение производительности из-за дополнительных накладных расходов на передачу данных и обработку запросов.

RPC широко используется в различных областях, таких как веб-сервисы, облачные вычисления, научные вычисления и другие.

MQ (Message Queue)

Message Queue (MQ) — это система обмена сообщениями, которая обеспечивает асинхронное взаимодействие между приложениями и службами. Она позволяет отправлять и получать сообщения без необходимости установления соединения между отправителем и получателем.

MQ является важным компонентом распределённых систем, поскольку он обеспечивает гибкость, масштабируемость и отказоустойчивость. Он также позволяет снизить нагрузку на сеть и серверы за счёт асинхронной обработки сообщений.

Существуют различные реализации MQ, такие как RabbitMQ, Kafka, ActiveMQ и другие. Они отличаются по функциональности, производительности, надёжности и стоимости.

Основные понятия MQ:

  • сообщение — единица информации, которую отправляет отправитель получателю;
  • очередь — буфер для хранения сообщений до их получения получателем;
  • издатель — приложение, которое отправляет сообщения в очередь;
  • подписчик — приложение, которое получает сообщения из очереди;
  • брокер — промежуточное звено, которое управляет очередями и обеспечивает обмен сообщениями между издателями и подписчиками.

Для обеспечения безопасности MQ использует различные механизмы, такие как шифрование, аутентификация и авторизация. Это позволяет предотвратить несанкционированный доступ к данным и системам.

Преимущества MQ:

  • асинхронная обработка сообщений;
  • масштабируемость;
  • отказоустойчивость;
  • гибкость.

Недостатки MQ:

  • сложность настройки и управления;
  • дополнительные накладные расходы на обработку сообщений.

MQ широко используется в различных отраслях, таких как финансы, здравоохранение, транспорт и другие.

Kafka

Apache Kafka — это распределённая система обмена сообщениями с открытым исходным кодом, разработанная компанией Apache Software Foundation. Она обеспечивает высокую пропускную способность, низкую задержку и надёжность при обработке больших объёмов данных.

Kafka используется для потоковой обработки данных, где данные поступают непрерывно и должны быть обработаны в реальном времени. Она также используется для интеграции данных из различных источников и для построения конвейеров данных.

Основные особенности Kafka:

  • высокая пропускная способность — Kafka может обрабатывать миллионы сообщений в секунду;
  • низкая задержка — Kafka обеспечивает быструю доставку сообщений подписчикам;
  • надёжность — Kafka сохраняет сообщения на диске и реплицирует их на несколько серверов для обеспечения отказоустойчивости;
  • поддержка потоковой обработки — Kafka позволяет обрабатывать данные в потоковом режиме с помощью Kafka Streams API.

Kafka состоит из нескольких компонентов:

  • брокеры — серверы, на которых хранятся сообщения;
  • темы — категории сообщений;
  • разделы — логические единицы внутри тем;
  • производители — приложения, отправляющие сообщения в Kafka;
  • потребители — приложения, получающие сообщения из Kafka.

Kafka поддерживает различные протоколы связи, такие как TCP, SSL и SASL, для обеспечения безопасности и конфиденциальности данных.

RocketMQ

RocketMQ — это высокопроизводительная система обмена сообщениями с открытым исходным кодом, разработанная Alibaba Group. Она предоставляет аналогичные функции Kafka, но с некоторыми отличиями в архитектуре и реализации.

RocketMQ использует модель «точка-точка» для обмена сообщениями, в которой каждое сообщение отправляется от одного производителя одному или нескольким потребителям. Это обеспечивает более высокую скорость обработки и меньшую задержку, чем в модели «публикация-подписка», используемой Kafka.

Другие MQ

Помимо Kafka и RocketMQ существуют другие системы обмена сообщениями, такие как ActiveMQ, RabbitMQ и IBM MQ. Они имеют свои особенности и преимущества, но в целом обеспечивают аналогичные функции.

Распределённое хранение данных

Распределённое хранилище данных — это система хранения данных, которая распределяет данные по нескольким узлам или серверам для повышения доступности, надёжности и производительности. Оно используется для больших объёмов данных, которые не могут быть эффективно обработаны одним сервером.

Существует два основных типа распределённого хранилища данных:

  • реляционное — основано на базе данных SQL и обеспечивает структурированное хранение данных;
  • нереляционное (NoSQL) — основано на других моделях данных, таких как ключ-значение, документ, граф и столбцовое хранение, и обеспечивает гибкое и масштабируемое хранение данных.

Реляционные базы данных, такие как MySQL, Oracle и PostgreSQL, используются для традиционных приложений, требующих строгой согласованности данных и сложных запросов. Однако они имеют ограничения по масштабируемости и производительности при работе с большими объёмами данных.

Нереляционные базы данных, такие как Cassandra, MongoDB и HBase, используются для современных приложений, требующих высокой доступности, низкой задержки и горизонтального масштабирования. Они обеспечивают более гибкое и эффективное хранение данных, но требуют другого подхода к разработке и управлению данными.

Выбор между реляционным и нереляционным хранилищем зависит от требований приложения, таких как объём данных, тип данных, требования к доступности и производительности.

Программирование

Программирование — это процесс создания компьютерных программ с использованием языков программирования. Программирование включает в себя разработку алгоритмов, написание кода, тестирование и отладку программ.

Языки программирования — это формальные языки, используемые для написания программ. Существует множество языков программирования, таких как Python, Java, C++, JavaScript и другие. Каждый язык имеет свои особенности, преимущества и недостатки.

Python — это интерпретируемый язык программирования высокого уровня, используемый для разработки веб-приложений, научных вычислений, машинного обучения и других задач. Python имеет простой синтаксис, большое сообщество разработчиков и множество библиотек и фреймворков.

Java — это объектно-ориентированный язык программирования общего назначения, используемый для создания настольных, мобильных и веб-приложений. Java имеет строгую типизацию, безопасность и переносимость.

C++ — это компилируемый язык программирования среднего уровня, используемый для создания высокопроизводительных приложений, игр и операционных систем. C++ имеет низкоуровневый доступ к памяти, высокую производительность и гибкость.

JavaScript — это скриптовый язык программирования, используемый для веб-разработки, создания интерактивных веб-сайтов и мобильных приложений. JavaScript имеет динамическую типизацию, лёгкость изучения и поддержку в браузерах.

Каждый язык программирования имеет свою область применения и подходит для определённых задач. Выбор языка программирования зависит от опыта разработчика, требований проекта и предпочтений.

Проектирование

Проектирование — это процесс разработки архитектуры и дизайна системы или продукта. Проектирование включает в себя анализ требований, определение структуры, выбор технологий и создание документации.

Архитектура системы — это структура и организация системы, включая её компоненты, связи между ними и принципы работы. Архитектура определяет основные свойства системы, такие как надёжность, доступность, масштабируемость и безопасность.

Дизайн системы — это детализация архитектуры, включая выбор конкретных технологий, методов и шаблонов проектирования. Дизайн определяет реализацию системы, её удобство использования и качество.

Существует множество подходов к проектированию, таких как структурное проектирование, объектно-ориентированное проектирование, функциональное проектирование и другие. Подход к проектированию зависит от типа системы, её сложности и требований.

Структурное проектирование — это подход к проектированию, основанный на декомпозиции системы на модули и подсистемы. Структурное проектирование обеспечивает модульность, иерархию и абстракцию.

Объектно-ориентированное проектирование — это подход к проектированию, основанный на использовании объектов и классов. Объектно-ориентированное проектирование обеспечивает инкапсуляцию, полиморфизм и наследование.

Функциональное проектирование — это подход к проектированию, основанный на разделении системы на функции и процессы. Функциональное проектирование обеспечивает параллелизм, асинхронность и событийно-управляемое поведение.

Проектирование является важным этапом разработки системы, поскольку оно определяет её качество, стоимость и время разработки. Итератор (Iterator)

Наблюдатель (Observer)

Интерпретатор (Interpreter)

Посредник (Mediator)

Цепочка обязанностей (Chain of Responsibility)

Хранитель (Memento)

Стратегия (Strategy)

Посетитель (Visitor)

Состояние (State)

Рефакторинг

Плохой вкус кода и рефакторинг

Раздувание кода

Чрезмерное использование объектно-ориентированного подхода

Препятствия для изменений

Ненужные элементы

Связанность

UML

Быстрое введение в UML

Структурные диаграммы UML

Диаграммы поведения UML

DevOps

CI

CD

Мониторинг

Система мониторинга

Отслеживание ссылок

Инструменты

Git

  • Как элегантно использовать Git
  • Руководство по использованию Git

Другие инструменты

  • Краткое руководство по регулярным выражениям

Работа

Методология

Методология повышения эффективности

Риторика

Стандарты

Стандарты технической документации

Стандарты управления каталогами

Стандарты разработки кода

Инструменты

Краткое руководство по Markdown

🚪 Передача

◾ 💧 Карта знаний IT от Dunwu ◾ 🎯 Блог Dunwu

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Десятилетний опыт работы в сфере технологий, упрощая сложное. Развернуть Свернуть
CC-BY-SA-4.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/turnon-blog.git
git@gitlife.ru:oschina-mirror/turnon-blog.git
oschina-mirror
turnon-blog
turnon-blog
master