![](https://img-blog.csdnimg.cn/20200620220252302.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java后端框架
文章平均质量分 92
SSM+springBoot
Lucius_Keep_Going!
新人还请各位多多批评指正!
展开
-
缓存中的问题
一致性问题缓存和数据库一致性问题,存储的数据随着时间可能会发生变化,而缓存中的数据就会不一致。具体能容忍的不一致时间,需要具体业务具体分析,但是通常的业务,都需要做到最终一致性。一致性分类强一致性强一致性可以理解为在任意时刻,所有节点中的数据是一样的。同一时间点,你在节点A中获取到key1的值与在节点B中获取到key1的值应该都是一样的。弱一致性弱一致性包含很多种不同的实现,分布式系统中广泛实现的是最终一致性。最终一致性所谓最终一致性,是弱一致性的一种特例,保证用户最终能够读取到某操作对系统原创 2021-07-20 17:26:20 · 168 阅读 · 0 评论 -
简单聊缓存
在服务端编程当中,缓存主要是指将数据库的数据加载到内存中,之后对该数据的访问都在内存中完成,从而减少了对数据库的访问,解决了高并发场景中数据库容易成为性能瓶颈的问题;以及基于内存的访问速度高于磁盘的访问速度的原理(数据库读取数据一般需要从磁盘读取),提高了数据的访问速度和程序性能。根据缓存是否与应用进程属于同一进程,可以将内存分为本地缓存和分布式缓存。本地缓存是在同一个进程内的内存空间中缓存数据,数据读写都是在同一个进程内完成;分布式缓存是一个独立部署的进程并且一般都是与应用进程部署在不同的机器,故需原创 2021-07-20 17:06:59 · 187 阅读 · 0 评论 -
SpringCloud 基础概念
微服务 微服务架构是一种以一些微服务来替代开发单个大而全应用的方法,每一个小服务运行在自己的进程里,并以轻量级的机制来通信, 通常是 HTTP RESTful API。微服务强调小快灵, 任何一个相对独立的功能服务不再是一个模块, 而是一个独立的服务。微服务的特性微服务的好处目前微服务的发展状况SpringCloud服务发现——Netflix Eureka对比Dubbo客服端负载均衡——Netflix RibbonFeign对比ZooKeeper断路器——Netflix Hystr原创 2020-07-17 21:43:39 · 256 阅读 · 0 评论 -
Redis-底层数据结构解析
1. 常用的五种数据类型数据类型结构存储的值常用命令使用场景String可以是字符串或数字GET/SET/DEL存储 json 字符串;主键自增Hash包含键值对的无序散列表HSET/HGET/HDEL存储对象类数据,如个人信息。相比string更加灵活List一个可进行头尾增删的双向链表RPUSH/RPOP/LRANGE/RINDEX消息队列;最新内容Set无序字符串SADD/SMENBERS/SISMEMBER共同好友:取交集Zs原创 2020-06-21 14:24:27 · 210 阅读 · 0 评论 -
Get和Post请求区别
最直观的区别:GET把参数包含在URL中POST通过request body传递参数。具体一点区别:GET在浏览器回退时是无害的,而POST会再次提交请求。GET产生的URL地址可以被Bookmark,而POST不可以。GET请求会被浏览器主动cache,而POST不会,除非手动设置。GET请求只能进行url编码,而POST支持多种编码方式。GET请求参数会被完整保留在浏览器...原创 2020-04-13 21:15:39 · 115 阅读 · 0 评论 -
SpringBoot商城秒杀系统-04-项目总结
秒杀项目源码项目的亮点:使用分布式Seesion,可以实现让多台服务器同时可以响应。使用redis做缓存提高访问速度和并发量,减少数据库压力,利用内存标记减少redis的访问。使用消息队列完成异步下单,提升用户体验,削峰和降流。安全性优化:shiro安全框架,数学公式验证码,接口限流防刷。页面缓存,加快用户访问速度开发技术前端技术 :Bootstrap + jQuery + Thymeleaf后端技术 :SpringBoot 2.0+ MyBatis + MySQL中间件技术 : D原创 2020-06-04 15:20:15 · 454 阅读 · 0 评论 -
SpringBoot商城秒杀系统-03-整合RabbitMQ进行异步下单
RabbitMQ安装配置环境说明:Centos7 由于 RabbitMQ 使用通过 Erlang 来开发的,因此需要提前安装Erlang。Erlang 和 RabbitMQ 的对应关系:官网。一定要注意版本配合否则有误。安装Erlangyum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-develwget https://packages.erlang-solutions.com/erlang-soluti原创 2020-06-04 14:35:36 · 513 阅读 · 0 评论 -
SpringBoot商城秒杀系统-02-用户/商品/页面缓存
基本概念页面优化技术页面缓存+URL缓存+对象缓存由于并发瓶颈在数据库,想办法如何减少对数据库的访问,所以加若干缓存来提高,通过各种粒度的缓存,最大粒度页面缓存到最小粒度的对象级缓存。页面静态化,前后端分离都是纯的html,通过js或者ajax来请求服务器,如果做了静态化,浏览器可以把html缓存在客户端。静态资源优化JS/CSS压缩,减少流量。(压缩版的js,去掉多余的空格字符。区别于阅读版)JS/CSS组合,减少连接数。(将多个JS和CSS的组合到一个请求里面去,一下子从服务端全部下载原创 2020-06-01 19:00:01 · 169 阅读 · 0 评论 -
SpringBoot商城秒杀系统-01-分布式session
1. 什么是session?会话技术简介 http协议是无状态的,因此对于服务端来说,当它接收到客户端的http请求时,无法识别这个请求来源于哪个客户端。无状态的协议有优点也有缺点,但对于需要识别客户端甚至是需要记住客户端的业务来说,应当要让http协议"有状态"。 需要记住客户端的业务种类非常多。例如登陆系统,在一个页面登录后,新打开一个该网站页面,应当也保持登录状态。再例如购物车系统,某用户添加商品1后应当保证他还能继续添加商品2,在结算时能够读取购物车中的所有商品。 如何让服务端记住客户原创 2020-05-29 20:21:39 · 253 阅读 · 0 评论 -
SpringBoot-08-Swagger
Swagger是什么?Swagger官方文档个人理解:Swagger 就是为了实现前后端分离而生成的一个API管理工具。Swagger自动的将后端的所有接口都整合起来,并且有详细的接口信息给前端人员进行使用。而前端人员无需管底层接口,直接在Swagger上就能够进行相应的测试。没问题后再发布。这就是Swagger的核心作用!Swagger是一个规范和完整的框架,用于生成、描述、调用和可视...原创 2020-04-13 21:54:47 · 122 阅读 · 0 评论 -
SpringBoot-07-shiro-认证和授权
Shiro是什么?Apache Shiro 是一个强大灵活的开源安全框架,可以完全处理身份验证、授权、加密和会话管理。有什么特点Authentication(认证):用户身份识别,通常被称为用户“登录”Authorization(授权):访问控制。比如某个用户是否具有某个操作的使用权限。Session Management(会话管理):特定于用户的会话管理,甚至在非web 或 EJB...原创 2020-04-13 13:45:41 · 110 阅读 · 0 评论 -
SpringBoot-06-web(整合mybatis)
第一步环境搭建 我们新建一个项目,注意比之前不使用数据库多导入了关于sql的两个依赖,分别是,JDBC API 和 MySQL Driver 有了以上基本的依赖,想要使用mybatis自然也要导入关于mybatis的依赖,去官网找到就好了:<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybat...原创 2020-03-04 14:27:00 · 152 阅读 · 0 评论 -
SpringBoot-06-web(增删改查)
注: 我们需要使用 Restful风格实现我们的crud操作!1、查 目的是点击dashboard左侧栏中的员工管理页面就显示出员工信息。 第一步:去修改dashboard.html文件:<li class="nav-item"> <a class="nav-link" th:href="@{/employee}"> <svg xmlns="htt...原创 2020-03-03 14:16:07 · 224 阅读 · 0 评论 -
SpringBoot-05-web(实现登录页面并且设置拦截器)
1、处理无法使用静态资源的问题 我们确实可以跳转成功了,但是可以看到跳转的界面非常粗糙,导入的静态文件都没有使用到。原因是我们的静态文件下载下来都是html或者js语法格式,导致thymeleaf都没有起作用。因此做出以下更改: 第一步:想要使用thymeleaf必须在头部添加其地址xmlns:th="http://www.thymeleaf.org" 第二步:修改index.ht...原创 2020-03-01 17:07:02 · 692 阅读 · 0 评论 -
SpringBoot-04-web(显示登录页面)
1、静态资源导入方法一: SpringBoot中,SpringMVC的web配置都在 WebMvcAutoConfiguration 这个配置里面,我们可以去看看 WebMvcAutoConfigurationAdapter 中有很多配置方法;public void addResourceHandlers(ResourceHandlerRegistry registry) { ...原创 2020-03-01 14:22:49 · 405 阅读 · 0 评论 -
SpringBoot-02-自动配置原理再理解
自动配置原理这里是我们的程序入口:package com.lucius;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class Spr...原创 2020-02-27 17:13:22 · 148 阅读 · 0 评论 -
SpringBoot-03-yaml、JSR303校验、多环境配置
1、配置文件配置文件 SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的application.properties语法结构 : key=valueapplication.yaml语法结构 :key:空格 value配置文件的作用 :修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动配置好了;1.1、yaml语法 YA...原创 2020-02-27 17:13:46 · 199 阅读 · 0 评论 -
SpringBoot-01-入门
1、什么是SpringBoot 开发一个web应用,从最初开始接触Servlet结合Tomcat, 跑出一个Hello Wolrld程序,是要经历特别多的步骤; 后来就用了框架Struts,再后来是SpringMVC,到了现在的SpringBoot,过一两年又会有其他web框架出现;什么是SpringBoot呢,就是一个javaweb的开发框架,和SpringMVC类似,对比其他javaweb...原创 2020-02-26 16:41:34 · 185 阅读 · 0 评论 -
SpringMVC-06-增删改查
写controllerpackage com.lucius.controller;import com.lucius.pojo.Books;import com.lucius.service.BookService;import org.springframework.beans.factory.annotation.Autowired;import org.springframew...原创 2020-02-24 13:17:16 · 126 阅读 · 0 评论 -
SpringMVC-05-SSM框架整合
1、搭建项目环境和数据库数据库环境 创建一个存放书籍数据的数据库表CREATE DATABASE `ssmbuild`;USE `ssmbuild`;DROP TABLE IF EXISTS `books`;CREATE TABLE `books` ( `bookID` INT(10) NOT NULL AUTO_INCREMENT COMMENT '书id', `bo...原创 2020-02-23 17:10:14 · 142 阅读 · 0 评论 -
SpringMVC-04-工具(JSON)
1、什么是JSON? JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式,目前使用特别广泛。采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。在 JavaScript 语言中,一切都是对象。因此,任...原创 2020-02-22 15:37:25 · 149 阅读 · 0 评论 -
SpringMVC-03-深入细节(转发和重定向、数据处理和乱码问题)
1、转发和重定向 ModelAndView:根据view的名称 , 和视图解析器跳到指定的页面 .页面地址 : {视图解析器前缀} + viewName +{视图解析器后缀} 其中视图解析器的代码如下:<!-- 视图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceVie...原创 2020-02-22 13:18:38 · 111 阅读 · 0 评论 -
SpringMVC-02-入门(注解开发)
1、注解开发昨天都只是为了了解springmvc的工作流程,真正的开发过程实际都是采用注解开发。第一步: 兴建一个项目,导入web支持,在project Structure中新建lib文件夹并导入包。第二步: 配置web.xml<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.o...原创 2020-02-21 16:49:24 · 114 阅读 · 0 评论 -
SpringMVC-01-初识(SpringMVC执行原理)
据库列名原创 2020-02-20 16:40:08 · 143 阅读 · 0 评论 -
Spring学习
声明:此文章是来自狂神说java的资源,感觉非常不错,于是进行了资源整合。如若侵权请联系我,感谢。Springframework 官方文档.狂神的博客地址.Spring: 概述、IOC理论.Spring: 第一个程序、对象创建方式、配置说明.Spring: 依赖注入(Dependency Injection,DI).Spring: Bean的自动装配.Spring: 使用注解开发....原创 2020-02-15 18:47:41 · 513 阅读 · 0 评论 -
Mybatis-04-延迟加载、缓存和注解开发
1、延迟加载基本概念延迟加载:在真正使用数据时才发起查询,不用的时候不查询。又称为按需加载(懒加载)**立即加载:不管用不用,只要一调用方法,马上发起查询常用表关系中的加载方式:一对多、多对多:通常情况都是采用延迟加载多对一、一对一:通常情况都是采用立即加载一对一的延迟加载即一个账户只能够对应一个用户第一步: 在主配置文件SqlMapConfig.xml中打开延迟加载开关官...原创 2020-02-13 17:55:28 · 147 阅读 · 0 评论 -
Mybatis-03-动态Sql语句及多表查询
1、if /where/foreach语句的使用if语句同样是三步走:第一步 在Dao文件中创造方法接口 /** * 根据传入条件 * @param user 查询的条件:有可能有用户名、性别、地址、或者都有/都没有 * @return */ List<User> findUserByCondition(User user)...原创 2020-02-11 16:27:45 · 205 阅读 · 0 评论 -
Mybatis-02-基础操作(增删改查、模糊查询、单行查询、总数查询)
一共三步完成增删改查工作第一步 在IUserDao中增加方法注意事项:方法要求的参数类型,在删除这一方法中是根据ID删除,数据类型为int/Integer都可以package com.lucius.dao;import com.lucius.domain.User;import java.util.List;public interface IUserDao { /**...原创 2020-02-09 20:10:18 · 145 阅读 · 0 评论 -
Mybatis-01-基础知识及环境搭建
第一天:Mybatis入门1、什么是框架?它是我们软件开发中的一套解决方案,不同的框架解决的是不同的问题。使用框架的好处:框架封装了很多的细节,使开发者可以使用极简的方式实现功能。大大提高开发效率。2、三层架构表现层:是用于展示数据的业务层:是处理业务需求持久层:是和数据库交互的3、持久层技术解决方案JDBC技术:ConnectionPreparedStatementRe...原创 2020-02-09 15:45:40 · 113 阅读 · 0 评论