自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 资源 (3)
  • 收藏
  • 关注

原创 Servlet之过滤器

Servlet之过滤器过滤器Filter基本使用注解方式:创建一个Filter类实现Servlet的Filter接口,重写他的init()方法,doFilter()方法以及destroy()方法。init() : 当Servlet容器启动时,初始化创建Filter,就会执行该方法,该方法只会执行一次。doFilter(): 因为我配置的是/* 拦截,则每次Http请求都会执行一次doFilter方法。destroy(): 当Servlet容器被销毁时,该过滤器也就被回收了,此时会调用

2022-05-08 19:37:31 1055

原创 Java之SPI机制

Java之SPI机制JavaSPI机制基本使用创建一个接口public interface DemoService { void print();}创建一个实现类public class DemoServiceImpl implements DemoService { @Override public void print() { System.out.println("print......"); }}在resources下创建M

2022-04-05 16:48:03 758

原创 SpringBoot自定义多数据源starter组件

SpringBoot自定义多数据源starter组件本案例我们使用多数据源封装成一个starter组件,以方便使用多数据源访问数据库的操作创建一个普通Java项目,引入SpringBoot相关的依赖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-ins

2022-04-01 10:50:19 1446 1

原创 Spring之工具类

Spring之工具类日常学习开发中,项目中经常需要用到各种工具类,而Spring框架中为我们提供了一些列工具,我们可以在不引用其他包的情况下,使用这些工具也能满足常规需求。断言工具Assertpublic static void testAssert() { // false将会抛出IllegalStateException异常 Assert.state(false, "状态异常"); // 自定义消息时,传递一个Supplier函数式接口 Assert.state(f

2022-03-19 14:15:58 6982

原创 Spring之Resource

Spring之Resource本文讲解如何使用Spring中的Resource接口处理资源Resource接口的几个主要实现类如下:UrlResourceClassPathResourceFileSystemResourcePathResourceServletContextResourceInputStreamResourceByteArrayResourceUrlResource访问本地资源public static void main(Strin

2022-03-10 15:02:24 750

原创 Spring之方法参数名称获取

Spring之方法参数名称方式一通过Spring中类 LocalVariableTableParameterNameDiscoverer 获取方法参数名称案例如下:public class TestReflect { public static void main(String[] args) { // 反射获取类的所有方法 Method[] declaredMethods = TestReflect.class.getDeclaredMethods(); Local

2022-03-02 11:23:09 1801

原创 Spring之参数解析器

Spring中的参数解析,可以让我们自定义的对处理器的一些参数请求做处理,自定义参数解析主要是通过实现 HandlerMethodArgumentResolver 接口,重写supportsParameter()方法和resolveArgument()方法,并注册解析器,即可启用。一、自定义参数解析器重写 HandlerMethodArgumentResolver 接口方法public class DemoArgResolver implements HandlerMethodArgumentReso

2022-02-21 10:09:32 1484

原创 Spring之拦截器

一、Spring拦截器简介Spring拦截器是一种基于AOP的技术,本质也是使用一种代理技术,它主要作用于接口请求中的控制器,也就是Controller。因此它可以用于对接口进行权限验证控制。下面我们看一个简单的拦截器例子创建一个DemoInterceptor类实现HandlerInterceptor接口,重写preHandle(),postHandle(),afterCompletion() 三个方法,如下代码,我们就创建了一个Spring的拦截器。public class DemoInterce

2022-02-14 17:15:08 12928 2

原创 SpringSecurity系列之授权与注解

SpringSecurity用户授权与权限注解的使用

2022-01-29 15:07:49 3786 1

原创 Java8之组合式异步编程

组合式异步编程:CompletableFuture一、Future接口Future的使用,如下代码中的例子,提交一个执行需要耗时5000ms的代码给线程池,而后会立即执行打印 other code ...不会收到阻塞,当执行到future的get()方法时,会阻塞代码,等待任务执行完并返回结果。在这个例子中,我们使用异步任务执行耗时操作。通过future获取执行结果/** * @author kenewstar * @date 2022/01/25 */public class TestAsy

2022-01-25 09:00:00 899

原创 Java8之Optional与日期API

