
后端
文章平均质量分 73
上帝123
这个作者很懒,什么都没留下…
展开
-
分布式事务
1、分布式事务:本地事务与分布式事务1)事务数据库事务(简称:事务,Transaction)是指数据库执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。事务拥有以下四个特性,习惯上被称为ACID特性:原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态是指数据库中的数据应满足完整性约束。除此之外,一致性还有另外一层语义,就是原创 2021-03-22 17:54:16 · 299 阅读 · 1 评论 -
分布式全文搜索服务Elasticsearch
1、ElasticSearch简介Elasticsearch,简称es,是一款开源的高扩展的分布式全文搜索服务,它可以近乎实时的检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也是使用Java开发并使用Lucene作为其核心来实现搜索的功能,但是它是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。...原创 2021-03-10 11:32:47 · 482 阅读 · 0 评论 -
搜索之Lucene
1、倒排索引举个例子:使用新华字典查找汉字,先找到汉字的偏旁部首,再根据偏旁部首对应的目录(索引)找到目标汉字。样例: 文档0(编号0): we like java java java 文档1(编号1): we like lucene lucene lucene (Term 词条) (Doc 文档,Freq 频率) (Pos 位置) we (0,1) (1,1) (0)(0) like (0,1) (1,1) (1)(1) java原创 2021-03-09 17:51:34 · 218 阅读 · 0 评论 -
MybatisPlus的简单使用
1. 概述•MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。2.快速入门2.1引入相关依赖创建maven工程,编写pom文件如下:<!-- 指定SpringBoot父工程--><parent> <groupId>org.springframework.boot</groupId> <artifactId>sp...原创 2021-03-08 20:06:12 · 476 阅读 · 0 评论 -
redis的简单使用
1. Redis的简介1.1NoSQL非关系型数据库概述什么是NOSQLNot Only SQL:不仅仅是SQL,指的就是非关系型数据库。以前学习过MySQL,它是关系型数据库。非关系型数据库是关系型数据库有益的补充,不能代替关系型数据库。非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。NoSQL数据库的四大分类分类 特点 代表产品 键值存储 数据一般存在内存中,读写速度快(10w/s),适合作为缓存服务原创 2021-03-06 18:13:14 · 284 阅读 · 0 评论 -
springcloud之Feign,Gateway,Config配置中心组件
1、Feign:介绍与使用原创 2021-03-01 11:15:14 · 1508 阅读 · 0 评论 -
vue的简单使用
1、Vue简介1.1 概述 Vue (读音 /vjuː/,类似于view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库整合。另一方面,Vue 也完全能够为复杂的单页应用提供驱动。 渐进式: 可以有选择性的使用该框架的一个或多个组件,并不需要将框架的全部组件都用在应用中;当应用业务需要用到更高级的,我们后面可以再加入高级组件。 1.2 安装 方式一: 直接下.原创 2021-02-28 17:01:48 · 554 阅读 · 1 评论 -
springcloud之Eureka,Ribbon,Hystrix
1、系统架构演变1.1分布式服务架构优点: 将基础服务进行了抽取,系统间相互调用,提高了代码复用和开发效率 问题: 服务越来越多,需要管理每个服务的地址(例如,A需要调用B、C、D、E四个服务,便需要配置四个服务的地址) 调用关系错综复杂,难以理清依赖关系(上图可见) 服务过多,服务状态难以管理,无法根据服务情况动态管理(例如,A需要调用B,B采用集群,集群有三个服务B1, B2, B3,到底调用哪个服务?怎么负载均衡?如果B1宕机了A怎么知道?) 1..原创 2021-02-25 16:29:52 · 223 阅读 · 0 评论 -
SSM的整合
1. SSM整合的概述什么是SSM整合所谓SSM,即SpringMVC+Spring +mybatis,标准的MVC设计模式,将整个系统划分为web、service层、DAO层。Spring MVC、spring、mybatis各司其职,在整个框架中有着不同的作用。 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,主要实现业务对象管理; Spring MVC框架,通过实现MVC模式将数据、业务与展现进行分离,主要负责 请求的转发和视图管理; My原创 2021-02-25 13:11:11 · 543 阅读 · 0 评论 -
springmvc拦截器
拦截器:自定义拦截器什么是拦截器SpringMVC框架中的拦截器,类似于web阶段学习的过滤器(filter)拦截器可以对处理器方法执行预处理(前置增强)和执行后处理(后置增强),还有最终处理。过滤器与拦截器的区别组件 过滤器Filter 拦截器 Interceptor 来源 来源于Servlet,重量级的组件 来源于SpringMVC框架,只能用在这个框架中 拦截范围 所有的资源:Servlet,JSP,HTML 只能拦截处理器原创 2021-02-23 20:28:55 · 80 阅读 · 0 评论 -
springmvc(二)
1. 访问静态资源:解决方案一步骤 创建静态页面,目前可以正常访问 将web.xml中DispatcherServlet的url-pattern改成/,重启服务器tomcat 再次访问后台控制器的方法,去掉后缀名.do,可以正确访问 但所有的静态资源都访问不了 原因:也被DispatcherServlet拦截,而这个Servlet不能处理静态资源。在tomcat中专门有一个默认的Servlet用来处理静态资源。而我们配置的DispatcherServlet覆盖了默原创 2021-02-23 20:06:58 · 206 阅读 · 0 评论 -
SpringMVC(一)
1. SpringMVC介绍MVC模型MVC 全名是 Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种用于设计创建 Web 应用程序的模式。主要目的就是为了分离Model模型和View视图,将数据的展示和数据的存储分离,核心是控制器,降低代码的耦合度,不同于三层架构。序号 MVC 职责 1 Model(模型) 存储数据:JavaBean 与数据库进行交互 2 View(视图)原创 2021-02-23 17:17:13 · 220 阅读 · 0 评论 -
spring之AOP和声明式事务
1. AOP的基本概念AOP(Aspect Oriented Programming),即面向切面编程。 (OOP:Object 面向对象编程)比如去银行取款和查询余额有了AOP,你写代码时不需要把这个验证用户步骤写进去,即完全不考虑验证用户。只写取款和显示余额的业务代码。而在另一个地方,写好验证用户的代码。这个验证用户的代码就是切面代码,以后在执行取款和显示余额的时候,利用代理模式。将验证用户的功能在执行取款和显示余额前调用。代码在Spring容器中执行的时候,通过配置告诉Spring原创 2021-02-22 17:22:15 · 584 阅读 · 0 评论 -
springboot整合各种框架
1、SpringBoot:整合SpringMVC整合SpringMVC只需要引入: spring-boot-starter-web启动器依赖。说明: 虽然默认配置已经可以使用SpringMVC,不过我们有时候需要进行自定义配置。1.1 日志控制# 配置日志logging: level: # debug-info-warn-error cn.it: debug说明: logging.level: 是固定写法,说明下面是日志级别配置,日志相关其它配置也可...原创 2021-02-22 11:57:10 · 4976 阅读 · 0 评论 -
springboot原理及配置
01、SpringBoot:概述1.1 SpringBoot是什么?SpringBoot是搭建应用的脚手架,由Spring公司的核心团队在2013年开始研发、2014年4月发布第一个版本的全新开源的轻量级框架。它基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突等问题得到了很好的解决。...原创 2021-02-22 10:49:30 · 335 阅读 · 0 评论 -
代理模式
1. 代理模式1.1 何为代理?代理是通过代理对象访问目标对象,这样可以在目标对象的逻辑进行增强,或者称之为改变。代理分为静态代理和动态代理两种。1.2为什么要代理?原因一:你可能没有目标类的源码,也就是java文件,这样你如何修改逻辑?原因二:若是直接在目标类上修改某方法逻辑,而项目中有多处都需要调用该类的该方法,会导致所有调用处的逻辑都发生改变,但假如我只想在某一处调用的地方添加自己的增强逻辑呢?2. 静态代理2.1 介绍静态代理和动态代理都是实现代理的两种方式,区.原创 2021-02-21 20:15:11 · 93 阅读 · 0 评论 -
Spring框架之Spring JDBC 和 IoC
1、JdbcTeamplate概述JdbcTemplate是Spring提供的一个模板类,它是对jdbc的封装。用于数据库持久层的操作,它的特点是:简单、方便。它简化了JDBC的使用,并有助于避免常见错误。它执行核心的JDBC工作流程,我们只需要写SQL语句,并且从中获取结果就可以了。JDBC中操作: 获取Connection 获取PreparedStatement 执行增删改查 查询还要获取ResultSet 处理异常:SQLException原创 2021-02-21 18:10:50 · 213 阅读 · 0 评论 -
Spring之IoC容器和依赖注入(2)
4. IoC容器:创建容器三种方式BeanFactory容器的类结构方式一:类路径配置文件建容器方式二:本地配置文件方式创建容器方式三:注解的方式创建容器代码package com.it.test;import com.it.service.CustomerService;import com.it.service.impl.CustomerServiceImpl;import org.junit.Test;import org.springframework.con原创 2021-02-20 20:40:02 · 232 阅读 · 0 评论 -
Spring之IoC容器和依赖注入(1)
1. IoC的概念本质上就是工厂模式以前以前我们是由自己主动创建一个对象,主动获取一个资源//Car是接口, 后面是实现类Car bmw = new Bmw();Car benZ = new BenZ();Car audi = new Audi();现在使用工厂模式,我们需要的对象由工厂去创建,我们不再自己创建,我们只消费对象。Car bmw = BeanFactory.getBean("bmw");Car benZ = BeanFactory.getBean("be原创 2021-02-20 18:00:54 · 569 阅读 · 0 评论 -
Quartz 任务调度
Quartz框架的介绍Quartz是一个完全由Java编写的开源任务调度的框架,通过触发器设置作业定时运行规则,控制作业的运行时间。其中quartz集群通过故障切换和负载平衡的功能,能给调度器带来高可用性和伸缩性。主要用来执行定时任务,如:定时发送信息、定时生成报表等等。1、Quartz使用步骤: 添加依赖 编写任务类(你要什么?) 编写Spring整合Quartz配置 启动服务 实现:1、使用Spring整合Quartz: <!--定时任原创 2021-02-18 15:08:52 · 141 阅读 · 0 评论 -
MyBatis逆向工程
逆向工程的简介 正向工程 : 在软件开发的过程中有些人是先设计实体类、dao最后才设计数据库,这个过程称作为正向工程。 逆向工程: 先设计数据库,然后再设计实体类、dao,这个过程称作为逆向工程。 步骤 创建项目:mybatis_generate 配置pom.xml, 添加依赖 配置Jdbc.properties 配置mybatis-generator-config.xml, 指定表及实体类路径、映射文件路径等。 编写测试类 实现1、原创 2021-02-18 14:33:52 · 172 阅读 · 0 评论 -
RBAC权限模型 --shiro
1、RBAC简介基于RBAC设计的目标,简化权限管理!==RBAC(全称:Role-Based Access Control)基于角色的权限访问控制==,作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注。在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以很容易地从一个角色被指派到另一个角色。角色可依新的需求和系统的合并而赋予.原创 2021-02-18 14:33:31 · 1033 阅读 · 2 评论 -
分页之PageHelper
介绍PageHelper是国内非常优秀的一款开源的mybatis分页插件,它支持基本主流与常用的数据库, 例如mysql、 oracle、mariaDB、 DB2、 SQLite、Hsqldb等。使用步骤: - 设置当前页与页面大小 - 查询页面数据 - 创建PageInfo对象,并且把List对象传入第一步:添加依赖<dependency> <groupId>com.github.pagehelper</groupId>...原创 2021-02-17 16:24:54 · 236 阅读 · 0 评论 -
统一异常处理
实现项目中统一异常的配置,做到项目后台出现异常,自动跳转到错误页面。第一步:创建自定义异常类package cn.it.web.exceptions;import org.springframework.stereotype.Component;import org.springframework.web.servlet.HandlerExceptionResolver;import org.springframework.web.servlet.ModelAndView;import原创 2021-02-17 15:55:38 · 78 阅读 · 0 评论 -
微信扫码支付
1、微信扫码支付申请微信扫码支付是商户系统按微信支付协议生成支付二维码,用户再用微信“扫一扫”完成支付的模式。该模式适用于PC网站支付、实体店单品或订单支付、媒体广告支付等场景。申请步骤:第一步:注册公众号(类型须为:服务号)请根据营业执照类型选择以下主体注册。第二步:认证公众号公众号认证后才可申请微信支付,认证费:300元/次。第三步:提交资料申请微信支付登录公众平台,点击左侧菜单【微信支付】,开始填写资料等待审核,审核时间为1-5个工作日内。第四步:开户成功,登录商.原创 2021-02-17 15:16:40 · 540 阅读 · 1 评论 -
设计购物车
对象结构CartItem购物车项对象放在domain包中 三个属性 Route route商品对象 Integer num数量 Double subTotal小计 使用@Data注解 修改getSubTotal()方法 计算结果 = 线路价格 * 数量 返回计算结果 package com.it.travel.domain;import lombok.Data;/** * 购物车每一项 */原创 2021-02-17 14:51:22 · 84 阅读 · 0 评论 -
搜索功能
步骤 DAO层的编写 业务层的编写 Servlet的编写 代码Daopackage com.it.travel.dao;import com.it.travel.domain.Route;import org.apache.ibatis.annotations.Param;import org.apache.ibatis.annotations.Select;import java.util.List;/** * 线路DAO */public i原创 2021-02-17 10:49:21 · 133 阅读 · 0 评论 -
页面分页显示
要将所有显示在页面上的部分抽象成一个对象,这个对象封装了分页中所有的数据PageBean分成以下三类属性1. 由数据库查询:data,count2. 由用户提交:current,size3. 其它四个属性通过计算得到代码package com.it.entity;import java.util.List;/** * 分页对象 */public class PageBean<T> { /* 一共是8个属性,分成三大类: 1. 从数据库原创 2021-02-17 09:50:09 · 610 阅读 · 0 评论 -
文件上传
1、文件上传三要素 表单必须使用POST提交 表单必须指定enctype="multipart/form-data" 必须使用input type="file"文件域,要指定name属性 enctype="application/x-www-form-urlencoded"表单中数据以键值对的方式发送的enctype="multipart/form-data"表单分成不同的部分传递,整个表单由多个部分组成2、Servlet中上传的Part接口注:To原创 2021-02-17 09:35:43 · 243 阅读 · 0 评论 -
redis优化导航条举例
1、复制jedis.properties把jedis.properties文件复制到resources目录下2、编写方法:List<Category> findAll() 先查Redis缓存 判断指定的键是否存在 如果存在 通过get获取缓存中JSON字符串 将JSON字符串转为List对象 如果不存在 则查询数据库,得到List集合 将List集合转成JSON字符串,存到Redis中 关闭Jedis连接 返回List对象原创 2021-02-17 09:35:17 · 92 阅读 · 0 评论 -
自定义异常
主要是起到语义的作用package com.it.travel.exception;/** * 用户自定义异常 */public class CustomMessageException extends Exception { /** * 构造方法 * @param message 要传入的错误信息 */ public CustomMessageException(String message) { super(message.原创 2021-02-16 17:28:32 · 160 阅读 · 0 评论 -
BaseServlet利用反射优化方法调用
import com.fasterxml.jackson.databind.ObjectMapper;import javax.servlet.Servlet;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;i.原创 2021-02-16 16:31:17 · 113 阅读 · 0 评论 -
ajax应用例子
ajax注册例子获取表单中所有的数据 let data = $("#registerForm").serialize();<script type="text/javascript"> //注册按钮的点击事件 $("#btnRegister").click(function () { //获取表单中所有的数据 let data = $("#registerForm").serialize(); //异步提...原创 2021-02-16 15:36:48 · 75 阅读 · 0 评论 -
将对象转成JSON,打印到浏览器端
将对象转成JSON字符串 String json = new ObjectMapper().writeValueAsString(object);import com.fasterxml.jackson.databind.ObjectMapper;import com.itheima.travel.domain.ResultInfo;import com.itheima.travel.domain.User;import com.itheima.travel.service.U...原创 2021-02-16 15:19:22 · 849 阅读 · 0 评论 -
ResultInfo类
ResultInfo类可以用来封装页面回显的信息import lombok.Data;import lombok.NoArgsConstructor;/** * 用来封装操作结果 */@Data@NoArgsConstructorpublic class ResultInfo { private Boolean success; //是否操作成功 private String message; //操作的结果信息 private Object dat原创 2021-02-16 15:06:33 · 2962 阅读 · 2 评论