自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(114)
  • 资源 (14)
  • 论坛 (1)
  • 收藏
  • 关注

原创 linux常用命令

常见命令whereis 查看命令的可执行文件所在位置type cd 命令类型,内部和外部命令echo $PATH 输出内容man ifconfig 帮助文档,查看外部命令帮助文档help cd 查看内部命令帮助文档a=1 echo $aarr=(1 2 3)echo ${arr[0]}echo $$ 输出当前进程号echo “123” >> file:123写入file文件hash 存储命令,提高查询命令效率df -h :磁盘内存使用情况du -h dir :...

2021-02-20 14:34:18 8

原创 Zookeeper协议-Paxos算法和ZAB协议

前言本篇主要学习Zookeeper一致性算法 Paxos 和 分布式协调 Zab协议Paxos算法Paxos算法是莱斯利*兰伯特在1990年提出的一种基于消息传递并且具有高度容错特性的一致性算法,是目前公认的解决分布式问题上最有效的算法之一拜占庭问题1982年 ,Lamport与另两人共同发表了论文提出了一种计算机容错理论,为了描述这个理论中的问题,假设了一个问题相关的故事场景,如下:拜占庭帝国有许多支军队,不同军队的将军之间必须制订一个统一的行动计划,从而做出进攻或者撤退的决

2020-09-03 16:23:23 105

原创 java对象以及synchronized锁过程详解

一、java对象组成部分java对象存储在内存中,共分为以下三个部分1)、对象头2)、实例数据3)、对齐填充字节二、对象头java对象头有以下三部分组成:1)、Mark Word2)、Class Metadata Address(指向类的指针)3)、Array Length(数组长度,只有数组对象才有)JVM中对象头的方式有以下两种(以32位JVM为例):1.1、普通对象:|------------------------------------------

2020-08-31 17:53:09 198

原创 mysql 相关内容

mysql 主从同步原理1)、复制类型1.1)、SBR(STATEMENT)模式基于语句,主库将每一条会修改的sql语句记录到 binlog 中,优点:不需要记录每一条sql和每一行数据变化,减少 binlog 日志量,节约IO,提高性能缺点:某些情况下会导致 master 和 slave 的数据不一致(如 sleep()、last_insert_id()、user_defin...

2020-05-10 22:17:07 94

原创 RabbitMQ相关内容

消息堆积处理1)、增加消费者的处理能力(优化代码或者增加消费者)2)、设置并发消费,rabbitMQ 默认消费者是单线程串行消费,设置 concurrentConsumers 和 prefetchCount,concurrentConsumers 是对每个 listener 在初始化的时候设置的并发消费者个数,prefetchCount 是每次一次性从 broker 里面取得待消费的消息个...

2020-04-30 15:58:41 100

转载 常见 SQL 语句的加锁分析

这篇博客将对一些常见的 SQL 语句进行加锁分析,看看我们平时执行的那些 SQL 都会加什么锁。只有对我们所写的 SQL 语句加锁过程了如指掌,才能在遇到死锁问题时倒推出是什么锁导致的问题。在前面的博客中我们已经学习了 MySQL 下不同的锁模式和锁类型,我们要特别注意它们的兼容矩阵,熟悉哪些锁是不兼容的,这些不兼容的锁往往就是导致死锁的罪魁祸首。总体来说,MySQL 中的锁可以分成两个粒度:表锁...

2020-03-19 11:13:18 359

原创 redis相关内容

redis 到底快在哪?1)、完全基于内存操作,数据结构类似 hashmap 的 key value 结构,采用的是数组+链表的数据结构,查询和更新的操作时间复杂度都是o(1)2)、采用单线程处理请求,避免了多线程切换带来的CPU损耗,同时也避免了加锁导致性能下降3)、采用IO多路复用(select,poll,epoll)模型,linux 只支持 epoll 方法,多路指的是多个soc...

2020-03-18 14:51:55 80

原创 Spring Boot 2.x 源码系列2-spring boot 自动配置

一、前沿在 Spring Boot 启动流程 文章中我们了解了 Spring Boot 的启动流程,其中在刷新上下文过程中加载了所有的自动化配置类而 Spring Boot 的自动化配置加载分为了两个步骤:1)、首先在 Spring Boot 初始化阶段通过 SpringFactoriesLoader 将所有 MATA-INF/spring.factories 文件中的所有配置内容以一...

2020-01-03 17:43:42 265

原创 Spring Boot 2.x 源码系列1-spring boot 启动流程

