自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

pfnie的博客

学如逆水行舟,不行则退。以研究源码为乐趣,以写代码为疯狂。

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

原创 Thinking of Spring Integration with Thirdparty

Thinking of Spring Integration with Thirdparty1. Configuration MetadataConfiguration metadata represents how you, as an application developer, tell the Spring Container to instantiate, configure, and assemble the objects in your application.This configu

2021-09-18 10:19:10 262

原创 深入理解Mysql索引底层数据结构与算法

一、MySQL索引的介绍1.1、索引:(1)、索引是帮助MySQL高效获取数据的排好序的数据结构。索引存储在磁盘文件里,也就是说会有IO操作。常用的索引数据结构:二叉查找树、红黑树、hash、B-Tree、B+Tree。在以下的分析中,我会说明为什么MySQL会选择hash以及B+Tree作为索引的数据结构,而不是其他的几种数据结构。二、磁盘的读写原理(1)、硬盘的组成所有的盘片都...

2019-03-24 13:03:48 1717 1

原创 第一节:MySQL主从复制概念及架构

背景在了解主从复制之前必须要了解的就是数据库的二进制日志(binlog),主从复制架构大多基于二进制日志进行。一、MySQL主从复制介绍1.1、主从复制实现基本原理:(1)、自带功能,复制是 MySQL 的一项功能,允许服务器将更改从一个实例复制到另一个实例。(2)、主服务器将所有数据和结构更改记录到二进制日志中。(3)、从服务器从主服务器请求该二进制日志并在本地应用其内容。1.2...

2019-03-16 16:51:32 436 1

原创 第二节:InnoDB的RR级别Consistent Nonlocking Reads实验

1)对于RR隔离:A consistent read means that InnoDB uses multi-versioning to present to a query a snapshot of the database at a point in time. The query sees the changes made by transactions that committed ...

2018-11-14 13:45:19 401

原创 第一节:InnoDB事物的D特性的原理分析

1、抛出我的观点首先我们应该很清楚的知道,undo日志用来保证事物的C一致性,redo保证事物的A原子性和D持久性,锁保证事物的隔离性。今天我们就来谈谈事物的D持久性。2、redo1、基本概念redo由两部分组成:一是MySQL实例内存中的redo log buffer, 二是磁盘上的redo log file。InnoDB是事物的存储引擎,其通过Force Log at Commit机...

2018-11-06 14:08:52 462 1

原创 Hystrix源码解析--hystrixCommand的附属配置如何初始化的(二)

一、为什么HystrixCommand要求我们至少实现一个构造方法从这篇文章中Hystrix源码解析--从原生的lib开始使用hystrix(一),我们知道,如果使用原生的lib方式来使用hystrix,那么我们的command必须要实现至少一个构造方法,大家有想过为什么要这样么?原因就是hystrix要求你在构造方法中,必须指明command的一些附属配置,例如HystrixCommandG...

2018-09-09 12:15:50 4154

原创 Hystrix源码解析--从原生的lib开始使用hystrix(一)

一、HystrixCommand的探讨我们都知道hystrixCommand是用来隔离调用者和依赖服务的,但是hystrixCommand的使用有很多种,我们按照历史的发展轨迹,从原生的lib开始,教你如何使用hystrixCommand。hystrixCommand究竟是以一种怎么的形式存在呢?singleton或者是prototype?换句话说,也就是问hystrixCommand是有状态...

2018-09-08 18:47:00 1713 3

原创 Hystrix源码解析--HystrixCircuitBreaker--从实现探讨原理(三)

一、HystrixCircuitBreaker接口的实现者是谁?HystrixCircuitBreaker接口有两个实现者,分别是:HystrixCircuitBreakerImpl和NoOpCircuitBreaker。NoOpCircuitBreaker是空的断路器实现,用于不开启断路器功能的情况。HystrixCircuitBreakerImpl是完整的断路器的实现。我们重点分析后者。...

2018-09-02 18:22:51 4905

原创 Hystrix源码解析--HystrixCircuitBreaker--从抽象接口说起(五)

一、HystrixCircuitBreaker接口的起源断路器模式的思想来源于Netflix这家公司。Spring cloud是非常贱的,他搞了一个CircuitBreaker接口,搞得好像HystrixCircuitBreaker是继承自Spring cloud的CircuitBreaker一样,其实并不是这样的,HystrixCircuitBreaker跟Spring cloud的Circ...

