自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 VSCode特别卡顿的问题,但是电脑其他的应用并没有卡顿现象

现象:VSCode特别卡顿的问题,但是电脑其他的应用并没有卡顿现象,查看任务管理器,磁盘,CPU和内存占用都不高,于是猜测应该是VSCode的设置的问题。在网上查阅资料,尝试关闭search.followSymlinks选项,卡顿解决。解决办法:VSCode—设置—搜索search.followSymlinks—关闭...

2021-09-18 08:26:14 4022

原创 Bug:Nacos配置中心远程配置不生效的问题

粗心大意,bootstrap.properties配置文件中的组名和远程配置时的组名和命名空间不一致解决起来就很简单了,只需要将配置文件上的配置对应好就行了

2021-09-16 21:42:30 561

原创 Bug记录:java.lang.NoClassDefFoundError: com/alibaba/nacos/client/logging/NacosLogging

控制台报错:java.lang.NoClassDefFoundError: com/alibaba/nacos/client/logging/NacosLogging解决办法:升级nacos-config的版本 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba

2021-09-16 21:14:25 6727 2

原创 Monitor结构和原理

Monitor被翻译为监视器或者管城。每个Java对象都可以关联一个Monitor对象,如果如果使用 synchronized 给对象上锁(重量级)之后,该对象头的 Mark Word 中就被设置指向 Monitor 对象的指针。1. Java对象头以32位虚拟机为例,普通对象和数组对象所占的长度是不同的。普通对象:数组对象:相较于普通对象,多出32位用来存储数组长度MarkWord:表示对象的线程锁状态,另外还可以用来配合GC、存放该对象的hashCode;KlassWo.

2021-09-15 20:45:48 793 1

原创 synchronized的使用和线程八锁

1. 前言临界资源:一次仅允许一个进程使用的资源就称为临界资源临界区:访问临界资源的代码块竞态条件:多个线程在临界区内执行,由于代码的执行序列不同而导致结果无法预测,称之为发生了竞态条件。为了避免临界区的竞态条件的发生,我们可以采用阻塞式的解决方案和非阻塞式的解决方案。阻塞式的方案就是使用synchronized。synchronized:对象锁,保证了临界区内代码的原子性,采用互斥的方式让同一时刻至多只有一个线程能持有对象锁,其它线程获取这个对象锁时会阻塞,保证拥有锁的线程可以安全的执行临

2021-09-15 20:10:04 143

原创 Failed to determine a suitable driver class

今天早上在启动人人开源的代码生成器时报错,而昨天晚上还在正常使用。报错详细信息:Description:Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.Reason: Failed to determine a suitable driver classAction:Consider the follow

2021-09-14 09:51:24 208

原创 Spring Data Elasticsearch介绍和使用

目录1.Spring Data Elasticsearch 介绍2. 环境搭建2.1 导入依赖2.2 Spring主程序2.3 添加配置文件2.4 实体类2.5 配置类2.6 DAO数据访问层3. 具体操作演示3.1 将实体类和ES映射起来3.2 索引操作3.3 文档操作3.4 搜索操作1.Spring Data Elasticsearch 介绍Spring Data Elasticsearch 基于 spring data API 简化...

2021-09-11 08:49:44 686

原创 Elasticsearch安装使用以及API操作

目录1.Elasticsearch的下载和安装1.1 下载1.2 安装1.3 踩坑2. 数据格式3. Http操作3.1 索引操作3.1.1 创建索引3.1.2 查看所有索引3.1.3 查看单个索引3.1.4 删除索引3.2 文档操作3.2.1 创建文档3.2.2 查看文档3.2.3 修改文档3.2.4 修改字段3.2.5 删除文档3.2.6 条件删除文档3.3 映射操作3.3.1 创建映射3.3.2 ...

2021-09-10 11:27:56 336

原创 线程的六种状态——从Java API层面出发