一、前沿Spring Boot 是 Spring 的衍生产品,是基于Spring4的条件注册的一套快速开发整合包,它实现了自动配置,降低了项目搭建的复杂度。但是Spring Boot本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序,是用于提升Spring开发者体验的工具。Spring Boot 集成了大量常用的第三方库配置(例...

2020-01-02 18:28:51 207

原创 Spring 4.x 源码系列6-循环依赖

一、前沿在 Spring 的 bean创建 文章中我们了解了bean创建的复杂过程,那篇文章中也讲了一些关于循环依赖的问题,循环依赖本是一个死循环无解难题,本文将通过demo示例来具体为大家分析 Spring 是如何解决这一无解难题的二、循环依赖定义循环依赖就是循环引用,也就是两个或者两个以上的 bean 相互之间的持有对方,比如说 A 引用 B,B 引用 C,C 引用 A,则它们之间...

2019-12-30 15:57:05 60

原创 Spring 4.x 源码系列5-bean的生命周期

一、前沿学习了 bean创建 和 bean加载 之后我们了解了 Spring IOC 容器对于托管对象bean的管理,bean的生命周期也完全有 Spring IOC 容器管理。Spring的ioc容器功能非常强大,负责Spring的Bean的创建和管理等功能。而Spring 的 bean 是整个Spring应用中很重要的一部分,了解Spring Bean的生命周期对我们了解整个spring框...

2019-12-24 15:16:32 80

原创 Spring 4.x 源码系列4-创建bean实例

创建bean实例(createBeanInstance 方法)AbstractAutowireCapableBeanFactory 的 createBeanInstance 方法实现了创建 bean 的实例,将 BeanDefinition 转换为 BeanWrapper,转换是一个复杂的过程,大致步骤如下:1)、如果存在创建bean的回调方法,则从回调方法获取bean实例 BeanWra...

2019-12-23 17:43:46 58

原创 Spring 4.x 源码系列3-bean创建

一、前沿在上节文章 bean加载 中我们学习了Sprin加载bean的整个过程,其中对于如何创建bean的我们没有讲解,本节将从 createBean 方法开始,阅读源码来了解bean的创建的整个过程,bean的创建是Spring中非常重要的模块,通过它可以了解Spring容器是怎么将bean创建出来的二、bean创建前奏bean 的创建是从 AbstractAutowireCapab...

2019-12-23 16:53:10 559

原创 Spring 4.x 源码系列2-bean加载

一、前沿在上节文章 ApplicationContext refresh 刷新 中我们学习了Spring启动是如何将所有的bean实例化并加载的,其中我们只分析到了Spring将bean的定义转换为 BeanDefinition,并注册到 BeanFactory 中,后续的bean的实例化和初始化(bean的加载)我们没有讲解,我们将 bean 的实例化和初始化称之为 bean 的加载,本文将...

2019-12-16 16:27:08 55

原创 Spring 4.x 源码系列1-ApplicationContext refresh 刷新

一、前沿Spring 是java后台开发人员再熟悉不过的框架,其中有一个好处就是通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码造成程序耦合。有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用,真正实现了写一次,可以到处运行的机制既然 Spring 是管理bean的容器,那么它是如何...

2019-12-11 18:02:28 88

原创 Spring 4.x 总体架构

一、架构图spring framework 总共分为三层,底层是核心层,包含 beans、core、context 和 expression(spel),中间层是封装的J2EE服务(企业层),包含aop、aspects、instrument 和 messaging,最上层是应用层,包含两部分,一部分是数据层,包含jdbc、orm、oxm 和 jms,两一部分是web层,包含web、webmvc...

2019-12-05 16:17:17 107

原创 BIO、NIO、AIO 讲解

一、前沿在通信框架中经常使用到的三种通信模式,即 BIO、NIO 和 AIO,它们也是面试中经常被问到的,如果学会了它们将会给你带来薪资的变化哦。下面分别对三者介绍一下,通过示例理解其用法下面先通过一张图来简单了解一下三者,如下所示:同步阻塞IO : 用户进程发起一个IO操作以后,必须等待IO操作的真正完成后,才能继续运行同步非阻塞IO: 用户进程发起一个IO操作以后,可做其它...

2019-12-05 16:01:33 119

原创 AQS源码

一、前沿AQS 全称是 AbstractQueuedSynchronizer,即 抽象队列同步器,它底层采用了 CAS 技术保证了操作的原子性,同时利用 FIFO 队列实现线程间的锁竞争。作为基础的功能->同步抽象到了 AQS 中,这也是 JDK 并发包中 ReentrantLock、CountDownLatch、Semaphore、ReentrantReadWriteLock 等同步工...

