自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (1)
  • 收藏
  • 关注

单例模式

一、概述       单例模式,在设计模式中,是一个比较重要的设计模式。在开发中,如果某个实例的创建需要消耗很多资源,那么我们通常会选择使用懒性加载机制。何谓懒性加载机制呢?说白了,就是在使用到这个实例的时候,才去创建这个实例。这个机制在单例模式中,得到了很广泛的应用。这个机制在单线程的环境下实现非常简单,但是在多线程的环境下存在安全隐患。二、单例模式下的懒加载机制       我...

2018-04-24 17:54:29 113

分布式锁之基于Redis的分布式锁

一、简述       分布式锁一般有三种实现方式:第一,数据库乐观锁;第二,基于Redis的分布式锁;第三,基于Zookeeper的分布式锁。目前,在项目中有需要用到分布式锁的场景,因此学习并总结了。今天,咱们先来聊聊基于Redis的分布式锁。       要保证基于Redis的分布式锁可用,必须同时满足以下四个条件:1、互斥性:在任何时刻只能有一个客户端持有锁;2、避免死锁:即使有一...

2018-03-26 16:24:47 461

SQL Joins图解

一、背景       在做业务系统服务端开发的时候,数据表之间经常需要join,吐出数据。下面是小弟在工作中对sql joins的总结,希望能帮到有需要的小伙伴。 二、sql joins简介       sql中join常用的有left join、inner join、right join,另外full join(full outer join)在实际工作中用的比较少。  ...

2017-01-23 10:34:50 464

原创 Metrics:JVM的实时监控工具

一、背景       最近两个月的工作中,一直在监控线上应用的情况,并且在排查线上问题的时候,发现线上的机器十分之多,为了能够自动化、平台化的监控线上应用,选择了Metrics。Metrics是给Java服务的各种指标提供监控的一种工具包。 二、简介       结合项目组使用的是SpringBoot的应用部署方式和Maven的项目管理方式,引入Metrics的方式如下: ...

2017-01-03 14:31:28 2347

原创 Spring事务:声明式事务管理

一、背景       在Spring事务:编程式事务管理这一篇中简单的介绍了Spring中的编程式事务管理,本篇介绍下Spring中声明式事务管理。 二、声明式事务管理1、Spring中声明式事务管理概述       Spring中的声明式事务管理在底层是建立在AOP的基础上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或加入一个事务,在执行完目标方法之后,根据...

2016-12-30 14:09:33 181

原创 Spring事务:编程式事务管理

一、背景       在上一篇Spring事务:事务属性和API简介中,初步地介绍了关于Spring事务的一些属性和主要的API,这一篇主要论述的是Spring事务中的编程史事务管理。 二、编程式事务管理1、Spring的编程式事务管理概述       在Spring出现以前,编程式事务管理对基于POJO的应用来说是唯一选择。之前学习过Hibernate,这里面的事务管理是...

2016-12-30 11:17:56 133

Spring事务:事务属性和API简介

一、背景       Spring这款开源框架自从诞生后,一直收到企业级应用的喜爱。应该这么说,只要是从事过Java开发的小伙伴,或多或少,都会了解一些关于Spring的知识。最近在工作中,负责一个服务治理平台的搭建,用到了Spring中的事务,因而学习了一下。下面是小弟在工作之余,总结的一些关于Spring事务的点,希望能帮到有需要的小伙伴。 二、Spring事务属性    ...

2016-12-30 10:38:52 231

MySQL事务隔离级别

