Java学习
文章平均质量分 58
。
ZmyCoder
学习笔记
展开
-
@ConditionalOnClass编译问题
@ConditionOnClass的编译问题原创 2022-06-23 15:48:22 · 1020 阅读 · 1 评论 -
activiti5基础和springboot整合
activiti5基础,springboot和activiti5进行整合使用。原创 2022-06-21 15:45:53 · 3273 阅读 · 0 评论 -
Validated校验
JavaWeb项目参数合法性校验目前Web项目校验参数合法性时,经常用到@Validated、@Valid等,下面总结下各种情况下的使用。情景1@Data@AllArgsConstructor@NoArgsConstructorpublic class TableColumnBO { @NotBlank(message = "表名不能为空") private String tableName; @NotBlank(message = "字段名不能为空") pri原创 2021-06-23 11:21:53 · 396 阅读 · 0 评论 -
MYSQL DATE_FORMAT函数
参考Wcschool功能DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。语法DATE_FORMAT(date,format)date 参数是合法的日期。format 规定日期/时间的输出格式。format可选值格式描述%a缩写星期名%b缩写月名%c月,数值%D带有英文前缀的月中的天%d月的天,数值(00-31)%e月的天,数值(0-31)%f微秒%H小时 (00-23)%h.转载 2021-05-28 13:57:55 · 470 阅读 · 0 评论 -
Linux手动安装nginx
本次以安装nginx-1.12.2为例1、安装nginx之前需要安装如下素材:2、安装第一步,安装依赖yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel第二步,下载并安装nginx安装包(nginx官网:http://nginx.org/)# 下载wget http://nginx.org/download/nginx-1.12.2.tar.gz# 解压缩tar -zxvf linux-n.原创 2021-05-25 17:22:39 · 407 阅读 · 1 评论 -
Java日期格式化
日期转为指定格式字符串package org.maoge.common;import java.text.SimpleDateFormat;import java.util.Date;public class SimpleDateFormatDemo { public static void main(String[] args) { //默认输出格式 Date date=new Date(); System.out.println(date);//Fri Oct 27 16:56:3转载 2021-04-02 17:04:48 · 363 阅读 · 0 评论 -
springboot项目使用maven打包,第三方jar问题
springboot项目使用maven package打包为可执行jar后,第三方jar会被打包进去吗?答案是肯定的。做了实验如下:第三方jar的项目结构及jar包结构如下:将上面的jar包安装到本地maven仓库后,在其他的springboot项目中引用该starter,过程如下:该springboot项目使用maven package打包为可执行jar包后,观察jar包结构:在META-INF中有一个MANIFEST.MF文件,描述了boot项目的一些属性。找到指定目录查看:原创 2021-04-01 23:54:52 · 1031 阅读 · 0 评论 -
SpringBoot中的classpath
一句话总结:classpath 等价于 main/java + main/resources + 第三方jar包的根目录。下面详细解释。首先,classpath顾名思义,是编译之后项目的路径,而不是对源程序的路径描述。但是它与源程序的一些路径是相互对应的,存在映射关系。需要介绍一下package打包、build 之间的关系及特点:1、 不管是build还是package,都不会把项目中使用的第三方jar包也一起打进去。build生成了如下的目录:2、由图可以看出,build将项目进行编译,m转载 2021-04-01 22:28:38 · 831 阅读 · 0 评论 -
记一次切面事务问题
场景:在spring aop的一个环绕增强方法中,多次修改数据库。首次尝试:在环绕增强方法上增加了注解@Transactional(rollbackFor = Exception.class)@Aspectpublic class StockManageAspect { @Transactional(rollbackFor = Exception.class) @Around("annotationPointcut()") public Object doAround(Pr原创 2021-04-01 17:55:03 · 483 阅读 · 1 评论 -
maven install时发布源码
在pom文件中添加如下插件 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <executions&原创 2021-04-01 16:15:11 · 613 阅读 · 0 评论 -
SpringBoot中忽略实体类中的某个属性不返回给前端的方法
SpringBoot中忽略实体类中的某个属性不返回给前端的方法:使用Jackson的方式://第一种方式,使用@JsonIgnore注解标注在属性上,忽略指定属性public class PropertyDTO { @JsonProperty("disable") private Integer disable; @JsonProperty("placeholder") private String placeholder; //使用@JsonIgnore注解,忽略原创 2021-03-31 16:56:36 · 16318 阅读 · 1 评论 -
java开发插件
最近想要用java开发一个插件。前提插件使用idea开发,插件项目选择java项目,导出为jar包作为插件使用。使用处采用URLClassLoader加载器加载,反射调用。一个简单的插件调用处@Testpublic void test13() throws Exception { File file = new File("E:\\javaWorkSpace\\simple-plugin\\out\\artifacts\\simple_plugin_jar\\simple-plugin.原创 2021-03-26 18:53:34 · 2107 阅读 · 0 评论 -
记一个springboot多模块包扫描问题
问题描述:springboot建立多个模块,当一个模块需要使用另一个模块的服务时,需要注入另一个模块的组件,如下面图中例子:memberservice模块中的MemberServiceApiImpl类需要注入common模块中的RedisService组件,该怎么注入呢?解决:在memberservice模块的启动类上加上RedisService类所在包的全路径的组件扫描,就像这样:注意启动类上方的注解@ComponentScan(basePackages={“com.whu.commom.转载 2020-12-31 10:58:28 · 1013 阅读 · 2 评论 -
spring boot获取request
1. Controller中1.1 通过静态方法获取HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();但我在使用过程中发现遇到了一个警告Method invocation ‘getRequest’ may produce ‘java.lang.NullPointerException’ less… (Ctrl+F1)I转载 2021-01-05 16:30:07 · 909 阅读 · 0 评论 -
SpringBoot项目中开启MyBatis的SQL日志
转自:https://www.cnblogs.com/kingsonfu/p/9245731.html方式 一:在application.yml(.properties)中增加配置logging: level: com.threefivework.mymall.dao.mapper: DEBUG //包路径为mapper文件包路径方式二:在application.yml(.properties)中增加配置,在控制台打印sql:mybatis configuration:转载 2020-11-25 17:21:11 · 10420 阅读 · 2 评论 -
SpringBoot之Schedule定时任务
定时器比较框架名称Cron表达式固定时间执行固定频率执行任务持久化难易度TimerTask不支持支持支持不支持一般schedule支持支持支持不支持简单Quartz支持支持支持支持难在实际应用中,如果没有分布式场景(quartz 支持分布式, schedule 不支持(需要自己实现,用分布式锁),schedule跟spring结合的更好,还是很适用的。1、添加maven依赖包由于Spring Schedule包含在spring原创 2020-12-24 15:52:13 · 757 阅读 · 1 评论 -
SpringBoot测试类
//不加这两个注解,所有自动注入的对象将会失败(null)@RunWith(SpringRunner.class)@SpringBootTestpublic class SampleTest { @Autowired private UserMapper userMapper; @Test public void testSelect() { System.out.println(("----- selectAll method test -----原创 2020-12-24 15:56:05 · 3088 阅读 · 1 评论 -
SpringBoot
SpringBootSpringBoot自动配置包:spring-boot-autoconfigure1、启动器Springboot将所有的场景,定义为一个个启动器。需要什么功能,就导入什么启动器NameDescriptionspring-boot-starterCore starter, including auto-configuration support, logging and YAMLspring-boot-starter-activemqStarter原创 2021-03-24 11:27:26 · 220 阅读 · 0 评论 -
@Import注解
1、@Import注解须知@Import只能用在类上 ,@Import通过快速导入的方式实现把实例加入spring的IOC容器中加入IOC容器的方式有很多种,@Import注解就相对很牛皮了,@Import注解可以用于导入第三方包 ,当然@Bean注解也可以,但是@Import注解快速导入的方式更加便捷@Import注解有三种用法2、@Import的三种用法@Import的三种用法主要包括:1、直接填class数组方式2、ImportSelector方式【重点】3、Impo转载 2021-03-05 15:40:05 · 12538 阅读 · 3 评论 -
关于@EnableConfigurationProperties 注解
先说作用:@EnableConfigurationProperties注解的作用是:使使用 @ConfigurationProperties 注解的类生效。说明:如果一个配置类只配置@ConfigurationProperties注解,而没有使用@Component,那么在IOC容器中是获取不到properties 配置文件转化的bean。说白了 @EnableConfigurationProperties 相当于把使用 @ConfigurationProperties 的类进行了一次注入。测试转载 2021-03-03 19:01:09 · 284 阅读 · 1 评论 -
Java设计模式(五)----JDK动态代理
学习动态代理之前,先了解两个java.lang.reflect包下的类Proxy 类//该方法返回一个interfaces接口的代理类对象public static Object newProxyInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler h) throws IllegalArgumentException InvocationHandler 接口//实现了该接口的类的对象,作为参数传原创 2021-02-25 18:43:13 · 95 阅读 · 0 评论 -
Java设计模式(四)----工厂模式
工厂模式简单工厂模式工厂方法模式抽象工厂模式抽象工厂模式是所有形态的工厂模式中最为抽象和最具有一般性的一种形态。抽象工厂模式与工厂方法模式的最大区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则需要面对多个产品等级结构。一、简单工厂模式简单工厂模式中,一个工厂类处于对产品类实例化的中心位置上,它知道每一个产品,它决定哪一个产品类应当被实例化。这个模式的优点是允许客户端相对独立于产品创建的过程,并且在系统引入新产品的时候无须修改客户端,即在某种程度上支持“开-原创 2021-02-23 16:46:40 · 103 阅读 · 0 评论 -
Java设计模式(三)----单例模式
单例模式单例模式的主要作用是确保一个类只有一个实例存在。单例模式可以用在建立目录、数据库连接等需要单线程操作的场合,用于实现对系统资源的控制。由于Java语言的特点,使得在Java中实现单例模式通常有两种表现形式。饿汉式单例类:类加载时,就进行对象实例化;懒汉式单例类:第一次引用类时,才进行对象实例化。饿汉模式在类被加载时,静态变量m_instance会被初始化,此时类的私有构造函数会被调用,单例类的唯一实例就被创建出来了。单例类中一个最重要的特点是类的构造函数是私有的,从而避免外界利原创 2021-02-23 15:35:19 · 99 阅读 · 1 评论 -
Java设计模式(二)----设计原则
单一职责原则Single Responsibility Principle,简称SRP定义一个类,应当只有一个引起它变化的原因;即一个类应该只有一个职责。单一职责原则的优点有以下几个方面:1、降低类的复杂性;2、提高类的可读性;3、提高代码的可维护性和复用性;4、降低因变更引起的风险。里氏替换原则Liskov Substitution Principle,简称LSP定义所有引用基类的地方必须能透明地使用其子类对象。清晰明确地说明只要父类能出现的地方子类就..原创 2021-02-23 11:12:03 · 305 阅读 · 0 评论 -
Java----值类型和引用类型
一、值类型与引用类型int num=10;String str="hello"num是int基本类型变量,值就直接保存在变量中。str是String引用类型变量,变量中保存的只是实际对象对应的地址信息,而不是实际对象数据。对于基本类型变量num,赋值运算符将会直接修改变量的值,原来的数据将被覆盖掉,被替换为新的值。对于引用类型变量str,赋值运算符只会改变变量中所保存的对象的地址信息,原来对象的地址被覆盖掉,重新写入新对象的地址数据。但原来的对象本身并不会被改变,只是不再被任何引用所指向的原创 2021-02-23 10:04:20 · 388 阅读 · 0 评论 -
Java设计模式(一)----设计模式的分类
设计模式分类创建型单例模式(Singleton Pattern):一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。工厂方法模式(Factory Pattern):在工厂方法模式中,工厂类成为了抽象类,实际的创建工作将由其具体子类来完成。工厂方法的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中去,强调的是“单个对象”的变化。抽象工厂模式(Abstract Factory):抽象工厂是所有工厂模式中最为抽象和最具有一般性的一种形态。抽象工厂可以向客户提供一个接口,使得客户原创 2021-02-01 19:28:47 · 124 阅读 · 0 评论 -
方法的重写(覆盖),访问权限修饰符,super
方法的重写(覆盖)在父子类中出现了方法签名一致的方法,遵守重写原则(两等两小一大)两等:一等:方法签名一致二等:如果父类的方法的返回值是void/基本数据类型`,子类方法的返回值类型要和父类一致两小一小:如果父类的方法返回值类型是引用数据类型,那么子类的返回值类型要么与父类返回值类型一致,要么是其子类(返回值类型可以是父类,也可以是其子类)二小:子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等一大:子类方法的访问权限应比父类方法的访问权限更大或相等转载 2021-01-28 17:36:03 · 318 阅读 · 0 评论 -
BIO,NIO,AIO整理(全称,介绍,区别)
先来个例子理解一下概念,以银行取款为例:同步 : 自己亲自出马持银行卡到银行取钱(使用同步IO时,Java自己处理IO读写)。异步 : 委托一小弟拿银行卡到银行取钱,然后给你(使用异步IO时,Java将IO读写委托给OS处理,需要将数据缓冲区地址和大小传给OS(银行卡和密码),OS需要支持异步IO操作API)。阻塞 : ATM排队取款,你只能等待(使用阻塞IO时,Java调用会一直阻塞到读写完成才返回)。非阻塞 : 柜台取款,取个号,然后坐在椅子上做其它事,等号广播会通知你办理,.转载 2021-01-05 10:10:11 · 107 阅读 · 0 评论 -
Java--原生BIO使用方式
使用java.io.*和java.net.*,实现的Bio(同步并阻塞式)webSocket服务器服务端package bio;import java.io.IOException;import java.io.InputStream;import java.net.ServerSocket;import java.net.Socket;import java.util.concurrent.ExecutorService;import java.util.concurrent.Execu原创 2021-01-05 10:07:00 · 106 阅读 · 1 评论 -
MongoDB
1、mongoDB简介1.1、基本概念1.2、安装启动2、mongoDB的基本操作(菜鸟教程)2.1、创建数据库use DATABASE_NAME如果数据库不存在,则创建数据库。否则切换到指定数据库实例以下实例我们创建了数据库 runoob:> use runoob# 打印结果如下switched to db runoob > 如果你想查看所有数据库,可以使用 show dbs 命令:> show dbs # 打印结果如下local 0.078GB原创 2021-01-04 15:52:44 · 181 阅读 · 0 评论 -
Java泛型
飞机票转载 2020-12-30 18:41:00 · 61 阅读 · 0 评论 -
tk_Mapper
tk_Mapper大体上,通用Mapper是一个MyBatis的插件,能够自动生成生成单表操作的方法,方便开发。gitee文档:https://gitee.com/free/Mapper/wikis/Home?sort_id=14104bilibili学习视频:https://www.bilibili.com/video/BV18f4y197Pr?p=11、一个简单的SpringBoot集成tk_Mapper的示例1、导入依赖<dependency> <groupId&原创 2020-12-25 15:52:46 · 715 阅读 · 0 评论 -
curl 的用法指南
转自:阮一峰的网络日志简介curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。它的功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman 这一类的图形界面工具。本文介绍它的主要命令行参数,作为日常的参考,方便查阅。内容主要翻译自《curl cookbook》。为了节约篇幅,下面的例子不包括运行时的输出,初学者可以先看我以前写的《curl 初学者教程》。不带有任何参数时,curl 就是发出 GET 请求。$转载 2020-12-17 09:43:57 · 226 阅读 · 0 评论 -
java8新特性-Stream流
转自菜鸟教程什么是StreamStream(流)是一个来自数据源的元素队列并支持聚合操作元素是特定类型的对象,形成一个队列。 Java中的Stream并不会存储元素,而是按需计算。数据源 流的来源。 可以是集合,数组,I/O channel, 产生器generator 等。聚合操作 类似SQL语句一样的操作, 比如filter, map, reduce, find, match, sorted等。和以前的Collection操作不同, Stream操作还有两个基础的特征:Pipelini转载 2020-12-14 16:27:54 · 107 阅读 · 0 评论 -
继承的思考
当程序创建一个子类对象时,系统不仅会为该类中定义的实例变量分配内存,也会为它从父类继承得到的所有实例变量分配内存,即使子类定义了与父类中同名的实例变量。也就是说,当系统创建一个Java对象时,如果该Java类有两个父类(一个直接父类A,一个间接父类B),假设A类中定义了2个实例变量,B类中定义了3个实例变量,当前类中定义了2个实例变量,那么这个Java对象将会保存2+3+2个实例变量。...原创 2021-01-28 22:16:28 · 167 阅读 · 3 评论 -
hashCode
Object类中的原始hashCode方法如下:public native int hashCode();该方法返回的是对象的内存地址经过处理后的结构。能够做到不同对象的hash值尽量不同,但是有相同的几率。所以在HashSet去重的时候必须重写hashCode方法,否则调用的就是Object类的默认hashCode方法。会导致内容相同的对象,得到的hashCode不同,进而直接存放进Set中,出现重复的情况。...原创 2020-12-03 18:22:30 · 77 阅读 · 0 评论 -
hashSet与treeSet的去重原理
1、TreeSet去重原理 :compareTo可以实现排序及去重:如果compareTo返回0,说明是重复的,返回的是自己的某个属性和另一个对象的某个属性的差值,如果是负数,则往前面排,如果是正数,往后面排;应用:类实现compareable接口,覆写其compareto方法,根据自己的需要改变其排序及去重规则,比如职员类,根据其工资水平进行去重和排序 。2、hashSet去重原理:1,hashCode 2,equals是否相同我们使用Set集合都是需要去掉重复元素的, 如果在存储的时候逐个原创 2020-12-03 18:12:17 · 1706 阅读 · 0 评论 -
SpringCloud
1、建立父工程父工程pom配置文件<?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" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd原创 2020-11-03 16:23:13 · 234 阅读 · 0 评论 -
Spring5
Spring51.Spring1.1、Spring简介Srping是一个轻量级的**控制反转(IoC)和面向切面(AOP)**的容器框架2004年3月24日,Spring框架以interface21框架为基础,经过重新设计,发布了1.0正式版本<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --><dependency> <groupId>o原创 2020-09-14 16:10:13 · 246 阅读 · 0 评论 -
MyBatis
MyBatis环境:JDK1.8Mysql5.7maven3.6.1IDEAMybatis官方文档1.什么是MybatisMyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录原创 2020-09-09 01:49:22 · 180 阅读 · 0 评论