自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (5)
  • 收藏
  • 关注

转载 ElasticSearch概述

Elasticsearch简介*Elasticsearch是一个分布式、高扩展、高实时的搜索与数据分析引擎。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言

2021-10-26 21:41:41 200

原创 ElasticSearch的由来

聊聊Lucene的创始人本故事内容来自公众号:酸枣课堂我们在了解ElasticSearch的时候,必将绕不开Lucene。因为ElasticSearch是基于Luence开发的。因为Luence又是Doug Cutting开发的,所以我们先了解一下Doug Cutting这个人。聊聊Doug Cutting大数据就两个问题:存储+计算。1998年9月4日,Google公司在美国硅谷成立。正如大家所知,它是一家做搜索引擎起家的公司。无独有偶,一位叫D...

2021-10-24 23:10:26 2726 1

原创 Redis错误之:打开RDB文件保存失败

问题描述最近在windows系统下进行开发,所以用到的redis也是windows版本的。因为解压之后便直接使用了,并没有修改redis相关配置。导致redis跑了一段时间过后就会报下面的错误。错误信息# Background saving error[12784] 20 Oct 10:52:32.091 * 100 changes in 300 seconds. Saving...[12784] 20 Oct 10:52:32.136 * Background saving starte

2021-10-20 11:38:11 10997

原创 分布式架构之CAP理论

博客CAP 定理的说明性证明该CAP定理是在分布式系统中的一个基本定理,指出任何分布式系统最多可以有两个以下三个属性。çonsistency 一个vailability Partition宽容本指南将用图片总结吉尔伯特和林奇的规范和 CAP 定理的证明!什么是CAP定理?CAP 定理指出,分布式系统不能同时具有一致性、可用性和分区容忍性。听起来很简单,但保持一致是什么意思?可用的?分区容忍?哎呀,你说的分布式系统到底是什么意思?在本节中,我们将介绍一个简单的分布式系统...

2021-08-06 10:40:42 314

原创 MySQL8.0密码找回与权限刷新

开发日志: 想必大多数开发人员都有外包经验,遇到比较悲催的情况就是,出差忘记带公司电脑,幸幸苦苦好不容易出差回来,结果发现把公司电脑MySQL密码忘记了。直接破防!!!为了生活只好老老实实的百度寻找答案,在这期间难免踩坑甚至要重装MySQL。在这小编整理了一份关MySQL密码找回与权限刷新的教程。MySQL之密码重置坑点1.: 大多数网上教程一般都说修改MySQL的bin目录下的my.ini 文件。然后再my.ini文件最后一行追加下面这行代码。skip-gran...

2021-08-05 16:40:04 1552 3

原创 Java虚拟机之内存模型

前言:我们在学习JVM的内存模型的时候,需要先了解JDK相关的知识作为铺垫。一、 JDK体系结构1、JDK概念图JDK: JDK提供了编译、运行Java程序所需的各种资源和工具;包括Java编译器,Java运行时环境【JRE】;开发工具包括编译工具(javac.exe) 打包工具(jar.exe)等。JRE: 即JAVA运行时环境,JVM就是包括在JRE中,以及常用的JAVA类库等; SDK: SDK是基于JDK进行扩展的,是解决企业级开发的工具包。如JSP、JDBC、EJB等...

2021-06-29 00:29:49 134

原创 分布式常见面试题整理

一、分布式理论: 1. 什么是CAP理论? 2. 什么是BASE理论? 3. 什么是2PC? 4. 什么是3PC? 5. 什么是ZAB协议? 6. 什么是Raft协议? 7. 什么是Paxos算法? 二、Zookeeper: 8. ZooKeeper是什么? 9. Zookeeper怎么保证主从节点的数据同步? 10. Zookeeper为什么能用做注册中心? 11. Zookeeper中有哪些类型的数据节点? 12. Zookeeper中Watc

2021-06-26 01:23:41 4809 1

转载 分布式事务系列三:Saga