2019-12-04 18:12:53 43

原创 SpringMVC工作原理和DispatcherServlet 源码

一、前沿Spring MVC 是我们非常常用的框架,在使用的过程中,你了解它的工作原理吗?它的整个过程是怎样的?下面会从以下两个方面为大家一一介绍:1)、SpringMVC 工作原理2)、SpringMVC 核心类 DispatcherServlet 源码二、SpringMVC 工作原理先来看一张SpringMVC的工作原理图:上述工作原理图清晰的展示了SpringMV...

2019-11-27 17:05:19 190

原创 annotation-driven 配置详解

一、前沿在 Spring MVC 的项目中,我们经常使用 <mvc:annotation-driven> 这个配置,那么这个配置到底是做什么的呢?下面来分析一下,首先找到 mvc 的命名空间的定义,如下图:从上述图中可知,annotation-driven 配置的实现类应该是定义在了 MvcNamespaceHandler 类中,是不是这样的呢?下面我们看下 MvcNa...

2019-11-25 16:58:02 1320

原创 @RequestBody 和 @ResponseBody 注解

一、前沿本文中我们讲解 @RequestBody 和 @ResponseBody 这两个注解,这两个注解在 SpringMVC 中开发中几乎都会被使用到,下面从它们的源码、作用、应用场景等方面给大家剖析一下二、@RequestBody2.1 源码RequestBody 注解的源码如下:// 注解使用在参数上@Target(ElementType.PARAMETER)@R...

2019-11-25 14:57:57 90

原创 component-scan 和 annotation-config 配置

一、前沿使用 SpringMVC 时,相信大家一定使用过<context:component-scan/> 和 <context:annotation-config/> 这两个配置,它们的作用到底是什么呢?它们之前的区别在哪?下面分别为大家分析一下二、作用<context:annotation-config/> :用于激活哪些已经在 Spring...

2019-11-22 15:13:51 366

原创 Autowired 和 Resource 注解

一、前沿Spring 中我们经常使用Autowired 或者 Resource 注解来进行依赖注入,它们都可以写在字段或者该字段的setter方法上,但它们之间是有区别的:Autowired:默认是按照类型装配注入的,如果想按照名称来装配注入,要结合@Qualifier一起使用。默认情况下必须要求依赖的对象存在,如果要允许 null 值,可以设置它的 required 属性为 fa...

2019-11-22 11:15:21 114

原创 Spring事务的隔离级别

一、前沿在学习Spring事务隔离级别之前,我们需要先掌握脏读、不可重复读和幻读的意思,因为Spring事务隔离级别中使用的就是这三者脏读(dirty read):脏读发生在一个事务读取了另外一个事务修改但未提交的数据。如果这些改变在稍后被回滚了,那么第一个事务读取的数据就是无效的不可重复读(non-repeatable read):不可重复读发生在一个事务执行两次或者两次以上相同的查...

2019-11-22 10:49:19 101

原创 Spring事务的传播属性

一、事务特性事务具有四个特点(ACID),如下:1)原子性:要不全部成功,要不全部撤销2)隔离性:事务之间相互独立,互不干扰3)一致性:数据库正确的改变状态后,数据库的一致性约束没有被破坏4)持久性:事务的提交结果,将持久保存在数据库中二、Spring事务传播源码Spring事务的传播特性定义在 TransactionDefinition 类中,源码如下:pac...

2019-11-22 09:51:35 55

原创 java基础知识

一、JAVA中的几种基本数据类型是什么?,各自占用多少字节?数据类型 字节 int 32bit long 64bit short 16bit byte 8bit char 16bit float 32bit double 64bit boolean 1bit 二、String类能被继承吗,为什么?源...

2019-11-21 14:59:29 60

原创 volatile 和 synchronized 详解

一、背景提起并发编程,我们不得不说起 volatile 和 synchronized 这两个关键字,这两个关键字也是面试中常常被问到的,下面我们分别介绍一下这两个关键字以及二者的异同首先我们先理解关于线程安全的两个名词:内存可见 和 执行顺序内存可见:顾名思义就是线程执行结果在内存中对其它线程的可见性执行顺序:控制代码的执行顺序及是否可以并发执行二、volatilevola...

2019-11-20 16:54:42 124

原创 dubbo源码系列11-自适应拓展机制 Adaptive

