0%

前言

用户认证与授权

  • 用户认证:当用户去访问我们的系统资源的时候,我们的系统需要验证用户的身份(比如账号和密码认证这是一种方式),如果身份合法则认证通过,颁发相应的免死金牌,如果验证没通过,则提示用户请三思而后行,这就是用户认证
  • 用户授权:用户授权一般是与用户认证相辅相成的,在认证的时候,如果认证通过,我们还会将该用户的权限信息给收集起来,并将相应信息作为依据,封装在认证的 HTTP 响应体中。当用户认证成功后,访问我们系统的某一个模块的时候,该模块是需要判断该用户是否有权访问,如果没有访问该资源的访问权限,用户也只有被拒绝访问,这就是用户授权

单点登录(SSO)

单点登录一般常见于分布式应用中,用户只需要登录一次,即认证一次就可访问分布式应用中的所有模块,而不需要每访问一个模块就得去登录认证一次,这样用户嫌麻烦,后端认证逻辑也冗余。

第三方登录(授权码)

比如目前互联网运用中的微信登录、微博登录、支付宝登录等,用户通过授权,第三方应用给予我们系统访问他微信相关信息的权限,我们获取后进行注册,使其称为我们系统的注册人员,实现第三方登录。

阅读全文 »

前言

概述

Kubernetes 系统的各组件需要使用 TLS 证书对通信进行加密,本文使用 CloudFlare 的 PKI 工具集 cfssl 来生成 Certificate Authority (CA) 和其它证书,使用证书的组件如下:

组件 证书
etcd ca.pem、kubernetes-key.pem、kubernetes.pem
kube-apiserver ca.pem、kubernetes-key.pem、kubernetes.pem
kubelet ca.pem
kube-proxy ca.pem、kube-proxy-key.pem、kube-proxy.pem
kubectl ca.pem、admin-key.pem、admin.pem
kube-controller-manager ca-key.pem、ca.pem
阅读全文 »

Kubernetes 概述

Kubernetes 简介

Kubernetes 是 Google 开源的一个容器编排引擎,简称 K8s,是用 8 代替 8 个字符 ubernete 而成的缩写。Kubernetes 可用于管理云平台中多个主机上的容器化的应用,支持自动化部署、大规模扩缩容、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。Kubernetes 提供了应用部署、规划、更新、维护的一种机制。在 Kubernetes 中,可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。

各种部署方式的区别

传统的应用部署方式是通过插件或脚本来安装应用,这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新、回滚等操作;当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能够快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,使用容器可以在 buildrelease 的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境。类似地,容器比虚拟机轻量、更 “透明”,这更便于监控和管理。

阅读全文 »

1、前言

1.1、Knife4j 简介

Knife4j 是为 Java MVC 框架集成 Swagger 生成 Api 文档的增强解决方案,前身是 swagger-bootstrap-ui,致力于 springfox-swagger 的增强 UI 实现。knife4j 为了契合微服务的架构发展,由于原来 swagger-bootstrap-ui 采用的是后端 Java 代码 + 前端 UI 混合打包的方式,在微服务架构下显的很臃肿,因此项目正式更名为 knife4j,更名后主要专注的方面如下:

  • 后端 Java 代码以及前端 UI 模块进行了分离,在微服务架构下使用更加灵活
  • 提供专注于 Swagger 的增强解决方案,不同于只是单纯增强前端 UI 部分

1.2、Knife4j 模块

模块名称 说明
knife4j 为 Java MVC 框架集成 Swagger 的增强解决方案
knife4j-admin 云端 Swagger 接口文档注册管理中心,集成 gateway 网关对任意微服务文档进行组合集成
knife4j-extension chrome 浏览器的增强 swagger 接口文档 ui, 快速渲染 swagger 资源
knife4j-service 为 swagger 服务的一系列接口服务程序
knife4j-front knife4j-spring-ui 的纯前端静态版本,用于集成非 Java 语言使用
swagger-bootstrap-ui knife4j 的前身,最后发布版本是 1.9.6
阅读全文 »

前言

本文主要介绍如何在 Linux 系统上安装和管理 Crontab 服务,适用于 Debian 9、CentOS 7 系统。

Crontab 服务安装(CentOS 7)

1
# yum instal crontabs

Crontab 服务安装(Debian 9)

1
# apt-get install cron
阅读全文 »

前言

由于不蒜子统计不对普通用户提供后台管理的功能,当站点的域名更换后,网站以前的所有统计数据都会重置为零。下面将介绍如何使用抓包工具来分析不蒜子统计的 API,进而实现不蒜子统计数据的更改。

Fiddler 下载

本文使用了 Fiddler,它是一款流行的抓包工具,可以将网络传输发送与接受的数据包进行截获、重发、编辑、转存等操作。本质上,Fiddler 是通过改写 HTTP 代理,让数据从它那里通过,来监控并且截取到网络数据。

抓包分析

1)启动 Fiddler 后,打开本地的浏览器访问博客的 URL,此时在 Fiddler 的界面上可以看到有关不蒜子的请求

1
https://busuanzi.ibruce.info/busuanzi?jsonpCallback=BusuanziCallback_195655659654
阅读全文 »

前言

本文主要介绍如何在 Linux 系统里安装 RTL8812AU 无线 USB 网卡驱动,适用于 Debian、Ubuntu 18/19/20、Centos7/8,其中 Linux 的内核版本必须为大于等于 3.10。

检测系统是否正确识别 RTL8812AU 无线网卡

1
2
# lsusb | grep RTL8812AU
Bus 003 Device 008: ID 0bda:8812 Realtek Semiconductor Corp. RTL8812AU 802.11a/b/g/n/ac 2T2R DB WLAN Adapter

Ubuntu 18/19/20 手动安装 RTL8812AU 无线网卡驱动

1
2
# 系统环境
Linux Ubuntu-20 5.4.0-42-generic #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 安装工具软件
# apt-get install -y git make

# 克隆源码
# git clone https://github.com/gnab/rtl8812au.git

# 进入源码目录
# cd rtl8812au

# 编译驱动
# make

# 安装驱动
# cp 8812au.ko /lib/modules/$(uname -r)/kernel/drivers/net/wireless

# 更新模块依赖
# depmod

# 提示:执行完以上步骤后,正常情况下就可以在系统的设置面板里看到 RTL8812AU 无线 USB 网卡搜索到的 WiFi 列表;如果网卡驱动安装后不生效,可以尝试重启系统。
阅读全文 »

前言

本文来源自《深入理解 Java 虚拟机》。

物理硬件和内存

首先,在单核电脑中处理的问题要简单得多,对内存和硬件的要求,各种方面的考虑没有在多核的情况下复杂。电脑中,CPU 的运行计算速度是非常快的,而其他硬件比如 IO,网络、内存读取等等,跟 CPU 的速度比起来是差几个数量级的。而不管任何操作,几乎是不可能都在 CPU 中完成而不借助于任何其他硬件操作。所以协调 CPU 和各个硬件之间的速度差异是非常重要的,要不然 CPU 就一直在等待,浪费资源。而在多核中,不仅面临如上问题,还有如果多个核用到了同一个数据,如何保证数据的一致性、正确性等问题,也是必须要解决的。目前基于高速缓存的存储交互很好的解决了 CPU 和内存等其他硬件之间的速度矛盾,多核情况下各个处理器(核)都要遵循一定的诸如 MSI、MESI 等协议来保证内存的各个处理器高速缓存和主内存的数据的一致性。

jmm-2

阅读全文 »

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
阅读全文 »