自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring中的bean线程是否安全

Spring中的bean线程是否安全Spring容器中的Bean大致分为5个范围singleton:默认(大多数的默认),每个容器中只有一个Bean实例prototype:每一个bean请求提供一个实例request:为每一个网络请求创建一个实例,在请求完成之后,bean会失效并被垃圾回收(几乎不用)。session:每个session中有一个bean实例,session过期,be...

2020-04-05 17:46:13 403

原创 SpringIOC、AOP原理极简概念入门

Spring IOC/AOP原理极简概念入门1、原始tomcat+servlet的编码原理2、Spring IOC原理总结:1、tomcat在启动的时候,会启动Spring的容器2、spring的容器根据xml的配置或者注解,实例化bean对象,再根据xml配置或者注解,对bean对象之间的引用关系进行依赖注入(一个bean依赖了另一个bean)3、底层通过反射技术,直接根据你...

2020-04-05 17:45:22 184

原创 Dubbo底层架构原理(极简入门)

Dubbo底层架构原理(极简入门)服务消费者动态代理:Proxy–生成动态代理对象负载均衡:Cluster,负载均衡,故障转移通信协议:Protocol,filter机制,http、rmi、dubbo等协议不同的网络通信协议会以不同的请求格式,将请求发送出去信息交换:Exchange,Request和Response对于你的协议的格式组织好的请求数据,需要进行一个封装,Re...

2020-04-05 17:44:10 490

原创 如何设计一个高并发系统(入门版)?

如何设计一个高并发系统(入门版)?1、技术总览系统拆分缓存MQ分库分表读写分离ElasticSearch2、介绍2.1、系统拆分使用dubbo将一个系统拆分为多个子系统,然后每个系统连一个数据库,这样本来就一个库,现在多个数据库。2.2、缓存:redis缓存高并发读场景最为常用,都是读多写少,在数据库和缓存里都写一份,然后读请求大量的进入缓存。2.3、M...

2020-03-24 18:09:58 289

原创 关于分库分表那些事

关于分库分表那些事1、 为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?有哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?如何对数据库如何进行垂直拆分或水平拆分的?1、为什么要分库分表:1.1、分库:一个库一般最多支撑到并发 2000,一定要扩容了,而且一个健康的单库并发值你最好保持在每秒 1000 左右,不要太大。那么你可以将一个库的数据拆分到多个库...

2020-03-24 18:04:51 174

原创 Elastic Search原理知识点梳理

Elastic Search原理知识点梳理1、基础组成1.1 Node 与 ClusterElastic 本质上是一个分布式数据库,允许多台服务器协同工作,每台服务器可以运行多个 Elastic 实例。单个 Elastic 实例称为一个节点(node),一组节点构成一个集群(cluster)。1.2、Index:基本单位Elastic 会索引所有字段,经过处理后写入一个反...

2020-03-23 20:37:36 1723

原创 Lucene极简入门

Lucene极简入门1、为什么有Lucene1.1、数据量小的原始搜索:依靠SQL语句直接检索数据库1.2、数据量巨大时应用Lucene方案:数据库就变成了索引库,我们使用Lucene的API的来操作服务器上的索引库。这样完全和数据库进行了隔离 。2、数据查询方法1、顺序扫描描述:带着关键字,一条一条的比较,逐字匹配,直到找到为止缺点:查询效率低(慢), 随着数...

2020-03-22 21:50:11 135

原创 Dubbo分布式系统框架知识点流程化总结

Dubbo分布式系统框架知识点流程化总结1、为什么要进行系统拆分?如何进行系统拆分?拆分后不用dubbo可以吗?拆分系统是为了提高复杂系统团队的开发效率核心意思就是根据情况,先拆分一轮,后面如果系统更复杂了,可以继续分拆可以不用,那就基于spring mvc,利用http接口进行通讯,但是在负载均衡上、超时重试上等等做不来。dubbo 说白了,是一种 rpc 框架,就是说本地就是进行...

2020-03-22 21:43:36 154

原创 redis原理快速入门知识点总结

redis原理快速入门知识点总结1、 项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果?为什么用缓存?1、高性能: 一些需要复杂操作耗时查出来的结果,且确定后面不怎么变化,但是有很多读请求,那么直接将查询出来的结果放在缓存中,后面直接读缓存就好 。直接读缓存就会快很多。2、高并发: mysql 是重型数据库(基于磁盘的),不能承受高并发的。mysql 单机...

2020-03-21 19:21:03 261

原创 MQ技术和其技术类型知识点流程化大总结

MQ技术和其技术类型面试点流程化总结1.为什么使用消息队列?核心的有 3 个:解耦、异步、削峰。解耦:不使用MQ: A 系统跟其它各种乱七八糟的系统严重耦合,A 系统产生一条比较关键的数据,别的很多系统都需要 A 系统将这个数据发送过来。A 系统要时时刻刻考虑 BCDE 四个系统如果挂了该咋办?要不要重发,要不要把消息存起来?使用MQ进行解耦: A 系统产生一条数据,...

2020-03-14 22:32:35 265

原创 Mysql索引和引擎快速入门

Mysql架构:bin log:存在于mysql的server层,用与mysql的主从复制1.索引数据结构:二叉树:红黑树:大数据范围树的高度不可控Hash表:对索引进行一次hash运算就能得到数据的磁盘文件指针,不支持范围查找B-Tree:节点大小16k举例:max.dgree=4B+Tree:1、节点大小16k,每个非叶节点1170元素2、树高不会超...

2020-03-12 18:47:51 115

原创 乐观锁和悲观锁