一、前沿调试 dubbo 源码时,相信大家经常会遇到这样一个问题,即调用 Protocol、Cluster、ProxyFactory、LoadBalance(这些类中都有 SPI 注解) 中定义的带有 Adaptive 注解的方法时总是按照以下流程调用:步骤一: 调用 url 的 getXXX 方法获取参数值 步骤二: 调用 ExtensionLoader 的 getExtensio...

2019-11-20 14:34:41 185

原创 dubbo源码系列8-集群容错之服务路由 Router

一、前沿在上一节中我们分析了集群容错的第一部分 — 服务目录 Directory,服务目录在列举 Invoker 列表的过程中,会通过 Router 进行服务路由,筛选出符合路由规则的 provider,接下来我们分析集群容错的第二部分 — 服务路由 Router服务路由 Router 定义:Router 包含一条路由规则,路由规则决定了 consumer 的调用目标,即规定了 consu...

2019-11-19 14:19:07 117

原创 dubbo源码系列7-集群容错之服务目录 Directory

一、前沿服务导出和服务引用都已经讲完了,接下来就该分析服务的调用过程,但在服务调用过程中有一个非常重要的模块需要先学习一下,即集群容错模块,集群容错模块包含四个部分,分别是服务目录 Directory、服务路由 Router、集群 Cluster 和负载均衡 LoadBalance,下面会分四个章节分别为大家讲解。,首先我们看 服务目录 Directory。定义:服务目录 director...

2019-11-18 16:24:24 138

原创 dubbo源码系列10-集群容错之负载均衡

一、前沿LoadBalance 意为负载均衡,它主要负责将网络请求均摊分发到不同的机器上,避免集群中部分机器的压力过大,而另外一些机器比较空闲的情况。通过负载均衡,可以让集群中的每台机器得到适合自己处理能力的负载,这样可以还可以避免资源浪费。负载均衡分为软件均衡和硬件均衡,在开发中我们几乎很难接触到硬件均衡,但软件均衡是我们很容易接触到的,软件均衡比如 Nginx。dubbo 中为了将co...

2019-11-15 17:49:12 87

原创 dubbo源码系列9-集群容错之dubbo集群 Cluster

一、前沿现在的应用为了解决单点故障的问题,通常都会将应用部署到至少两台机器上,对于负载较高的服务,还会部署更多的机器支撑业务。同理在 dubbo 中同样会有多个 provider 为同一服务提供服务,此时 consumer 就需要决定选择调用哪一个 provider。此外服务调用失败时的处理逻辑也需要考虑设计,比如:重试、抛出异常或者是只输出异常等,为了解决这些问题,dubbo 定义了集群接口...

2019-11-14 10:37:57 89

原创 dubbo源码系列6-服务调用过程(consumer->provider)

一、前沿前面分析了 Dubbo SPI、provider服务导出、consumer服务引用的源码,接下来就是分析服务调用的过程了,在学习服务调用之前,最好先学习集群容错模块,它包含四个部分,分别是服务目录 Directory、服务路由 Router、集群 Cluster 和负载均衡 LoadBalanceDubbo 服务调用过程比较复杂,总体上来说包含如下步骤:发送请求 -&g...

2019-11-14 10:25:22 461

原创 dubbo源码系列5-consumer服务引用

一、前沿在dubbo源码系列4-provider启动服务导出中我们了解了 provider 导出服务的整个过程,服务导出之后就是要应用这些服务了,即服务引入。dubbo中引用远程服务有两种方式:服务直连(不经过注册中心)、基于注册中心引用服务,在实际线上环境中我们基本上使用的都是基于注册中心引用服务的方式,下面我们就围绕该方式讲解分析二、服务引用原理Dubbo 服务引用的时机有以下...

2019-11-04 10:19:09 135

原创 dubbo源码系列4-provider服务导出

一、前沿在dubbo启动Bean生成中我们了解了dubbo是如何借助 Spring 扩展功能来加载 bean 的,下面我们讲一下 dubbo 的 provider(提供者)的启动过程流程以及启动过程都做了些什么操作二、服务导出原理Dubbo 服务导出时机有如下两个:1)、Spring 容器调用 ServiceBean 的 afterPropertiesSet 方法时导出服务...

2019-10-31 10:15:15 131

原创 dubbo源码系列3-dubbo启动Bean生成

