自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

南哥的博客

一个技术菜鸟成长记录

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

原创 再有人问你分布式锁,这篇文章扔给他

1.背景对于锁大家肯定不会陌生,在Java中synchronized关键字和ReentrantLock可重入锁在我们的代码中是经常见的,一般我们用其在多线程环境中控制对资源的并发访问,但是随着分布式的快速发展,本地的加锁往往不能满足我们的需要,在我们的分布式环境中上面加锁的方法就会失去作用。于是人们为了在分布式环境中也能实现本地锁的效果,也是纷纷各出其招,今天让我们来聊一聊一般分布式锁实现的套...

2019-04-25 17:26:08 576 1

原创 Spring IOC 容器源码分析

[TOC]Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器。阅读本文并不能让你成为 Spring 专家,不过一定有助于大家理解 Spring 的很多概念。IOC 总体来说有两处地方最重要,一个是创建 Bean 容器,一个是初始化 Bean。先看下最基本的启动 Spring 容器的例子:public static vo...

2019-03-29 23:27:50 200

原创 一文搞定分布式锁

1.背景对于锁大家肯定不会陌生,在Java中synchronized关键字和ReentrantLock可重入锁在我们的代码中是经常见的,一般我们用其在多线程环境中控制对资源的并发访问,但是随着分布式的快速发展,本地的加锁往往不能满足我们的需要,在我们的分布式环境中上面加锁的方法就会失去作用。于是人们为了在分布式环境中也能实现本地锁的效果,也是纷纷各出其招,今天让我们来聊一聊一般分布式锁实现的套...

2019-03-12 18:38:40 335

转载 一文搞定分布式事务

前言不知道你是否遇到过这样的情况,去小卖铺买东西,付了钱,但是店主因为处理了一些其他事,居然忘记你付了钱,又叫你重新付。又或者在网上购物明明已经扣款,但是却告诉我没有发生交易。这一系列情况都是因为没有事务导致的。这说明了事务在生活中的一些重要性。有了事务,你去小卖铺买东西,那就是一手交钱一手交货。有了事务,你去网上购物,扣款即产生订单交易。事务的具体定义事务提供一种机制将一个活动涉及的...

2019-03-11 11:19:21 328

原创 白话介绍TCC分布式事务

假设你已经了解了本地事务与分布式事务的区别(可以先阅读:一文搞定分布式事务),这里仅简单介绍一下分布式解决方案之一TCC。TCC分布式事务机制是用来保证各个服务形成一个整体性的事务。一个请求中的几个步骤,要么全部成功,如果任何一个服务的操作失败了,就全部一起回滚,撤销已经完成的操作。TCC分布式事务分三个阶段Try-Confirm-Cancel:首先需要选择某种TCC分布式事务框架...

2019-03-07 19:02:38 286

原创 分布式搭建-牛刀小试

以下记录分布式学习#下载zookeeper镜像docker pull registry.docker-cn.com/library/zookeeper#安装镜像并暴露端口 # 2181 2888 3888 (the zookeeper client port, follower port, election port respectively)docker run --name zk...

2019-02-19 23:27:18 144

原创 Spring Boot系列之Docker快速上手

Docker是时下比较流行开源的应用容器引擎,作为一个开发者做一个简单的入门了解,有助于对系统运作的理解。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。相关名词解释:docker主机(Host):安装了Docker程序的...

2018-10-25 23:41:39 186

原创 SpringBoot系列之外部Servlet容器启动原理

外部Servlet容器启动springboot应用原理了解外部Servlet容器启动springboot的原理,需要先了解一个规则,这个规则可以参考servlet3.0规范的8.2.4章 Shared libraries / runtimes pluggability:本文摘录几条主要规则:1)、服务器启动(web应用启动)会创建当前web应用里面每一个jar包里面ServletConta...

2018-10-20 22:27:32 274

原创 SpringBoot系列之外部Servlet容器使用及配置

外部Servlet容器使用及配置上一篇文章介绍了嵌入式的servlet容器配置及启动原理 本文将介绍使用外部servlet容器启动SpringBoot应用的方法及其启动原理。笔者不太会使用大量的文字描述某些问题,所以文章会更多的出现SpringBoot的源码,通过对源码的注释来向读者描述相关的内容,建议读者使用电脑结合代码进行阅读使用外置的Servlet容器:外面安装Tomcat---...

2018-10-14 21:42:08 438

原创 SpringBoot系列之嵌入式servlet容器启动原理

嵌入式servlet容器启动原理本文承接上一篇文章《SpringBoot系列之嵌入式servlet容器自动配置原理》,建议结合阅读,并结合源码深入理解。本文将探讨以下问题:什么时候创建嵌入式的Servlet容器工厂?什么时候获取嵌入式的Servlet容器并启动Tomcat;1)、SpringBoot应用启动运行run方法2)、refreshContext(context);Spr...

