自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(98)
  • 收藏
  • 关注

原创 MQ消息队列

MQ消息队列消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。使用场景主要有异步处理,应用解耦,流量削锋和消息通讯四个场景目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQJMS消息服务JMS(JAVA Message Service,java消息服务)API是一个消息服务的标准/规范,允许应用程序组件基于JavaEE平台创建、发送、接收和读取消息。它使分

2021-07-05 17:50:08 199

原创 缓存(入门)

缓存为了减少数据库的访问次数,以浪费内存为代价,提高查询效率,所以引入缓存优化顺序: 内存>网络>磁盘问题:双写问题缓存常见的实现方案memcachedredis 11万读/8万写Redis缓存使用场景降低后端负载加速请求响应大量写合并为批量写Redis缓存策略LRU、LFU、FIFO超时剔除主动更新缓存粒度控制通用性:全量属性更好占用空间:部分属性更好代码维护:表面上全量属性最好缓存穿透问题现象:请求访问red

2021-07-01 17:21:26 173

原创 Shiro(2)

Shiroshiro是apache旗下一个Java安全框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证、权限授权、加密、会话管理等功能,组成了一个通用的安全认证框架。使用shiro就可以非常快速的完成认证、授权、加密,会话管理等功能的开发,可为任何应用提供安全保障,降低系统成本Shiro功能登录/身份认证,登录失败次数限制对用户执行访问控制,如: 判断用户是否拥有角色admin,判断用户是否拥有访问的权限在任何环境下使用Session API。例如CS程序加密,保证数据安全;

2021-07-01 17:20:02 264

原创 shiro框架

shiro框架什么是shiroshiro是apache旗下一个Java安全框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证、权限授权、加密、会话管理等功能,组成了一个通用的安全认证框架。使用shiro就可以非常快速的完成认证、授权、加密,会话管理等功能的开发,可为任何应用提供安全保障,降低系统成本基础RBACShiro功能登录/身份认证,登录失败次数限制对用户执行访问控制,如: 判断用户是否拥有角色admin,判断用户是否拥有访问的权限在任何环境下使用Session API。

2021-06-30 19:28:20 284

原创 NoSQL-Redis

NoSQLNoSQL即Not Only SQL不仅仅是SQL,泛指非关系型的数据库NoSQL数据库可以分为4大类:键值key-value存储、列存储、文档数据库、图形数据库CAP原理CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。CAP原则是NOSQL数据库的基石。分布式系统的CAP理论:理论首先把分布式系统中的三个特性进行了如下归纳:一致性C:在分

2021-06-30 19:26:07 247

原创 SpringBoot Redis

SpringBoot Redis两种应用开发方式:SpringBoot cache提供的注解和Spring data提供的RedisTemplate。RedisTemplate的用法依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifac

2021-06-30 19:24:21 80

原创 springboot开发

使用Thymeleaf+SpringBoot开发用户管理系统Spring Boot支持FreeMarker、Groovy、Thymeleaf和Mustache四种模板解析引擎,官方推荐使用Thymeleaf。口令加密问题口令解密存放是有必要的,可以避免廉政危机###加密算法对称加密优点:算法公开、计算量小、加密速度快、加密效率高、可逆缺点:双方使用相同钥匙,安全性得不到保证算法: 在对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、ID

2021-06-04 17:18:40 81

原创 Spring 原理

一、 IoC(Inversion of control): 控制反转1、IoC:概念:控制权由对象本身转向容器;由容器根据配置文件去创建实例并创建各个实例之间的依赖关系核心:bean工厂;在Spring中,bean工厂创建的各个实例称作bea二、AOP(Aspect-Oriented Programming): 面向方面编程1、 代理的两种方式:    静态代理:针对每个具体类分别编写代理类;针对一个接口编写一个代理类;    动态代理:针对一个方面编写一个InvocationHa

2021-05-08 18:06:26 150

原创 Spring(1)

IoC/DI和AOP是什么DI是依赖注入IOC,控制反转所谓控制反转,即依赖关系的获取方式(controll)反过来了。所谓依赖,从程序的角度看,就是比如A要调用B的方法,那么A就依赖于B,反正A要用到B,则A依赖于B。所谓反转(inversion),你必须理解如果不反转,会怎么着,因为A必须要有B,才可以调用B,如果不反转,意思就是A主动获取B的实例:B b = new B(),这就是最简单的获取B实例的方法(当然还有各种设计模式可以帮助你去获得B的实例,比如工厂、Locator等等),然后你就可以

2021-05-07 18:03:44 58

原创 Java Spring框架(一)