从dubbo源码系列1我们了解了 dubbo 的总体架构设计,下面详细讲解dubbo 启动时是怎样无缝对接 spring 启动加载自己的 beandubbo启动方式1、standlone模式: 通过 Main 方法加载 Spring 启动2、使用容器启动: 通过 tomcat、 jetty 等加载 Spring 启动这两种方式的启动都是为了融合到 spring 启动中来加载自...

2019-10-28 09:46:40 98

原创 高并发百万级热点key处理方案

背景我们知道在面试中,面试官经常会问一些关于高并发的问题,其中热点key问题就是一个热门问题,热点key顾名思义就是访问非常频繁的key,再加上高并发访问条件,热点key缓存问题如何解决。接下来我们从以下三个方面来剖析一下:1、热点key定义2、如何发现热点key3、解决方案热点key定义突然有几十万甚至更大的请求去访问redis上的某个特定key。这样会造成流量过于集中,...

2019-10-25 10:59:49 751

原创 dubbo源码系列2-Dubbo SPI源码

简介SPI 全称为 Service Provider Interface,是一种服务发现机制。SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。正因此特性,我们可以很容易的通过 SPI 机制为我们的程序提供拓展功能。SPI 机制在第三方框架中也有所应用,比如 Dubbo 就是通过 SPI 机制加载所有的组件。不过...

2019-10-21 15:02:20 94

原创 dubbo源码系列1-总架构

dubbo架构dubbo是阿里集团开源的一个非常出名的RPC框架,在很多互联网公司和企业应用中广泛使用。协议和序列化框架都可以插拔是及其鲜明的特色。远程接口是基于Java Interface,并且依托于spring框架管理bean,开发非常方便。dubbo 最重要的五个核心模块:provider(提供者)、registry(注册中心)、consumer(消费者)、monitor(监控)和 ...

2019-10-15 15:27:24 64

原创 高并发系统之限流、缓存和降级设计方案

高并发系统设计方案高并发系统设计一般会考虑三个方面:限流、缓存、降级限流:控制在一定时间内的访问量,比如秒杀,这种场景下访问量过于庞大,使用缓存或者降级根本无法解决访问量巨大的问题,那么只能选择限流缓存:缓存设计是我们常用的减轻服务器压力的方案,常用的缓存有 redis(分布式)、 memcache(分布式)、google guava cache(本地缓存)等降级:高并发高负载情况...

2019-10-14 16:11:00 507

java视频转码

该资源可以帮助你解决视频之间的转码问题,轻松实现视频格式之间的转换

2014-02-26

java获取amr格式语音长度

该java代码实现了将获取到的语音计算出其长度,方便在页面上播放

2014-03-03

ajax请求时json时间格式的格式化显示

ajax请求时可以json时间格式的时间转化为你想在界面上显示的任意样式,js全部都封装好了,简单易用

2014-06-17

倒计时定时器

该代码简单的实现了半小时倒计时的定时器,时间根据需要可以自己设定

2014-06-17

table表格内容上下移动的三种实现方法

该代码为大家展示了table表格内容上下移动的三种实现方式,通俗易懂

2014-05-07

百度地图API

为你提供百度地图中的一些常用方法,api丰富多样,与大家一起分享

2014-05-07

java读取配置文件源代码

使用时注意:两个文件在同一文件下,代码中有使用的例子,欢迎大家下载

2014-03-03

java上传文件和文本编辑器功能

java代码实现了文件的上传技术和复杂文本编辑器使用的功能,欢迎大家下载使用

2014-05-07

读取html页面内容

此段源代码实现了把一个html页面的内容给读取出来,从而抽取出对自己有用的数据

2014-02-26

java日历控件源代码

该代码详细的封装了界面上日历显示的代码,使用非常简单,按照说明例子调用就行了,和大家分享一下

2014-03-03

图片瀑布流

该代码实现了将图片以瀑布流的形式显示,当页面加载完后,滚动屏幕滚动条到底部时会再加载图片

2014-02-26

微信中java获取三天天气

短短几行代码,调用了新浪天气查询接口就可以获取到三天的天气具体信息

2014-03-03

xml解析java源代码

该代码非常详细的实现了将xml文件转化为对象和将对象转化为xml文件的功能,其中包含所需要的两个jar包

2014-03-03

POI和JXL两种方式导出EXCEL

该代码详细介绍了POI和JXL两种方式导出EXCEL文件,与大家一起分享

2014-05-07

如何获取到访问用户的真实ip

发表于 2014-02-26 最后回复 2014-03-03

空空如也

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

TA关注的人 TA的粉丝

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