Clay 的技术空间

用进废退 | 艺不压身

思路分析

为了实现数组的快速排序,可以采用分而治之的思想,将数组拆分为多个小的数组,然后再进行排序,最后将所有小数组的排序结果汇总在一起,如下图所示:

阅读全文 »

大纲

1、UidGenerator 分布式 ID 生成器

1.1、概述

UidGenerator 由百度开源并使用 Java 实现的,基于 Snowflake 算法的唯一 ID 生成器。UidGenerator 以组件形式工作在应用项目中, 支持自定义 workerId 位数和初始化策略, 从而适用于 Docker 等虚拟化环境下实例自动重启、漂移等场景。在实现上, UidGenerator 通过借用未来时间来解决 sequence 天然存在的并发限制;采用 RingBuffer 来缓存已生成的 UID, 并行化 UID 的生产和消费, 同时对 CacheLine 补齐,避免了由 RingBuffer 带来的硬件级「伪共享」问题。 最终单机 QPS 可达 600 万。依赖 Java8 及以上版本, MySQL(内置 WorkerID 分配器, 启动阶段通过数据库进行分配;如自定义实现,则数据库非必选依赖)。

阅读全文 »

大纲

1、分布式 ID 简介

1.1、业务背景

在复杂的分布式系统中,往往需要对大量的数据和消息进行唯一标识。比如在美团点评的金融、支付、餐饮、酒店、猫眼电影等产品的系统中数据日渐增长,对数据分库分表后需要有一个唯一 ID 来标识一条数据或消息。具体一点的如订单、骑手、优惠劵也都需要有唯一标识,此时一个能够生成全局唯一 ID 的系统是非常必要的。

阅读全文 »

前言

Next 8.x 原生的暗黑模式

Next 8.x 主题已经原生支持暗黑模式,只需要在 Next 的 _config.yml 配置文件中,将相应的开关打开即可(如下所示):

1
darkmode: true

Next 8.x 主题原生暗黑模式的优缺点:

  • 优点:
    • 配置非常简单
  • 缺点:
    • 缺少切换按钮,默认是根据系统偏好(系统是否处于暗黑模式)来决定是否启用
阅读全文 »

前言

本文适用于 PyCharm 2021.1 专业版的激活,由于 PyCharm 更新到 2021.1 版本后,之前所有的激活方式好像都失效了,所以今天介绍下最新的激活方式。该激活方法适用于 Jetbrains 全家桶任何版本,即使是从官网下载的最新版本,亲测可成功激活。

资源下载

阅读全文 »

1、前言

1.1、OAuth 2.0 介绍

1.2、OAuth 2.0 与 JWT 的关系

  • OAuth 2.0 是一种认证授权的协议规范
  • JWT 是基于 Token 的安全认证协议的实现

OAuth 2.0 的认证服务器签发的 Token 可以使用 JWT 来实现,JWT 轻量且安全。

1.3、基于 OAuth 2.0 认证授权的框架

OAuth 的官网提供了很多开发框架,分为服务器端和客户端,其中服务端和客户端都支持的 Java 框架有四个:Apache Oltu、Spring Security OAuth、Restlet Framework、Keycloak。值得一提的是,Keycloak 为现代应用和分布式服务提供了一套完整的认证授权管理开源解决方案,是一个独立的认证授权服务器;主要是基于 OAuth 2.0 协议实现,同时提供了多种语言库,可以很快速地根据业务需求将 Keycloak 集成到企业项目中去使用。

阅读全文 »

前言

教程目标

构建集成了 Privoxy、Tor、ExpressVPN、SpeedTest 服务的 Docker 镜像,支持使用 SpeedTest 测试 ExpressVPN 的连接速度。Docker 镜像构建成功后,可以利用 Privoxy 与 Tor 在 ExpressVPN 的基础上,实现普通代理与匿名代理服务。

项目地址

阅读全文 »

JWT 签名与验签

公钥与私钥生成

使用 JDK 提供的 keytool 工具生成 JKS 密钥库 (Java Key Store),认证授权服务器会使用私钥对 Token 进行签名,一般将生成的 shop.jks 文件放在 resources 目录下

1
keytool -genkey -alias shop -keyalg RSA -keypass 123456 -keystore shop.jks -storepass 123456

根据私钥生成公钥,将其保存在 public.crt 文件中,用于对 Token 进行验签,一般将其放 resources 目录下

1
keytool -list -rfc --keystore shop.jks | openssl x509 -inform pem -pubkey -noout
阅读全文 »

前言

本教程的内容可能已过时,一切以 Waline 官方文档 为准。

版本说明

软件版本描述
linuxCentOS 7.9
docker20.10.5
mysql5.7.26
node14.17.3
hexo5.4.0
next8.12.1
waline-admin0.18.0
waline-client2.5.1
waline-server1.18.5
阅读全文 »