「 SPRING 」 一月 09, 2022

Spring boot 应用不重新打包,添加新类

文章字数 2.8k 阅读约需 3 mins.

因为某些约束,我们可能不希望对 Spring Boot 应用重新打包,却又需要调整其中的某些行为(如:添加新类),有没有办法?

1. PropertiesLauncher

修改启动命令,不再是使用 java...

查看全文

「 SPRING 」 一月 09, 2022

Spring boot 应用不重新打包,添加新类

文章字数 2.8k 阅读约需 3 mins.

因为某些约束,我们可能不希望对 Spring Boot 应用重新打包,却又需要调整其中的某些行为(如:添加新类),有没有办法?

1. PropertiesLauncher

修改启动命令,不再是使用 java -jar 方式启动,而是使用传统的 Java 应用启动方式,先通过 -cp 参数将 Fat Jar (example.jar)加入 classpath,然后指定运行的主类 PropertiesLauncher,并且通过 -D 参数,将系统属性传入主类中。

$ java -cp example....
查看全文

「 DEVOPS 」 一月 02, 2022

使用 easyctl 在多主机上并行执行脚本

文章字数 5.3k 阅读约需 5 mins.

当有大批量主机,需要进行类似的操作时,推荐一个不需要配置 SSH 免密登录 的简单工具 —— easyctl。

上面这个场景,主要使用到了 easyctl 中的 执行指令集 - 跨主机并行执行shell,easyctl 提供的其他功能及使用方式,可见 源码 或文档中的其他部分。

因为 跨主机并行执行 shell 这个功能实际就是通过 ssh 连接到各主机,并行执行指定命令,并将最终直接结果汇总,所以理论上只要支持 ssh 的环境,都可以使用 easyctl 的这个功能,比如 Mac,甚至 Windows...

查看全文

「 JAVA 」 十二月 26, 2021

ThreadLocal 泄露实例

文章字数 10k 阅读约需 9 mins.

Java 中,ThreadLocal 是线程本地变量,可用来在多线程环境,为每个线程保存一份独立的变量,不会被其他线程所操作。

关于 ThreadLocal 详细的介绍及用法,可以查阅 An Introduction to ThreadLocal in Java 。

线程的创建和销毁是很昂贵的操作,需多线程执行时,一般会使用线程池。当线程池和 ThreadLocal 同时使用时,因为线程在使用完成后会归还给线程池,供下次使用,而并非销毁再重新创建,所以如果之前线程存入的本地变量没有进行清理,后续...

查看全文

「 JAVA 」 十二月 19, 2021

无法动态附加到 Java 进程?

文章字数 5.5k 阅读约需 5 mins.

找出 Java 应用频繁 Full GC 的原因 中介绍了一些 JDK 中自带的命令,
如:jmap、jstat 等,但在实际使用时,可能会遇到类似如下的问题:

$ jmap -histo 2867
2867: Unable to open socket file: target process not responding or HotSpot VM not loaded
The -F option can be used when the target process is not responding...
查看全文

「 JAVA 」 十二月 12, 2021

找出 Java 应用频繁 Full GC 的原因

文章字数 12k 阅读约需 11 mins.

一个线上的 Java 应用(JDK1.8,默认 Parallel GC)在运行几天之后,出现频繁 Full GC 的现象,使用 jstat -gcutil <pid> 2s 观察,状态大致如下:

$ jstat -gcutil 23426 2s
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT
  0.00   0.00  93.17  99.99  83.81  78.48   1814   90.687    45  261.660  352.347
  0.00   0.00  97.30  99...
查看全文

「 JAVA 」 十二月 05, 2021

使用 Java 8 Stream 优雅的找出重复数据

文章字数 5.9k 阅读约需 5 mins.

原文地址:https://wyiyi.github.io/amber/2021/11/30/stream/

最近经常遇到问题:要获取到集合中某一属性值重复的数据,除了for 循环,还有更简单得处理方式?

先来引入 Stream 流的概念。

Stream API(java.util.stream.*) 是 Java 8 中新增重要特性。
Stream 将要处理的元素集合看作一种流,由于java.util.stream.Stream 是一个 Interface ,在其中提供了函数方法,
使流在管道中进行...

查看全文

「 MAC 」 十一月 28, 2021

iTerm2 快速通过跳板机 ssh 远程登录

文章字数 6.2k 阅读约需 6 mins.

假设有 A、B、C …… 几批主机:

  • a0 为跳板机,a1 ~ an 为实际要操作的目标远程主机
  • b0 为跳板机,b1 ~ bn 为实际要操作的目标远程主机

以此类推,共有 n 批。

客户端能联通各跳板机,但无法直接联通目标主机,每批主机之间网络隔离。

需通过 ssh 远程登录目标主机时,是比较痛苦的一件事,一堆 ip 和密码不便记忆,从文档里找又效率很低。

首先想到的是配置跳板机和各目标主机之间的 SSH 免密登录,能够起到不用记忆密码的作用,但需要配置客户端和各个跳板机的免密登录,以及各...

查看全文

「 K8S 」 十一月 21, 2021

【转】kubernetes中静态pod学习笔记

文章字数 11k 阅读约需 10 mins.

原文地址:https://www.jianshu.com/p/eac82da1a366

最近翻看kubelet源码,看到配置项的时候,发现了静态pod这一概念。

而本人也是使用kubesphere对k8s进行管理的,其中kubesphere启动k8s控制节点服务(控制器、调度器、apiserver)也是通过静态pod进行管理的。

由此,想学习学习静态pod的概念。

什么是静态pod?

由kubelet直接管理的pod被称为静态pod

我们通常通过以下方式创建pod:

  1. 调用api-server...
查看全文

「 DATABASE 」 十一月 14, 2021

是时候升级 MySQL Connector/J 到 8.0 了

文章字数 7.4k 阅读约需 7 mins.

使用 JDBC 连接 MySQL 时,你是否也对 JDBC URL 连接串中的参数感到很神秘?

例如:

jdbc:mysql://localhost:3306/hinex?useSSL=false&serverTimezone=UTC

连接串的通用格式为:

protocol//[hosts][/database][?properties]

那么可用的 properties 都有哪些?默认值和可用的值都有什么,又都是什么含义呢?

这就要从 Connector/J 说起了。

Connector...

查看全文

「 K8S 」 十一月 07, 2021

【转】Linux CAP介绍与k8s下配置使用

文章字数 13k 阅读约需 12 mins.

原文地址:https://www.jianshu.com/p/a7f6c4f420fa

关于capability

发音

美[keɪpəˈbɪləti] 英[keɪpə'bɪləti]

译为能力或功能,一般缩写CAP,以下我们简称Capabilities为CAP

从内核2.2开始,Linux将传统上与超级用户root关联的特权划分为不同的单元,称为CAP。

CAP作为线程(Linux并不真正区分进程和线程)的属性存在,每个单元可以独立启用和禁用。
如此一来,权限检查的过程就变成了:
在执行特...

查看全文
加载更多
0%