Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Внести вклад в разработку кода
Синхронизировать код
README.md
stuck-link
Введение
stuck-link — это платформа для создания коротких анонимных цепочек переадресации с высокой степенью параллелизма и возможностью вторичной разработки. Она обеспечивает гибкий механизм настройки по умолчанию, поддерживает генерацию двумерных кодов и легко развёртывается.
Демо-сайт: stuck.top
Архитектура программного обеспечения
- ├─ db — управление версиями базы данных;
- ├─ stuck-link-admin — система управления интерфейсом;
- ├─ stuck-link-charts — графический интерфейс;
- ├─ stuck-link-core — основной модуль;
- ├─ stuck-link-redirect — модуль выполнения коротких цепочек (основная функция).
Инструкция по установке
- Компиляция и развёртывание исходного кода:
- Измените файл конфигурации application.yml в модуле stuck-link-redirect, указав источник данных и источник кэша.
- Скомпилируйте модуль stuck-link-redirect: mvn clean package.
- Поместите файл stuck-link-redirect.jar из каталога target на сервер и запустите его: nohup java -jar stuck-link-redirect.jar &.
- Развёртывание службы stuck-link-redirect с помощью Docker:
- На основе исходного кода внесите изменения в файл конфигурации application.yml.
- Соберите весь проект на сервере: mvn clean package.
- Запустите команду Docker: docker build для создания образа Docker.
- Развёртывание скомпилированного пакета jar:
- Загрузите последнюю стабильную версию пакета: stuck-link-redirect.jar.
- Отрегулируйте файл конфигурации application.yml.
- Выполните развёртывание.
Использование
- Функция короткой цепочки:
- Переадресация короткой цепочки: http://stuck.top/zaeJ9t.
- Создание короткой цепочки: http://stuck.top/short?www.taobao.com или http://stuck.top/short?http://www.taobao.com.
- Восстановление реального адреса короткой цепочки: http://stuck.top/restore?http://stuck.top/zaeJ9t или http://stuck.top/restore?stuck.top/zaeJ9t.
- Двумерный код короткой цепочки:
- Интерфейс двумерного кода: http://link.stuck.top/img/zaeJ9t.
- Анонимный доступ:
-
http://link.stuck.top?www.baidu.com или http://link.stuck.top?http://www.baidu.com.
- Статистика доступа:
- В будущем будет добавлена функция статистики.
Конфигурация
- stuck.address — адрес этого открытого проекта gitee, который также является адресом перехода по умолчанию для несуществующих коротких цепочек.
- stuck.server-path — адрес сервера, на котором развёрнута короткая цепочка, используется для генерации длинных адресов коротких цепочек; неправильная конфигурация может привести к невозможности восстановления реальных адресов через короткие цепочки!
- По умолчанию отключена графическая API-функция для статистики доступа, которая может быть включена путём установки параметра link.charts.api-enabled.
- По умолчанию асинхронные задачи отключены, что можно включить, установив параметр link.async.enabled.
- По умолчанию используется менеджер памяти для управления кешем, который можно настроить с помощью параметра link.cache.type; в настоящее время поддерживаются memory (без поддержки времени истечения срока действия кеша) и redis.
- По умолчанию длина короткой цепочки составляет 6 цифр, которую можно настроить, изменив параметр link.code-length.
- Параметр link.accessToken используется для проверки прав доступа при раскрытии интерфейса, по умолчанию он пуст.
Разработка
Проект использует традиционную модель производителя, конвейера и потребителя, а также предоставляет гибкие возможности управления кешем.
- Построение интерфейса: Builder, используется для преобразования запроса HttpServletRequest в объект передачи.
- Реализация по умолчанию: MessageBuilder, преобразует HttpServletRequest в сообщение.
- Интерфейс производителя: Producer, необходимо связать соответствующий Builder для записи объекта передачи в конвейер.
- Реализация по умолчанию: MessageProducer, записывает сообщение в конвейер.
- Интерфейс конвейера: Pipeline, структура конвейера представляет собой очередь, предоставляющую методы для постановки в очередь и удаления из очереди, а также поддерживающую получение длины объектов в конвейере.
- Реализация по умолчанию: MessagePipline, абстрактный класс конвейера сообщений, обеспечивающий методы постановки сообщения в очередь и извлечения из очереди.
- Реализация класса: ArrayBlockingQueuePipeline, реализация конвейера с использованием ArrayBlockingQueue в качестве нижнего уровня, использующая общую блокировку чтения-записи, производительность относительно низкая.
- Реализация класса: LinkedBlockingQueuePipeline, реализация конвейера с использованием LinkedBlockingQueue в качестве нижнего уровня, использование отдельной блокировки чтения и записи, производительность выше.
- Интерфейс потребителя: Consumer, используется для обработки объектов передачи.
- Реализация по умолчанию: MessageConsumer, используется для потребления объектов сообщений.
- Реализация класса: SimpleMessageConsumer, выводит объекты сообщений на System.out.println.
- Реализация класса: DataBaseMessageConsumer, записывает объекты сообщений в базу данных.
Участие в разработке
- Fork этот репозиторий.
- Создайте ветку Feat_xxx.
- Отправьте код.
- Создайте запрос на вытягивание.
Поиск и устранение проблем
Мы приветствуем ваши вопросы и поддержку, поскольку проект постоянно обновляется. Ваши вопросы и поддержка являются для нас самой большой мотивацией!
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )