自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

根号三

Open and Share

  • 博客(242)
  • 资源 (12)
  • 收藏
  • 关注

原创 Redis实现分布式存储

Memcached完全基于分布式集群,而Redis是Master-Slave,如果想把Reids,做成集群模式,无外乎多做几套Master-Slave,每套Master-Slave完成各自的容灾处理,通过Client工具,完成一致性哈希。注:Memcached是在Server端完成Sharding,Redis只能依靠各个Client做Sharding,可能会在Redis 3.0系列支持Server端

2015-10-30 21:07:12 4061

转载 一致性哈希算法与java实现

一、一致性哈希算法的概念一致性哈希算法是分布式系统中常用的算法。比如,一个分布式的存储系统,要将数据存储到具体的节点上,如果采用普通的hash方法,将数据映射到具体的节点上,如key%N,key是数据的key,N是机器节点数,如果有一个机器加入或退出这个集群,则所有的数据映射都无效了,如果是持久化存储则要做数据迁移,如果是分布式缓存,则其他缓存就失效了。 因此,引入了一致性哈希算法: 把

2015-10-30 10:42:19 729

原创 Jedis操作实例

Redis中有5种数据类型:StringListSetSort SetHash(或者说Map)下面的例子就是用Jedis操作这5种数据类型。package com.ghs.test;import org.junit.Before;import org.junit.Test;import redis.clients.jedis.Jedis;import redis.clients.je

2015-10-29 21:00:13 1213

原创 java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing

当使用Junit 4.11及以上时,就会出现下面的错误: java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing 错误的原因是Junit 4.11以后,在Junit的jar包里面就不在包含harmcrest包。我们可以到Junit官网的下载页面看看: 下载链接:https://github.com/junit-team/junit

2015-10-29 18:02:21 907

原创 window64下redis的安装与测试

一、Redis的下载与安装Redis官方发布的版本其实并不支持window,但是微软开源组织为发布了一个Redis的Windows版本。 windows版:https://github.com/mythz/redis-windows 下载完成后解压,在/redis-windows-master/downloads目录下有很多Redis的Windows版本。如下如所示: 将其中一个解压到任意位置

2015-10-28 13:28:13 635

原创 JVM参数配置

一、JVM参数类型在生产环境中,一般情况下配置的参数有3种类型的:-X:非标准参数,不是每个虚拟机都实现了,例如-Xms2g-XX:非稳定性参数,例如-XX:NewSize=2g 使用方式有下面3种: -XX:+<option> 开启option参数 -XX:-<option> 关闭option参数 -XX:-<option>=<va...

2015-10-26 23:01:31 1055 1

转载 Java编译器——javac.exe

一、javac.exe简介javac.exe是java语言编译器。javac读取由java语言编写的类和接口的定义,并将它们编译成字节代码的class文件。注意:javac.exe使用Java语言编写的,而不是C语言,至于如何将Java程序封装为.exe文件,可以参考下面的博客: http://blog.csdn.net/kevinzhangfei/article/details/4569170

2015-10-26 21:37:01 11576 3

原创 Java实现定时任务的3种方式

