自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 NIO(1)

面向流:向流数据进行操作。流是单向的。可以把流理解为水流,水流在管道中只能流向一个方向。NIO:面向缓冲区NIO 中的通道:可以把它理解为铁路,铁路(通道)本身并没有传输功能,它就是用来连接的,但可以通过火车(工具) 来进行数据的传输。这个火车(工具) 就叫缓冲区。而是是双向的,火车可以在轨道上两头走的。通道:负责连接。缓冲区:负责存储数据第一个区别是针对于IO 与NIO 本身而言的。第二第三个区别是针对于网络编程(Socket) 而言的缓冲区:Buffer: 底层就是一个数组.

2020-12-21 20:58:13 148

原创 订单服务

环境搭建:搭建SpringSession 环境:1.导入SpringSession 的依赖2. 在配置文件中配置session 是用redis 进行存储的3.编写Session 的配置线程池配置:引入redis:服务开启SpringSession:一个订单的核心调度过程:我们的项目没有售后服务。完成功能:购物车中点击“去结算” 时,去到订单页面。注意:订单页面是只有登录以后才能进入的,所以order 服务要配置一个拦截器配置拦截器配置拦截器路径:以上

2020-12-12 16:27:22 669

原创 错误处理原理和定制错误页面

原理:可以参照ErrorMvcAutoConfiguration;错误处理的自动配置; ErrorMvcAutoConfiguration给容器中添加了以下组件:1.ErrorPageCustomizer:当系统发生4xx,或者5xx 异常的时候,ErrorPageCustomizer就会生效: 它能定制错误的响应规则。(像以前Servlet 在web.xml 中定制错误页面:哪个类型错误去到哪个页面…)。ErrorPageCustomizer 一旦生效,就会生成错误规则:默认是/error。那么就..

2020-12-11 15:00:25 277

原创 SpringBoot 与 Web 开发(2)

完成功能: 点击Customer 能显示出所有员工找到Customers 这个文本在dashborar 页面的位置thymeleaf 模板引擎渲染的默认路径页面效果:所有页面的左侧和顶部菜单栏都都是使用的同一个样式布局,所以就可以把这部分样式抽取出来,作为公共页。thymeleaf 有提供相应的功能。三种引入公共片段的th属性:th:insert:将公共片段整个插入到声明引入的元素中th:replace:将声明引入的元素替换为公共片段th:include:将被引入的片段的内..

2020-12-09 14:36:53 82

原创 Runtime类(转)

Runtime类是什么?每个java程序在运行时相当于启动了一个JVM进程,每个JVM进程都对应一个RunTime实例。此实例是JVM负责实例化的,所以我们不能实例化一个RunTime对象,只能通过getRuntime() 获取当前运行的Runtime对象的引用。一旦得到了一个当前的Runtime对象的引用,就可以调用Runtime对象的方法去查看Java虚拟机的状态以及控制虚拟机的行为。源码:如图,Runtime类用类似单例模式的方式,保证通过getRuntime()返回同一个Runtime对象。

2020-12-07 22:05:48 215

原创 SpringBoot 与 Web开发(1)

创建SpringBoot 应用,选中我们需要的模块从autoconfigur 的jar 包中就能找到对应的配置文件配置:2)选完以后,我们就能直接使用里面的模块了,因为SpringBoot 已经帮我们配置好了,所以我们直接在配置文件中进行相关配置,就能直接使用了。如果忘了相关模块的配置怎么写,可以去autuoconfigure jar 包下直接找对应的类,然后找到@EnableConfigurationProperties 这个注释,点进去就能看见相关配置怎么写了。3)自己编写业务代码:..

2020-12-06 10:02:05 135

原创 SpringBoot 与日志‘

SLF4J 对其他日志实现类的之间的调用关系。在maven 工程中查看引入依赖之间的关系图:日志不仅可以在控制台显示,还能将日志信息打印到指定文件中logging.file 和logging.path 是两个冲突设置,两个同是设置的话,只有logging.file 配置生效...

