自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

String小四的博客

不忘仰望星空,不忘脚踏实地~

  • 博客(65)
  • 收藏
  • 关注

原创 java源码分析-注解AnnotatedElement接口

java源码分析-注解AnnotatedElement接口概述在我们讲解注解的运行时处理器时写过这样一段代码: //通过Class对象拿到getPersonInfo方法对象MethodMethod method = clazz.getDeclaredMethod("getPersonInfo", null);System.out.println(method.getName());//根据Method获取到该方法上的注解MyPersonAnnotation declaredAnnotation

2021-10-10 08:49:48 508

原创 java源码分析-反射SecurityManager类

java反射源码分析-SecurityManager其实SecurityManager类并不是反射相关类图中的一员,但是在我们查看反射源码时经常看到如下的代码:checkMemberAccess(Member.PUBLIC, Reflection.getCallerClass(), true);... private void checkMemberAccess(int which, Class<?> caller, boolean checkProxyInterfaces)

2021-07-06 07:30:47 446 1

原创 java源码分析-反射Constructor类

java反射源码分析-Constructor1.是什么?​ Constructor是java反射时用于表示构造函数的抽象,它包含一个类的构造函数的相关信息。java中一切都是对象,那么每一个构造函数也是一个对象,把这写构造函数抽象出来,就是Constructor类。public final class Constructor<T> extends Executable Executable:它是Method和Constructor的公共基类。它继承了AccessibleObject类

2021-06-10 07:53:42 748 1

原创 java源码分析-反射Method类

java反射源码分析-Method1.是什么​ Method类提供有关类或接口上单个方法的信息和访问权限。Method反映的方法可以是类上的实力方法或者是静态方法也可以是接口上的抽象方法。public final class Method extends Executable通过类图,可以看到Executable类是Mehod的父类。实际上它是Method和Constructor的公共基类。2.如果获取有以下集中方法可以获取到Method类:2.1获取所有的方法通过Class类的getD

2021-06-08 15:31:59 440 1

原创 java源码分析-反射Class类

java反射源码分析-Class类1.Class类是什么​ Class本质上也是java的一个类,这个类是对java所有的类的相关信息进行提取和抽象。简单说,Class类就表示创建类的类型信息。Class类的对象能够在允许时提供某个类对象的类型信息,包含了对构造函数、方法、变量等一系列操作。public final class Class<T> implements java.io.Serializable, GenericDec

2021-06-03 09:34:09 170 1

原创 java源码分析-运行期注解处理器

java源码分析-详说注解处理器上一篇《java源码分析-注解基本原理》中我们了解了注解的一些基本概念和基本原理,在文章最后也点了一下注解处理器,当时我说注解在使用时实际上是通过反射拿到注解信息,其实不是完全正确的。本篇,我们就来详细讨论一下注解处理器。1.注解处理器​ 注解处理器顾名思义,就是用来处理注解信息的,如果没有注解处理器,那么注解其实和注释是没有多大的区别。真是因为注解处理器的存在,才使得注解能够发挥起作用。那么java到底是怎么实现?Java的注解处理一般分为2种,最常见也是最显式化的就

2021-05-06 19:19:46 374

原创 java源码分析-编译期注解处理器

java源码分析-编译期注解处理器上一篇我们把运行时注解处理器的原理大致分析了一遍,本片我们来讨论一下编译期注解处理器的底层实现。1.Annotation Processing Tool1.1概述​ Java编译期注解处理器,Annotation Processing Tool,简称APT,是Java提供给开发者的用于在编译期对注解进行处理的一系列API,这类API的使用被广泛的用于各种框架,如dubbo,lombok等。​ Annotation Processing Tool注解处理器是 jav

2021-04-21 07:42:26 429

原创 java源码分析-注解基本原理