一、四类隔离级别SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。Read Uncommitted(读取未提交内容)在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(D...

2016-12-29 17:22:03 85

git常用命令

此篇文章只是为了总结小弟在工作中用到的git命令,希望可以帮到有需要的小伙伴。1、从origin/master分支上新建分支git checkout -b 分支名称 origin/master 2、将新建的本地分支推送到远程分支git push -uf origin 分支名称 3、查看分支状态git status 4、查看分支git branch:-...

2016-12-29 17:02:59 118

Maven常用命令

maven是一个很棒的项目管理框架,并且是开源的,所以很受开发小伙伴们的喜爱。下面是小弟在工作中总结的一些常用的命令,希望能帮到各位看官。1、打包命令mvn install -Dmaven.test.skip 2、发布二方库命令(自动打包到nexus库)mvn deploy -pl XXX-client -am -X 3、更新jar命令mvn clean ins...

2016-12-29 16:48:35 86

异常统一处理

一、背景在实际的工作中,在服务与服务之间的交互中,异常是一个很重要的点,这里的异常有的是正常的业务异常,而有些确实程序本身抛出的异常,例如:服务A依赖服务B,服务B出现了NullPointerException,作为调用方,一定要做好异常的处理。下面是小弟在工作过程中,总结出来的一个统一处理异常的工具。二、代码实现1、定义服务返回结果DemoResultpublic class ...

2016-12-28 17:30:56 171

脚本化的Web应用服务管理

这篇文章只是自己学习的东西,有兴趣的同学,可以看看。#!/bin/bashif [ $# -lt 1 ];then echo "USAGE: $0 classname opts" exit 1fiJAR_PATH=`ls *.jar`if [[ ! "$?" == "0" || ! -e $JAR_PATH ]]; then echo "Do you...

2016-12-28 14:46:16 142

Java8之简单流操作

一、Java8中的Stream       Java8之所以被广大的Java爱好者所喜爱,是因为它提供了一系列的关于集合的Stream操作。集合API是Java API中最重要的部分。基本上每一个java程序都离不开集合。尽管很重要,但是现有的集合处理在很多方面都无法满足需要。      一个原因是,许多其他的语言或者类库以声明的方式来处理特定的数据模型,比如SQL语言,你可以从表中查询...

2016-09-21 14:54:15 136

Java编程之数组转换列表的陷阱

一、基本数据类型数组不能作为asList的入参,否则会引起程序的逻辑混乱。       这段时间在熟悉新的项目,在看项目代码的时候,发现以前的同事很喜欢用Arrays和Collections这两个工具类,实现数组与列表之间的转换。应该说,很多开发的童鞋在实现数组与列表之前转换的时候,都钟情于这两个工具类。鄙人为了理解这两个工具类,特意写了一个demo学习一下。import java.u...

2016-03-24 16:16:08 137

Java编程之数组扩容

一、背景       数组在实际的系统开发中用的越来越少了,我们只有在阅读某些开源项目时才会看到数组的使用。在Java中,数组与List、Set、Map等集合类相比,后者使用起来方便,但是在基本数据类型处理方面,数组还是占优势的,而且集合类的底层也都是通过数组实现的。       我们大家都知道,在Java中数组是定长的,一旦初始化以后,就不可以改变其长度,而这在实际应用中是不方便的。...

2016-03-22 13:46:03 615

Java编程之构造代码块

       最近工作不忙,闲来无事,就看看书,今天遇到了构造代码块让我一顿好奇。构造函数倒是了解一些,构造代码块还是第一次听说,那么到底什么是构造代码块?      其实,构造代码块是代码块的一种类型。代码块是指用大括号把多行代码封装在一起,形成一个独立的数据体,实现特定算法的代码集合。一般来说,代码块是不能单独运行,必须要有运行主体。在Java中一共有四种类型的代码块,即:    ...

2016-03-16 16:35:16 154

Java编程之脚本语言的使用

一、背景       利用Java语言编写系统的时候,经常会遇到业务需求的变更而导致修改代码,甚至有些时候还需要修改核心代码(如果整个系统架构设计的不合理的话)。为了避免这种问题,在Java编程的时候,我们应该将易变业务使用脚本语言编写。       Java世界一直在遭受着“异族”的入侵,比如PHP、Ruby、Groovy、JavaScript等,这些入侵者都有一个共同的特征:全是同...

2016-03-15 16:28:18 206

Scala编程之归并排序

       在排序算法中,归并排序比插入排序的效率更高,下面通过Scala语言实现归并排序。/** * Created by user on 2016/1/22. */object MergeSort { def mergeSort[T](less: (T, T) => Boolean)(xs: List[T]): List[T] = { def ...

2016-01-25 15:34:27 157

Scala编程之插入排序

一、总述       排序,这是一个十分经典且实用的算法。不论,你学习的何种编程语言,排序算法都是作为软件工程师或研发工程师所必须掌握的东西。最近一直在学习Scala,下面就通过Scala语言实现插入排序算法。 二、插入排序算法       定义一个名为InsertSort的object对象/** * Created by user on 2016/1/22. *...

2016-01-22 14:46:16 268

Scala编程之Option

一、总述       在《Scala编程之样本类与模式匹配》的文章中,鄙人以一个实例介绍了样本类与模式匹配,本篇介绍一个更有趣的东西:Option。       Scala为可选值提供了一个标准类型:Option。这种类型有两个值:Some(x)和None,其中x表示实际值,而None对象代表缺省值。       下面通过编写一个简单的实例实现两种功能:Option类型的两种值;解析...

2016-01-21 17:18:53 137

Scala编程之样本类与模式匹配

一、总述       在今天的Scala编程的学习过程中,发现了Scala语言中十分有趣的东西:样本类、模式匹配。对于样本类和模式匹配的概念,鄙人通过一个自己编写的实例给出对应的说明。 二、实例展示       1、定义一个抽象类Expr,并且在该类的内部定义了几个不同的类,如代码中所示:/** * Created by user on 2016/1/21. *...

2016-01-21 14:51:26 100

证明Java不是纯面向对象语言

一、论述       在我们刚接触Java语言的时候,所有的教材或老师都会和你讲这样一点:Java是一门面向对象的编程语言。用2015年比较流行的网络语就是:Java是一门面向对象的编程语言、Java是一门面向对象的编程语言、Java是一门面向对象的编程语言,重要的事说三遍!!!       那Java到底是怎样的一门面向对象的编程语言呢,鄙人给出的结论是Java不是纯面向对象的。也许...

2016-01-20 15:39:52 403

Scala编程之螺旋

一、概述       今天在《Scala In Programming》中学习了关于Scala的组合与继承,下面通过一个实例作为知识的巩固。 二、实例展示       1、实例名称:            根据给定的边界值,画出一个螺旋。       2、实例描述:            a、首先给出四个类:Element、ArrayElement、UniformEl...

2016-01-18 16:35:41 283

Scala编程之打印标准乘法表

       在阅读了《Scala InProgramming》一文中学习了Scala语言的内建控制结构,为了巩固学习的内容,特意以写了一个小程序:打印标准乘法表,作为这一部分的完结。       1、打印标准乘法表的实现类class PrintMulTable(start: Int,end: Int) { val begin = this.start val finis...

2016-01-14 16:51:01 500

Scala编程之分数的四则运算

       在前面一篇关于Scala编程的文章中简单的介绍了Scala语言,关于Scala语言的一些语法及规则,如有感兴趣的朋友可以自己阅读相关书籍,鄙人诚挚推荐《Scala In Programming》,下面利用Scala语言实现简单的分数四则运算。      1、分数的四则运算类class Rational(n: Int,d: Int) { //分母不能为0的校验 ...

2016-01-14 14:47:53 807

Scala编程之文件操作

一、简述       Scala语言的名称来自于“可伸展的语言”。之所以这样命名,是因为他被设计成随着使用者的需求而成长。用Scala语言编写应用程序可以有很大的范围:小到写脚本,大到建立大系统。       Scala是很容易进入的语言,它跑在标准的Java平台上,可以与所有的Java库实现无缝交互。它也是用来编写脚本把Java控件链在一起的很好的语言,但是用它来建立大系统和可重用控件...

2016-01-14 14:30:33 199

原创 Web容器Jetty

一、Jetty简介       Jetty 是一个开源的servlet容器,它为基于Java的web容器(例如JSP和servlet)提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。       开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。 二、Jetty...

2015-09-07 14:32:28 211

原创 设计模式之抽象工厂模式

抽象工厂模式       工厂方法模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。附件中的类图说明了抽象工厂模式各部分之间的关系。示例代码如下:       publ...

2015-07-22 15:29:46 69

原创 设计模式之工厂方法模式

工厂方法模式    本篇中将设计模式中的工厂方法模式分为两种:    1、简单工厂方法模式:就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。附件中简单工厂模式类图说明了这类设计模式的关系。示例代码如下:     public interface Product { public void product();}   public class Pr...

2015-07-22 14:46:18 61

原创 设计模式之概述

一、什么是设计模式       设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种...

2015-07-22 11:49:35 53

Hessian学习笔记之HessianRPC

一、总述       在Hessian学习笔记之上传文件这一篇中,通过一个实例讲解了如何通过Hessian实现上传文件。Hessian最主要的特征之一就是远程过程调用(Remote Procedure Call,RPC)。下面通过一个简单的实例说明。 二、实例展示     1、环境搭建          开发工具:eclipse + tomcat。          服...

2015-07-15 10:52:54 135

Hessian学习笔记之上传文件

      在Hessian学习笔记之Hessian实例这一篇中简单介绍了Hessian的一个入门实例,本篇主要是深入学习Hessian,即利用Hessian实现文件上传。      1、服务端接口    import java.io.InputStream;/** * 文件上传服务接口 * */public interface FileUploadServ...

2015-07-14 14:58:24 197

Java线程池学习笔记二

一、背景              在Java线程池学习笔记一中,理解了几个常用的常用的线程池创建的静态工程方法。本篇就Java线程池中的核心:ThreadPoolExecutor,作深入的学习。 二、ThreadPoolExecutor的详细分析       ThreadPoolExecutor是java.util.concurrent包中一个类,它实现了Executor和Ex...

2015-07-10 14:32:11 82

原创 Java线程池学习笔记一

一、什么是线程池       线程池是一种多线程处理技术。在处理线程的过程中,先将任务(作业)添加到队列,然后在创建线程后自动启动这些任务(作业)。       线程池是由以下几部分组成的:       1、线程池管理器(ThreadPoolManager):用于创建并管理线程池       2、工作线程(WorkThread):线程池中线程       3、任务接口(Ta...

2015-07-09 17:13:09 106

原创 Apache对象池插件common-pool学习小结

一、背景       对于使用面向对象语言开发软件的童鞋们都知道,对象是一个十分重要的概念,用Thinking in Java绪论里面的话说:一切皆是对象。       因为对象的重要性,所以在某些大型的应用系统中,对象会被频繁的创建并使用,这就会导致开发人员需要对系统的性能进行调优,特别是在系统耗时方法更是需要着重优化。幸好,有Apache这样一个组织,给奋斗在第一线的广大IT民工提...

2015-07-08 15:57:06 212

原创 对象池、连接池、线程池

在绝大多数的JavaWeb的应用系统开发过程中,经常会听到或见到这样的三个专业名词:对象池、连接池、线程池。下面就这三个专业知识做一个简单的小结:1.对象池   对象池技术通常是在服务器端开发使用的技术,使用该项技术的主要原因是减少从头创建每个对象的系统开销,提高系统性能。其主要做法是:创建一个对象池,将一定数量的对象缓存到这个对象池中,需要使用时直接从对象池中取出对象,使用完后将对象扔...

2015-07-07 15:27:48 493

原创 编写自己的Exception

在实际的工作中,通常需要定义自己功能模块相关的异常,下面一个实例可以实现定义自己的异常: 1.定义一个异常码抽象类作为基类public abstract class BaseExceptionCode { private String errorMessage ; private int errorCode ; private final BaseExcept...

2015-07-07 14:24:17 227

Zookeeper学习笔记一

1.前言              由于在开发产品的过程中接触到了Zookeeper,业余时间学习并开发了一个利用Zookeeper实现分布式锁的实例。 2.Zookeeper简介       大家对于分布式架构,可能比较熟悉Hadoop,而Zookeeper是Hadoop的一个子项目。Zookeeper本身包含一个简单的原语集,并且是一个分布式的、开源的应用程序协调服务架构。...

2015-07-06 18:05:08 81

Hessian学习笔记之Hessian实例

1.简介     Hessian是一个轻量级的remoting on http工具,通过简单的方法提供了RMI的功能。 与WebService相比较而言,Hessian更简单、快捷。     Hessian采用的是二进制的RPC协议,正是因为它采用的是二进制协议,所以它很适合于发送二进制数据。 2.实例讲解   服务端:              a.下载hessian...

2015-06-24 17:04:29 220

利用lucene对文件内容进行关键字检索

在具体实现之前,请根据自己的要求,建立对应的路径及文件。例如,我这边创建的路径及文件是:     D:/tools/LearningByMyself/lucene/source/demo1.txtD:/tools/LearningByMyself/lucene/source/demo2.txtD:/tools/LearningByMyself/lucene/index 第一步,建...

2015-06-24 12:54:16 279

浮动在左侧的QQ客服代码_带有弹性可伸缩的在线客服代码

HTML+CSS+JQUERY,既有源码,又有效果!

2013-10-24

空空如也

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

TA关注的人

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