Java

用spring做一个javaMail功能的例子

前言:项目中要做一个发送邮件的功能,在网上搜了一些代码,说的都不是很完善。自己就整理了一个可以运行的项目。需要注意的地方是:如果发送人的邮箱是qq邮箱,那么需要在设置->账户里面把√打上。spring里面的smtp.126.com要配置成smtp.qq.com126邮箱同理。步骤如下:用spring做一个javaMail功能。1、先建一个项目。java项目和web

系统 2019-08-29 22:21:42 1952

Java

Java应用从集中式步入分布式

【IT168技术】记得Martin大叔在《企业应用架构模式》中特别强调:“能够不分布式的应用就不要分布式”,这句话没什么问题,尤其对于做过分布式应用的人而言,就更会有深刻的体会了,但这个世界偏偏就没有那么简单,大多数人都会碰到分布式应用的场景,尤其是对于大型应用而言,从集中式步入分布式是不可避免的,只是也许是小型分布式的,也许是大型分布式的;也许是有高性能要求的,也许是没有的,在这篇blog中我们来看看java应用从集中式步入分布式后到底会带来些什么挑战。

系统 2019-08-29 22:12:56 1952

Java

JasperReport(3)——Java简单使用IReport生成的

先看看设计的报表样式:reportTitle是新添加的一个参数,而其他的id和name是通过数据源得到的Filed。IReport在设置参数的时候需要先在左边新建一个parameter,然后再把该parameter托到右边的设计栏中。生成的XML文件为:

系统 2019-08-29 22:12:14 1952

Java

深入入门正则表达式(java) - 匹配原理 - 2 -

内容可能有些不严谨的地方,希望大家落脚前先拍砖,多谢深入入门正则表达式(java)-引言深入入门正则表达式(java)-1-入门基础深入入门正则表达式(java)-2-基本实例深入入门正则表达式(java)-3-正则在java中的使用深入入门正则表达式(java)-匹配原理-1-引擎分类与普适原则深入入门正则表达式(java)-匹配原理-2-回溯回溯(backtracking)NFA引擎最重要的性质是:它会一次处理各个子表达式或组成元素,遇到需要在两个可能

系统 2019-08-29 22:04:20 1952

Java

Java 编程中关于异常处理的 10 个最佳实践

异常处理在编写健壮的Java应用的过程中,扮演着一个重要的角色。它并不是应用的功能需求,且需要优雅的处理任何错误情况,例如资源不可用,错误的输入,null输入等等。Java提供几个异常处理功能,并通过try,catch和finally关键字内嵌在语言的本身。Java编程语言同样允许创建新的异常和使用throw和throws抛出该异常。在实践中,异常处理不单单是知道语法这么简单。编写健壮的代码是更像是一门艺术,在本文中,将讨论Java异常处理最佳实践。这些J

系统 2019-08-29 22:03:54 1952

Java

Effective Java (对象通用方法)

八、覆盖equals时请遵守通用约定:对于Object类中提供的equals方法在必要的时候是必要重载的,然而如果违背了一些通用的重载准则,将会给程序带来一些潜在的运行时错误。如果自定义的class没有重载该方法,那么该类实例之间的相等性的比较将是基于两个对象是否指向同一地址来判定的。因此对于以下几种情况可以考虑不重载该方法:1.类的每一个实例本质上都是唯一的。不同于值对象,需要根据其内容作出一定的判定,然而该类型的类,其实例的自身便具备了一定的唯一性,如

系统 2019-08-29 22:02:39 1952

Java

Java多线程面试问题集锦

如果你即将去一家从事大型系统研发的公司进行Java面试,不可避免的会有多线程相关的问题。下面是一些针对初学者或者新手的问题,如果你已经具备良好的基础,那么你可以跳过本文,直接尝试针对进阶水平的Java多线程编程问题及解答。关联链接:Javamulti-threading-1|Javamulti-threading-2问题:进程和线程的区别解答:一个进程对应一个程序的执行,而一个线程则是进程执行过程中的一个单独的执行序列,一个进程可以包含多个线程。线程有时候

系统 2019-08-29 22:02:31 1952

Java

利用shell自动化打包java工程