java源码分析-注解基本原理​ java注解在实际工作中经常彭代,无论是java内置注解还是框架自带注解,在我们使用这些注解的时候是否思考过这些注解到底是什么作用?是怎么起作用的?java以及框架是怎么识别这些注解的?本篇我们就来聊一聊注解的基本原理。1.注解是什么​ 其实注解在大多数情况下与普通的修饰符(public,void,static等)在使用方式上并没有多大区别。我们先来看个例子:public class AnnotationDemo { @Override publi

2021-04-17 11:25:01 1964

原创 java源码分析-内部类

java源码分析-内部类​ 在我们学习源码的时候经常会看见内部类,本片我们就来详细了解一下内部类的底层原理。什么是内部类​ 什么叫内部类?通俗的说,内部类就是定义在一个类的内部的类。内部类本身其实也是一个类的属性,定义方式也是非常类似。举个例子:public class OuterClass1 { class InnerClass{ public void name(){ System.out.println("InnerClass.");

2021-03-28 17:41:30 251

原创 java源码分析-String类不可变性讨论

java源码分析-String类不可变性讨论在很多面试过程中,有一个经常被问到的问题,请你谈一谈String对象为什么说是不可变的?也许你会说,因为它被final修饰了,所以不可变。如果你这样回答,那么只能说,还是太年轻了。今天我们就好好讨论一下String对象的不可变性。1.不可变对象​ 要聊String对象的不可变性,我们先要搞明白什么是不可变对象?不可变对象,顾名思义,对象在创建之后对象就不能在改变了。对象的状态​ 对象的状态指的是存储在状态变量中的数据(状态变量包括实例或者静态域),还包

2021-03-17 20:34:35 145 1

原创 java源码分析-String类源码概要

java源码分析-String类源码概要1.简介​ String类是我们java程序员使用频率非常大的类,我们都知道String类是不可变类,一旦定义就不可改变,那么它为什么不可变呢?它的内部做了什么处理呢?今天我们就好好研究一下String类。先上源码:public final class String implements java.io.Serializable, Comparable<String>, CharSequence通过上面我们能知道:String类被f

2021-03-16 07:11:12 214

原创 java源码分析-基本类型和包装类

java源码分析-基本类型和包装类1.类型、值和变量​ java是一种静态类型语言,每个变量和表达式都在编译期就确定了类型。​ java还是一种强类型语言,类型的确定就限定了类该类型变量的值或者表达式返回值的类型。1.1基本类型和引用类型​ java语言的类型分为两种:基本类型和引用类型;基本类型包括布尔类型boolean和数字类型,其中数字类型包括整数类型byte、short、char、int和long以及浮点数类型float和double。引用类型包括类类型、接口类型和数组类型,另

2021-03-06 15:47:42 208

原创 java源码分析-Integer类

java源码-Integer类本篇我们来深入了解一下基本数据类型的包装类Integer。1.构造函数public Integer(int value) { this.value = value;}public Integer(String s) throws NumberFormatException { this.value = parseInt(s, 10);}通过传入一个int值来构造Integer对象;通过传入一个数值类型的字符串来构造一个Integer对象。2

2021-03-04 20:55:46 187 1

原创 java源码分析-native方法的调用

java源码分析-native方法的调用​ 这段时间在分析java源码时,经常能看到很多的底层源码中都调用了被native关键字修饰的方法,也就是java调用本地方法。但是在进行debug时有进不去,看不了具体的实现。因为这写方法是用c/c++实现的,那么这对我们分析源码就有了很多的阻碍,这些方法就像黑盒一样。于是我就在想,java是怎么调用这些本地方法的呢?接下来我们就一步步的探究一下这其中的原理。那么这一篇我们就来自己来通过java实现native方法的调用。1.什么是native方法​ nat

2021-03-02 22:26:41 1512 2

原创 java源码分析-Object类wait/notify

java源码分析-Object类wait/notify​ 前面我们简单的把Object类的源码浏览了一遍,但是也只是简单的看了一下,没有深入学习。Object类作为java中所有类的基类,其重要性不言而喻。本片我们就来详细了解一下Object类中的wait方法和notify方法。源码:public final void wait() throws InterruptedException { wait(0);}public final native void wait(long time

2021-02-28 08:46:27 342

原创 java源码分析-Object类clone方法

java源码分析-Object类clone方法先看一下源码:/** * Creates and returns a copy of this object. The precise meaning * of "copy" may depend on the class of the object. The general * intent is that, for any object {@code x}, the expression: * <block

2021-02-27 14:53:19 337

原创 java源码分析-Object类

java源码分析-Object类Object类是类层次结构中的根类,每个类都使用它作为父类(超类),所有的对象(包括数组)都实现了这个类中的方法。1.静态代码块private static native void registerNatives();static { registerNatives();}将对象加载到内存时,首先执行静态代码块,执行registerNatives方法。这个方法的作用就是将Object类中其他的本地方法都机械能注册,方便java程序调用native方法时对

2021-02-25 07:29:07 134 3

原创 Idea搭建JDK8源码环境

Idea搭建JDK8源码环境1.准备IDE:IntelliJ IDEAjdk:oracle JDK8​ 下载:http://www.oracle.com/technetwork/java/javase/downloads/index.html​ 在JDK8的安装路径下找到src.zip压缩包,这就是我们需要的源码。2.搭建步骤2.1新建项目在Idea中,新建简单的java project,如下:2.2添加源码首先将JDK8的源码src.zip解压,然后将解压后的src目录下的所

2021-02-23 21:36:45 2108

原创 Sharding-JDBC入门

Sharding-JDBC入门​ 最近在做一个java后台重构项目时碰到了一个问题,就是系统的数据量越来越大,单表的压力剧增,已经不能满足正常的数据操作了。这个时候就需要有分库分表的处理了,由于资源和业务限制,最终只选择了分表。本来想着分表简单,对数据入库和索引时添加逻辑判断,选择对应表处理就完事了,结果项目里有位老哥说了,我们可以尝试用Sharding-JDBC做分表。这突然引起了我的兴趣,于是乎边开始研究一下Sharding-JDBC了。​ 本片主要是对Sharding-JDBC做一个入门,想要深入

2021-01-30 21:31:21 305

原创 Spring Security入门学习

Spring Security入门学习**1.Spring Security概述Spring Security 是 Spring 家族中的一个安全管理框架,实际上,在 Spring Boot 出现之前,Spring Security 就已经发展了多年了,但是使用的并不多,安全管理这个领域,一直是 Shiro 的天下。相对于 Shiro,在 SSM/SSH 中整合 Spring Security 都是比较麻烦的操作,所以,Spring Security 虽然功能比 Shiro 强大,但是使用反而没有 S

2021-01-17 14:56:20 324

转载 解决Host ‘gateway‘ is not allowed to connect to this MySQL server

https://blog.csdn.net/me_Lany/article/details/82770948?utm_source=blogxgwz4

2021-01-16 09:58:41 1435

原创 离线安装zookeeper安装

离线安装zookeeper安装1.安装环境安装环境为 :CentOS7jdk为1.8安装zookeeper需要先安装jdk。(略)输入java -version 如果出现如图所示,则已经安装成功。2.上传zookeeper安装包将zookeeper的安装包,上传到linux系统中。3.将zookeeper压缩包解压缩输入命令tar -zxvf apache-zookeeper-3.5.8-bin.tar.gz并将解压后的文件夹移动到指定慕课/usr/localmv apach

2021-01-13 07:50:49 341

原创 JDK8新特性——Lambda

JDK8新特性——Lambda1.Lambda表达式特殊的匿名内部类,语法更加简洁。Lambda表达式允许把函数作为一个方法的参数传递,将代码像数据一样传递。1.1基本语法:package com.jzt.lambda;/** * 自定义一个函数式接口 */@FunctionalInterfacepublic interface IUsb { void work();}1.2操作符Lambda表达式引入了新的操作符:->(箭头操作符),->将表达式分为两个部

2020-12-27 16:10:55 256

原创 SpringCloud&alibaba学习笔记系列8

SpringCloud&alibaba学习笔记系列该笔记仅作为个人学习使用。第八章Gateway新一代服务网关8.1概述简介官网:上一代网关zuul:https://github.com/Netflix/zuul/wiki当前Gateway网关:https://spring.io/projects/spring-cloud-gateway8.1.1是什么Cloud全家桶中有一个很重要的组件就是网关,在1.X版本中都是采用的Zuul网关;但在2.x版本中,zuul的升级一直划水,Spr

2020-12-22 07:59:38 184

原创 SpringCloud&alibaba学习笔记系列7

SpringCloud&alibaba学习笔记系列该笔记仅作为个人学习使用。第七章Hystrix断路器7.1概述7.1.1分布式系统面临的问题​ 复杂分布式体系结构中的应用程序有数十个依赖关系,每一个依赖关系在某些时候将不可避免地失败。如上图的请求需要调用A、P、H、I四个服务,如果一切顺利则没有什么问题,关键如果I服务超时会出现什么情况?显然,如果I服务出现问题就有可能导致整这个调用链出现问题,严重可能整个系统瘫痪。也就是我们说的服务雪崩。服务雪崩:​ 多个微服务之间调用的时候

2020-12-13 11:49:17 225

原创 SpringCloud&alibaba学习笔记系列6

SpringCloud&alibaba学习笔记系列该笔记仅作为个人学习使用。第六章OpenFeign服务接口调用6.1概述6.1.1OpenFeign是什么官网:https://cloud.spring.io/spring-cloud-static/Hoxton.SR1/reference/htmlsingle/#spring-cloud-openfeigngithub:https://github.com/spring-cloud/spring-cloud-openfeign​ F

2020-12-10 10:09:13 98

原创 SpringCloud&alibaba学习笔记系列5

SpringCloud&alibaba学习笔记系列该笔记仅作为个人学习使用。第五章Ribbon负载均衡服务调用5.1概述5.1.1是什么​ Spring Cloud Ribbon是基于NetFlix Ribbon实现的一套客户端 负债均衡的工具。(服务端使用Nginx软件实现)​ 简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负债均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单地说,就是在配置文件中列出Load B

2020-12-05 17:26:36 172

原创 SpringCloud&alibaba学习笔记系列4

SpringCloud&alibaba学习笔记系列该笔记仅作为个人学习使用。第四章Consul服务注册与发现4.1Consul简介官网:https://www.consul.io/4.1.1是什么Consul是一套开元的分布式服务发现和配置管理系统,由HashiCorp公司Go语言开发。​ 提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格,总之Consul提供了一种完整的服务网格解决方案。​ 它具有

2020-11-28 12:36:51 228 2

原创 SpringCloud&alibaba学习笔记系列3

SpringCloud&alibaba学习笔记系列该笔记仅作为个人学习使用。第六章zookeeper的服务发现与注册官网:https://zookeeper.apache.org/使用zookeeper代替eureka6.1注册中心zookeeper​ zookeeper是一个分布式协调工具,可以实现注册中心功能;6.2服务提供者1.新建cloud-provider-payment80042.pom文件直接从8001拷贝过来依赖<?xml version="1.0"

2020-11-25 18:30:49 247

原创 SpringCloud&alibaba学习笔记系列2

SpringCloud&alibaba学习笔记系列该笔记仅作为个人学习使用。第二章Eureka服务注册与发现2.1Eureka基础知识2.1.1服务治理​ SpringCloud封装了Netflix公司开发的Eureka模块来实现服务治理。​ 在传统的rpc远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理也比较复杂,所以需要使用服务治理,管理服务于服务之间的依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。2.1.2服务注册与发现​ Eureka采用了CS

2020-11-21 08:14:52 259

原创 SpringCloud&alibaba学习笔记系列1

SpringCloud&alibaba学习笔记系列该笔记仅作为个人学习使用。第一章微服务架构概述及入门1.1微服务架构概述​ 微服务架构是一种架构模式,它提倡将单一应用程序划分为一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务之间采用轻量级的通信机制互相协作(通常是基于HTTP协议的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应当尽量避免统一的、集中式的服务管理机制,对具

2020-11-19 20:21:52 351 2

原创 Linux离线安装JDK1.8

下面给大家给大家分享关于Linux离线安装jdk的详细步骤:1、切换root用户​ 登录虚拟机进入终端切换到root用户;[root@localhost ~]# su root2、下载jdk1.8官网:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html3、上传jdk压缩包将jdk的压缩包上传到上传到/usr/local目录下,并解压。[root@localhost ~]#

2020-11-14 23:00:36 2698

原创 Mybatis批量插入Oracle数据库

问题描述:今天在Mybatis批量插入时出现了一点问题。本来Mybatis批量插入Mysql的操作在Oracle数据库中突然报错了。具体的操作如下:@Insert({ "<script>", "insert into tr_wy_proj_mo_rela(PROJECTID,RULE_CONTENT) ", "<foreach collection='nelist' index='index' item='item' separator=','&g

2020-11-01 17:15:43 248

原创 解决github访问的问题

解决github访问的问题今天登陆github碰到一个问题,就是原来一直可以访问的github官网今天突然访问不了了。弄了好久,没弄好,找了几篇文章,终于解决了。就记录一下,以后可能还要用。查询DNS1、通过访问站长工具 http://tool.chinaz.com/dns/ 查询DNS,在输入框中填写 github.com,然后点击检测按钮,会查询出该DNS对应的ip:2、也可以通过 https://www.ipaddress.com/ 查询 IP:修改hosts文件找到C:\Window

2020-11-01 11:56:31 975

原创 Mybatis分页查询插件PageHelper简单入门

Mybatis分页查询插件PageHelper简单入门​ 最近在在搭建一个SSM项目时需要做一个分页查询功能。一开始想着去自己实现分页功能,自己定义一个PageBean之类的,然后手动实现。但是通过查询相关资料发现,MyBatis有一个实现分页功能的插件PageHelper,能够快速的帮助我们实现分页,不用我们自己动手,避免了很多的重复繁琐工作。直接进入正题,下面我们就来聊一聊PageHelper。1.PageHelper简介官网: https://pagehelper.github.io/一款

2020-10-24 20:15:28 453

原创 Mapper.xml中引用自定义第三方jar中的bean显示找不到

问题描述:再部署微服务过程中,我将一些公共实体和方法抽取成一个公共的微服务,然后打成jar包,在其它微服务中引用,但是原来可以正常跑的程序,突然报错了。这里记录一下,毕竟当时花了很多时间。报错信息如下:2020-10-18 17:02:45.783 ERROR 6492 --- [ restartedMain] o.s.boot.SpringApplication : Application run failedorg.springframework.bean

2020-10-18 17:19:03 953 1

转载 linux离线安装mysql5.7

本文转自https://blog.csdn.net/u012052268/article/details/103923056文章目录0 前言 1 下载 2 安装 2.1 创建用户 2.2 解压缩 2.3 创建配置文件 2.4 初始化文件 2.5 启动数据库 2.6 配置环境变量 2.7 登陆,修改密码 3 使用mysql 3.1 用户建立 3.2 创建数据库 参考文献:0 前言网上已经有那么多的关于CentOS 7如何安装MySQL.

2020-10-13 23:26:38 2134 1

原创 SMM项目集成Log4j2

SMM项目集成Log4j2​ Log4j是Apache的一个开放源代码项目,通过Log4j,我们可以控制日志信息输出的目的地是控制台、文件、Gui组件、甚至是套接字接口服务器等。我们也可以控制每一条日志的输出格式。通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生产过程,而这些可以通过配置文件进行灵活的配置,而不需要修改对应的代码。下面我们将Log4j集成到之前我们搭建的SSM(Spring+SpringMVC+Mybatis)项目中。1.引入依赖​ 在pom.xml中添加Log4j依赖的

2020-10-13 08:10:18 173

原创 SSM项目集成Swagger2

SSM项目集成Swagger2在团队开发中,一个好的API文档不但可以减少大量的沟通成本,还可以帮助前后端分离架构的开发人员更好的沟通。Swagger2作为一个规范和完整的矿浆,可以用于生成、描述、调用和可视化RESful风格的web服务。需求:​ 在已搭建好的SMM(spring+springmvc+mybatis)的项目中整合Swagger2。搭建步骤:1.引入pom依赖​ 在maven的pom文件中,引入springfox的依赖。<!--springfox的核心jar包--&gt

2020-10-11 16:44:27 805 1

原创 Spring学习笔记4

第七章 Spring中的JdbcTemplate7.1JdbcTemplate概述​ JdbcTemplate框架中提供的一个对象,是对原始Jdbc API对象的简单封装。作用是和数据化进行交互,实现对表的的CRUD操作。7.2JdbcTemplate简单使用搭建环境:引入依赖:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" x

2020-10-08 07:44:41 110

空空如也

空空如也

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

TA关注的人

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