2020-12-02 10:35:41 65

原创 Spring Boot配置

利用yml 配置文件来给javaBean 注入值:@ConfigurationProperties(prefix=“person”) : 指定yml 配置文件中以person 开头的配置的值对应javaBean 中的属性。@Component: 只有这个javaBean 加入到容器中,才能用容器中的工具为这个javaBean 进行赋值。在yml 配置文件中可以配置javaBean 的值,在properties 文件中都可以配置:也是只要引入以上的这个依赖,那么在properti...

2020-11-30 10:18:45 108

原创 HelloWorld

统一环境配置:IDEA 中Maven 的路径配置:配置自己电脑上的Maven 路径实现一个简单功能:1.创建一个简单的Maven 工程:后面的配置路径文件自己配置。都差不多。2.引入Springboot 依赖: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</arti

2020-11-27 13:25:30 74

原创 Sentinel

熔断&降级&限流熔断降级限流 对于Sentinel 都能做到。

2020-11-25 21:27:48 250

原创 秒杀服务

去到我们的后台管理系统查询上架秒杀商品的管理页面:然后查看它所发送的请求,我们就知道应该编写哪个服务的数据配置网关路由:注意:url 和id 一定要写在同一列,因为他们是同级别的。gateway 也会识别出这块的格式。点击新增,就能增加秒杀活动的场次添加了两个场次:每个场次都能关联对应的商品:根据点击这个"关联商品" 出现的request 请求,我们找到后台的Controller。然后修改里面的参数。我们要达到的效果是:点击不同场次,显示出不同场次中包含的商品,所以查询时应该带.

2020-11-24 21:25:51 301

原创 消息队列

RabbitMQ :#:0 个或多个单词*: 必须有一个单词SpringBoot 整合RabbitMQ:1.引入依赖(以gulimall-order 服务为例):2.在配置文件中配置RabbitMQ 的位置:3.在项目中开启RabbitMQ 功能:利用Java 代码创建Exchange,Queue,Binding,以及收发消息使用AmqpAdmin 来进行创建创建。 @Autowired AmqpAdmin amqpAdmin; @...

2020-11-12 19:40:15 72

原创 商品详情

效果图:商品详情页是从搜索页面点击商品图片或者商品标题来跳转过去的所以每个商品详情页的html 都是由他们的skuId 来决定的。thymeleaf 拼接字符串语法:“|要拼接的字符串|”

2020-11-05 21:04:43 1046

原创 异步与线程池

异步:在java 中都是以Thread,开启线程的方式进行的。第一种:继承Thread运行结果:第二种:实现Runnable 接口:运行效果:第三种:Callable接口,配合FutureTask 进行使用它的泛型就是返回值的类型FutureTask 的本质就是一个Runnablemain():运行结果:Callable 好处:能拿到异步线程的结果。但是它是一个阻塞等待。只有等拿到返回结果以后,才能想让Runnable 有返回值也是可以的。如果FutureT

2020-11-04 19:29:36 421

原创 检索功能

和检索的所有功能都放在search 服务下:因为要对前端页面进行搭建:所以search 服务中需要引入thymeleaf在Index 页面中,引入thymeleaf 的名称空间。功能说明:当点击搜索按钮时,就应该跳转到search 服务的index...

2020-11-04 13:34:55 918

原创 性能优化

缓存与分布式锁缓存:要学会合理使用缓存,这样能极大提升系统性能伪代码:最简单的缓存模型:Map这种在类中的缓存成为:本地缓存本地缓存:缓存组件和程序是在同一线程中,在同一个JVM 中的。本地缓存在单个项目运行是没问题的,但在分布式环境中使用有很多问题。1.一次请求负载均衡到一个product 中,该product 中没有数据,先去数据库查询一次,将数据放进缓存中并返回。但第二次请求负载均衡到另一个product 服务中,此时的product 也没有数据,那么又要在进行一次数据库查询。

2020-10-30 22:27:26 367

原创 性能压测

