- 博客(63)
- 收藏
- 关注
转载 RocketMQ基础概念及使用总结
一.了解RocketMQ?rocketMQ是阿里开源的一款十分优秀的消息队列,rocketMQ具有很多其他消息队列不具有的特性,更重要的是rocketMQ是用java开发的学习成本较低,并且经历了双11的数据洪峰的考验。rocketMQ已经加入了apache,成为apache的顶级项目,最近阿里的另一款开源项目dubbo也重新开始维护。阿里在RocketMQ 项目基础上衍生的项目如下:...
2018-10-24 13:57:21
450
转载 分布式架构核心RPC原理
在应用的迭代演进过程中,随着系统访问量提高,业务复杂度提高,代码复杂度提高,应用逐渐从单体式架构向面向服务的分布式架构转变。RPC(Remote Procedure Call Protocol远程过程调用)是分布式架构的核心,按响应方式分如下两种:同步调用:客户端调用服务方方法,等待直到服务方返回结果或者超时,再继续自己的操作异步调用:客户端把消息发送给中间件,不再等待服务端返回,直接继续...
2018-10-24 13:56:04
352
转载 消息中间件:RocketMQ 介绍(特性、术语、原理、优缺点、消息顺序、消息重复)
消息中间件的作用1. 应用解耦2. 异步处理比如用户注册场景,注册主流程完成以后,需要调用邮件系统发送邮件通知用户注册成功,可能还需要调用其他系统。这是串行的,如果一个系统依赖很多系统,那么这个主流程会比较长,耦合度高,整个系统维护成本也会越来越高。那么我们就可以使用消息中间件来进行解耦,通过发布订阅模式,完成用户注册之后,向中间件发送消息,这样就可以马上给用户返回,至于后续工作其他系...
2018-10-24 13:54:30
872
转载 SOA、SOAP、RPC、REST、DUBBO的区别与联系
1、SOASOA(面向服务的软件架构、Service Oriented Architecture),是一种软件设计模式,主要应用于不同应用组件之间通过某种协议来互操作。例如典型的 通信网络协议。因此SOA是独立于任何厂商、产品、技术的。SOA有两个层面的定义: 从应用的角度定义:SOA是一种应用框架,它着眼于日常的业务应用,并将他们划分为单独的业务功能和流程,及所谓的服务。...
2018-10-24 13:51:35
834
转载 RPC入门总结(一)RPC定义和原理
一、RPC1. RPC是什么RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。R...
2018-10-24 13:49:59
1187
1
原创 iBatis查询复杂集合
通常我们使用iBatis的select查询都是映射的简单对象,即便在一个查询中连接多个表也是如此,那么既然iBatis是SQL Mapper,也就是说它可以映射复杂集合,我们来看看如何让对象模型向数据模型(关系型数据模型)靠拢。 假设在在线购物应用中,我们有用户表User,订单表Order和订单项表OrderItem,它们之间存在的关联是显而易见的。用户可以下订单,而订单中可以包含多个
2016-11-22 10:44:50
2187
原创 Java内存区域与内存溢出
内存区域 Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域。Java虚拟机规范将JVM所管理的内存分为以下几个运行时数据区:程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区。下面详细阐述各数据区所存储的数据类型。 程序计数器(Program Counter Register) 一块较小的内存空间,它
2016-11-22 10:41:03
393
原创 观察者模式
一、基本定义 何谓观察者模式?观察者模式定义了对象之间的一对多依赖关系,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并且自动更新。 在这里,发生改变的对象称之为观察目标,而被通知的对象称之为观察者。一个观察目标可以对应多个观察者,而且这些观察者之间没有相互联系,所以么可以根据需要增加和删除观察者,使得系统更易于扩展。 观察者模式又
2016-09-29 13:23:11
412
原创 JDBC连接各种数据库的字符串
JDBC连接各种数据库的字符串大同小异,在此总结一下,备忘。oracle driverClass:oracle.jdbc.driver.OracleDriver url:jdbc:oracle:thin:@127.0.0.1:1521:dbnamemysql driverClass:com.mysql.jdbc.Driver PS:有的时候,mysq
2016-09-21 08:27:33
380
原创 Hibernate的五大核心接口
Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和 Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五的核心接口分别加以介绍。·Session接口:Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完
2016-09-14 17:28:13
844
原创 SpringEL详解及应用
什么是SpringEL? Spring3中引入了Spring表达式语言—SpringEL,SpEL是一种强大,简洁的装配Bean的方式,他可以通过运行期间执行的表达式将值装配到我们的属性或构造函数当中,更可以调用JDK中提供的静态常量,获取外部Properties文件中的的配置 为什么要使用SpringEL? 我们平常通过配置文件或Annotaton注入的Bean,其实
2016-09-14 17:23:30
4458
原创 Java反射机制初涉
一、什么是反射机制 简单的来说,反射机制指的是程序在运行时能够获取自身的信息。在java中,只要给定类的名字, 那么就可以通过反射机制来获得类的所有信息。 二、哪里用到反射机制 有些时候,我们用过一些知识,但是并不知道它的专业术语是什么,在刚刚学jdbc时用过一行代码, Class.forName("c
2016-09-14 17:21:33
619
原创 Java多线程的用法详解
1.创建线程 在Java中创建线程有两种方法:使用Thread类和使用Runnable接口。在使用Runnable接口时需要建立一个Thread实例。因此,无论是通过Thread类还是Runnable接口建立线程,都必须建立Thread类或它的子类的实例。Thread构造函数:public Thread( ); public Thread(Runnable target);
2016-09-14 17:20:04
542
原创 Struts面试题
一、struts2工作流程1、Struts 2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。1)核心控制器FilterDispatcher是Struts 2框架的基础,包含了框架内部的控制流程和处理机制。2)业务控制器Action和业务逻辑组件是需要用户来自己实现的。用户在开发Action和业务逻辑组件的同
2016-09-14 17:15:45
780
转载 工行网银B2c第三方接口开发
最近做网络商城的一个网银支付接口,可算给我焦死了,各种规则啊,总体来说比较麻烦,也不算难,只要搞清楚流程就好了。下面理清一下思路来说一下;需要准备一些什么?首先要带上银行卡和身份证去当地分行申请开发B2c第三方网银接口。然后当地银行会给你一个.pfx的文件。这其实就是一个加密的证书,然后你点击安装,输入你申请的公文阴匙,会把.pfx文件,拆分成.crt和.key的文件。这些文件的用
2016-09-14 17:14:42
1412
原创 Java NIO Socket VS 标准IO Socket
简介 Java NIO从JDK1.4引入,它提供了与标准IO完全不同的工作方式。NIO包(java.nio.*)引入了四个关键的抽象数据类型,它们共同解决传统的I/O类中的一些问题。 1、 Buffer:它是包含数据且用于读写的线形表结构。其中还提供了一个特殊类用于内存映射文件的I/O操作。 2、 Charset:它提供Unicode字符串影射到字节序列以及逆影
2016-09-13 08:31:13
291
原创 LinkedList源码剖析
LinkedList简介 LinkedList是基于双向循环链表(从源码中可以很容易看出)实现的,除了可以当做链表来操作外,它还可以当做栈、队列和双端队列来使用。 LinkedList同样是非线程安全的,只在单线程下适合使用。 LinkedList实现了Serializable接口,因此它支持序列化,能够通过序列化传输,实现了Cloneable接口,能被克隆。
2016-08-12 09:47:58
258
原创 ArrayList源码剖析
ArrayList简介 ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。 ArrayList不是线程安全的,只能用在单线程环境下,多线程环境下可以考虑用Collections.synchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的Cop
2016-08-12 09:46:08
226
原创 Java集合框架
Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组、链表、栈、队列、集合、哈希表等。学习Java集合框架下大致可以分为如下五个部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具类(Arrays、Collections)。 Java集合类的整体框架如下: 从上图中可以看出,集合类主要分为两大类:C
2016-08-12 09:44:51
266
原创 Spring框架参考文档-核心技术-IoC容器
基本概念: @Bean 和 @Configuration在Spring新的Java配置支持中,其核心构件是@Configuration注解类和@Bean注解方法.@Bean 注解用来表示方法实例化,配置以及初始化由Spring IoC容器管理的新对象.对于那些熟悉Spring XML配置的人来说,@Bean 注解扮演了与 元素相同的角色.你可以在任何Spring@Co
2016-08-09 14:37:56
509
原创 Redis常用命令
Redis::__construct描述:创建一个Redis客户端范例:$redis = new Redis(); connect, open描述:实例连接到一个Redis.参数:host: string port: int返回值:BOOL 成功返回:TRUE;失败返回:FALSE范例:$redis->connect(‘127.0.
2016-08-09 13:09:39
641
转载 HTTP请求中如何选择Get和Post方式
在应用中最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet。post与get的不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。一、 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。二、 g
2016-08-09 09:04:57
8276
原创 java多线程详细总结
一、Thread.start()与Thread.run()的区别通过调用Thread类的start()方法来启动一个线程,这时此线程是处于就绪状态,并没有运行。然后通过此Thread类调用方法run()来完成其运行操作的,这里方法run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程终止,而CPU再运行其它线程。而如果直接用Run方法,这只是调用一个方法而已,
2016-08-09 09:01:55
392
转载 解惑rJava R与Java的高速通道
R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大。R语言作为统计学一门语言,一直在小众领域闪耀着光芒。直到大数据的爆发,R语言变成了一门炙手可热的数据分析的利器。随着越来越多的工程背景的人的加入,R语言的社区在迅速扩大成长。现在已不仅仅是统计领域,教育,银行,电商,互联网….都在使用R语言。要成为有理想的极客,我们不能
2016-08-09 08:58:24
462
原创 MyEclipse搭建SSH框架 Struts2.1+Spring3.0+hibernate3.3
1、 配置Tomcat配置Tomcat所在路径配置Tomcat使用JDK版本如果Tomcat为7.0则添加Tomcat-juli.jar包2、 new一个web project。2、右键项目,为项目添加Struts支持。 点击Finish。src目录下多了struts.x
2016-08-04 20:06:00
324
原创 spring_对JDBC的支持
7.1 概述7.1.1 JDBC回顾 传统应用程序开发中,进行JDBC编程是相当痛苦的,如下所示: java代码:Java代码 //cn.javass.spring.chapter7. TraditionalJdbcTest @Test public void test() throws Exceptio
2016-08-04 20:03:11
2235
原创 spring_依赖注入(DI)
3.1.1 依赖和依赖注入 传统应用程序设计中所说的依赖一般指“类之间的关系”,那先让我们复习一下类之间的关系: 泛化:表示类与类之间的继承关系、接口与接口之间的继承关系; 实现:表示类对接口的实现; 依赖:当类与类之间有使用关系时就属于依赖关系,不同于关联关系,依赖不具有“拥有关系”,而是一种“相识关系”,只在某个特定地方(比
2016-08-04 20:01:35
333
原创 Spring_AOP通知、代理
通知参数 前边章节已经介绍了声明通知,但如果想获取被被通知方法参数并传递给通知方法,该如何实现呢?接下来我们将介绍两种获取通知参数的方式。使用JoinPoint获取:Spring AOP提供使用org.aspectj.lang.JoinPoint类型获取连接点数据,任何通知方法的第一个参数都可以是JoinPoint(环绕通知是ProceedingJoinPoint,Join
2016-08-04 19:59:30
393
原创 spring_集成框架
10.1 概述10.1.1 Spring和Web框架 Spring框架不仅提供了一套自己的Web框架实现,还支持集成第三方Web框架(如Struts1x、Struts2x)。 Spring实现的SpringMVC Web框架将在第十八章详细介绍。 由于现在有很大部分公司在使用第三方Web框架,对于并不熟悉S
2016-08-04 19:57:34
2046
原创 java对redis的基本操作
一、server端安装 1、下载 https://github.com/MSOpenTech/redis 可看到当前可下载版本:redis2.6 下载windows平台文件: 解压后,选择当前64位win7系统对应的版本: 2、安装 1)解压后将里面所有文件拷贝至redis安装目录:
2016-08-04 10:18:36
276
原创 java面试题
1、面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称
2016-08-01 20:47:48
289
原创 Session和Cookie的作用和区别
一、cookie机制和session机制的区别 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。 同时我们也看到,由于在服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上还有其他选择。二、会话cookie和持久cookie的区别
2016-08-01 17:29:31
530
原创 什么时候使用接口?什么时候使用抽象?选择Java接口还是抽象类
在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。在这种情况下,各个对象内部是如何实现自己的对系统设计人员来讲就不那么重要了;而各个对象之间的协作关系则成为系统设计的关键。小到不同类之间的通信,大到各模块之间的交互,在系统设计之初都是要着重考虑的,这也是系统设计的主要工作内容。面向接口编程我想就是指按照这种思想来编程吧!实际上,在日常工作中,你已经按照接口编程了,只不过如果你
2016-08-01 17:13:38
1312
原创 Java抽象类(abstract)和接口(interface)的区别
abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两者之间还是有很
2016-08-01 17:10:51
567
原创 Collection集合之六大接口(Collection、Set、List、Map、Iterator和Comparable)
两个月之前准备软考时,简单的从理论上总结了最常用的数据结构和算法,比如:线性表,链表,图。在进行java开发时,jdk为我们提供了一系列相应的类来实现基本的数据结构。jdk所提供的容器API位于java.util包内。本文主要是通过简单的介绍Collection集合,向读者简单阐述各个类的基本定义以及其作用,为后面的学习做一下铺垫。首先,我们先看一下Collection集合的基本结构:
2016-08-01 17:07:36
497
原创 Java线程池架构原理和源码解析(ThreadPoolExecutor)
在前面介绍JUC的文章中,提到了关于线程池Execotors的创建介绍,在文章:《java之JUC系列-外部Tools》中第一部分有详细的说明,请参阅;文章中其实说明了外部的使用方式,但是没有说内部是如何实现的,为了加深对实现的理解,在使用中可以放心,我们这里将做源码解析以及反馈到原理上,Executors工具可以创建普通的线程池以及schedule调度任务的调度池,其实两者实现上还是有一
2016-08-01 16:46:53
337
原创 Java线程池技术
ThreadPool线程池线程池技术是用来管理线程使用,提高线程复用,以达到降低程序对系统开销、提高程序性能的作用。线程池API类简介java.util.concurrent.ThreadPoolExecutor 构造方法: ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,long keepAliveTi
2016-08-01 16:45:01
240
原创 jquery 实现原理 :event
一,基本原理1.1 数据缓存 data在事件之前是应该先讲解下data的实现的,因为在event的实现中,需要用到data,用来存储用户在element上注册的事件回调函数,这个data的实现比较简单,所以在这里简单说一下。$.data可以在一个元素上存储数据,比如$('xxx').data("a", 1)。实现原理很简单,先初始化一个cache对象,然后在元素上添加一个唯一的id属性
2016-08-01 09:59:38
639
原创 Struts2自定义拦截器
1234567891011121314151617181920212223242526272829303132333435
2016-07-31 20:47:46
359
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人