前言 Saga是分布式事务领域最有名气的解决方案之一,最初出现在1987年Hector Garcaa-Molrna & Kenneth Salem发表的论文SAGAS里。 Saga是由一系列的本地事务构成。每一个本地事务在更新完数据库之后,会发布一条消息或者一个事件来触发Saga中的下一个本地事务的执行。如果一个本地事务因为某些业务规则无法满足而失败,Saga会执行在这个失败的事务之前成功提交的所有事务的补偿操作。Saga的实现有很多种方式,其中最流行的两种方...

2021-06-26 01:04:45 250

转载 分布式事务系列二:TCC

基于消息的分布式事务处理机制基于消息的分布式事务处理机制可以总结为如下两个阶段:第一阶段:在事务发起方的本地事务中产生消息。在第一篇文章的例子中,是在transaction写入操作的同一个数据库事务中记录消息(消息入队),消息中包含了transaction的相关信息。 第二阶段:消息的消费方提供幂等操作来处理这些消息。这里也分为两种情况。一种是业务自身提供幂等操作,业务在处理时通过一些业务标识字段来判断某一条消息是否已经被处理过。另外一种情况,业务自身不支持幂等操作,则可以引入一个去重表来实现幂

2021-06-26 00:47:32 159

转载 分布式事务系列一:BASE,一种ACID的替代方案(eBay分布式事务解决方案)

前言对于很多业务系统来说,整个系统其实是由多个独立的系统构成的。这些独立的系统由各自的研发小组进行研发和维护,数据往往也存储在各自独立的数据库中。我们以下单流程为例。下单往往涉及到订单系统、库存系统、优惠券管理系统、支付系统、物流系统、用户系统等。我们希望下单操作对于这些系统的更新,要么全部成功提交;如果有些步骤失败了,那么所有的改动都能够回滚到最初状态。这个就是我们今天要讨论的分布式事务问题。本文是分布式事务系列文章的第一篇。主线源自eBay架构师 Dan Pritchett 2008 年

2021-06-26 00:28:49 322

转载 MySQL索引~B+树原理解析

前言索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。索引最形象的比喻就是图书的目录了。注意这里的大量,数据量大了索引才显得有意义,如果我想要在 [1,2,3,4] 中找到 4 这个数据,直接对全数据检索也很快,没有必要费力气建索引再去查找。B+树等算法在线可视化演示这是旧金山大学做的一个在线算法可视化工具。地址:https://www.cs.usfca.edu/~galles/visualization/BPlusTree.html目录页地址:https://..

2021-06-25 17:21:46 430

原创 深度讲解微服务架构中的负载均衡算法

负载均衡前身面对大量用户访问、高并发请求,海量数据,可以使用高性能的服务器、大型数据库,存储设备,高性能Web服务器,采用高效率的编程语言比如(Go,Scala)等,当单机容量达到极限时,我们需要考虑业务拆分和分布式部署,来解决大型网站访问量大,并发量高,海量数据的问题。从单机网站到分布式网站,解决访问统一很重要的区别是业务拆分和分布式部署,将应用拆分后,部署到不同的机器上,实现大规模分布式系统。分布式和业务拆分解决了,从集中到分布的问题,但是每个部署的独立业务还存在单点的问题和访问统一入口问题

2021-06-24 03:16:48 977

原创 Java并发线程池原理解析

线程1. 概述线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。2. 生命周期:当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)五种状态。尤其是当线程启动以后,它不能一直“霸占”着CPU独自运

2021-06-23 22:56:12 512

原创 解密高并发系统实战内幕

曝光大厂面试官喜欢问的高并发问题秒杀系统核心业务架构设计剖析实操:从手把手写代码实现高并发库存扣减redis锁底层实现原理以及应用lua脚本jiu

2021-06-19 02:18:47 329

原创 Mybatis源码分析与技术原理

前言Mybatis框架属于ORM框架,全称(Object Relational Mapping)。用于实现面向对象main车工语言里不同类型系统之间的数据之间的转换。我们在开发中Mybatis框架通常作为Java链接MySQL的工具,那么mytais底层是如何查询数据库的?又是如何将数据库对应的类型(varchar)转换为对应的Java基本类型的?下面我们来介绍mybatis的底层原理。一、Mybatis是什么?MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过...

2021-06-15 23:07:48 1281 2

原创 SpringBoot自动装配原理及自定义start开发

