- 博客(54)
- 资源 (2)
- 收藏
- 关注
原创 eclipse clean后不能自动编译生成class文件的问题
最近在项目项目开发过程中遇到eclipse执行clean后不能自动编译生成class文件,当时很纳闷,每次修改代码后运行都是修改前的效果,没辙了,只好反编译原来的class文件,结果发现,class文件里并没有看到修改好的代码,所以应该就是修改后的代码没有重新编译的结果吧。好,废话少说,下面说下解决办法。解决方法:1.确保project->build automaticll
2016-05-18 17:34:39
11455
原创 Mybatis缓存
MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持一级缓存: 基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该Session中的所有 Cache 就将清空。 2. 二级缓存与一级缓存其机制相同,默认也是采用 Perp
2016-04-25 18:06:57
434
原创 maven的模块划分
所有用Maven管理的真实的项目都应该是分模块的,每个模块都对应着一个pom.xml。它们之间通过继承和聚合(也称作多模块,multi-module)相互关联。那么,为什么要这么做呢?我们明明在开发一个项目,划分模块后,导入Eclipse变成了N个项目,这会带来复杂度,给开发带来不便。 为了解释原因,假设有这样一个项目,很常见的Java Web应用。在这个应用中,我们分了几层:
2016-04-22 11:10:23
1717
转载 Java并发编程:Timer和TimerTask
Java并发编程:Timer和TimerTask(转载) 下面内容转载自: http://blog.csdn.net/xieyuooo/article/details/8607220 其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个类,而具体的TimerTask需要由你自己来实现,例如这样:1
2015-10-15 12:26:54
561
转载 分布式集群系统下的高可用session解决方案
分布式集群系统下的高可用session解决方案-目前,为了使web能适应大规模的访问,需要实现应用的集群部署. 而实现集群部署首先要解决session的统一,即需要实现session的共享机制。 目前,在集群系统下实现session统一的有如下几种方案:(1) 应用服务器间的session复制共享(如tomcat session共享)(2) 基于cach
2015-10-13 17:16:47
461
原创 mysql分库分表
单库单表 单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到。 单库多表 随着用户数量的增加,user表的数据量会越来越大,当数据量达到一定程度的时候对user表的查询会渐渐的变慢,从而影响整个DB的性能。如果使用mysql, 还有一个更严重的问题是,当需要添加一列的时候,mysql会锁表,期间所有
2015-09-28 17:20:18
873
原创 zookeeper原理与应用
云计算越来越流行的今天,单一机器处理能力已经不能满足我们的需求,不得不采用大量的服务集群。服务集群对外提供服务的过程中,有很多的配置需要随时更新,服务间需要协调工作,这些信息如何推送到各个节点?并且保证信息的一致性和可靠性?众所周知,分布式协调服务很难正确无误的实现,它们很容易在竞争条件和死锁上犯错误。如何在这方面节省力气?Zookeeper是一个不错的选择。 Zookeeper背后的动机
2015-09-28 17:15:29
628
原创 Jmeter压力测试工具
Meter是apache的jakarta上面的项目,用于软件的 压力测试(Load Test),不但可以对HTTP,也可以对数据库(通过JDBC)、FTP、Web Service、Java 对象等等进行压力测试。最近,在我们的项目中使用到了它。我们的项目是基于BEA Weblogic的一个J2EE项目,在一个Domain中部署了3个J2EE应用,这样在客户使用的过程中出现了WebLogic内存
2015-09-16 10:48:21
677
转载 使用nginx sticky实现基于cookie的负载均衡
在多台后台服务器的环境下,我们为了确保一个客户只和一台服务器通信,我们势必使用长连接。使用什么方式来实现这种连接呢,常见的有使用nginx自带的ip_hash来做,我想这绝对不是一个好的办法,如果前端是CDN,或者说一个局域网的客户同时访问服务器,导致出现服务器分配不均衡,以及不能保证每次访问都粘滞在同一台服务器。如果基于cookie会是一种什么情形,想想看, 每台电脑都会有不同的cookie
2015-09-11 23:45:37
1534
原创 异步回调和同步回调
异步回调就是发起请求后,不等待响应就先去处理自己的响应,它不是处理整个请求,只是处理一小部分,在Web页上就表现为页面没刷新,却局部更新了数据。相对于同步就是必须等到响应该请求后才能做别的事,具体到Web页就是整个页面刷新了,数据才更新。下面举两个列子:首先举个同步调用的例子:比如你的程序调用了一个方法,这个方法要执行很长很长时间,而且这个时间都不确定,传统的办法就是“同步调用”,如下:
2015-09-11 23:43:03
762
转载 Fiddler简介
1.为什么是Fiddler?抓包工具有很多,小到最常用的web调试工具firebug,达到通用的强大的抓包工具wireshark.为什么使用fiddler?原因如下:a.Firebug虽然可以抓包,但是对于分析http请求的详细信息,不够强大。模拟http请求的功能也不够,且firebug常常是需要“无刷新修改”,如果刷新了页面,所有的修改都不会保存。b.Wiresha
2015-09-11 23:39:36
2242
原创 memcache redis
数据类型redis数据类型丰富,支持set liset等类型memcache支持简单数据类型,需要客户端自己处理复杂对象持久性redis支持数据落地持久化存储memcache不支持数据持久存储分布式存储redis支持master-slave复制模式memcache可以使用一致性hash做分布式value大小不同memcache是一
2015-09-09 16:14:35
394
原创 Java序列化
序列化:将java对象转换为字节序列的过程叫做序列化反序列化:将字节对象转换为java对象的过程叫做反序列化通常情况下,序列化有两种用途:、1) 把对象的字节序列永久的保存在硬盘中2)在网络上传输对象的字节序列只有实现了Serializable或者Externalizable接口的类的对象才能够被序列化。否则当调用writeObject方法的时候会出现IOExc
2015-08-24 19:58:08
419
转载 Guava学习笔记:EventBus
http://www.cnblogs.com/peida/p/EventBus.htmlEventBus是Guava的事件处理机制,是设计模式中的观察者模式(生产/消费者编程模型)的优雅实现。对于事件监听和发布订阅模式,EventBus是一个非常优雅和简单解决方案,我们不用创建复杂的类和接口层次结构。 Observer模式是比较常用的设计模式之一,虽然有时候在具体
2015-08-18 16:02:10
556
转载 5分钟了解mockito
一、什么是mock测试,什么是mock对象? 先来看看下面这个示例:从上图可以看出如果我们要对A进行测试,那么就要先把整个依赖树构建出来,也就是BCDE的实例。 一种替代方案就是使用mocks从图中可以清晰的看出mock对象就是在调试期间用来作为真实对象的替代品。mock测试就是在测试过程中,对那些不容易构建的对象用一
2015-08-18 15:56:39
506
原创 mybatis
MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。MyBatis是支持普通SQL
2015-08-18 15:54:54
691
原创 log4j日志输出性能优化-缓存、异步
1、log4j已成为大型系统必不可少的一部分,log4j可以很方便的帮助我们在程序的任何位置输出所要打印的信息,便于我们对系统在调试阶段和正式运行阶段对问题分析和定位。由于日志级别的不同,对系统的性能影响也是有很大的差距,日志级别越高,性能越高。 2、log4j主要分为error,warn,info,debug四个级别,也是使用最多的四种,日志级别从左至右依次增加。 3、log4j
2015-08-06 10:35:55
604
转载 tair分布式缓存
简介tair 是淘宝自己开发的一个分布式 key/value 存储引擎. tair 分为持久化和非持久化两种使用方式. 非持久化的 tair 可以看成是一个分布式缓存. 持久化的 tair 将数据存放于磁盘中. 为了解决磁盘损坏导致数据丢失, tair 可以配置数据的备份数目, tair 自动将一份数据的不同备份放到不同的主机上, 当有主机发生异常, 无法正常提供服务的时候, 其于
2015-08-06 10:34:42
1200
原创 深入理解Java:注解(Annotation)--注解处理器
深入理解Java:注解(Annotation)--注解处理器 如果没有用来读取注解的方法和工作,那么注解也就不会比注释更有用处了。使用注解的过程中,很重要的一部分就是创建于使用注解处理器。Java SE5扩展了反射机制的API,以帮助程序员快速的构造自定义注解处理器。注解处理器类库(java.lang.reflect.AnnotatedElement): Jav
2015-07-06 18:27:14
487
原创 Netty使用protobuf作为通信协议
Netty中使用protobuf环境准备下载protoc代码生成器和源码包:http://code.google.com/p/protobuf/downloads/list,protobuf-2.4.1.tar.bz2:主要是生成protobuf-2.4.1.jar包,操作需要安装maven,可以到网上下载这个Jar包,所以这里略。protoc-2.4.
2015-07-06 17:56:27
1189
原创 Netty了解与小试
在互联网的应用中有一个特点,高并发,但处理逻辑相对简单。针对这个特别有时间我们可以相对的简化下平时所有的WEB服务器,来满足这一的特点,而且更方便控制。Netty就是一个不错的选择,Netty 提供异步的、事件驱动的网络应用程 另外与Spring一起使用,以快速开发高性能、高可靠性的网络服务器和客户端程序。最近的一个项目使用了这点,不错的解决了这类的应用。下面是在了解这方面的时间找到的不错
2015-07-02 16:50:33
473
原创 数据库索引的实现原理
索引问题就是一个查找问题。。。数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。最基本的查询算法当然是顺序查找(linear search),这种复杂度为O(n)的算法在数据量很大时显然是糟糕的,好在计算机科学的发展提供了很多更优秀的查找算法,例如二分查找(binary search)、二叉树查找(binar
2015-06-18 13:08:45
2330
原创 Java多线程中的阻塞队列和并发集合
本章主要探讨在多线程程序中与集合相关的内容。在多线程程序中,如果使用普通集合往往会造成数据错误,甚至造成程序崩溃。Java为多线程专门提供了特有的线程安全的集合类,通过下面的学习,您需要掌握这些集合的特点是什么,底层实现如何、在何时使用等问题。3.1 BlockingQueue接口java阻塞队列应用于生产者消费者模式、消息传递、并行任务执行和相关并发设计的大多数常见使用上下文。
2015-06-14 17:41:06
2999
转载 Spring 框架的设计理念与设计模式分析
Spring 作为现在最优秀的框架之一,已被广泛的使用,并且有很多对其分析的文章。本文将从另外一个视角试图剖析出 Spring 框架的作者设计 Spring 框架的骨骼架构的设计理念,有那几个核心组件?为什么需要这些组件?它们又是如何结合在一起构成 Spring 的骨骼架构? Spring 的 AOP 特性又是如何利用这些基础的骨骼架构来工作的? Spring 中又使用了那些设计模式来完成它的
2015-06-14 16:20:07
656
转载 第二章 Spring MVC入门
2.1、Spring Web MVC是什么Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。 另外还有一种基于组件的、事件驱动的W
2015-06-04 15:55:27
403
转载 spring ioc原理
最近,买了本Spring入门书:spring In Action 。大致浏览了下感觉还不错。就是入门了点。Manning的书还是不错的,我虽然不像哪些只看Manning书的人那样专注于Manning,但怀着崇敬的心情和激情通览了一遍。又一次接受了IOC 、DI、AOP等Spring核心概念。 先就IOC和DI谈一点我的看法。IOC(DI):其实这个Spring架构核心的概念没有这么复杂,更
2015-05-28 14:29:36
428
原创 从零开始学习Java编程--理解面向对象编程
Java语言是纯粹的面向对象的程序设计语言,这主要表现为Java完全支持面向对象的三种基本特征:继承、封装和多态。Java语言完全以对象为中心,Java程序的最小程序单位是类,整个Java程序由一个一个的类组成。Java完全支持使用对象、类、继承、封装、消息等基本概念来进行程序设计,允许从现实世界中客观存在的事物(即对象)出发来构造软件系统,在系统构造中尽可能运用人类的自然思维方式。实际上
2015-05-28 11:24:45
1200
转载 OSI七层模型详解
网络路由器工作任务layer远程登录 OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 。完成中继功能的节点通常称为中继系统。在OSI七层模型中,处于不同层的中继系统具有不同的名称。 一个设备工作在哪一层,关键看它工作时利用哪一层的数据头部信息。网桥
2015-05-19 19:35:33
462
原创 TCP/IP四层模型和OSI七层模型的概念
TCP/IP四层模型TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。TCP/IP协议簇分为四层,IP位于协议簇的第二层(对应OSI的第三层),TCP位于协议簇的第三层(对应OSI的第四层)。 TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为: 应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、
2015-05-19 19:11:53
570
原创 Linux的进程/线程通信方式总结
Linux系统中的进程间通信方式主要以下几种:同一主机上的进程通信方式 * UNIX进程间通信方式: 包括管道(PIPE), 有名管道(FIFO), 和信号(Signal) * System V进程通信方式:包括信号量(Semaphore), 消息队列(Message Queue), 和共享内存(Shared Memory)网络主机间的进程通信方式
2015-05-19 18:48:05
444
原创 Http协议详解
(一)初识HTTP消息头但凡搞WEB开发的人都离不开HTTP(超文本传输协议),而要了解HTTP,除了HTML本身以外,还有一部分不可忽视的就是HTTP消息头。做过Socket编程的人都知道,当我们设计一个通信协议时,“消息头/消息体”的分割方式是很常用的,消息头告诉对方这个消息是干什么的,消息体告诉对方怎么干。HTTP传输的消息也是这样规定的,每一个HTTP包都分为HTTP头和HTT
2015-05-19 17:05:54
485
转载 【强烈推荐】《剑指Offer:名企面试官精讲典型编程题》一书中IT名企经典面试题
各位程序猿: 《剑指Offer》一书源自该书作者何海涛坚持更新与编写的博客(http://zhedahht.blog.163.com/),该博客收集整理了大量如微软、Google等知名IT企业的经典面试题。《剑指Offer》一书在此基础上选取了50个典型的程序员面试题,从基础知识、代码质量、解题思路、优化效率和综合能力五个方面系统整理了影响面试的5个要点,难度适中,讲解清晰,
2015-05-15 15:28:02
535
原创 二叉树的各种操作
#include 2 #include "stdlib.h" 3 #include 4 #include 5 #include 6 using namespace std; 7 8 //节点定义 9 typedef struct biNode{ 10 char val; 11 biNode* left; 12 biNode* righ
2015-05-13 10:06:35
345
原创 《JAVA与模式》之适配器模式
适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器模式的用途 用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的电源插座却只有两极,没有地极。电源插座与笔记本电脑的电源插头不匹配使得笔记本电脑无法使用。这时候一个三相到两相的转换器(适配器)就能解决此问题,而
2015-05-10 20:37:44
337
转载 《JAVA与模式》之工厂方法模式
http://www.cnblogs.com/java-my-life/archive/2012/03/25/2416227.html在阎宏博士的《JAVA与模式》一书中开头是这样描述工厂方法模式的: 工厂方法模式是类的创建模式,又叫做虚拟构造子(Virtual Constructor)模式或者多态性工厂(Polymorphic Factory)模式。 工厂方法模式
2015-05-10 20:27:14
433
转载 《JAVA与模式》之单例模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述单例模式的: 作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。单例模式的结构 单例模式的特点:单例类只能有一个实例。单例类必须自己创建自己的唯一实例。单例类必须给所有其他对象提供这一实例。 饿汉式单例类publi
2015-05-10 19:22:51
346
转载 进程和线程的区别
简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 转载至http://www.cnblogs.com/lmule/archive/2010/08/18/1802774.html线程的划分尺度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。线程在执行过程中与进程还是有区别的。每个独立的线程
2015-05-09 22:11:56
621
原创 java实现约瑟夫环问题
由m个人围成一个首尾相连的圈报数。从第一个人开始,从1开始报数,报到n的人出圈,剩下的人继续从1开始报数,直到所有的人都出圈为止。对于给定的m和n,求出所有人的出圈顺序.import java.util.Scanner;/***使用数组实现约瑟夫环问题*由m个人围成一个首尾相连的圈报数。*从第一个人开始,从1开始报数,报到n的人出圈,*剩下的人继续从1开始报数,直到
2015-05-08 15:12:30
610
转载 Java并发编程:volatile关键字解析
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们
2015-05-07 15:53:58
409
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人