Открытые проекты Austin
Если вы хотите изучить Java-проекты, я настоятельно рекомендую свой открытый проект Austin (11K+ звёзд) — платформу для отправки сообщений. Её можно использовать в качестве дипломной работы или проекта для поступления на работу. Вы можете посмотреть, как платформа отправляет сообщения в онлайн-производственной среде. Многие мои студенты получили предложения от крупных компаний ByteDance, Tencent, Vivo после работы над этим проектом!
Адрес репозитория: https://gitee.com/zhongfucheng/austin
Онлайн-демонстрация: http://119.91.205.248:3001
Более 11 тысяч слов и 107 документов помогут вам разобраться с Austin. Подробнее см.: Платформа для отправки сообщений Austin (документация).
Серия «Противостояние интервьюеру»
«Противостояние интервьюеру» — это серия статей, которые я публикую уже около года. В них я рассказываю о собеседованиях простым языком. Эти материалы помогли мне получить предложения от многих компаний, включая крупные. Они охватывают все основные темы по Java, которые могут спросить на собеседовании...
«Противостояние интервьюеру. Первый сезон» (только текст)
— Резюме — [Как написать резюме («Противостояние интервьюеру»)]. — Основы Java — [Аннотации в Java («Противостояние интервьюеру»)]. — [Дженерики в Java («Противостояние интервьюеру»)]. — [NIO в Java («Противостояние интервьюеру»)]. — [Рефлексия и динамические прокси в Java («Противостояние интервьюеру»)]. — Параллелизм в Java — [Основы многопоточности («Противостояние интервьюеру»)]. — [CAS («Противостояние интервьюеру»)]. — [Синхронизация («Противостояние интервьюеру»)]. — [AQS и ReentrantLock («Противостояние интервьюеру»)]. — [Пулы потоков («Противостояние интервьюеру»)]. — [ThreadLocal («Противостояние интервьюеру»)]. — [CountDownLatch и CyclicBarrier («Противостояние интервьюеру»)]. — [Зачем нужна модель памяти Java? («Противостояние интервьюеру»)]. — [Модель памяти Java («Противостояние интервьюеру»)]. — Виртуальная машина Java — [Что происходит при компиляции и выполнении кода на Java? («Противостояние интервьюеру»)]. — [Механизм делегирования родительских прав («Противостояние интервьюеру»)]. — [Структура памяти JVM («Противостояние интервьюеру»)]. — [Механизмы сборки мусора («Противостояние интервьюеру»)]. — [Сборщик мусора CMS («Противостояние интервьюеру»)]. — [G1 — сборщик мусора («Противостояние интервьюеру»)]. — [Оптимизация JVM («Противостояние интервьюеру»)]. — Коллекции в Java — [List («Противостояние интервьюеру»)]. — [Map («Противостояние интервьюеру»)]. — Spring — [Spring MVC («Противостояние интервьюеру»)]. — [Основные принципы Spring («Противостояние интервьюеру»)]. — [Жизненный цикл Spring Bean («Противостояние интервьюеру»)]. — Redis — [Redis («Противостояние интервьюеру»)]. — [Постоянство Redis («Противостояние интервьюеру»)]. — [Архитектура главный-подчиненный Redis («Противостояние интервьюеру»)]. — [Разделение и кластеризация Redis («Противостояние интервьюеру»)]. — Очереди сообщений — [Kafka («Противостояние интервьюеру»)]. — [Проблемы, которые следует учитывать при использовании Kafka («Противостояние интервьюеру»)]. — MySQL — [Индексы MySQL («Противостояние интервьюеру»)]. — [Транзакции, блокировки и MVCC в MySQL («Противостояние интервьюеру»)]. Оптимизация MySQL
— Сценарии проекта: * Как реализовать идемпотентность и дедупликацию? * Как проектировать систему при быстро меняющихся требованиях? * Какие существуют шаблоны проектирования?
— Компьютерные сети: * TCP. * HTTP.
Серия «Собеседование: первый сезон», версия с картинками
— Резюме: * Как написать резюме?
— Основы Java: * Java-аннотации. * Дженерики в Java. * NIO в Java. * Рефлексия и динамические прокси в Java.
— Параллелизм в Java: * Основы многопоточности. * CAS. * Синхронизация. * AQS и ReentrantLock. * Пулы потоков. * ThreadLocal. * CountDownLatch и CyclicBarrier. * Зачем нужна модель памяти Java? * Модель памяти Java: введение. * Виртуальная машина Java: * Что происходит при компиляции и выполнении кода на Java?
В запросе представлен текст технической направленности из области разработки и тестирования программного обеспечения. Основной язык текста запроса — китайский. MySQL индексы
В этой статье мы рассмотрим основные концепции индексов в MySQL, включая транзакции, блокировки и многоверсионность контроля (MVCC). Мы также обсудим оптимизацию MySQL и способы настройки производительности.
Транзакции, блокировки и MVCC в MySQL
Транзакция — это набор операций, которые должны быть выполнены как единое целое. Если хотя бы одна операция в транзакции завершается неудачно, то вся транзакция откатывается. Блокировки используются для обеспечения целостности данных во время выполнения транзакций. В MySQL используется механизм многоверсионности контроля (MVCC), который позволяет нескольким транзакциям одновременно читать одни и те же данные без блокировок. Это значительно повышает производительность системы.
Оптимизация MySQL
Оптимизация MySQL включает в себя настройку параметров сервера, оптимизацию запросов и использование индексов. Настройка параметров сервера позволяет оптимизировать работу MySQL под конкретные требования приложения. Оптимизация запросов позволяет улучшить производительность конкретных запросов. Использование индексов позволяет ускорить поиск данных в таблицах.
Настройка производительности MySQL
Настройка производительности MySQL включает в себя мониторинг системы, анализ запросов и оптимизацию структуры базы данных. Мониторинг системы позволяет отслеживать работу MySQL и выявлять узкие места. Анализ запросов позволяет определить наиболее ресурсоёмкие запросы и оптимизировать их. Оптимизация структуры базы данных позволяет уменьшить размер таблиц и ускорить выполнение запросов.
Это перевод части текста из запроса. Перевод выполнен с учётом контекста и направлен на передачу основной информации. Почему PUSH-уведомления часто дают сбой?
Три Воу потратил 10 минут на то, чтобы закончить одно требование.
Java-контейнеры
Многопоточность: обзор. Поток данных в Java: основы и особенности
ThreadLocal — это простой способ работы с данными, который позволяет хранить информацию для каждого потока отдельно. Это может быть полезно при разработке многопоточных приложений.
Основы работы с потоками
В статье рассматриваются основные аспекты работы с многопоточностью в Java. Автор рассказывает о ThreadLocal, синхронизации, блокировках, пулах потоков, а также о других важных аспектах разработки многопоточного кода.
Многопоточность — это технология, которая позволяет выполнять несколько задач одновременно. Она широко используется в современных приложениях для повышения производительности и эффективности работы. Однако работа с несколькими потоками может привести к проблемам, таким как конфликты доступа к данным и непредсказуемое поведение программы.
Для решения этих проблем используются различные механизмы синхронизации и блокировки. В статье подробно рассматриваются эти механизмы и их применение в реальных проектах.
Также автор рассказывает о пулах потоков, которые позволяют более эффективно использовать ресурсы системы при работе с большим количеством задач. Пулы потоков обеспечивают автоматическое управление ресурсами и упрощают разработку многопоточных программ.
Кроме того, в статье обсуждаются проблемы, связанные с использованием многопоточности, такие как тупики (deadlock) и голодание (starvation). Автор даёт рекомендации по предотвращению этих проблем и обеспечению надёжной работы многопоточных систем.
Статья будет полезна разработчикам, которые хотят освоить основы работы с многопоточными приложениями на Java.
Другие темы статьи
Автор также рассматривает следующие темы:
Эта статья представляет собой обзор основных аспектов работы с многопоточностью на Java и может служить отправной точкой для более глубокого изучения этой темы.
Прокси-паттерн
Прокси-паттерны используются для обеспечения контроля доступа к объекту или для изменения его поведения. Они могут использоваться для различных целей, таких как кэширование, аутентификация, авторизация и т. д.
Существует несколько видов прокси-паттернов:
— Удалённые прокси (Remote Proxy) используются для доступа к удалённым объектам. — Виртуальные прокси (Virtual Proxy) используются для оптимизации доступа к объектам. — Защитные прокси (Protection Proxy) используются для контроля доступа к объектам. — Умные прокси (Smart Proxy) используются для изменения поведения объектов.
В этой статье рассматривается один из видов прокси-паттерна — прокси-сервер. Прокси-серверы используются для кэширования данных и обеспечения безопасности сети. Они могут быть реализованы различными способами, такими как прозрачные прокси, серые прокси и обратные прокси.
Основные понятия
Прокси — это объект, который выступает посредником между клиентом и сервером. Он может выполнять различные функции, такие как кэширование данных, аутентификация и авторизация, балансировка нагрузки и т.д.
Кэширование — это процесс сохранения данных в памяти для ускорения доступа к ним. Кэширование может повысить производительность приложения за счёт уменьшения количества запросов к серверу.
Аутентификация — это проверка подлинности пользователя. Аутентификация может осуществляться с помощью имени пользователя и пароля, сертификата или другого механизма.
Авторизация — это предоставление пользователю определённых прав и разрешений. Авторизация может зависеть от роли пользователя, его местоположения, времени суток и других факторов.
Балансировка нагрузки — это распределение запросов между несколькими серверами. Балансировка нагрузки может обеспечить высокую доступность и отказоустойчивость системы.
Прокси-серверы могут быть полезны в различных ситуациях, таких как:
— Защита сети от несанкционированного доступа. — Повышение производительности за счёт кэширования данных. — Обеспечение безопасности данных при передаче по сети. — Балансировка нагрузки между несколькими серверами.
В этой статье рассказывается о том, как работают прокси-серверы и какие функции они выполняют. Также приводятся примеры использования прокси-серверов в реальных проектах. Три минуты, чтобы освоить шаблонный метод!
Одна минута, чтобы освоить паттерн «шаблонный метод»!
Это и есть паттерн «цепочка обязанностей»?
Шаблон «цепочка обязанностей»: общий код
Паттерн «строитель»
30 страниц про HTTP
HTTP — это так просто
Популярные вопросы на собеседованиях по HTTP
Стоит ли разбираться в HTTP2 и HTTPS?
XML — это так просто
JSON — это так просто
Вопросы по XML и JSON на собеседованиях
Резюме по Servlet
Tomcat — это так просто
Первая статья о Servlet: введение в Servlet, протокол HTTP, структура веб-каталога, создание базовой программы на Servlet, жизненный цикл Servlet
Вторая статья о Servlet: диаграмма вызовов Servlet, детали Servlet, ServletConfig, ServletContext
Третья статья о Servlet: краткое введение в request и response, распространённые способы использования response Servlet
Servlet четвёртый урок: методы объекта запроса, применение.
Servlet пятый урок: введение в сессию, API, подробное объяснение, применение, отличие от Cookie.
Servlet шестой урок: введение в сеанс, API, жизненный цикл, применение, сравнение с Cookie.
Вопросы для собеседования по Tomcat и Servlet.
JSP
JSP: итоги.
Первый урок JSP: введение, принцип работы, жизненный цикл, синтаксис, инструкции, поведение.
Второй урок JSP: встроенные объекты, их введение, четыре области видимости, сценарии применения.
Третий урок JSP: JavaBean, поведение JSP — JavaBean.
Четвёртый урок JSP: EL-выражения, получение различных типов данных, 11 встроенных объектов, выполнение операций, отображение данных, пользовательские функции, библиотека методов fn.
Пятый урок JSTL: введение, core, fn, fmt.
Шестой урок JSP: создание собственных тегов, традиционные теги.
Седьмой урок JSP: простые теги, использование, интерфейс DynamicAttribute.
Вопросы для собеседования по JSP.
Слушатели и фильтры
Итоги по слушателям и фильтрам.
Первый урок по фильтрам: введение, начало работы, простые примеры использования.
Второй урок по фильтрам: кодирование, чувствительные слова, сжатие, экранирующие фильтры.
Первый урок по слушателям: основные понятия, различные слушатели сервлетов.
Введение в JDBC, использование JDBC для подключения к базе данных, простой инструмент класса.
JDBC (Java Database Connectivity) — это стандарт взаимодействия Java-приложений с различными базами данных. Он предоставляет разработчикам возможность писать код, который может работать с разными типами баз данных без необходимости переписывать код для каждой из них.
В статье рассказывается о том, что такое JDBC и как он работает, а также о простом инструменте класса, который можно использовать для работы с базами данных через JDBC.
PreparedStatement, пакетная обработка, обработка двоичных данных, автоматический первичный ключ, вызов хранимых процедур и функций.
PreparedStatement — это класс в Java, который используется для выполнения SQL-запросов с параметрами. Пакетная обработка позволяет выполнять несколько запросов или операций за один раз, что может повысить производительность. Обработка двоичных данных позволяет работать с данными, которые не являются текстовыми, например, изображениями или аудио. Автоматический первичный ключ — это свойство таблицы базы данных, которое автоматически генерирует уникальное значение для первичного ключа при добавлении новой записи. Вызов хранимых процедур и функций позволяет выполнять сложные операции на стороне базы данных без необходимости передавать все данные туда и обратно.
Транзакции, метаданные, модификация инструмента класса JDBC.
Транзакция — это набор операций, которые должны быть выполнены как единое целое. Если хотя бы одна операция в транзакции завершается неудачно, то вся транзакция откатывается, и все изменения отменяются. Метаданные — это информация о структуре и содержании базы данных. Модификация инструмента класса JDBC позволяет адаптировать его под свои нужды, добавляя или изменяя функциональность.
Пул соединений с базой данных, DbUtils фреймворк, пагинация.
Пул соединений — это механизм, который позволяет повторно использовать существующие соединения с базой данных вместо того, чтобы каждый раз создавать новые. Это может ускорить работу приложения и снизить нагрузку на сервер базы данных. DbUtils — это фреймворк для работы с JDBC, который предоставляет дополнительные функции и удобства. Пагинация — это способ разбиения результатов запроса на страницы, что позволяет отображать только часть данных за раз и упрощает навигацию по ним.
Вопросы для собеседования по JDBC.
Вопросы, которые могут задать на собеседовании по теме JDBC, включают в себя:
Druid — пул соединений с базой данных.
Druid — это ещё один пул соединений, который предлагает некоторые дополнительные возможности, такие как мониторинг и управление соединениями. В статье описывается, как настроить и использовать Druid для управления соединениями с базой данных.
AJAX
Вступление в AJAX.
AJAX (Asynchronous JavaScript and XML) — это технология, которая позволяет обновлять части веб-страницы без перезагрузки всей страницы. Это делает веб-приложения более отзывчивыми и интерактивными. В статье даётся общее представление о том, как работает AJAX и какие преимущества он предоставляет.
Применение AJAX.
Статья описывает различные способы использования AJAX в веб-разработке, включая отправку форм, загрузку файлов, обновление контента и т. д. Также приводятся примеры кода на JavaScript, который демонстрирует эти методы.
Часто задаваемые вопросы об AJAX на собеседованиях.
Примеры вопросов, которые могут задавать на собеседованиях по теме AJAX, включают:
Полное объяснение кроссдоменного AJAX.
Кроссдоменный AJAX — это когда AJAX-запросы отправляются на серверы, расположенные в разных доменах или протоколах. Это может вызвать проблемы с безопасностью и конфиденциальностью, поэтому существуют различные методы их решения. В статье подробно рассматриваются эти методы и их особенности.
JavaWeb: небольшой проект
Файлы: загрузка и скачивание.
Проект представляет собой веб-приложение на Java, которое позволяет пользователям загружать файлы на сервер и скачивать их оттуда. В проекте используются сервлеты, JSP и HTML для создания пользовательского интерфейса и обработки запросов.
Режимы разработки веб-приложений.
Веб-приложение может быть разработано в различных режимах, таких как режим разработки, режим тестирования, режим производства и т. п. Каждый режим имеет свои особенности, связанные с конфигурацией, безопасностью, производительностью и другими аспектами. В статье описываются эти режимы и их различия.
Пользовательский логин и регистрация с использованием JDBC.
Проект реализует систему аутентификации пользователей с использованием базы данных MySQL и JDBC. Пользователи могут регистрироваться, входить в систему и выходить из неё. Проект также обеспечивает защиту от распространённых атак, таких как SQL-инъекции и XSS.
Пример корзины покупок.
Проект демонстрирует, как можно реализовать корзину покупок в веб-приложении. Корзина позволяет пользователям добавлять товары в список, просматривать его содержимое и оформлять заказ. Проект использует базу данных для хранения информации о товарах, пользователях и заказах.
Система управления взаимоотношениями с клиентами.
CRM (Customer Relationship Management) — система, предназначенная для автоматизации процессов взаимодействия с клиентами. Она позволяет хранить информацию о клиентах, истории их заказов, предпочтениях и т.д. В статье рассматривается пример реализации такой системы на основе Java и MySQL.
Система контроля доступа.
Система контроля доступа — это система, которая ограничивает доступ к ресурсам на основе определённых правил. Она может использоваться для защиты конфиденциальной информации, предотвращения несанкционированного доступа и т.п. В статье приводится пример реализации системы контроля доступа на основе ролей пользователей. Struts2 [OGNL, ValueStack]
Struts2 — это фреймворк для разработки веб-приложений на Java. Он предоставляет разработчикам набор инструментов и библиотек для создания веб-сайтов и приложений.
OGNL (Object-Graph Navigation Language) — язык выражений, который используется в Struts2 для доступа к объектам и их свойствам.
ValueStack — стек значений, который хранит данные о запросе и ответе в процессе обработки запроса.
В тексте не удалось найти перевод некоторых фрагментов. Вот перевод того, что получилось распознать:
«Struts2 интегрирует различные технологии и библиотеки, такие как OGNL и ValueStack, для упрощения разработки веб-приложений. Это позволяет разработчикам сосредоточиться на бизнес-логике приложения, а не на низкоуровневых деталях работы с HTTP и сервлетами».
Struts2: интеграция Spring
Spring — это популярный фреймворк, который предоставляет множество функций для упрощения разработки приложений на Java. В тексте говорится о том, как интегрировать Struts2 и Spring для создания более мощных и гибких приложений.
Текст не содержит перевода этой части.
Mybatis
MyBatis — это инструмент для работы с базами данных, который упрощает процесс написания SQL-запросов и обеспечивает более высокий уровень абстракции от деталей работы с базой данных.
В тексте рассказывается о различных аспектах использования MyBatis, таких как конфигурация, сопоставление объектов с таблицами базы данных, кэширование, прокси и другие.
В этом разделе подводятся итоги использования MyBatis и обсуждаются его преимущества и недостатки.
Этот раздел представляет собой введение в MyBatis. Здесь рассказывается о его основных функциях и возможностях.
Здесь рассказывается о том, как настроить MyBatis для работы с конкретной базой данных. Описываются различные параметры конфигурации и их значения по умолчанию.
Эта часть посвящена сопоставлению объектов Java с таблицами базы данных в MyBatis. Описывается, как создать маппинг и как использовать его для выполнения запросов.
Раздел рассказывает о дополнительных возможностях MyBatis, таких как кэширование результатов запросов, использование прокси-объектов и обратное проектирование схемы базы данных из кода.
Описывается, как интегрировать MyBatis с Spring для получения дополнительных возможностей, таких как управление транзакциями и внедрение зависимостей.
Приведены примеры вопросов, которые могут быть заданы на собеседовании по теме MyBatis.
Spring Family
Семейство Spring включает в себя несколько фреймворков и библиотек, которые предоставляют разработчикам инструменты для создания приложений на Java.
Подводятся итоги использования Spring IoC (Inversion of Control) и AOP (Aspect-Oriented Programming) для управления зависимостями и аспектно-ориентированного программирования. Также обсуждается использование транзакций в Spring.
Представляет собой обзор основных концепций и возможностей Spring.
Объясняется, как работает внедрение зависимостей в Spring и как его можно использовать для упрощения кода и улучшения тестируемости.
Обсуждается, как реализовать аспектно-ориентированное программирование в Spring с помощью аннотаций и XML-конфигурации.
Рассматриваются основные аспекты использования модуля DAO (Data Access Object) в Spring для обеспечения доступа к данным.
Рассказывается о Spring MVC (Model-View-Controller), который является основой для создания веб-приложений с использованием Spring. Обсуждаются основные компоненты и принципы работы.
Представлено краткое введение в Spring MVC, включая основные концепции и шаги по созданию простого веб-приложения.
Подробно рассматривается процесс разработки контроллера в Spring MVC. Объясняются основные методы и атрибуты, а также приводятся примеры кода. JPA Demo
Это демонстрационная версия приложения, использующего технологию JPA (Java Persistence API) для работы с данными.
SpringBoot + SpringData JPA 管理系统
В статье описывается создание системы управления на основе SpringBoot и Spring Data JPA.
SSH-проект
Статья описывает проект, связанный с SSH (Secure Shell), который включает в себя интеграцию различных функций и компонентов.
SSH: история интеграции
Описывается процесс интеграции различных функций в рамках проекта, связанного с SSH.
Тестирование интеграции SSH-проекта: система управления персоналом предприятия
Рассматривается тестирование интеграции функций SSH в системе управления персоналом.
Чтение SSH-проекта ERP
Обсуждается использование SSH в проекте ERP (Enterprise Resource Planning).
Налоговые услуги: часть 1 (пользовательский модуль)
Описаны функции пользовательского модуля в системе налоговых услуг, включая добавление, изменение, удаление данных, работу с датами, загрузку и изменение аватара.
Налоговые услуги: часть 2 (пользовательский модуль)
Продолжается описание функций пользовательского модуля, включая проверку уникальности пользователя и поиск по географическим координатам (POI).
Оптимизация обработки налоговых услуг: часть 3
Представлены улучшения в обработке данных в системе налоговых услуг, такие как обработка исключений и извлечение базового действия.
Роли и разрешения в налоговых услугах: часть 4
Рассмотрены вопросы ролей и разрешений пользователей в системе налоговых услуг.
Вход в систему и блокировка налоговых услуг: часть 5
Описана реализация входа в систему, блокировки и других функций безопасности в системе налоговых услуг.
Управление информацией в налоговых услугах: часть 6
Представлена работа с информацией в системе налоговых услуг, включая использование редактора UEditor, асинхронный обмен данными и другие функции.
Обработка жалоб в налоговых услугах: часть 7
Описано управление жалобами в системе налоговых услуг, включая отображение информации о жалобах, обработку ответов и другие аспекты.
Заключение по налоговым услугам
Подведены итоги разработки системы налоговых услуг.
Redis
Статьи описывают различные аспекты использования Redis, начиная с основ и заканчивая продвинутыми функциями.
Изучение Redis с нуля: уровень «Бронзовый»
Начальный курс по изучению Redis.
Изучение Redis с нуля: уровень «Серебряный»
Продолжение изучения Redis на более продвинутом уровне.
Изучение Redis с нуля: уровень «Золотой»
Завершение курса по изучению Redis с рассмотрением сложных тем. Перевод текста на русский язык:
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )