- 博客(31)
- 收藏
- 关注
原创 解决ES集群启动失败 skipping cluster bootstrapping as local node does not match bootstrap requirements:[xxx]
ElasticSearch启动集群保存异常信息 skipping cluster bootstrapping as local node does not match bootstrap requirements: [node-1][2022-04-17T13:20:37,643][WARN ][o.e.c.c.ClusterFormationFailureHelper] [node-2] master not discovered yet, this node has not previousl
2022-04-17 16:06:12
4376
原创 解决CentOS8误删Python导致yum命令不可用
解决CentOS8误删Pyhon导致yum命令不可用以下方案仅仅只针对误删Python的操作方案首先创建一个文件目录存放cd /usr/local/python #不存在就建一个前往该网站查看https://vault.centos.org/8.4.2105/BaseOS/x86_64/os/Packages/下载以下内容wget https://vault.centos.org/8.4.2105/BaseOS/x86_64/os/Packages/python3-firewall-0.8.
2022-04-15 14:39:03
3491
1
原创 依照《尚硅谷》分布式事务使用Seata1.3.0版本进行构建测试
1、Seata分布式事务官网地址:https://seata.io/zh-cn/1.1、Seata 简介Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata将为用户提供了 AT、TCC、SAGA和 XA事务模式,为用户打造一站式的分布式解决方案。1.2、Seata事务处理模型关于Seata事务处理模型,详见http://seata.io/zh-cn/blog/seata-at-mode-design.htmlSeata 内部定义了 3个模块来处
2021-09-20 21:05:51
619
5
原创 【已解决】Linux上的Tomcat项目无法访问数据库,但是位于Windows上的完全一样项目却可以,报错的异常为:org.springframework.web.util.NestedServlet
【已解决】Linux上的Tomcat项目访问数据库报错,但是位于Windows上的完全一样项目却可以访问并成功显示数据当我开启了端口,如果有经历过的小伙伴看到这个3306端口,就已经知道我错在哪了并开启对MySQL的远程访问之后,Linux上部署的web项目却无法访问数据库,报了这种异常:org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.m
2021-05-10 13:55:08
1011
原创 Linux CentOS7 实现MySQL3306端口开启监听任意地址
进入mysql配置文件my.cnf,一般位于/ect目录下输入以下指令:#开启监听所有地址bind-address=0.0.0.0重新启动mysql服务即可最近在学习linux安装mysql遇到地址监听为空的问题,写下该篇博客以便记录,以下为详细解析步骤,授人以鱼不如授人以渔1、开启监听地址1.1、查看原因话不多说,直接列出问题原因:使用命令netstat -tunlp查看当前进程占用的端口netstat -tunlp我们可以发现mysql只是占用了端口,但并未开启任何监听地.
2021-05-09 10:56:25
2978
原创 小白的JUC学习12_锁
锁锁就是用来解决并发编程下的安全问题的,锁有很多种类型,下面来瞅瞅一、锁介绍Java提供了两种加锁的方式1、Synchronized关键字2、Lock接口学习各种锁之前,要明白我们在Java中使用的锁并不是确切地只为一个特定的锁,下面具体解释1.1、悲观&乐观锁一、悲观锁悲观锁就像互斥锁一样,多个线程争抢该锁时,只有一个线程能使用,其他都会阻塞所以这也是悲观的含义,因为该锁总是认为在某个线程对齐共享变量进行修改时,总会有其他线程也会对其修改所以某个线程持有后只有释
2021-04-03 13:30:41
126
2
原创 小白的JUC学习11_Volatile
Volatile一、Volatile介绍Volatile 是Java虚拟机提供的轻量级的同步机制特性:保证可见性不保证原子性保证有序性我们将围绕以上三点来探讨Volatile的作用1.1、验证可见性案例:启动一个线程,并使其死循环状态,通过额外线程修改共享变量使其关闭注意必须是共享变量(JMM特性)package com.migu.jmm;import java.util.concurrent.TimeUnit;/** * 测试共享变量可见性 */publ
2021-04-03 12:57:40
90
原创 小白的JUC学习10_JMM
JMM一、JMM介绍JMM( Java Memory Model )称为Java内存模型二、相关定义和特征一、内存模型:描述了程序中各个变量(实例域、静态域和数组元素)与主内存之间的关系原子性:这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切换到另一个线程) 【比如synchronized】一个操作不能被打断,要么全部执行完毕,要么不执行在这点上有点类似于事务操作,要么全部执行成功,要么回退到执行该操作之前的状态。可见性: 一个线程对
2021-04-03 12:46:24
284
原创 小白的JUC学习09_常用辅助类
JUC下的常用辅助类1.1、ConutDownLancuh一、ConutDownLancuh介绍ConutDownLancuh是一个用于计数的线程类,类似倒计时,当然单单计数肯定是没意义的,所以还要搭配一个方法,下面介绍二、使用主要的两个方法:CountDownLatch对象的countDown()方法:计数减一CountDownLatch对象的await()方法当计数线程不为0时,将一直等待下去,直到被唤醒package com.migu;import java
2021-04-03 12:38:18
100
原创 小白的JUC学习08_读写锁
读写锁ReadWriteLock一、ReadWriteLock介绍ReadWriteLock是一个接口也位于java.util.concurrent.locks包下真正实现为ReentrantReadWriteLock类,该类在内部提供了两个内部类读写类读写分离:可以有多个线程同时进行读取写数据时,只有一个线程能获取锁,其他线程只能排队二、使用分别创建读写锁,应用到对应地方即可记得解锁读过程中也要加锁的原因是:为了防止写的过程中,也进行读取,否则如果写的过程回滚了,那问
2021-04-02 23:39:08
70
原创 小白的JUC学习07_Future
Future一、Futrue介绍Future在Java中是一个接口:实现Future表示具有异步地对线程进行计算的能力API设计如下:boolean cancel(boolean mayInterruptIfRunning) //试图取消此任务的执行。 V get() // 等待线程,直到任务完成,返回结果 V get(long timeout, TimeUnit unit) //指定等待时间,当中任务完成,返回结果,否则抛出异常boolean isCancelled() // 判断任
2021-04-02 23:28:08
232
原创 小白的JUC学习06_线程池
线程池一、线程池介绍线程池:事先创建一组线程供程序调用,并且可以对其复用二、为什么需要线程池降低资源消耗: 通过重复利用已创建的线程降低线程创建和销毁造成的消耗提高响应速度:当出现新的请求任务时,不需要等待线程创建即可立即使用提高线程的可管理性 : 可以进行统一的分配,调优和监控三、使用线程池Java中提供的线程池为:ExecutorsExecutors线程池类位于java.util.concurrent包下,实现了Executor接口我们可以自定义线程池:需要先了解
2021-04-02 19:08:16
108
原创 小白的JUC学习05_并发下的集合
并发下的集合在上篇我们学到了并发包下的阻塞队列,接下来继续学习并发下的集合,并发下使用普通的集合是存在问题的,需要对其解决1.1、传统解决方案不说啥了,先来简简单单的测试一下:public static void main(String[] args) { List<String> list = new ArrayList<>(); for (int i = 0; i < 10; i++) { new Thread(() ->
2021-04-02 15:44:48
109
2
原创 小白的JUC学习04_阻塞队列BlockingQueue
阻塞队列BlockingQueue一、阻塞队列介绍阻塞队列(BlockingQueue)是一个接口,位于java.util.concurrent包下该接口实现了Collection、Iterable、Queue接口常用两个实现类:ArrayBlockingQueue、SynchronousQueue队列:该数据结构就不细讲了二、为什么需要阻塞队列首先我们需要回到传统设计的生产者消费者模式在这种模式中,有一种情况就是,当生产者生产的数据为空时,那么消费者就需要进入等
2021-04-02 15:23:29
101
原创 小白的JUC学习03_精准通知下的生产消费者模式
生产者消费者模式一、介绍生产者消费者模式是一种设计模式,开发中我们需要一种这样的场景:一个模块用于产生数据,称为生产模块一个模块用于消费生产模块生成的数据,称为消费模块处理这些模块,可以是函数,可以是线程或者进程,我们把处理生产模块的角色称为生产者,处理消费模块的角色称为消费者但是在这之中,最重要的不是生产者也不是消费者,而是数据。这个数据到底如何定义:必须是共享的数据生产、消费模块对其进行处理时,应该要达到“相反”功能,也就是对数据处理时需要变化则数据是对:消费者、生产者
2021-04-02 13:21:52
92
原创 小白的JUC学习02_Lock&Callable
简单使用Lock&Callable当JDK1.5开始,对同步代码加锁和创建线程有了两种方式加锁:使用Synchronized使用Lock创建线程:Runnable(或者继承Thread)Callable下面一步步简单阐释1、加锁1.1、传统的Synchronized直接对共享数据的地方对其加SynchronizedSynchronized本质上就是一个队列,锁:应用在成员方法就是锁实例对象静态方法就是锁Class对象,那么一个进程中只有这一个锁,有A线
2021-04-02 10:45:16
184
原创 小白的JUC学习01_基础知识
线程进程并发并行一、线程与进程进程(process):简单对其理解就是一个应用程序的实例深奥点的解释就是: 进程是CPU资源分配的最小单位也就是CPU会为每个应用程序单独分配一块内存空间,该进程在内存空间是独立的、受保护的,里面存储了什么文本区域、数据区域、堆栈等等如果想实现多个进程互相访问,好像要用到什么共享内存或者是socket技术其他特性:一个进程包括1~n个线程线程(thread):而线程可以说是组合在进程类的一个个对象,共享本进程中的数据深奥点的解释就是:
2021-04-02 09:10:12
94
原创 排序算法学习11_堆排序(Java)
堆排序一、排序介绍堆是一个近似完全二叉树的结构,并同时满足堆的性质:即子节点的键值或索引总是小于(或者大于)它的父节点。子结点小于父结点就是大顶堆反之就是小顶堆堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。且是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。二、堆排序实现堆数据结构实现方式,不了解的可以看看往前博客,这边主要来讲排序的实现方式(其实并没有多出什么内容)给出一个如下数组:Integer[] a =
2021-03-14 21:21:52
85
原创 小白数据结构学习_堆(Java)
堆前言1.没啥的,一定要记博客上,不然像上次那样把东西乱删哭死你2.以下所学心得来自于哔站黑马数据结构课程一、堆介绍了解堆之前,我们要知道什么是完全二叉树完全二叉树:从根节点往下,除最后一层外,其余层节点全满最后一层节点都向左靠拢比如这样(图解):在计算机科学中,就有一类数据结构就近似完全二叉树性质,我们把它称为堆。而堆的实现方式,通常使用的是数组,也就是本节我们要用数组来实现一个完全二叉树,也就是堆二、数组实现堆方式在使用链表实现的树上,还可以说是
2021-03-14 21:05:05
129
原创 数据结构学习-二叉树(Java)
一、二叉树BinaryTree前言没啥的,一定要记博客上,不然像上次那样把东西乱删哭死你一、树结构基本介绍到目前为止,我们所学的数据结构都为线性数据结构,元素之间是一对一的关系,但是在计算机科学中还存在非线性数据结构,其中最重要的就是树,抽象出来大概为这样(图解)树是一种在层次结构中存储元素的数据结构,元素称为节点,线条称为路径,每个节点包含一个数据树的顶部节点,比如上图的1,称为根节点根节点有左右两个子节点(也可称为孩子),根节点可以叫做他们的父节点来看看底部的节点,这几个节
2021-03-11 23:55:14
181
原创 IDEA Maven配置终极解决方案
Maven配置1、资源加载问题首先对于资源加载问题,比如xml文件、Properties文件,需要在pom.xml加上如下代码<build> <!-- 要编译的文件资源 --> <resources> <resource> <!-- 指定目录 --> <directory>src/main/java<
2021-02-10 22:24:50
238
原创 排序算法学习10_基数排序(Java)
基数排序学习目标:掌握基数排序算法的原理和思想一、前提知识 排序算法概念、时间复杂度。可前往此网址 排序算法学习01_算法基础介绍阅读二、基数排序介绍 基数排序( Radix sort ),基数排序算法通过对原序列中元素的各个位数分别进行切割来排序,可以说是我们前两篇计数排序和桶排序的结合版本,也是一种非比较型的整数排序算法。且稳定的。三、基数排序工作原理 基数排序也如计数排序一样,利用数组下标排序元素,但此时它并不是直接用元素大小来对应数组下标,而是通过对元素值的每
2021-01-22 17:08:01
84
原创 排序算法学习09_桶排序(Java)
桶排序前言:在博客写这些文章的目的用于记录所学,怕以后忘了,如果哪里写的不对欢迎指正,谢谢!!学习目标:掌握桶排序算法的原理和思想一、前提知识 排序算法概念、时间复杂度。可前往此网址 排序算法学习01_算法基础介绍阅读二、桶排序介绍 桶排序(Bucket sort),桶排序是我们上篇讲过的计数排序的升级版,所以桶排序也是如计数排序一样,通过把原序列的元素放置到“一个新的位置”上,然后依次取出排序。 且桶排序也不是比较排序,桶排序是稳定的三、桶排序工作原理
2021-01-21 21:44:40
163
3
原创 排序算法学习08_计数排序(Java)
计数排序前言:在博客写这些文章的目的用于记录所学,怕以后忘了,如果哪里写的不对欢迎指正,谢谢!!学习目标:掌握计数排序算法的原理和思想一、前提知识 排序算法概念、时间复杂度。可前往此网址 排序算法学习01_算法基础介绍阅读二、计数排序介绍 计数排序(Counting sort)是一种稳定的线性时间排序算法。计数排序不是比较排序, 它利用数组下标来排序元素。三、计数排序工作原理 计数排序利用数组下标来排序元素。通过把要排序序列中的值,依次放入一个新的数组中。如何
2021-01-20 22:04:35
162
原创 排序算法学习07_归并排序(Java)
归并排序前言:在博客写这些文章的目的用于记录所学,怕以后忘了,如果哪里写的不对欢迎指正,谢谢!!学习目标:掌握归并排序算法的原理和思想一、前提知识 排序算法概念、时间复杂度。可前往此网址 排序算法学习01_算法基础介绍阅读二、归并排序介绍 归并排序算法,采用分治思想排序元素。它和快速排序类似,递归地对序列一分为二进行排序。三、归并排序工作原理 归并排序也是递归地对序列一分为二进行排序。但它不像快排,边分边排。而是一直进行分解,分解到某个子序列只剩一个元素时,然后
2021-01-19 21:20:06
104
原创 排序算法学习06_快速排序(Java)
快速排序前言:在博客写这些文章的目的用于记录所学,怕以后忘了,如果哪里写的不对欢迎指正,谢谢!!学习目标:掌握快速排序算法的原理和思想一、前提知识 排序算法概念、时间复杂度。可前往此网址 排序算法学习01_算法基础介绍阅读二、快速排序介绍 快速排序(英语:Quicksort),属于交换排序的一种。又称分区交换排序(partition-exchange sort),我们一般简称为快排三、快速排序工作原理 首先了解一下分治法:分治法将问题分解为规模更小的子问题,然后
2021-01-18 22:49:04
140
原创 排序算法学习05_希尔排序(Java)
希尔排序前言:在博客写这些文章的目的用于记录所学,怕以后忘了,如果哪里写的不对欢迎指正,谢谢!!学习目标:掌握希尔排序算法的原理和思想一、前提知识 排序算法概念、时间复杂度。可前往此网址 排序算法学习01_算法基础介绍阅读 需要了解直接插入排序二、希尔排序介绍 希尔排序(Shellsort),也称递减增量排序算法,是直接插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。三、希尔排序工作原理 其实就比直接插入排序多一点,就是分组。 上面讲过,
2021-01-17 20:43:03
125
原创 排序算法学习04_直接插入排序(Java)
直接插入排序前言:写这些博客的目的用于记录所学,怕以后忘了,如果哪里写的不对欢迎指正学习目标:理解并精通使用直接插入排序一、前提知识 排序算法概念、时间复杂度。可前往此网址 排序算法学习01_算法基础介绍阅读二、直接插入排序介绍 直接插入排序是属于插入排序中的一种简单的排序,它通过抽象两个序列,一个为正在排序的序列称之为有序序列,一个为未排序序列,每次从未排序序列中取值放入有序序列,来完成排序,就像打扑克牌一样三、直接插入排序工作原理 构建一个有序序列,接着取一
2021-01-16 22:43:43
156
原创 排序算法学习03_简单选择排序(Java)
简单选择排序前言:写这些博客的目的用于记录所学,怕以后忘了,如果哪里写的不对欢迎指正学习目标:理解并精通使用简单选择排序一、前提知识 排序算法概念、时间复杂度。可前往此网址 排序算法学习01_算法基础介绍阅读二、简单选择排序介绍 简单选择排序是属于选择排序算法的其中一种简单排序。该算法每进行一次重复走访时,只选择一个值进行排序,简单选择排序的名字也由此而来三、简单选择排序工作原理 在每次重复走访过程中,保存未排序序列的第一个元素且先指定为最大/最小元素,然后再从
2021-01-16 22:28:07
134
原创 排序算法学习02_冒泡排序(Java)
冒泡排序学习目标:理解并精通使用冒泡排序一、前提知识排序算法概念、时间复杂度。可前往此网址 https://editor.csdn.net/md/?articleId=112686088阅读二、冒泡排序介绍 冒泡排序是一种简单的排序算法,它重复地走访要排序的数列,比较时一次比较两个元素,如果符合条件则交换,每经历一次重复访问,数列中所有元素都会接近自己的位置,且必然有一个元素是已经排列完的。该算法名字的由来也是因为这个,在一次排列中,所有元素慢慢靠近自己的位置,就像水底下的气
2021-01-15 19:41:42
181
原创 排序算法学习01_算法基础介绍
算法基础介绍学习目标:精通使用十大排序算法排序算法一、什么是排序算法来自维基百科中的定义是这样的: 一个排序算法(英语:Sorting algorithm)是一种能将一串资料依照特定排序方式进行排列的一种算法。二、排序算法需要遵循的原则输出结果为递增序列(递增是针对所需的排序顺序而言)输出结果是原输入的一种排列、或是重组三、排序算法的几种分类方式按照时间复杂度划分,依据列表(list)的大小(n)对于一个排序算法:最差性能:O(n^2)最好性能:O(n lo
2021-01-15 19:30:41
195
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人