自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

馬克兒的私人博客

一点点积累 一点点进步

  • 博客(120)
  • 收藏
  • 关注

原创 Marco‘s Java【ByteBudy字节码与Spring AOP共用造成ClassNotFound】

ByteBudy字节码与Spring AOP共用造成ClassNotFound

2023-02-09 10:43:38 567

原创 Marco‘s Java【Spring Mono Return 处理流程源码分析】

关于SpringBoot中Response返回Mono类型的处理流程源码分析

2022-03-23 17:23:01 1427

原创 MybatisPlus Advanced Guide(MybatisPlus高级功能指南)

MybatisPlus Advanced Guide前言目前,市面大多数公司都会使用MybatisPlus开发,但是遇到一些比较复杂的sql,大家依然会选择xml的方式来书写sql,本文意挖掘MybatisPlus的高级功能,实现相对比较复杂的sql以及sql的自定义化。附:MybatisPlus基础部分的使用方式可以参考官方文档 MybatisPlus文档文章目录MybatisPlus Advanced Guide前言部分实体字段更新及查询查询部分实体字段值更新部分实体字段值自定义SQL链式CU

2020-10-17 15:19:30 617

原创 Marco's Java【面试系列篇之 如何设计缓存系统避免缓存雪崩和击穿】

前言在第一期文章中,我们分析如何使用布隆过滤器来解决缓存穿透的问题,

2020-01-10 00:10:02 193

原创 Marco's Java【面试系列篇之 一文搞懂AbstractQueuedSynchronizer】

前言AbstractQueuedSynchronizer即AQS队列同步器,可能有不少朋友听说过这个名词,但是不了解它的用途、原理,也可能听都没有听说过这个类…(面壁吧…) 但要提到ReentrantLock,那大家应该就不会陌生了。没错!ReentrantLock就是基于AQS实现的,不仅仅是ReentrantLock,还有诸如Lock、Semaphore、CountDownLatch的底层...

2019-12-21 20:33:30 237

原创 Marco's Java【面试系列篇之 面试官:你了解线程池么?讲讲它的原理呗!】

前言或许大家在日常开发中直接使用线程池的场景不会特别多,但是很多开源框架的底层都会使用到它来管理线程,进而降低资源消耗,提高线程的可管理性。因为线程的创建和销毁都是非常耗费系统资源的,如果不妥善的管理线程(例如,我创建了一个线程,但是忘了释放一些资源,那么很可能会造成资源回收不了,同时也带来一些不必要的系统性能损耗),很容易导致系统问题。其实打从一开始接触线程池,我觉得很简单… 因为使用起来没难...

2019-12-01 16:34:44 237

原创 Marco's Java【Oracle数据库基础】

Oracle数据库数据库简单来讲就是一个存放数据的仓库,并存放在计算机中,实现数据的持久化,数据库的中数据要按照一定的格式来存放,并可以实现多个用户的数据共享。Oracle数据库是基于标准SQL语言的数据库产品数据库DataBase包含5部分:数据库管理系统 DataBaseManagementSystem数据库应用系统 DataBaseAplicationSystem数据库管理员 D...

2019-11-05 09:35:04 239

原创 Marco's Java【Eureka篇之Eureka集群搭建及源码解析】

Eureka 来源于古希腊词汇,意为“发现了”。在软件领域, Eureka 是 Netflix在线影片公司开源的一个服务注册与发现的组件,和其他Netflix 公司的服务组件(例如负载均衡、熔断器、网关等) 一起,被Spring Cloud 社区整合为Spring Cloud Netflix 模块。 Eureka 是Netflix 贡献给Spring Cloud的一个框架!Netflix 给Spring Cloud 贡献了很多框架。

2019-11-02 20:51:10 261

原创 Marco's Java【ActiveMQ入门(二) 之 使用Java操作ActiveMQ】

前言前面一节,我们提到ActiveMQ是使用Java编写,并实现了JMS(Java Message Service)的消息中间件,那么如何使用Java来操作ActiveMQ呢?本节我们会通过三种不同的方式来整合ActiveMQ。普通方式整合ActiveMQ首先,创建一个Maven项目并选择依赖的jar包<dependencies> <!-- https://mvnre...

2019-09-19 19:21:48 177

原创 Marco's Java【ActiveMQ入门(一) 之 初识ActiveMQ】