性能监控:CPU 密集型/ IO 密集型:当前应用是浪费CPU(大量的计算) 比较多还是IO(网络IO,磁盘读写(数据库读数据…)) 比较多性能监控主要是来监控JVM 的工作。主要优化的地方是运行时数据区:使用jdk 自带的工具:jvisualvm来检测jvm 内存中的变化。使用JMeter 对一下两个接口进行压力测试中间件:nginx, tomcat 对性能的影响...

2020-10-28 20:17:07 217

原创 商城业务 首页

整合thymeleaf 渲染首页模板引擎:thymeleaf-starter: 关键缓存静态资源都放在static 文件夹下就可以按照路径直接访问页面都放在templates 下,直接访问SpringBoot 访问项目时默认会找Index关闭缓存把html 页面放到product 的templates 中,然后访问product 的端口号编写功能:1.当访问http://localhost:10001/ 和http://localhost:10001/index.html 时都

2020-10-26 17:06:57 171 1

原创 商城业务 商品上架

sku 在es 中存储模型分析项目中使用到ES 的两个地方。想要在ES 中检索数据,ES 中就得存有数据。为什么检索不用MySQL 而用ES 呢?ES 是将数据存在内存中的,MySQL 做复杂的检索时性能是远不及ES 的。商品很多的话,全在ES 中,ES 又将数据都存在内存中,内存够吗?ES 是天然支持分布式的,一个ES 不够,可以多装几个ES 分布在不同服务器中,然后ES 就会将数据分片存储,不同的服务器都存一些数据。即一台电脑的内存容量不够,就用数量来凑。所以现在要将商品数据从数据库中都存

2020-10-24 16:43:40 384

原创 SpringBoot 整合ElasticSearch,high level client

分三步:1.导入依赖2.编写配置,给容器注入一个RestHighLevelClient3.使用1.先创建一个模块,然后导入ES 的high level client3.index: 可从ES 中保存和更新数据。检索:也就是要构造出一下的格式...

2020-10-23 15:18:23 781

原创 全文检索 ElasticSearch

入门 catput: 一定要带id,不然会报错。post:不一定要带id,不带id的话es 会自动创建一个数据。A,B 同时发送请求去修改同一条数据,当B 先将数据修改成功后,_seq_no 就是+1,而此时A 就可以检测一下,_seq_no 还是否是一开始看到的0,如果不是,则停止A 对数据的修改。所以此时A 还想继续修改数据,那么就要查询出最新的信息,然后根据最新信息再来进行修改。在更新操作中,如果上一次更新和这一次更新的数据都是一样的,result:“noop” -> no

2020-10-22 20:46:43 381

原创 商品服务-API-商品管理

SPU规格维护要有商品规格回显功能:以上商品属性信息回显完成。当点击“确定”按钮时,就会发送update 请求,发送请求保存修改后的数据注意:update 数据,相当于以前的数据都不要了,现在最新的数据才是想要的,所以可以直接delete 以前的数据,然后再把最新的数据保存...

2020-10-20 21:54:16 287

原创 仓储服务-API-仓库管理

整合ware服务 & 获取仓库列表对应数据库wms,仓库表: wms_ware_info,代表当前有几个仓库。 wms_ware_sku:那个仓库的哪个商品的库存数量。 ware_order_task: 库存的订单。 ware_order_task_detail:库存订单详情。purchase: 采购单。 purchase_detail:采购单详情对应服务模块:gulimall_ware首先把它注册到Naocs 中在网关处配置一个属于它的路由规则:编写模糊查询功能:Tips

2020-10-20 20:51:56 616

原创 商品服务-API-商品管理