2018-09-02 17:14:31 678

原创 Hystrix源码解析--HystrixCircuitBreaker--思想层面(四)

一、什么是HystrixCircuitBreaker?HystrixCircuitBreaker可以防止应用程序重复的尝试调用容易失败的依赖服务。HystrixCircuitBreaker的目的和Retry模式的目的是不同的。Retry模式令应用程序不断的去重试调用依赖服务,直到最后成功。而HystrixCircuitBreaker是阻止应用程序继续尝试无意义的请求。HystrixCircui...

2018-08-25 13:57:39 2024

原创 Nginx配置一个简单的虚拟主机

1、首先找到配置文件第一步:我们的配置文件在/application/nginx/conf目录下面:第二步:修改配置文件如下所示:2、访问测试第一步:访问www.niepengfei.com , 不带主页。第二步:访问www.niepengfei.com/index.html , 带主页。

2017-11-11 10:52:47 550

原创 Nginx的命令行控制

1、Nginx的命令行控制以下内容摘抄自,原文如下:

2017-11-11 09:50:48 924

原创 Nginx在linux上具体安装过程

1、获取Nginx的源码第一步:目前我在npfdev2这台Centos服务器上面安装,我以一种比较的简单的方式也就是wget获取Nginx的源码。按照我的习惯,我喜欢在/usr/local/source目录下存放开源项目的源码包文件。所以我们先到/usr/local/source目录下:第二步:Nginx的下载地址:http://nginx.org/download/

2017-11-10 21:13:12 450

原创 Nginx在linux上安装之前的准备工作