Java Spring框架是什么?它有哪些好处?Spring 是另一个主流的 Java Web 开发框架,该框架是一个轻量级的应用框架,具有很高的凝聚力和吸引力。Spring 框架因其强大的功能以及卓越的性能而受到众多开发人员的喜爱。Spring 是分层的 Java SE/EE full-stack 轻量级开源框架,以 IoC(Inverse of Control,控制反转)和 AOP(Aspect Oriented Programming,面向切面编程)为内核,使用基本的 JavaBean 完成以前只

2021-05-07 09:35:09 100

原创 MyBatis分页插件

目录MyBatismybatis核心配置反向映射配置测试测试结果MyBatismybatis核心配置<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration&gt

2021-04-25 17:09:55 57

原创 Mybatis原理

Mybatis原理加载mybatis全局配置文件(数据源、mapper映射文件等),解析配置文件,MyBatis基于XML配置文件生成Configuration对象和一个个MappedStatement(包括了参数映射配置、动态SQL语句、结果映射配置),其对应着<select | update | delete | insert>标签项SqlSessionFactoryBuilder通过Configuration对象生成SqlSessionFactory,用来开启SqlSession

2021-04-25 17:02:56 76

原创 MyBatis反向映射配置文件

第一步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 http://maven.

2021-04-23 16:52:42 116

原创 RowBounds

RowBounds软分页Mybatis可以通过传递RowBounds对象,来进行数据库数据的分页操作,然而遗憾的是,该分页操作是对ResultSet结果集进行分页,也就是人们常说的逻辑分页,而非物理分页。效率低下,不建议使用。RowBounds实现分页(本质,在sql层面将所有数据查出来,最后在Java层面利用RowBounds对象,实现分页)参数offset属性是偏移量,即从第几行开始读取记录,起始位是0;limit是限制条数,如果要取第一条数据应该是"select * from

2021-04-23 16:45:22 568

原创 BeanUtils工具类

BeanUtilscommons-beanutils 是apache commons子项目中的一个软件包,其主要目的是利用反射机制对 JavaBean 的属性进行处理。Maven:<dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>1.9.3</version&g

2021-04-23 16:37:46 346

原创 Maven的生命周期

Maven的生命周期Maven的生命周期就是对所有的构建过程进行抽象和统一。包含了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等几乎所有的构建步骤。Maven的生命周期是抽象的,即生命周期不做任何实际的工作,实际任务由插件完成,类似于设计模式中的模板方法。三生命周期Maven有三套相互独立的生命周期,分别是clean、default和site。每个生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段。1、clean生命周期:清理项目,包含三个pha

2021-04-23 09:31:06 987

原创 Mybatis(forEach)标签

mybatis动态sql中foreach标签的使用我们通常可以将之用到批量删除、添加等操作中。foreach标签主要用于构建in条件,他可以在sql中对集合进行迭代。如下:<delete id="deleteBatch">     delete from user where id in    <foreach collection="array" item="id" index="index" open="(" close=")" separator=","> 

2021-04-22 18:03:40 316

原创 mybatis中#{}和${}的区别

mybatis中#{}和${}的区别#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by “111”, 如果传入的值是id,则解析成的sql为order by “id”.$将传入的数据直接显示生成在sql中。如:order by useriduser_iduseri​d,如果传入的值是111,那么解析成sql时的值为order by user_id, 如果传入的值是id,则解析成的sq

2021-04-22 17:55:42 69

原创 分层框架(二)