要做这个页面的功能:可以看出,这个搜索功能是包含多个参数的复杂检索。根据请求url,找出对应Controller,然后编写对应的方法 @Override public PageUtils queryPageByCondition(Map<String, Object> params) { QueryWrapper<SpuInfoEntity> wrapper = new QueryWrapper<>(); Strin

2020-10-19 20:29:19 140

原创 商品服务-API-属性分组

SPU 与SKU要做到的效果因为左边布局都是原来在category 中的菜单,所以这个菜单数据就可以抽取出来当成一个组件。在其他类中引入该菜单组件。最终以标签的形式进行使用。效果图:表格中的前端代码直接从逆向生成的代码中获取,然后复制attrgroup.vue 的全部代码里面需要导入一个AddOrUpdate 的组件效果图:实现功能:当点击菜单列表中的数据时,右边表格能动态显示出属于它的数据。这里要用到Vue 中的高级功能。父子组件传递数据。子组件给父组件

2020-10-17 20:25:13 463

原创 商品服务-API-三级分类(2)

自定义节点内容:要实现这些效果直接参照它自带的代码就行了slot-scope:={node,data}, 这里使用了结构表达式,传入了node 对象和data,以方便后面的节点使用。设置好以后运行页面,发现当点击Appen/Delete 的时候也会进行菜单的伸缩,我们的目的是点击箭头才进行菜单的伸缩,点击其他数据是不会进行菜单的伸缩,所以还要再加一个参数。只有是一级菜单或者二级菜单才能有Append,因为我们总共只有三级菜单;只有当前菜单没有子节点的时候才能删除节点。然后还要为菜单加上

2020-10-10 22:22:32 252

原创 商品服务-API-三级分类(1)

这些数据都来源于数据库,要对数据进行维护,查询。那么就要对product 模块的CategoryController 进行修改去到CategoryService 生成对应方法:再去impl 编写具体的Service 的方法功能:查出所有分类...

2020-10-07 20:02:25 352

原创 Vue - 使用Element-UI 协助开发

整合Element-UI 组件控制台输入命令: npm i element-ui 即可完成安装然后引入UI 样式:使用UI 提供的样式,并与样式进行数据绑定效果图:备选项2 默认选中快速使用Element-UI 搭建后台管理系统服务:因为main.js 默认第一个访问App 组件,所以把App 中的内容重新修改了。<template><!-- el-container: 是一个大容器,包含整个页面--> <el-container style

2020-10-03 21:01:31 139

原创 前端基础 - Vue 计算属性,侦听器,过滤器,组件化,生命周期钩子函数

计算属性(根据数据变动,动态算出结果):效果图:侦听器(每次数据变动时候监听数据的前后变化):效果图:应用场景:监听数据上限,如果超过上限,则将数据值为最大值。过滤器:常用来处理文本可是化的操作,过滤器可以用在两个地方:双花括号插值和 v-bind 表达式这个1,0 是从数据库中取出来的,代表着男,女。但是只是数据库中的数据,要把它转换成“男,女”可以在插值表达式中用三元运算符:如果在复杂场景,这样是不行的,这时就要用到过滤器:这个过滤器是写在Vue 对象里面的,成为局

2020-10-03 19:55:08 90

原创 前端基础 Vue-指令

v-html: 会将msg 中的标签符号进行识别并转换成标签v-text: 这个指令和"{{xxx}}(差值表达式)" 的效果是一样的。但是呢如果在控制台(网页F12)的Network 设置成"3g"或者更慢的网速,运行差值表达式{{xx}}的时候会是这样的然后过一会才会显示msg 中的信息:这个过程称为: “差值闪烁”,页面还没渲染直线直接将表达式渲染出来,这样很不友好。但是如果用v-text 就不会有这样的效果。关于差值表达式:得出效果:注意:整个差值表达式是写在html 标签体.

2020-10-02 19:24:53 74

原创 SSM 04 - 改造查询,变成一个页面的异步请求查询

提问:当前所编写的前端代码只适用与B/S架构中,当安卓用户和IOS用户也想访问这些数据时该怎么办?答:让服务器将数据进行JSON化处理(JSON是各种客户端都能进行接收的数据格式)因为要将数据专为JSON 格式,所以要引入jack son的jar 包 <!-- 将返回的数据封装成JSON格式 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId>

2020-09-23 17:15:35 133

原创 Spring Framework 面试题

面试题:什么是Spring Framework?Spring 是让你更容易开发Java 企业应用的一种框架,它提供了任何你想要拥抱在企业环境的java 语言上面的东西。并且支持类似于JVM上面的可选语言,比如Groovy 和Kotiln.同时也提供一些弹性,根据你软件的需要为你创造出不同的软件架构.spring-core 的资源管理:比如Resources 接口, 用来作为资源管理,看资源是否存在。泛型处理:GenericTypeResource.spring-beans: 依赖注入:Autow

2020-09-23 15:56:38 154

原创 关于Spirng与java

这个"事务抽象"是面试中必考的内容!!!

2020-09-23 14:16:55 37

原创 02-Mybatis 全局配置文件相关

关于mybatis的settings 标签:mybatis的typeAlias标签(别名标签):注意:起的别名都是不区分大小写的(包括默认起的别名)如果有很多个bean,基本都会为他们起个别名,不然的话在写sqlMapper文件时候需要编写大量的重复代码但是这样写会有风险,因为如果在bean包下有一个Employee,bean包的子包下又有一个Employee,这样mybatis在查询数据库时候就会发生报错解决:在使用批量起别名的情况下(package=“xxx”),使用@Alias

2020-09-19 15:52:58 65

原创 01-Mybatis_HelloWorld

01-Mybatis_01HelloWorld项目结构:Tips:在src以外的路径下写配置文件IDEA是找不到的.解决:1.2.问题得以解决.bean类:Employee配置文件:mybatis全局配置文件配置文件: Employee的sql映射文件Tips:在导入log4j的包后不要忘了把log4.xml也配置进来,不然无法在控制台看到日志信息selectOne的弊端:解决:1.创建一个接口,里面抽象方法的返回类型就是bean,参数值类型就是Integer:

2020-09-19 15:41:50 75

原创 前端基础部分

技术栈介绍:1.VSCode:开发用的前端工具2.ES6:ECMAScript的重要性:ES6新特性:1).let 声明变量let与var 之间的比较2).const声明常量(只读变量)3).解构表达式3.1).数组解构3.2). 对象解构这样写代表把person 的name属性解构出来给abc,所以输出的时候就用abc作为变量3.4). 字符串扩展1.几个新的API2.字符串模板" ` ": 这个符号就是键盘数字列1左边的符号可以和对象解构一起使

