自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 其它中间件

微服务微服务拆分服务拆分策略创建微服务架构的策略之一就是采用业务能力进行服务拆分根据子域进行拆分拆分的指导原则1、单一职责、高内聚低耦合:简单来说一张表划分为一个服务2、服务粒度适中:服务不要太细(有的团队甚至一个接口一个服务)3、 以业务模型切入:比如产品,用户,订单为一个模型来切入4.、演进式拆分:刚开始不要划分太细,可以随着迭代过程来逐步优化5.、避免环形依赖与双向依赖:尽量不要做服务之间的循环依赖改,需要调整的类应该都在这个包之内。补充几点实践的:1、服务分层,将

2021-04-22 20:57:57 268

原创 ssm

mysql为什么选择B+树作为索引结构(必考)Inodb存储引擎 默认是 B+Tree索引;MyISAM 存储引擎 默认是Fulltext索引;Memory 存储引擎 默认 Hash索引;B树:有序数组+平衡多叉树;B+树:有序数组链表+平衡多叉树;B+树(叶节点保存数据,其他的节点 全部存放索引),数据库索引采用B+树的主要原因是B树在提高了磁盘IO性能的同时并没有解决元素遍历的效率低下的问题。正是为了解决这个问题,B+树应运而生。 B+树只要遍历叶子节点就可以实现整棵树的遍历。而且在数据库

2021-04-22 18:40:44 219

原创 Java基础

多线程创建线程有哪几种方式?①. 继承Thread类创建线程类定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。创建Thread子类的实例,即创建了线程对象。调用线程对象的start()方法来启动该线程。②. 通过Runnable接口创建线程类定义runnable接口的实现类,并重写该接口的run()方法,该run()方法的方法体同样是该线程的线程执行体。创建 Runnable实现类的实例,

2021-04-22 18:39:54 144

原创 补充1.0

spring解释一下什么是 aop?AOP(Aspect-Oriented Programming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对

2021-04-22 18:38:51 308

原创 rocketmq/redis/mysql/mabits

消息队列应用场景在实际应用中常用的使用场景:异步处理、应用解耦、流量削锋和消息通讯四个场景场景一:异步处理场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种 1.串行的方式;2.并行方式串行方式:将注册信息写入数据库成功后,发送注册邮件,再发送注册短信。以上三个任务全部完成后,返回给客户端。并行方式:将注册信息写入数据库成功后,发送注册邮件的同时,发送注册短信。以上三个任务完成后,返回给客户端。与串行的差别是,并行的方式可以提高处理的时间。假设三个业务节点每个使用50毫秒钟,不

2021-04-17 12:11:26 470

原创 rocketmq

rocketmqRocketMQ的核心组件概念如下:Producer:生产发送消息Consumer:从Broker拉取消息并进行消费Broker:存储Producer发送过来的消息是RocketMQ的核心负责消息的发送、接收、高可用等(真正干活的)需要定时发送自身情况到NameServer,默认10秒发送一次,超时2分钟会认为该broker失效。NameServer:为Producer或Consumer路由到Broker集群架构中的组织协调员收集broker的工作情

2021-04-09 10:38:57 183

原创 redis

redis基础知识点redis 是什么?Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。为什么要用 Redis /为什么要用缓存用缓存,主要有两个用途:高性能、高并发。高性能假设这么个场景,有个操作,一个请求过来,耗时 600ms 操作 mysql查出来一个结果,但是这个结果可能接下来几个小时都不会变了,或者变了也可以不会立即反馈给用户。那么此时咋办?将折腾 600ms 查出来的结果放入缓存里,一个

2021-04-08 14:41:49 304

转载 springcloud

springcloud一、 网站的架构演变​ 网络架构由最开始的三层mvc渐渐演变。传统的三层架构后来在互联网公司让几百人几千人同时开发一个项目已经变得不可行,并且会产生代码冲突的问题。基于SOA面向服务开发的架构,渐渐产生了微服务架构。微服务的架构的特点就是项目拆分成各个子项目,进行解耦操作,提供外部访问接口,属于敏捷开发,其实也可以视为面向接口开发。一旦有了多个子项目,比如把淘宝网的订单系统和会员系统分开来看,就回产生如何管理接口、负载均衡、高并发情况下怎么限流断路等问题。那么这就有Spr

2021-04-08 14:38:42 152

原创 补充2.0

为什么平衡二叉树(或红黑树)不适合作为索引?索引是存在于索引文件中,是存在于磁盘中的。因为索引通常是很大的,因此无法一次将全部索引加载到内存当中,因此每次只能从磁盘中读取一个磁盘页的数据到内存中。而这个磁盘的读取的速度较内存中的读取速度而言是差了好几个级别。注意,我们说的平衡二叉树结构,指的是逻辑结构上的平衡二叉树,其物理实现是数组。然后由于在逻辑结构上相近的节点在物理结构上可能会差很远。因此,每次读取的磁盘页的数据中有许多是用不上的。因此,查找过程中要进行许多次的磁盘读取操作。而适合作为索引的结构应

2021-04-08 14:23:22 131

原创 买卖宝

项目多线程业务异步实现开启异步操作,用@EnableAsync在启动类注解对应的异步方法上添加注解@Async 即表示该方法异步执行商品压入Redis缓存(并发超卖问题解决)解决超卖问题,可以利用Redis队列实现,给每件商品创建一个独立的商品个数队列,例如:A商品有2个,A商品的ID为1001,则可以创建一个队列,key=SeckillGoodsCountList_1001,往该队列中塞2次该商品ID。每次给用户下单的时候,先从队列中取数据,如果能取到数据,则表明有库存,

2021-04-08 14:22:26 867

空空如也

空空如也

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

TA关注的人

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