自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 sqoop job 创建报错 Got exception running Sqoop: java.lang.NullPointerException java.lang.NullPointerExce

导致的,我的 sqoop 版本是 1.4.7,不知道新版本会不会包含该 jar,因为我不想更换版本,所以手动下载 java-json.jar 到 ${SQOOP_HOME}/lib 下即可解决该问题。下载地址:http://www.java2s.com/Code/Jar/j/Downloadjavajsonjar.htm。如果上面的地址访问不了,可以关注公众号:huangxy,回复 java-json 即可获取下载链接。报错的原因是因为 sqoop 缺少了。的时候报了一个空指针异常。

2023-12-28 10:58:07 514

原创 使用 Navicat 的数据生成插入大量测试数据

上篇文章,跟大家介绍了通过编写存储过程插入测试数据的方案。今天让我们来看下如何利用 Navicat 的数据生成功能插入测试数据

2023-07-05 15:20:10 3113

原创 SQL 优化(四):合理使用 join

该文章对 join 查询的三种算法做了分析,并给出了 join 语句的使用建议

2023-07-04 09:31:08 1107

原创 SQL 优化(三):使用覆盖索引

今天跟大家分享一个比较常见的 SQL 优化手段——使用覆盖索引。需要特殊说明的是,MySQL 支持多种存储引擎,对索引的支持也不同,这里我们只关注 InnoDB 引擎的 BTree 索引

2023-06-30 16:37:58 284

原创 SQL 优化(二):避免隐式转换

今天介绍另外一个很容易踩坑的 SQL 例子,那就是隐式转换,隐式转换分为两种:隐式类型转换和隐式字符编码转换,下面将分别介绍这两种隐式转换对 SQL 执行效率的影响

2023-06-28 09:04:43 258

原创 SQL 优化(一):慎用 SQL 函数

SQL 优化系列文章之慎用 SQL 函数,本文介绍了 MySQL 在索引字段上使用函数操作对 SQL 执行效率的影响,分析了原因并给出对应的解决方案

2023-06-26 17:49:45 147

原创 MySQL 如何快速插入大量测试数据

我们要确保生成的测试数据要有足够的随机性,测试结果才会更准确,如果某个字段的测试数据都是一样的,索引的效率会大大折扣,测试结果往往与真实数据的执行结果大相径庭我们可以使用 MySQL 的自定义函数来实现随机值的生成,下面罗列出几种常见的字段的函数定义。

2023-06-25 15:48:32 520

原创 depends_on 解决 docker 容器依赖问题

在使用 docker-compose 启动服务的时候,经常会遇到容器依赖问题,本文章介绍了如何使用 depends_on 解决容器依赖问题

2023-05-25 11:15:32 2431

原创 ssh 复制长命令被截断

问题描述最近经常遇到个很奇怪的问题,当我使用 ssh 登录到本地虚拟机,复制长命令到命令行终端的时候,发现命令总是会被截断,比如当我想复制curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-latest.x86_64.rpm这条命令到终端,结果会变成下面这个样子可以看到,命令被截断了,而且左边的用户信息([huangxy@stone ~])不见了系统版本:macOS 12.0.1终端:iterms2

2022-01-03 22:53:00 1688

原创 kubernetes pod 一直卡在 ContainerCreating 状态

问题描述在使用 kubectl create -f 命令创建完 rc,再使用kubectl get pods 查看 pod 状态,发现 pod 一直卡在 ContainerCreating 状态,执行步骤如下# kubectl create -f mysql-rc.yamlreplicationcontroller "mysql" created# kubectl get podsNAME READY STATUS RESTARTS AGE

2021-07-04 20:35:26 2166

原创 ES 报错:max number of threads [3795] for user [elastic] is too low, increase to at least [4096]

问题描述使用./elasticsearch启动 es 的时候报以下错误ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch.bootstrap check failure [1] of [1]: max number of threads [3795] for user [elastic] is

2021-06-10 00:15:40 3461 2

原创 IDEA 运行 Junit 测试用例报 !!! JUnit version 3.8 or later expected 错误

