
Java程序语言
文章平均质量分 65
江湖人称小明
江湖人称小明
展开
-
Servlet&JSP思维导图
转载自:http://blog.youkuaiyun.com/jackfrued/article/details/42617675转载 2015-09-28 23:09:55 · 1649 阅读 · 1 评论 -
排序算法之冒泡排序
冒泡排序1. 介绍冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,每次比较相邻的两个元素,如果他们的顺序不满足排序条件就把他们交换过来。遍历数列的工作是重复地进行直到不再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小(或越大)的元素会经由交换慢慢“浮”到数列的顶端。2. 算法描述先来看一张图:上图就表明了冒泡排序的算法过程,按照从小到大(升序)排原创 2015-07-22 16:47:57 · 1185 阅读 · 0 评论 -
排序算法之插入排序
排序算法之插入排序1. 介绍有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然保持有序,这个时候就要用到一种新的排序方法——插入排序法。插入排序的基本操作就是将一个数据插入到已经排好序的有序数列中,从而得到一个新的、个数加一的有序数列,算法适用于少量数据的排序,时间复杂度为O(n^2),是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个原创 2015-07-22 21:48:04 · 1093 阅读 · 0 评论 -
Java设计模式之装饰者模式
Java设计模式之装饰者模式1. 介绍通常我们有两种方式为一个类或者对象添加行为:一是使用继承。继承是给一个类添加行为的比较有效的途径。通过使用继承,可以使得子类在拥有自身行为的同时,还可以拥有父类的行为。但是使用继承是静态的,在编译的时候就已经决定了子类的行为,我们不便于控制增加行为的方式和时机。二是使用关联,即将一个对象嵌入到另一个对象中,由另一个对象来决定是否引用嵌入对象的行为来扩展自己的行为原创 2015-07-22 09:27:57 · 702 阅读 · 1 评论 -
排序算法之选择排序
排序算法之选择排序1. 介绍在冒泡排序算法一篇中,介绍了基本的冒泡排序与几种改进方法,但无论那几种方法怎么改进,都还是基于两两交换不断推进的冒泡排序。冒泡排序算法最费时的是什么?一是相邻元素两两比较,二是不满足排序规则的元素两两交换,当然交换要比比较费时多了。两两交换的目的是什么呢?是找出最值(最大值或最小值)。但是冒泡排序算法中找最值的代价是很大的,每次遍历,可能需要很多次交换才能找到最值,而这些原创 2015-07-22 23:55:27 · 714 阅读 · 0 评论 -
使用Apache commons-fileupload实现文件上传
使用Apache commons-fileupload实现文件上传文件上传功能在很多的web项目中都会使用到,JavaEE的框架中也可以很方便地实现文件上传。下面举一个简单的例子,演示在Servlet中的文件上传功能。首先创建一个Servlet类,继承自HttpServlet:package com.demo.upload;import javax.servlet.annotation.WebSer原创 2015-08-28 08:44:22 · 628 阅读 · 0 评论 -
浅析使用SAX解析XML
浅析使用SAX解析XML1. 概述Java解析XML通常有两种方式,DOM和SAX。DOM虽然是W3C的标准,提供了标准的解析方式,但它的解析效率一直不尽如人意,因为使用DOM解析XML时,解析器读入整个文档并构建一个驻留内存的树结构(节点树),然后您的代码才可以使用DOM的标准接口来操作这个树结构。但大部分情况下我们只对文档的部分内容感兴趣,根本就不用先解析整个文档,并且从节点树的根节点来索引一些原创 2015-07-09 23:44:41 · 2061 阅读 · 0 评论 -
XML使用SAX解析与PULL解析的区别
XML使用SAX解析与PULL解析的区别在最近的应用中,经常会用到对XML的解析,但是一直有一个疑问就是SAX解析与PULL解析的区别到底是什么。搜索了相关的问题,整理如下,以便大家查询。我们知道,SAX解析是事件驱动的,它不会将整个文档读入内存再解析,而是在读取文档的过程中就解析它,所以,文档读入的过程也就是SAX解析的过程。虽然,SAX方式解析XML不会将整个文档放入内存,但它还是会遍历完毕文档原创 2015-07-10 15:18:57 · 3838 阅读 · 5 评论 -
浅析PULL解析
浅析PULL解析1. 基本介绍PULL方式解析XML是在Android中极力推荐使用的一种解析XML的方式,但PULL解析除了在Android中可以使用外,在JavaSE中仍然可以使用。在JavaSE中,我们要使用PULL解析XML,首先得获取XmlPull所需要的类库及依赖类库:类库Jar包下载地址:http://www.findjar.com/jar/xmlpull/xmlpull/1.1.3.原创 2015-07-10 13:54:00 · 5170 阅读 · 0 评论 -
Java设计模式之工厂模式
Java设计模式之工厂模式1. 引子在介绍这篇内容之前,先以一个小故事开头。话说有一个暴发户,他家有三辆轿车(奔驰、宝马、奥迪),还雇了司机为他开车。不过,暴发户每次坐车时总是这样:上奔驰车后跟司机说“开奔驰车!”,坐上宝马后他说“开宝马车!”,坐上奥迪后他说“开奥迪车!”。也许你会说:这人有病吧!直接说开车不就行了?!非得多此一举是要表明自己是壕了吗?这是病,得治。其实像这样的行为放到程序中来实现原创 2015-07-29 00:39:14 · 712 阅读 · 0 评论 -
Java游戏之碰撞检测
Java游戏之碰撞检测在进行Java游戏开发时,我们经常会遇到碰撞检测的问题。如坦克大战中,炮弹与坦克相遇发生爆炸;守卫者游戏中,守卫者发射的箭与怪物相遇使怪物失血;打飞机游戏中,飞机发送的子弹与敌机相遇干掉敌机。这些都需要实现碰撞检测。我们先来看一类比较简单的碰撞检测:规则图形的碰撞检测。矩形碰撞检测作为一个练手的小游戏,游戏中的物体形状一般为矩形区域,这是规则图形。它的碰撞检测可以通过Java原创 2015-05-18 23:49:43 · 10393 阅读 · 3 评论 -
Java应用程序中的声音播放
Java应用程序中的声音播放声音可以创造意境,触发遐想,当与虚拟图像相结合时,更加可以让整个世界充满幻觉,声音是多媒体技术的基础。播放声音是Java对多媒体的支持一个重要部分,它支持的声音文件类型主要有:AU - (扩展名为AU或SND)适用于短的声音文件。WAV - (扩展名为WAV)由 Microsoft和 IBM共同开发,几乎能被所有支持声音的Windows应用程序播放。AIFF - (扩展名原创 2015-05-17 22:03:59 · 5086 阅读 · 1 评论 -
散列表(哈希表)
散列表闲话散列表一直以来,有用到Java中的HashMap、HashTable,知道它们是以散列表的结构实现数据存放,但到底什么是散列表,存储结构到底是怎么样子的,始终没有弄清楚过。经过多方查询,最终找到一个好的例子来帮我们解释了到底散列表是什么东西,现引用一下。我们以一个小故事来说明散列表的概念。试想有这样的场景,我在学校很想学太极拳,听说学校有个叫张三丰的人打得特别好,于是就到学生处找人。学生处原创 2015-07-15 00:20:57 · 1129 阅读 · 0 评论 -
Java接口回调
Java接口回调1. 关于回调回调机制是一种常见的设计模型,他把工作流内的某个功能,按照约定的接口暴露给外部使用者,为外部使用者提供数据,或要求外部使用者提供数据。软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用。异步调用:一种类似消息或事件的机制,不过它的调用方向刚好相反,接原创 2015-07-14 16:42:04 · 5343 阅读 · 0 评论 -
Java编程专题思维导图
转载自:http://blog.youkuaiyun.com/jackfrued/article/details/42617523转载 2015-09-28 23:07:45 · 1343 阅读 · 0 评论 -
Java设计模式之单例模式
Java设计模式之单例模式1. 概述单例模式是一种常见的设计模式,在工作生活中也经常遇到这样的实例。比如我们要听歌,使用WindowsMediaPlayer来播放,那这个播放器就是一种单例模式的。当我们双击来播放一首歌曲时,首先打开播放器,然后播放声音,如果这时我们要切换到另外一首歌曲播放,是不会重新再打开一个播放器窗口的,它将直接在已打开的窗口中切换播放后打开的歌曲。显然这样设计是合理的,试想,如原创 2015-07-24 21:25:26 · 599 阅读 · 0 评论 -
JSON 入门
JSON 入门尽管XML拥有跨平台,跨语言的优势,然而,除非应用于 Web Services,否则,在普通的Web应用中,开发者经常为XML的解析伤透了脑筋,无论是服务器端生成或处理XML,还是客户端用JavaScript解析XML,都常常导致复杂的代码,极低的开发效率。现在,JSON为Web应用开发者提供了另一种数据交换格式。让我们来看看JSON到底是什么,同XML相比,JSON提供了更好的简单性原创 2015-08-31 22:50:52 · 749 阅读 · 0 评论 -
Java实现GZIP压缩
Java实现GZIP压缩前段时间需要使用到天气预报数据,从网站下载下来之后,发现全部是乱码,一直不明白怎么回事,后来偶然的机会,在查看响应信息时,发现网站在传输响应数据时,使用了gzip压缩,也就是我一直获取到的是压缩后的数据,未经过解压缩就直接使用,所以一直乱码了。下面简单整理一下:GZIP最早由Jean-loup Gailly和Mark Adler创建,用于UNⅨ系统的文件压缩。我们在Linux原创 2015-08-31 22:21:35 · 3215 阅读 · 0 评论 -
Java对象克隆
Java对象克隆1. 介绍克隆就是复制一个对象的副本。Java支持我们对一个对象进行克隆,通常用在装饰模式和原型模式中。一个对象中可能有基本数据类型(如:int、long、double等)的属性,也同时含有引用数据类型(如数组、集合等)的属性,所以在对象克隆时分为浅克隆与深克隆两种。那么,什么是浅克隆,什么又是深克隆呢?浅克隆是指克隆对象时仅仅克隆对象本身(包括对象中的基本类型的变量),而不克隆对象原创 2015-08-09 23:29:50 · 1632 阅读 · 1 评论 -
Java中HashSet的存储原理
Java中HashSet的存储原理1. 说明HashSet,从字面意思我们大致可以看出它包含了两方面的内容:Hash和Set,即散列与集合。实际确实如此,HashSet实现了Set接口,所以它符合Set集合使用的特征,集合中不允许有重复的元素,同时HashSet底层的实现是通过HashMap来实现元素保存操作的。2. 分析我们来分析一下HashSet的原码,下面这段是HashSet中存储对象的数据结原创 2015-07-15 23:14:08 · 5136 阅读 · 1 评论 -
Java的内存分析
Java的内存分析1. 概述垃圾回收(Garbage Collection,简称GC)是Java的一大特征,它可以自动释放不再使用的对象的资源(内存),因为不需要手动释放内存,程序员在编程中也可以减少犯错的机会。比如在C中,就没有垃圾回收的机制,程序员需要手动释放内存,就可能会出现一些指针和内存泄露相关的Bug。对于Java程序员来说,GC是交给虚拟机(JVM)的自动内存管理机制来完成的,不再需要为原创 2015-07-17 09:04:17 · 1364 阅读 · 1 评论 -
ThreadLocal用法与实现原理
ThreadLocal用法与实现原理1. 对ThreadLocal的理解Java API中对ThreadLocal的描述是:该类提供了线程局部 (thread-local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。ThreadLocal 实例通常是类中的 private static 字段,它们原创 2015-07-20 17:18:00 · 3208 阅读 · 0 评论 -
查找算法之二分查找算法
查找算法之二分查找算法1. 概述二分查找算法也称折半查找算法,是在有序数组中用到的较为频繁的一种查找算法。在未接触二分查找算法时,最通用的一种做法是,对数组进行遍历,跟每个元素进行比较,即顺序查找。二分查找较顺序查找更优,因为这种算法每一次比较都使查找范围缩小一半。2. 算法思想二分查找算法是建立在有序数组基础上的。算法思想为:查找过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则查找过原创 2015-07-23 08:08:49 · 9133 阅读 · 0 评论 -
Java多线程之生产者消费者模式
Java多线程之生产者/消费者模式1. 描述生产者/消费者问题是研究多线程程序时绕不开的经典问题之一,它主要描述的是用一个缓冲区作为仓库,生产者可以将生产的产品放入仓库,消费者则可以从仓库中取走产品。再详细一点的描述就是:在生产者和消费者之间共用一个容器,生产者生产的商品放到容器中(容器有一定的容量),消费者从容器中消费商品,当容器满了后,生产者等待,当容器为空时,消费者等待。当生产者将商品放入容器原创 2015-07-20 08:57:31 · 844 阅读 · 0 评论 -
HttpURLConnection与HttpClient浅析
HttpURLConnection与HttpClient浅析1. GET请求与POST请求HTTP协议是现在Internet上使用得最多、最重要的协议了,越来越多的Java应用程序需要直接通过HTTP协议来访问网络资源。在介绍HttpURLConnection前,我们还是再来说一下URL请求最常用的两种方式:GET请求与POST请求。GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中原创 2015-07-14 14:25:10 · 11159 阅读 · 0 评论 -
布局管理器之CardLayout(卡片布局管理器)
布局管理器之CardLayout(卡片布局管理器)对于选项卡这个概念大家可能不会陌生,就是在一个窗口中可以切换显示多页不同的内容,但同一时间只能是其中的某一页可见的,这样的一个个的页面就是选项卡。CardLayout就是类似的这样一个布局管理器,它能够让多个组件共享同一个显示空间,共享空间的组件之间的关系就像重叠在一起的一幅扑克牌,组件重叠在一起,初始时显示该空间中第一个组件,通过CardLayou原创 2015-05-17 20:03:19 · 3472 阅读 · 0 评论 -
使用Java实现双缓冲绘图
使用Java实现双缓冲绘图当我们使用AWT或Swing绘图时,如果绘制的图像刷新太快,会出现屏闪现象,如之前写的俄罗斯方块小游戏,屏闪现象就很明显。虽然这种闪烁不会给程序的效果造成太大的影响,但给程序的使用者造成了些许不便,针对这种现象,我们大都是采取双缓冲的方式来解决的。双缓冲是计算机动画处理中的传统技术,在用其他语言编程时也可以实现。导致屏闪的原因拿上一篇文章中的俄罗斯方块来说明。当创建窗体对象原创 2015-05-17 16:14:05 · 11549 阅读 · 2 评论 -
Java Graphics类的绘图方法
Graphics类提供基本绘图方法,Graphics类提供基本的几何图形绘制方法,主要有:画线段、画矩形、画圆、画带颜色的图形、画椭圆、画圆弧、画多边形、画字符串等。画线段在窗口中画一条线段,可以使用Graphics类的drawLine()方法:/** * 在此图形上下文的坐标系中,使用当前颜色在点 (x1, y1) 和 (x2, y2) 之间画一条线 * * @param x1 *原创 2015-05-07 17:40:33 · 28261 阅读 · 7 评论 -
Java Swing图形化用户界面编程
GUI概述早期计算机系统中,电脑向用户提供的是单调、枯燥、纯字符状态的“命令行界面(CLI)”。就是到现在,我们还可以依稀看到它们的身影:在Windows中开个DOS窗口,就可看到历史的足迹。后来,Apple公司率先在电脑的操作系统中实现了图形化的用户界面(Graphical User Interface,简称GUI),但由于Apple公司封闭的市场策略,自己完成电脑硬件、操作系统、应用软原创 2015-04-27 16:44:56 · 18931 阅读 · 0 评论 -
使用多线程编程模拟车票销售
也许大家会有这样的经历,我们在车站排队买回家的车票。如果某一条线路是比较热门的线路,通常车站会同时开几个窗口供大家排队购买这一线路的车票,当然,如果某几条线路是比较冷门的话,也可能是在一个窗口就可以分别买这几条不同线路的车票。那么,如果以Java面向对象来设计的话,如何实现模拟这类似的售票功能呢?首先,我们来建立一个枚举类型,模拟线路目的地/** * 目的地枚举 * @author 小原创 2015-04-21 17:14:04 · 2854 阅读 · 0 评论 -
运算符(%):关于负数求模该如何求解
关于负数求模运算到底怎么求最近有同事问到,负数到底怎么求模,结果的符号是和除数、被除数哪一个相关。因为这个问题好像以前也纠结过,但一直没有整理记录,因此特地搜索了相关资料,同时求证了在Java中求模运算的操作对于正整数的求模运算,我们都很熟悉。但是负数如何求模,我们来探究一下,以下主要验证是在Java和C语言开发中的负数求模操作,其它如C++、Python等语言,由于环境限制,并未验证。原创 2015-04-22 22:12:19 · 4500 阅读 · 0 评论 -
使用JDBC处理MySQL大文本和大数据
使用JDBC处理MySQL大文本和大数据概述LOB,Large Objects,是一种用于存储大对象的数据类型,一般LOB又分为BLOB与CLOB。BLOB通常用于存储二进制数据,比如图片、音频、视频等。CLOB通常用于存储大文本,比如小说。MySQL数据库中没有专门的CLOB数据类型,而如果要存储大文本,MySQL采用的是TEXT类型。TEXT类型又有TINYTEXT、TEXT、MEDIUMTEX原创 2015-05-05 13:52:43 · 881 阅读 · 0 评论 -
使用Java实现图像分割
使用Java实现图像分割为减少动画制作过程中的IO操作,我们可以使用连续动画来改善动画播放效率。假如我们有如下的一张图像:如果我们对图像中的每张小图像单独分割成独立的文件,那么当每次要使用这些小图像的时候,我们都得从文件中读取图像信息。实际上我们可以利用Java将整张大图像中的每个小图像在应用程序中分割出来,然后使用的时候,直接从分割后的图像中获取需要使用的小图像就可以了,这样就不用每次都从文件中读原创 2015-05-12 16:48:47 · 11602 阅读 · 2 评论 -
Java网络编程技术
网络编程对于很多的初学者来说,是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习。在学习网络编程以前,很多初学者可能觉得网络编程是比较复杂的系统工程,需要了解很多和网络相关的基础知识,其实这些都不是很必需的。首先来问一个问题:你会打手机吗?很多人可能说肯定会啊,不就是按按电话号码,拨打电话嘛,很简单的事情啊!其实初学者如果入门网络编程的话也可原创 2015-04-28 22:57:53 · 1239 阅读 · 0 评论 -
使用MediaTracker加载及显示图像
使用MediaTracker加载及显示图像如果我们采用采用异步的方式加载显示图像,即程序在后台完成图像的加载和显示,而主进程继续执行,那么可能在图像还未被完全加载完毕时造成不完整的显示。在某些情况下,我们需要在图像完全加载完毕后再进行显示,那么就需要了解另外一种加载图像的方法:调用媒体跟踪器(MediaTracker)来加载图像。媒体跟踪器是MediaTracker类型的对象,专门用来跟踪图像的加载原创 2015-05-12 13:08:26 · 4033 阅读 · 1 评论 -
使用JDBC连接MySQL数据库
使用JDBC连接MySQL数据库概述JDBC,是Java Database Connecive,即数据库连接技术的简称,它提供了连接各种常用数据库的能力。JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够非常方便地编写数据库应用程序。JDBC组成通原创 2015-05-03 23:19:29 · 834 阅读 · 0 评论 -
Java Graphics2D类的绘图方法
Java Graphics2D类的绘图方法Graphics2D继承自Graphics,它扩展了Graphics的绘图功能,拥有更强大的二维图形处理能力,提供对几何形状、坐标转换、颜色管理以及文字布局等更精确的控制。Graphics2D定义了几种方法,用于添加或改变图形的状态属性。可以通过设定和修改状态属性,指定画笔宽度和画笔的连接方式,设定平移、旋转、缩放或修剪变换图形,以及设定填充图形的颜色和图案原创 2015-05-11 16:38:47 · 30977 阅读 · 0 评论 -
使用Java设计验证码生成程序
使用Java设计验证码生成程序根据百度百科解释:验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序原创 2015-05-11 11:52:21 · 872 阅读 · 0 评论 -
一个简单的多线程服务器例子
一个简单的多线程服务器例子中国移动允许我们可以通过短信编辑一些指令发送给10086,以获取一些办理的业务信息。下边以一个类似的例子来模拟服务器。建立一个多线程服务器端,能够处理不同客户端的连接,以查询客户端发送的指令内容。假设客户端可以向服务器端查询一人向另一人发送的短消息,发送指令格式如*#MSG#*from|to,则服务器端的实现:import java.io.DataInputStream;原创 2015-05-10 22:15:13 · 820 阅读 · 0 评论 -
多线程练习题目--多人通过同一隧道
多线程练习题目使用多线程编程模拟多人通过一个隧道的情形。假设隧道每次只允许一个人通过,每人通过隧道所需要的时间为5秒钟。随机产生5个人,同时准备通过隧道,依次显示出每次通过隧道的人的信息/** * 人类 * * @author 小明 * */public class Person extends Thread { private static Object tun原创 2015-04-21 17:25:56 · 980 阅读 · 0 评论