自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (6)
  • 收藏
  • 关注

原创 Java中遍历ConcurrentHashMap的四种方式

具体代码如下:package other;import java.util.Iterator;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;/** * Java中遍历Map的四种方式,这里使用的是ConcurrentHashMap, * 读者可以替换为HashMap */public c

2017-06-30 23:39:53 24150 2

原创 JDK5中的Callable与Future的应用:获取一个线程的运行结果

一、Callable接口与Future使用示例(引自Java编程思想)Runnable是执行工作的独立任务,但是它不返回任何值。如果你希望在任务完成时能够返回一个值,那么可以实现Callable接口而不是Runnable接口。在Java SE5中引入的Callable是一种具有类型参数的泛型,它的类型参数表示的是从方法call()(而不是run())中返回的值,并且必须使用ExecutorSe

2017-06-30 15:59:46 427

原创 JDK5线程池与用线程池启动定时器

线程池类似于数据库连接池,创建线程池的具体做法是:先创建多个线程放在线程池中,当有任务需要执行时,从线程池中找一个空闲线程执行任务,任务完成后,并不销毁线程,而是返回线程池,等待新的任务安排。线程池编程中,任务是提交给整个线程池的,并不是提交给某个具体的线程,而是由线程池从中挑选一个空闲线程来运行任务。一个线程同时只能执行一个任务,可以同时向一个线程池提交多个任务。一、线程池的使用示例

2017-06-30 15:20:44 549

原创 多个线程之间共享数据的方式探讨

例子:卖票:多个窗口同时卖这100张票,票就需要多个线程共享a、如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个对象中有共享数据。卖票就可以这样做,每个窗口都在做卖票任务,卖的票都是同一个数据。b、如果每个线程执行的代码不同,就需要使用不同的Runnable对象,有两种方式实现具体代码如下:package tradition;/** * 多个线程间共享

2017-06-29 14:37:06 734

原创 ThreadLocal类及应用技巧

多个模块在同一个线程中运行时要共享同一份数据,实现线程范围内的数据共享可以用上一节中所用的方法。JDK1.5提供了ThreadLocal类来方便实现线程范围内的数据共享,它的作用就相当于上一节中的Map。每个线程调用全局ThreadLocal对象的set方法,就相当于往其内部的map集合中增加一条记录,key就是各自的线程,value就是各自的set方法传进去的值。在线程结束时可以调用

2017-06-29 14:26:11 302

原创 线程范围内共享变量的概念与作用

线程范围共享数据图解:代码演示:package tradition;import java.util.Random;/** * 线程区域内的共享数据 */public class ThreadScopeShareData { private static int data = 0; public static void main(String[] args

2017-06-29 14:18:07 348

原创 传统线程同步通信技术

现有如下需求:子线程10次与主线程100次,循环执行50次。实现方法:1、将子线程和主线程中要同步的方法进行封装,加上同步关键字实现同步;2、两个线程间隔运行,添加一个标记变量进行比较以实现相互通信具体代码如下:package tradition;/** * 传统线程间通信,wait和notify */public class TraditionalThr

2017-06-29 14:10:21 330

原创 Java设计模式之原型模式

一、原型模式概述场景:1)思考一下:克隆技术是怎么样的过程?克隆羊多利大家还记得吗?2)javascript语言中的继承怎么实现?那里面也有prototype,大家还记得吗?原型模式:1)通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式。2)就是java中的克隆技术,以某个对象为原型,复制出新的对象。显然,新的对象具备原型对象的特点。3)优

2017-06-29 13:46:48 264

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

一、建造者模式的使用场景1)我们要创造一个复杂的产品。比如:神州飞船、Iphone。这个复杂的产品的创建。有这样的一个问题需要处理:2)装配这些子组件是不是有个步骤问题?3)实际开发中,我们所需要的对象构建时,也非常复杂,有很多步骤需要处理时。二、建造者模式的本质1)分离了对象子组件的单独构造(由Builder来负责)和装配(由Director负责)。从而可以构造出复杂