问题介绍在使用 IDEA 运行 Junit 测试用例的时候,控制台报了!!! JUnit version 3.8 or later expected错误,完整报错信息如下:!!! JUnit version 3.8 or later expected:java.lang.ClassNotFoundException: junit.framework.ComparisonFailure at java.net.URLClassLoader.findClass(URLClassLoader.java:

2021-03-13 21:45:30 1854

原创 一文搞懂 Redis 通讯协议 RESP

什么是 RESP众所周知,Redis是基于客户端-服务端模式工作的,客户端发送命令给服务端,服务端执行命令,然后将命令执行结果返回给客户端。为了满足Redis高性能的要求,Redis特地设计了RESP(全称REdis Serialization Protocol)协议,用来作为Redis客户端与服务端的通讯协议,RESP协议有以下优点实现简单解析高效可读性好注意:RESP底层用的连接方式还是TCP,RESP只定义了客户端与服务端的数据交互格式,这也是为什么Redis能用Netcat等工具进行操作

2021-03-10 00:43:35 612

原创 Maven 依赖冲突介绍

概述使用Maven可以很方便地管理项目中的依赖,但是由于Maven中的依赖具有传递性,会导致我们项目中的错综复杂,最典型的就是由依赖冲突发生的ClassNotFoundException和NoSuchMethodException什么是依赖冲突当项目中引用了某个jar包的不同版本,就会发生依赖冲突。假设项目A的依赖关系如下:A├── B│ └── C│ └── D 2.0└── E └── D 1.0A中间接依赖了两个D,版本分别是D2.0跟D1.0,路径分别是A

2021-02-24 00:28:01 185

原创 Netcat 介绍及使用

Netcat 介绍Netcat(简称nc)是一款强大的命令行网络工具,用来在两台机器之间建立TCP/UDP连接,并通过标准的输入输出进行数据的读写Netcat 安装大部分的Linux发行版会都会自带Netcat,可以使用nc命令查看系统中是否有安装Netcat$ ncusage: nc [-46AacCDdEFhklMnOortUuvz] [-K tc] [-b boundif] [-i interval] [-p source_port] [--apple-recv-anyif] [--.

2021-02-21 20:44:02 20915 3

原创 Linux 能 ping 通,但是 ssh 登陆不上

问题描述刚刚在本地装了ubuntu虚拟机,发现本地本机能ping通虚拟机网络$ ping 172.16.0.4PING 172.16.0.4 (172.16.0.4): 56 data bytes64 bytes from 172.16.0.4: icmp_seq=0 ttl=64 time=0.385 ms64 bytes from 172.16.0.4: icmp_seq=1 ttl=64 time=0.775 ms64 bytes from 172.16.0.4: icmp_seq=2 t

2021-02-20 20:34:32 10558 1

原创 Redis 如何调试Lua 脚本

概述从Redis 3.2开始,内置了 Lua debugger(简称LDB),使用Lua debugger可以很方便的对我们编写的Lua脚本进行调试快速开始可以使用下面的步骤创建一个新的debug会话:在本地创建一个Lua脚本使用redis-cli,通过--ldb参数进入到debug模式,使用--eval参数指定需要debug的Lua脚本比如我本地创建了一个/tmp/script.lua脚本文件,脚本内容如下:local foo = redis.call('ping')return fo

2021-02-18 10:06:35 3553

原创 Redis 管道、事务、Lua 脚本对比

概述Redis 提供三种将客户端多条命令打包发送给服务端执行的方式: Pipelining(管道) 、 Transactions(事务) 和 Lua Scripts(Lua 脚本)。本文不会过细的讨论三种方式的基础知识,将从这三种方式的 优势 、 局限性 和 原子性 方面展开讨论Pipelining(管道)Redis 管道是三者之中最简单的,当客户端需要执行多条 redis 命令时,可以通过管道一次性将要执行的多条命令发送给服务端,其作用是为了降低 RTT(Round Trip Time) 对性能的影

2021-02-07 15:07:57 1869

原创 WireMock 使用

WireMock 介绍WireMock 是一个 Http 模拟服务,其核心是 web 服务,WireMock 可以为特定的请求(stubbing)提供固定的响应,并捕获传入的请求,以便后面校验(验证)WireMock 可以作为第三方库在项目中使用(一般用于集成测试),也可以作为单独的进程启动(singleton),该篇文章首先介绍 singleton 的使用方式搭建 WireMock 服务在本地搭建 WireMock 服务,首先需要到 WireMock release page 下载最新的 jar,

2021-01-12 15:57:05 5642

原创 Junit4 Rules 使用

Junit 4 Rules 介绍一个 Junit Rule(规则) 就是一个实现了org.junit.rules.TestRule 接口的类,这些类的作用类似于@Before``@After注解,通过在类的执行前后运行指定的代码逻辑来增强测试,此外,Junit Rule还能做一些@Before``@After注解实现不了的功能,如动态获取测试类、测试方法的信息假设我们的测试用例需要在运行的时候连接外部资源(如数据库),在测试结束的时候释放连接,如果我们想在多个测试类中使用该数据库,那么最终将在每个测试类

2021-01-08 18:43:27 1113

原创 docker service 卡在 prepering 状态

执行了 docker service create 命令之后, service 一直卡在 prepering 状态$ docker service create --replicas 2 -p 80:80 --name nginx nginx:1.19.5-alpineqgra9dthf4efu7o9xqpvfkqfwoverall progress: 1 out of 2 tasks1/2: running [==========================================

2020-12-11 11:00:25 2471 1

原创 VS Code 搭建 C++ 开发环境(Mac 环境)

准备搭建之前需要先安装 clang,在 Mac 上有两种方法进行 clang 的安装:在 AppStore 上安装 Xcode,clang 会在 Xcode 安装时自动安装在命令行终端上执行 xcode-select --install 进行安装安装完可通过在命令行终端上输入 clang -v 验证 clang 安装是否成功$ clang -vApple clang version 11.0.3 (clang-1103.0.32.62)Target: x86_64-apple-darwin

2020-09-27 21:48:19 4732 1

原创 Spring Boot CLI 介绍

前言做Spring Boot开发这么久,今天才知道Spring Boot居然也有命令行工具,Spring Boot CLI命令行工具能够帮助你快速的构建 Spring Boot 项目。只需要编写简单的groovy脚本,即可构建并运行一个完整的Spring Boot项目Spring Boot CLI 安装手动安装下载安装包解压即可:spring-boot-cli-2.3.3.RELEASE-bin.zipspring-boot-cli-2.3.3.RELEASE-bin.tar.gz为方便

2020-09-17 16:22:21 2486

原创 SpringBoot 使用 jasypt 对配置项进行加密

为什么要对配置文件进行加密先看一份典型的配置文件spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/user?serverTimezone=CTT&useSSL=false&allowPublicKeyRetrieval=true username: test password: 123456 redis

2020-07-17 00:32:30 1558

原创 如何使用 IDEA 进行远程 debug

前言在开发中经常遇到这样一个问题,在本地环境跑的好好的代码,一上开发环服/测试服就有问题,这类问题往往很难在本地复现,也就意味着修复改 bug 是个艰难的过程。今天跟大家分享如何使用 IDEA 远程 debug 功能解决上述问题IDEA 设置点击菜单栏的Run -> Edit Configurations...,打开 Run/Debug Configurations 窗口点击工具栏左上角的+按钮,选择Remote设置远程主机的端口与地址在Command line arguments fo

2020-06-03 00:16:28 2531

原创 关于指令重排序

前言最近在看 JVM 与高并发相关书籍,发现两本书都提到了指令重排序优化,但都没对指令重排序优化进一步解释,后面在查找了相关资料后才对指令重排序有个整体的了解,此篇文章对该部分知识做一个整理,希望对大家有所帮助什么是指令重排序在讲指令重排序之前,先看下面代码,试想一下程序的运行结果public class NoVisibility { private static boolean ready; private static int number; private s

2020-05-16 20:26:27 1182

原创 优雅的接收单个参数的 post 请求

前阵子开发程序的时候,由于公司用的不是 restful 风格的 api,同事问我根据id删除记录的接口,controller 层参数绑定要怎么写的问题,几番讨论下来,总结了几个方法使用Map接收参数@PostMapping("/delete")public ApiResponse delete(@RequestBody Map<String,String> params){...

2020-04-13 02:02:32 28525 8

原创 Hutool——好用的 Java 工具类库

简介Hutool是Hu + tool的自造词,前者是作者致敬“前任公司”,后者为工具之意,谐音“糊涂”,寓意追求“万事都作糊涂观,无所谓失,无所谓得”的境界Hutool是一个Java工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法,让Java语言也可以“甜甜的”。Hutool最初是我项目中“util”包的一个整理,后来慢慢积累并加入更多非业务相关功能,并广泛学习其它开源项目精...

2020-04-03 00:46:23 986 2

原创 git commit 规范

Git 是市面上最流行的版本控制工具,书写良好的代码提交规范能大大提高代码维护的效率,日常开发中使用 git 提交代码要求一定要写 git commit message,否则就无提交代码,很多公司对 git commit message 的格式没有一个明确的规范,导致各个开发人员随意填写提交信息、风格迥异,在项目中引入 git commit 规范已迫在眉睫Angular 的代码提交规范目前,社...

2020-03-29 16:37:15 828

原创 我是如何进行单元测试的

中发现大家都知道单元测试,也知道 junit,但是没有人知道怎么写 junit 单元测试,在这里分享我在工作中是怎么写单元测试的,供大家参考什么是单元测试首先讲讲什么是单元测试,单元测试是指对软件中的最小可测试单元进行检查和验证。单元测试在质量保证中是非常重要的环节,根据测试金字塔模型,越往上层的测试,所需的测试投入比例越大,效果也越差,而单元测试的成本要小的多,也更容易发现问题单元测试的...

2020-03-25 01:10:25 858

原创 如何测试私有方法

由于 Java 私有方法不允许在类的外部进行访问,当我们在写 junit 测试的时候,就无法像测试其他方法一样通过对象调用的方式对 private 方法进行单独测试。但我们可以通过以下两种方式进行测试使用反射机制Java 反射能在运行时获得类的属性和方法,故可以通过 Java 的反射机制对私有方法进行测试,代码如下@Testpublic void reflectTest() throws ...

2020-03-23 00:54:51 3144 1

原创 Java CopyOnWrite

CopyOnWrite 介绍Copy-On-Write简称COW,是一种程序设计中的优化策略,其实现思路是大家都在共享一个内容,当有人想要修改内容的时候,就创建一个改内容的副本,对副本进行修改,然后再将原本的引用指向副本,完成内容的修改。是一种读写分离的并发策略,也是一种延时惰性策略Java 中的 CopyOnWrite 容器CopyOnWrite容器,即写时复制容器。我们都知道,在 Jav...

2020-03-21 00:55:54 1486

原创 Fail-fast 机制分析

什么是 fail-fast 机制fail-fast(快速失败)机制是集合中比较常见的错误检测机制,防止在对集合进行遍历的时候,出现意料之外的修改,导致意想不到的结果写个简单的例子了解下什么是fail-fast机制@Testpublic void failFastTest(){ List<String> list = new ArrayList<>(); ...

2020-03-19 01:39:51 267

原创 ArrayList 扩容分析

ArrayList 初始容量ArrayList 有多个不同的构造方法,不同的构造方法的初始容量是不同的。介绍之前先看下 ArrayList 都有哪些变量 // 默认初始化容量=10 private static final int DEFAULT_CAPACITY = 10; // 空数组,当初始化容量为0时返回该数组 private static final Object[] EMPT...

2020-03-16 00:57:26 193

原创 ElasticSearch——高性能分布式搜索引擎

ElasticSearch 简介ElasticSearch(简称 es)是一款高性能的实时分布式搜索和分析引擎,它可以从海量数据中快速的找到相关信息,当你在 github 搜索时,ElasticSearch 可以在 1300 亿行代码中找出你想要的内容。安装入门结构化查询创建mapping聚合函数...

2020-03-01 16:08:41 443

原创 Spring Boot Actuator 监控

简述spring boot actuator 是 spring boot 为监控线上项目运行指标所提供的一个 starter 模块,spring boot actuator 不跟其他模块那样主要使用于业务开发或连接一些外部资源,完全是用于暴露自身信息的模块,方便我们监控和管理线上项目Actuator 初探下面通过一个简单的示例,对 spring boot actuator 有一个直观的认识...

2020-01-14 16:36:12 894

原创 spring cloud 系列文章(一)Eureka 使用

介绍关于 EurekaEureka 是由 Netfix 开发的服务注册发现组件,后来 spring cloud 将其集成到其子项目 spring-cloud-netfix 中。Eureka 本身是基于 REST 的服务,在集群中主要用于服务管理。Eureka 提供了 Java 的客户端组件,同时该客户端组件实现了负载均衡的功能,为业务组件的集群部署创造了条件。我们可以很简单的将业务组件注册到 ...

2019-09-02 00:06:47 171

原创 微服务那点事

前言记得刚开始出来实习的时候,那时候连 Java Web 是什么都没有个清晰的概念,面试的时候面试的是 Android,结果去到公司却被叫去干后端。那时候只记得上过两节 Java SE 的课,连 SSH 都没搭建过,然后公司用的框架是 SSM,那时候抱佛脚恶补了一下 Java Web 的知识,然后就硬着头皮干了。第一次接触微服务是在跟公司同事吃饭的时候,他问我们听说过微服务吗,当时听他说什么每...

2019-08-23 16:58:23 455

原创 Spring Boot Admin 使用

简介Spring Boot Admin 是一个开源社区项目,用于管理和监控你的 Spring Boot 项目,被监控的应用可以作为 Spring Boot Admin Client 注册到 Spring Boot Admin Server 上,由统一监控。Spring Boot Admin 的前端 UI 是由 Vue.js 写的一个应用程序,用于展示被监控应用的信息。快速入门Spring B...

2019-07-19 02:03:49 408

原创 Java按行分割大文件

简介工作的时候,需要将一个大的文本文件按行分割成几个小文件。本来懒得写,想网上copy一下得了,但是 google 了一遍,找了几个代码写的有点乱,尝试了之后发现效率太慢了,一个 1000000 行200M 的文件,按每个文件 2000 行分割,要6分多钟才能跑完。没办法自己写了个,试了几次,基本都是 4 秒内跑完,贴出来记录下,下次用就直接 copy 出来用。代码public s...

2019-04-23 00:54:35 3041

提示
确定要删除当前文章?
取消 删除