自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 “安全”地学习Spring Security

放心学,很安全1. 什么是 Spring Security ?Spring Security是基于spring的轻量级安全框架,与spring mvc有很好的继承,提供了全面的安全性解决方案,同时在web请求级和方法调用级处理身份确认和授权。在spring的基础上,security充分利用了依赖注入和面向切面基础,为应用系统提供了声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。1.1 功能认证(你是谁,用户/设备/系统)验证(你能干嘛,也叫权限控制/授权,允许执行的操作

2021-03-29 23:33:56 251

原创 Redis——从入门到入赘

本redis学习笔记是我学习过程的记录,学习自周阳老师,如有不足之处请多指教Redis1. 前言在学习reids之前,有一些背景和概念需要我们先去认识,这样学期redis起来会更加融会贯通;我们首先认识的便是NoSQL(大家可以结合菜鸟教程来学习)1.1 什么是NoSQL?NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。泛指非关系型数据库。在今天爆炸式增长的用户数据中,这类数据存储不需要固定的模式,也无需多余的操作就可以横向扩展了。NoSQL数据库的产生就.

2021-03-27 23:46:45 249

原创 Nginx 快速入坑

天降萌男 Nginx1. Nginx相关概念1.1 什么是NginxNginx 是高性能的 HTTP 和反向代理的服务器,处理高并发能力是十分强大的,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数1.2 反向代理在学反向代理前,我们先来了解什么是正向代理:客户端通过代理服务器来访问目标资源,即需要在客户端配置代理服务器进行指定网站访问,这种代理服务就是正向代理实际上客户端对代理是无感知的,因为客户端无需任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代

2021-03-20 19:39:53 202

原创 Spring Boot学习笔记23——缓存管理

缓存是分布式系统的重要组件,主要解决数据库数据的高并发访问问题,对于用户访问量大的网站,缓存对于提高服务器访问性能,减少数据库压力和提高用户体验十分重要。spring boot对缓存提供了很好的支持,下面我们将对spring boot的缓存进行介绍和对spring boot与redis缓存中间件进心整合1. Spring Boot默认缓存管理spring框架支持透明的向应用程序添加缓存并对缓存进行管理,其管理缓存的核心是将缓存应用于操作数据据的方法中,从而减少操作数据的次数,同时不对程序本身造成干扰。

2020-11-03 09:34:22 728 1

原创 LeetCode算法笔记(简单篇01)

题目一:给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]),请返回 nums 的动态和如输入:nums = [1,2,3,4]输出:[1,3,6,10]解释:动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4]思路:一般数组求和都是循环+累加,题目要求结果是当前元素及其前面所有元素之和,则我们可以把当前元素作为分界线,用当前元素加上前一个元素(前一个元素因为循环,本身已经等于本身加上之前元素之和,以此类

2020-11-03 08:57:54 251

原创 Spring Boot学习笔记22——安全管理(用户授权)

当一个系统建立后,通常都有一些权限控制,使得不同的角色有不同的权限操作,下面就针对web应用中常用的自定义用户授权进行介绍1. 自定义用户访问控制在实际的开发中,网站访问多是基于HTTP请求的,在前一个学习笔记中,我们已经讨论过重写WenSecurityConfigurerAdapter类的configure(HttpSecurity http)方法可以对基于HTTP的请求访问进行控制。下面问 通过对configure(HttpSecurity)方法的讲解,分析自定义用户访问控制的实现流程co.

2020-10-26 10:17:21 792

原创 Spring Boot学习笔记21——安全管理(用户认证)

1. Spring Security介绍在开发过程中,我们常常涉及用户权限登陆,用来验明身份和赋予指定权限,达到保护项目安全和项目访问效果等。基于此,Spring家族提供了Spring Security用于解决安全访问的框架,在Spring Boot中可以对其进行整合并且还提供了自动化配置1.1 常见的安全管理功能MVC Security:是Spring Boot整合Spring MVC搭建WEB应用的常用安全框架WebFlux Security:是Spring Boot整合Spring We

2020-10-21 10:24:06 1673

原创 Spring Boot学习笔记20——原理(启动&运行&自动配置)

1. 启动配置原理(启动流程)1.1 创建SpringApplication对象可以创建一个web项目在mian方法打断点,通过debug来看springboot的启动流程initialize(sources);private void initialize(Object[] sources) {//1、保存主配置类if (sources != null && sources.length > 0) { this.sources.addAll(Array

2020-10-04 17:38:48 188

原创 Spring Boot学习笔记19——数据访问(整合JPA)

1. 认识Spring Data1.1 什么是Spring DataSpring Data是为了简化构建基于Spring框架应用的数据访问技术,包括非关系数据库、Map-Reduce框架、云数据服务等等;也包含对关系数据库的访问支持Spring Data提供数据访问模板类xxxTemplate,如MongoTemplate、RedisTemplate等1.2 Spring Data特点Spring Data为我们提供使用统一的API来对数据访问层进行操作,这主要是Spring Data C

2020-10-03 16:06:02 183

原创 Spring Boot学习笔记18——数据访问(整合mybatis)

1. 环境准备1.1 创建项目创建一个新的项目(选中web、jdbc、mysql和mybatis环境)项目新增的mybatis依赖<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.3</ve

2020-10-02 20:44:53 177

原创 Spring Boot学习笔记17——数据访问(JDBC&Druid)

1. 关于数据访问对于数据访问层,无论是SQL还是NOSQL,spring boot都默认采用整个Spring Data的方式进行统一处理,添加大量的自动配置,屏蔽了很多设置。引入各种xxTemplate,xxRepository来简化我们对数据访问层的操作,对我们来说只要进行简单的设置即可。2. JDBC&自动配置原理2.1 创建项目打包方式还是jar选中web模块,JDBC和mysql(spring data jdbc比 jdbc api更简洁高效)然后我们可以在pom文件看到J

2020-10-02 16:52:06 127

原创 Spring Boot学习笔记16——Docker

1. 什么是DockerDocker是一个开源的应用容器引擎,基于Go语言开发并遵从Apache2.0协议开发。Docker可以让开发者打包他们的应用以及所需依赖包到一个轻量级和可移植的容器中,然后这个容器可以发布到任何流行的Linux上,也可实现虚拟化Docker支持将软件编译成一个镜像,然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像;运行中的这个镜像称为容器。容器时完全使用沙盒机制,互相之间无任何接口,关键是容器性能开销极低我们类比在网上下载windows系

2020-10-01 20:34:21 202

原创 Spring Boot学习笔记15——web开发10(配置servle容器)

1. SpringBoot默认容器相对以前我们开发web(如ssm)时,需要在外部配置tomcat,SpringBoot默认使用Tomcat作为嵌入式的Servlet容器,而spring boot就帮我们简化了,直接内嵌我们可以通过pom文件来看所依赖的servlet容器2. 如何定制和修改Servlet容器的相关配置2.1 修改和server有关的配置(ServerProperties【本质也是EmbeddedServletContainerCustomizer】)server.port

2020-09-30 20:52:44 331

原创 Spring Boot学习笔记14——web开发09(错误处理机制)

该SpringBoot学习笔记学习自雷神前辈,是对知识点的整理和自我认识的梳理,如有不当之处,欢迎指出

2020-08-24 15:51:13 147

原创 Spring Boot学习笔记13——web开发08(CRUD-员工添加&修改&删除)

1. 员工添加页面跳转1.1 要求点击添加按钮发送get请求来到添加页面添加完毕后发送post请求完成添加1.2 具体实现将“员工添加”按钮改成超链接<h2><a class="btn btn-sm btn-success" href="emp" th:href="@{/emp}">员工添加</a></h2>将emp/list复制一份,重命名为add将add中<main>标签的内容删除,并从bootstrap官

2020-08-23 17:49:00 234

原创 Spring Boot学习笔记12——web开发07(CRUD-员工列表)

1. 实验要求RestfulCRUD:CRUD满足Rest风格(URI:/资源名称/资源标识,HTTP请求方式区分对资源CRUD操作)普通CRUD(uri来区分操作)RestfulCRUD查询getEmpemp—GET添加addEmp?xxxemp—POST修改updateEmp?id=xxx&xxx=xxemp/{id}—PUT删除deleteEmp?id=1emp/{id}—DELETE实验的请求架构实验功能请

2020-08-22 16:18:00 153

原创 MySQL索引学习笔记03——高性能的索引策略(多列索引&索引列顺序)

1. 多列索引多列索引不是为每个列创建独立的索引,或者按照错误的顺序创建多列索引;在多个列上建立独立的单列索引大部分情况下并不能提高MySQL的查询性能。MySQL 5.0及以上版本引入了一种叫“索引合并”(index merge)的策略,一定程度上可以使用表上的多个单列索引来定位指定的行早版本的MySQL只能使用其中某一个单列索引,但哪一个独立的单列索引是非常有效的。如表film_actor在字段film_id和actor_id上各有一个单列索引,但对于其查询WHERE条件,这两个单列索引都不是好

2020-08-22 11:26:17 361

原创 Spring Boot学习笔记11——web开发06(登陆&拦截器)

1. 登陆这个登陆功能先不连接数据库,只需填写任意用户名,密码是123456即可登陆成功来到后台1.1 清缓存开发期间模板引擎页面修改以后,要实时生效禁用模板引擎的缓存# 禁用缓存spring.thymeleaf.cache=false 页面修改完成以后ctrl+f9,重新编译1.2 配置首页1.3 控制器方法@Controllerpublic class LoginController { //@RequestMapping(value = "/use

2020-08-21 17:17:46 178

原创 Spring Boot学习笔记10——web开发05(国际化)

1. 国际化国际化就是我们平时页面上切换中英文的按钮,按下中文按钮,整个页面都显示中文,反之显示英文,当然,也可以做多种语言1.1 步骤编写国际化配置文件,抽取页面需要显示的国际化消息先分析页面中什么部分需要国际化编写国际化配置文件(在资源目录下创建i18n文件夹然后创建对应文件) 然后根据要国际化的内容编写配置SpringBoot自动配置好了管理国际化资源文件的组件@ConfigurationProperties(prefix = "spring.messages")public c

2020-08-21 15:54:42 147

原创 Spring Boot学习笔记09——web开发04(开发配置)

1. 导入素材我们把实现准备的dao,entities和页面模板导入(注意:html要放入templates中,否则无法读取)2. 默认访问首页方法一 @RequestMapping({"/","/index.html"}) public String index(){//设置默认访问首页 return "index"; }*如果运行后无法访问首页,试着把target删除掉,再重新运行;该方法麻烦,少用 *方法二为了方便,我们先把index改成login(

2020-08-20 21:58:51 143

原创 MySQL索引学习笔记02——高性能的索引策略(前缀索引&索引选择性)

正确地创建和使用索引是实现高性能查询的基础,针对特殊案例,或针对特定行为的优化,选用不同的索引1. 独立的列独立的列是指索引列不能是表达式的一部分,也不能是函数的参数。如果查询中的列不是独立的,则MySQL就不会使用索引,如:SELECT actor_id FROM sakila.actor WHERE actor_id + 1 = 5;这个查询无法使用actor_id列的索引,我们知道上面的actor_id=4,但MySQL无法自动解析这个方程式,我们应该有简化WHERE条件的习惯,始终将索引.

2020-08-20 21:55:36 170

原创 Spring Boot学习笔记08——web开发03(SrpingMVC配置&热部署)

1. Spring MVC auto-configuration(自动配置)spring boot自动配置好了SpringMVC以下是SpringBoot对SpringMVC的默认配置(WebMvcAutoConfiguration)Inclusion of ContentNegotiatingViewResolver and BeanNameViewResolver beans.自动配置了ViewResolver(视图解析器:根据方法的返回值得到视图对象(View),视图对象决定如何渲染(转

2020-08-20 16:40:40 137

原创 Spring Boot学习笔记07——web开发02(模板引擎)

1. 模板引擎spring boot推荐使用Thymeleaf,语法简单,功能强大1.1 导入依赖 <!--thymeleaf依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </de

2020-08-19 18:36:30 120

原创 Spring Boot学习笔记06——web开发01(静态资源映射)

1. 开发前的思考在开发前我们要先对自动装配原理和开发的内容要有一定的认识,这样开发起来才能更高效和清晰1.1 使用springboot创建springboot应用,选中我们所需的模块依赖springboot已默认将 这些场景配置好了,我们只需在配置文件中指定少量配置即可运行起来编写业务代码自动装配原理:这个场景springboot帮我们配置了什么?能不能修改?能修改哪些配置?能不能拓展…xxxAutoConfiguration:帮我们给容器中自动配置组件xxxProperties:配

2020-08-19 16:30:27 129

原创 MySQL索引学习笔记01——索引本质

什么是索引索引 是帮助MySQL高效获取数据的实现类高级查找算法的数据结构,一般以文件的形式存储在硬盘索引的数据结构包括了二叉树红黑树Hash表B-Tree

2020-08-18 18:24:05 123

原创 Spring Boot学习笔记05——日志

市面上有很多日志框架,如JUL、JCL、logback、log4j等等;spring boot的底层是spring框架,spring默认使用JCL,但是springboot选用的是SLF4j(日志门面)和logback(日志实现)开发时,日志记录方法的调用,不应该来直接调用日志的实现类,而是调用日志抽象层中的方法;给系统中导入slf4j的jar包和logback的实现jar包import org.slf4j.Logger;import org.slf4j.LoggerFactory;publi.

2020-08-18 17:11:44 178

原创 Spring Boot学习笔记04——自动装配原理

自动装配原理(@SpringBootApplication)启动类中,@SpringBootApplication的作用是标注这个类是一个spring boot应用,启动类下的所有资源以及导入资源spring boot所有的自动配置都在启动时扫描并加载的,所有自动配置的类都保存在spring.factories中,这些自动配置的类中都有ConditionalOnXXX注解,该注解的作用是对其中的条件进行判断,如成立,只要导入了对应的start,spring boot就有了相应的启动器,即自动装配生效

2020-08-16 15:39:36 221

原创 Spring Boot学习笔记03——配置文件汇总

学习前先新建好一个spring boot工程,记得勾选Spring Webyaml配置文件配置文件的作用是修改SpringBoot自动配置的默认值 ,spring boot通过这些配置帮我们完成自动配置,极大地提高了我们开发的效率SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的第一种:application.properties ,语法结构 :key=value,,新建项目就默认存在的,但官方不推荐这里就不记录了第二种:application.yml,语法结构 :k

2020-08-12 15:37:51 266

原创 Spring Boot学习笔记02——认识场景启动器和run方法

项目创建完后,我们可以看到项目下有一个默认的application的类,其中让我们最眼生的便是@SpringBootApplication注解和run方法,在这里我们大概先讲一下这两个的原理自动装配原理(@SpringBootApplication)@SpringBootApplication的作用是标注这个类是一个spring boot应用,启动类下的所有资源以及导入资源spring boot所有的自动配置都在启动时扫描并加载的,所有自动配置的类都保存在spring.factories中,这些自

2020-08-11 16:56:30 224

原创 Spring Boot学习笔记01——初识

什么是Spring BootSpring Boot是一个开发javaweb的框架,要注意的是,Spring Boot基于 Spring 开发,而不是代替Spring来开发,要让其相结合以提高开发效率;Spring Boot能更快捷和简化开发,特点是约定大于配置(核心思想)微服务架构我们先了解一下以前的单体应用架构(all in one),即项目的所有服务都封装在一个单体中,如ERP、CRM抑或是其他系统,我们都把数据库访问,web访问等等全都封装到一个war包中了;这样虽然易于开发,测试和维护,但是

2020-08-11 14:08:51 221

原创 java核心技术知识摘要01——特点&命名&基本数据类型

这个系列的文章是我阅读学习《java核心技术》的个人知识总结,巩固基础,也以便日后回头查漏补缺,主要是对知识的关键词摘要和个人理解,如果大家不嫌弃,也可以看看我的文章总结Java特点简单性java尽可能地接近C++,但剔除了C++中许多很少使用、难以理解、易混淆的特性(头文件、指针运算(甚至指针语法)、结构、联合、操作符重载、虚基类等)面向对象重点放在数据(即对象)和对象的接口上分布式Java有一个丰富的例程库,用于处理像HTTP和FTP之类的TCP/IP协议。Java应用程序能够通过U.

2020-08-02 22:38:38 120

原创 SpringMVC学习笔记11——运行流程

1. SpringMVC运行流程执行流程用户发起请求some.doDispatcherServlet接收请求some.do,把请求转交给处理器映射器处理器映射器:springmvc框架中的一种对象,框架把实现了HandlerMapping接口的类都叫做映射器(多个)映射器作用:根据请求,从springmvc容器对象中获取处理器对象(MyController mc=ctx.getBean("some.do"))框架把找到的处理器对象放到一个叫做处理器执行链(HandlerExecution

2020-08-02 15:53:54 186

原创 SpringMVC学习笔记10——拦截器

SpringMVC 中的 Interceptor 拦截器作用是拦截指定的用户请求(对请求作判断处理),并进行相应的预处理与后处理,需要实现 HandlerInterceptor 接口;拦截器是全局的,一个项目中可以有零个或多个拦截器,可以对多个Controller进行拦截注意和过滤器的区别:过滤器是用户过滤请求参数,设置编码字符集等工作;拦截器是用于拦截用户请求,做请求的判断处理的拦截器常用于:用户登陆处理,权限检查,记录日志使用步骤:1. 定义类实现 HandlerInterceptor 接口.

2020-08-02 15:06:00 378

原创 SpringMVC学习笔记9——异常处理

异常我们都学过异常处理,就是用try&catch,但是项目比较大,那很多地方需要加上大量的try&catch,而且包含的异常类型会很多,特别费时和麻烦;这里我们可以通过aop来解决这个问题把业务逻辑和异常处理代码分开,实现解耦合;springmvc使用全局的,统一的异常处理,即把controller中的异常都集中到一个地方进行处理异常处理步骤新建maven web项目加入依赖新建一个自定义异常类 MyUserException ,再定义其子类 NameExcepti

2020-07-31 17:20:29 166

原创 SpringMVC学习笔记8——转发和重定向

转发当处理器对请求处理完毕后,向其它资源进行跳转时,有两种跳转方式:请求转发与重定向转发:可以访问WEB-INF中页面,是一次请求, request.getRequestDispatcher("xx.jsp").forward()重定向:不可以访问WEB-INF中页面,是两次请求, response.sendRedirect("xxx.jsp")SpringMVC 框架把原来 Servlet 中的请求转发和重定向操作进行了封装,我们使用起来更加方便快捷;forward和redirect都是关

2020-07-31 14:33:58 179

原创 SpringMVC学习笔记7——SSM整合1

整合思路本次学习笔记进行SSM(即 SpringMVC + Spring + MyBatis 整合)的整合,先理清每个框架的任务SpringMVC:视图层,界面层,负责接收请求,显示处理结果Spring:业务层,管理Service,dao,工具类对象MyBatis:持久层,负责访问数据库简要过程:用户发起请求==> SpringMVC接收 ==>Spring的Service对象 ==> MyBatis处理数据在SSM整合中存在两个容器:SpringMVC容器:管理Con

2020-07-31 13:02:29 162

原创 SpringMVC学习笔记5——访问静态资源

url-pattern本次项目的webapp结构本次项目的index.jsp 注意:我们加入了jQuery(在js目录下哦)<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>Title</title> <script type="text/javascript" src="js/jquery

2020-07-27 22:02:41 178

原创 SpringMVC学习笔记6——路径

地址分类在进行最后的SSM整合前,我们先弄清楚项目地址中加或不加/的区别先把需要的代码展示一下index.jsp(这里href没有加/的哦)<p>第一个springmvc程序</p> <p><a href="user/some.do"/>get发起user/some.do请求</p>控制器@Controllerpublic class Mycontroller { @RequestMapping(value = "/us

2020-07-27 22:01:26 214

原创 SpringMVC学习笔记4——关于返回值

4.1 返回值一、ModelAndView当处理器处理完后,需要返回数据和跳转页面,用ModelAndView是最合适的,相关用法我们笔记3中有使用到,这样不再赘述了二、String控制方法@RequestMapping(value = "/returnString-view.do" ) public String doReturnView(HttpServletRequest request,String name,Integer age){ request.setAt

2020-07-26 21:10:28 251

原创 SpringMVC学习笔记3——关于参数

3.1 参数前面我们通过some.do超链接跳转到show.jsp,但是如果我们直接在网址栏后加上/show.jsp也可以访问,只是这个页面没有通过控制器,里面的数据没有显示出来,如果我们不想让用户通过这种方法来访问,一种方法是把目标jsp放到WEB-INF下,这个目录下的资源用户是无法访问的,放完后,我们只需把controller中的setViewName()改成相应目录即可,如mv.setViewName("/WEB-INF/some.do"),但是如果这种操作很多,那就有很多"/WEB-INF/"

2020-07-26 21:08:50 445

空空如也

空空如也

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

TA关注的人

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