自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (1)
  • 收藏
  • 关注

原创 设计模式(Design Patterns)-可复用面向对象软件的基础 06:适配器模式(Adapter)

一、写在前面的话之前的几篇文章分析了5种创建型模式,从设计模式(Design Patterns)-可复用面向对象软件的基础 06这篇文章开始,继续介绍7种结构型模式:适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式,其中对象的适配器模式是各种模式的起源。二、适配器模式(Adapter)适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹

2017-05-25 16:19:56 756

原创 设计模式(Design Patterns)-可复用面向对象软件的基础 05:原型模式(Prototype)和Java中的深、浅拷贝

原型模式(Prototype)原型模式虽然是创建型的模式,但是与工厂模式没有关系,从名字即可看出,该模式的思想是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象。本文将会通过对象的复制对原型模式进行讲解。在Java中,复制对象是通过clone()实现的,先创建一个原型类:package com.js.pattern5;/** * 原型模式 * 原型

2017-05-25 11:06:23 439

原创 设计模式(Design Patterns)-可复用面向对象软件的基础 04:建造者模式(Builder)

一、建造者模式(Builder)工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性,其实建造者模式就是前面抽象工厂模式和最后的Test结合起来得到的。我们看一下代码:还和前面一样,一个Sender接口,两个实现类MailSender和SmsSender。最后,建造者类如下:packag

2017-05-25 10:24:21 379

原创 设计模式(Design Patterns)-可复用面向对象软件的基础 03:单例模式(Singleton)

单例对象(Singleton)是一种常见的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处:1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。3、有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了。(比如某个部门出现了

2017-05-24 15:49:44 540

原创 设计模式(Design Patterns)-可复用面向对象软件的基础 02:工厂方法模式(Factory Method)和抽象工厂模式(Abstract Factory)

工厂方法模式有三种:1、普通工厂模式就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。首先,创建一个接口(Sender):public interface Sender{ public void Send();}然后,创建接口的实现类(MailSender、SmsSender):public class MailSender implements Sender

2017-05-24 11:10:23 776

原创 设计模式(Design Patterns)-可复用面向对象软件的基础 01:简介(Abstract)

一、概述设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式于己于他人与系统都是多赢的,可以使代码真正工程化。设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的

2017-05-24 10:41:32 710

原创 Java内存模型与线程02:主内存和工作内存

一、引言Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来拼搏掉各种硬件和操作系统的内存访问差异,以实现让Java程序直接在各种平台下都能达到一致的内存访问效果。在此之前,主流编程语言(C、C++等)直接使用物理硬件和操作系统的内存模型,因此,会由于不同平台上内存模型的差异,有可能导致程序在一套平台上并发完全正常,而在另外一套平台上并发访问却经常出

2017-05-23 16:03:16 596

原创 师门技术论坛:数据库并发访问、数据库多点并发访问、大数据存储

名词解释数据库连接数:某个数据库,同时接受最大的访问数,直接受制于技术和版权;eg:以MySql为例,“max_connections”表示数据库服务器可接受的同时最大访问量;“max_used_connections”表示数据库服务器分配给每个数据库的同时最大访问量;max_used_connections/ max_connections大于10%为最合理配置。数据库并

2017-05-23 10:47:35 1045

原创 Form表单传递参数到Servlet的原理

适逢下雨,在实验室无聊,冥想中闪过一个很久之前就想做的一个小实验,对于from表单中的文本框,submit之后,后台获取其中的参数值,是根据文本框的id来获取,还是根据文本框的name来获取呢?一个很简单的小问题,所以随手写了一个demo来测试下,测试代码如下。首先,新建一个jsp页面:index.jsp<%String path = request.getContextPath();

2017-05-23 10:34:17 1967

原创 Java内存模型与线程01:概述

一、并发概述多任务处理在现代计算机操作系统中几乎是已是一项必备的功能了。在很多情况下,让计算机同时去做几件事,不仅是因为计算机的运算能力太强大了,还有一个很重要的原因就是计算机的运算速度与它的存储和通信子系统速度的差距太大了,大量的时间都浪费在磁盘I/O、网络通信或者数据库访问上。如果不希望处理器在大部分时间里都处在等待其他资源的状态,就必须使用一些手段去把处理器的运算能力尽可能的高效率使用起

2017-05-19 10:53:42 501

原创 datalist控件输入中文时事件触发问题分析

今天项目中datalist输入中文时,使用微软输入法和谷歌输入法时,由于输入的拼音会直接进入页面输入框,因此会会直接触发oninput事件,同时也会触发onkeyup事件。但使用搜狗输入法、百度输入法等国产输入法时,输入法会阻断javascript捕捉到键盘的onkeyup事件,直到用户使用数字键或者空格键确认了中文输入,或者使用回车键直接输入了英文,因此在国产输入法和外国输入法这二者

2017-05-18 20:43:35 1378

原创 Html5新标签datalist实现输入框跟后台数据库数据的动态匹配

最近项目中涉及到一个小功能,客户在选择供应商时,由于供应商数目较多(大概3000个左右),因此直接生成下拉框显然不现实,所以就更换解决方案,打算借助Html5新增的标签datalist来实现输入中文/拼音首字母时,自动进入数据库模糊查询,并返回相应的结果,生成datalist,由于在输入框中的输入内容发生变化时,datalist会自动触发下拉框,所以使用起来比select更便捷。前端部分代码如下:

2017-05-18 10:53:51 2140

原创 Java实现访问指定url,并在指定时长后自动关闭浏览器

Java实现调用系统默认浏览器(我的电脑默认浏览器为谷歌浏览器),并在10s后自动关闭(等待网页加载完成),实现代码如下:package com.js.view;import java.awt.Desktop; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException;

2017-05-18 10:41:14 2237

原创 数据库-视图(View)详解

一、简介视图(View)可以看作定义在SQL Server上的虚拟表.视图正如其名字的含义一样,是另一种查看数据的入口.常规视图本身并不存储实际的数据,而仅仅存储一个Select语句和所涉及表的metadata。视图简单理解如下:通过视图,客户端不再需要知道底层table的表结构及其之间的关系。视图提供了一个统一访问数据的接口。二、为什么要使用视图(View)

2017-05-09 10:41:30 12217 1

原创 数据库-第一范式、第二范式、第三范式、BC范式、第四范式简析

在设计与操作维护数据库时,最关键的问题就是要确保数据能够正确地分布到数据库的表中。使用正确的数据结构,不仅有助于对数据库进行相应的存取操作,还可以极大地简化应用程序中的其他内容(查询、窗体、报表、代码等),按照“数据库规范化”对表进行设计,其目的就是减少数据库中的数据冗余,以增加数据的一致性。泛化时在识别数据库中的一个数据元素、关系以及定义所需的表和各表中的项目这些初始工作之后的一个细

2017-05-08 21:34:00 100168 14

原创 数据库-存储过程、触发器详解

一、存储过程SQL语句在执行时先要编译,然后再被执行。在大型数据库系统中,为了提高效率,将为了完成特定功能的SQL语句集进行编译优化后,存储在数据库服务器中,用户通过指定存储过程的名字来调用执行。下面是一个创建存储过程的常用语法:create procedure sp_name @[参数名][类型] as begin ......

2017-05-08 17:19:47 1796

原创 数据库-游标

数据库中,游标提供了一种对从表中检索出来的数据进行操作的灵活手段,它实际上是一种能从包含多条记录的结果集中每次提取一条记录的机制。游标总是与一条SQL选择语句相关联,因为游标是由结果集(可以是零条、一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成的。当决定对结果集进行处理时,必须声明一个指向该结果集的游标。游标允许应用程序对查询语句select返

2017-05-08 16:34:05 1122

原创 数据库-union和union all的区别(举例说明)

union在进行表求并集后会去掉重复的元素,所以会对所产生的结果集进行排序运算,删除重复的记录再返回结果。union all则只是简单地将两个结果集合并后就返回结果。因此,如果返回的两个结果集中有重复的数据,那么返回的结果就会包含重复的数据。从上面的对比可以看出,在执行查询操作时,union all要比union快很多,所以,如果可以确认合并的两个结果集中不包含重复的数据,

2017-05-08 16:19:24 7811

原创 数据库-内连接与外连接的区别(举例说明)

内连接,也被称为自然连接,只有两个表相匹配的行才能在结果集中出现。返回的结果集选取了两个表中所有相匹配的数据,舍弃了不匹配的数据。由于内连接是从结果表中删除与其他连接表中没有匹配的所有行,所以内连接可能会造成信息的丢失。内连接语法如下:select fieldlist from table1 [inner] join table2 on table1.column = table2.colum

2017-05-08 15:58:29 69542 24

原创 Ajax技术之Ajax重构(封装XMLHttpRequest)

Ajax的实现主要依赖于XMLHttpRequest对象,但是在调用其进行异步数据传输时,由于XMLHttpRequest对象的实例在处理事件完成后就会被销毁,所以如果不对该对象进行封装处理,在下次需要调用它时就需要重新构建,而且每次调用都需要写一大段的代码,使用起来很不方便。虽然现在很多开源的Ajax框架都提供了对XMLHttpRequest对象的封装方案,但是如果采用这些框架,通常需要加载很多

2017-05-06 17:05:40 1406

原创 Ajax技术之解决中文乱码问题

Ajax不支持多种字符集,它默认的字符集是UTF-8,所以在应用Ajax技术的应用程序中应及时进行编码转换,否则对于程序中出现的中文字符将变成乱码。一般情况下,有以下两种情况可以产生中文乱码。1、发送请求时出现中文乱码将数据提交到服务器有两种方法,一种是(正在手动编辑文章,半小时内完成,敬请关注。。。)

2017-05-06 16:20:32 1583

原创 Ajax技术之与服务器通信-一个完整的实例(实现检测用户名是否唯一功能)

在介绍了向服务器发送请求与处理服务器响应之后,下面将通过一个完整的实例,更好地说明在Ajax中如何与服务器通信。问题描述:在某用户注册界面,检测用户输入的用户名是否唯一。1、创建index.jsp文件,在该文件中添加一个用于收集用户注册信息的表单及表单元素,以及代表“检测用户名”按钮的图片,并在该图片的onclick事件中调用checkName()方法,检测用户名是否被注册。关键代码如下:

2017-05-06 10:37:17 1075

原创 Ajax技术之与服务器通信-发送请求与处理响应

通过上一讲的介绍,我们已经了解了Ajax和Ajax所使用的技术,下面我将介绍应用Ajax如何与服务器通信。1、发送请求Ajax可以通过XMLHttpRequest对象实现采用异步方式在后台发送请求。通常情况下,Ajax发送请求有两种,GET请求和POST请求。无论发送哪种请求,都需要经过一下4个步骤。1)初始化XMLHttpRequest对象。为了提高程序的兼容性,需要创建一个跨浏览器

2017-05-05 19:54:57 1899

原创 Ajax技术之XMLHttpRequest对象详解

Ajax是XMLHttpRequest对象和JavaScript、XML、CSS、DOM等多种技术的组合。其中,只有XMLHttpRequest对象是新技术,其他的均为已有的技术。下面就对Ajax使用的XMLHttpRequest对象进行介绍。1、XMLHttpRequest对象的由来Ajax使用的技术中,最核心的技术就是XMLHttpRequest,它是一个具有应用程序接口的JavaSc

2017-05-05 15:59:14 1548

原创 Java Socket(套接字)编程、TCP和UDP通信过程详解

网路上的两个程序通过一个双向的通信连接实现数据的交换,这个双向链路的一端被称为一个Socket。Socket也被称为套接字,可以用来实现不同虚拟机或不同计算机之间的通信。在Java语言中,Socket可以分为两种类型,面向连接的Socket通信协议(TCP,Transmission Control Protocol,传输控制协议)和面向无连接的Socket通信协议(UDP,User Datagra

2017-05-04 16:35:34 2401

原创 Java中堆和栈的区别(结合示例程序分析各自存储情况)

在Java语言中,堆与栈都是内存中存放数据的地方。变量分为基本数据类型和引用类型,基本数据类型的变量(例如int、short、byte、double、float、boolean以及char等)以及对象的引用变量,其内存都分配在栈上,变量出了作用域就会自动释放,而引用类型的变量,其内存分配在堆上或者常量池(例如字符串常量和基本数据类型常量)中,需要通过new等方式进行创建。具体而言,栈内

2017-05-04 10:50:52 885

原创 Class.forName()的作用是什么?

在Java语言中,任何类只有被装载到JVM上才能运行。Class.forName()方法的作用就是把类加载到JVM中,它会返回一个与带有给定字符串名的类或接口相关联的Class对象,并且JVM会加载这个类,同时JVM会执行该类的静态代码段。在使用JDBC连接数据库之前,一般都会调用Class.forName("com.mysql.jdbc.Driver")方法来加载JDBC驱动

2017-05-03 23:06:53 2135

原创 JVM加载class文件的原理机制是什么?类加载器的工作原理

Java语言是一种具有动态性的解释型语言,类(class)只有被加载到JVM中后才能运行。当运行指定程序时,JVM会将编译生成的.class文件按照需求和一定的规则加载到内存中,并组织成为一个完整的Java应用程序。这个加载过程是由类加载器来完成的,具体来说,就是由ClassLoader和它的子类来实现的。类加载器本身也是一个类,其实质是把类文件从硬盘读取到内存中。类的加载方式分为隐式

2017-05-02 17:12:01 11220

原创 finally块中的代码什么时候被执行?finally是不是一定会被执行?(见最后引申)

问题描述:try{}里有一个return语句,那么紧跟在这个try{}后面的finally{}中的代码是否会被执行?如果会的话,什么时候被执行,在return之前还是return之后?在Java语言的异常处理中,finally块的作用就是为了保证无论出现什么情况,finally块里的代码一定会被执行。由于程序执行return就意味着结束对当前函数的调用并跳出这个函数体,因此任何语句要执

2017-05-02 10:30:23 41252 15

原创 Java多态的实现机制

Java中多态性的实现什么是多态1.   面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的知识点。2.   多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)3.   实现多态的技术称为:动态绑定(dynamic binding

2017-05-02 07:34:28 1687

原创 JavaScript取数组数据动态生成下拉列表

此处为了简便,直接使用js数组,在实际开发中,也开始使用服务器端传回前台的数据来生成数组,然后再进行下拉框的创建。话不多说,直接上代码。 var arrayNation = new Array('汉族','蒙古族','彝族','侗族','哈萨克族'); var arrayDegree = new Array('小学','初中','高中','中专','大专','本科','硕士','博士'

2017-05-02 07:29:05 8453

原创 JavaScript实现原生ajax

自从javascript有了各种框架之后,比如jquery,使用ajax已经变的相当简单了。但有时候为了追求简洁,可能项目中不需要加载jquery这种庞大的js插件。但又要使用到ajax这种功能该如何办呢?下面和大家分享几种利用javascript实现原生ajax的方法。 实现ajax之前必须要创建一个 XMLHttpRequest 对象。如果不支持创建该对象的浏览器,则需要创建 Ac

2017-05-02 07:18:42 1257

原创 JavaScript常用工具函数(验证数据格式、清除空格、判断浏览器类型、cookie操作等)

第一部分 JavaScript工具函数转义特殊字符为html实体:function(str){return str.replace(/&/g, '&').replace(/\"/g, '"').replace(//g, '>').replace(/'/g, ''');}验证是否为有效的手机电话号码: function(str){var rp = /^1[3|4|5

2017-05-01 16:14:56 1223

原创 Java封装JSON工具类

在JAVA中用json-lib-2.3-jdk15.jar包中提供了JSONObject和JSONArray基类,用于JSON的序列化和反序列化的操作。但是我们更习惯将其进一步封装,达到更好的重用。封装后的JSON工具类JSONUtils.java代码如下:import java.util.ArrayList;import java.util.Collection;import

2017-05-01 16:05:12 3015

原创 Java常用工具类封装——封装对excel的操作

封装对excel的操作,包括本地读写excel和流中输出excelimport java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import

2017-05-01 11:26:17 3479 1

原创 Java常用工具类封装——Base64 编码和解码

Base64 编码和解码工具类,供参考。import java.io.*; /*** Base64 编码和解码。** @author jiangshuai* @date 2016年10月03日*/public class Base64 { public Base64() { } /** * 功能:编码字符串 * *

2017-05-01 11:23:10 19809 2

原创 Java常用工具类封装——DES加密和解密的工具类

如题,供参考。import java.io.UnsupportedEncodingException;import java.security.InvalidKeyException;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import java.security.s

2017-05-01 11:21:30 2043

原创 Java常用工具类封装——连接数据库的工具类

数据库操作工具类,供大家参考。package com.itjh.javaUtil; import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData

2017-05-01 11:18:57 7374 3

原创 Java常用工具类封装——String操作工具类

项目中经常需要用到String的一些操作,结合看到的一些前人的工具类抽取,编写了如下针对String的常用操作的工具类,供大家参考。package com.mkyong.common; import java.util.ArrayList; import java.util.List; /** * * String工具类. * * @autho

2017-05-01 11:14:51 8233 4

原创 Java实现ArrayList去重复值

方法一:循环元素删除 // 删除ArrayList中重复元素public static void removeDuplicate(List list) { for ( int i = 0 ; i < list.size() - 1 ; i ++ ) { for ( int j = list.size() - 1 ; j >

2017-05-01 11:03:31 2183

使用JSTL所需要的jar包

The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or t 最终查到问题是 jstl.jar 包在ide项目中有,但在tomcat发布的应用WEB-INF/lib下没有,这是工具发布项目的问题,复制一个jar包过去问题就解决了。 ========== 以上两条转自 http://blog.csdn.net/lzz313/article/details/7554736 =========== 3、手动将 jstl-1.2.jar 添加到项目 /WEB-INF/lib 中 4、手动将 jstl-1.2.jar 添加到 apache-tomcat-6.0.35\lib 中

2017-06-07

空空如也

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

TA关注的人

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