具体的业务实现类package com.yan.biz;public class UserServImpl implements IUserServ{}业务工厂类简化版的静态工厂方法模式package com.yan.util;import com.yan.biz.IUserServ;import com.yan.biz.UserServImpl;public class ServiceFactory { public static IUserServ getUserS

2021-04-20 11:48:11 57

原创 分层架构(部分示例代码)

JavaEE企业级开发中的分层架构微软推荐的分层式结构一般分为三层,从下至上分别为:数据访问层、业务逻辑层、表示层。分层式设计可以达至如下目的:分散关注、松散耦合、逻辑复用、标准定义。JavaEE中分层架构:表现层、业务层、持久层轻量级开发中采用的是:表现层、业务层、持久层、域对象层表现层:MVC模式,SpringMVC,收集客户动作和显示业务数据业务层:Spring框架,封装业务逻辑,逻辑复用持久层:DAO模式、ORM模式,MyBatis,封装数据访问逻辑域对象层:实现层和层

2021-04-20 09:49:36 289

原创 Mybatis(日志配置)

针对log4j进行配置resources/log4j.properties 名称和位置固定log4j.rootLogger=DEBUG,console # debug就是需要输出的日志等级,只有大于等于debug的日志信息才进行输出# 控制台(console)log4j.appender.console=org.apache.log4j.ConsoleAppenderlog4j.appender.console.layout=org.apache.log4j.PatternLayoutlog4

2021-04-19 17:15:29 451

原创 Mybatis全局配置

Mybatis全局配置配置文件的内容properties属性settingstypeAiases-别名typeHandlers(类型处理器)plugins 插件机制environments 环境配置databaseIdProvider数据库厂商标识mappers 映射器配置文件的内容properties(属性)settings(全局配置参数)typeAiases(类型别名)typeHandlers(类型处理器)objectFactory(对象工厂)plugins(插件)

2021-04-19 15:58:24 325

原创 hibernate

hibernate1.添加依赖2.配置3.定义实体类4.测试Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用1.添加依赖hibernate的包

2021-04-17 15:36:46 67

原创 MyBatis

概述MyBatisMyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。以开发sql语句的工作量为代价换取高灵活性##Hello MyBatis1、添加依赖<dependency>

2021-04-17 14:51:13 99

原创 Servlet——监听器和过滤器

监听器和过滤器监听器监听器的作用使用方面:实现对应的接口request:session:application:接口中方法说明:注:session和context中有类似的方法在web3.0以后可以使用注解配置过滤器过滤器技术解决了什么问题过滤器的使用1.创建一个类实现filter接口2.在web.xml中配置过滤器监听器监听器的作用在事件发生之前或之后进行数据的处理使用方面:实现对应的接口request:①ServletRequestListener②ServletRequestAttri

2021-04-14 17:50:06 106

原创 JSEL(核心标签库)

核心标签库常用标签:if标签:多分支判断标签:循环标签:循环体属性out标签:set标签:remove标签:为了避免在jsp页面中使用java脚本,以方便分工合作开发引入标签库<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>常用标签:if标签:单分支逻辑判断。<c:if test="${表达式}">数据</c:if>多分支判断标签:符合条件后只会执行一个分支,其他分支不会执

2021-04-14 09:30:54 329

原创 JSP开发

jsp开发模型单纯的JSP编程JSP+JavaBean 编程(jspModel1)JSP+JavaBean+Servlet 编程MVC 模式Model(模型)View(视图)Controller(控制器)单纯的JSP编程在 JSP 编程模式下,通过应用 JSP 中的脚本标志,可以直接在 JSP 页面中实现各种功能。虽然这种模式很容易实现,但是,其缺点也非常明显。因为将大部分的 Java 代码与 HTML 代码混淆在一起,会给程序的维护和调试带来很多困难,而且难以理清完整的程序结构。所以说

2021-04-13 19:36:35 236

原创 Lombok与EL表达式

lombokLombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注解实现这一目的。例子public class Mountain{ private String name; private double longitude; private String country;} 要使用这个对象,必须还要写一些getter和setter方法,可能还要写一个构造器、equals方法、或者h

2021-04-13 18:05:21 194

原创 JSP基础知识总结

JSPJSP基础基本语法表达式格式:声明格式:Jsp与servlet的区别jsp的运行原理为什么jsp不能取代servlet?JSP的三个指令1. page 指令2. Include指令:3. taglib指令六大页面动作存放数据的4大范围9大默认对象四大域对象:1.page:2.request3.session:4.application:JSP基础jsp工作原理:web服务器(tomcat\jboss等)先把jsp文件翻译成servlet的java文件,然后编译成字节码文件,就是.class文件,当

2021-04-10 15:48:44 848

原创 JAVA-反射基础

反射一、反射的定义二、Class的获取forName和loadClass的区别三、反射的使用1、构造函数的获取和使用2、属性的获取和使用3、方法的获取和使用4、注解的获取和使用一、反射的定义反射机制是指在程序的运行状态中,可以构造任意类的对象,了解任意对象所属的类,了解任意类的成员变量和方法,可以调用任意对象的属性和方法。即,对类和实例化对象可以动态进行以下操作:1、通过类构造实例化对象2、通过类读取类包含的属性方法3、通过实例化对象获取类的信息4、通过实例化对象操作对象的所有属性和方法这

2021-04-09 15:01:18 46

原创 Web(2-Servlet)

Servlet什么是servlet :servlet的作用:servlet的生命周期初始化阶段:运行阶段:销毁阶段:servlet怎么处理一个请求?servlet和jsp的区别servlet里的过滤器过滤器的作用怎么创建一个过滤器:servlet中的监听器什么是servlet :servlet是一个Java编写的程序,此程序是基于http协议的,在服务器端(如Tomcat)运行的,是按照servlet规范编写的一个Java类。客户端发送请求至服务器端,服务器端将请求发送至servlet,servlet

2021-04-08 15:29:59 74

原创 Web(1)

Web开发概述web应用概述B/S架构web应用资源HTTP协议web应用详解简介HTTP协议http协议的无状态性get和post请求HTTP协议之响应http和https协议理解Tomcat和浏览器tomcat目录结构Tomcat重要配置JavaEE应用开发的三层架构总架构模型访问网站流程使用MVC设计Web应用CGIWeb应用结构web应用概述WEB在英语中web即表示蜘蛛网的意思,它用于表示Internet主机上(服务器)供外界访问的资源Web应用程序是一种可以通过Web访问的应用程序。We

2021-04-07 19:53:11 116

原创 HTML(18-js练习)

习题

2021-04-07 10:02:56 78

原创 HTML(17-js)

js知识总结js的运行机制ES6中箭头函数的调用JS中内存空间释放的问题类基础定义方法的覆盖自定义类JS中的对象闭包注意:优点:缺点:js的运行机制在js中js引擎会优先解析var变量和function定义,在预解析完成后从上到下逐步进行解析var变量时会把值存储在执行环境中,而不会去赋值,值是存储作用!如alert(a);var a = 5;这时会输出undifiend,意思是没有被初始化没有被赋值。这并不是没有被定义,错误的意思在解析function时会把函数整体定义,这也就解释了为什么在f

2021-04-06 20:47:59 67

原创 HTML(16-js-函数)

这里写目录标题函数练习函数练习

2021-04-06 20:30:30 155

原创 HTML(15-JS常见事件)

事件处理机制一、JavaScript中的事件onclick 鼠标单击事件ondblclick 鼠标双击事件onchange 表单内元素中的value值发生改变的事件onload 页面加载完成后的事件onfocus 获取焦点事件onblur 丢失焦点事件二、事件的特点1、事件也是一段js代码,调用者是用户。2、事件所代表的代码执行具有延迟性。3、事件机制以一种松耦合的方式来连接事件调用者和事件创建者。给页面中的某个元素绑定某个事件,当某个事件达成时,就会执行事件上绑

2021-04-06 10:16:43 387

原创 HTML(14-ECMA6(部分))

ECMA6语法定义1. 什么是ecma6常用语法let 关键字const 关键字对象的简化写法属性的简化写法方法的简化写法class关键字定义类constructor 构造方法extends 继承super1. 什么是ecma6ecmascript 6.0(简称 es6)常用语法let 关键字用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效{ let a = 100; // referenceerror: a is not defined. va

2021-04-05 10:11:33 179 2

原创 HTML(13-js浏览器加载和流程控制)

浏览器加载原理1、浏览器按照从上到下的顺序下载HTML文档,一边下载一边加载到内存,不是全部下载后再全部加载到内存。另外DOM树结构的绘制优先于关联元素的加载,比如图片2、通常来说,浏览器执行JavaScript脚本有两大特性:①载入后马上执行。②执行时会阻塞页面后续内容(包括页面的渲染、其它资源的下载)载入后马上执行 document.getElementById("but1").onclick=function(){ alert("DOM树"); }特殊案例

2021-04-03 10:38:08 168

原创 HTML(12-js运算符)

运算符算术运算符赋值运算符赋值运算符可以嵌套使用:三元运算符逻辑运算符字符串连接运算符JavaScript 运算符主要包括:算术运算符、赋值运算符、比较运算符、三元运算符、逻辑运算符、字符串连接运算符算术运算符var x = 2;alert(++x); //输出:3alert(x); //输出:3var y = 2;alert(y++); //输出:2alert(y); //输出:3赋值运算符赋值运算符 = 用于赋值运算,赋值运算符的作用在于把右边的值赋值给左边变量。赋

2021-04-02 09:09:18 533

原创 HTML(11-js复合类型)

JavaScript复合类型复合类型对象数组什么是数组数组特点数组的基本操作数组常见方法复合类型 复合类型是指由多个基本数据类型或者复合类型构成的数据体。 js中的复合类型有对象Object、数组Array和Function函数三大类对象对象是一系列命名变量和函数的集合,对象中的命名变量称为属性,对象中的函数称为方法。对象中访问属性和函数的方法都是通过. 点运算符实现的。例如获取浏览器的版本navigator.appVersionjs是基于对象的脚本语言,所以提供了大量的内置对

2021-04-01 20:41:02 205

空空如也

空空如也

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

TA关注的人

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