自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大树叶 技术专栏

骨灰攻城狮 架构师

  • 博客(72)
  • 资源 (2)
  • 收藏
  • 关注

转载 mysql5.6配置semi_sync

测试环境:Red Hat Enterprise Linux Server release 6.3 (Santiago)Server version: 5.6.22-log MySQL Community Server (GPL)mysql的replication协议是异步的,虽然异步效率、性能很好,但是却无法保证主从数据一致性,如果master crash,已经commit的事

2017-07-31 20:48:48 437

原创 ConcurrentHashMap的锁分段技术(JDK8以前的版本)

ConcurrentHashMap的锁分段技术,仅适合JDK8以前的版本。JDK8 ConcurrentHashMap的内部实现有很大的不同,详见本博另外的文章说明。 线程不安全的HashMap因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。如以下代码:

2017-07-30 21:28:16 7483 2

转载 常见的MYSQL高可用解决方案

MySQL 是一种关系数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 软件采用了双授权政策(本词条“授权政策”),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好

2017-07-27 02:23:19 2668

转载 推荐:MHA:MySQL高可用架构的利器

简介:MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在

2017-07-26 14:20:26 667

转载 java多线程与线程间通信

本文学习并总结java多线程与线程间通信的原理和方法,内容涉及java线程的众多常见重要知识点,学习后会对java多线程概念及线程间通信方式有直观清晰的了解和掌握,可以编写并分析简单的多线程程序。进程与线程进程:是一个正在执行的程序。每一个进程执行都有执行顺序,一个执行顺序是一个执行路径,或者叫控制单元;每一个程序启动时,都会在内存中分配一片空间,进程就用于标识这片空间,并

2017-07-24 23:55:05 315

原创 java 线程安全的3种方法

java 线程安全的3种方法:1:互斥同步  临界区:syncronized,,重入锁  信号量 semaphore  互斥量 mutex2: 非阻塞同步  CAS(unsafe 类提供的基于CPU硬件技术支持的一种技术)3: 无同步方案   使用Threadlocal 类来包装共享变量,做到每个线程有自己的copy。

2017-07-24 23:05:46 6209

原创 线程同步(9种同步方式)

http://www.cnblogs.com/XHJT/p/3897440.html为何要使用同步?     java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查),     将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用,     从而保证了该变量的唯一性和准确性。 1

2017-07-24 22:44:04 417

转载 深入剖析Java中的装箱和拆箱

自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题。本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱、拆箱相关的问题。以下是本文的目录大纲:一.什么是装箱?什么是拆箱?二.装箱和拆箱是如何实现的三.面试中相关的问题若有不正之处,请谅解和批评指正,不胜感激。一.什么是装箱?什么是拆箱?

2017-07-24 17:21:51 256

转载 Tomcat7源码解析

Tomcat7 源码阅读学习    背景    Tomcat源码目录结构    Tomcat体系结构    Tomcat源码解析          Tomcat的启动流程          Tomcat一次完整请求的处理流程          Tomcat的关闭流程          Tomcat的Connector组件          Tomcat的

2017-07-24 13:25:19 712 1

原创 Tomcat7源码解读 —— 类加载器

综述:在上一节中分析了Tomcat的执行过程。这一节将分析,Tomcat启动以及请求处理过程中所涉及到的类与对象,是由谁加载的,Tomcat的类加载器的特点。 4.1 JAVA的类加载过程1)类加载load:从字节码二进制文件.class文件将类加载到内存将内存中的class放到运行时数据区的方法区内。类的初始化过程会在堆区建立一个java.lang.Class对象,用来封装该类相关的

2017-07-24 13:11:02 316

转载 java与tomcat5类加载机制

1. java类加载器近来了解tomcat的类加载机制,所以先回顾一下Java虚拟机类加载器,如果从java虚拟机的角度来看的话,其实类加载器只分为两种:一种是启动类加载器(即Bootstrap ClassLoader),通过使用JNI来实现,我们无法获取到到它的实例;另一种则是java语言实现java.lang.ClassLoader的子类。一般从我们的角度来看,会根据类加载路径会把

2017-07-24 13:07:06 240

转载 什么时候使用CountDownLatch

http://www.importnew.com/15731.html正如每个Java文档所描述的那样,CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。在Java并发中,countdownlatch的概念是一个常见的面试题,所以一定要确保你很好的理解了它。在这篇文章中,我将会涉及到在Java并发编 程中跟CountDow

2017-07-24 00:37:05 222

原创 Java中String,StringBuffer都是final类

Java中String和StringBuffer同时final类,它们的区别在哪里 ?final 表示这个类不能再被继承.String不可变是说String中用一个final 的char数组private final char value[];保存字符序列。StringBuffer是缓冲区。她通过append("")方法追加字符串从来代替原字符串,所以StringBuffer可变

2017-07-23 23:56:06 2310

转载 真正理解线程上下文类加载器:tomcat and Spring

