【Java综合】
文章平均质量分 84
mars-kobe
追梦人,学无止境
展开
-
Java 事务及隔离级别
Java 事务及隔离级别原创 2014-04-30 23:46:06 · 15558 阅读 · 15 评论 -
AOP 续
本文是《AOP 那点事儿》的续集。在上篇中,我们从写死代码,到使用代理;从编程式 Spring AOP 到声明式 Spring AOP。一切都朝着简单实用主义的方向在发展。沿着 Spring AOP 的方向,Rod Johnson(老罗)花了不少心思,都是为了让我们使用 Spring 框架时不会感受到麻烦,但事实却并非如此。那么,后来老罗究竟对 Spring AOP 做了哪些改进呢?转载 2015-06-21 16:53:18 · 868 阅读 · 1 评论 -
Java反射
一、 概念 一句话说明反射“反射就是把Java类中的各种成分映射成相应的Java类”。如果你对反射足够的了解,相信你一定会对这句话有很多共鸣。 换句话说:一个类中的每个成员都可以用相应的反射API类的一个实例对象来表示(如下图),通过调用Class类的方法(getField、getMethod、getConstructor等)可以得到这些实例对象。原创 2015-06-21 17:20:50 · 1028 阅读 · 3 评论 -
AOP
大神写的文章看着就是爽,还是忍不住转载了,原文:http://my.oschina.net/huangyong/blog/161338今天我要和大家分享的是 AOP(Aspect-Oriented Programming)这个东西,名字与 OOP 仅差一个字母,其实它是对 OOP 编程方式的一种补充,并非是取而代之。翻译过来就是“面向方面编程”,可我更倾向于翻译为“面向切面编程”。它听起有转载 2015-06-21 16:50:33 · 1150 阅读 · 3 评论 -
Java多线程编程— 线程同步问题
一、 互斥锁的概念 我们知道,一个进程中的多个线程是可以共享这个进程的系统资源的。如果多个线程同时修改统一个资源(对象)就会导致这个资源的不稳定性和某一时刻的不准确性。 于是,为了保证共享数据操作的完整性,在Java语言中,引入了对象互斥锁的概念。每个对象都对应于一个可称为“互斥锁”的标记,这个标记保证在任一时刻,只能有一个线程访问该对象。 关键原创 2015-06-23 17:07:39 · 1081 阅读 · 2 评论 -
Java多线程编程— 概念以及常用控制
多线程能满足程序员编写非常有效率的程序来达到充分利用CPU的目的,因为CPU的空闲时间能够保持在最低限度。有效利用多线程的关键是理解程序是并发执行而不是串行执行的。例如:程序中有两个子系统需要并发执行,这时候就需要利用多线程编程。线程的运行中需要使用计算机的内存资源和CPU。一、 进程与线程的概念 这两者的概念,这里只给出自己狭隘的理解: 进程 进程是一个独立的活动的实原创 2015-06-23 16:26:37 · 1316 阅读 · 2 评论 -
Java发送Email—使用org.apache.commons.mail
上篇文章介绍了自己手动的实现发送普通Email、HTML类型的Email以及带附件的Email。其实apache的commons项目下有个email子项目,它对JavaMail API进行了封装,用起来特变方便。下面就简单介绍。1. 首先配置需要的jar包 需要将mail.jar和commons-email.jar添加到我们的CLASSPATH中即可,如下图:原创 2015-06-24 18:02:21 · 20523 阅读 · 5 评论 -
Java发送Email
使用Java应用程序发送E-mail十分简单,下面主要演示,发送普通的Email;发送HTML类型的Email;发送带附件的Email。一、 首先配置需要的jar包 我们需要将mail.jar和activation.jar 两个jar包添加到我们的CLASSPATH中,你可以在JavaMail API和JAF(JavaActivation Framework)下载最原创 2015-06-24 17:46:37 · 1487 阅读 · 2 评论 -
Java反射—模拟Spring的Aop
1. 大概流程 上篇文章已经结合Java反射解释了SpringAop的原理,这里我们简单模拟以下Spring的Aop实现。大体流程如下: Ø 创建一个properties配置文件模拟Spring配置文件。 Ø 创建一个增强接口与一个实现类模拟Spring的Advice。 Ø 创建一个生成代理的工厂类,并在InvocationHandler类的invoke方法中织原创 2015-07-28 21:52:16 · 2358 阅读 · 3 评论 -
Java反射—结合框架谈注解
1. 概念 首先,要理解注解的作用。注解的作用很简单、明确,它就是一种标记。在程序中加入了注解,就等于为程序(例如:类、方法)打上了某种标记;没加注解,则表示没有加标记。以后,我们就可以在其它程序中通过反射来得到,加了注解的有哪些类,没加注解的有哪些类。这样就可以对这两种类进行不同的处理。 例如,我们可以在Spring中定义一个注解@SpringClazz,如果原创 2015-07-29 10:24:48 · 1199 阅读 · 4 评论 -
Java类加载器
1. 系统加载器简介 Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器(BootStrap、ExtClassLoader、AppClassLoader),每个类加载器负责加载特定位置的类。 类加载器本身也是Java类(BootStrap除外),因为它本身也要被类加载器加载,这样显然一定有第一个类加载器不是Java类,没错,正是BootStrap类加载器。它是由C++语原创 2015-07-29 17:40:02 · 989 阅读 · 3 评论 -
Java反射—运用反射生成jdk动态代理
1. 核心类&接口 在Java的java.lang.reflect包下提供一个Proxy类和一个InvocationHandler接口,通过使用这个类和接口可以生成jdk动态代理类或动态代理对象。 Proxy是所有动态代理类的父类,它提供了两个静态方法来创建动态代理类和动态代理对象,如下: Ø static ClassgetProxyClass(Cl原创 2015-07-28 21:42:23 · 6081 阅读 · 11 评论 -
Nginx+Tomcat搭建高性能负载均衡集群
一、 工具 nginx-1.8.0 apache-tomcat-6.0.33二、 目标 实现高性能负载均衡的Tomcat集群: 三、 步骤 1、首先下载Nginx,要下载稳定版: 2、然后解压两个Tomcat,分别命名为apache-tomcat-6.0.33-原创 2015-08-19 11:45:23 · 122243 阅读 · 48 评论 -
ActiveMQ实战
ActiveMQ是JMS规范的一个实现产品,即对JMS的一套接口进行了实现。所以下面我们先对JMS与ActiveMQ进行一个简单介绍,然后再介绍ActiveMQ的P2P与PubSub两种开发模式。一、 JMS简介 JMS即Java消息服务,是J2EE的13规范之一,是一套面向消息中间件(MOM)的应用程序接口。用在两个程序之间,或分布式系统中发送消息,进行原创 2015-08-19 12:05:01 · 6301 阅读 · 2 评论 -
Nginx简介
一、 概念 Nginx——Ngine X,是一款高性能的反向代理服务器;也是一个IMAP、POP3、SMTP代理服务器;也是一个Http服务器。也就是说Nginx本身就可以托管网站,进行Http服务处理,也可以作为反向代理服务器使用。二、 正向代理和反向代理 首先,代理服务器一般指局域网内部的机器通过代理服务器发送请求到互联网上的服原创 2015-08-19 11:27:07 · 6014 阅读 · 5 评论 -
Memcache启动&存储原理&集群
一、 windows下安装启动 首先将memcache的bin目录加入到Path环境变量中,方便后面使用命令: 然后执行 memcached –dinstall 命令安装memcache的服务: 然后去计算进的服务页面可以看到已成功安装: 启动memcache的后台服务程序:原创 2015-08-19 11:20:38 · 3947 阅读 · 1 评论 -
log4j使用及详细配置说明
一、 首先简单介绍log4j的使用步骤 整体上分为如下几个步骤:1、引入log4j-*.*jar,的Jar包;2、添加配置文件(log4j.xml或log4j.properties);3、包装log工具类在业务中使用。此为传统的使用步骤,不过我们可以直接用lombok包装好的log工具类,具体步骤:1.1 引入jar包 org.project原创 2017-06-11 17:37:38 · 2421 阅读 · 5 评论 -
Exception处理
1 原则 如果被调用方显示的向上Throw了Exception , 那么调用方【必须显示地处理】Exception(向上Throw或者Try...Catch); 2 避免异常堆栈信息被吞掉 如果被调用方Try...Catch了Exception,但没有打印Exception堆栈信息;而此时调用方也无法获得Exception的信息,那么【原创 2017-07-28 16:09:56 · 1452 阅读 · 2 评论 -
java集合排序
实际开发中,我们经常需要对一个实体集合中的实体按照实体的某一个字段进行排序,然后再有序地显示到界面上。例如:我们得到了一个学生集合,而需求要求我们可以按照学生的姓名排序或学生成绩排序。 我们得到的实体集合一般是List或Set类型,所以这里就对二者的排序进行简介。1、List排序 List集合本身是有序的,所以对它的排序较简单,这里根据List集合元素的类型分为如下两类:原创 2015-05-31 15:24:21 · 2125 阅读 · 3 评论 -
JavaEE容器简介
1、定义 容器就是组件和底层服务细节之间的接口。在web组件、企业级Bean等能够执行之前,它必须被装配为一个JavaEE模块,并部署在容器上。如下图: 装配的过程主要包括:定制容器事务管理特性;JNDI服务等。当然,在JAVA EE中,各种不同类型的模块既可以单独打包(JAR)部署,也可以将这些模块综合起来做成一个EAR包进行部署。2、服务 Ja原创 2015-02-13 21:10:14 · 5149 阅读 · 7 评论 -
数据源和连接池
数据源 从接触DBMS开始就在用数据源(DataSource),它其中很重要的一个作用就是可以管理Connection,管理的方式也就是经常听到的ConnectionPool。它的管理其实就是对DriverManager获取Connection进行了包装。 下面就首先看看用DataSource来取代DriverManager来获取Connection的好处: 一般DataSour原创 2014-05-18 13:53:49 · 2853 阅读 · 25 评论 -
JDBC及操作数据库步骤
概念 JDBC-数据库连接,是由一些类和接口构成的API,是J2SE的一部分,有java.sql、javax.sql包组成。下面看一下JDBC API与应用程序和数据库驱动及数据库之间的关系: 可以看出JDBC是Sun公司为应用程序与数据库驱动之间提供的一组接口(规范)。操作数据库的步骤(以mySql为例) 与ODBC类似,分为以下几步:原创 2014-04-10 23:21:59 · 12198 阅读 · 33 评论 -
Java批处理操作
批处理,可以大幅度提升大量增、删、改的速度,就是对大数据操作有很大的效率提升。 与上篇文章中提到的“连接池”相似。其实就是先将多次操作(增删改)打包,然后再一次发送执行 主要用到两个方法: Ø 打包:PreparedStatement.addBatch(); Ø 发送、执行:PreparedStatement.executeBatch(); 下面看做同一原创 2014-05-20 00:16:30 · 9815 阅读 · 26 评论 -
Java反射入门
Java这么多高灵活性,很多都是利用反射来实现的,所谓的反射是指,编译期间完全未知的classes,运行时,对任一个类(根据类名-字符串),能够知道这个类的所有属性和方法;对于任一个对象,都能够调用它的任意一个方法和属性。 简而言之,Java反射机制主要提供了以下功能: Ø 在运行时判断任意一个对象所属的类;obj.getClass() Ø 在运行时构造任意一个类的原创 2014-05-25 14:39:55 · 1787 阅读 · 51 评论 -
Servlet基础
首先Servlet的命名源于Server+Applet,它就是一个继承了HttpServlet类的一个普通的java类。 都知道它的作用类似于ASP.NET中的HttpHandler(一般处理程序),不错,在.NET中其实用HTML页+HttpHandler+DAL来开发网站,效率是最高的,而且完全可以实现。因为这样就抛掉了我们传统开发所用的大量服务器控件,用纯的HTML控件开发不需要服务器原创 2014-07-29 00:47:14 · 1367 阅读 · 22 评论 -
JSP基础
JSP的出现 上篇文章中提到了用Servlet开发,渲染客户端页面是需要一句一句输出的,这样,编写和修改HTML都会非常不方便。也就是说Servlet写“业务层”很合适,但是写“表现层”很繁琐。 于是写“表现层”很方便的JSP就诞生了。这里需要指明,JSP并没有增加任何本质上不能用Servlet实现的功能。但是,在JSP中编写静态HTML更加方便,不必再用println语句来输出每一行原创 2014-07-30 00:43:37 · 1457 阅读 · 21 评论 -
XML基础以及用DOM4j读取数据
都知道,HTML被设计用来显示数据,XML被设计用来保存、传输数据。而我们平时经常用的无非是保存数据、读取数据。所以这里主要介绍XML相关基础内容,以及用DOM4j来存取XML的数据。下面简介XML相关的基础内容——命名空间、XSL、DTD与Schema基本结构 -------------------------------------------------------原创 2014-07-31 23:42:41 · 1676 阅读 · 18 评论 -
几种网站开发模型- Model1、Model2、三层
以目前自己的理解,所接触到的面向对象思想中最重要的是“抽象”,软件设计目标中最重要的是“可以应对需求的变化(增加或更改)”。 思考一下,无论是“分层”思想,还是“设计模式”思想,还是“泛型”思想等,应该可以说最终的目的都是为了“可以应对需求的变化”,且都充盈着“抽象”。 分层是为了使得“大变小、繁变易”,而针对不同的现实情况,它可以演化出千变万化的原型。分层是一种思想,而Model1、原创 2014-08-26 00:49:34 · 4333 阅读 · 21 评论 -
Java5新特性之静态导入、可变参数、增强for循环、自动拆装箱
JDK1.5已经发布很长时间,之所以还拿出来是因为它增加了很多个重要的特性,使用这些特性有助于我们简化开发,编写的代码更加简洁清晰安全,主要有以下几个特性: Ø 静态导入 Ø 可变参数 Ø 增强for循环 Ø 自动拆装箱 Ø 泛型 Ø 枚举 由于泛型、枚举内容比较多,也最重要,之后单拿出来讲。这里先介绍前面四个简单而又实用的小特性原创 2014-09-27 21:25:35 · 1548 阅读 · 22 评论 -
Filter基础
一、概要 简单的说,Filter的作用就是拦截Tomcat的service(Request,Response)方法,拿到Request、Response对象进行处理,然后释放控制,继续自动流转。其运用的还是“分层”的思想。 至于为什么要加入这一层,为什么要对Request、Response对象进行拦截,个人感觉根本原因是为了对多个服务器资源(Servlet、JSP等)的请求、相应进行一原创 2014-08-28 01:01:53 · 1941 阅读 · 20 评论 -
Java5新特性之枚举
1. 概念 首先,枚举并不是一种新技术,而是一种基础数据类型.它隶属于两种基础类型中的值类型,如下: 2. 为什么要有枚举 枚举在真正的开发中是非常常用的,它的作用很简单也很纯粹:它定义了一种规范,就是要让某个类型的变量的取值只能为若干个固定值中的一个,也就是要符合它定义的规范.它可以让编译器在编译时就可以识别程序中填写的非法值,一定程度上防止了运行原创 2014-09-29 01:11:02 · 1989 阅读 · 26 评论 -
Spring基础
1. Spring的出现 Spring是为了解决企业应用程序开发复杂性而创建的一个开源的轻量级的框架。所谓框架,就是针对某组问题的一组解决方案。也就是某组问题用不用框架都可以解决,只不过框架提供了一套较优的解决方案。那么下面就看Spring框架具体解决了开发中的什么问题。2. Spring 的作用 首先,Spring的主要作用就是“管理对象以及对象之间的依赖关系”:原创 2014-11-29 20:13:59 · 1009 阅读 · 10 评论 -
Spring 对 AOP 的支持
1、AOP概念 首先,AOP是对OOP的一个补充。它考虑的是“横切性”问题。横切性问题即可以理解为我们同一层类的问题(例如:Service层)。 它的理念是,把遍历在系统各个角落具有横切性的独立的服务,抽出来放到一个地方,然后等到运行时,再放进去,考虑的是“横向”的东西。将横切性关注的东西给抽出来,会使代码大大减少,更加简洁,更加有复用性。 下图展示AOP中的基本概念:原创 2014-12-28 17:24:06 · 1139 阅读 · 13 评论 -
静态代理&动态代理
代理概念代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理;而,具体的业务操作由真实委托类执行。为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别。通过代理类这中间一层,能有效控制对委托类对象的直接访问,也可以很好地隐藏和保护委托类转载 2014-12-28 20:15:38 · 922 阅读 · 13 评论 -
Spring AOP中的JDK动态代理与CGLIB代理
1、在Spring中的应用 Spring在将Advice织入目标对象的Joinpoint是在运行时动态进行的。它采用的方式可能有两种,即JDK动态代理与CGLIB代理。Spring会根据具体的情况在两者之间切换。 实际情况如下: Ø 如果目标对象实现了接口,那么Spring默认会采用JDK的动态代理实现AOP Ø 如果目标对象实现了接口,也可以强制使用CGLIB生成代理原创 2014-12-28 21:48:11 · 2687 阅读 · 15 评论 -
Spring Bean的作用域
1. 常用的两种作用域 Ø scope="singleton" Ø scope="prototype" 首先,scope="singleton"是Spring的IoC容器创建Bean的默认作用域,它表示每个Bean只会创建一次,并将该Bean的状态进行保存,然后再次从IoC容器中拿同一个Bean时直接取用即可,不用再次创建。 然后, scope="prototype"表原创 2014-12-28 15:10:05 · 985 阅读 · 12 评论 -
Java EE应用程序的组件构成与EJB 的出现
1、Java EE应用程序的组件构成(分布式多层应用架构) Java EE应用程序由组件构成: 客户端组件与运行在服务器端的业务逻辑组件通信时,既可以直接访问,也可以通过Web层的组件访问,如下图: SSH架构在整个JavaEE架构中的位置: JavaEE组件经过部署之后,被安装到JavaEE服务器中。JavaEE服务器提供web原创 2015-01-31 11:12:38 · 2429 阅读 · 11 评论 -
JVM常用内存参数配置
一、 常用参数 -Xms JVM启动时申请的初始Heap值,默认为操作系统物理内存的1/64但小于1G。默认当空余堆内存大于70%时,JVM会减小heap的大小到-Xms指定的大小,可通过-XX:MaxHeapFreeRation=来指定这个比列。Server端JVM最好将-Xms和-Xmx设为相同值,避免每次垃圾回收完成后JVM重新分配内存;开发测试机JVM可以保留默认值。原创 2017-11-08 09:55:22 · 67622 阅读 · 8 评论