Java学习
文章平均质量分 69
学习java的笔记整理和代码演示
死磕的斯坦张
Coding everyday。
展开
-
Consider injecting the bean as one of its interfaces or forcing the use of CGLib-based proxies 问题解决
Consider injecting the bean as one of its interfaces or forcing the use of CGLib-based proxies by setting proxyTargetClass=true on @EnableAsync and/or @EnableCaching.问题描述Spring Boot 项目,启用事务支持时出现以下错误:Error starting ApplicationContext. To display the auto原创 2022-05-05 09:55:18 · 6930 阅读 · 0 评论 -
MybatisPlus分页插件的使用
MybatisPlus分页插件的使用实现医院列表展示1. 添加service分页接口与实现在HospitalService类添加分页接口/** * 分页查询 * @param page 当前页码 * @param limit 每页记录数 * @param hospitalQueryVo 查询条件 * @return*/Page<Hospital> selectPage(Integer page, Integer limit, HospitalQueryVo hospital原创 2022-01-14 22:56:22 · 618 阅读 · 0 评论 -
注册中心Nacos的集成和使用
1、Nacos概述1.1 什么是NacosNacos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施1.2 常见的注册中心Eureka(原创 2022-01-14 22:52:34 · 340 阅读 · 0 评论 -
图片base64编码
目录图片base64编码1. 图片base64说明2. 图片base64工具类图片base64编码1. 图片base64说明图片的base64编码就是可以将一张图片数据编码成一串字符串,使用该字符串代替图像地址url在前端页面中常见的base64图片的引入方式:<img src="data:image/png;base64,iVBORw0..>1.优点(1)base64格式的图片是文本格式,占用内存小,转换后的大小比例大概为1/3,降低了资源服务器的消耗;(2)网页中使用bas原创 2022-01-14 22:45:25 · 9631 阅读 · 0 评论 -
SpringCloud 集成Gateway网关
目录1. 服务网关2. Spring cloud gateway3. 服务搭建3.1 搭建server-gateway3.2 修改配置pom.xml3.3 在resources下添加配置文件3.4添加启动类3.5 跨域处理3.5.1 为什么有跨域问题?3.5.2解决跨域问题3.6服务调整1. 服务网关API网关出现的原因是微服务架构的出现,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下的问题:(1)客户端会多次原创 2022-01-14 22:39:07 · 570 阅读 · 0 评论 -
集成JWT生成token
JWT生成tokenJWT工具JWT(Json Web Token)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源。比如用在用户登录上JWT最重要的作用就是对 token信息的防伪作用。JWT的原理,一个JWT由三个部分组成:公共部分、私有部分、签名部分。最后由这三者组合进行base64编码得到JWT。1、公共部分主要是该JWT的相关配置参数,比如签名的加密算法、格式类型、原创 2021-12-31 10:03:09 · 352 阅读 · 0 评论 -
网关配置类解决跨域问题
在springboot中gateway模块中添加这样一个配置类,不过如果这样处理以后,CrossOrigin这个注解就不能再添加了。@Configurationpublic class CorsConfig { @Bean public CorsWebFilter corsFilter() { CorsConfiguration config = new CorsConfiguration(); config.addAllowedMethod("*");原创 2021-12-30 11:11:31 · 384 阅读 · 0 评论 -
java 出现unreachable statement异常
java编译器把unreachable statement标记为运行时错误,一个unreachable statement就是编译器决定永远不会执行它。下面的几种情况会出现 unreachable statement:(1)在reutrn语句后写语句。(2)在throw语句后写语句。(3)break、continue语句之后定义语句。(4)“\u10100”//合法,相当于‘\u1010’和字符串“0”。(5)移位运算符可以用于long int char short byte。(6)类的访问控原创 2021-12-07 15:22:15 · 3300 阅读 · 0 评论 -
Java四种内部类的总结
在Java语言中,可以把一个类定义到另外一个类的内部,在类里面的这个类就叫做内部类,外面的类称为外部类。在这种情况下,这个内部类可以被看成外部类的一个成员(与类的属性和方法类似)。还有一种类被称为顶层(top-level)类,指的是类定义代码不嵌套在其他类定义中的类。内部类可以分为很多种,主要有以下四种:静态内部类(static inner class)、成员内部类(member innerclass)、局部内部类(local inner class)和匿名内部类(anonymous inner clas原创 2021-11-21 11:50:52 · 80 阅读 · 0 评论 -
Java的transient关键字使用
transientJava的serialization提供了一种持久化对象实例的机制。当持久化一个对象时,可能并不想持久化所有的属性。对于这种情况,可以通过在属性前加上关键字transient来实现。例如以下代码是SuperClass和Sub两个类的定义。在序列化一个Sub的对象Sub到文件时,只有radius会被保存到文件中。class SuperClass{ public String name;}class Sub extends SuperClass implements Seria原创 2021-11-21 11:30:27 · 416 阅读 · 0 评论 -
Java的不可变类(Immutable class)使用
不可变类(Immutable class)不可变类(Immutable class)是指当一个对象被创建出来以后,它的值就不能被修改了,也就是说,一个对象一旦被创建出来,在其整个生命周期中,它的成员变量就不能被修改了。它有点类似于常量(const),只允许别的程序读,而不允许别的程序进行修改。在Java类库中,所有基本类型的包装类都是不可变类,例如Integer、Float等。此外,String也是不可变类。可能有人会有疑问,既然 String 是不可变类,那么为什么还可以写出如下代码来修改String原创 2021-11-21 11:10:22 · 1591 阅读 · 0 评论 -
java时间日期Date()一般使用及其格式化和java.util.calendar
获取当前时间import java.util.Date; public class DateDemo { public static void main(String[] args) { // 初始化 Date 对象 Date date = new Date(); // 使用 toString() 函数显示日期时间 System.out.println(date.toString()); }}使用 Simpl原创 2021-11-11 14:27:41 · 455 阅读 · 0 评论 -
关于Java File建立文件夹等相关使用
Java File建立新的文件夹 //使用File类传入文件路径,判断其是否存在,不存在则新建之 File f1 = new File("e:/jiudao/"); if (!f1.exists()) { f1.mkdirs(); }Java File的mkdir()和mkdirs()使用区别import java.io.*; public class TestFile { public sta原创 2021-11-11 14:22:14 · 288 阅读 · 0 评论 -
加不加@RequestParam的区别
1.不加@RequestParam前端的参数名需要和后端控制器的变量名保持一致才能生效。2.不加@RequestParam参数为非必传,加@RequestParam写法参数为必传。3.@RequestParam可以通过@RequestParam(required = false)设置为非必传。因为required值默认是true,所以默认必传。4.@RequestParam可以通过@RequestParam(“userId”)或者@RequestParam(value = “userId”)指定参数名原创 2021-11-09 17:48:33 · 1741 阅读 · 0 评论 -
java的几种对象(PO,VO,POJO)
首先,java有几种对象(PO,VO,DAO,BO,POJO)一、PO:persistant object 持久对象可以看成是与数据库中的表相映射的java对象。使用Hibernate来生成PO是不错的选择。二、VO:value object值对象通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.PO只能用在数据层,VO用在商业逻辑层和表示层。各层操作属于该层自己的数据对象,这样就可以降低各层之间的耦合,便于以后系统的维转载 2021-11-09 14:48:59 · 499 阅读 · 0 评论 -
RabbitMQ入门及安装
目录标题01、概述02、安装RabbitMQ03、 Erlang安装04、安装socat05、安装rabbitmq06、RabbitMQ的配置01、概述官网:https://www.rabbitmq.com/简单概述:RabbitMQ是一个开源的遵循AMQP协议实现的基于Erlang语言编写,支持多种客户端(语言)。用于在分布式系统中存储消息,转发消息,具有高可用,高可扩性,易用性等特征。02、安装RabbitMQ1:下载地址:https://www.rabbitmq.com/download.原创 2021-11-09 10:27:51 · 122 阅读 · 0 评论 -
消息队列的理论知识概述
而消息中间件采用的并不是http协议,而常见的消息中间件协议有:OpenWire、AMQP、MQTT、Kafka,OpenMessage协议。面试题:为什么消息中间件不直接使用http协议呢?1: 因为http请求报文头和响应报文头是比较复杂的,包含了cookie,数据的加密解密,状态码,响应码等附加的功能,但是对于一个消息而言,我们并不需要这么复杂,也没有这个必要性,它其实就是负责数据传递,存储,分发就行,一定要追求的是高性能。尽量简洁,快速。2:大部分情况下http大部分都是短链接,在实际的交互过原创 2021-11-09 10:20:26 · 199 阅读 · 0 评论 -
关于消息中间件技术的入门概述
这里写目录标题什么是消息中间件单体架构分布式架构基于消息中间件的分布式系统的架构消息中间件应用的场景常见的消息中间件消息中间件的本质及设计消息中间件的核心组成部分什么是消息中间件在实际的项目中,大部分的企业项目开发中,在早期都采用的是单体的架构模式,如下图:单体架构在企业开发的中,大部分的初期架构都采用的是单体架构的模式进行架构,而这种架构的典型的特点:就是把所有的业务和模块,源代码,静态资源文件等都放在一个一工程中,如果其中的一个模块升级或者迭代发生一个很小变动都会重新编译和重新部署项目。 这种原创 2021-11-08 20:56:55 · 146 阅读 · 0 评论 -
关于分布式服务中的中间件技术入门概述
目录标题1、什么是中间件2、为什么需要使用消息中间件3、中间件特点4、在项目中什么时候使用中间件技术中间件技术概览参考资料1、什么是中间件中间件(Middleware)是处于操作系统和应用程序之间的软件,也有人认为它应该属于操作系统中的一部分。人们在使用中间件时,往往是一组中间件集成在一起,构成一个平台(包括开发平台和运行平台),但在这组中间件中必须要有一个通信中间件,即中间件=平台+通信,这个定义也限定了只有用于分布式系统中才能称为中间件,同时还可以把它与支撑软件和实用软件区分开来。举例:1,R原创 2021-11-08 20:07:21 · 1496 阅读 · 0 评论 -
Spring Cloud——Zull路由网关
什么是zuul?Zull包含了对请求的路由(用来跳转的)和过滤两个最主要功能:其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验,服务聚合等功能的基础。Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得。注意:Zuul 服务最终还是会注册进 Eureka提供:代理 + 路由 + 过滤 三大功能!原创 2021-11-08 19:52:10 · 140 阅读 · 0 评论 -
Spring Cloud——Hystrix:服务熔断
目录标题Hystrix:服务熔断1. 服务雪崩2. 什么是Hystrix?3. 服务熔断4. 服务降级5. 服务熔断和降级的区别6. Dashboard 流监控参考资料Hystrix:服务熔断分布式系统面临的问题复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免失败!1. 服务雪崩多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其他的微服务,这就是所谓的“扇出”,如果扇出的链路上某个微服务的调用响应时间过长,或者不可用,对微服务A原创 2021-11-08 19:48:02 · 534 阅读 · 0 评论 -
关于java:java.lang.NullPointException空指针异常的一些教训和感想
java.lang.NullPointException其实java是没有真正意义上的空指针的,所以所谓空指针异常指的其实是空引用,常见情况就是对一个为空的变量和对象进行了一些数据上的操作。null是所有引用类型的默认值,如果没有让一个引用指向一个实际存在的对象,它的默认值就是null。null本质上是一个值,这跟int的默认值是0,boolean的默认值是false一样。现在,我们通常都使用像eclipse等的集成开发环境进行开发,一般在定义变量的时候都会进行初始化(这也是写代码的一个良好的习惯),如原创 2021-11-06 18:49:25 · 179 阅读 · 0 评论 -
Spring Cloud——Feign:负载均衡入门
这里写目录标题Feign:负载均衡(基于服务端)Feign简介Feign能干什么Feign demoFeign和Ribbon对比Feign:负载均衡(基于服务端)Feign简介Feign是声明式Web Service客户端,它让微服务之间的调用变得更简单,类似controller调用service。SpringCloud集成了Ribbon和Eureka,可以使用Feigin提供负载均衡的http客户端只需要创建一个接口,然后添加注解即可~Feign,主要是社区版,大家都习惯面向接口编程。这个是很多原创 2021-11-01 11:47:49 · 1117 阅读 · 0 评论 -
SpringCloud——Ribbon:负载均衡入门
目录标题Ribbon:负载均衡(基于客户端)Ribbon是什么?负载均衡 (LoadBalancer)集中式LB进程式 LB集成Ribbon如何切换或者自定义规则呢Ribbon:负载均衡(基于客户端)Ribbon是什么?Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端负载均衡的工具。简单的说,Ribbon 主要功能是提供客户端的软件负载均衡算法,将 Netflix 的中间层服务连接在一起。Ribbon 的客户端组件提供一系列完整的配置项,如:连接超时、重试原创 2021-11-01 11:41:47 · 131 阅读 · 0 评论 -
Eureka和Zookeeper的比较
Eureka和Zookeeper区别CAP原则RDBMS (MySQL\Oracle\sqlServer) ===> ACIDNoSQL (Redis\MongoDB) ===> CAPACID是什么?A (Atomicity) 原子性C (Consistency) 一致性I (Isolation) 隔离性D (Durability) 持久性CAP是什么?C (Consistency) 强一致性A (Availability) 可用性P (Partiti原创 2021-10-29 01:36:50 · 119 阅读 · 0 评论 -
Eureka集群环境配置
Eureka:集群环境配置1.初始化新建springcloud-eureka-7002、springcloud-eureka-7003 模块1.为pom.xml添加依赖 (与springcloud-eureka-7001相同)<!--导包~--><dependencies> <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka原创 2021-10-29 01:30:37 · 1795 阅读 · 2 评论 -
Spring Cloud——Eureka入门
目录标题Eureka服务注册中心Eureka基本的架构demo构建步骤1. eureka-server2. eureka-clientEureka配置:配置服务注册中心地址EureKa自我保护机制配置获取注册服务的信息Eureka服务注册中心Netflix在涉及Eureka时,遵循的就是API原则.Eureka是Netflix的有个子模块,也是核心模块之一。Eureka是基于REST的服务,有了服务注册与发现,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了,功能类似于Dub原创 2021-10-29 01:20:11 · 400 阅读 · 0 评论 -
Spring Cloud Config 分布式配置
Spring Cloud Config 分布式配置本质本质是一个配置和源码分离的分布式配置组件。将原本配置在源码中的配置文件拉取到远端代码仓库,这样一方面服务在不同地方启动可以直解拉取远程配置文件进行配置,同时运营人员也可以很方便地根据部署方需求进行更新设置。也就是配置服务器为各个不同微服务应用的所有环节提供了一个中心化的外部配置spring cloud config 分为服务端和客户端两部分。服务端也称为 分布式配置中心,它是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信原创 2021-10-28 18:45:46 · 145 阅读 · 1 评论 -
SpringCloud入门(服务者消费者模型demo)
新建父工程项目springcloud,切记Packageing是pom模式主要是定义POM文件,将后续各个子模块公用的jar包等统一提取出来,类似一个抽象父类pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"原创 2021-10-28 17:58:57 · 124 阅读 · 0 评论 -
微服务架构及技术体系和SpringCloud入门
这里写目录标题微服务微服务优缺点微服务技术栈SpringCloud和SpringBoot的关系Dubbo 和 SpringCloud技术选型Spring Cloud 五大组件参考资料微服务微服务架构是一种架构模式,或者说是一种架构风格,它体长将单一的应用程序划分成一组小的服务,每个服务运行在其独立的自己的进程内,服务之间互相协调,互相配置,为用户提供最终价值,服务之间采用轻量级的通信机制(HTTP)互相沟通,每个服务都围绕着具体的业务进行构建,并且能狗被独立的部署到生产环境中,另外,应尽量避免统一的,集原创 2021-10-28 17:50:19 · 856 阅读 · 0 评论 -
java.math.BigDecimal的常用方法,舍入,大小比较详解
这里写目录标题java.math.BigDecimal概述BigDecimal常用方法详解BigDecimal舍入方法BigDecimal 平方根BigDecimal 幂次方BigDecimal大小比较参考资料java.math.BigDecimal概述Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理。一般情况下,对于那些不需要准确计转载 2021-10-26 16:09:09 · 1113 阅读 · 0 评论 -
Springboot后台设置允许跨域的方法
1、在启动类中继承WebMvcConfigurerAdapter,重写其中的addCorsMappings方法package com.example.springbootdemo; import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.web.servlet.con原创 2021-10-23 15:18:34 · 181 阅读 · 0 评论 -
SpringBoot打成jar包方式和注意事项
springboot的打包方式有很多种。有打成war的,有打成jar的,也有直接提交到github,通过jekins进行打包部署的。这里主要介绍如何打成jar进行部署。不推荐用war,因为springboot适合前后端分离,打成jar进行部署更合适。首先需要在application.properties当中配置端口server.port=8080# http://localhost:8088/swagger-ui.htmlmarven的配置文件<?xml version="1.0" en原创 2021-10-22 11:26:26 · 1492 阅读 · 0 评论 -
MySQL中datetime类型的字段与JavaBean对应的类型的格式化处理
MySQL数据库中时间格式为datetime类型的字段:加上下面两个注解就可以了@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")JavaBean中对应字段的类型:import com.fasterxml.jackson.annotation.JsonFormat;import org.springframework.forma原创 2021-10-22 10:42:03 · 945 阅读 · 0 评论 -
tomcat点击startup.bat一闪而退的解决方法
目录标题环境路径问题针对win7系统端口占用问题其他原因一、 Neither the JAVA_HOME nor the JRE_HOME environment variable is defined二、Cannot find ““d:\apache-tomcat-6.0.32”\bin\setclasspath.bat”环境路径问题针对win7系统win7系统不仅要配JAVA_HOME还有其他一些环境路径最好也配置一下。JRE_HOME的值也要配一下,路径和jdk在同一级下CATA原创 2021-10-21 12:37:41 · 673 阅读 · 1 评论 -
本机配置多版本JDK环境
目录标题1. 安装多个版本的jdk2. 配置多套环境变量3. 将path变量中的java路径环境变量置顶4. 检查是否更换成功1. 安装多个版本的jdk2. 配置多套环境变量不过切记path中的路径要是由%JAVA_HOME%引用过去的才能保证不出错3. 将path变量中的java路径环境变量置顶如果不置顶,即使修改了环境变量的值,也不能变更执行的jdk,好像是执行的优先顺序问题,置顶后可以解决这个问题4. 检查是否更换成功...原创 2021-10-16 16:58:54 · 353 阅读 · 0 评论 -
关于一个项目三个业务在Windows虚拟机部署的问题总结
目录标题1.(各区域平台)业务部署2. (客服中心)业务部署Vue前端工程部署Springboot后端工程部署3. (整体平台)业务部署4. 配置Windows虚拟机的运行环境4.1 导入指定的vmdk文件4.2 下载JDK1.8并配置环境变量4.3 解决宿主机和虚拟机文件互传问题4.4 安装Tomcat8.5.724.5 安装node4.6 安装MySQL5.7.35三个业务按顺序分别是一个spring框架的前后端不分离业务,一个Vue+springboot前后端分离的业务,一个JSP技术的老业务1原创 2021-10-15 11:33:09 · 166 阅读 · 0 评论 -
Maven生命周期和特点介绍
Maven简介概念定义:Maven 是一个项目管理工具它包含了一个项目对象模型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。功能1.管理jar包不在项目中直接包含jar包,而是使用jar包坐标集中指向jar包仓库2.集成开发流程项目的一键构建,将编原创 2021-01-18 16:53:29 · 144 阅读 · 0 评论 -
Maven 工程运行调试
端口占用处理断点调试原创 2021-01-19 17:18:20 · 146 阅读 · 0 评论 -
Idea 中开发 maven 项目
目录1.Maven的配置1.1打开File->Settings 配置 maven1.2创建一个 Servlet1.3依赖范围1.4项目中添加的坐标1.5设置 jdk 编译版本2.Maven下项目的编写2.1编写 servlet2.2编写 jsp2.3在 web.xml 中配置 servlet 访问路径2.5添加 tomcat7 插件1.Maven的配置1.1打开File->Settings 配置 maven依据图片指示,选择本地 maven 安装目录,指定 maven 安装目录下 conf原创 2021-01-19 17:13:41 · 172 阅读 · 0 评论