SpringBoot自动装配原理及自定义start开发前言: 大部分互联网公司都是使用SpringBoot,或SpringCloud作为开发框架。在我们开发中,很可能遇到要开发公共组件提供给其他人调用的场景。随着项目版本的迭代,很可能把公共组件打成jar包。我们在自己的业务类中通过使用@Autowired注解来调用jar包中的公共类,公共方法等。但是如果公共给组件要作升级,也就是二次开发,导致以前定义的一些类名,方法名等发生改变,那么也要更改对应业务代码所依赖jar包的相关代码。这就会造...

2021-06-14 02:15:59 450

原创 SpringMVC零配置及内嵌tomcat实现Spring boot

Spring boot零配置及内嵌tomcat前言:我们在使用Spring MVC的时候通常会配置一堆.XML的配置文件,这会对项目的维护造成很大的不便,但是在Spring官网中,已经提供了Spring MVC的零配置的方式,因为网上教大家的Spring MVC大多数都是要配置.XML文件的,下面我们来看看Spring零配置并且内嵌tomcat是如何实现的。Spring MVC定义:Spring Web MVC是建立在Servlet API上的原始Web框架,从一开始就包含在Spring框.

2021-06-12 16:36:40 1390

原创 Spring中依赖注入底层原理与源码分析

Spring中依赖注入底层原理与源码分析前言:Spring框架是一套非常成熟的框架,同时也被大多数开发者所喜欢。在Spring中我们通常用到@Autowired注解,也就是我们常说的依赖注入。那么本篇文章带大家一起分析@Autowired注解的底层逻辑是什么,它是如何帮助Spring实现依赖注入的。这也是面试中常问到的。下面我们开具体分析。Spring中到底有几种依赖方式?在了解Spring中依赖注入底层原理之前先问大家一个问题,那就是Spring中到底有几种依赖方式?网上有的说3种,有的说5种

2021-06-10 17:37:26 865 1

原创 Spring之手撕框架核心逻辑

Spring之手撕框架核心逻辑前言:相比大多数开发者都用过Spring,但是由于工作性质原因一直没有时间或经历去研究和整理Spring底层到底是怎么运作的,核心逻辑又是什么。下面小编通过手写一套简单的Spring框架底层逻辑,帮助大家更好的认识Spring,也为想要冲击大厂的小伙伴提供一些文章资料。相关项目资源已经上传。下载地址:https://download.csdn.net/download/qq_45065241/19496977?spm=1001.2014.3001.5503手写实

2021-06-09 16:22:30 163 1

原创 Spring中常用接口的简单使用

