自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Mr青青子衿

青青子衿,悠悠我心~

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

原创 Gitlab远程版本库私服搭建

Gitlab远程版本库私服搭建

2021-01-16 18:26:10 159

原创 IO模型原理

io模型

2022-11-02 10:56:05 222 1

原创 Mysql基础

mysql基础

2022-11-01 09:58:13 235

原创 list深度拷贝转为JSON字符串,放到Redis

Alibaba.fastjsonJSON.toJSON(list).toString();

2022-09-01 15:01:40 456

原创 J2ee编码心得

1.后台和前端的接口尽量一对一,理由是idea搜索哪些后台接口被前端的所使用太费劲。2.后端service层的代码和数据层代码要做好封装,尽量复用。3.使用mybatisplus,封装一个单表查询的if多个条件查询,提高单表查询开发效率

2022-08-19 11:03:58 189

转载 SpringBoot整合log4j2

日志门面slf4j日志门面解决系统与日志实现框架的耦合性。SLF4J,即简单日志门面(Simple Logging Facade for Java),它不是一个真正的日志实现,而是一个抽象层( abstraction layer),它允许你在后台使用任意一个日志实现。前面介绍的几种日志框架一样,每一种日志框架都有自己单独的API,要使用对应的框架就要使用其对应的API,这就大大的增加应用程序代码对于日志框架的耦合性。使用了slf4j后,对于应用程序来说,无论底层的日志框架如何变,应用程序不需要修改任意

2021-12-19 18:14:09 394

原创 JavaSE 枚举类

枚举是什么Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一个年的 12 个月份,一个星期的 7 天,方向有东南西北等。在java中,如果类的对象是有限个,确定的。这个类我们可以定义为枚举类。枚举是Java1.5引入的新特性,通过关键字enum来定义枚举类。枚举类是一种特殊类,它和普通类一样可以使用构造器、定义成员变量和方法,也能实现一个或多个接口,但枚举类不能继承其他类。自定义枚举类我们先回顾一下jdk1.5之前我们怎么自定义枚举类:/** * 定义枚举类:季节 */

2021-12-19 17:18:32 450

原创 JavaEE ajax技术(史上最全)

目录同步交互和异步交互什么是同步交互什么是异步交互JSON格式介绍AJAX介绍AJAX结合JQuery使用jQuery.ajax()属性详解jQuery实现AJAX的其他方法$.load()$.get()$.getJSON()$.post()Ajax方法使用综合案例:AJAX跨域实现jsonp跨域处理jsonp跨域处理实现的原理是什么?通过getJson方实现跨域请求拓展: 通过后台处理跨域同步交互和异步交互什么是同步交互首先用户向HTTP服务器提交一个处理请求。接着服务器端接收到请求后,按照预先编写

2021-12-15 22:47:01 516

原创 JavaEE 监听器

目录什么是监听器?监听器怎么分类?监听器如何使用?Requet域监听器Request监听器案例:Session域监听器:Session监听器案例:Application域监听器:Application监听器案例:实战案例:持久化客户端请求日志实战案例:统计实时在线人数什么是监听器?类似于前端的事件绑定,java中的监听器用于监听web应用中某些对象、信息的创建、销毁、增加,修改,删除等动作的发生,然后作出相应的响应处理。当范围对象的状态发生变化的时候,服务器自动调用监听器对象中的方法。常用于统计在线人数

2021-12-15 17:07:18 888 1

原创 JavaEE 过滤器

目录过滤器概念过滤器如何实现功能过滤器的定义和配置案例:定义和使用Filter过滤器的生命周期及案例过滤器链过滤器初始化参数:读取初始化参数过滤器注解方式开发实战案例:过滤器解决Post中文乱码实战案例:用户登录验证过滤器概念Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏

2021-12-15 14:33:38 1940 1

原创 MVC模式的介绍

目录MVC模式的介绍MVC模式的优势1:耦合性低2:重用性高3:开发效率提高,人员职责明确4:耦合度低,可维护性高5:有利软件工程化管理MVC分层结构的特点:MVC模式的介绍MVC是一种项目架构型模式,它本身并不引入新的功能,只是用来指导我们改善应用程序的架构,使得应用的模型和视图相分离,从而得到更好的开发和维护效率。在MVC模式中,应用程序被划分成了模型(Model)、视图(View)和控制器(Controller)三个部分。其中,模型部分包含了应用程序的业务逻辑和业务数据;视图部分封装了应用程序的

2021-12-15 09:50:26 1027

原创 JavaEE中的路径问题:前端代码跳转、请求转发跳转、响应重定向跳转