前言ActiveMQ的简介ActiveMQ是Apache所提供的一个开源的消息系统,完全采用Java来实现,因此,它能很好地支持J2EE提出的JMS(Java Message Service,即Java消息服务)规范。JMS是一组Java应用程序接口,它提供消息的创建、发送、读取等一系列服务。JMS提供了一组公共应用程序接口和响应的语法,类似于Java数据库的统一访问接口JDBC,它是一种与厂...

2019-09-19 16:52:48 220

原创 Marco's Java【Solr入门(一) 之 Solr简介及安装】

前言在使用传统数据库(例如Mysql)做模糊查询的时候,相信有经验的朋友都知道,如果使用%content%的方式进行模糊查询,一旦数据量变大,搜索速度会变得很慢,此时可能大家都会想到用索引来解决这个问题。但是,这种模糊查询的方式会走索引么?答案显然是否定的,因为索引有个原则 “最左匹配原则”,而%是不会走索引的,因此该sql语句执行之后会全表扫描,这种方式显然是不可取的… 但有什么办法,既可以...

2019-09-11 22:25:05 161

原创 Marco's Java【Dubbo 之手写Dubbo框架实现远程调用】

前言关于Dubbo入门的网上教程也特别多,因此我没有专门出关于Dubbo的系列博文(主要呢… 也是在忙些工作上的事儿),用Dubbo特别简单,但是想要把Dubbo学好,学精还得花费不少时间的,特别是Dubbo的源码是非常值得研究的!有时间会再出一套关于Dubbo的源码解析,那么本篇博文呢,咱也不讲别的,主要是带各位看看Dubbo最核心的部分,也就是远程调用是如何实现的,如果这个给弄明白了,那么你...

2019-09-11 17:21:27 575

原创 Marco's Java【Zookeeper入门(二) 之 Zookeeper的单机及集群操作】

前言上一节带大家初步认识了一下咱们的 "动物园园长" Zookeeper,大家是不是很想知道 "园长" 是怎么工作,然后管理管理动物园里面的小可爱的呢?那么本节重点会讲到Zookeeper的单机及集群操作,话不多说,咱们就开始吧!Zookeeper单机操作创建节点首先单独开启一个终端,并通过./zkServer.sh start开启Zookeeper服务进程[root@localhost bin]# ./zkServe...

2019-09-01 19:03:09 168

原创 Marco's Java【Zookeeper入门(一) 之 初识 "动物园管理员"】

前言随着互联网技术的发展,企业对计算机系统的计算,存储能力要求越来越高,各大IT企业都在追求高并发,海量存储的极致,在这样的背景下,单纯依靠少量高性能单机来完成计算机,云计算的任务已经无法满足需求了,企业的IT架构逐渐由集中式往分布式过渡。其实到目前为止,大家应该对分布式不陌生了吧,从Nginx到Docker再到Redis,无不渗透着分布式的理念,简单来说分布式就是将一个计算任务分解成若干,并...

2019-08-31 14:50:31 228

原创 Marco's Java【Redis入门(七) 之 Jedis的常规使用】

前言本节内容主要是教大家如何在Java上使用Redis,这两者成功合体之后还有个专门的名词,叫Jedis。主要都是一些API的使用啦,没啥难度,前面的内容只要掌握了,这个问题不大。话不多说,咱们就继续往下看吧~

2019-08-30 19:17:12 200

原创 Marco's Java【Redis入门(六) 之 Redis高可用高并发集群配置】

前言中心化和去中心化中心化意思是所有的节点都要有一个主节点缺点:中心挂了,服务就挂了中心处理数据的能力有限,不能把节点性能发挥到最大特点:就是一个路由作用去中心化特点:去掉路由,我自己来路由以上通俗的就是中心化:几个经过认证的嘉宾在‘讲话’,所有其他人在听。去中心化:每个人都可以‘讲话’,每个人都可以选择听或者讲。Redis集群的执行流程分析2.1,哈希槽说明Re...

2019-08-30 18:54:14 231

原创 Marco's Java【Redis入门(五) 之 Redis的Master/Slave主从复制及原理】

前言1,什么是复制Redis 的读并发量太大怎么办?单机版的Redis 挂掉怎么办?需要写并发又要安全 在redis 3.0 后,官方发布了集群方案1.1,官网说明1.2,行话行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主2,有什么作用读写分离容灾恢复3,怎么使用3....

