A simple and efficient short URL conversion service based on SpringBoot.

Overview

Genius Logo

A simple and efficient short URL conversion service based on SpringBoot

What is GeniusShortUrl?

GeniusShortUrl is an open source reactive service that converts long links to short links based on SpringBoot Webflux, which can quickly respond to link conversions and jumps.

  • Blazing Performance

GeniusShortUrl is developed based on SpringBoot Webflux and can naturally receive more concurrent requests. And the project uses Caffeine cache, when the behavior of hitting the cache occurs, the response is extremely efficient.

  • Easy To Use

GeniusShortUrl only needs very simple configuration, such as mysql database connection and cache configuration to run, which is easy to start quickly.

  • Tiny Size

GeniusShortUrl is only about 39MB after packaging, and there is room for further optimization, which is also very friendly to memory usage.

Api

  • /url/shorten Convert incoming long URL to short URL and cache.

  • /url/jump Jump from the visited short link to the long link (original URL), and extract the data from the cache if it hits the cache.

Design Overview

Getting Started

  1. Configure /src/main/resources/application-prod.yml, modify r2dbc.url.r2dbc.mysql related properties.
  2. Execute the SQL script located in the /resources/init-sqls/ path in the configured mysql database to initialize the database tables.
  3. Modify the file url-builder-config.yml to configure the short chain prefix and suffix (the suffix will be used after a hash collision occurs when generating a short chain).
  4. Configurable log output if necessary: ​​log4j2-prod.yml.
  5. Package the jar package and execute it. The production environment (that is, the operating environment corresponding to the file /src/main/resources/application-prod.yml) requires additional parameters spring.profiles.active=prod.

Roadmap

You might also like...

Simple and extensible storage service implementation with optional encryption.

Simple and extensible storage service implementation with optional encryption.

Simple and extensible storage service implementation with optional encryption. About Hole Hole is a simple data storage made with a soul for those who

Aug 13, 2022

SpringBoot based return value types are supported by browsers

SpringBoot based return value types are supported by browsers

Jun 24, 2022

A personal blog based on Vue+SpringBoot+MySql+Redis+Shiro+JWT

A personal blog based on Vue+SpringBoot+MySql+Redis+Shiro+JWT

项目:Vue-SpringBoot-PersonalBlog 个人博客网址:http://www.huchao.vip/blogs CSDN:毛_三月 介绍 一个基于SpringBoot + Vue+MybatisPlus+Shiro+JWT+Redis开发的前后端分离博客项目,带有超级详细开发文档

Dec 20, 2022

The project is a simple vulnerability Demo environment written by SpringBoot

The project is a simple vulnerability Demo environment written by SpringBoot

The project is a simple vulnerability Demo environment written by SpringBoot. Here, I deliberately wrote a vulnerability environment where there are arbitrary file uploads, and then use the `scan` attribute in the loghack configuration file to cooperate with the logback vulnerability to implement RCE.

Dec 14, 2022

Photo live wallpaper with auto dark mode and power-efficient animations

Photo live wallpaper with auto dark mode and power-efficient animations

Pallax Android: Photo Live Wallpaper Pallax Android is an Android app that lets you convert your current static home screen background into a stunning

Dec 17, 2022

Spring-Boot-Plus is a easy-to-use, high-speed, high-efficient,feature-rich, open source spring boot scaffolding

Spring-Boot-Plus is a easy-to-use, high-speed, high-efficient,feature-rich, open source spring boot scaffolding

Everyone can develop projects independently, quickly and efficiently! What is spring-boot-plus? A easy-to-use, high-speed, high-efficient, feature-ric

Dec 31, 2022

Efficient yet Effective plugin to catch X-rayers.

Efficient yet Effective plugin to catch X-rayers.

XCatch Efficient yet effective plugin to catch X-rayers for Minecraft 1.13-1.18. XCatch analizes how a player is mining by looking it how many turns i

Nov 10, 2022

