![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 60
qhh0205
专注于云计算、Dockers、Kubernetes、DevOps、持续集成/持续交付相关技术,企业级 DevOps 落地实践!
展开
-
SpringBoot 使用 Redis 分布式锁解决并发问题
问题背景现在的应用程序架构中,很多服务都是多副本运行,从而保证服务的稳定性。一个服务实例挂了,其他服务依旧可以接收请求。但是服务的多副本运行随之也会引来一些分布式问题,比如某个接口的处理逻辑是这样的:接收到请求后,先查询 DB 看是否有相关的数据,如果没有则插入数据,如果有则更新数据。在这种场景下如果相同的 N 个请求并发发到后端服务实例,就会出现重复插入数据的情况:解决方案针对上面问题,一般的解决方案是使用分布式锁来解决。同一个进程内的话用本进程内的锁即可解决,但是服务多实例部署的话是分布式的,各原创 2021-07-24 17:53:56 · 2850 阅读 · 3 评论 -
SpirngBoot 整合使用 Redis
本文主要介绍如何在 springboot 项目中集成使用 Redis。springboot 将很多基础的工具组件都封装成了一个个的 starter,比如基础的 web 框架相关的 pring-boot-starter-web,操作数据库相关的 spring-boot-starter-data-jpa 等等。如果要操作 Redis,同理需要引入 redis 相关的 starter:spring-boot-starter-data-redis。下面介绍 springboot 集成使用 Redis 的详细过程。原创 2021-07-17 23:20:54 · 357 阅读 · 0 评论 -
Java 解压 gzip 和 tar.gz 文件
在开发过程中有时候会需要解压 gzip 或者 tar.gz 文件,下面封装了一个工具类,可以解压 gzip 和 tar.gz 文件。package com.example.demo.common.utils;/** * Created by qianghaohao on 2021/5/23 */import org.apache.commons.compress.archivers.tar.TarArchiveEntry;import org.apache.commons.compress.a原创 2021-05-23 11:42:22 · 1290 阅读 · 0 评论 -
Java 发送 HTTP 请求的两种常用方法
本文主要介绍在 Java 编程中发送 HTTP 请求的两种常用方法:JDK 原生的 HttpURLConnection 发送 HTTP 请求Apache HhttpClient 发送 HTTP 请求两种方法都可以发送 HTTP 请求,第一种是 Java 原生的,因此使用起来相对麻烦一些,第二种是通过第三方的包来实现,这个包是 Apache 旗下的专门用来发送 HTTP 请求的 HttpClient 包,是对 Java 原生的 HttpURLConnection 扩展,因此功能也更加强大,使用起来也原创 2021-05-16 16:01:58 · 5943 阅读 · 1 评论 -
Mac 下多版本 JDK 安装及切换
背景由于公司项目基于 JDK 1.8,我本地默认安装的是 JDK 10,这样在 idea 中通过 maven 编译的时候各种报错,有点不兼容。为了解决这个问题最好的办法就是再安装一个 1.8 的 JDK 版本了,和公司项目代码版本兼容。本文主要介绍 Mac 下如何安装 JDK 并且多版本如何切换。Mac 下 JDK 安装配置Mac 下安装 JDK 比较简单,只需要访问 Oracle 官网,找到对应环境和版本的 JDK 下载安装即可,下载 mac 下的 dmg 安装文件,一路点击下一步即可。JDK 下原创 2021-04-05 11:34:31 · 5555 阅读 · 2 评论 -
Java JSch 远程执行 Shell 命令
背景项目需求,需要远程 ssh 登录到某个节点执行 shell 命令来完成任务。对于这种需求,如果不用 java 程序,直接 linux 的 ssh 命令就可以完成,但是在编码到程序中时需要相关的程序包来完成,本文主要介绍在 java 中如何使用 JSch 包实现 ssh 远程连接并执行命令。JSch 简介JSch 是Java Secure Channel的缩写。JSch是一个SSH2的纯Java实现。它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功原创 2021-03-28 15:33:17 · 17022 阅读 · 12 评论 -
Java 中 final 关键字详解
在 Java 中,final 关键字可以修饰的东西比较多,很容易混淆,在这里记录一下。主要从功能上说明一下,不做过多的代码演示。final 关键字用途1. final 变量凡是对成员变量或者本地变量(在方法中的或者代码块中的变量称为本地变量)声明为final的都叫作final变量。final变量经常和static关键字一起使用,作为常量。用final关键字修饰的变量,只能进行一次赋值操作,并且在生存期内不可以改变它的值。2. final方法参数如果 final 关键字修饰方法参数时,方法中是不能改原创 2021-01-24 12:09:34 · 2932 阅读 · 2 评论 -
如何 dump jvm 内存及线程栈
如何 dump jvm 内存及线程栈目前很多企业的后台服务都是 java 服务,在故障出现时能及时 dump jvm 内存和线程栈对于故障的分析及定位是非常重要的。接下来介绍如何进行 dump 操作,并分享一个简单脚本实现服务器线程数超过一定阀值时自动 dump 线程数最高的 java 进程的内存及线程栈。1. dump jvm 内存命令格式:jmap -dump:form...原创 2018-05-19 23:34:25 · 14311 阅读 · 3 评论