2019-08-29 22:01:48 478

原创 Marco's Java【Redis入门(四) 之 Redis的持久性详解】

前言Redis的持久性说到持久性,就会想到传统的关系型数据库,例如Mysql中的概念ACID,ACID中的D(durability)说的就是数据的持久化特性,一旦数据录入到物理磁盘上就无法改变,当然Redis的持久性并不是完全是这个意思,但相同的是Redis的持久性同样就是通过将数据保存到文件,也就是物理磁盘上来实现的。咱们再来看看官网对于Redis的持久性的解释,主要提到了了两个概念,一个...

2019-08-29 21:09:37 186

原创 Marco's Java【Redis入门(三) 之 Redis数据类型及用法】

前言在啃完上节的Redis的配置文件redis.conf这块 “硬石头” 之后,接下来,咱们继续啃Redis数据类型…Redis 相对于 Memcache、Tokyo Tyrant 等其他的缓存产品,有一个很明显的优势,就是Redis身为键值型数据库不仅仅只是存储key-value的基础类型数据,还提供了诸如list,set,zset,hash等数据结构的存储,可谓是非常强大了!因此本节会针...

2019-08-29 11:58:33 204

原创 Marco's Java【Redis入门(二) 之 Redis的配置文件详解】

前言在介绍完什么是Redis之后呢,本节就要重点解析Redis的配置文件redis.conf,学习一个框架最难受的莫过于学习它的配置文件和记一些如天书般的指令了!但往往这些知识是最关键最重要的,只有熟悉了配置,掌握了Redis的用法,才能为后面分析redis的原理打下基础!而懂Redis的原理和不懂Redis的原理的程序猿,在办公室拿的钞票可就不一样多咯… 所以,咱们贴了头皮也要把这节的内容拿...

2019-08-28 19:20:49 710

原创 Marco's Java【Redis入门(一) 之 Redis简介及安装】

前言相信大家对Redis(Remote Dictionary Server)这个名字并不陌生,关于Redis的相关问题及原理都在面试中大量被提及到,并且各大厂商也都在使用这门技术,比如说我们熟知的微博,脉脉… 等等都离不开Redis。但是可能还有很多初学者对Redis的概念还是懵懵懂懂,不知道Redis具体的用途,以及怎么使用Redis,更不用说Redis的底层实现原理了,因此从本节开始,咱们就...

2019-08-27 16:24:33 160

原创 Marco's Java【Docker入门(三) 之 Docker镜像和容器数据卷】

前言什么是镜像UnionFS(联合文件系统):Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。Union 文件系统是 Docker 镜像的基础。镜像可以...

2019-08-27 10:33:32 356

原创 Marco's Java【Docker入门(四) 之 Dockerfile容器数据卷详解】

前言咱们上节已经接触过Dockerfile并使用Dockerfile创建容器数据卷,但是Dockerfile的作用远远不止如此!因此本节会更深入的了解Dockerfile以及它的诸多使用方式,本节的 "料" 也是相当足哦!

2019-08-26 20:40:42 437

原创 Marco's Java【Docker入门(二) 之 Docker容器及相关操作】

前言前面一节咱们初步的认识了神奇的 “小蓝鲸” Docker,并简单的介绍了容器、镜像等概念,但是很多朋友可能还是很懵,这是正常的,所以本节就先来着重介绍Docker中的容器以及操作容器的相关指令。什么是容器容器镜像是一个软件的轻量级独立可执行软件包,包含运行它所需的一切:代码,运行时,系统工具,系统库,设置。不管环境如何,集装箱化软件都可以运行相同的Linux和Windows应用程序。容器...

2019-08-25 22:10:23 168

原创 Marco's Java【Docker入门(一) 之 带你认识不一样的 "虚拟机" Docker】

前言从本节开始,咱们迎来了又一个新朋友 Docker ,使用过VMware的朋友应该知道,在我们的Windows系统上安装VMware之后可以开启多台虚拟机,每一台虚拟机被初始化之后都会虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程,但是这种方式有几个弊端。其一,虚拟机会占用实际的物理磁盘空间,资源占用多其二,冗余步骤多,每一台虚拟机上都需要安装OS(操作系统)...

2019-08-25 17:23:02 164

