短链接服务系统开发

功能简单描述

功能很简单,实现将长网址缩短的功能,如:
https://javadoop.com/post/url-shortener/a/b/c/d/e/f -> https://abc.com/alsk2

为什么要转短链?因为要控制每条短信的字数,对于公司来说,短信里面的字可都是钱呀。

为什么不用 t.cn,url.cn 等短链服务呢,它们生成的链接不是更短吗?
是的,它们确实能实现更短的链接,可是要收钱的,而且这里面充满了商业数据呀。

短链服务总的来说,就做两件事:

  • 将长链接变为短链接,当然是越短越好。
  • 用户点击短链接的时候,实现自动跳转到原来的长链接。
Read more

hashcode

前言

在 Java 的 Object 类中有一个方法:

1
public native int hashCode();

根据这个方法的声明可知,该方法返回一个 int 类型的数值,并且是本地方法,因此在 Object 类中并没有给出具体的实现。

Read more

Sdkman 管理 JDK 版本

前记

JDK 版本越来越多,老是手动下载改环境变量很麻烦。

偶然看到 Sdkman:The Software Development Kit Manager。

它可以管理各种 kit:Ant、Java、Gradle、Maven、Springboot-cli、Groovy、Kotlin、Scala。

Read more

MySQL 各种连接

准备工作

MySQL 版本:10.1.29-MariaDB-6+b1

建表 SQL:

1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE `a_table` (
`a_id` int(11) DEFAULT NULL,
`a_name` varchar(10) DEFAULT NULL,
`a_part` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `b_table` (
`b_id` int(11) DEFAULT NULL,
`b_name` varchar(10) DEFAULT NULL,
`b_part` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Read more

3.Netty from the ground up

Netty 组件:

  • Bootstrap / ServerBootstrap
  • EventLoop
  • EventLoopGroup
  • ChannelPipeline
  • Channel
  • Future / ChannelFuture
  • ChannelInitializer
  • ChannelHandler

接下来将会在本章对上面组件进行介绍,为了避免分散地介绍它们,我们将详细说明它们是如何在一起工作的。

Read more

1.Netty and Java NIO APIs

本章内容主要介绍:

  • Netty 架构
  • 我们为什么需要非阻塞IO
  • 阻塞IO vs 非阻塞IO
  • 了解 JDK 的 NIO实现的问题和 Netty 的解决方法

前面关于 Netty 架构的省略。

异步的设计

整个 Netty 的 API 都是异步的。异步处理并不新鲜,已经出现有一段时间了。在这些年里,IO 经常出现瓶颈,所以异步处理变得越来越重要。

在使用资源时调用异步处理可以变得更有效率,因为当任务进行时,我们可以去干其他事,直到我们收到任务完成的信息。

Read more

Netty's Hello World

Netty 官网

可以到官网下载,也可以直接使用 maven 依赖:

1
2
3
4
5
6
7
8
<dependencies>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.30.Final</version>
<scope>compile</scope>
</dependency>
</dependencies>
Read more