自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

java的平凡之路

博客的文章都是平时学习或者遇到其他人写的不错的文章分享,也是做一个记录,希望大家喜欢

  • 博客(62)
  • 资源 (3)
  • 收藏
  • 关注

转载 JAVA中的观察者模式实例教程

观察者模式是一种行为设计模式。观察者模式的用途是,当你对一个对象的状态感兴趣,希望在它每次发生变化时获得通知。在观察者模式中,观察另外一个对象状态的对象叫做Observer观察者,被观察的对象叫着Subject被观察者。根据GoF规则,观察者模式的意图是:定义对象之间一对多的依赖关系,一个对象状态改变,其他相关联的对象就会得到通知并被自动更新。Subject(被观察者)

2017-04-29 08:07:34 612

转载 观察者模式

定义:定义对象间一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。类型:行为类模式类图:在软件系统中经常会有这样的需求:如果一个对象的状态发生改变,某些与它相关的对象也要随之做出相应的变化。比如,我们要设计一个右键菜单的功能,只要在软件的有效区域内点击鼠标右键,就会弹出一个菜单;再比如,我们要设计一个自动部署的功能,就像

2017-04-29 08:02:16 364

转载 原型模式

定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。类型:创建类模式类图:原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件:实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有一个,就是在运行时通知虚拟机可以安全地在实现了此接口的类

2017-04-28 09:11:08 289

转载 模版方法模式

定义:定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。类型:行为类模式类图:事实上,模版方法是编程中一个经常用到的模式。先来看一个例子,某日,程序员A拿到一个任务:给定一个整数数组,把数组中的数由小到大排序,然后把排序之后的结果打印出来。经过分析之后,这个任务大体上可分为两部分,排序和打印,打印功

2017-04-28 09:10:40 242

转载 Rocketmq整体分析