2020-09-18 22:23:08 106

原创 搭建分布式系统的基本环境 - 网关

好处一:网关能实现动态的路由到各个服务,比如前端发送请求到1号机器的10000端口,但1号机器已经下线了,网关能从注册中心中实时感应上线的服务,总是能正确的路由到正确的位置好处二:在网关处加上权限,以保证系统的健全好处三:解耦:让原本是每个服务所需要实现的功能同一抽取到网关模块中before:current:所以就使用SpringCloud 提供的Gateway 组件来实现网关功能关于SpringCloud Gateway 的基本概念路由:网关将请求路由到指定的服务或地址。路由就包括几.

2020-09-18 21:16:57 572

原创 搭建分布式系统的基本环境 - Nacos作为配置中心

在gulimail - common 的pom 文件中引入Nacos Config 的依赖 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>然后在除了gulimail - common项目以外,都要在

2020-09-17 21:50:04 123

原创 搭建分布式系统的基本环境 - Nacos作为注册中心

框架:所用到的微服务组件:配置SpringCloud Alibaba,配置在gulimall-common 的pom.xml 中 <dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId

2020-09-17 16:18:39 149

原创 SSM 03 - Spring 单元测试与查询

分页查询:整体请求流程:先进入index/jsp,由index.jsp 直接用forward 请求到后台查询员工并进行分页,将分页结果返回到list.jsp 页面因为要分页,所以可以使用PageHelper 插件进行分页pagehelper 配置:引入pagehelper 依赖 <!-- 引入pagehelper 分页插件--> <dependency> <groupId>com.github.pagehelper</groupI

2020-08-14 14:14:52 255

空空如也

空空如也

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

TA关注的人

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