自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 秒杀图解

类似于秒杀这类的业务,一个主要的特点就是短时间内流量的突增整体的一个原则就是尽量减少不必要的请求进入到我们的数据库或者延缓请求到达数据库的过程系统每日PV大约是3百万,UV大约在50万nginx层作为请求的入口,我们主要是用来做反向代理和负载均衡,把大量的请求分发到不同的服务器减轻单独某台服务器的压力,此外我们还在nginx层做了流控限制作为一个流量网关,把检测到的恶意请求的ip地址做为黑名单ip给屏蔽掉在流量网关和业务系统之间采用了springCloudGatew...

2021-09-25 20:01:25 124

原创 常见数据结构时间复杂度

①、数组数组是是由相同类型的元素(element)的集合所组成的数据结构,分配一块连续的内存来存储。利用元素的下标位置可以计算出该元素对应的存储地址优点:按照索引查询元素的速度很快; 按照索引遍历数组也很方便。缺点:数组的大小在创建后就确定了,无法扩容; 数组只能存储一种类型的数据; 添加、删除元素的操作很耗时间,因为要移动其他元素。②、链表链表是一种递归的数据结构,它或者为空(null),或者是指向一个结点(node)的引用,该节点还有一个元素...

2021-09-25 19:58:00 1801

原创 redis场景常见问题及解决

Redis为什么快参考https://mp.weixin.qq.com/s/I9CZHZu-EgRPSO9DrRKXCw1基于内存实现读写操作都是在内存上完成的2高效的数据结构:不同的数据类型底层使用了一种或者多种数据结构来支撑,目的就是为了追求更快的速度。3单线程模型单线程指的是 Redis 键值对读写指令的执行是单线程。因为 Redis 是基于内存的操作,CPU 不是 Redis 的瓶颈,Redis 的瓶颈最有可能是机器内存的大小或者网络带宽不会因为线程.

2021-09-08 17:17:31 213

原创 mysql记录总结

0814记录Mysql执行流程:读的执行流程1建立连接(Connectors&Connection Pool),通过客户端/服务器通信协议与MySQL建立连接。MySQL 客户端与服务端的通信方式是 “ 半双工 ”。对于每一个 MySQL 的连接,时刻都有一个线程状态来标识这个连接正在做什么2查询缓存(Cache&Buffer),(8.0以后删除了查询缓存)这是MySQL的一个可优化查询的地方,如果开启了查询缓存且在查询缓存过程中查询到完全相同的SQL语.

2021-09-01 17:37:17 116

原创 redis总结

Redis使用场景1 DB缓存抢购秒杀减轻DB服务器压力已经访问过的内容或数据存储起来,当再次访问时先找缓存,缓存命中返回数据。2 提高系统响应将数据缓存在Redis中,也就是存在了内存中。3 做Session分离将登录成功后的Session信息,存放在Redis中,这样多个服务器(Tomcat)可以共享Session信息。4 做分布式锁setNX,Redisson,redLock5 做乐观锁Redis可以实现乐观锁 watch + incrredis数据类型

2021-08-28 14:39:29 159

原创 开发过程问题总结

问题:redolog满了,会如何处理?1、满了之后,会暂停新事物的提交,并引发报错2、当留出空间后,才能继续执行补充:通常redo log 的大小是4GB以上 redo 是有大小限制的,不是磁盘的容量,环形结构的一块空间 redo log 在高版本后,可支持到更大,可通过修改参数,进行设定,几百G的空间也可以的。 redo log 不会自动分割binlog 会分割项目进行过程的测试环境:1、dev 开发环境:开发、联调、单测、测试接口2、test 测试环境:提测、

2021-08-21 13:02:34 408

原创 java框架(待补充)

1.Spring常用注解@Service、@Repository、@Component、@Autowired、@Transactional@Autowired默认时根据类型注入的(bytype),@Resouce默认时根据设置的名称注入的(byname)2.自定义注解应用场景检验(统一登录校验)日志(解耦)是否启动动态数据读写分离是否实现策略模式统一操作固定传递参数(是否必传、正则校验)2.bean加载过程(bean的生命周期)?1.首先容器启动后,会

2021-08-14 18:25:10 110

原创 开发过程问题总结

问题一:多版本迭代,如何兼容老的接口多个版本迭代后,如何兼容老的接口。接口设计的一些准则和注意事项。开放给的三方厂商太多了。业务又需要迭代不清楚什么时候改老接口,什么时候做个新版本的接口对于这种老接口,可能的场景是:属于祖传代码,经过很多人的维护,外部系统具体哪个还在使用,不好评估。所以需要考虑改动对外的影响。接口直接通过 v1 v2这样的版本标识处理controller/v1/……controller/v2/……在请求参数中通用传入version参数控制版本场景例子:

2021-08-14 18:19:22 132

原创 ThreadLocal异常原因和常用的锁归纳

ThreadLocal的内存泄露的原因分析以及如何避免:不再会被使用的对象或者变量占用的内存不能被回收,就是内存泄露。强引用与弱引用强引用,使用最普遍的引用,一个对象具有强引用,不会被垃圾回收器回收。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不回收这种对象。如果想取消强引用和某个对象之间的关联,可以显式地将引用赋值为null,这样可以使JVM在合适的时间就会回收该对象。弱引用,JVM进行垃圾回收时,无论内存是否充足,都会回收被弱引用

2021-08-04 19:44:27 660

原创 线程并发梳理

线程并发理论线程安全原子性原子性就是指对数据的操作是一个独立的、不可分割的整体。换句话说,就是一次操作,是一个连续不可中断的过程,数据不会执行的一半的时候被其他线程所修改。保证原子性的最简单方式是操作系统指令,就是说如果一次操作对应一条操作系统指令,这样肯定可以能保证原子性。可见性要理解可见性,需要先对JMM的内存模型有一定的了解,JMM的内存模型与操作系统类似每个线程都有一个自己的工作内存(相当于CPU高级缓冲区,这么做的目的还是在于进一步缩小存储系统与CPU之间.

2021-07-28 18:31:05 139

原创 JVM知识体系

目录第一部分JVM整体架构1 类加载器子系统1.1类加载过程1.2 类加载器种类1.3 加载机制2 JVM内存结构2.1内存结构3 JVM执行引擎第二部分 垃圾收集1 JVM内存分配与回收1.1 对象优先在Eden区分配1.2 大对象直接进入老年代1.3长期存活的对象将进入老年代2 如何判断对象可以被回收2.1 引用计数法2.2 可达性分析算法2.3 finalize()方法最终判定对象是否存活2.4如何判断一个类是无用的类3.

2021-07-21 19:41:01 154

原创 Mysql体系化学习总结

第一部分架构原理第一节体系架构:MySQL Server架构自顶向下大致可以分1网络连接层、2服务层、3存储引擎层和4系统文件层1.网络连接层提供与MySQL服务器建立的支持2.服务层服务层是MySQL Server的核心,主要包含1.系统管理和控制工具2.连接池3.SQL接口4.解析器5.查询优化器6.缓存六个部分3.存储引擎层负责MySQL中数据的存储与提取,与底层系统文件进行交互4.系统文件层该层负责将数据库的数据和日志存储在文件系统之上,并完成..

2021-07-17 18:44:53 534

空空如也

空空如也

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

TA关注的人

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