自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 mysql安装、卸载、修改密码

mysql卸载 1.sudo rm /usr/local/mysql 2 sudo rm -rf /usr/local/mysql* 3 sudo rm -rf /Library/StartupItems/MySQLCOM 4 sudo rm -rf /Library/PreferencePanes/My* 5 vim /etc/hostconfig (and removed the l

2017-05-21 14:59:11 463

转载 Eclipse中的创建maven项目,无法添加src/main/java等source folder

Eclipse中的创建maven项目,无法添加src/main/java等source folder

2017-05-19 15:53:45 354

原创 Spring实战4之缓存篇

一、配置缓存 (1)配置CacheManager的bean,并且设置好EnableCaching的注解@Configuration@EnableWebMvc@EnableCachingpublic class RootConfig { @Bean public CacheManager cacheManager(){ return new Concurrent

2017-05-19 09:36:34 656

原创 Spring实战4之数据源篇

一、JDBC配置 (1)引入mysql-connector-java的库 (2)RootConfig 中加入DataSource的配置,这里使用的是Spring的jdbc连接控制器,并配置JdbcTemplate@Configuration@EnableWebMvcpublic class RootConfig { @Bean public DataSource dataS

2017-05-19 08:55:52 317

原创 Spring实战4之Spring Security

1.禁止所有的请求访问 引入security-web与security-config两个依赖package com.fishedee;import org.springframework.core.annotation.Order;import org.springframework.security.web.context.AbstractSecurityWebApplicationIniti

2017-05-18 17:36:15 557

原创 Spring实战4之Spring Web Flow篇

一、披萨流程 首先从构建一个高层次的流程开始,它定义了订购披萨的整体流程,然后将其拆分为多个子流程。 1.定义基本流程 当顾客访问Spizza网站时,他们需要进行用户识别、选择一个或多个披萨添加到订单、提供支付信息,然后提交订单,等待披萨上来,如下图: 网上购买披萨的流程 下面展示Spring Web Flow的XML流程定义来实现披萨订单的整体流程:<?xml version="1.0"

2017-05-18 17:16:52 1766

原创 Spring实战4之SpringMVC高级篇

一、DispatcherServlet个性化配置 继承AbstractAnnotationConfigDispatcherServletInitializer时,同时还有许多其他方法可以重写从而可以实现更多的配置。 例如customizeRegistration()方法,在注册了DispatcherServlet之后,就会调用customizeRegistration()方法,并根据servle

2017-05-18 16:35:16 1895

原创 Spring实战4之SpringMVC篇

一、一个请求的过程 二、搭建SpringMVC 1.配置DispatcherServlet (1)使用Java配置DispatcherServlet 在旧版本中,DispatcherServlet之类的servlet一般在web.xml文件中配置,该文件一般会打包进最后的war包种;但是Spring 3引入了注解,可以在servlet容器中使用Java配置DispatcherServlet,

2017-05-18 10:53:50 563

原创 Spring实战4之高级配置篇

一、使用profile注解配置环境二、使用Conditional注解创建条件化的bean三、使用Qualifier注解处理自动装配的歧义性四、使用Scope注解声明bean的作用域并设置作用域的代理五、运行时注入值六、Spel Spring表达式使用

2017-05-17 17:43:40 297

原创 Spring实战4之AOP篇

切面实现了横切关注点(跨多个应用对象的逻辑)的模块化,面向切面编程使得应用对象只用关注自己的业务逻辑实现,而不需要关注共通的例如,日志、事物、缓存等功能。一、使用注解创建切面 1.定义切面/** * 观众类,定义为切面类 * @author shier * */@Aspectpublic class Audience { /* * 定义命名的切点 */

2017-05-17 17:36:01 444

原创 Spring实战4之DI(依赖注入)

Spring容器创建应用对象之间的协作关系称为装配。下面介绍最常见的三种装配方法。一、自动化装配bean 1.组建扫描(component scanning):Spring会自动发现应用上下文中所创建的bean。 (1)使用@Component注解标记要被实例的bean/** * 球类接口 * @author shier * */public interface Ball {

2017-05-17 16:44:50 271

原创 spring实战4之容器篇

一、Spring的上下文容器 Spring框架的中心是一个容器,它负责管理Spring应用中的bean是如何创建、配置与管理的。 Spring自带多个容器实现,简单的分为两大类。 1.BeanFactory是最简单的容器,提供基本的DI支持。bean工厂太低级了,所以一般不怎么使用。2.ApplicationContext,基于BeanFactory构建,并提供应用框架级的的服务,例如从属性文

2017-05-17 15:35:06 385

原创 线程池高级

一.估算线程池最优大小: Ncpu = CPU的数量 = Runtime.getRuntime().availableProcessors(); Ucpu = 目标CPU的使用率, 0 <= Ucpu <= 1; W/C = 等待时间与计算时间的比率; 为了保持处理器达到期望的使用率,最优的线程池大小等于: Nthreads = Ncpu * Ucpu * (1+ W/C);二.配置Thr

2017-04-23 22:29:05 332

原创 线程池基础

一.Executor线程池三种线程执行策略 JDK中的Executor框架是基于生产者-消费者模式的线程池,提交任务的线程是生产者,执行任务的线程是消费者。 Executor线程池可以用于异步任务执行,而且支持很多不同类型任务执行策略,同时为任务提交和任务执行之间的解耦提供了标准方法。 (1).顺序执行: 类似于单线程顺序执行任务,优点是实现简单;缺点是扩展性受限,执行效率低下,例子代码如下

2017-04-23 22:24:35 207

原创 容器类的同步

一、容器同步类 1.同步容器类复合操作容易出现的问题: JDK中同步容器类包括两部分: 早期JDK中的Vector和Hashtable; JDK1.2引入的同步包装类,即由Collections.synchronizedXxx工厂方法创建的容器类。 同步容器类都是线程安全的,它们提供的基本操作都是原子操作,但是对于诸如迭代、导航和缺少即加入的条件运算等复合操作来说,通常需要使用额外的客户端

2017-04-20 21:36:44 305

原创 线程安全和对象共享

一、线程安全类 1.定义:当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协调,这个类都能表现出正确的行为,那么就称这个类是线程安全类。2.确保线程安全的方法 (1)无状态对象:不包含任何域,也不包含任何对其他类中的域的引用。计算过程中的临时状态仅存在于线程栈上的局部变量中,并且只能由正在执行的线程访问。public cla

2017-04-19 19:55:53 402

原创 设计模式之代理模式

一、代理模式 1.代理模式定义:为其他对象提供一种代理以控制对这个对象的访问。2.代理模式UML 3.代理模式的示例interface ProxyBase{ public void f(); public void g(); public void h(); } //代理程序 class Proxy implements ProxyBase{

2017-04-13 16:13:43 320

原创 设计模式之享元模式

一、享元模式 1.享元模式定义:为了避免大量拥有相同内容的小类重复创建,而使大家共享一个类的模式。Flyweight享元设计模式实质是运用一个简单工厂方法模式,外加一个单类模式实现细粒度原件的共享。2.享元模式的UML 3.享元模式示例class Book{ private String title; private float price; private

2017-04-13 16:00:30 244

原创 设计模式之外观模式

一、外观模式 1.外观模式定义:为子系统的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这个字系统更加容易使用。2.外观模式UML 3.外观模式示例class SubSystemOne{ public void methodOne(){ System.out.println("子系统方法一"); }}class SubSystemTwo{

2017-04-13 15:51:26 270

原创 设计模式之装饰模式

一、装饰模式 1.装饰模式定义:动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。2.装饰模式的UML 3.装饰模式的示例/** * 装饰模式是为已有功能动态的添加更多功能的一种方式 * 它把每个要装饰的功能放在单独的类中,并让这个类包装它所要装饰的对象,因此,当需要执行特殊行为时, * 客户端代码可以在运行时根据需要有选择的和按顺序的使用装饰功能包装对象。

2017-04-13 15:47:03 189

原创 线程安全与锁优化

一、java 语言中的线程安全 1.java 中操作共享的数据的5类操作 (1)不可变:java语言中,如果共享数据是基本类型,只要定义时使用final关键字修饰就可以保证它不可变;如果共享数据类型是对象,那就需要保证对象的行为(对象中的方法)不会对其状态产生任何影响才行,最简单的就是把对象中带有状态的变量都声明为final,在构造函数结束后,这样就是不可变的了。线程安全的。在java API中

2017-04-13 15:14:41 302

原创 java内存模型与线程

一、硬件的效率与缓存一致性 1.解决计算机硬件处理器和内存交互缓慢的问题,在计算机系统中加入一层高速缓存作为中介。2.每一个处理器都有一个缓存,但是却共享一个内存,会出现缓存不一致问题,处理器在访问缓存的时候要遵循一些协议。3.处理器使用乱序执行优化使得处理器内部的运算单元尽量被充分利用。二、java内存模型 1.主内存和工作内存 (1)java内存模型的定义:在虚拟机中将变量存储到内存中和从

2017-04-12 16:41:04 386

原创 Tomcat正统类加载器架构

1、Web服务器要解决的几个问题 (1)部署在同一个服务器上面的不同的Web应用程序所使用的Java类库可以实现相互隔离。 (2)部署在同一个服务器上面的不同的Web应用程序所使用的Java类库可以互相共享。 (3)服务器需要尽可能地保证自身的安全不受部署的Web应用程序影响。 (4)支持JSP应用的Web服务器,大多数都需要支持HotSwap功能。2.Tomcat5类加载器结构 Tomc

2017-04-10 15:54:38 419

原创 虚拟机字节码执行引擎

一、运行时栈帧结构 1.栈帧定义:用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机的虚拟机栈的栈元素。存储了局部变量表、操作数栈、动态连接、方法返回地址等信息,每一方法从调用开始到执行完成的过程,对于栈帧在虚拟机中里面入栈到出栈的过程。在代码编译期,栈帧需要多大的局部变量表、多深的操作数栈都已经确定,并写入到方法表的Code中,程序运行期不会改变。2.局部变量表 (1)局部变量表定义:

2017-04-07 15:04:09 188

原创 虚拟机类加载机制

一、概述 1.类加载机制定义:虚拟机把Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制。2.在java中类型的加载、连接和初始化过程都是在程序运行期完成,这种策略会令类加载时稍微增加一些性能消耗,但提高了java应用程序的灵活性。java的多态就是依赖运行期动态加载和动态连接实现的。二、类加载的时机 1.类加载的生

2017-04-06 16:52:06 177

原创 类文件结构

一、无关性的基石 1.java虚拟机只与不同语言编译器编译后的特定的二进制文件格式的class文件进行关联,并且这些class文件要遵循java虚拟机规范中的许多强制性和结构化约束。所以它是跨平台和跨语言的。二、class类文件结构 1.Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑的排列在Class文件之中,中间没有添加任何分隔符,没有空隙存在。当遇到需要占用

2017-04-05 18:55:35 203

原创 设计模式之组合模式

一、结构性设计模式-组合模式 1.组合模式定义:将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。2.组合模式的UML 3.组合模式示例import java.util.ArrayList;import java.util.List;/** * 组合中的对象声明接口,所有实现类的共有接口的默认行为 * @author shier *

2017-04-03 17:50:52 237

原创 设计模式之桥接模式

一、结构性设计模式-桥接模式 1.桥接模式定义:将抽象部分与它的实现部分分离,使他们都可以独立的变化,实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让它们独立变化,减少它们之间的耦合。2.桥接模式的UML 3.桥接模式的示例/** * 手机品牌抽象类 * @author shier * */public abstract class HandsetBran

2017-04-03 17:11:16 207

原创 设计模式之适配器模式

一、结构性设计模式-适配器设计模式 1.适配器设计模式的定义:将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。java中目前支持对象适配器模式,并且只有在双方都不太容易修改的时候在使用适配器模式适配。2.适配器设计模式UML 对象适配器:3.适配器模式示例/** * 客户所希望的类 * @author shier * */public

2017-04-03 16:48:20 205

原创 设计模式之原型模式

一、原型模式 1.原型模式定义:用原型实例指向创建对象的种类,并且通过拷贝这些原型创建新的实例。原型对象就是通过一个对象再创建另一个可定制的对象,而不需要知道任何创建的细节。而建造者模式是知道最终创建产品,然后通过不同的实现方式去创建这个最终产品,同样也不需要中间的任何创建细节。2.原型模式的UML 3.原型模式示例/** * 工作经历类 * @author shier * */cla

2017-04-03 16:27:49 311

原创 设计模式之单例模式

一、单例模式 1.单例模式定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点,该类不可子类化。2.单例模式的UML 3.单例模式的示例import java.io.ObjectStreamException;import java.io.Serializable;/** * * 饱汉式单例模式 * @author shier * */@SuppressWarnings("

2017-04-02 12:24:01 341

原创 设计模式之建造者模式

一、建造者模式 1.建造者模式定义:讲一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。2.建造者模式UML 3.建造者模式示例import java.util.ArrayList;import java.util.List;/** * 产品类 * @author shier * */class Product{ List<String> parts

2017-04-02 10:59:56 413

原创 设计模式之工厂模式

一、简单工厂模式 1.简单抽象工厂模式,又称作静态工厂方法模式,由工厂(使用switch)决定创建具体产品,不符合开放关闭原则。2.简单工厂模式UML图 3.简单工厂模式示例package cn.sy.edu.factory.simplefactory;/** * 封装一个OPeration类,包含numberA、numberB两个参数 * 然后加减乘除不同运算方式类继承此类,并用不同行为覆

2017-04-01 10:57:01 208

原创 垃圾收集器与内存分配策略

一、对象已死嘛引用计数算法 (1)引用计数算法定义:给对象中添加一个引用计数器,每当在一个地方引用它,计数器值加1,引用实效计数器值减1,当计数器值为0时,对象就不再被使用。 (2)引用计数算法问题:主流的java虚拟机中没有选用引用计数算法来管理内存,主要是因为难以解决对象间相互循环引用问题。/** * testGC()方法执行后,objA、objB会不会被GC? *

2017-03-31 14:17:59 207

原创 java内存区域与内存溢出异常

一、java虚拟机所管理的内存包括几个运行数据区域程序计数器 (1)在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指 令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。 (2)每一个线程都有一个独立的程序计数器,线程私有的。 (3)程序计数器记录的正在执行线程的一个java方法

2017-03-30 12:04:36 426

转载 java面试:编译时与运行时

在开发和设计的时候,我们需要考虑编译时,运行时以及构建时这三个概念。理解这几个概念可以更好地帮助你去了解一些基本的原理。下面是初学者晋级中级水平需要知道的一些问题。Q.下面的代码片段中,行A和行B所标识的代码有什么区别呢?12345678910111213

2016-12-05 17:46:13 178

转载 jvm学习1

首页所有文章资讯Web架构基础技术书籍教程Java小组工具资源- 导航条 -首页所有文章资讯Web架构基础技术书籍教程Java小组工具资源JVM性能优化, Part 1 ―― JVM简介2012/12/16 | 分类: 基础技术 | 9 条评论 | 标签: JVM, 性能分享

2016-12-05 17:41:31 253

空空如也

空空如也

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

TA关注的人

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