Fork me on GitHub
摘要: 要完成一个高可用、高性能的RPC框架,需要对其架构的设计进行梳理,这里参考xxl-rpc框架,对整个项目进行梳理。 以上就是项目的整个构架,分为四个部分; 第一个是服务发布与引入,基于JDK动态代理以及Spring实现;包括invoker和provider。 第二个部分是服务注册,基于zookeep 阅读全文
posted @ 2020-03-11 19:19 lovejune 阅读(410) 评论(0) 推荐(0) 编辑
摘要: 恢复内容开始 Netty概述 netty是JBoss提供的开源网络编程框架,提供异步的、基于事件驱动的网络应用程序框架和工具。 架构 使用了典型的三层网络架构,Reactor 通信调度层 -> 职责链 PipeLine -> 业务逻辑处理层 Reactor层主要监听网络的读写和连接操作,负责将网络层 阅读全文
posted @ 2020-03-11 19:18 lovejune 阅读(368) 评论(0) 推荐(0) 编辑
摘要: 二分查找 二分查找的数组必须是有序的数组,通过折半查找,很方便的找到查找的值。 如上图所示,原理很简单,代码如下 package com.liuixnghang.test; import org.junit.Test; public class ErFeng { @Test public void 阅读全文
posted @ 2020-03-04 18:44 lovejune 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 数据结构 数据结构其实就是一种存储数据的格式。可以有效的改善代码中数据的存储。 稀疏矩阵 对于一个二维数组,如果数组中大部分元素为0,那么会造成内存空间极大的浪费。因此,设计一种针对稀疏数组的数据结构就很有必要,例如: 可以看出,稀疏矩阵是将一种矩阵转换,将N行M列的矩阵转换为X行3列的矩阵,当矩阵 阅读全文
posted @ 2020-03-01 20:53 lovejune 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 在开始总结之前,先记录一个刚看到的博客,编程规约。该博客记录了一些java开发上的规范,可以在编码的时候引入这些规范。 无论流行框架一直怎么改变,web开发中的三层架构一直属于理论的基础存在。 表现层 -> 业务层 -> 持久层 箭头所指的方向就是层之间调用的方向,在SSM框架中,利用springm 阅读全文
posted @ 2020-02-25 18:45 lovejune 阅读(1988) 评论(3) 推荐(0) 编辑
摘要: 在秒杀的场景中还存在着很多的安全问题 暴露秒杀地址 秒杀请求可以很频繁 接口流量大,恶意刷接口 隐藏秒杀接口 为什么需要隐藏,事实上,页面上的所有东西都能被客户端拿到,包括js代码,因此,分析商品详情页面就可以知道秒杀的地址所在,如果提前知道秒杀地址,就可以使用提前设置一些代码去刷这个请求接口,造成 阅读全文
posted @ 2020-02-23 23:15 lovejune 阅读(310) 评论(0) 推荐(0) 编辑
摘要: rabbitMQ 消息队列,通过一定的通信协议,生产者和消费者在应用程序内传递通信。 主要的作用,提高负载,减耦合。 场景描述:当点击秒杀按钮的那个时刻,有很高的并发量,客户端发出请求之后,会判断库存,如果库存大于0,就判断是否已经下单,如果没有下单,就执行秒杀逻辑,对于秒杀逻辑,分两个步骤,一是减 阅读全文
posted @ 2020-02-22 23:51 lovejune 阅读(759) 评论(0) 推荐(0) 编辑
摘要: 在秒杀业务中,会出现当只剩一个库存时,但有多个人仍然秒杀成功,且都减库存成功,因此,在减库存,更新数据库的时候,需要在sql语句上进行判断,是否库存大于0. @Update("update miaosha_goods set stock_count = stock_count - 1 where g 阅读全文
posted @ 2020-02-21 23:37 lovejune 阅读(1110) 评论(0) 推荐(0) 编辑
摘要: 利用服务端缓存技术,将页面和对象缓存在redis中,可以减少时间浪费,内存开销。但在每次请求的过程中,仍然会有大量静态资源的请求和返回。 使用静态页面技术,页面不必要使用页面交互技术,比如thymeleaf,jsp等。而是写一个纯的html静态页面,然后在页面端通过js的ajax请求,获得数据,并通 阅读全文
posted @ 2020-02-21 23:25 lovejune 阅读(475) 评论(0) 推荐(0) 编辑
摘要: 页面缓存的原理: 普通要想生成一个页面,需要该页面在springboot的templates目录下,然后通过springboot的内部渲染,视图解析器将页面渲染回客户端,这中间会花费很长的时间。 但如果将整个页面的代码转化为字符串,存到redis中,当请求一个页面时,通过ResponseBody注解 阅读全文
posted @ 2020-02-21 19:28 lovejune 阅读(331) 评论(0) 推荐(0) 编辑