Split into data blocks,In this format, efficient reading can be realized,Avoid unnecessary data reading operations.

Split into data blocks,In this format, efficient reading can be realized,Avoid unnecessary data reading operations.

dataTear 切换至:中文文档 knowledge base dataTear Split into data fragments for data management. In this format, efficient reading can be achieved to avoid un

Dec 15, 2022

backend for a sharing app using SpringBoot, Redis, MySQL, and AWS S3.

backend for a sharing app using SpringBoot, Redis, MySQL, and AWS S3.

moments_v2_backend (Work In Progress) backend for a sharing app using SpringBoot, Redis, MySQL, and AWS S3. This is the second version of my project S

Dec 26, 2022
Comments
  • Roadmap 2022

    Roadmap 2022

    Main Tasks:


    1. Coding

    | Task | Status | | --- | --- | | Add logo | Done | | Edit roadmap | DONE | | Perfect readme | PROGRESS | | Choose an open source license | DONE | | Support multi-level cache | PLANNING | | External configuration file support | PLANNING | | Visual management background | PLANNING |

    2. Tests

    | Task | Status | Comments | | --- | --- | --- | | Unit test | PROGRESS | Need add more test case | | Performance Testing | PLANNING | Need a local server to test |

    roadmap-track 
    opened by icedir 1
Owner
null
A Java SDK for the ScreenshotOne.com API to take screenshots of any URL

jsdk An official Screenshot API client for Java. It takes minutes to start taking screenshots. Just sign up to get access and secret keys, import the

ScreenshotOne.com 5 Jun 7, 2022
SpringBoot service to pick up CAN messages retransmitted by CANBridge and extract certain values for reporting/monitoring/alerting via DataDog

SpringBoot service to pick up CAN messages retransmitted by CANBridge and extract certain values for reporting/monitoring/alerting via DataDog

Grumpy Cricket 2 Mar 12, 2022
A platform that links service providers with clients using Angular & Springboot

Bricoly : Engineer Your Life The Way It Should Be... ?? Description This project's aims to connect people who are able to grant services with clients

Yasser Douslimi 9 May 28, 2022
My first proper GitHub project, I guess. Basically an automated version of the "Battle Royale" short series on Geo Facts' YouTube channel.

State-Royale Made by Pixer415, with some help from ThatOneCalculator This project needs your contributions. New modes/new features/typo fixes/suggesti

null 2 Jun 27, 2022
Short Java programs for practice (OCP) Oracle Certified Professional Java SE 11

OCP-study Short Java programs to practice for (OCP) Oracle Certified Professional Java SE 11 Exam Google document with notes: https://docs.google.com/

Sabina Matjašič 1 May 24, 2022
A short demo of CVE-2021-44228

sample-ldap-exploit A short demo of CVE-2021-44228 Build $ mvn clean verify Run Attacker $ java \ -cp 'attacker/target/sample-attacker.jar:attacker

Philip Oswald 6 Oct 19, 2022
A compact and highly efficient workflow and Business Process Management (BPM) platform for developers, system admins and business users.

Flowable (V6) Maven Central: Docker Images: License: Homepage: https://www.flowable.org/ flowable / flowəb(ə)l / a compact and highly efficient workfl

Flowable 6k Jan 7, 2023
Simple springboot API for addressBook. Supports all REST controllers and have custom error handling for every specific case, also supports redis caching.

AddressBook-SpringBoot-API Simple Springboot API for addressBook with redis cache. Supports all REST controllers and have custom error handling for ev

Shirish Saxena 1 Jan 21, 2022
Lightweight service-based PubSub, RPC and public APIs in Java

kite - service-based RPC, public APIs and PubSub in Java kite is a collection of reactive application messaging libraries that aim at providing high l

teris.io 3 Feb 17, 2022
Simple and extensible identity management service

AuthGuard An easy-to-use, and easy-to-customize, identity server. It supports multiple authentication and authorization options and can be extended to

null 7 Jan 9, 2022