Java代码#!/bin/bash#wuzhong@taobao.com#打包工程用usage(){echo'build.sh-s(svnup)-x(antx.properties)-m(mvncleanpackage)-a(doall)kjava/wtm]'exit1}#usageNEED_MVN=1whilegetopts"sxma:"options;docase$optionsins)echo"svnup"HAS_OPT=1NEED_SVN=1;;x

系统 2019-08-29 22:02:15 1952

Java

Java对象持久化技术Hibernate入门

Hibernate是Java应用和关系数据库之间的桥梁,它负责Java对象和关系数据之间的映射。Hibernate内部封装了通过JDBC访问数据库的操作,向上层应用提供了面向对象的数据访问API。在Java应用中使用Hibernate包含以下步骤。(1)创建Hibernate的配置文件。(2)创建持久化类。(3)创建对象-关系映射文件。(4)通过HibernateAPI编写访问数据库的代码。本文通过一个简单的例子helloapp应用,演示如何运用Hiber

系统 2019-08-12 09:30:32 1952

Java

Java线程:线程状态的转换

Java线程:线程状态的转换SCJP5学习笔记一、线程状态线程的状态转换是线程控制的基础。线程状态总的可分为五大状态:分别是生、死、可运行、运行、等待/阻塞。用一个图来描述如下:1、新状态:线程对象已经创建,还没有在其上调用start()方法。2、可运行状态:当线程有资格运行,但调度程序还没有把它选定为运行线程时线程所处的状态。当start()方法调用时,线程首先进入可运行状态。在线程运行之后或者从阻塞、等待或睡眠状态回来后,也返回到可运行状态。3、运行状

系统 2019-08-12 09:30:26 1952

Java

JAVA面试题解惑系列(四)——final、finally和

好东西分享final、finally和finalize的区别是什么?这是一道再经典不过的面试题了,我们在各个公司的面试题中几乎都能看到它的身影。final、finally和finalize虽然长得像孪生三兄弟一样,但是它们的含义和用法却是大相径庭。这一次我们就一起来回顾一下这方面的知识。final关键字我们首先来说说final。它可以用于以下四个地方:定义变量,包括静态的和非静态的。定义方法的参数。定义方法。定义类。我们依次来回顾一下每种情况下final的

系统 2019-08-12 09:30:16 1952

Java

使用JNI集成java与native程序

当我们开始接触JNI但是还不熟悉的时候,也许会这样几个问题:Java程序和native程序的数据类型通常是不一样的,它们怎么相互映射的呢?怎么在native方法中访问java方法传递过来的数据呢?在native方法中可以创建java对象吗?如何把结果返回给调用它的java方法?读完本文你将会明白如上问题的来龙去脉。首先我在重复一下如何编写JNI相关的应用程序,我们必须在java方法中声明一个native的方法,比如publicnativeStringget

系统 2019-08-12 09:30:14 1952

Java

Java Annotation手册

版权声明:本文可以自由转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明作者:cleverpig(作者的Blog:http://blog.matrix.org.cn/page/cleverpig)原文:http://www.matrix.org.cn/resource/article/44/44055_Java+Annotation+Reflect.html关键字:java,annotation,reflect前言:在上篇文章《JavaAnn

系统 2019-08-12 09:30:13 1952

Java

Java安全通信、数字证书及应用实践

摘要:在本文中,我用详细的语言和大量的图片及完整的程序源码向你展示了在JAVA中如何实现通过消息摘要、消息验证码达到安全通信、以及用Java的工具生成数字证书,和用程序给数字证书签名、以及用签名后的数学证书签名applet突破applet的访问权限的过程,给出了全部例子的详细代码。通过本文中你可以学到以下知识:●程序间如何安全通信●什么是及如何生成消息摘要●什么是及如何生成消息验证码●如何使用Java工具生成和维护数字证书库●如何用程序给数字证书验证签名●

系统 2019-08-12 09:30:06 1952

Java

编写java代码的几点技巧

(1)bigdecimal中要使用string作为参数来构造(bigdecimal.valueof()会把各种值转化成字符串,再调用bigdecimal(string)的),否则照样会出问题;Java代码system.out.println(10000*1.005);system.out.println(newbigdecimal(10000).multiply(newbigdecimal(1.005)));system.out.println(bigde

系统 2019-08-12 09:30:00 1952