目录前端页面跳转:案例:页面跳转的路径总结:请求转发路径请求转发路径总结:响应重定向路径:案例:响应重定向路径总结:路径的使用和记忆建议:前端页面跳转:案例:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <!-- base标签的作用是在相对路径之前自动补充base[hre

2021-12-14 23:06:50 709

原创 JavaEE 请求转发和响应重定向

请求转发forword处理流程:清空Response存放响应正文数据的缓冲区。如果目标资源为SServlet或JP,就调用它们的service()方法,把该方法产生的响应结果发送到客户端;如果目标资源文件系统中的静态HTML文档,就读取文档中的数据把它发送到客户端。forword处理特点:由于forword()方法先清空用于存放响应正文的缓冲区,因此源Servlet生成的响应结果不会被发送到客户端,只有目标资源生成的响应结果才会被发送到客户端。如果源Servlet在进行请求转发之前,已经

2021-12-14 22:18:33 667

原创 JavaEE ServletContext和ServletConfig介绍

ServletContext和ServletConfigServletContext对象介绍ServletContext对象的作用ServletContext方法ServletContext对象生命周期ServletConfig对象ServletContext对象介绍ServletContext官方叫Servlet上下文。服务器会为每一个Web应用创建一个ServletContext对象。这个对象全局唯一,而且Web应用中的所有Servlet都共享这个对象。所以叫全局应用程序共享对象ServletC

2021-12-14 19:58:08 1005

原创 JavaEE servlet的生命周期

目录Servlet的生命周期Servlet处理请求的过程Servlet的生命周期Servlet的生命周期是由容器管理的,分别经历四各阶段:阶段:阶段次数时机方法创建1次第一次请求new()初始化1次实例化之后init()执行服务多次每次请求service()销毁1次停止服务destroy()servlet生命周期流程:当客户端浏览器第一次请求Servlet时,容器会实例化这个Servlet,然后调用一次init方法,并在新的线

2021-12-14 19:20:33 560

原创 JavaEE 三大域对象

目录什么是域对象?Servlet三大域对象三大域对象公共方法:Request域Session域Application域什么是域对象?那些能放数据并存储传递数据作为数据存放区域的对象。Servlet三大域对象Request域(HttpServletRequest):一次请求/请求转发Session域 (HttpSession): 一次会话(跨请求)Application域(ServletContext ):任意一次请求和会话(跨会话)三大域对象公共方法:setAttribute(name,va

2021-12-14 16:54:57 812

原创 JavaEE 会话管理:Cookie和Session

目录Cookie对象与HttpSession对象简介CookieCookie对象的特点Cookie对象的创建Cookie中数据的获取Cookie不支持中文解决方案Cookie持久化和状态CookieCookie跨域问题案例:Cookie对象总结HttpSession对象HttpSession对象的特点HttpSession对象的创建案例:API方法案例: 创建HttpSession并存储数据案例:获取上次创建的HttpSession并获取数据和session的其他信息HttpSession的两种销毁方式H

2021-12-14 15:57:39 727

原创 JavaEE servlet开发及解决servlet请求和响应的乱码问题

目录Servlet介绍静态资源和动态资源HttpServletRequest对象HttpServletResponse对象解决请求和响应乱码:Servlet介绍Servlet是Server Applet的简称,称为服务端小程序,是JavaEE平台下的技术标准,基于Java语言编写的服务端程序。Web容器或应用服务器实现了Servlet标准所以Servlet需运行在Web容器或应用服务器中。Servlet主要功能在于能在服务器中执行并生成数据。Servlet使用单进程多线程方式运行。Servlet是可以接

2021-12-13 22:00:57 667

原创 JavaEE HTTP协议请求与响应

目录HTTP协议简介HTTP协议概述HTTP工作原理HTTP协议特点HTTP请求方法HTTP协议的请求流程HTTP请求组成部分HTTP响应组成部分HTTP协议简介超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种应用层协议,底层是传输层的TCP协议和网络层的IP协议。HTTP是万维网的数据通信的基础。HTTP协议概述HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准。通过使用网页浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请

2021-12-13 19:32:02 407

原创 Tomcat配置、组件介绍、乱码解决方案

目录Tomcat部署项目的两种方式:Tomcat配置文件介绍Tomcat基础配置配置Tomcat监听端口配置Tomcat并发数配置Tomcat ManagerTomcat Manager介绍配置Tomcat Manager的访问用户Tomcat Manager中的角色分类配置用户及角色Tomcat组件Server组件Service组件Connector组件Engine组件Host组件Context组件Tomcat处理请求过程Tomcat乱码解决方案:Windows控制台乱码前台页面读取数据乱码:Get,Po

2021-12-12 23:27:41 443

原创 数据库三范式

目录1.什么是范式2.如何设计合理数据库3.数据库三范式:3.1第一范式3.2第二范式3.3第三范式4.范式的总结1.什么是范式必须保证数据库设计的合理性,对数据库设计总结的一些经验性的规范,称之为范式1.数据库设计关系整个系统的架构,关系到后续开发效率和运行效率2.数据库的设计主要包含了设计表结构和表之间的联系3.范式是符合某一种设计要求的总结。4.要想设计一个结构合理的关系型数据库,必须满足一定的范式。2.如何设计合理数据库1.结构合理2.冗余较小3.尽量避免插入删除修改异常3.数

2021-12-12 20:31:40 2340

原创 JavaSE 原生Java整合Log4j

目录1.什么是日志log2.如何记录日志3.log4j日志的级别4.使用log4j记录日志1.加入jar包 log4j-1.2.8.jar2.加入属性文件 src 下 log4j.properties3.通过属性文件理解log4j的主要API4.Java中使用log4j日志5.理解日志格式化字符的含义6.使用log4j记录日志demo1.什么是日志log记录异常信息 ,登录成功失败的信息 ,其他重要操作的信息日志可以记录程序的运行状态 , 运行信息,用户的一些常用操作。日志可以帮助我们分析程序的运行状

2021-12-12 19:49:22 336

原创 JavaSE 实现一个可配置的JDBC连接池

目录建立数据库连接的两种方式:1.传统连接方式:2.连接池方式:传统方式存在问题:连接池的优势实现一个连接池:1.创建配置文件2.创建PropertiesUtil工具类3.创建一个连接池4.BaseDao实现:建立数据库连接的两种方式:1.传统连接方式:首先调用Class.forName()方法加载数据库驱动,然后调用DriverManager.getConnection()方法建立连接2.连接池方式:连接池解决方案是在应用程序启动时就预先建立多个数据库连接对象,然后将连接对象保存到连接池中。当客

2021-12-12 18:13:02 464

原创 JavaSE JDBC使用

目录1.创建项目和模块.将jar文件放入项目的lib目录中2.给当前项目添加依赖(告诉当前项目/模块可以依赖jar文件中的代码)3.向部门表中添加一条数据4.在创建JDBC使用时,发生的异常总结:5.驱动的加载1.创建项目和模块.将jar文件放入项目的lib目录中2.给当前项目添加依赖(告诉当前项目/模块可以依赖jar文件中的代码)3.向部门表中添加一条数据import java.sql.Connection;import java.sql.Driver;import java.sql.Dr

2021-12-12 18:01:05 711

原创 JavaSE JDBC事务控制 之 批处理设置回滚点

批处理设置回滚点:import java.sql.*;import java.util.LinkedList;public class TestTransaction2 { private static String driver ="com.mysql.cj.jdbc.Driver"; private static String url="jdbc:mysql://127.0.0.1:3306/mydb?useSSL=false&useUnicode=true&ch

2021-12-09 22:48:57 792

原创 JavaSE JDBC事务控制

JDBC中使用事务事务概念:事务概念:在逻辑上一组不可分割的操作,由多个sql语句组成,多个sql语句要么全都执行成功,要么都不执行. 原子性 一致性 隔离性 持久性JDBC控制事物主要就是在学习如何让多个数据库操作成为一个整体,实现要么全都执行成功,要么全都不执行在JDBC中,事务操作是自动提交。一条对数据库的DML(insert、update、delete)代表一项事务操作,操作成功后,系统将自动调用commit()提交,否则自动调用rollback()回滚。在JDBC中

2021-12-09 22:42:35 238

原创 JavaSE PreparedStatement实现:预编译+批处理

目录预编译开启预编译:Statement和PreparedStatment的关系和区别PreparedStatement 批处理批处理含义:开启批处理:&rewriteBatchedStatements=true预编译当客户端发送一条sql语句给DBMS时,MySQL的执行流程如下图SQL命令的执行流程如下:客户端向服务器端发送SQL命令服务器端连接模块连接并验证缓存模块解析SQL为Hash并与缓存中Hash表对应。如果有结果直接返回结果,如果没有对应继续向下执行解

2021-12-09 22:26:00 1151

原创 JavaSE JDBC防止SQL注入攻击:PreparedStatement

目录Sql注入使用PreparedStatement预编译语句对象解决SQL注入攻击Sql注入SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。以模拟登录为例:在前台输入用户名和密码,后台判断信息是否正确,并给出前台反馈信息,前台输出反馈信息。public class TestInjection { private sta

2021-12-09 21:52:18 388

原创 MySQL存储过程

目录存储过程(Stored Procedure)概念:存储过程的优点:MySQL实现存储过程:存储过程(Stored Procedure)概念:SQL是一种非常便利的语言。从数据库抽取数据,或者对特定的数据集中更新时,都能通过简洁直观的代码实现。但是这个所谓的“简洁”也是有限制,SQL基本是一个命令实现一个处理,是所谓的非程序语言。在不能编写流程的情况下,所有的处理只能通过一个个命令来实现。当然,通过使用连接及子查询,即使使用SQL的单一命令也能实现一些高级的处理,但是,其局限性是显而易见的。例如

2021-12-09 19:34:42 105

转载 MySQL视图

视图的概念:视图(view)是一个从单张或多张基础数据表或其他视图中构建出来的虚拟表。同基础表一样,视图中也包含了一系列带有名称的列和行数据,但是数据库中只是存放视图的定义,也就是动态检索数据的查询语句,而并不存放视图中的数据,这些数据依旧存放于构建视图的基础表中,只有当用户使用视图时才去数据库请求相对应的数据,即视图中的数据是在引用视图时动态生成的。因此视图中的数据依赖于构建视图的基础表,如果基本表中的数据发生了变化,视图中相应的数据也会跟着改变。PS:视图本质上就是:一个查询语句,是一个虚拟的表,不

2021-12-09 19:20:47 53

原创 数据库事务

数据库事务的概念及其实现原理实战例子:-- 开启事务BEGIN TRANSACTION;-- DML语句,在不开启事务的情况下,默认一个DML语句为一个事务UPDATE account SET balance = balance - 200 WHERE ID = 1;UPDATE account SET balance = balance + 200 WHERE ID = 2;-- 在回滚和提交之前,操作的数据都是缓存中的数据,而不是数据库中的真实数据-- 手动回滚-- ROLLBAC.

2021-12-09 18:24:12 162

原创 springboot整合mybatis-starter

POM文件: <properties> <mybatis.starter.version>1.3.2</mybatis.starter.version> </properties> <!-- entity基础方法自动生成器 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lomb

2021-12-08 22:26:53 518

原创 springboot配置Druid多数据源并解决循环依赖

我的springboot web项目工程目录如下: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://mav

2021-12-08 11:28:06 2279

原创 springboot整合Druid

Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池。Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入了日志监控。Druid 可以很好的监控 DB 池连接和 SQL 的执行情况,天生就是针对监控而生的 DB 连接池。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。Spring Boot 2.0 以上默认使用 Hikari 数据源,可以说 Hikari 与 Dr.

2021-12-07 14:09:51 536

原创 springboot整合jdbc

POM依赖: <!-- jdbcTemplate --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- MySQL连接 --> <depen

2021-12-06 18:53:37 73

原创 解决Navicat无法连接mysql8数据库:Authentication plugin ‘caching_sha2_password‘ cannot be loaded

原因:mysql8之前的版本中加密规则是mysql_native_password,在mysql8之后,加密规则是caching_sha2_password。两种解决问题:1.种是升级navicat驱动2.把mysql用户登录密码加密规则还原成mysql_native_password.这里用第二种方式 ,解决方法如下:第一步:设置密码永不过期:alter user 'root'@'localhost' identified by 'root' password expire never;.

2021-12-06 16:32:56 935

原创 springboot整合thymeleaf模板引擎

引入thymelaf模板引擎pom依赖 <!-- 引入thymeleaf依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency&gt

2021-12-06 09:39:16 168

原创 springboot整合springMVC源码解读

目录官方文档对springMVC自动配置的介绍:源码编写一个自定义的视图控制器官方文档对springMVC自动配置的介绍:Spring Boot 提供了适用于大多数 Spring MVC 应用的自动配置(auto-configuration)。自动配置在 Spring 默认功能上添加了以下功能:引入 ContentNegotiatingViewResolver 和 BeanNameViewResolver bean。视图解析器。支持服务静态资源,包括对 WebJar 的支持。自动注册 Con

2021-12-05 22:05:03 398

原创 springboot通过源码查看静态资源加载原理

WebMvcAutoConfiguration.java源码中找到addResourceHandlers方法 public void addResourceHandlers(ResourceHandlerRegistry registry) { //this.resourceProperties.isAddMappings()如果对resourceProperties进行配置,那么就会禁用默认资源处理 //resourceProperties.isAddMappings() 默认

2021-12-05 20:36:41 385

原创 spring源码下载编译并导入到 IDEA,编写一个学习调试源码的demo

参考官方文档:https://github.com/spring-projects/spring-framework/wiki/Build-from-Sourcehttps://github.com/spring-projects/spring-framework/blob/master/import-into-idea.md环境准备1、安装git2、jdk,版本为1.83、Gradle,目前不需要安装,在编译的时候根据源码提示按照对应版本的Gradle即可4、IDEA,我使用的版本为

2021-11-22 14:10:15 1075

空空如也

空空如也

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

TA关注的人

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