Java
文章平均质量分 89
半缘修道半缘君丶
志存高远,笃行不倦。言曌博客,技术交流 QQ/微信:847064370
展开
-
serialVersionUID作用
serialVersionUID适用于Java的序列化机制。简单来说,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常,即是InvalidCastEx...转载 2018-04-02 22:59:31 · 330 阅读 · 0 评论 -
Java向上转型与向下转型
java 转型问题其实并不复杂,只要记住一句话:父类引用指向子类对象。什么叫父类引用指向子类对象,且听我慢慢道来.从2个名词开始说起:向上转型(upcasting) 、向下转型(downcasting).举个例子:有2个类,Father是父类,Son类继承自Father。Father f1 = new Son(); // 这就叫 upcasting (向上转型)// 现在f1引用指向一个Son...转载 2018-03-02 18:00:47 · 230 阅读 · 0 评论 -
Java求吸血鬼数
在看《Thinking In Java》,有一题是求4位数的吸血鬼数,这里做个笔记。首先解释一下吸血鬼数字:吸血鬼数字是指位数为偶数的数字,可由一对数字相乘而得到,这对数字各包含乘积的一半位数的数字,以两个0结尾的数字是不允许的。 四位数吸血鬼数字示例:1260=21*60,1827=21*87,2187=27*81……先列出结果:一共7个:1260=21*60,1395=15*93,1435=4...原创 2018-03-02 17:54:22 · 298 阅读 · 0 评论 -
Vector和Arraylist的区别
最近上了 JSP 课程,其中有一个作业是实现一个简单的留言板,就是把留言内容加到 application 对象中。部分代码如下<%! Vector v=new Vector(); int i=0; ServletContext application; synchronized void leaveWord(String s) { //留言方法 applic...原创 2018-03-02 16:16:59 · 281 阅读 · 0 评论 -
Java获取字符串的MD5值和根据邮箱获取Gravatar头像
申请Gravatar头像的教程可以点 创建gravatar头像详细教程 是,主只要该网站配置了 Email 转 Gravatar 代码,输入邮箱就能获得你在 Gravatar 设置的头像,全球通用哦。下面介绍将 Email 地址 转成 Gravatar 头像的图片地址。很简单的,做个笔记。观察 Gravatar 图片的URL我们先找个 Gravatar 头像,右键查看图片地址:原创 2018-01-02 17:24:25 · 1472 阅读 · 0 评论 -
java获取客户端ip
我们知道一个机器对应一个物理ip,如果能获得这个ip,基本就能锁定这个人啦。最近在用Java搭一个博客系统,也可以用到这个。比如记录用户登录,留言评论等,可以把用户的ip写到数据库中去。具体代码如下Java//获得物理ippublic static String getIpAddr(HttpServletRequest request){ String ipAddre原创 2018-01-02 17:23:15 · 763 阅读 · 0 评论 -
The requested resource is not available. 原因,成功解决
错误图示 解决方案:File->properties(快捷键:alt+enter)->Myeclipse->web->web Context-root里必须和项目名一样,第二张图是错误案例原创 2016-10-23 19:11:34 · 9827 阅读 · 8 评论 -
HTTP Status 500 - /dologin.jsp (line: 27, column: 3) Expecting "jsp:param" standard action with "nam
代码如图:解决方案:去掉注释,成功!原创 2016-10-26 18:43:18 · 2574 阅读 · 0 评论 -
float,double和decimal类型
float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位)double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E308(15个有效位)decimal:数字型,128bit,不存在精度损失,常用于银行帐目计算。(28个有效位) float f = 345.98756f;//结果显示为345.9876,只显示7个有效原创 2017-11-08 18:48:26 · 426 阅读 · 0 评论 -
Integer与int的种种比较你知道多少?
如果面试官问Integer与int的区别:估计大多数人只会说道两点,Ingeter是int的包装类,int的初值为0,Ingeter的初值为null。但是如果面试官再问一下Integer a = 1;int b = 1; a==b为true还是为false?估计就有一部分人答不出来了,如果再问一下其他的,估计更多的人会头脑一片混乱。所以我对它们进行了总结,希望对大家有帮助。首先看代码:转载 2017-10-30 15:20:38 · 317 阅读 · 0 评论 -
Java如何让程序一直运行,不停止
如何让程序一直运行,很容易实现,只需要一直等待输出即可啦import java.util.Scanner;/* * @author LiuYanzhao */public class Test { private static final String OPERATION_EXIT = "EXIT"; public static void main(String[] a原创 2017-10-30 15:19:50 · 16606 阅读 · 3 评论 -
java实现单链表的增加,删除,查找,打印
原文地址:http://liuyanzhao.com/2230.html 刚才传了一个java实现顺序表的基本功能的代码,下面是单链表的。同为笔记,以为回顾 文件名App.java/*编写类,实现如下功能: *1、创建有序单链表 *2、包含如下基本操作:初始化、增加、删除、查找、打印元素 * 注意:初始化不同于用new 创建元素。 * *目的: * 1、理解成员变量、成员方法的原创 2017-03-10 08:56:03 · 3609 阅读 · 1 评论 -
java实现顺序表的增加,删除,查找,打印
博主上个学期学了数据结构(C语言版),第一章就是顺序表。这个学期学的是java,同样可以实现之前的代码。这里把代码贴出来,方便以后学习,回顾。 文件名:App.java/*编写类,实现如下功能: *1、创建有序顺序表 *2、包含如下基本操作:初始化、增加、删除、查找、打印元素 * 注意:初始化不同于用new 创建元素。 * *目的: * 1、理解成员变量、成员方法的含义 *原创 2017-03-10 09:04:31 · 3404 阅读 · 0 评论 -
java实现人民币数字和大写转换
原文地址:http://liuyanzhao.com/2512.html 直接上代码了,下面代码经测试完美。能解决数字中加0的特例 import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; import java.util.Scanner; public c原创 2017-03-19 22:59:48 · 5153 阅读 · 1 评论 -
java的优势
1.免费! 甲骨文免费提供用来开发Java应用程序的一切,你不必付任何的版税。或许你会将信将疑:资本家搞共产了?实际上,甲骨文在上的收益确实不大,远远比不过垄断Java应用服务器技术的IBM和BEA公司,似乎有替别人做嫁衣之嫌。对此,甲骨文是这样解释的:“甲骨文并没有用Java赚钱,这就像使用英语不用上税一样,甲骨文并不通过Java本身来盈利,而是把Java应用到了业务中。”原来是放长线钓大鱼!原创 2017-04-15 18:39:37 · 1291 阅读 · 0 评论 -
java三大特性之—封装
原文地址: http://liuyanzhao.com/2757.html原创 2017-03-28 21:11:07 · 820 阅读 · 0 评论 -
java入门第二季 答答租车系统
原文地址: http://liuyanzhao.com/2815.html原创 2017-03-28 21:10:15 · 638 阅读 · 0 评论 -
Java中 IO 常用操作
本文主要介绍 Java IO 中几个常见的操作,读取字符,写入字符,复制文件,复制文件夹等。直接上代码啦。package com.liuyanzhao.io;import java.io.*;import java.util.Date;public class FileDemo { /** * 输出文件基本信息 * @param filePath 文件的路径 */ ...原创 2018-03-02 21:12:22 · 254 阅读 · 0 评论 -
Java中CountDownLatch的使用和求多线程的运行时间
一、CountDownLatch的API构造方法摘要构造方法Constructor and DescriptionCountDownLatch(int count)构造一个以给定计数 CountDownLatch CountDownLatch。方法摘要所有方法 接口方法 具体的方法Modifier and TypeMethod and Descriptionvoidawait()导致当前线程等到锁...原创 2018-03-02 23:34:52 · 1159 阅读 · 0 评论 -
多线程问题产生原因
包括:一. Java 内存模型二. i++ 操作 细节三. 内存之间的指令操作一. Java 内存模型线程之间的共享变量存储在主内存(main memory)中,每个线程都有一个私有的本地内存(local memory),本地内存中存储了该线程以读/写共享变量的副本。本地内存是JMM(Java内存模型)的一个抽象概念,并不真实存在。它涵盖了缓存,写 缓冲区,寄存器以及其 他的硬件和编译器优化。Ja...原创 2018-03-02 23:36:19 · 677 阅读 · 0 评论 -
Java 基于UDP 实现单播、组播、广播 Socket 编程
UDP信息传递的方式单播(unicast):是指封包在计算机网络的传输中,目的地址为单一目标的一种传输方式。它是现今网络应用最为广泛,通常所使用的网络协议或服务大多采用单播传输,例如一切基于TCP的协议。 组播(multicast):也叫多播, 多点广播或群播。 指把信息同时传递给一组目的地址。它使用策略是最高效的,因为消息在每条网络链路上只需传递一次,而且只有在链路分叉的时候,消息才会被复制。多...原创 2018-04-02 22:52:27 · 3215 阅读 · 1 评论 -
深入理解java异常处理机制
1. 引子try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单、听话。不信?那你看看下面的代码,“猜猜”它执行后的结果会是什么?不要往后看答案、也不许执行代码看真正答案哦。如果你的答案是正确,那么这篇文章你就不用浪费时间看啦。package Test;public cla...转载 2018-03-17 11:11:19 · 440 阅读 · 0 评论 -
通过 Socket 实现 UDP 编程 入门
上一篇文章介绍了基于 TCP 协议的 Socket 通信,本文介绍基于 UDP 协议的 Socket 通信,还是一个用户登录的例子。 UDP协议(用户数据报协议)是无连接、不可靠、无序的。UDP协议以数据报作为数据传输载体。 进行数据传输时,首先要将要传输的数据定义成数据报(Datagram),在数据报中指明所要达到的 Socket(主机地址和端口),然后再将数据报发送出去。相关操作类:Datag...原创 2018-03-17 10:33:23 · 621 阅读 · 0 评论 -
通过 Socket 实现 TCP 编程入门
这里我们通过一个用户登录的例子来学习基于 TCP 协议的 Socket 通信。 Socket 通信模型 Socket通信步骤 ServerSocket 构造器和成员方法1、ServerSocket 构造方法 2、ServerSocket 成员方法 Socket 构造器和成员方法1、Socket 构造器 2、Socket 成员方法 一个服务端和支持多个客户端的对话demo1、server.java...原创 2018-03-17 10:32:31 · 421 阅读 · 0 评论 -
Java IO 创建文件解决文件名重复问题
之前在做上传的时候,文件命名都是按照时间毫秒数来命名的,如 2017120110344155.jpg 这种的其实这种虽然能解决问题,但是我个人不是很喜欢。我更希望是如果文件名不存在不修改文件名,如果存在在文件名后面加数字,1,2,3这种的。像这样 代码演示下面通过一个拷贝文件的例子完成这个想法package practice.IO;import java.io.File;import java.i...原创 2018-03-17 10:22:49 · 2309 阅读 · 0 评论 -
java语言复制数组的四种方法
来源于牛客网的一道选择题:JAVA语言的下面几种数组复制方法中,哪个效率最高?A.for循环逐一复制B.System.arraycopyC.System.copyofD.使用clone方法效率:System.arraycopy > clone > Arrays.copyOf > for循环 1、System.arraycopy的用法:public static void arra...转载 2018-03-03 14:16:48 · 393 阅读 · 0 评论 -
JVM 堆内存设置原理
堆内存设置原理JVM堆内存分为2块:Permanent Space 和 Heap Space。Permanent 即 持久代(Permanent Generation),主要存放的是Java类定义信息,与垃圾收集器要收集的Java对象关系不大。Heap = { Old + NEW = {Eden, from, to} },Old 即 年老代(Old Generation),New 即 年轻代(Yo...转载 2018-03-03 14:14:34 · 295 阅读 · 0 评论 -
【Java集合源码剖析】Java集合框架
Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组、链表、栈、队列、集合、哈希表等。学习Java集合框架下大致可以分为如下五个部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具类(Arrays、Collections)。 Java集合类的整体框架如下:从上图中可以看出,集合类主要分为两大类:Collection和Map。...转载 2018-03-03 14:10:47 · 237 阅读 · 0 评论 -
java中Map,List与Set的区别
先看一张图(图来自兰亭风雨的专栏)Set,List,Map的区别java集合的主要分为三种类型:Set(集)List(列表)Map(映射)要深入理解集合首先要了解下我们熟悉的数组:数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),而JAVA集合可以存储和操作数目不固定的一组数据。 所有的JAVA集合都位于 java.util包中!JAVA集合只能存放引用类型的的数据,不...转载 2018-03-03 14:07:39 · 300 阅读 · 0 评论 -
Java集合不能存放基本数据类型,只存放对象的引用
Java集合如Map、Set、List等所有集合只能存放引用类型数据,它们都是存放引用类型数据的容器,不能存放如int、long、float、double等基础类型的数据。 1. 集合存储对象Java集合中实际存放的只是对象的引用,每个集合元素都是一个引用变量,实际内容都放在堆内存或者方法区里面,但是基本数据类型是在栈内存上分配空间的,栈上的数据随时就会被收回的。 2. 基本类型数据如何解决呢?可...转载 2018-03-03 13:37:39 · 2140 阅读 · 2 评论 -
通过反射认识泛型的本质
通过 Class 和 Method 来认识泛型的本质,在编译阶段验证是否有错误。如果我们绕过编译就绕过泛型。 来看一个demopackage practice.Reflect;import java.lang.reflect.Method;import java.util.ArrayList;/** * @Author: 言曌 * @Date: 2017/11/17 * @Time: 上午10:2...原创 2018-03-03 13:31:07 · 315 阅读 · 0 评论 -
Java 方法的反射
方法的反射(1)如何获取某个方法方法的名称和参数列表才能唯一确定某个方法(2)方法反射放操作method.invokw(对象,参数列表); 看下面这个 demopackage practice.Reflect;import java.lang.reflect.Method;/** * @Author: 言曌 * @Date: 2017/11/17 * @Time: 上午9:36 */public ...原创 2018-03-03 13:23:40 · 276 阅读 · 0 评论 -
Java 通过反射获取类的信息(成员变量,成员方法,构造方法)
直接看代码package practive.Reflect;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;/** * 获得类的信息(成员方法,成员变量,构造方法) * @Author: 言曌 * @Date: 2017/11/16 * @Time...原创 2018-03-03 13:22:11 · 3005 阅读 · 0 评论 -
Java动态加载类
一、Class 类Class.forName("类的全称")不仅表示类的类类型,还代表了动态加载类请大家区分编译、运行编译时刻加载类是静态加载类、运行时刻加载类是动态加载类 二、静态加载类1、我们看下面这段代码,通过 new 的方式来创建对象,这其实是静态方式来加载类(Word和Excel)public class Office { public static void main(Stri...原创 2018-03-03 13:15:25 · 308 阅读 · 0 评论 -
Class类的使用
1)在面向对象的世界里,万事万物皆对象。java语言中,静态的成员、普通数据类型类是不是对象呢?类是谁的对象呢?类是对象,类是java.lang.Class类的实例对象2 )这个对象到底如何表示?There is a class named CIass 通过以下代码解释 /** * @Author: 言曌 * @Date: 2017/11/6 * @Time: 下午10:00 */public ...原创 2018-03-03 12:21:46 · 505 阅读 · 0 评论 -
成员变量、全局变量、实例变量、类变量、静态变量和局部变量的区别
变量名首写字母使用小写,如果由多个单词组成,从第2个单词开始的其他单词的首写字母使用大写。如果局部变量的名字和成员变量的名字相同, 要想在该方法中使用成员变量,必须使用关键字this 成员变量和局部变量的区别成员变量:1、成员变量定义在类中,在整个类中都可以被访问。2、成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。 3、成员变量有默认初始化值。局部变量:1、局部变...原创 2018-03-03 12:18:27 · 3920 阅读 · 1 评论 -
一个java文件可以有多个类嘛?
一个.java文件中可以有很多类。不过注意以下几点: 1、public 权限的类只能有一个(也可以一个都没有,但最多只有1个) 2、这个.java文件的文件名必须是public类的类名(一般的情况下,这里放置main方法是程序的入口。) 3、若这个文件中没有public的类,则文件名随便是一个类的名字即可 4、用javac 编译这个.java文件的时候,它会给每一个类生成一个.class文件原创 2017-04-17 12:09:45 · 1868 阅读 · 0 评论 -
extends和implements区别
extends与implements的不同1、在类的声明中,通过关键字extends来创建一个类的子类。 一个类通过关键字implements声明自己使用一个或者多个接口。 extends 是继承某个类, 继承之后可以使用父类的方法, 也可以重写父类的方法; implements 是实现多个接口, 接口的方法一般为空的, 必须重写才能使用 2、extends是继承父类,只要那个类不是声明为fi原创 2017-04-27 11:18:27 · 3358 阅读 · 0 评论 -
Java求矩形面积和圆形面积的异常处理实例
题目有一个圆形和长方形。都可以获取面积,对于如果如果出现非法值,视为是获取面积出现问题。问题通过异常来表示。现在对这个程序进行基本设计代码如下package com.liuyanzhao;class NoValueException extends RuntimeException { NoValueException (String message) { super原创 2017-05-22 15:25:07 · 3001 阅读 · 0 评论 -
Java中异常处理示例
Exception 的三个方法 package com.liuyanzhao; class ZeroException { int div(int a,int b) throws Exception{ return a/b; } } public class Demo { public static原创 2017-05-22 19:37:47 · 1030 阅读 · 0 评论