2017-06-29 13:28:56 253

原创 Java设计模式之三种工厂模式

工厂模式实现了创建者和调用者的分离,实现了更好的解耦。详细分类:1) 简单工厂模式(静态工厂模式);2) 工厂方法模式;3) 抽象工厂模式面向对象设计的基本原则:1)       OCP(开闭原则, Open-Closed Principle):一个软件的实体应当对扩展开放,对修改关闭。2)       DIP(依赖倒转原则,Dependence I

2017-06-29 12:39:56 5488 1

原创 Java设计模式之五种单例模式

一、设计模式分类将设计者的思维融入大家的学习和工作中,思维和思考方式的转变,重要的是学习思维和思考的方式。GOF23种设计模式,全称是Group Of Four 23中设计模式。1.1 创建型模式创建型模式主要是用来帮助人们创建对象,具体包括以下几种:单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式1.2 结构型模式核心作用:是从程序的结构上实现松耦合,从

2017-06-28 23:56:47 372

原创 JavaNIO之缓冲区(Buffers)

下面的例子来自于《Java I/O,NIO and NIO2》,阅读本书Buffers之后所作的代码笔记。例1:Buffer的几个重要属性及修改package chapter06;import java.nio.Buffer;import java.nio.ByteBuffer;/** * Buffer的几个重要属性及修改 */public class BufferDemo

2017-06-28 15:20:25 324

原创 JavaNIO之缓冲区基础

该博客是《Java NIO》学习笔记中的缓冲区基础这一章节,由于内容很多,只记录代码和测试结果,不明白的地方请参见《Java NIO》一书,书中有详细的解释。例子:填充和释放缓冲区package chapter2;import java.nio.CharBuffer;/** * 缓冲区填充和释放的例子 */public class BufferFillDrain { p

2017-06-28 14:28:12 318

原创 Java传统线程中的的互斥技术

在JDK5以前,Java线程实现互斥有两种方式:同步代码块和同步方法。方式一:同步代码块package tradition;public class TraditionalThreadSynchronized { public static void main(String[] args) { new TraditionalThreadSynchronized().init()

2017-06-28 11:41:54 249

原创 传统定时器回顾

传统定时器的创建,直接使用定时器类Timer即可。现在我们模拟定时炸弹的爆炸,Timer相当于定时器对象,TimerTask中的run()方法相当于炸弹,Timer到时间后会触发TimerTask执行run()方法中的内容。示例一:炸弹10秒后触发public static void main(String[] args) { new Timer().schedule(new Tim

2017-06-28 11:04:27 313

原创 在Web应用中增加邮件发送功能

一、Web应用发送邮件原理和界面1.1、Web应用发送邮件后台原理上图中,蓝色圆代表一个后台线程或者是单独的邮件发送模块。启动单独的一个邮件发送模块或者创建一个后台线程负责发送邮件,Servlet只是负责将邮件发送任务扔到队列中,让邮件模块或者线程慢慢发送,以便Servlet能够及时返回。1.2、Web发送邮件页面示意图还不如直接用outlook撰写

2017-06-28 10:36:54 2555

原创 直接发送一封现有的文件

我们通过Java程序制作邮件是件十分繁琐的事情,因此可以考虑使用Microsoft Outlook制作好一封规范的邮件,使用程序发送。下面的例子演示怎样直接发送一封现有的邮件:package javamail;import java.io.FileInputStream;import java.util.Properties;import javax.mail.Authentic

2017-06-28 10:26:23 356

原创 制作一封复杂的邮件(包括附件、回信地址),并写到文件中

一、项目整体结构二、新建Demo3下面的邮件包括附件(名称为中文名)、回信地址、好友名称等。具体代码如下:package javamail;import java.io.FileOutputStream;import java.io.OutputStream;import java.util.Properties;import javax.activatio

2017-06-28 10:13:29 1230

原创 传统线程技术回顾

注意:该博客是博主在系统学习张孝祥讲师的《Java多线程与并发库高级应用》视频后的笔记。传统是相对于JDK5而言的,线程就是程序的一条执行线索。可以说JDK5是一个革命性的版本。方式一:继承Thread类通过继承Thread类,重写其run()方法,并且运行这个子类的start()方法即可启动线程,具体的代码如下://这里表示的是创建Thread的一个子类Thread thr

2017-06-27 22:41:08 298

原创 使用Authenticator和send静态方法发送邮件

应用Authenticator类实现用户信息验证,结合Transport.send静态方法使用。具体代码如下:package javamail;import java.util.Properties;import javax.mail.Authenticator;import javax.mail.Message;import javax.mail.Password

2017-06-27 22:29:45 552

原创 第一个JavaMail程序

一、JavaMail API的介绍1.1 什么是JavaMail?要自己写程序发送和接收邮件,可以直接采用Socket编程连接上远程的邮件服务器,然后按照邮件协议与邮件服务器进行交互,涉及较多细节。另外,要想自己编程创建出复杂的MIME格式的邮件,是一件非常困难和麻烦的事情。JavaMail 是Sun公司为方便Java开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开

2017-06-27 22:05:30 311

原创 采用DOM4j操作XML数据库完整实例

注意:该博客是在学习《黑马JavaEE12期》时,dom4j部分讲师留下来的作业。我自己做了改进,并且完成了剩余的部分。1、项目目录结构(标注为红色框的是相关代码)2、实体Student.java中的代码如下package cn.itcast.dom4j.homework;/** * 该类的写法参照Effective Java第二版 * 中的Item 2,用

2017-06-27 21:28:09 553

原创 Dom4j解析XML

一、Dom4j框架简介注意:该博客是学习《黑马JavaEE12期》dom4j时所做的学习笔记。DOM4j整合了DOM和SAX两种思想。读取XML时使用SAX的思想进行读取,又参照了DOM的思想,也在内存中创建了一个对象关系树。在该对象中也存在Document、Element、Attribute、Text等对象,我们学习的时候,参照之前我们学习的DOM树即可。 学习时,参照d

2017-06-27 16:03:37 389

原创 Java中使用Dom和Sax两种思想解析XML

一、解析XML的两种常见思路注意:该博客学习参考自《黑马JavaEE12期》解析XML的两种常见思想:DOM:将XML文档中所有内容都封装成对象,读取时,将所有对象都加载到内存中,在内存中创建一颗DOM树(记录对象间的关系)。         优点:方便的进行增删查改         缺点:内存占用小SAX:事件驱动的,与pull解析类似。把xml文档的读取过程,划

2017-06-27 15:22:02 619

原创 Java中通过修改配置文件实现接口或抽象类子类的切换

我们开发的项目中有可能针对不同的数据库,因此同一个Dao接口可能提供了针对不同数据库的实现。下面我们通过修改properties配置文件的方式来实现同一个接口调用不同子类的实现,这样我们不用去修改源代码,只需要修改配置文件就可以实现调用不同的子类中的方法。该博客参考自《黑马JavaEE12期》具体的代码如下:1、第一步:创建一个普通的Java Project 2、定义一个接口A和A接口的两个实现类

2017-06-27 14:05:59 1812

JavaNIO(中文版)

JavaNIO中文版

2017-06-28

JavaIO&NIO&NIO2

JavaIO&NIO&NIO2英文版

2017-06-28

JavaNIO(英文版)

JavaNIO(英文版)

2017-06-28

JavaIO(英文版)

Java IO(英文版)

2017-06-28

传智播客张孝祥Java邮件开发学习笔记

该资源是博主在系统学习张孝祥讲师的《Java邮件开发》视频时所作的笔记。

2017-06-27

300Java设计模式部分学习笔记

该pdf是本人系统学习尚学堂推出的300Java大型设计模式部分后自己整理的学习笔记,希望对大家有帮助!!!

2017-06-27

空空如也

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

TA关注的人

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