2018-10-14 21:03:24 707

原创 SpringBoot系列之嵌入式servlet容器自动配置原理

嵌入式servlet容器自动配置原理springboot中存在大量的自动配置类,了解它的工作原理有助于加深对代码的理解,实现自定义配置的修改,同时也方便以后借鉴其设计模式;本文通过研究EmbeddedServletContainerAutoConfiguration:嵌入式的Servlet容器自动配置类,并分析其中一种常用的Servlet容器,来理解嵌入式servlet容器自动配置的原理。...

2018-09-20 10:25:34 929

转载 HashMap的工作原理

HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银行更喜欢问这个问题,甚至会要求你实现HashMap来考察你的编程能力。ConcurrentHashMap和其它同步集合的引入

2017-11-01 23:14:56 178

原创 HashMap和Hashtable的区别

HashMap和Hashtable的比较是Java面试中的常见问题,用来考验程序员是否能够正确使用集合类以及是否可以随机应变使用多种思路解决问题。HashMap的工作原理、ArrayList与Vector的比较以及这个问题是有关Java 集合框架的最经典的问题。Hashtable是个过时的集合类,存在于Java API中很久了。在Java 4中被重写了,实现了Map接口,所以自此以后也成了Java集

2017-11-01 00:42:13 229

转载 浅谈线程池及submit()和execute()的区别

本文主要介绍两个方面的内容,其一:线程池的类型及其应用场景;其二:submit和execute的区别。一、线程池概述首先,线程池的使用,是非必须的。并不是涉及到启用多线程的地方,就非得整出个线程池出来!1.1,什么是线程池线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。1.2,为什么用备注:个人愚见,请读

2017-11-01 00:29:51 3773

转载 深入浅出 Java 垃圾回收机制

对于Java开发人员来说,了解垃圾回收机制(GC)有哪些好处呢?首先可以满足作为一名软件工程师的求知欲,其次,深入了解GC如何工作可以帮你写出更好的Java应用。这仅仅代表我个人的意见,但我坚信一个精通GC的人往往是一个好的Java开发者。如果你对GC的处理过程感兴趣,说明你已经具备较大规模应用的开发经验。如果你曾经想过如何正确的选择GC算法,那意味着你已经完全理解你所开发的应用的特点

2017-10-31 10:08:50 220

转载 单例模式的几种写法及分析

第一种(懒汉,线程不安全): Java代码  public class Singleton {      private static Singleton instance;      private Singleton (){}        public static Singleton getInstance() {      if (instance == nu

2017-10-28 23:27:39 246

转载 spring bean parent 属性浅析

必要条件:1、子bean必须与父bean保持兼容,也就是说子bean中必须有父bean定义的所有属性。              2、父bean必须是抽象bean或者定义lazy-init=true也就是不让bean工厂实例化该bean注:好多人将parent指向的类说是子类继承了父类,其实说法不正确,正确的说法应该是子bean父bean而不是子类父类,因为如果子bean指定的类已经继承了

2017-10-23 19:58:23 354

转载 几种常见排序算法的分析

一、分类与性能1、稳定排序和非稳定排序简单地说就是所有相等的数经过某种排序方法后,仍能保持它们在排序之前的相对次序,我们就说这种排序方法是稳定的。反之,就是非稳定的。比如:一组数排序前是a1,a2,a3,a4,a5,其中a2=a4,经过某种排序后为a1,a2,a4,a3,a5,则我们说这种排序是稳定的,因为a2排序前在a4的前面,排序后它还是在a4的前面。假如变成a1,a4,a

2017-10-22 21:52:53 615

转载 Java中常用数据结构和集合浅解

------数据结构:是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。1.集合数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系;2.线性结构数据结构中的元素存在一对一的相互关系;3.树形结构数据结构中的元素存在一对多的相互关系;4.图形结构数据结构中的元素存在多对多的相互关系。常用

2017-10-22 20:52:48 311

转载 谈Spring事务隔离级别

一、Propagation (事务的传播属性)Propagation :  key属性确定代理应该给哪个方法增加事务行为。这样的属性最重要的部份是传播行为。有以下选项可供使用:PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。PRO

2017-10-17 00:23:06 265

转载 事务的特性及隔离级别

本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别。  如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性:⑴ 原子性(Atomicity)  原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。⑵ 一致性(Consistency)  一致性

2017-10-16 23:10:16 180

转载 maven中的scope属性

Dependency Scope 在POM 4中,中还引入了,它主要管理依赖的部署。目前可以使用5个值: * compile,缺省值,适用于所有阶段,会随着项目一起发布。 * provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。 * runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。 * test,只

2017-10-16 23:04:47 353

空空如也

空空如也

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

TA关注的人

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