乐观锁和悲观锁乐观锁:什么是乐观锁: 总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据。场景: 乐观锁适用于写比较少的情况下(多读场景)实现方案:可以使用版本号机制和CAS算法实现版本号机制(步骤):一般是在数据表中加上一个数据版本号version字段,表示数据被修改的次数当数据被修改...

2020-03-12 18:35:56 89

原创 ConcurrentHashMap(并发性)面试知识点总结:

ConcurrentHashMap(并发性)面试知识点总结:1.HashTable怎么实现线程安全?以及为什么效率低下HashTable在进行put和get的时候会对整个hash表上锁(synchronized),虽然能保证线程安全,但是效率低下。2. Hashtable 是不允许键或值为 null ?Hashtable使用的是安全失败机制(fail-safe),这种机制会使你此次读...

2020-03-12 17:00:44 795

原创 HashMap面试知识点总结分类

HashMap面试知识点总结:1.数据结构中的HashMap?能跟我聊聊他的结构和底层原理么?首先在java1.8以前用的是单纯的数组加链表的结构,进入Java1.8以后就是用数组+链表+红黑树的数据结构加入红黑树的与原因:1.8以前的HashMap中使用的是数组+链表,但是由于哈希函数不可能百分百让元素均匀分布,这就会造成HashMap中有大量的元素会存入同一个index(桶)下,这...

2020-03-11 23:24:36 167

原创 java7的HashMap造成死循环的通俗化讲解

java7的HashMap造成死循环的通俗化讲解在JDK1.7及以前的版本,如果在并发环境中使用HashMap保存数据,有可能会产生死循环的问题。产生这个问题是因为JDK1.7及以前的版本中,HashMap扩容采用的是头插入,1.8做的改进是采用尾插法,所以不会造成死循环的问题。首先,来看1.7扩容的代码://进行扩容时方法 void resize(int newCapacity) ...

2020-03-11 20:36:00 675

原创 TCP的三次握手和四次挥手的通俗化解释

TCP的三次握手和四次挥手TCP的三次握手的简单过程:1-30-服务器进程在创建的时候就进入listen状态,随时准备接受客户端请求(前置)1-首先客户端向服务器发送连接请求(SYN),同时客户端主动进入syn_send(同步已发送)状态–半打开状态。2-服务器接收到请求之后,进行自身确认请求+发出确认报文(syn+ack),这是两个动作合并成了一个,同时,服务器被动进入syn...

2020-03-10 21:57:31 183

原创 什么是Redis?怎么用的?

NOSQL数据库-Redis简介NOSQL的必要性:High performance - 对数据库高并发读写的需求Huge Storage - 对海量数据的高效率存储和访问的需求High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求NOSQL的特点:易扩展 :一个共同的特点都是去掉关系数据库的关系型特性...

2020-03-10 16:55:13 136

原创 Http协议简介

Http协议简介http协议是用于客户端和服务器端通信的。请求访问文本或图片等资源的一方,我们叫做客户端(Client);负责接收,提供响应的一方称为服务器端(Server)http工作原理:客户端连接web服务器==》发送http请求==》服务器接收请求并返回http响应==》释放tcp连接==》客户端浏览器解析HTML内容。特点http协议是无状态协议,每次请求独立无联系,...

2020-03-09 22:09:21 175

原创 1.Mysql事务及锁机制总结

1.Mysql事务及隔离级别事务的特点:原子性:一荣俱荣,一辱俱辱一致性:比如转账前后账户金额总额保持不变,前后状态都是 一 致性状态隔离性:并发执行的事务不会相互影响,多个用户向同一个账户转账,要保证与按先后次序转账的结果是一样的持久性:事务一旦提交,就会持久化,不会因为故障变化。数据库系统通过并发控制技术和日志回复技术完成事物的完整性并发控制技术:保证事...

2020-03-08 22:02:51 175

原创 什么是fastDFS:

什么是fastDFS:​ fastDFS是一个底层使用C语言编写并且开源的, 分布式文件系统作用:​ 可以统一管理存储服务器集群, 统一管理存储读取文件.fastDFS原理(工作流程):​ fastDFS一共分为三部分, client客户端(我们的项目), trackerServer管理端, storageServer存储端1、client客户端(我们的项目):​ ...

2020-03-07 12:51:05 381

原创 JVM基础框架整理笔记

JVM结构:对象头:运行整体结构:类加载之后进入方法区方法区中的静态变量如果是对象,那么他放的是指向堆中的对象的地址。*打破双亲委派机制:tomcat:为了做类的隔离热部署:为了做类的隔离自己写类加载器线程底层结构:1、方法区(元空间):1.1、静态变量+常量+类信息(构造函数和接口定义)+运行时...

2020-03-07 11:13:05 150

原创 算法时间复杂度总结(简单易记)

算法时间复杂度总结(简单易记)

2020-01-09 22:01:01 1737

原创 leetcode刷题笔记_数组_移除指定数组元素(java)

leetcode刷题笔记_数组_移除指定数组元素(java)

2020-01-08 19:28:28 167

原创 Mybatis小知识_<typeAliases></typeAliases>标签作用

Mybatis小知识_<typeAliases></typeAliases>标签作用

2020-01-07 20:55:07 1047

原创 leetcode刷题笔记_数组_删除排序数组重复项(java)

leetcode刷题笔记_数组_删除排序数组重复项(java)public class removeDuplicates { public static void main(String[] args) { removeDuplicates removeDuplicates=new removeDuplicates(); int[] nums = new ...

2020-01-07 13:32:53 176

原创 leetcode刷题笔记_数组_两数之和(java)

leetcode刷题笔记_数组_两数之和

2020-01-06 11:25:04 170

空空如也

空空如也

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

TA关注的人

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