Java
文章平均质量分 70
Java从入门到放弃
Q-T
条路自己拣,扑街唔好喊。
展开
-
如何解决Maven依赖冲突
一、Java常见包冲突异常:AbstractMethodErrorNoClassDefFoundErrorClassNotFoundExceptionLinkageError二、冲突分析像上图,就发生了包引用冲突,如果C包v0.1版本在前,JVM加载过v0.1版本里的同名类后就不会加载v0.2里的同名类,这很可能造成丢失了v0.2里同类里新增的方法属性等等。接下来我们看看Maven对这种情况是如何进行管理的。Maven 对 pom 文件的传递性依赖自动进行管理, 其中有一个原则 绝对不允许最原创 2022-03-01 16:13:54 · 7265 阅读 · 2 评论 -
SpringBoot官方支持的任务调度框架Quartz入门与实战
一、简介Quartz是一款功能强大的开源任务调度框架,几乎可以集成到任何Java应用程序中(小到单机应用,大到分布式应用)。Quartz可用于创建简单或复杂的任务调度,用以执行数以万计的任务,并且支持任务持久化。任务被定义为标准化的Java组件,Java编写的任务都可以被执行。二、核心概念Scheduler(调度器):Quartz中的任务调度器,通过Trigger和JobDetail可以用来调度、暂停和删除任务。Trigger(触发器):Quartz中的触发器,可以通过CRON表达式来指定任务执行原创 2022-02-16 16:01:30 · 1141 阅读 · 2 评论 -
Spring-AOP面向切面编程详解
一、AOP 定义AOP:Aspect Oriented Programming面向切面编程,核心原理是使用动态代理模式在方法执行前后或出现异常时加入相关逻辑。利用AOP可以对业务逻辑 的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高 了开发的效率。用一句话概括:在不影响原来业务类的前提下实现动态增强。1 AOP 是基于动态代理模式。2 AOP 是方法级别的。3 AOP 可以分离业务代码和关注点代码(重复代码),在执行业务代码时,动态的注入关注点代码。切面就是原创 2022-01-04 15:39:41 · 262 阅读 · 1 评论 -
Java多线程入门看这篇就够了
一、线程与进程1 理解线程与进程区别:进程:电脑中时会有很多单独运行的程序,每个程序有一个独立的进程,而进程之间是相互独立存在的。比如同时打开微信、网易云音乐、电脑管家等等。线程:进程想要执行任务就需要依赖线程。换句话说,就是进程中的最小执行单位就是线程,并且一个进程中至少有一个线程。2 多线程与单线程区别:单线程是串行执行任务的。我们就拿下载文件来举个例子:当我们下载多个文件时,在串行中它是按照一定的顺序去进行下载的,也就是说,必须等下载完A之后才能开始下载B,它们在时间上是不可能发生重叠的。原创 2021-12-31 11:25:09 · 228 阅读 · 1 评论 -
用JAVA GUI做一个CSV文件校验小工具
最近在项目上用到JAVA GUI,虽然说这个东西有点旧,但是相信做JAVA的小伙伴初学的时候都接触过它,用来做一些小工具还是可以的,下面将对GUI图形化界面做一个总结。1. GUI的介绍1.1 GUI概述早期,电脑向用户提供的是单调、枯燥、纯字符状态的“命令行界面(CLI)”。就是到现在,我们还可以依稀看到它们的身影:在Windows中开个DOS窗口,就可看到历史的足迹。后来,Apple公司率先在电脑的操作系统中实现了图形化的用户界面(Graphical User Interface,简称GUI),但原创 2021-12-15 00:03:56 · 771 阅读 · 0 评论 -
Spring Cloud之Error creating bean with name ‘configurationPropertiesBeans‘
前言最近在搞Spring Cloud开发,中途调整了下Spring Cloud版本,调整之后发现启动的时候报错Error creating bean with name ‘configurationPropertiesBeans’,初步判断是Spring Cloud的版本问题。检查发现是因为Spring Boot版本高于Spring Cloud的依赖版本导致的。原因分析参考:https://spring.io/projects/spring-cloud#learn说明:Each Spring pro原创 2021-09-07 08:53:41 · 736 阅读 · 2 评论 -
java: 警告: 源发行版 11 需要目标发行版 11
java启动警告java: 警告: 源发行版 11 需要目标发行版 11原因分析1、检查xxx.iml2、检查Project Setting:发现项目结构中语言级别和jdk版本不一致解决方案1、临时解决方案:直接修改Modules, reimporting会被重新刷新回11,不建议这么操作。2、在pom.xml文件中指定java版本<java.version>1.8</java.version>Reload maven project之后发现项目结构中语原创 2021-09-04 12:00:30 · 670 阅读 · 2 评论 -
记一次坑爹的HTTP 400 Bad Request报错
前言某天,正当某无名程序员小哥在UAT发布新版本兴致勃勃地准备线上测试的时候,发现程序居然出错了,小哥马上通过线上检查log发现当call某个第三方系统API的时候抛出404 Bad Request错误。此时第一反应是会不会是我的配置或者请求拼错了?于是小哥一顿操作各种检查,检查配置,网络,加了一些log打印相关信息,并且跟SIT环境做了比对(SIT环境是正常的),最后发现都没问题。此时小哥断定,问题应该是出在第三方API了,于是小哥马上去找了第三方系统的开发负责人,很不幸的是人家请假了,而且人家只有一个原创 2021-07-30 17:17:44 · 937 阅读 · 7 评论 -
使用dynamic datasource实现读写分离
引言看这篇文章之前,建议可以先看看我写的上一篇《MySQL主从复制从原理到实践》上一篇我们搭建好了数据库主从复制环境,那么接下来该如何实现读写分离呢?顾名思义,读写分离就是把读操作和写操作分开,主库进行写操作,并通过中继日志Relay Log自动同步数据到从库,而从库则进行读操作即可。本篇文章将通过介绍使用baomidou的dynamic datasource多数据源配置从代码层面实现读写分离操作。简介dynamic-datasource-spring-boot-starter 是一个基于spr原创 2021-07-11 18:09:21 · 1782 阅读 · 4 评论 -
MySQL主从复制从原理到实践
引言在实际项目开发中,经常会遇到大数据量高并发的场景,为了减轻数据库的负担,我们在使用MySQL时经常会采用主从复制、读写分离的架构。以前我们的数据库可能只部署在一台机器上,遇到大数据量高并发的场景对机器的要求非常高。通过主从复制,我们可以采用一主多从的架构,在不同的机器上部署多个数据库,从而减轻服务器的负担。举个简单的例子,以前一项工作只交给一个人做,现在可以交给多个人去做,这样大大减轻了大家的负担。但是多个人做就有了一定的要求,正所谓无规矩不成方圆,一个人做只要完成了任务想怎么搞就怎么搞,几个人合作原创 2021-07-10 18:17:45 · 247 阅读 · 4 评论 -
RestTemplate调用远程Http服务开发
一、引言:我们在开发中经常会遇到与第三方服务交互的需求,Spring RestTemplate 是 Spring 提供的用于访问 Rest 服务的客户端,RestTemplate 提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率,所以很多客户端都使用RestTemplate请求restful接口服务。本文将结合具体代码详细介绍Spring RestTemplate开发。二、设置:2.1 setBufferRequestBody 是否是否缓冲流来存储请求体,默认true2.2 s原创 2021-06-22 23:22:43 · 723 阅读 · 2 评论 -
java获取系统当前时间
方法1:使用CalendarCalendar calendar= Calendar.getInstance();SimpleDateFormat dateFormat1= new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”);String creation_date1 = dateFormat1.format(calendar.getTime());System.out.println("creation_date1: "+creation_date1);方法2:原创 2021-06-14 17:04:23 · 174 阅读 · 0 评论 -
Mybatis常用配置介绍
1、mybatis.type-aliases-packagemapper.xml中的resultType中经常会用到一些自定义POJO,你可以用完全限定名来指定这些POJO的引用,例如:<select id="getUsers" resultType="com.api.pojo.User">又或者你可以通过在application.yml文件中指定POJO扫描包来让mybatis自动扫描到自定义POJO,如下:mybatis: type-aliases-package: com.a原创 2021-06-12 18:22:07 · 240 阅读 · 2 评论 -
Java中比较两个字符串是否相等
equals与==的区别:1、==指引用是否相同,是判断两个变量或实例是不是指向同一个内存空间,是对内存地址进行比较 。 equals()指的是值是否相同,是判断两个变量或实例所指向的内存空间的值是不是相同,是对字符串的内容进行比较。2、==是操作符,equals()是超类Object中的方法。3、运行速度比equals()快,因为只是比较引用。//==比较引用String a = "hello";String b = "hello";System.out.println("使用==比较引用原创 2021-06-05 18:09:18 · 809 阅读 · 3 评论 -
StringUtils类中isEmpty与isBlank的区别
StringUtils.isEmpty(str) 判断字符串内容是否为空,为空标准是str==null || str.length()==0,包括null、""System.out.println(StringUtils.isEmpty(null)); //结果trueSystem.out.println(StringUtils.isEmpty("")); //结果trueSystem.out.println(StringUtils.isEmpty(" ")); //结果false原创 2021-06-05 17:04:03 · 154 阅读 · 3 评论