1、使用Nginx之前的必备软件介绍(1)、GCC编译器GCC(GNU Compiler Collection)可用来编译C语言程序。Nginx不会直接提供二进制可执行程序,所以我们需要对Nginx的源码进行编译安装。我们可以使用最简单的yum方式安装GCC,例如:yum install -y gcc (2)、PCRE库PCRE(Perl Compatible Regular

2017-11-10 21:08:00 806

原创 MySQL如何传输二进制日志(二)

1、二进制日志简介Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台(master)主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的。复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。1、

2017-10-11 20:32:56 836

原创 AbstractQueuedSynchronizer的衍生品ReentrantLock(七)- 不响应中断的独占锁

1、AbstactQueuedSynchronizer的基本数据结构

2017-09-03 17:30:43 1206

原创 AbstractQueuedSynchronizer源码剖析(五)- 响应中断的共享锁

1、AbstactQueuedSynchronizer的基本数据结构AbstractQueuedSynchronizer是并发类的重中之重,我会细分很多章节来解析。本篇博客主要分析AQS中的不响应中断的独占锁。(1). AbstactQueuedSynchronizer的基本数据结构AQS的基本数据结构为Node,关于Node,JDK作者写了详细的注释,这里我大致总

2017-09-03 14:37:34 1100

原创 AbstractQueuedSynchronizer源码剖析(四)- 不响应中断的共享锁

1、AbstactQueuedSynchronizer的基本数据结构AbstractQueuedSynchronizer是并发类的重中之重,我会细分很多章节来解析。本篇博客主要分析AQS中的不响应中断的独占锁。(1). AbstactQueuedSynchronizer的基本数据结构AQS的基本数据结构为Node,关于Node,JDK作者写了详细的注释,这里我大致总

2017-09-03 12:48:16 1111 1

原创 AbstractQueuedSynchronizer源码剖析(三)- 响应中断的独占锁

1、AbstactQueuedSynchronizer的基本数据结构AbstractQueuedSynchronizer是并发类的重中之重,我会细分很多章节来解析。本篇博客主要分析AQS中的不响应中断的独占锁。(1). AbstactQueuedSynchronizer的基本数据结构AQS的基本数据结构为Node,关于Node,JDK作者写了详细的注释,这里我大致总

2017-09-03 11:45:12 1353 6

原创 AbstractQueuedSynchronizer源码剖析(二)- 不响应中断的独占锁

1、何为独占锁      JDK1.5之后引入了并发java.util.concurrent,大大提高了Java程序的并发性能。在介绍Lock之前,我们需要先熟悉一个非常重要的组件,掌握了该组件JUC包下面很多问题都不在是问题了。AQS是构建锁或者其他同步组件的基础框架(如ReentrantLock、ReentrantReadWriteLock、Semaphore等),JUC并发包

2017-09-02 19:45:49 2292 13

原创 AbstractQueuedSynchronizer源码剖析(一)- 从抽象和接口说起

一、从设计思想开始      JDK1.5之后引入了并发java.util.concurrent,大大提高了Java程序的并发性能。在介绍Lock之前,我们需要先熟悉一个非常重要的组件,掌握了该组件JUC包下面很多问题都不在是问题了。AQS是构建锁或者其他同步组件的基础框架,JUC并发包的作者期望它能够成为实现大部分同步需求的基础。它是JUC并发包中的核心基础组件。     AQS

2017-08-26 13:24:04 2619 1

原创 Linux下MongoDB安装和配置详解

一、创建MongoDB的安装路径在/usr/local/  创建文件夹mongoDBmkdir mongoDB二、上传文件到Linux上的/usr/local/source目录下1. 我首先在mongoDB下载路径下载mongoDB下载对应的版本.2.通过FTP工具将安装包上传到linux机器上面.三、解压文件1. 进入到/usr/local/source目录:

2017-05-04 21:50:42 874

原创 观察分块情况以及文件块的复制和datanode的动态添加

一、将hdfs-site.xml的replication值设为2,通过网页观察分块情况在阅读这篇博客之前,你应该先阅读: 使用hdfs dfs命令对文件进行增删改查操作.1.将hdfs-site.xml的replication值设为2vim hdfs-site.xml添加如下内容:  dfs.replication  2修改完成后,你需要重新启动hadoop

2017-04-16 15:20:45 961

原创 使用hdfs dfs命令对文件进行增删改查操作

一、put文件到HDFS在阅读这篇博客之前,你应该先阅读: 对集群进行集中管理.1.使用hdfs dfs -put file /解释:file指的是你本地文件路径地址,/指的是hdfs的根路径.例如我现在位于/usr/local/source路径下面,我想把当前路径下的hadoop-2.7.3.tar.gz上传到hdfs上面,hadoop-2.7.3.tar.gz这个文件大概是20

2017-04-16 13:45:15 6848

原创 对集群进行集中管理

一、目前存在的问题在阅读这篇博客之前,你应该先阅读: 简单认识namenode和datanode.在之前,我们启动Hadoop集群的时候,首先是启动namenode,然后启动datanode. 注意:我们之前的做法是手动的将启动datanode的命令发送给所有的datanode,显然如果在集群很庞大的时候,这种做法是不合适的.我们希望通过start-dfs.sh的方式启动所有的节点.那么我

2017-04-16 11:07:07 770

原创 简单认识namenode和datanode

一、Hadoop的启动在阅读这篇博客之前,你应该先阅读:Hadoop的安装与环境搭建.1. 首先在npdev1机器上面运行hadoop-daemon.sh start namenode,启动namenode.2. 然后在npfdev2,npfdev3,npfdev4分别运行hadoop-daemon.sh start datanode3. 启动完成之后,我们的Hadoop的

2017-04-16 09:37:24 630

原创 Hadoop的安装与环境搭建

一、Hadoop的安装1. 下载地址:https://archive.apache.org/dist/hadoop/common/ 我下载的是hadoop-2.7.3.tar.gz版本。2. 在/usr/local/  创建文件夹zookeepermkdir hadoop3.上传文件到Linux上的/usr/local/source目录下3.解压缩运行如下命令:

2017-04-01 14:26:30 671

原创 soap消息传递和处理(基于Message和Payload的方式)

一、webservice的定义1. 接口定义:package com.npf.server;import javax.jws.WebParam;import javax.jws.WebResult;import javax.jws.WebService;import com.npf.model.User;@WebServicepublic interface M

2017-01-02 21:08:19 4683

原创 ThreadLocal内存泄露(下)

一、介绍很多博客都这样说:ThreadLocal为解决多线程程序的并发问题提供了一种新的思路;ThreadLocal的目的是为了解决多线程访问资源时的共享问题。如果你也这样认为的,那现在给你10秒钟清空之前对ThreadLocal的错误的认知。看看JDK中的源码是怎么写的:This class provides thread-local variables. These

2017-01-02 20:57:49 483

原创 ThreadLocal内存泄露(上)

一、介绍Java中的ThreadLocal 变量用于将变量同当前线程绑定,每个线程都有自己独立的ThreadLocal变量。这些变量通常用于保存一些变量的状态信息,譬如用户信息这种在整个应用中都使用的到并且你不想在每个方法中都重新声明。ThreadLocal 的生命周期和它相应的线程直接关联。如果线程被终止并且被垃圾回收器收集,它相应的ThreadLocal 变量也将会被回收。内存问题主要

2017-01-02 14:34:58 433

原创 事务性质以及隔离级别

一、事物的概念      事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都会执行,要么都不会执行,它是一个不可分割的工作单位。事务的提出主要是为了解决并发情况下保持数据一致性的问题。二、事物的基本特征Atomic(原子性):事务中包含的操作被看作是一个逻辑单元,这个逻辑单元中的操作要么全部执行成功,要么全部执行

2016-11-20 10:28:33 570

原创 《深入理解mybatis原理(十二)》 mybatis深入理解之#与$区别

一、介绍      mybatis 中使用 Mapper.xml里面的配置进行 sql 查询,经常需要动态传递参数,例如我们需要根据用户的姓名来筛选用户时,sql 如下:select * from user where name = "Jack";上述 sql 中,我们希望 name 后的参数 "Jack" 是动态可变的,即不同的时刻根据不同的姓名来查询用户。在Ma

2016-11-19 16:00:45 19119 7

原创 AbstractQueuedSynchronizer源码剖析(六)- 深刻解析与模拟线程竞争资源

一、细说AQS      在深入分析AQS之前,我想先从AQS的功能上说明下AQS,站在使用者的角度,AQS的功能可以分为两类:独占锁和共享锁。它的所有子类中,要么实现并使用了它独占锁的API,要么使用了共享锁的API,而不会同时使用两套API,即便是它最有名的子类ReentrantReadWriteLock,也是通过两个内部类:读锁和写锁,分别实现的两套API来实现的,到目前为止

2016-11-19 15:24:29 11382 30

原创 脏读和不可重复读的相关概念

一、脏读脏读就是指当一个事务正在访问某条数据,并且对该条数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这条数据,然后还使用了这条数据。因为这条数据是还没有提交的数据,那么另外一个事务读到的这条数据是脏数据(Dirty Data),依据脏数据所做的操作可能是不正确的。二、不可重复读不可重复读是指在一个事务内,多次读取同一条数据。在这个事务还没有结束时,另外一

2016-11-13 12:44:34 449

原创 Spring事务管理中@Transactional的参数配置

一、介绍Spring作为低侵入的Java EE框架之一,能够很好地与其他框架进行整合,其中Spring与Hibernate的整合实现的事务管理是常用的一种功能。所谓事务,就必须具备ACID特性,即原子性、一致性、隔离性和持久性,在Hibernate的实现中,需要我们编写代码来完成事务的控制工作。二、案例public static void main(String[] args)

2016-11-12 18:16:45 652

原创 @Transactional的propagation参数解释

一、介绍本文重点讲一讲propagation参数,propagation配置的就是一个事务的传播性问题。所谓事务传播性,就是被调用者的事务与调用者的事务之间的关系。举例说明。//in A.javaClass A { @Transactional(propagation=propagation.REQUIRED) public void aMethod { B b = new B(

2016-11-12 18:03:38 1987

原创 Spring Transaction propagation

1、abstractionThis section describes some semantics of transaction propagationin Spring. Please note that this section is not an introduction to transaction propagation proper; rather it details some

2016-11-12 15:05:11 394

原创 Transaction visibility / proxy / propagation REQUIRED and REQUIRES_NEW

1. abstractionAfter my post Spring Transaction propagation / readonlyon the propagation and readonly attribute, I would write some words concerning the propagation and the visibility of annoted

2016-11-12 14:26:26 434

原创 Spring Transaction propagation / readonly

1. abstractionI would expose a simple post with 2 examples concerning the propagation of a transaction in the application layers (Spring MVC controller, Manager layer, Service Layer, DAO layer) wi

2016-11-12 11:28:59 431

原创 Java Executor并发框架(十四)Executor框架线程池使用原始方式实现生产者消费者模式

一、介绍       在 Java 中可以用 wait、notify 和 notifyAll 来实现线程间的通信。。举个例子,如果你的Java程序中有两个线程——即生产者和消费者,那么生产者可以通知消费者,让消费者开始消耗数据,因为队列缓 冲区中有内容待消费(不为空)。相应的,消费者可以通知生产者可以开始生成更多的数据,因为当它消耗掉某些数据后缓冲区不再为满。      wai

2016-10-18 22:20:43 2880

空空如也

空空如也

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

TA关注的人

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