设计模式 - 单例模式的几种实现方式

定义

什么是单例模式? 在整个系统中,一个类永远只有一个实例化的对象,被称为单例

作用

单例模式可以减少一个频繁被创建的重量级对象在多次实例化的时候所花费的时间,当一个类实例化所需要的时间比较长的时候,就可以考虑使用单例了。一来节约了对象多次创建所花费的时间,二来可以节约资源。

Spring Boot 整合shiro使用自定义filter

最近一个项目的认证是用shiro实现的,以前没有做过spring boot + shiro的整合,所以遇到了一些奇奇怪怪的坑

shiro的整合具体这边就不做阐述了,大概有以下几个类:

Spring Boot 整合shiro后的跨域设置

之前的项目都没有跨域的要求,都是通过nginx反代后端接口避免跨域请求的,但是最近的项目要求要处理跨域的请求,所以记录一下

1. 正常的Spring boot项目

基本的spring boot项目只需要写个配置类,实现WebMvcConfigurer接口的addCorsMappings方法

基于Spring做请求参数的加解密/签名校验

之前做的一个对外网关项目,安全需要所以得对参数进行加密校验

参数

接口交互约定了三个参数:

  • timestamp(请求时间戳)
  • data(实际请求数据,经过加密得到的字符串)
  • sign(以HMAC-SHA1算法对参数的签名)

请求方式

接口统一使用json来进行交互,请求的Content-Type统一为application/json

SSH 免密码登录失败

服务器新建用户,ssh关闭密码认证,只允许pubkey。但是root可以以pubkey登录,新建的用户却不可以,经检查后发现,pubkey认证对用户目录等相关路径的权限是有要求的。 可在ssh登录命令后加上 -v 参数,查看具体登录日志

hexo 接入 gitment 作为评论系统

hexo version: v6.4.1

1. 配置

配置文件在 themes/next. 基本配置如下,主要需要填写正确的github_user, github_repo, client_id, client_secret

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# Gitment
# Introduction: https://imsun.net/posts/gitment-introduction/
gitment:
  enable: true
  mint: true # RECOMMEND, A mint on Gitment, to support count, language and proxy_gateway
  count: true # Show comments count in post meta area
  lazy: false # Comments lazy loading with a button
  cleanly: true # Hide 'Powered by ...' on footer, and more
  language: # Force language, or auto switch by theme
  github_user: urzz # MUST HAVE, Your Github Username
  github_repo: blog-comment  # MUST HAVE, The name of the repo you use to store Gitment comments
  client_id: *** # MUST HAVE, Github client id for the Gitment
  client_secret: *** # EITHER this or proxy_gateway, Github access secret token for the Gitment
  proxy_gateway: # Address of api proxy, See: https://github.com/aimingoo/intersect
  redirect_protocol: # Protocol of redirect_uri with force_redirect_protocol when mint enabled

2. 使用

配置文件中设置的 github_repo,client_id, client_secret 需要去github上自行创建。(创建一个repo,和一个 OAuth Apps)

升级内核后无法启动docker

使用了manjaro自带工具更新了linux内核版本到4.14.3之后,docker启动失败

原因

在ststemd中,sudo systemctl status docker.service 不能看到全部的出错信息,只能手动启动docker: sudo dockerd

给博客加上HTTPS

最近因为毕业,有很多的事情要忙,差点忘了还有个很久不写的博客还放在腾讯云优惠学生机上面(差点就寿未终就正寝)

毕业之后腾讯云的学生机也玩不到了,送的域名也是要到期了,干脆就直接域名和服务器都给换了= =

印象深刻的Java空指针异常

今天在公司无意中碰到一个从来没碰到过的空指针异常= =

Java中,空指针异常应该是最常见的异常了。一般来说,碰到 NullPointerException 直接跳到报错的那一行就很容易就解决了。