Stream简介什么是 流式编程
通过将集合转换为这么一种叫做 “流” 的元素序列,通过声明性方式,能够对集合中的每个元素进行一系列并行或串行的流水线操作。
Stream(流)是 Java 8 引入的一个新的抽象概念,它代表着一种处理数据的序列。
简单来说,Stream 是一系列元素的集合,这些元素可以是集合、数组、I/O 资源或者其他数据源。
Stream API 提供了丰富的操作方法,可以对 Stream 中的元素进行各种转换、过滤、映射、聚合等操作,从而实现对数据的处理和操作。
Stream API 的设计目标是提供一种高效、可扩展和易于使用的方式来处理大量的数据。
Java Stream 的主要作用:
简化集合操作:使用传统的 for 循环或迭代器来处理集合数据可能会导致冗长而复杂的代码。而使用流式编程,能够用更直观、更简洁的方式对集合进行过滤、映射、排序、聚合等操作,使代码变得更加清晰易懂。
延迟计算:流式操作允许你在处理数据之前定义一系列的操作步骤,但只在需要结果时才会实际执行。这种延迟计算的特性意味着可以根据需要动态调整数据处理的操作流程,提升效率。
并行处理 ...
1.认识微服务微服务的架构特征:
单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责
自治:团队独立、技术独立、数据独立,独立部署和交付
面向服务:服务提供统一标准的接口,与语言和技术无关
隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题
区别:
单体架构:简单方便,高度耦合,扩展性差,适合小型项目。例如:学生管理系统
分布式架构:松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东、淘宝
微服务:一种良好的分布式架构方案
①优点:拆分粒度更小、服务更独立、耦合度更低
②缺点:架构非常复杂,运维、监控、部署难度提高
SpringCloud是微服务架构的一站式解决方案,集成了各种优秀微服务功能组件
2.服务拆分和远程调用任何分布式架构都离不开服务的拆分,微服务也是一样。
2.1.服务拆分原则总结微服务拆分时的几个原则:
不同微服务,不要重复开发相同业务
微服务数据独立,不要访问其它微服务的数据库
微服务可以将自己的业务暴露为接口,供其它微服务调用
2.2.远程调用 (案例)修改order-service中的根据id查询订单 ...
SpringMVC Restful风格的接口的流程是什么样的呢?PS:这是一道全新的八股,毕竟ModelAndView这种方式应该没人用了吧?现在都是前后端分离接口,八股也该更新换代了。
我们都知道Restful接口,响应格式是json,这就用到了一个常用注解:
@ResponseBody
12345@GetMapping("/user")@ResponseBodypublic User user(){ return new User(1,"张三");}
加入了这个注解后,整体的流程上和使用ModelAndView大体上相同,但是细节上有一些不同:
1. 客户端向服务端发送一次请求,这个请求会先到前端控制器DispatcherServlet
2. DispatcherServlet接收到请求后会调用HandlerMapping处理器映射器。由此得知,该请求该由哪个Controller来处理
3. DispatcherServlet调用HandlerAdapter处理器适配器,告诉处理器适配器应该要去执行哪个Con ...
1.Spring简介1.1 为什么要用springIOC解决高耦合,AOP解决代码冗余
为什么要用Spring?
Spring提供一个容器/工厂,统一管理模块的定义,根据需要创建。
把模块的配置参数统一管理,模块不需要自行读取配置。
Spring提供依赖注入,把依赖的模块自动推送进来,不需要模块自己拉取。
此外,Spring提供了对很多其他第三方框架的集成功能,能够便利开发(减少了样板代码(boilerplate) )。
1.2 Spring是容器还是工厂?(既是容器,又是工厂)使用过Spring的同学都知道,”Spring是一个容器”。其实,这种说法不太准确,Spring提供的容器不止一种,例如有ClasspathXmlApplicationContext、XmlWebApplicationContext等多种容器,所有这些容器的父类都是BeanFactory。
但是为什么起名叫”工厂”呢?单纯的”容器”只起到一个存放对象的作用,如果只是想把对象存放起来,那么ArrayList,HashSet等Java集合类完全可以胜任,根本用不着Spring。Spring容器并不是 ...
JWT作用:授权:一旦用户登录,每个后续请求将包括JWT,从而允许用户访问该令牌允许的路由,服务和资源。它的开销很小并且可以在不同的域中使用。如:单点登录。信息交换:在各方之间安全地传输信息。JWT可进行签名(如使用公钥/私钥对),因此可确保发件人。由于签名是使用标头和有效负载计算的,因此还可验证内容是否被篡改。
1.传统Session1.1.认证方式http协议本身是一种无状态的协议,如果用户向服务器提供了用户名和密码来进行用户认证,下次请求时,用户还要再一次进行用户认证才行。因为根据http协议,服务器并不能知道是哪个用户发出的请求,所以为了让我们的应用能识别是哪个用户发出的请求,我们只能在服务器存储─份用户登录的信息,这份登录信息会在响应时传递给浏览器,告诉其保存为cookie,以便下次请求时发送给我们的应用,这样应用就能识别请求来自哪个用户。
1.2.暴露的问题用户经过应用认证后,应用都要在服务端做一次记录,以方便用户下次请求的鉴别,通常而言session都是保存在内存中,而随着认证用户的增多,服务端的开销会明显增大;用户认证后,服务端做认证记录,如果认证的记录被保存 ...
1.请求
1.2 简单参数简单参数:在向服务器发起请求时,向服务器传递的是一些普通的请求数据。
那么在后端程序中,如何接收传递过来的普通参数数据呢?
我们在这里讲解两种方式:
原始方式
SpringBoot方式
1.2.1 原始方式在原始的Web程序当中,需要通过Servlet中提供的API:HttpServletRequest(请求对象),获取请求的相关信息。比如获取请求参数:
Tomcat接收到http请求时:把请求的相关信息封装到HttpServletRequest对象中
在Controller中,我们要想获取Request对象,可以直接在方法的形参中声明 HttpServletRequest 对象。然后就可以通过该对象来获取请求信息:
12//根据指定的参数名获取请求参数的数据值String request.getParameter("参数名")
123456789101112131415161718@RestControllerpublic class RequestController { //原始方式 @R ...
数据库开发-MySQL前言在我们讲解SpringBootWeb基础知识(请求响应案例)的时候,我们讲到在web开发中,为了应用程序职责单一,方便维护,我们一般将web应用程序分为三层,即:Controller、Service、Dao 。
之前我们的案例中,是这样子的请求流程:浏览器发起请求,先请求Controller;Controller接收到请求之后,调用Service进行业务逻辑处理;Service再调用Dao,Dao再解析user.xml中所存储的数据。
xml文件中可以存储数据,但是在企业项目开发中不会使用xml文件存储数据,因为不便管理维护,操作难度大。 在真实的企业开发中呢,都会采用数据库来存储和管理数据,那此时,web开发调用流程图如下所示:
首先来了解一下什么是数据库。
数据库:英文为 DataBase,简称DB,它是存储和管理数据的仓库。
像我们日常访问的电商网站京东,企业内部的管理系统OA、ERP、CRM这类的系统,以及大家每天都会刷的头条、抖音类的app,那这些大家所看到的数据,其实都是存储在数据库中的。最终这些数据,只是在浏览器或app中展示出来而已,最 ...