自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

原创 Sharding-JDBC4.0分库分表实战

2022-04-17 15:50:17 1520

原创 Redis中五种基础数据结构及其底层实现

redis

2022-04-06 20:25:56 3279

原创 WebSocketServer无法注入Bean

问题描述:@ServerEndpoint("/webSocket/{userid}")@Componentpublic class WebSocketServer { //无法注入 cacheService == null @Autowired private LearnedCourseCacheService cacheService; }由于每次webSocket连接都是创建一个新的对象,也就是多例模式,spring约定以单例的方式管理注入的对象,多个不

2022-02-11 14:10:05 1232

原创 WebSocket连接404-bug修复

背景:前后端使用webSocket通信,线下测试没问题,部署线上不能正常使用。问题1:连接时404,找不到后端onOpen路径方案1:nginx配置:location /temperature{proxy_pass http://127.0.0.1:port;proxy_http_version 1.1;# 增加Upgrade协议头和Connection协议头,使http连接升级到websocket连接proxy_set_header Upgrade $http_upgrade;prox

2022-02-09 17:55:16 2481

原创 SpringSecurity实现Jwt自定义登录

文章目录一、SpringSecurity的工作流程二、springboot+springsecurity+jwt1、项目准备2、编写过滤器AuthenticationLoginFilter3、编写登录成功/失败处理器1、登录成功处理器LoginAuthenticationSuccessHandler2、登录失败处理器LoginAuthenticationFailureHandler4、实现UserDetailsService5、权限不足和未登录访问资源处理器1、权限不足处理器RequestAccessDen

2022-01-20 15:44:10 5578 2

原创 Java线程池中的拒绝策略

2021-12-15 21:46:56 5243

原创 CountDownLatch源码解析

1、Java中的CountDownLatch是什么?位于java.util.cucurrent包下的一个对象,能够达到线程等待的效果,例:主线程中调用子线程,需要拿到子线程中调用的方法结果,也就是主线程需要等待子线程执行完再做返回代码示例:public class CountDownLatchTest { public static void main(String[] args) throws Exception { List<Integer> list

2021-09-25 22:18:09 199 1

原创 Redis集群搭建(主从-哨兵模式)-Docker

文章目录一、准备工作1.1、准备三台centos7虚拟机1.2、关闭防火墙二、安装redis2.1、三台机器先安装Docker2.2、配置加速器2.3、配置redis.conf文件一、准备工作1.1、准备三台centos7虚拟机192.168.220.131 主节点192.168.220.132 从节点192.168.220.133 从节点1.2、关闭防火墙service firewalld stop二、安装redis2.1、三台机器先安装Docker1、[root@local

2021-08-16 23:53:37 313

原创 Linux安装Nodejs

1、到node官网下载Linux64位压缩包2、将压缩包上传至Linux服务器 /usr/local目录下cd /usr/localtar -zxvf node-v8.17.0-linux-x64.tar.gz3、建立软连接ln -s /usr/local/node-v8.17.0-linux-x64/bin/npm /usr/local/bin/ln -s /usr/local/node-v8.17.0-linux-x64/bin/node /usr/local/bin/4、测试是

2021-08-11 22:52:52 132

原创 JmockData---jfairy 学习记录(生成测试数据)

一、JmockData简介:Jmockdata是一款实现模拟JAVA类型或对象的实例化并随机初始化对象的数据的工具框架Jmockdata内部使用算法和反射模拟生成随机数据,可以帮助我们在开发中节省大量set代码,简化代码。支持类型:Java基本类型字符串枚举日期数组多维数组集合[List|Set|Map]Java对象GitHub地址maven依赖 <dependency> <groupId>com.github.jsonzou<

2021-05-12 18:09:28 956

原创 浅谈Java中ArrayList的扩容机制

一、我们知道Java中的ArrayList对象底层是基于数组实现的,而数组是有长度限制的,那基于数组实现的ArrayList是否有长度限制呢?我们通过ArrayList的构造方法来剖析ArrayList提供了3种构造方法以便我们来获取:ArrayList(int initialCapacity) 第一种需要赋值长度进行newArrayList() 第二种无参构造,不需要赋值数组初始长度ArrayList(Collection<? extends E> c) 第三种入参一个继承了Col

2021-05-03 12:18:11 231 2

原创 从ReentrantLock来剖析AQS源码

文章目录一、AQS是什么?二、ReentrantLock中的非公平锁实现源码三、线程的唤醒一、AQS是什么?AQS的全称是AbstractQueuedSynchronizer,翻译过来就是抽象的队列同步器AQS是基于双向队列和一个int类型的共享变量volatile int state,来管理和控制多线程情况下操作数据,来达到数据安全性的目的。 而AQS还是java.util.concurrent (简称JUC )框架中实现的基石。JUC中不少用来解决线程安全问题的对象,这些对象的实现都需要一套共

2021-04-06 15:32:46 455

原创 基于Hadoop安装Hive

文章目录一、安装准备工作二、安装一、安装准备工作1、安装HIve前得安装好Hadoop集群,不会安装的去我前面文章找2、安装包准备3、在Hadoop的namenode节点服务器安装即可二、安装1、将HIve安装包上传至 /usr/local 文件下tar -zxvf apache-hive-2.3.3-bin.tar.gz#更换名称mv apache-hive-2.3.3-bin hivevim /etc/profileexport HIVE_HOME=/usr/local/hi

2021-03-21 21:01:47 1680 5

原创 Hadoop集群搭建(完全分布式)

文章目录一、安装准备工作二、安装1.关闭防火墙2、修改主机名和hosts3、安装包解压4.配置环境变量5、修改Hadoop配置6、同步slave1节点和slave2节点三、启动准备四、启动访问一、安装准备工作1、虚拟机准备(centos7)master : 192.168.220.134slave1 : 192.168.220.135slave2 : 192.168.220.1362、安装包准备(百度网盘下载)Jdk1.8安装包Hadoop安装包(版本2.9.2--稳定)链接:ht

2021-03-21 14:01:00 782

原创 什么是面向切面编程(AOP)?

什么是AOP?相比于面向切面编程,我更喜欢把AOP叫做方法增强,我用一幅图来解释下。一句话概述就是在不影响原方法的情况下对其进行代码方法的补充、增强。Spring是如何实现AOP的说到Spring的AOP就要讲到Java的动态代理设计模式什么是动态代理?用个简单的例子来说明:现在有A、B、C三个对象A想直接访问C,C不允许A直接访问,而A委托B做它的代理类,所有想访问C的对象(例如A),都必须通过B来访问C;结论:给某一个对象提供一个代理,并由代理对象来控制对真实对象的访问.

2021-03-16 20:14:39 495

原创 Springboot利用Aop实现用户操作日志记录

文章目录一、需求二、技术实现三、测试一、需求接到公司产品的需求,需要在系统中做埋点日志,记录用户调用每一个接口的的功能日志,简而言之就是这个用户每天对系统的操作需要做日志保存。后续可以让用户或者用户上级查看。二、技术实现需使用技能点:Springboot+AOP+Mysql+Mybatis-plus实现实现详细:利用Spring的AOP特性配合自定义注解对方法做一个增强,在增强中通过解析token来记录每一个用户的操作记录;日志表(user_operate_log)设计:user_id

2021-03-11 19:46:10 1015 3

原创 Nacos后台频繁打印 get changedGroupKeys:[] 解决

一、问题描述在使用Nacos作为注册中心情况下,客户端启动后频繁打印get changedGroupKeys:[]c.a.n.client.config.impl.ClientWorker : get changedGroupKeys:[]c.a.n.client.config.impl.ClientWorker : get changedGroupKeys:[]c.a.n.client.config.impl.ClientWorker : get changedGroupKeys

2021-01-29 15:44:49 9652 1

原创 Spring IOC Bean的生命周期 生命周期流程测试

文章目录Spring IOC一、开始前说明1、BeanFactory2、ClassPathXmlApplicationContext3、BeanDefinition4、BeanFactoryPostProcessor5、BeanPostProcessor二、Spring Bean的生命周期第一步----创建对象,编写xml文件第二步----编写测试类Spring IOC简要:Spring 框架俩大特性之一,IOC容器(控制反转):IOC容器:想象成一个容器,里面存放着众多的Bean,可以帮助我们管

2021-01-26 11:39:39 472

原创 Mysql开启慢查询监控

一、简介开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。二、参数说明slow_query_log 慢查询开启状态slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录)long_query_time 查询超过多少秒才记录三、开启步骤1、查看mysql慢查询开启状态mysql> show variables like 'slow_

2021-01-21 10:24:06 753

转载 Executor、ExecutorService 和 Executors 三者的继承关系 和 不同点

文章目录 一 、Executor、ExecutorService 和 Executors 继承关系和UML类图1.1、三者的继承关系 二、Executor: 根接口三、ExecutorService: 接口3.1、`Future ` 接口 四、Executors 是一个工具类五、 三者的区别5.1、Executor 和 ExecutorService 的区别:5.2、总结5.3、Executors 与 前面二者 的区别:5.4、ThreadPoolExecutor 的推...

2020-12-31 10:30:57 706

原创 Springboot生成二维码

文章目录一、引入依赖二、代码编写三、二维码校验一、引入依赖 <!-- https://mvnrepository.com/artifact/com.google.zxing/core --> <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>2.1</versio

2020-12-29 15:45:57 261 1

原创 Java 模拟多线程并发案例

一、使用 CountDownLatch 模拟多线程并发(并行)CountDownLatch 介绍:countDownLatch是在java1.5被引入,跟它一起被引入的工具类还有CyclicBarrier、Semaphore、concurrentHashMap和BlockingQueue。存在于java.util.cucurrent包下。作用:CountDownLatch典型用法:1、某一线程在开始运行前等待n个线程执行完毕。将CountDownLatch的计数器初始化为new CountD

2020-12-29 14:49:23 1200

原创 Stream流对List集合筛选重复字段

实现:针对对象集合实现重复字段校验和重复统计实体类如下:@Datapublic class User implements Serializable { private static final long serialVersionUID = 1L; private String name; private Integer age;}目标一:找出用户集合中重复的名称private static void test6(){ List<User&g

2020-12-21 16:49:21 6916

原创 Alibaba Cloud Toolkit一键自动部署jar包

系列文章目录文章目录系列文章目录前言一、在IntelliJ IDEA中安装和配置Cloud Toolkit1.1、下载安装二、配置2.1、配置服务器ip三、部署引用3.1、编写脚本前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、在IntelliJ IDEA中安装和配置Cloud Toolkit1.1、下载安装在Intell

2020-12-21 11:29:00 697

原创 Elk+filebeat搭建分布式日志

搭建Elk分布式日志文章目录搭建Elk分布式日志一、什么是ELK?1.1 检测环境二、安装ElasticSearch2.1、解压ElasticSearch安装包2.2、创建elsearch组2.3、修改ElasticSearch配置2.4、修改linux配置2.5、启动ElasticSearch三、安装Kibana3.1、解压Kibana压缩包3.2、配置kibana.yml3.2、启动3.3、登陆Kibana四、安装Logstash4.1、解压Logstash安装包4.2、配置Logstash五、安装f

2020-12-16 19:45:33 872 2

原创 filebeat自动关闭解决

项目场景:通过Elk处理日志,filebeat来收集多台服务器的日志问题描述:通过后台启动命令来启动filebeat,第二天早上发现filebeat自动关闭启动命令如下:nohup ./filebeat -e -c filebeat.yml & 原因分析:在当shell中执行nohup成功后,还需要按终端上键盘任意键退回到shell输入命令窗口,然后通过在shell中输入exit来退出终端;如果在nohup执行成功后直接点关闭程序按钮关闭终端的话,这时候会断掉该命令所对应的se

2020-12-14 07:35:10 5636

原创 Linux安装Rabbitmq3.7

Rabbitmq版本说明Erlang:yum install erlang最新版rabbitmq-server:3.7.26rabbitmq-server 3.8以上版本没有配置模板文件最好跟文章同步版本安装文章目录Rabbitmq版本说明安装一、Erlang安装二、安装Rebbitmq-server安装一、Erlang安装1、安装前准备#任意目录下执行curl -s https://packagecloud.io/install/repositories/rabbitmq/erl

2020-12-01 22:21:22 3102 1

原创 Linux安装Mysql8(小白必看)

文章目录一、Mysql8安装包下载二、安装步骤1.上传安装包一、Mysql8安装包下载1、迅雷复制链接下载https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz2、百度网盘获取https://pan.baidu.com/s/1vxVEL7q7CQvPPLlK-ZUWEQ提取码:whrs3、mysql官网下载https://www.mysql.com/download

2020-11-24 22:33:52 3267

原创 Springboot全局异常处理

SpringBoot使用@ControllerAdvice+@ExceptionHandler的注解实现全局异常处理@ControllerAdvice:使用该注解表示开启了全局异常的捕获它通常用于定义@ExceptionHandler, @InitBinder 和 @ModelAttribute 适用于所有@RequestMapping方法的方法。@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Com

2020-11-06 11:53:02 179

原创 构建Jdk8超小镜像

步骤1、下载jdk下载地址:https://javadl.oracle.com/webapps/download/AutoDL?BundleId=242050_3d5a2bb8f8d4428bbe94aed7ec7ae7842、上传至Linux /java文件夹下[root@localhost java]# cd /[root@localhost java]# mkdir java[root@localhost java]# cd java## pwd 查看java文件夹路径[

2020-10-25 16:52:58 578 1

原创 Springboot整合Harbor实现镜像上传

Springboot整合Harbor实现镜像上传提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录Springboot整合Harbor实现镜像上传前言一、环境准备1、Springboot项目准备2、构建Java8镜像3、上传构建好的jdk8镜像至Harbor4、编写项目中Dockerfile5、打包上传至Harbor前言Springboot整合H

2020-10-24 10:17:15 3683 15

原创 Harbor仓库搭建及简单使用

文章目录安装准备一、安装Harbor二、配置Harbor并访问1.引入库2.读入数据总结安装准备提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、安装Harbor示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、配置Harbor并访问1.引入库代码如下(示例):import numpy

2020-10-23 09:25:16 824

原创 Lamda表达式使用

避免匿名内部类定义过多可以让你的代码看起来很简洁去掉一堆没用意义代码 只留下核心逻辑(params) ->expression[表达式](params) ->statement[语句](params) ->{statements}目的:为了简化程序代码函数式接口 可以通过lamda表达式来创建该接口的对象函数式接口:任何接口如果只包含唯一抽象方法 就是函数式接口package org.example.thread;/** * lamda表达式 * * @

2020-08-27 17:41:07 172

原创 Java多线程之join方法

前言进程中会有多条线程,而线程是有优先级的,如何让线程按照顺序执行,Thread.join()方法则是可以解决这个问题,join方法的作用是使所属的线程对象x正常执行run()方法中的任务,而使当前线程z进行无限期的阻塞,等待线程x销毁后再继续执行线程z后面的代码。方法join具有使线程排队运行的作用,有些类似同步的运行效果,换言之让线程插队,先执行。原理可以看出,join方法实际上是通过调用wait方法, 来实现同步的效果的。例如,A线程中调用了B线程的join方法,则相当于A线程调用了B线程的wa

2020-08-27 17:40:42 311

原创 Activiti5.22整合Springboot(画图详解,会签监听事件,附带源码)

9.13前完成

2020-08-27 17:40:08 5590

原创 Linux 安装JDK1.8和Maven(配置环境变量)

Linux 安装JDK1.8和Maven(配置环境变量)Linux下安装JDK和Maven并且配置环境变量文章目录Linux 安装JDK1.8和Maven(配置环境变量)前言一、安装JDK百度网盘安装包获取:[点击获取网盘链接](https://pan.baidu.com/s/1fLFhhwoH6pkPoLMzMBEtCA) 提取码:whrs二、安装Maven1.上传Maven安装包三、配置环境变量前言基础环境:Centos7、Xshell提示:安装包我会放在网盘里,不用你们自己下

2020-08-27 17:39:00 661

原创 Jenkins安装并配置加速器

文章目录Jenkins安装并配置加速器一、安装Jenkins获取安装包 [点击获取安装包](https://pan.baidu.com/s/1OTzQEcjAXQCTpSy33iDJCQ) 提取码:whrs1.1利用Xshell登陆我们的服务器1.2 配置jdk二、配置插件加速器总结Jenkins安装并配置加速器提示:此文章只介绍如何安装Jenkins和配置加速器,安装包放在网盘中,自取利用Jenkins部署Springcloud微服务会在下一篇文章介绍一、安装Jenkins获取安装包 点击获

2020-08-27 17:38:39 3632 1

原创 Linux下配置Yum和Docker加速器

yumwget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repoyum clean allwget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repoyum makecachedockersudo mkdir -p /etc/dockersudo tee /etc/docker/d

2020-08-27 17:37:53 166

原创 Java多线程的优先级(源码分析)

文章目录一、线程优先级是什么?二、线程优先级测试1.setPriority()方法设置线程优先级2.设置线程优先级提示:以下是本篇文章正文内容,下面案例可供参考一、线程优先级是什么?在操作系统中,线程可以划分优先级,优先级较高的线程得到的CPU资源较多,也就是CPU优先执行优先级较高的线程。Java线程中用1~10来表示线程的优先级别,数字越大说明此线程的优先级越高。而线程默认的级别是5。我们先用代码来查看线程默认的优先级是不是5级:/** * 线程优先级测试 * @author whr.

2020-08-27 17:37:17 206

原创 Docker容器启动无法识别/etc/hosts文件

项目场景:利用Jenkins启动镜像:项目场景:在服务器中配置了/etc/hosts ip域名 容器启动后查看日志报找不到配置的域名ip地址在服务器中配置了/etc/hosts ip域名 容器启动后查看日志报找不到配置的域名ip地址解决方法:在容器启动中加一句 --network=hostdocker run -di -p 9999:9999 --network=host a4b9ffcbfc26...

2020-08-27 17:36:48 4141

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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