之前本人在实际的生产环境中,使用过activemq和rabbitmq消息队列,在使用过程中出现一些难以解决的问题,本文通过产品选型、网络架构和核心特性分析了rocketmq的优势和特性。产品选型    我们在进行中间件选型时,一般都是通过下面几点来进行产品选型的:    1.性能    2.功能支持程度    3.开发语言(团队中是否有成员熟悉此中间件的

2017-04-27 18:02:47 390

转载 RocketMQ与Kafka对比(18项差异)

淘宝内部的交易系统使用了淘宝自主研发的Notify消息中间件,使用MySQL作为消息存储媒介,可完全水平扩容,为了进一步降低成本,我们认为存储部分可以进一步优化,2011年初,Linkin开源了Kafka这个优秀的消息中间件,淘宝中间件团队在对Kafka做过充分Review之后,Kafka无限消息堆积,高效的持久化速度吸引了我们,但是同时发现这个消息系统主要定位于日志传输,对于使用在淘宝交易、订单

2017-04-27 17:52:13 1724

转载 分布式消息队列RocketMQ部署与监控

一、RocketMQ简介==========================================================================================RocketMQ是一款分布式、队列模型的消息中间件,具有以下特点:1、支持严格的消息顺序;2、支持Topic与Queue两种模式;3、亿级消息堆积能力;

2017-04-27 17:50:08 427

转载 消息中间件RocketMQ的安装与部署

官方简介:RocketMQ是一款分布式、队列模型的消息中间件,具有以下特点:能够保证严格的消息顺序提供丰富的消息拉取模式高效的订阅者水平扩展能力实时的消息订阅机制亿级消息堆积能力1.安装RocketMQ1.1 安装环境git,Java,Maven   安装git

2017-04-27 17:49:19 827

转载 Spring的IOC原理

1. IoC理论的背景我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑。图1:软件系统中耦合的对象如果我们打开机械式手表的后盖,就会看到与上面类似的情形,各个齿轮分别带动时针、分针和秒针顺时针旋转,从而在表盘上产生正确的时间。图1中描述的就是这样的一个齿轮组,它拥有多个独立的齿轮,这些

2017-04-27 09:52:07 663

转载 抽象工厂模式

定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。类型:创建类模式类图:抽象工厂模式与工厂方法模式的区别抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。他与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。在编程中,通常一个产品结构,表现为一个接

2017-04-27 09:51:33 728

转载 工厂方法模式

定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。类型:创建类模式类图:工厂方法模式代码[java] view plaincopyinterface IProduct {public void productMethod();}class 

2017-04-27 09:50:45 300

转载 建造者模式

定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。类型:创建类模式类图:四个要素产品类:一般是一个较为复杂的对象,也就是说创建对象的过程比较复杂,一般会有比较多的代码量。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成。

2017-04-26 18:32:51 264

转载 java提高篇----详解内部类

可以将一个类的定义放在另一个类的定义内部,这就是内部类。      内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二)。第一次见面      内部类我们从外面看是非常容易理解的,无非就是在一个类的内部在定义一个类。public class OuterClass { private Strin

2017-04-26 17:53:56 250

转载 java设计模式之建造者模式

定义:建造者模式:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。实用范围1、当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。2、当构造过程必须允许被构造的对象有不同表示时。角色在这样的设计模式中,有以下几个角色:1、Builder:为创建一个产品对象的各个部件指定抽象接口。2、ConcreteBuil

2017-04-26 16:56:16 1636

转载 用java实现建造者模式

最近在公司阅读代码时发现有些实体类具有很多的属性。于是就想到了用建造者模式进行优化一下。跟工厂模式和抽象工厂模式一样,建造者模式也属于创建型设计模式。该设计模式主要用于解决在工厂模式和抽象工厂模式中由于对象具有众多属性所带来的问题。这些问题主要三个方面:在客户端程序与工厂类传递参数的参数的过程中很容易出错,因为大部分情况下,参数类型相同,而且对于客户端程序来说这是比较难以维护。一些变量

2017-04-26 16:55:28 2041

原创 快速理解Java中的五种单例模式

解法一:只适合单线程环境(不好)package test;/** * @author xiaoping * */public class Singleton { private static Singleton instance=null; private Singleton(){ } public static Single

2017-04-26 14:59:33 367

转载 java 获取系统变量(环境变量和设置变量)

前言环境变量这个概念不陌生, 就是操作系统的环境变量。系统变量就是java本身维护的变量。 通过 System.getProperty 的方式获取。对于不同的操作系统来说, 环境变量的处理可能会有一些不统一的地方, 比如说: 不区分大小写 等等。Java 获取环境变量Java 获取环境变量的方式很简单: System.getE

2017-04-25 14:32:56 5590

转载 Java Servlet完全教程

Servlet 是一些遵从Java Servlet API的Java类,这些Java类可以响应请求。尽管Servlet可以响应任意类型的请求,但是它们使用最广泛的是响应web方面的请求。 Servlet必须部署在Java servlet容器才能使用。虽然很多开发者都使用Java Server Pages(JSP)和Java Server Faces(JSF)等Servlet框架,但是这些技术都

2017-04-24 09:18:38 692

转载 百万级访问网站前期的技术准备

百万级访问网站前期的技术准备开了自己域名的博客,第一篇就得来个重磅一点的才对得起这4美金的域名。作为一个技术从业者十年,逛了十年发现有些知识东一榔头西一棒槌的得满世界 看个遍才整理出个头绪,那咱就系统点的从头一步一步的说,一个从日几千访问的小小网站,到日访问一两百万的小网站,怎么才能让它平滑的度过这个阶段,别在 技术上出现先天不足,写给一些技术人员,也写给不懂技术的创业者。

2017-04-22 09:13:06 680

转载 Redis 内部数据结构详解(1):dict

本系列基于 Redis 3.2 分支如果你使用过Redis,一定会像我一样对它的内部实现产生兴趣。《Redis内部数据结构详解》是我准备写的一个系列,也是我个人对于之前研究Redis的一个阶段性总结,着重讲解Redis在内存中的数据结构实现(暂不涉及持久化的话题)。Redis本质上是一个数据结构服务器(data structures server),以高效的方式实现了多种现成的

2017-04-22 09:12:32 961

转载 理解大型分布式网站你必须知道这些概念

1. I/O优化增加缓存,减少磁盘的访问次数。优化磁盘的管理系统,设计最优的磁盘方式策略,以及磁盘的寻址策略,这是在底层操作系统层面考虑的。设计合理的磁盘存储数据块,以及访问这些数据库的策略,这是在应用层面考虑的。例如,我们可以给存放的数据设计索引,通过寻址索引来加快和减少磁盘的访问量,还可以采用异步和非阻塞的方式加快磁盘

2017-04-21 09:18:20 269

转载 编码的故事

快下班了,爱问问题的小朋友Nico又问了一个问题:“sqlserver里面有char和nchar,那个n据说是指unicode的数据,这个是什么意思。”并不是所有简单的问题都很容易回答,就像这个问题一样。于是我答应专门写一篇文章来从头讲讲编码的故事。那么就让我们找个草堆坐下,先抽口烟,看看夜晚天空上的银河,然后想一想要从哪里开始讲起。嗯,也许这样开始比较好……很久很久以前,

2017-04-21 09:17:49 1297

转载 ​应用级缓存示例

应用级缓存示例  多级缓存API封装  我们的业务数据如商品类目、店铺、商品基本信息都可以进行适当的本地缓存,以提升性能。对于多实例的情况时不仅会使用本地缓存,还会使用分布式缓存,因此需要进行适当的API封装以简化缓存操作。  1.本地缓存初始化  public class LocalCacheInitService extends BaseService {  @Overri

2017-04-21 09:17:23 3520

转载 MySQL 主从复制搭建,基于日志(binlog)

什么是MySQL主从复制简单来说,就是保证主SQL(Master)和从SQL(Slave)的数据是一致性的,向Master插入数据后,Slave会自动从Master把修改的数据同步过来(有一定的延迟),通过这种方式来保证数据的一致性,就是主从复制。MySQL主从能解决什么问题一、高可用因为数据都是相同的,所以当Mast

2017-04-20 09:21:08 1513

转载 负载均衡原理的解析

开头先理解一下所谓的“均衡”不能狭义地理解为分配给所有实际服务器一样多的工作量,因为多台服务器的承载能力各不相同,这可能体现在硬件配置、网络带宽的差异,也可能因为某台服务器身兼多职,我们所说的“均衡”,也就是希望所有服务器都不要过载,并且能够最大程序地发挥作用。一、http重定向当http代理(比如浏览器)向web服务器请求某个URL后,

2017-04-20 09:20:23 414

转载 java Timer(定时调用、实现固定时间执行)

最近需要用到定时调用的功能。可以通过java的Timer类来进行定时调用,下面是有关Timer的一些相关知识。  其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个类,而具体的TimerTask需要由你自己来实现,例如这样: Timer timer = new Timer();timer.schedule(new TimerTas

2017-04-19 12:37:52 706

转载 Java HotSpot VM命名参数选项详解

Java Hotspot VM 可选参数选项可以划分为四类:Ø 行为选项改变了基本VM的行为。Ø G1垃圾收集器选项(GarbageFirst (G1) Garbage Collection Options)Ø 性能调优选项就一个个能够用来调节VM性能的旋钮Ø 调试选项一般跟踪、打印或是输出VM信息。在跟踪程序的处理流程非常有用,尤其对于不知道程序有问题而不知道问题

2017-04-19 09:31:38 3423

转载 Google Guava 不可变集合

范例public static final ImmutableSet COLOR_NAMES = ImmutableSet.of( "red", "orange", "yellow", "green", "blue", "purple");class Foo { Set bars;

2017-04-19 09:31:14 591

转载 JAVA多线程--信号量(Semaphore)

简介        信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。        一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用

2017-04-18 14:36:07 264

转载 关于分布式事务、两阶段提交协议、三阶提交协议

随着大型网站的各种高并发访问、海量数据处理等场景越来越多,如何实现网站的高可用、易伸缩、可扩展、安全等目标就显得越来越重要。为了解决这样一系列问题,大型网站的架构也在不断发展。提高大型网站的高可用架构,不得不提的就是分布式。在《分布式系统的一致性探讨》一文中主要介绍了分布式系统中存在的一致性问题。本文将简单介绍如何有效的解决分布式的一致性问题,其中包括什么是分布式事务,二阶段提交和三阶段提

2017-04-18 14:19:42 333

转载 分布式事务 - 两阶段提交与三阶段提交

在分布式系统中,著有CAP理论,该理论由加州大学伯克利分校的Eric Brewer教授提出,该理论阐述了在一个分布式系统中不可能同时满足一致性(Consistency)、可用性(Availability),以及分区 容错性(Partition tolerance)。一致性在分布式系统中数据往往存在多个副本,一致性描述的是这些副本中的数据在内容和组织上的一致。可用性可用性描述了系统对

2017-04-18 14:18:54 345

转载 分布式系统中的一致性协议之两阶段提交协议(2PC)

两阶段提交协议是很常见的解决分布式事务的方式,他可以保证分布式事务中,要么所有参与的进程都提交事务成功,要么都取消事务,这样做可以在分布式环境中保持ACID中A(原子性)。     在两阶段提交协议中,包含了两种角色:协调者与参与者。参与者就是实际处理事务的机器,而协调者就是其中一台单独的处理分布式事务的机器。     该算法分为两个阶段:     1.投票阶段     2.提交阶

2017-04-18 14:17:26 326

转载 eclipse中使用git

有的eclipse已经自带了GIt了,就不用安装了。如果,想重新安装,可以先卸载GIT,卸载不同eclipse卸载不一样:1.在Eclipse中依次点击菜单"Help"->"About Eclipse"。弹出图1所示对话框,点击"Installation Details"按钮,弹出图2所示对话框。选中要卸载的插件(按住Ctrl可多选),点击"Uninstall..."按钮。

2017-04-18 13:51:54 1421

转载 Eclipse上安装GIT插件EGit及使用

一、Eclipse上安装GIT插件EGit       Eclipse的版本eclipse-java-helios-SR2-win32.zip(在Eclipse3.3版本找不到对应的 EGit插件,无法安装)         EGit插件地址:http://download.eclipse.org/egit/updates

2017-04-18 13:51:13 667

转载 eclipse插件egit安装使用

网络上的介绍一堆堆的,但是自己尝试了下,发现问题很多,就动手做个教程。大纲  1.git客户端安装  2.ssh配置  3.egit安装配置  4.参考资料  Ps:为了增加乐趣,文章并没有按照大纲来描述,如果您急着搭建egit,请尽量按大纲顺序来配置,可以少走弯路1.egit的安装    当然也可以选择在Eclipse Marketplace中搜索

2017-04-18 13:50:15 1420

转载 降级特技之使用Hystrix实现降级和熔断—《亿级流量网站架构核心技术》

使用Hystrix实现降级  通过配置中心可以人工进行降级,而我们也需要根据服务的超时时间进行自动降级,本部分将演示使用Hystrix实现超时自动降级。Hystrix介绍请参考“第3章 隔离术”中的Hystrix简介部分。  public class GetStockServiceCommand extends HystrixCommand {  private StockServic

2017-04-18 09:27:12 5855

转载 聊聊分布式事务

分布式事务场景如何设计系统架构及解决数据一致性问题,个人理解最终方案把握以下原则就可以了,那就是:大事务=小事务(原子事务)+异步(消息通知),解决分布式事务的最好办法其实就是不考虑分布式事务,将一个大的业务进行拆分,整个大的业务流程,转化成若干个小的业务流程,然后通过设计补偿流程从而考虑最终一致性。什么是事务事务(Transaction)及其ACID属

2017-04-18 09:26:40 839

转载 Java 阻塞队列实现原理分析

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

2017-04-18 09:25:50 480

转载 Apache RocketMQ4.0.0

阿里rocketmq,有广泛的应用场景,订单,交易,充值,流计算,消息推送,日志流式处理,binglog分发等多个业务领域。已正式成为apache项目,也于年前刚发布4.0.0版本,本文初试服务端和客户端 1 服务端安装1.0 安装准备CentOS release 6.8 (Final)64bit OS, Linux/Unix/Mac is recommended;64

2017-04-17 15:33:51 2531

转载 阿里RocketMQ Quick Start

RocketMQ单机支持1万以上的持久化队列,前提是足够的内存、硬盘空间,过期数据数据删除(RocketMQ中的消息队列长度不是无限的,只是足够大的内存+数据定时删除)RocketMQ版本:3.1.4 一,部署NameServer:1,安装JDK并设置JAVA_HOME环境变量(启动脚本依赖JAVA_HOME环境变量)2,cd /alibaba-rocketmq/bin进入Ro

2017-04-17 15:30:06 398

51CTO下载-社区视频监控系统VC++MFC源代码

SFDGH反复各回个话的复试地方法过后果后的发挥规范化付首付供货商

2011-03-18

院前心电图远程实时快速网络传输模式建立

fbndnfmvnbnxcvcgfdbgnbnbnxzxf

2011-03-18

51CTO下载-社区视频监控系统VC++MFC源代码

发个环境斤斤计较见见就发广告干哥哥古古怪怪古古怪怪

2011-03-18

空空如也

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

TA关注的人

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