Spring中常用接口1.Aware接口1.1BeanNameAware接口该接口可以对bean的生命周期进行一个回调的作用,例如:在Spring启动后,去回调bean的生命周期从而得到bean对象的beanName。我们开发者可以根据业务场景对beanName进行修改。代码如下:@Componentpublic class AService implements BeanNameAware { @Autowired private BService bServ.

2021-06-08 00:16:47 512

原创 Spring的循环依赖原理解析

Spring的循环依赖原理解析1.什么是循环依赖什么是循环依赖,很简单就是A对象依赖了B对象,B对象依赖了A对象。// A依赖了Bclass A{ public B b;}// B依赖了Aclass B{ public A a;}那么循环依赖是个问题么?很显然如果不考虑Spring,循环依赖显然不是一个问题,因为对象之间相互依赖是一件很正常的事。例如:A a = new A();B b = new B();a.b = b;b.a = a;通过上述代码我..

2021-06-07 17:17:05 333

原创 Spring之bean的生命周期

Spring之bean的生命周期前言Spring作为当前Java最流行、最强大的轻量级框架,受到了大多数开发者的热烈欢迎。相必大多数小伙伴在面试的时候都会问道Spring中bean的生命周期是怎样的。所以准确的了解Spring Bean的生命周期也成为了必备知识点。狭义层面的bean的生命周期详解在我们学习Spring的bean的生命周期的时候,我们要知道什么是bean。bean的定义:被称作 bean 的对象是构成应用程序的支柱也是由 Spring IoC 容器管理的。bean 是

2021-06-05 18:30:23 273 1

原创 Spring整合Mybatis底层原理

Spring整合Mybatis底层原理前言:想必学习过Spring框架的小伙伴,知道在Spring项目中在Controller类中获取Service层的对象,我们只需在Controller类中运用@Autowired注解将Service层的对象注入进来即可,但是Service层的我们基本都是访问数据库的接口,都是运用mybatis框架去访问数据库。那么这两个框架本身是如何联系起来的?本文主要介绍Spring整合Mybatis的核心底层原理、@MapperScan注解的底层工作原理、MapperSca

2021-06-04 01:02:00 410

原创 HashMap与ConcurrentHashMap面试要点

HashMapHashMap底层数据结构JDK7:数组+链表JDK8:数组+链表+红黑树(看过源码的同学应该知道JDK8中即使用了单向链表,也使用了双向链表,双向链表主要是为了链表操作方便,应该在插入,扩容,链表转红黑树,红黑树转链表的过程中都要操作链表)JDK8中的HashMap为什么要使用红黑树?当元素个数小于一个阈值时,链表整体的插入查询效率要高于红黑树,当元素个数大于此阈值时,链表的整体查询效率要低于红黑树。此阈值在HashMap中为8。JDK8中的HashMap什么时候将链

2021-06-03 01:33:23 301

原创 JDK1.8中的ConcurrentHashMap

JDK1.8中的ConcurrentHashMap前言在JDK1.7中的ConcurrentHashMap中我们了解到ConcurrentHashMap采用分段锁的机制,实现并发的更新操作,它首先将数据分成一段一段地存储,然后给每一段数据配一个锁,当一个线程占用锁访问其中一段数据时,其他段的数据也能被其他线程访问,锁分段技术的使用大大了提高并发访问效率。底层由ReentrantLock+Segment+HashEntry组成。然而在jdk1.8中的实现已经抛弃了Segment分段锁机制,利用CAS+

2021-05-30 18:46:40 1764 1

原创 JDK1.8中的HashMap

JDK1.8中的HashMap相比JDK1.7中的HashMap的最大区别就是在JDK1.8中HashMap中的数组加链表结构变为了数组加红黑树。问题1:为什么要将1.7中HashMap的链表结构改为红黑树?在JDK1.6,JDK1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时也就是链表过长,那么通过key值依次查找的效率较低。而JDK1.8中,HashMap采用位桶+链表+红黑树实

2021-05-25 23:29:33 1884

原创 JDK1.7中的ConcurrentHashMap

JDK1.7中的ConcurrentHashMap前言:通过了解HashMap我们知道HashMap时线程不安全的,但是HashTable虽然采用 public synchronized put(key,value)的上锁形式来保证线程安全,显然这样做的效率是非常慢的。假设有两个线程,线程1和线程2,线程1想在table[1]的位置put一个值,线程2想在table[3]的位置同样也put一个值,两个线程同时put显然不会造成脏数据,但是hashTable只能进来一个线程,也就是线程1执行完毕后再去

2021-05-23 00:12:47 765

原创 JDK1.7中的HashMap

jdk1.7中的HashMapHashMap:底层是数组加链表ArrayList:底层是数组问题1:为什么HashMap插入时会根据key插入?首先对比ArrayList的新增方法,假设我们新增没有设置索引下标,那么ArrayList进行新增时会默认从0开使依次递增。这样做插入效率是比较高的。那么为什么HashMap没有这样做呢?//add方法 public boolean add(E e) { ensureCapacityInternal(size + 1.

2021-05-21 16:39:30 602 3

EchartsExport.rar

Java后端生成echarts图片并将图片存入word文件中。

2021-09-28

Seckill-System.rar

SpringBoot集成redis实现分布式锁。通过setnx实现分布式锁。

2021-06-19

SpringBootProject.rar

分别通过spring.factories,@Import,自定义注解的方式,分别实现SpringBoot的自动装配

2021-06-14

SpringTomcat.rar

手写springboot(内置tomcat的手写,以及内置springmvc的手写)

2021-06-13

StudyIdeaProject.rar

手敲Spring框架核心逻辑,包括扫描、解析Class、beanDefinition定义、bean的创建过程、属性赋值、初始化等等。

2021-06-09

空空如也

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

TA关注的人

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