目录(?)[+]前置知识: java类加载器不完整分析前言此前我对线程上下文类加载器(ThreadContextLoader)的理解仅仅局限于下面这段话:Java 提供了很多服务提供者接口(Service Provider Interface,SPI),允许第三方为这些接口提供实现。常见的 SPI 有 JDBC、JCE、JNDI、JAXP 和

2017-07-23 19:56:29 5401 3

转载 深入理解ReferenceQueue GC finalize Reference

目录 概述 1 先看一个对象finalize的顺序问题。 2 对象再生及finalize只能执行一次 3 SoftReference WeakReference 4 PhantomReference 5 ReferenceQueue Q&A 概述 先说一些基本的东西,GC只负责对象内存相关的清理,其他资源如文件句柄,db连接需要手动清理,以防止系

2017-07-23 13:13:33 562

转载 吐血推荐: 深入理解java 虚拟机

极客系列:推荐一下:深入理解java 虚拟机

2017-07-22 17:48:15 458

转载 推荐MongoDB教程

这个网站不错,专门讲MongoDBhttp://www.yiibai.com/mongodb/

2017-07-21 17:20:42 350

转载 ArrayList的实现原理

1. ArrayList概述:   ArrayList是List接口的可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。   每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向ArrayList中不断添加元素,其容量

2017-07-21 00:35:56 219

转载 Java中ArrayList和LinkedList区别

一般大家都知道ArrayList和LinkedList的大致区别:      1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。      2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。      3.对于新增和删除操作add和remove,LinedList比较占优势,因

2017-07-20 23:13:31 184

原创 分布式锁的三种实现方法

 目前几乎所有的大型web应用全都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式应用中的CAP理论告诉我们:任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)、分区容错性(Partation tolerance)。最多只能同时满足其中两项。所以在设计之初,就需要对三者做出取舍。一般在互联网场景中,都会选...

2017-07-17 00:23:22 909

原创 实现分布式锁:Redis SETNX 命令

使用Redis的 SETNX 命令可以实现分布式锁,下文介绍其实现方法。SETNX命令简介命令格式SETNX key value将 key 的值设为 value,当且仅当 key 不存在。 若给定的 key 已经存在,则 SETNX 不做任何动作。 SETNX 是SET if Not eXists的简写。返回值返回整数,具体为 - 1,当 key 的值被设置 -...

2017-07-17 00:16:52 766

转载 kafka与Spring的集成

kafka与Spring的集成准备工作kafka版本:kafka_2.10-0.10.1.0spring版本:spring4.3配置文件pom文件配置(也可以直接下载jar包)Kafka和spring集成的支持类库,spring和kafka通信监听1 dependency>2   groupId>org.springframework.integr

2017-07-15 17:15:11 3476 4

原创 Kafka源码中的Producer Record定义