原创 Marco's Java【Git入门(四) 之 使用Git远程仓库上传及拉取项目】

前言到目前为止,我们已经掌握了如何使用 “月光宝盒” 进行时光穿梭,对本地的代码库实行版本控制,麻麻再也不用担心我的文件备份或者丢失的问题啦!但是好像到目前为止,只有我一个人在玩单机?没意思… 那我想玩 “多人竞技” 模式咋办?之前我们提到了,Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。怎么分布呢?最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以“克隆”这个...

2019-08-25 15:25:05 840

原创 Marco's Java【Git入门(三) 之 Git分支管理(创建与合并分支)】

前言上一节我们重点分析过Git的工作区、暂存区以及主分支区,主分支区其实就相当于我们的正式版,正式版版本有什么特性呢?很稳定对吧!因此在实际开发中,我们肯定是不能直接将我们修改的内容Commit到主分支上去的吧?大家试想一下,假设我们玩DOTA正式服,游戏已经开始了,正当你Penta Kill的时候,后台在维护DOTA的程序猿一股脑的把刚刚写完修改好的程序直接提交到主分支,结果还是个有Bug的...

2019-08-24 17:47:32 244

原创 Marco's Java【Git入门(二) 之 Git的工作区和暂存区及文件管理(下)】

前言上一节带大家入了个门,了解了什么是Git,并且掌握了Git的文件管理中的添加文件和版本回退的基本用法,但是可能有很多朋友对我上节提到的工作区和暂存区以及分支区的概念还很模糊,因此,本节咱们着重来研究什么是工作区,什么是缓存区,什么又是分支区以及文件管理中的文件的撤销修改和删除文件的操作啦!

2019-08-23 23:05:52 168

原创 Marco's Java【Git入门(一) 之 Git简介及文件管理(上)】

前言什么是Git?相信大家或多或少会听说过版本库,在还没有分布式概念的时候,程序猿们使用的最广泛的就是SVN集中式版本控制中心。SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理但是SVN有个很明显的缺陷就是它离不开网络,也就是说如果离开了网络的话,各个PC端的J...

2019-08-23 13:29:22 209

原创 Marco's Java【Ngnix入门(二) 之反向代理及负载均衡】