Java8之Optional与日期API一、Optional在开发过程中我们经常会遇到NPE,也就是空指针异常,而Optional正是一种解决NPE的很好方式。Null所带来的问题:① Null对象是NPE异常的源头② 因为检查Null,会带来大量的代码检查③ Null值没有任何意义④ 当将Null值传递给变量时,无法通过该变量获取其类型1.Optional的创建声明一个空的Optional对象Optional<Integer> empty = Optional.empty(

2022-01-24 09:00:00 805

原创 Java8之函数式编程

Java8之函数式编程Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用 Lambda 表达式可以使代码变的更加简洁紧凑。1.Lambda表达式如下案例所示,分别创建三个接口,每个接口中只有一个方法,通过lambda表达式重写接口中的方法,可极大的简化代码。当只有一个入参时,则无需写 () 当表达式只有一行时则无需写 {} 与 return/** * @author kenewstar

2022-01-23 20:21:38 3955

原创 Java8之Stream流操作

讲解Java8中的Stream流的使用

2022-01-22 14:14:33 1903

原创 SpringSecurity系列之基于数据库认证

SpringSecurity系列之基于数据库认证本文中所使用的技术栈如下:SpringBoot 2.6.2MyBatis Plus 3.5.0SpringSecurity 5.6.1一、创建数据库表如下图所示,创建一个简单的用户数据表,实际开发中应当使用密文存储密码,而不是如下当中的明文存储。二、创建SpringBoot应用1.配置application.properties文件主要是配置数据库连接信息# 指定端口号server: port: 8888# 配置数据库连接信息

2022-01-21 20:32:57 2304

原创 并单规则(数据分组)

在许多业务场景中经常遇到并单规则,即根据并单规则中的指定的并单字段对数据进行合并生成,例如其中有5条行数据,并单后可能生成1条单据或者多条单据。具体实现案例代码如下:@Data@NoArgsConstructor@AllArgsConstructorpublic class Invoice { private Integer id; private String name; private Integer days; private Long supplierId; p

2021-09-06 20:49:15 908

原创 锁(Locks)

锁(Locks)1 ReentrantLock应用demo可重入锁,是一种使用递归无堵塞的同步机制比 synchronized 更强大、更灵活的锁机制,可以减少死锁发生的概率默认为非公平锁,可以自定义为公平锁底层采用 AQS 实现,通过内部 Sync 集成 AQS简单应用:/** * @author kenewstar * @version 1.0 * @date 2021/5/14 */public class Concurrent07 { private int cou

2021-05-16 14:56:18 1122

原创 ThreadLocal使用与分析

ThreadLocal使用与分析ThreadLocal一种解决多线程环境下成员变量的问题的方案,但是与线程同步无关,其思路就是为每个线程创建一个单独的变量副本。 从而每个线程都可以独立的改变自己所拥有的变量副本,而不会影响其他线程对应的变量副本。ThreadLocal不是用于解决共享变量的问题,也不是为了协调线程同步而存在,而是为了方便每个线程处理自己的状态而引入的一个机制四个方法:get() 方法:返回当前线程局部变量的副本中的值initalValue() 方法:返回当前线程局部变量的值re

2021-05-15 11:27:49 642 3

原创 并发工具类

并发工具类1 CountDownLatch​ 该工具是用来同步一个或多个任务,强制他们等待由其他任务执行的一组操作。功能可以类比Thread类的join方法。给该对象设置一个计数值,当一个任务完成时,调用countDown()方法对计数值减一,当计数值为0时,所有任务都完成了。CountDownLatch只触发一次,计数值不能重置。public static void countDownLatch() throws InterruptedException { long start = In

2021-05-14 14:47:49 642 1

原创 生产者与消费者模型

生产者与消费者模型一个计数器count 生产者每次count++ 当count为20时,生产者等待消费者进行消费,消费者每次count - -,当count为0时,消费者等待生产者生产。当count++时需要对等待的消费者进行唤醒操作,此时count > 0 消费者可以消费,当count - - 时需要唤醒生产者进行生产,此时count < 20 。生产者可以进行生产。设定只生产100个产品,当生产者生产完100个产品后,退出生产,消费者消费完所有产品后也退出消费。Java代码实现如下(

2021-05-13 20:56:51 626

原创 MySQL命令学习5

MYSQL学习51 .使用存储过程存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合。可将其视为批文件,虽然它们的作用不仅限于批处理。为什么要使用存储过程?通过把处理封装在容易使用的单元中,简化复杂的操作由于不要求反复建立一系列处理步骤,这保证了数据的完整性。如果所有开发人员和应用程序都使用同一(试验和测试)存储过程,则所使用的代码都是相同的。这一点的延伸就是防止错误。需要执行的步骤越多,出错的可能性就越大。防止错误保证了数据的一致性。简化对变动的管理。如果表名,列名或业

2020-07-08 21:12:10 846

原创 MySQL命令学习4

MYSQL学习41 .插入数据① 使用 insert使用insert向数据表中添加数据 insert into users(username,password,userage) values('ddddd','123456',27);如上插入数据成功,由于id为主键,自增,因此不需要给其添加值,添加成功后下面显示一行受影响;②插入多行数据可以使用多条insert语句,但是会比较繁琐 insert into users(username,password,userage) values

2020-07-05 18:06:24 749

原创 MySQL命令学习3

MYSQL学习3SQL最强大的功能之一就是能在数据检索查询的执行中联结(join)表。联结是利用SQL的select能执行的最重要的操作,很好地理解联结及其语法是学习SQL的一个极为重要的组成部分。1 .联结表① 两表关联查询如下有两张表,用户表与角色表,用户表的外键为角色表的主键在前面的学习中我们使用了嵌套查询,但是我们不建议使用嵌套查询,因为它效率低,推荐多表关联查询例如,我们要查询角色为管理员的用户,并且按照user表的id排序select user.id as user_id,use

2020-07-04 17:21:10 1566 3

原创 MySQL命令学习2

MYSQL学习21 .创建计算字段创建一个水果表,表中有字段id,fruit_name,fruit_price① 计算每种水果的总价格,生成新的列名select fruit_name,fruit_price,count,fruit_price*count as total_pricefrom fruits;②测试计算2 .使用数据处理函数函数的可移植性不强① 文本处理函数使用upper()将水果名大写select upper(fruit_name) from fruits;

2020-07-02 17:01:46 1884 2

原创 MySQL命令学习1

MYSQL学习1MySql环境:MySql8.0.191 .使用命令行客户端操作数据库的相关命令①显示所有数据库show databases;② 使用某个数据库use test;③显示数据库中的所有表show tables;④ 显示某表的所有字段信息show columns from users;2 .检索数据①查询某表的所有数据查询users表的全部数据select * from users;② 查询某表中的特定字段的数据查询users表中usernam

2020-07-02 12:05:46 1062

原创 Java集合的深入学习

一、Java集合List:有序可重复集合;Set:无序不重复集合;Map:键值对存储,key必须唯一,只有一个key可以为null,value可以有多个null,使用key来搜索value;测试Map中key为null,而value不为null@Testpublic void test1() { Map<String, String> map = new HashMap<>(); map.put(null, "kenewstar"); System.out.prin

2020-06-29 22:49:14 1105

原创 SpringSecurity系列之入门案例

一、创建一个普通Java项目1. 修改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" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0

2020-06-28 20:00:10 1403 1

原创 SpringBoot学习之整合SpringDataRedis

项目环境:Jdk11.0.2、Redis3.0.0、Centos7一、安装Redis3.0.0在Linux下解压redis安装包进入解压后的目录进行编译编译完成将redis安装到指定目录启动redis默认端口Port:6379属于前置启动,会占用整个终端,按Ctrl+C停止后置启动,将redis.conf复制到redis/bin目录下修改复制后的配置文件,将no该为yesCentos7开放端口启动redis 查看redis是否启动成功IDEA客户端工具连接re

2020-06-28 11:13:17 1670

原创 SpringBoot 学习之整合 SpringDataJPA

项目环境:Jdk11.0.2、MySql8.0.19一、创建普通Java项目二、修改 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" xsi:schemaLocation="http://m

2020-06-27 18:55:29 800

原创 SpringBoot+vue.js

一 、创建一个普通Java项目二、修改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

2020-05-29 20:26:31 1956 1

原创 SpringBoot学习6之整合MyBatis做CRUD(SpringBoot+MyBatis+SpringMVC+Thymeleaf)

SpringBoot整合MyBatis

2020-04-24 20:23:34 948

原创 SpringBoot学习5之整合thymeleaf

SpringBoot整合视图层技术(2)SpringBoot官方推荐使用Thymeleaf模板引擎做视图层开发;

2020-04-23 14:36:57 938

原创 SpringBoot学习4之整合jsp与freemarker

SpringBoot整合视图层技术(1)1 SpringBoot整合jsp使用jsp作为视图层,虽然SpringBoot官方并不推荐,但是我们我们也学习一下,不做深入即可;

2020-04-22 15:36:01 1117

原创 SpringBoot学习3之文件上传

使用SpringBoot做文件上传。。。。。。

2020-04-21 14:44:10 1186

原创 SpringBoot学习2之整合Web技术

(一)SpringBoot整合Servlet技术很多刚接触JavaEE的初学者都会学习Web技术中的Jsp/Servlet,同样的SpringBoot中也提供了整合Servlet技术的;创建一个Java项目(IDEA+Maven)项目创建完毕;SpringBoot整合Servlet有两种方式:1 通过注解方式完成Servlet组件的注册① 创建一个FirstServlet类继承Ht...

2020-04-20 18:08:37 1427 2

原创 SpringBoot学习1之入门

(一)使用Maven工具创建一个java项目target目录是项目编译后生成的目录在pom.xml文件中添加配置:添加springboot父项目依赖,并且添加springboot启动器,如下:<parent> <groupId>org.springframework.boot</groupId> <artifactId>sp...

2020-04-19 13:55:49 1016 2

原创 使用IDEA中的Maven创建一个Web项目

(一)创建web项目File -> New -> Project出现如下图所示:出现上图所示,项目就创建完毕了。(二)项目配置项目目录结构如下所示:上图中我们可以看到它没有源码目录,和资源文件目录,我们需要自行创建,如下所示:创建两个目录:我们可以看到这两个目录是灰色,我们需要指定它为我们的源码根路径和资源根路径,如下所示:最后结果如下图所示:到此项目...

2020-04-18 11:07:12 1223

原创 MyBatis的兄弟MyBatis-Plus

(一)MyBatis-Plus简介MyBatis-Plus (简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。特性1)无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑2)损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作3)强大的 CRUD 操作:内置通用 Mapper、通用 ...

2020-04-17 22:16:26 949

原创 Mybatis学习4之动态SQL

(一)简介Mybatis提供了SQL语句动态的组装能力,它所包含的几个元素也非常简单,SQL语句的组装可以在XML映射文件中配置,也可以使用注解,但是使用注解配置功能会受到限制。Mybatis的动态SQL包括如下的元素:if:判断语句,单条件分支判断;choose(when,otherwise):相当于Java中的case,when语句,多条件分支判断;trim(where,set):辅...

2020-04-07 23:29:44 933

原创 Mybatis学习3之配置

MyBatis的配置文件属性Mybatis配置文件的文件结构如下代码所示:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config....

2020-04-07 17:01:00 946

原创 Mybatis学习2之XML映射器

1 字符串替换Mybatis框架非常灵活,假设数据库中有三个字段(id,username,password):(一)通过id查询用户信息;(二)通过username查询用户信息;(三)通过password查询用户信息;按正常情况下,我们需要创建三个方法:(一)findUserById(int id);(二)findUserByUsername(String username);(三...

2020-04-03 18:16:23 935

spring-5.2.3.rar

该压缩包包含官方JavaDoc,所有spring jar包,中文文档地址,spring-xsd文件,另外还包含所有的spring源码包。

2020-04-01

mybatis-3.5.4.rar

该压缩包下包含两个压缩包,分别为mybatis-3.5.4的源码包,以及开发的jar包,另外还包含mybatis使用文档。

2020-04-01

struts-2.5.22.rar

包中包含strut2示例,struts2所需jar包,以及配置文件,struts2包中还包含了开发文档

2020-03-22

空空如也

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

TA关注的人

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