1.ProducerRecord 含义: 发送给Kafka Broker的key/value 值对2.内部数据结构:-- Topic (名字)-- PartitionID ( 可选)-- Key[( 可选 )-- Value3.生产者记录(简称PR)的发送逻辑: 若指定Partition ID,则PR被发送至指定P

2017-07-15 16:56:46 2067

转载 JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解(推荐)

https://my.oschina.net/feichexia/blog/196575

2017-07-15 16:00:13 635

转载 Tomcat学习总结(3)——Tomcat优化详细教程

Tomcat是我们经常使用的 servlet容器之一,甚至很多线上产品都使用 Tomcat充当服务器。而且优化后的Tomcat性能提升显著,本文从以下几方面进行分析优化。一、内存优化默认情况下Tomcat的相关内存配置较低,这对于一些大型项目显然是不够用的,这些项目运行就已经耗费了大部分内存空间,何况大规模访问的情况。即使是本文中的这个只有一个页面的超小项目,在并发达到一定程度后也

2017-07-15 15:45:23 352

转载 推荐:LinkedBlockingQueue 实现原理分析

Java中的阻塞队列接口BlockingQueue继承自Queue接口。BlockingQueue接口提供了3个添加元素方法:add:添加元素到队列里,添加成功返回true,由于容量满了添加失败会抛出IllegalStateException异常;offer:添加元素到队列里,添加成功返回true,添加失败返回false;put:添加元素到队列里,如果容量满了会阻塞直到容量不满。

2017-07-13 10:23:16 311

原创 JAVA中线程同步的方法(6种)汇总

一、同步方法  即有synchronized关键字修饰的方法。 由于java的每个对象都有一个内置锁,当用此关键字修饰方法时, 内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。注: synchronized关键字也可以修饰静态方法,此时如果调用该静态方法,将会锁住整个类。二、同步代码块  即有synchronized关键字修饰的

2017-07-12 20:25:59 971

原创 ThreadPoolExecutor 是如何做到线程重用的

前言:看关于ThreadPoolExecutor参数时,看到了keepaliveTime这个参数,这个参数的意思是:“当线程数大于CorePoolSize时,如果有没有等到新的Task,到了keepaliveTime时间后,就自动终止掉”。那么如果在这个时间之前,等到了新的Task,就可以重用这个线程。到底是怎么重用线程的呢? ThreadPoolExecutor mExecut...

2017-07-12 10:01:03 1331

转载 敏捷开发之Scrum

什么是敏捷开发?敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。怎么理解呢?首先,我们要理解它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,它会指导我们用规定的环节去一步一步完成项目的开发;而这种开发方式的主要驱动核心是人;它采用的是迭代式开发; 为什么说是以人为核心?我们大部分人都学过瀑布开发模型,它是

2017-07-11 20:48:59 441

原创 COOKIE和SESSION有什么区别

1. 由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session.典型的场景比如购物车,当你点击下单按钮时,由于HTTP协议无状态,所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建了特定的Session,用用于标识这个用户,并且跟踪用户,这样才知道购物车里面有几本书。这个Session是保存在服务端的,有一个唯一标识。在服务

2017-07-10 10:11:36 332

转载 Java String的intern方法 在JDK6和JDK7的不同行为

String str1 = new StringBuilder("a").append("b").toString(); //1System.out.println(str1.intern() == str1); //2String str2 = new StringBuilder("c").toString(); //3Sy

2017-07-10 00:52:30 1636 2

转载 跟我学SpringMVC

跟我学SpringMVChttp://www.iteye.com/blogs/subjects/kaitao-springmvc#1684

2017-07-08 02:15:11 457

转载 mysql metadata lock

想必玩过mysql的人对Waiting for table metadata lock肯定不会陌生,一般都是进行alter操作时被堵住了,导致了我们在show processlist 时,看到线程的状态是在等metadata lock。本文会对mysql 的metadata lock做一个小小的总结,希望对大家有所帮助。     MDL是在5.5才引入到mysql,之前也有类似保护元数据的

2017-07-08 00:03:01 506

转载 ServletContext与Web应用以及Spring容器启动

一、ServletContext对象获取DemoServlet容器在启动时会加载Web应用,并为每个Web应用创建唯一的ServletContext对象。可以把ServletContext看作一个Web应用的服务器端组件的共享内存。在ServletContext中可以存放共享数据,有4个读取或者设置共享数据的方法:方法名描述setAttr

2017-07-07 16:56:29 2005

转载 【荐】Spring MVC @Autowired、@Controller、@Service 的实现

转https://my.oschina.net/HeliosFly/blog/203902Spring MVC 解读——@Autowired一、@Autowired作为一个spring开发者对@Autowired注解必定是非常了解了, 顾名思义自动装配,应该是Spring会自动将我们标记为@Autowired的元素装配好,与其猜测不如看看它的定义:[java]view p...

2017-07-07 14:21:17 595

转载 Spring的@Autowired注入规则

@Autowired 默认是按照byType进行注入的,但是当byType方式找到了多个符合的bean,又是怎么处理的?经过一些代码的测试,我发现,Autowired默认先按byType,如果发现找到多个bean,则,又按照byName方式比对,如果还有多个,则报出异常。例子:@Autowiredprivate ExamUserMapper examUser

2017-07-07 13:50:40 3616

原创 Spring autowire 总结和例子

在应用中,我们常常使用标签为JavaBean注入它依赖的对象。但是对于一个大型的系统,这个操作将会耗费我们大量的资源,我们不得不花费大量的时间和精力用于创建和维护系统中的标签。实际上,这种方式也会在另一种形式上增加了应用程序的复杂性,那么如何解决这个问题呢?spring为我们提供了一个自动装配的机制,尽管这种机制不是很完善,但是在应用中结合标签还是可以大大的减少我们的劳动强度。前面提到过,在定义B

2017-07-07 12:18:27 2589 1

转载 spring的普通类中如何取session和request对像

在使用spring时,经常需要在普通类中获取session,request等对像.比如一些AOP拦截器类,在有使用struts2时,因为struts2有一个接口使用org.apache.struts2.ServletActionContext即可很方便的取到session对像.用法:ServletActionContext.getRequest().getSession();但在单独使

2017-07-07 11:28:41 352

转载 Spring : constructor-arg property 注入

1、说明   constructor-arg:通过构造函数注入。    property:通过setter对应的方法注入。2、constructor-arg的使用示例   (1)、Model代码:1234567891011121314

2017-07-07 10:08:30 650

转载 spring - constructor-arg 的使用

原文地址 spring使用spring-beans.dtd文件来定义BeanFactory的XML配置规范。可以在http://www.springframework.org/dtd/spring-beans.dtd找到该dtd文件,当然,Spring的下载文件中也已经包含了该dtd文件。它被放在dist文件夹中。       配置文件的根元素是beans,每个组件使用bean元素来定义,

2017-07-07 09:55:39 1870

程序员代码面试指南2-代码

《程序员代码面试指南第二版2》左程云 配套的所有的算法源代码

2019-07-07

dom4j jar包

dom4j v2.0 jar包。开发XML的必备利器

2016-02-10

空空如也

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

TA关注的人

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