一、普通的Thread这是最常见的,创建一个thread,然后让它在while循环里一直运行着,通过sleep方法来达到定时任务的效果。这样可以快速简单的实现,代码如下:package com.ghs.task;public class Task1 { public static void main(String[] args) { final long ...

2015-10-25 23:25:18 1132

原创 Java中新建数组

一、新建一维数组1、基本类型数组 int[] a = new int[3]; 或者int a[] = new int[3]; 2、对象类型数组 String[] s = new String[3]; 或者String s[] = new String[3]; Person[] persons = new Persons[3]; 或者Person persons[] = new Pers

2015-10-25 16:51:01 1703

原创 Java实现先来先服务与短作业优先

1、定义作业类package com.ghs.job;public class Job { /**作业编号*/ private String jobId; /**运行时间*/ private int runTime; public Job() { super(); } public Job(String jobId, int ru

2015-10-25 16:19:02 2669

转载 Spring实现AOP的4种方式

方式一:经典的基于代理的AOP首先写一个接口叫Sleepable,所有具有睡觉能力的东西都可以实现该接口。package com.ghs.aop;public interface Sleepable { public void sleep();}然后写一个Human类,他实现了这个接口package com.ghs.aop;public class Human implements Sle

2015-10-24 23:39:44 1186

转载 Spring事务配置的5种方式

Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分。 DataSource、TransactionManager这两部分只是会根据数据访问方式有所变化,比如使用Hibernate进行数据访问时,DataSource实际为SessionFactory,Transact

2015-10-24 22:45:48 454

原创 通过代理实现权限控制

权限控制在很多系统中都会用到,其实实现权限控制方法有很多,这里给大家介绍一下通过代理模式实现权限控制。Spring中的AOP、Apache的shiro开源项目,其实都是基于此的。1、实体类Person.javapublic class Person { private String name; private String password; public S...

2015-10-24 21:44:05 2443 3

原创 《设计模式》之代理模式

一、什么是代理模式?为对象提供一种代理以控制对这个对象的访问。 例1:如果在调用一个对象的方法之前或者之后执行一些额外的操作,可以为这个对象创建一个代理对象。 例2:如果在调用一个对象的方法之前需要进行判断,满足一定的条件是才执行时,可以为真是对象创建代理。二、代理模式的结构代理模式类图: 代理模式中的角色:抽象对象角色:声明了真实对象和代理对象的共同接口,这样一来在任何可以使用目标对象的地

2015-10-24 21:08:55 463

原创 Java线程池原理解析及3种常用的线程池对比

  说到并发编程,最关键的两个模块应该是锁和线程池,下面会详细地讲解Java中线程池的原理和自带的3种线程池。一、ThreadPoolExecutor  JDK自带的线程池是ThreadPoolExecutor,对一个线程池而言,有下面几个比较重要的参数:corePoolSize(核心线程数):如果池中的实际线程数小于corePoolSize,无论是否有空闲的线程,都会给新的任务...

2015-10-24 00:29:23 1005

原创 Mysql索引类型

一、Mysql索引的概念及类别索引是一种特殊的文件,它们包含着对数据表里所有记录的引用指针。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。1、普通索引这是最基本的索引,它没有任何限制,MyIASM中默认的BTREE类型的索引,也是我们大多数情况下用到的索引。–直接创建索引CREATE INDEX index_name ON table (colum...

2015-10-22 23:52:46 542

原创 Cookie详解

一、Cookie的概念Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。Cookie名称和值可以由服务器端开发自己定义,对于JSP而言也可以直接写入jsessionid,这样服务器可以知道该用户是否合法用户以及是否需要重

2015-10-22 22:48:32 384

原创 Java并发之Lock的实现原理

一.Lock与synchronized对比分析 锁 实现方式 优点 缺点 synchronized monitor锁 隐式获取和释放锁,比较便捷 扩展性没有Lock好 Lock 队列器同步AQS 非阻塞地获取锁;能被中断地获取锁;超时获取锁 显示获取和释放锁比较复杂二.Lock的使用//创建一个可重入锁Loc...

2015-10-22 19:48:56 640

转载 Session的生命周期

Session存储在服务器端,一般在服务器的内存中(为了高速存取),Sessinon在用户访问第一次访问服务器时创建,需要注意的事只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Session,也可调用request.getSession(true)强制生成Session。  Session什么时候失效? 

2015-10-21 22:27:10 452

原创 单链表的Java实现

public class SingleLinkList { /**头指针*/ private Node header = null; public SingleLinkList() { super(); if(header == null){ header = new Node(); header.s

2015-10-20 23:32:36 493

原创 Sql中日期类型的比较

一.存储日期的字段为日期类型MySql(Date、DateTime、TimeStamp等): 方法一:直接比较 select * from test where create_time between ‘2015-03-03 17:39:05’ and ‘2016-03-03 17:39:52’;方法二:用unix_timestamp函数,将字符型的时间,转成unix时间戳 select *

2015-10-20 00:07:26 51470 1

转载 Oracle数据类型

ORACLE基本数据类型(亦叫内置数据类型 built-in datatypes)可以按类型分为:字符串类型、数字类型、日期类型、LOB类型、LONGRAW&RAW类型、ROWID&UROWID类型。一.字符串类型字符串数据类型还可以依据存储空间分为固定长度类型(CHAR/NCHAR) 和可变长度类型(VARCHAR2/NVARCHAR2)两种.固定长度:指的是当输入的字段值小

2015-10-19 23:28:18 475

原创 Java生成随机数

一、生成0~N的随机整数例如:生成0~1000的随机整数Random random = new Random();int n = random.nextInt();或者 int n = (int)Math.random()*100;二、生成M~N的随机整数public int getRandomNumber(int m, int n) { Long temp = Math.round(M

2015-10-18 14:51:36 491

原创 Java三目运算符注意事项

三目运算符格式: expression1 ? expression2 : expression3注意事项: 1.java虚拟机在编译三目运算时是以 “?” 和 “:” 来判断各位置的代码充当的结构。“?”前作为一部分,“?”和“:”中间作为一部分,“:”后作为一部分 。表达式一:int temp = 0 < 1 ? c = c + 1 : d = d + 1; 错误,编译无法通过。Java虚

2015-10-18 13:29:56 3894

原创 1.JVM垃圾回收机制-哪些内存需要回收

在探讨JVM的垃圾回收机制时,无非就是想方设法地解决下面3个问题:哪些内存需要回收——what什么时候回收——when如何回收——how那到底哪些内存需要回收呢?首先看看JVM的内存模型   其中,程序计数器、栈(虚拟机栈和本地方法栈)两部分的内存随线程而生,随线程而灭。直接内存又称对外内存,不是由JVM负责管理的。   但是,堆和方法区不一样,对于堆而言,对象是在运行...

2015-10-18 12:35:29 918

原创 Java的数组类型

在Java中,数组类型的可以看做一个类,即int[]、char[]、boolean[]都是类。既然是类,就肯定继承自Object,相应的肯定具有equals()、toString()、hashCode()等方法。既然是类,就可以创建对象,可以通过new对对象进行初始化。数组类型的初始化:public class Test { public static void main(String[]

2015-10-18 12:25:59 470

原创 Java的强制类型转换与隐式类型转换

一.隐式类型转换1.Java中的8大基本数据类型java基本数据类型就8种,除了这些都是引用型的了。java四类八种基本数据类型: 第一类:整型 byte short int long 第二类:浮点型 float double 第三类:逻辑型 boolean(它只有两个值可取true false) 第四类:字符型 char 在栈中可以直接分配内存的数据是基本数据类型。引用数据类型: 是数

2015-10-18 10:58:54 3813

原创 Java的静态方法、静态属性、静态代码块

一、静态方法在Java里,可以定义一个不需要创建对象的方法,这种方法就是静态方法。要实现这样的效果,只需要在类中定义的方法前加上static关键字。例如: 一般情况下,工具类里面的方法都会定义为静态方法,例如下面这个排序工具类import java.util.Iterator;import java.util.LinkedList;import java.util.List;import j

2015-10-18 09:18:57 2054

转载 Java的native关键字

一. 什么是Native Method简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C。这个特征并非java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern “C”告知C++编译器去调用一个C的函数。 在定义一个native method时,

2015-10-18 00:08:16 443

原创 Java中方法的重载与重写

一.方法重载方法重载针对的是一个类。只用当参数序列不同,即参数的个数、类型或顺序不同时,才叫做方法重载。与方法的返回类型、修饰符(public、protected、private等)、是否抛出异常无关。例如:下面的四个方法是同一个方法,不是方法重载 public void save(int a) throws IOException{ } private vo

2015-10-17 23:47:46 557

原创 Scanner用法详解

一.创建Scanner对象Scanner类可以接收任意的输入流。在Scanner类中提供了一个可以接收InputStream类型的构造方法,这就表示只要是字节输入流的子类都可以通过Scanner类进行方便的读取。例如:读取键盘输入:Scanner scan = new Scanner(System.in);读取文件输入:Scanner scan = new Scanner(ne

2015-10-17 09:15:39 3574 2

原创 Java多线程机制详解

一.创建线程的两种方式继承Thread 实现Runnable接口二.线程的5种状态 1.新生状态(创建状态)。在生成线程对象,但是没有调用对象的start()方法时,该线程处于创建状态 2.就绪状态。当调用了线程对象的start方法之后,该线程就进入了就绪状态,此时线程具有CPU的执行资格,但是没有CPU的执行权。 3.运行状态。线程调度程序将处于就绪状态的线程设置为当前线程,开始运行run

2015-10-16 22:26:25 478

原创 Java异常处理机制

一.异常的类型Java对异常进行了分类,不同类型的异常分别用不同的Java类表示,所有异常的根类为java.lang.throwable,Throwable下面有派生了两个子类:Error和Exception。Error表示应用程序本身无法克服和恢复的一种严重问题,程序只有死的份,例如:内存溢出、线程死锁;Exception表示程序还能够克服和恢复的问题,其中又分为运行异常和一般异常。系统异常是软件

2015-10-16 00:31:37 469

原创 基数排序

一.基本思想利用多关键字的划分,逐渐将待排序列排好序。二.基数排序举例现在有数组:278,109,63,930,589,184,505,269,8,83 第一次根据各位数将数组划分为10个队列(当然其中的某些队列可能不含有元素) 0:930 1: 2: 3:63,83 4:184 5:505 6: 7: 8:278,8 9:109,589,269 然后收集成序列: 930,

2015-10-15 11:21:11 439

原创 归并排序

一.基本思想归并(Merge)排序法是将待排序序列分为若干个子序列,对每个子序列进行排序,然后再把有序子序列合并为整体有序序列。二.归并排序示例三.归并排序的Java实现 /** * 归并排序 * @param array */ public static void mergeSort(int[] array){ sort(array,0,

2015-10-14 23:02:24 395

转载 交换排序——快速排序

一.基本算法1)选择一个基准元素,通常选择第一个元素或者最后一个元素; 2)通过一趟排序讲待排序的记录分割成独立的两部分,其中基准元素左边的元素均比基准元素小,右边的元素均比基准元素大; 3)然后分别对这两部分记录用同样的方法继续进行排序,直到整个序列有序。二.快速排序示例1.一趟排序的过程 2.排序的全过程 三.快速排序的Java实现 /** * 快速排序 *

2015-10-14 21:54:38 411

转载 交换排序——冒泡排序

一.基本思想在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。 /** * 冒泡排序 * @param array */ public void bubbleSort(int[] array){

2015-10-14 21:10:40 433

转载 选择排序——堆排序

堆排序是一种树形选择排序,是对直接选择排序的有效改进。一.基本思想堆的定义如下:具有n个元素的序列(k1,k2,…,kn),当且仅当满足 时称之为堆。由堆的定义可以看出,堆顶元素(即第一个元素)必为最小项或最大项,相应的堆称为小顶堆或大顶堆。 若以一维数组存储一个堆,则堆对应一棵完全二叉树,且所有非叶结点的值均不大于(或不小于)其子女的值,根结点(堆顶元素)的值是最小(或最大)的。如: (

2015-10-13 22:32:28 547

原创 maven打包异常!COMPILATION ERROR

maven打包错误!COMPILATION ERROR错误代码:[INFO] [INFO] ———————————— [INFO] Building control-bus-ice 1.2.0-SNAPSHOT [INFO] ———————————— [INFO] [INFO] — maven-resources-plugin:2.4.3:resources (default-resour

2015-10-13 09:13:25 25019

原创 选择排序——简单选择排序

一.基本思想在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。二.操作方法第一趟,从n个记录中找出关键码最小的记录与第一个记录交换; 第二趟,从第二个记录开始的n-1 个记录中再选出关键码最小的记录与第二个记录交换; 以此类推…..

2015-10-12 22:58:32 454

AOP四种配置方式demo

一个介绍了AOP四种配置方式的Demo,方便您快速掌握AOP的配置。

2016-04-10

基于UDP协议通信的例子

一个基于UDP协议通信的简单例子,包括服务端和客户端,客户端向服务端发送数据,服务端收到数据后向客户端返回数据。

2016-03-03

Socket实现一对一聊天

使用Socket实现一对一聊天,包括客户端和服务端

2015-11-13

使用LinkedList模拟堆栈

使用LinkedList模拟堆栈操作,包括进栈、出栈,入队、出队

2015-11-09

Spring整合JMS——实现收发消息

Spring整合JMS,基于ActiveMQ实现收发消息

2015-11-04

ActiveMQ使用Ajax实现多人聊天室

ActiveMQ使用Ajax实现多人聊天室。

2015-11-03

ActiveMQ入门示例

ActiveMQ简单入门示例,采用点对点的通信方式

2015-11-03

Jedis操作5种数据类型

通过Jedis操作Redis中定义的5中数据类型

2015-10-29

Spring实现AOP的4种方式

Spring中实现AOP有很多方式,这里总结了四种,有基于代理的实现方式,也有基于AspectJ 的注解方式,还有基于AOP标签的配置

2015-10-25

Java实现先来先服务与短作业优先

通过Java实现常用调度算法中的先来先服务和短作业优先

2015-10-25

Java中的IO流类详解

对Java中重要的IO技术进行详尽的解析

2014-11-15

Java设计模式

对Java中常见的设计模式进行总结,得出的一套完备的笔记

2014-11-15

空空如也

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

TA关注的人

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