- 博客(172)
- 资源 (2)
- 收藏
- 关注
原创 2016年上半年总结
按道理,这篇博客应该是两个月之前的,各方面原因吧,最主要是懒,给拖到了今天。 米老师为我们制作的博客书下来了,拿到手里很开心,翻了前两遍,都是看插图,昨天晚上想着是做个总结,顺便把之前写过的网易上写的文章又看了一遍,能够感受到之前思想上一步一步的变化,大部分是集中在14年10月之前,之后便是技术上的总结多一些。由此证明,要想有思想上的提高,可以有两种提升路径,一是是非把自己撞的头破血流的经
2016-10-30 16:44:16
2271
20
原创 IDEA main方法自动补全
最近刚从Eclipse转到IDEA,各种学习丫,IDEA里的main方法是不能自动补齐的,肿么办呢? 1.首先,点击File-->Settings-->Editor-->Live Templates 2.新增模板组 点击右上角的"+",添加"Template Group",如java 3.新增模板
2016-09-27 21:08:55
36967
20
原创 使用Apache commons轻松发送Email
最近项目上需要使用javamail发送邮件,在网上搜索了一些资料,发现Apache common下有个Email组件,对javamail进行了封装,灰常的好用。 1.加入maven坐标依赖 org.apache.commons commons-email 1.3.3
2016-09-27 20:46:08
6113
10
原创 Spring4+Quartz2集群动态创建任务
公司最近需要使用Quartz集群来实现任务的动态创建和删除,之前自己只是用过配置好的单机版的,而且是定时执行的任务,正好借这个机会深入学习一下Quartz。 在正式开始之前,我们先来了解下,spring3.1以下的版本必须使用quartz1.x系列,3.1以上的版本才支持quartz 2.x,不然会出错。至于原因,则是spring对于quartz的支持实现,org.springfr
2016-08-29 18:32:30
9537
11
原创 RMI、RPC和JMS的比较
RMI Java RMI 指的是远程方法调用 (Remote MethodInvocation)。它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java虚拟机中的对象上的方法。可以用此方法调用的任何对象必须实现该远程接口。 RMI对服务器的IP地址和端口依赖很紧密,但是在开发的时候不知道将来的服务器IP和端口如何,但是客户端程序依赖这个
2016-06-30 14:43:26
6320
11
原创 MongoDB的安装和启动
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。这篇博文先为大家简单的介绍下,MongoDB的安装。 一、下载 MongoDB的官网可以下载最新的Mong
2016-06-26 23:48:39
5606
7
原创 Nginx+Tomcat实现反向代理
通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中由代理服务器向Internet上的web服务器发起请求,最终达到客户机上网的目的。 而反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上
2016-06-21 23:30:55
29800
10
原创 Nginx根据IP区分实现虚拟主机
Nginx可以使在一台服务器上运行多个网站,而且网络之间互相不干扰. 区分不同的网站有三种方式: 1.ip区分 2.端口区分 3.域名区分 1、将/etc/sysconfig/network-scripts/ifcfg-eth0文件复制一份,命名为ifcfg-eth0:1 修改其中内容: DEVICE=eth0
2016-06-21 16:06:21
1603
8
原创 Redis的主从复制
Redis的主从复制,可以允许多个Slave server拥有和Master server相同的数据库副本。这样,我们就可以在redis遇到故障时,依然保证在不修改其他配置的情况下,服务可以正常使用。 一、Redis主从复制的特点 1.Master可以拥有多个Slave 2.多个slave可以连接同一个master外,还可以连接到其他sla
2016-05-30 23:36:24
816
9
原创 Redis的数据类型
Redis中一共包含五中数据类型,下面就让我们一块认识下: 一、String String是最简单的类型,一个Key对应一个Value,string类型是二进制安全的。Redis的string可以包含任何数据,比如jpg图片或者序列化的对象。 常用的set命令有: 1.set 设置key对应的值为
2016-05-29 21:22:39
1079
8
原创 Centos下安装Redis步骤简介
一、Redis简介 Redis是一个开源的高性能键值对数据库,他通过提供多种键值数据类型来适应不同场景下的存储需求,并借助许多高层级的接口使其可以胜任如缓存、队列系统等不同的角色。Redis数据库中的所有数据都存储在内存中,由于内存的读写速度远快于硬盘,而且可以将内存中的数据异步写入到硬盘中,同时不影响继续提供服务。Redis虽然是作为数据库开发的,但由于其提供了丰富的功能,越
2016-05-16 22:58:03
778
5
原创 Java IO系统——NIO之Buffer、Channel和Charset类
从JDK1.4开始,Java提供了一系列改进的输入/输出处理的新功能,这些功能被统称为新IO(NIO),新增了许多用于处理输入/输出的类,这些类都被放在java.nio包以及子包下,并且对原java.io包中的很多类都以NIO为基础进行了改写,新增了满足NIO的功能。 一、Why 为什么要使用NIO呢,我们下面从两方面分析:
2016-04-30 14:18:18
1011
6
原创 Java IO系统——RandomAccessFile类
RandomAccessFile是Java输入/输出体系中功能最丰富的文件内容访问类,它提供了众多的方法来访问文件内容,它既可以读取文件内容,也可以向文件输出数据。与普通输入/输出流不同的是,RandomAccessFile支持"随机访问"的方式,程序可以调到程序的任意地方来读写数据。RandomAccessFile也有一个局限,就是它只能读写文件,不能读写其他IO节点。 一、
2016-04-26 22:15:21
703
5
原创 Java IO系统——IO流分类说明
字节流和字符流的用法几乎完全一样,区别如下: 1.数据单元不同:字节流操作的是8位的字节(byte),而字符流操作的数据单元是16位的字符。 2.基类不同:字节流InputStream和OutputStream作为基类,字符流已Reader和Writer作为基类。 输入流和输出流: 输入流: 1.基类:InputStream
2016-04-26 10:35:56
1574
10
原创 Java IO系统——File类
File类具有一个欺骗性的名字,通常你会认为它对应的是一个文件,但事实并非如此。它既可以代表一个特定的文件目录,也可以代表一个目录内一系列文件的名字,FilePath似乎是一个更好的名字。它代表了与平台无关的文件和目录,如果想在程序中操作文件和目录,都可以通过File类来完成,File能新建、删除、重命名文件和目录,File不能访问文件内容本身,如果要访问文件本身,则需要使用输入/输出流。
2016-04-25 21:51:35
725
7
原创 Dubbo框架介绍
Dubbo是一个常用的分布式服务框架,它致力于提供高性能和透明化的RPC远程调用服务方案,Dubbo有助于开发企业级的开发效率,以及可以通过简单的配置就可以做到负载均衡。 一、Dubbo的基础知识 1.Dubbo是什么 2.Dubbo涉及的知识 二、Dubbo框架设计介绍 1.Dubbo的各个角色
2016-03-31 21:58:34
1719
5
原创 RPC框架设计和调用详解
一、RPC是什么 RPC是远程调用过程的简写,是一个协议,处于网络通信协议的第五层:会话层,其下就是TCP/IP协议,在建立在其基础上的通信会话协议。RPC定义了交互的模式,而应用程序使用这些模式,来访问其他服务器的方法,并不需要关系具体的网络上的细节。 1.RPC模式 RPC采用C/S模式,客户端发送请求,服务端响应,
2016-03-30 21:58:58
13049
5
原创 ZooKeeper的部署与运行
这篇博文主要介绍一下通过单机和集群两种方式部署一个ZooKeeper,以及如何将其顺利的运行起来。 一、系统环境 通常对Java开源产品而言,在部署与运行之前,总是需要搭建一个合适的环境,通常包括操作系统和Java环境两个方面。 1.操作系统 ZooKeeper对不同平台的支持都很好,在现在绝大多数主流的操作系统上都能够正常运
2016-03-29 19:57:33
2314
9
原创 初识ZooKeeper
本篇博文先对ZooKeeper进行一个初步的较少,ZooKeeper是什么、ZooKeeper的由来及其基本概念,从宏观上对ZooKeeper有个认识。 一、ZooKeeper是什么 ZooKeeper是一个开放源代码的分布式协调服务,由知名互联网公司雅虎创建,是Google Chubby的开源实现。ZooKeeper的设计目标是将那些复杂且容易出错的分布式
2016-03-28 20:26:31
1020
12
原创 2015年下半年成长总结
又一次写成长总结了,总感觉时间过的特别快,尤其是这半年。 一、技术上 差不多是9月份开始接触ITOO3.0和ITOO4.0,从项目中学习到一些新的知识,比如使用Maven构建项目、EJB的学习还有JBOSS服务器的接触,对分布式系统有了初步的概念,如果让自己去编码实现,感觉没有什么问题,但是对整体架构的设计缺乏更细致深入的认识。 从11月份开始,便
2016-02-28 20:47:16
1531
27
原创 Java基础(十一)——反射
Java反射最大的好处就是能在运行期间,获得某个类的结构、成员变量,用来实例化,而不是仅仅靠new来实现。 一、获得Class对象 在Java中,每个类被加载之后,系统就会为类生成一个对象的Class对象,通过该Class对象就可以访问JVM中的这个类了。在Java程序中,获得Class对象通常有如下三种方式。 1.使用Class类
2016-02-03 20:28:51
868
8
原创 Java基础(十)——类加载机制
当Java程序主动使用某个类时,如果该类还未被加载到内存中,则系统会通过加载、连接、初始化三个不步骤来对该类进行初始化。如果没有意外,JVM将会连续完成这三个步骤,所以有时也把这三个步骤统称为类加载或者类初始化。 一、类加载 类加载指的是将类的class文件读入内存,并为之创建一个java.lang.Class对象,也就是说,当程序中使用任何类时,系统都会为
2016-02-02 20:48:52
717
4
原创 Java基础(九)——泛型
介绍泛型之前,先来张图,从宏观上认识一下我们今天要介绍的主角:泛型。这张导图是笔者自己对泛型的一个整体印象,下面我们从why、what、how三个角度来分析一下,我们说的泛型。
2016-02-01 20:14:59
1259
5
原创 Java基础(八)——集合
在java中,集合主要是为了保存数量不确定的数据,以及保存具有映射关系的数据。集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。集合类和数组不一样,数组元素既可以是基本类型的值,也可以是对象;而集合里只能保存对象。 java的集合类主要由两个接口派生出来:Collection和Map,Collection和Map是java集合框架的根接口,这两个接口又包含了一些子接口或
2016-01-30 13:42:14
979
8
原创 Java基础(七)——枚举类
在某些情况下,一个类的对象时有限而且固定的,比如季节类,它只有4个对象;再比如行星类,目前它只有8个回想,这种实力有限而且固定的类,在Java里我们被称为枚举类。 一、枚举类入门 Java5新增了一个enum关键字,用以定义枚举类,和普通的类相比,枚举类有如下特点: 1.枚举类可以实现一个或多个接口,使用enum定义的枚举类默认继承了ja
2016-01-16 20:05:27
731
5
原创 Java基础(六)——接口和抽象类
接口和抽象类很像,那么他们有什么异同呢,这就是这篇博文要讨论的。 一、相同点 1.接口和抽象类都不能被实例化,他们都位于继承树的顶端,用于被其他类实现和继承。 2.接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法。 二、不同点 接口和抽象类的差别也很大:
2016-01-16 19:24:33
675
7
原创 Java基础(五)——final修饰符
final关键字可用于修饰类、变量和方法,final修饰变量时,表示该变量一旦获得了初始值就不可被改变,严格的说法就是,final修饰的变量不可被改变,一旦获得了初始值,该final变量的值就不能被重新赋值。 一、final成员变量 成员变量是随类初始化或对象初始化而初始化的,对于final修饰的成员变量而言,一旦有了初始值,就不能被重新赋值,如果既没有在定
2016-01-16 19:03:03
869
4
原创 Java基础(四)——初始化块
Java使用构造器来对单个对象进行初始化操作,使用构造器先完成整个java对象的状态初始化,然后将java对象返回给程序,从而该java对象的信息更加完整。与构造器作用类似的是初始化块。初始化块是Java类里可以出现的第4种成员,前面依次有成员变量、方法、构造器,下面我们就来介绍一下它: 一、初始化块语法格式 初始化块里的代码可以包含任何可执行性语句,包括定
2016-01-16 17:01:00
154
5
原创 Java基础(三)——形参个数可变的方法
从JDK1.5之后,Java允许定义形参个数可变的参数,从而允许为方法指定数量不确定的形参。如果在定义方法时,在最后一个形参的类型后增加三点(...),则表明该形参可以接受多个参数值,多个参数值被当成数组传入。下面程序定义了一个形参个数可变的方法。package cn.gome.c_object;public class VarargsTest { //============
2016-01-16 15:52:27
2230
3
原创 Java基础(二)——数组
数组是编程语言中最常见的一种数据结构,可用于存储多个数据。Java的数组要求所有的数组元素具有相同的数据类型,Java的数组既可以用来存储基本类型的数据,也可以用来存储引用类型的数据,只要所有的数组元素具有相同的类型即可。一旦数组的初始化完成,数组在内存中所占的空间将被固定下来,因此数组的长度将不可改变。 一、定义数组 Java支持两种语法形式类定义数组。
2016-01-10 18:50:17
917
4
原创 Java基础(一)——equals和==的区别
Java程序中,测试两个变量是否相等有两种方式,一种是利用==运算符,另一种是利用equals()方法。下面这篇博文就简单的介绍一下这两者的不同。 一、"==方法" 当我们使用==来判断两个变量是否相等时,如果两个变量是基本类型变量,且都是数值类型,只要这样个变量的值相等,就将返回true。 当我们使用==来判断两个引用类型变量是,只有它们指向同一
2016-01-10 17:58:59
1332
4
原创 Activiti进阶(十一)——分配组任务的三种方式
上一篇博客我们讲了分配个人任务的三种方式,这篇博客我们来介绍一下分配组任务的三种方式。 一、流程图 图一 分配组任务的三种方式 二、分配组任务方式一:直接指定
2015-12-27 15:49:28
28237
7
原创 Activiti进阶(十)——分配个人任务的三种方式
用户任务(UserTask)即用户操作的任务, 个人任务是用户任务的一种,这篇博文将简单地介绍下分配个人任务的三种方式。 一、流程图 图一 分配用户任务流程图
2015-12-23 18:02:31
43016
10
原创 Activiti进阶(九)——接收任务(ReceiveTask)
接收任务(ReceiveTask)即等待任务,接收任务是一个简单任务,它会等待对应消息的到达。当前,官方只实现了这个任务的java语义。 当流程达到接收任务,流程状态会保存到数据库中。在任务创建后,意味着流程会进入等待状态,直到引擎接收了一个特定的消息, 这会触发流程穿过接收任务继续执行。 一、流程图
2015-12-23 11:33:10
23029
5
原创 Activiti进阶(八)——并行网关(ParallelGateWay)
上一篇博客我们讲到了排他网管,这篇博文简单介绍一下他的兄弟,并行网关。 一、流程图 图一 并行网关网购流程图 在这里,我们模拟网上购物流程,四个用户任务,分别是付款、发货、收款、收货,其中付款和收货的办理
2015-12-22 22:18:43
44954
3
原创 Activiti进阶(七)——排他网关(ExclusiveGateWay)
上一篇博文我们简单介绍了一下连线,也分析了一种情况,就是在工作流中,用户任务下面有两个连线,如何选择工作流的进程。这一篇博文和上一篇博文讨论的主题类似,解决上一篇博文中有多个连线分支的情况,我们可以使用排他网管来解决。 一、流程图
2015-12-20 15:52:09
52231
9
原创 Activiti进阶(六)——连线(SequenceFlow)
这篇博文为大家简单的介绍一下Activiti中的连线,还是和平时一样,我们放在例子中吧。 一、流程图 图1 请假流程 在上面的流程图中,我们发现和之前不同的是,用户任
2015-12-20 14:53:41
24798
9
原创 Activiti进阶(五)——流程执行历史记录
之前的几篇文章,为大家简单的介绍了部署流程定义、启动流程实例、查看和办理个人任务以及如何设置和获取流程变量,这一系列的活动组成了一个完整的执行流程,那么一个执行完的流程我们如何查看相关的定义呢,这篇博文就为大家简单的介绍一下流程执行的历史记录查询。 一、查询历史流程实例 /**查询历史流程实例*/ @Test public void findHisProces
2015-12-20 12:15:11
44632
3
原创 Activiti进阶(四)——流程变量的设置和获取
流程变量在整个工作流中扮演很重要的作用。例如:请假流程中有请假天数、请假原因等一些参数都为流程变量的范围。流程变量的作用域范围是只对应一个流程实例。也就是说各个流程实例的流程变量是不相互影响的。这篇博文就简单的为大家介绍下流程变量的设置和获取。一、设置流程变量 流程变量的设置方式有两种,一是通过基本类型设置,第二种是通过JavaBean类型设置。 1
2015-12-18 18:55:07
69031
10
原创 Activiti进阶(三)——流程定义的CRUD
流程定义的RCUD,也就是对流程的增删该查,这篇博文简单的为大家介绍一下使用Activiti的api对流程定义进行增删改查操作。 一、查看流程定义 // 查询流程定义 @Test public void findProcessDifinitionList() { List list = processEngine.getRepositoryService()
2015-12-09 20:01:51
8572
3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人