前言目前常见的web服务器- Apache(http://httpd.apache.org)它是世界上用的最多的web服务器,市场占有率达60%左右,模块非常丰富,系统非常稳定,可移植性好,但是比较消耗资源- Lighttpd(http://www.lighttpd.net)它是德国人开发的一个开源软件,目标是提供一个高性能的网站,它具有内存开销低,cpu占用低,效能好及模块丰富,Ngi...

2019-08-21 16:07:27 228

原创 Marco's Java【Ngnix入门(一) 之Nginx下载安装】

前言本节内容主要是Nginx的下载安装,以及Nginx安装后的目录介绍,主要是为第二节的内容做铺垫,如果已经安装过的朋友可以直接跳过哦~Nginx下载安装教程一、下载Nginx下载地址请戳 Nginx Download二、安装Nginx2.1 环境要求Centos 7nginx-1.14.0.tar.gz2.2 先安装nginx依赖的包nginx是C语言开发,建议在li...

2019-08-21 14:17:25 143

原创 Marco's Java【SpringBoot番外篇 之 如何让SpringBoot项目在Linux上跑起来!】

前言安装JDK要想让我们的程序跑起来,必须先得有个运行环境吧~ 所以咱们第一步要做的就是安装JDK,下载请戳 Linux JDK Download ,记得下载后缀为tar.gz的包哦!第一步:下载linux版本JDK第二步:使用XFTP传到Linux并解压接着我们在Linux下的下创建/download目录,并借助XFTP将文件传到此目录然后使用以下指令将文件解压到usr/loca...

2019-08-19 22:53:15 502

原创 Linux目录及常用命令英文全称与中文解释(实用干货)

以下内容均为本人网上收集,个人总结归纳出来的比较实用且常用的Linux命令及全英文对照,结合中文注释更方便记忆这些指令的含义,这种 "三角记忆" 方式apt: Advanced Packaging Tool 高级包装工具cp: Copy file 复制文件cat: Concatenate 串联cd:Change directory 切换目录chmod: Change mode 改变模式chown: Change owner 改变所有者chgrp: Change group 改变用户组...

2019-08-18 21:39:57 1376

原创 Marco's Java【SpringBoot进阶(五) 之 SpringBoot集成Shiro及Mybatis】

前言不知不觉咱们的SpringBoot已经更新到第十期了,结合之前的Shiro项目,再加上上一节学习的SpringBoot整合数据库的操作,咱们将这些知识点,再 “串一串” ,来个大串烧。友情提示:如果没有阅览过下面两篇文章的朋友,建议先提前瞅瞅,否则很有可能跟本节的内容串接不起来哦!当然有这方面知识储备或者看过下面文章的朋友请接着往下看啦~Marco’s Java【Shiro进阶(一) 之...

2019-08-14 12:49:57 216

原创 Marco's Java【SpringBoot进阶(四) 之 启用Druid数据源分别集成JdbcTemplate及Mybatis】

前言上一节我们专门针对于SpringBoot的数据源的使用做了完整的讲解,尤其是对DruidDataSource的使用做了详细的分析,其实上节我们手写的DruidAutoConfig配置类,Alibaba官方已经给到了相应的启动jar包,包含这个配置类,根本不需要我们自己去写… 哈哈,并不是不想提前告诉你们,毕竟了解实现的原理最重要嘛!那么本节呢,咱们换一种使用方式,并集成JdbcTempla...

2019-08-13 16:14:37 303

原创 Marco's Java【SpringBoot进阶(三) 之 SpringBoot数据源配置和自动管理】

前言学习SpringBoot也有些时间了,之前咱们一直接触的都是SpringMVC的层面,没有涉及到数据库,那么从本节开始呢,我们会着重来讲解SpringBoot如何结合数据库使用。我们先从开胃菜开始吧~配置dbcp数据源翻过我的 Marco’s Java【SpringMVC番外篇 之 Druid的内置监控配置】 这篇博文的朋友想必对数据源的概念不陌生了,在这里我也不过多去赘述什么是数据源...

2019-08-12 09:00:06 309

原创 Marco's Java【Shiro进阶(二) 之 Shiro源码解析终结篇(精华)】

经过前面阶段的学习,我们从了解Shiro,到使用Shiro,再到整合Shrio及SSM,一层层的拨开Shrio的神秘面纱,见到了Shrio的 "真容", 那么本节的终结篇呢我们继续深入探索Shiro的 "心" ,带着大家一点点的查看Shiro的底层核心代码并跟着分析,通过对Shiro的源码解析,让我们更清楚它的实现原理和运作流程。也算是对Shiro系列篇的一个收尾,废话就不多说了,咱们开始吧~

2019-08-11 13:26:38 218

原创 Marco's Java【SpringBoot进阶(二) 之 注册Web三大组件及内嵌Web服务器加载原理】

前言从现在开始的SpringBoot学习就是咱们的分水岭了,为什么这么讲呢?因为之前咱们学习的基本上都是SpringBoot内置的东西,我们直接去用,或者说写个配置文件就完事儿了。比如说DispatcherServlet不用我们自己去配置,内部资源访问解析器InternalViewResolver也是默认帮我们配置了,连参数都不用改,但是接下来我们可能会涉及到自定义Servlet,Filter...

2019-08-08 21:00:07 270

原创 Marco's Java【SpringBoot进阶(一) 之 SpringBoot自动管理SpringMVC的源码分析】

前言说实话SpringBoot用起来真的很简单,但是要想理解透彻,我个人觉得还是件比较困难的事情,不过凡事都得去尝试,就算理解的没有那么的深,但是能有勇气去看,并且找到核心的部分一点点的分析,对于初学者来说,就是一件非常了不起的事情了,大家伙儿说呢?前端控制器的自动管理准备好了咱就开始吧,还是老规矩,分析源码之前先想想你要分析哪一块?找到切入点之后,再一步步的查阅WebMvcAutoCo...

2019-08-08 16:58:30 706

原创 Marco's Java【SpringBoot入门(六) 之 Thymeleaf模板引擎的使用】

前言Thymeleaf模板的使用简单说, Thymeleaf 是一个跟 Velocity、FreeMarker 类似的模板引擎,它可以完全替代 JSP,相较与其他的模板引擎,它有如下三个极吸引人的特点:1、Thymeleaf在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是由于它支持html 原型,然后在 ht...

2019-08-08 16:56:38 577

空空如也

空空如也

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

TA关注的人

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