1 API源码在API种 java.lang.Thread.State枚举出来了六种线程状态,下面为截取代码。public enum State { /** * Thread state for a thread which has not yet started. */ NEW, /** * Thread state for a runnable thread. A thread in t.

2021-09-02 17:37:18 116

原创 线程的五种状态——从操作系统角度出发

如果从操作系统的角度出发的话,线程的状态一共可以描述为五种:初始态,可运行,运行态,阻塞态,终止态。初始状态这时线程创建,开辟好工作空间,但是还没有和操作系统的线程关联Thread t = new Thread();可运行状态t.start();start 方法被调用,线程立即进入了就绪状态,表示这个线程具有了运行的条件,但是还没有开始运行,这就是就绪状态。需要等待CPU的时间片。进入可运行状态的四种状态:1. 调用Start()方法2. 本来处于阻塞状态,..

2021-09-02 14:59:46 707

原创 Java线程的创建运行和相关方法

1 线程的创建创建线程的方式分为:创建线程类和匿名内部类start()方法实际上是给CPU注册当前线程,并且触发run()方法; 线程的执行必须是调用start()方法,如果调用run()方法的话就变成了普通类的执行; 应该先创建子线程,再执行主线程的任务,不然子线程会是最先执行完的,而结束。1.1 直接使用Thread创建构造器方法:public Thread(), public Thread(String name)public class ThreadTesting {

2021-09-02 11:44:01 125

原创 关于并发的非常基础的基础概念知识——线程进程,并发并行,同步异步

一、进程和线程对比认识进程是系统进行资源分配的基本单位,线程是被系统独立调度和分配的基本单位。进程可以看作是程序的一个实例,线程是属于进程的,一个进程可以包含多个线程。线程本身不拥有系统资源,只拥有一些必不可少的资源,但是他和同属于一个进程的线程共享进程的全部资源。进程的特征:并发性,异步性,动态性,独立性,结构性线程的作用:使多道程序更好的并发执行,提高资源利用率和系统吞吐量,增强操作系统的并发性能。进程基本上是相互独立的,而线程存在于进程内,是进程的一个子集。进程拥有共享的资

2021-08-27 14:09:54 110

原创 垃圾回收概述,算法及垃圾回收器

1. 常见面试题蚂蚁金服你知道哪几种垃圾回收器,各自的优缺点,重点讲一下cms和G1?JVM GC算法有哪些,目前的JDK版本采用什么回收算法?G1回收器讲下回收过程GC是什么?为什么要有GC?GC的两种判定方法?CMS收集器与G1收集器的特点百度说一下GC算法,分代回收说下垃圾收集策略和算法天猫JVM GC原理,JVM怎么回收内存CMS特点,垃圾回收算法有哪些?各自的优缺点,他们共同的缺点是什么?滴滴Java的垃圾回收器都有哪些,说下g1的应用场景,平时你是如何搭配使

2021-08-13 18:08:27 496

原创 StringTable&String的常见面试题

1. 基本特性String:字符串,使用一对""引起来表示String声明为final的,不可被继承String实现了Serializable接口:表示字符串是支持序列化的。String实现了Comparable接口:表示string可以比较大小String在jdk8及以前内部定义了final char[] value用于存储字符串数据。JDK9时改为byte[]为什么在JDK9的时候更改String的内部结构?Java8及以前,String内部使用一个char[]保存UTF-

2021-08-12 23:32:25 193 2

原创 执行引擎详解

1. 执行引擎概述1.1 组成执行引擎主要包括解释器,即时编译器和垃圾回收器JVM的任务就是将字节码文件装载到内部。而执行引擎的任务就是将字节码文件的字节码指令翻译为能够在机器上运行的本地机器指令(不同平台的指令也不同)。解释器:当Java虚拟机启动时会根据预定义的规范对字节码采用逐行解释的方式执行,将每条字节码文件中的内容“翻译”为对应平台的本地机器指令执行。JIT(Just In Time Compiler)编译器:就是虚拟机将源代码直接编译成和本地机器平台相关的机器语言.

2021-08-12 18:00:52 410

原创 对象实例化和直接内存

1. 对象实例化1.1 创建对象的方式new:最常见的方式Student student = new Student();Class的newInstance方法:反射的方式,智能调用public的空参构造器Class clazz = Class.forName("com.hong.Student");Student student = (Student) clazz.newInstance();Constructor的newInstance(XXX):反射的方式,可以使用空参和

2021-08-12 11:36:24 128

原创 方法区(Method Area)详解

1. 方法区的基本理解1.1 栈,堆和方法区的关系方法区可以看作是独立于Java堆的一部分,并且也是和堆一样是整个JVM实例共用一份。1.2 方法区的基本理解各个线程共享区域在JVM启动时被创建,并且物理内存可以不连续大小可以固定也可以是动态扩展的方法区的大小决定了系统可以保存多少个类,如果系统定义了太多的类会出现OOM错误。会随着JVM的关闭而释放这一区域的内存1.3 方法去的演进在JDK 7以前,习惯上把方法区称为永久代(习惯上),而到了JDK8,终于..

2021-08-11 21:27:35 10898

原创 堆区(Heap)详细介绍

1. 核心概念1.1 堆区的特点在《Java虚拟机规范》中指出,堆可以是物理上不连续的内存空间,但是在存储逻辑上是连续的。还规定所有的对象实例以及数组都应当在运行时分配在堆上。这就说明了数组和对象可能永远不会存储在栈上,因为栈帧中保存引用,这个引用指向对象或者数组在堆中的位置。一个JVM实例只存在一个堆空间,并且所有的线程共享堆内存。但是可以在堆内存划分线程私有的缓冲区(TLAB),下文会介绍堆区的大小是可以调节的,但是Java堆区在JVM启动时就被创建,其大小也就确定了。并且是J.

2021-08-11 18:08:45 4720

原创 本地方法接口和本地方法栈

1. 本地方法1.1 什么是本地方法一个Native Method就是指Java调用非Java代码的接口。一个Native Method并不提供实现体,它的实现体是由非Java语言在外面提供的。这个接口的作用是融合不同的编程语言。标识符native可以与其它java标识符连用,但是abstract除外。1.2 Native Method出现的目的1.2.1 和Java外的环境交互有时Java应用需要与Java外面的环境交互,这是本地方法存在的主要原因。你可以想想Java需要与.

2021-08-11 14:29:12 104

原创 虚拟机栈详解

1. 概述1.1 虚拟机栈出现的背景使用栈的优点是跨平台,指令集小,编译器容易实现。缺点是性能下降,实现同样的功能需要更多的指令。1.2 内存中的栈和堆可以大致上说:栈是运行时单位,而堆是储存的单位。栈解决程序运行问题:程序如何执行,如何处理数据。堆解决数据储存的问题,即数据怎么放,放在那里。2. 虚拟机栈的基本内容2.1 Java虚拟机栈是什么Java虚拟机栈(Java Virtual Machine Stack),早期也叫Java栈。每个线程在创建时都会创建一个虚拟机

2021-08-10 16:09:48 2920 4

原创 运行时数据区之程序计数器

1. 概述1.1 运行时数据区Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。每个线程独一份:程序计数器,虚拟机栈,本地方法栈(上图灰色)线程间共享:堆,堆外内存(上图红色)1.2 线程线程是一个程序里的运行单元。JVM允许一个应用有多个线程并行的执行。 在Hotspot JVM里,每个线程都与操作系统的本地线程直接..

2021-08-10 10:09:40 124

原创 双亲委派机制

目录0. 说在前面1. 工作流程工作原理:3. 工作特点:4. 破坏双亲委派机制:0. 说在前面我们在IDE中编写的Java源代码被编译成.Class字节码文件,然后通过类加载器将这些Class文件加载到JVM中去执行。那么我们是如何选择类加载器呢?一个.class文件又是怎么被加载到JVM中呢?三种类加载器: Bootstrap classLoader:主要负责加载核心的类库(java.lang.*等),构造ExtClassLoader和APPClassL...

2021-08-09 15:36:46 135

原创 类加载器和类加载过程

目录0. 概述1. 类加载子系统的作用2. 类加载器的角色3. 类加载过程3.1 加载阶段3.1.1 加载流程:3.1.2 数组类的加载3.2 连接阶段3.2.1 验证环节3.2.2准备环节3.2.3 解析环节3.3初始化阶段3.3.1 Static和final的搭配问题3.3.2 ()的线程安全性4. 类加载器的分类4.1 虚拟机自带的加载器4.2 用户自定义的类加载器5. 获取ClassLoader的方法6....

2021-08-09 14:33:43 303

原创 Jvm内存模型

一、内存模型概述简单版本详细版本由上面两个图我们可以看到整个虚拟机的运行流程和结构可以分为,Class文件,类加载子系统,运行时数据区,执行引擎,本低方法接口,本地方法库。运行时数据区又可以分为方法区,堆区,程序计数器,虚拟机栈,本地方法栈。我们如果想自己写一个虚拟机的话,主要考虑类加载器和执行引擎。接下来会介绍每个部分的原理和流程...

2021-08-09 09:31:43 80

原创 JVM基础概念知识

一、JVM学习参考书目:官方规范,《深入理解Java虚拟机》等二、JVM的理解跨平台:只要平台上安装有对应版本的JVM就能运行对应的字节码文件。从而实现一处编译处处运行。跨语言的平台:如下图的几种语言都可以将程序转变成JVM运行和处理的字节码文件,从而实现在Java虚拟机平台上运行非Java语言编写的程序。并且Java虚拟机只关注字节码文件,而对源语言并不关注。三、虚拟机和Java虚拟机虚拟机一台虚拟的计算机。它是一款软件,用来执行一系列虚拟计算机指令。大体...

2021-07-31 18:23:07 108

原创 Sql语句错误:check the manual that corresponds to your MySQL server version for the right syntax to use..

背景在做项目的时候,测试写的Sql语句,然后报错如题和下图。我起初以为是Sql版本问题<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com...

2021-07-13 11:18:46 1060

原创 Spring Cloud Alibaba (四)Seata的理解和使用

阿里开源的分布式事务框架 Seata (dreamwu.com)

2021-07-11 12:00:29 548

原创 Spring Cloud Alibaba (三)Sentinel 简单介绍和使用

前言随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来帮助您保障微服务的稳定性。由于我们熟悉的Hystrix豪猪哥已经停止更新,Spring Cloud Sentinel就成为很多开发人员选型的首选组件,用来替代Hystrix提供的服务降级,服务熔断,服务限流等功能。官方文档https://sentinelguard.io/zh-cn/docs/introducti

2021-07-10 22:06:56 391

原创 Spring Cloud Alibaba (二)配置中心简介

什么是配置?我们的应用程序在启动和运行的时候往往会读取一些配置信息,并且这些配置信息往往会伴随着应用程序的整个声明周期。比方说数据库连接参数等等。配置的主要特点配置是独立于程序的只读变量:程序可以读取配置来改变自己的行为但是不能改变配置的内容。配置是伴随整个生命周期:应用在启动时通过读取配置来初始化,在运行时根据配置调整行为。配置可以有很多种加载形式:常见的有程序内部的Hard Code,配置文件,环境变量,启动参数等等。配置需要治理:同一份程序在不同的环境,不同的集群经常需要用不

2021-07-10 10:59:52 261

原创 Spring Cloud Alibaba (二)Nacos 之配置中心

Nacos和Config两个对比使用下来发发现,Nacos的操作更加简单,更加方便。一、配置Nacos服务配置中心代码配置建Moudle新建cloudalibaba-config-nacos-client3377改pom<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.

2021-07-10 10:33:13 96

原创 Spring Cloud Alibaba (二)Nacos 之服务注册中心简单对比

Nacos与eureka注册中心对比Nacos与其他注册中心特性对比Nacos支持AP和CP模式的切换C代表的是一致性,A代表的是可用性—般来说,如果不需要存储服务级别的信息且服务实例是通过nacos-client注册,并能够保持心跳上报,那么就可以选择AP模式。当前主流的服务如Spring cloud和Dubbo服务,都适用于AP模式,AP模式为了服务的可能性而减弱了一致性,因此AP模式下只支持注册临时实例。如果需要在服务级别编辑或者存储配置信息,那么CP是必须,K8S服务..

2021-07-10 09:39:25 174

原创 Spring Cloud Alibaba (二)Nacos 之服务发现的搭建

服务提供者注册(1)建Moudule新建cloudalibaba-provider-payment9001(2)改POM父om<dependencyManagement> <dependencies> <!--spring cloud alibaba 2.1.0.RELEASE--> <dependency> <groupId>com.alibaba.cloud&

2021-07-09 16:42:21 102

原创 Spring Cloud Alibaba (二)Nacos 的简介和安装

名字的由来名字叫Nacos,其中呢na是naming的缩写,co是configuration的所写,最后的s是service的缩写能做什么顾名思义,Nacos: Dynamic Naming and Configuration Service,是构建云原生应用的动态服务发现,配置管理和服务管理平台。Nacos相当于另一个专栏里讲的Eureka、Config和Bus的组合。能够代替Eureka做服务注册中心也能代替Config做服务配置中心。有任何疑问请参照官方文档下载地址 官方...

2021-07-09 16:08:48 128

原创 Spring Cloud Alibaba (一)Spring Cloud Alibaba简介

前言由于Netflix进入了维护模式。那么什么是维护模式呢?将模块置于维护模式,意味着Spring Cloud团队将不会再向模块添加新功能。他们将修复block级别的 bug 以及安全问题,他们也会考虑并审查社区的小型pull request。Spring Cloud Alibaba简介这里引用官网的一段话Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型.

2021-07-09 15:47:00 97

原创 Spring Cloud H (七)链路跟踪 Sleuth

为什么需要这个技术?在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败。https://github.com/spring-cloud/spring-cloud-sleuth Spring Cloud Sleuth提供了一套完整的服务跟踪的解决方案 在分布式系统中提供追踪解决方案并且兼容支持了zipkinSleu..

2021-07-09 11:20:48 50

原创 Spring Cloud H (七)消息驱动 Cloud Stream

目录前言Stream是什么及Binder介绍Stream的设计思想Stream编码常用注解简介案例分析Stream消息驱动之生产者Stream消息驱动之消费者Stream之消息重复消费Stream之消息持久化前言我们常见的消息中间件有:ActiveMQ、RabbitMQ、RocketMQ、Kafka。这几种消息中间件的内部实现细节肯定是不同的,那么有没有一种技术,让我们不再关注MQ的细节,我们只需要用一种适配绑定的方式,自动的给我们在各种MQ内切换。而我们..

2021-07-09 10:42:10 108

原创 Spring Cloud H (六)配置中心和消息总线 Config和Bus 简单介绍

个人感觉Spring Cloud Alibaba 的Nacos使用起来更加方便和顺手,这里就简单介绍一些Config吧。话不多说,官方网站先奉上Config官方网站分布式系统面临的配置问题微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。ConfigConfig是什么?SpringCloud Config为微服务架构中的微服务提供集..

2021-07-09 09:36:01 233

原创 Spring Cloud H (五)服务网关 GateWay

GateWay官方网站概述

2021-07-09 09:02:54 718

原创 Spring Cloud H (五)初战服务降级和熔断Hystrix(豪猪哥)

目录前言概述服务雪崩服务限流服务降级服务熔断如何理解服务降级和熔断之间的关系代码实战Hystrix支付微服务构建订单微服务调用支付服务出现卡顿Hystrix之服务降级支付侧fallbackHystrix之服务降级订单侧fallbackHystrix之全局服务降级DefaultPropertiesHystrix之通配服务降级FeignFallbackHystrix之服务熔断案例前言Hystrix是Netflix的一个开源框架,地址如...

2021-07-08 21:22:08 359

原创 Spring Cloud H (四)OpenFeign的简单理解和使用

前言Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。它的使用方法是定义一个服务接口然后在上面添加注解。Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。官方文档GitHub地址一、Feign简介Feign能做什么前面在使用Ribb.

2021-07-08 16:57:06 107

空空如也

空空如也

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

TA关注的人

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