站长推荐

Gitlab企业版证书生成

一、安装ruby环境以及gem包管理工具 我的电脑是mac,所以无需安装 安装ruby包依赖gitlab、gitlab-license、openssl sudo gem install gitlab sudo gem install gitlab-license sudo gem install openssl 二、编写创建license的rube脚本,并生成license文件 文件内容如下: createlicense.rb require 'openssl' require 'gitlab/license' # 生成密钥对 key_pair = OpenSSL::PKey::RSA.g……

G1GC调优时遇到的坑

近期,出于某些原因,对线上项目进行JVM调优,希望能将年轻代大小固定下来而非动态分配,于是在启动参数上增加了-Xmn=3G ,结果上达到了预定,而然在查看监控是却发现,原本程序gc的STW时间只需要30ms左右,加完这个参数后却达到了300ms,相差近10倍,这是一个很严重的问题了 于是我去查了oracle关于g1相关的文档,终于找到了答案: 评估和微调 G1 GC 时,请记住以下建议: 年轻代大小:避免使用 -Xmn 选项或 -XX:NewRatio 等其他相关选项显式设置年轻代大小。固定年轻代的大小会覆盖暂停时间目标。 原本参数中设置了-XX:MaxGCPauseMillis=10……

Jackson 2.11.0无法使用@JsonCreator反序列化枚举值

最近升级了spring boot的版本,结果发现原本使用@JsonCreator反序列化枚举值都报错了,报错内容如下: .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Input mismatch reading Enum `xyz.jieee.demo.DemoEnum`: properties-based `@JsonCreator` ([method xyz.j……

Spring boot 2.4.2 redisson报错问题排查

这几天我把项目里的spring boot升级到了最新版本:2.4.2,然后启动的时候发现redisson报错了,确切的说是redisson依赖的netty报错了。报错内容如下: 2021-01-31 20:01:30.788 WARN 1764 --- [ main] i.n.r.d.DnsServerAddressStreamProviders : Unable to load io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider, fallback to system defaults. Th……

当NestJS遇上Next.js

Nest (NestJS) 是一个用于构建高效、可扩展的Node.js服务器端应用程序的开发框架。它利用 JavaScript 的渐进增强的能力,使用并完全支持TypeScript(仍然允许开发者使用纯 JavaScript 进行开发),并结合了 OOP (面向对象编程)、FP (函数式编程)和 FRP (函数响应式编程)。 Next.js是一个可用于生产环境的服务端渲染框架。 (ps:这两个框架名字长得还真像,可千万别搞错了) NestJS更专注一服务端,而Next.js更专注也页面的渲染,如果将这两个框架结合在一起,岂不是完美?本文将介绍如何将这两个框架整合到一起使用。 初始化 首先,……

create-react-app扩展webpack配置

会React的人对create-react-app(下文简称CRA)这个脚手架一定不会陌生,这是react官方推出的一个脚手架。虽然在使用上很方便,但它的webpack配置却是固定的,并没有提供修改的入口,这点正是让人又爱又恨。虽然官方提供了eject这个命令可以弹出所有配置文件,但当你使用了这个命令后,后续如果想升级脚手架,又是一个头痛的问题。本文将介绍如何在不执行eject命令的前提下,拓展CRA的webpack配置。 一、官方支持的配置拓展点 a. CRA支持普通的css文件,同时也支持css module,只需要将css的后缀名命名为*.module.css,就能开启css modu……

Next.js如何接入百度统计

Next.js是一个非常优秀的React服务端渲染解决方案。一般做服务端渲染,大多数因素都是为了SEO,既然做了SEO,那么肯定会嵌入一些网站统计代码,本文将介绍如何在Next.js内使用百度统计代码。 一、获取百度统计代码 这一步就不多介绍了,详细大部分人都知道。 二、嵌入统计代码 next.js并没有像其他react框架一样有一个index.html入口,那么统计代码该放在哪个地方呢?next.js官方提供了这两个入口可以放置一些全局的代码:自定义Document或者自定义App。 官方文档如下: https://nextjs.org/docs/advanced-features/……

如何拉取k8s.grc.io、quay.io的镜像

最近有好多人问我如何获取k8s.grc.io、quay.io上面的镜像,众所周知,由于网络的限制,国内用户时无法访问这些网站的,这里介绍一种方法将这些镜像同步下来。 准备 首先,需要一个仓库用于放置你需要同步的镜像,可以使用官方的hub.docker.io,这里我推荐使用阿里云的镜像仓库。 创建一个命名空间 获取登录凭证(密码就是你阿里云的登录密码) 至此,镜像仓库准备完毕 拉取镜像 要拉取镜像,那就一定要主备一台国外的服务器了,那如何免费获取一台国外服务器呢?其实现在有很多免费的k8s实验平台,一般可提供几小时的免费主机,我们可以利用这些主机来做镜像同步。 这里我推荐……

k8s删除Terminating状态的namespace

在k8s中,namespace只有两种状态,Active和Terminating,后者一般比较少见,只有当命名空间被删除,而命名空间下还存在运行的资源时,才会出现terminating状态。当命名空间下资源回收后,命名空间会被自动删除。当也存在一些意外情况,导致已经没有相关资源了,而namespace依然在terminating状态下无法删除,这里介绍一种删除方法。 先执行以下命令,获取namespace信息 kubectl get namespace <terminating-namespace> -o yaml 得到以下信息: apiVersion: v1 kind: Namespace……

使用rook在k8s管理ceph集群

ceph是一种高度扩展的分布式存储方案,能够提供对象、文件和块存储,也可以为k8s提供持久化存储能力。然而,ceph的集群搭建相对还是计较复杂的,而且既然引入了k8s,何不让k8s为我们管理ceph集群呢? Rook的出现为上面的问题提供了解决方案。Rook是一个自管理的分布式存储编排系统,可以为k8s提供便利的存储解决方案。Rook本身不提供春初,而是在k8s和存储系统之间提供了适配层,简化了存储系统的部署与维护。接下来我们就来使用Rook在k8s上搭建一套ceph集群。 环境准备 这里我准备了4台机器作为存储的设备。 配置信息: 系统类型 IP Hostname 磁盘 centos-7……