
Java
文章平均质量分 69
Java语言是一门非常纯粹的面向对象编程语言,它吸收了C++语言的各种优点,又摒弃了C++中难以理解的多继承、指针等概念。Java分为三个体系,分别为Java SE(标准版),JavaEE(J2EE,企业版),Java ME(J2ME,微型版)。
No Silver Bullet
业精于勤荒于嬉,行成于思毁于随。
学业由于勤奋而专精,由于玩乐而荒废;德行由于独立思考而有所成就,由于因循随俗而败坏。
——出自(唐)韩愈《进学解》
展开
-
Vue进阶(四十六):java后台将 url 中的20%、22%解析还原成真实的字符
URL编码表backspace8%A41%a61%§%A7Õ%D5 tab9%B42%b62%«%ABÖ%D6 linefeed%0AC43%c63%¬%ACØ%D8 creturn%0DD44%d64%¯%ADÙ%D9 ...原创 2019-04-17 18:59:07 · 10058 阅读 · 0 评论 -
Java进阶(六十)Java设置session超时(失效)的时间
在一般系统登录后,都会设置一个当前session失效的时间,以确保在用户长时间不与服务器交互,自动退出登录,销毁session具体设置的方法有三种:1.在web容器中设置(以tomcat为例)在tomcat-7.0\conf\web.xml中设置,以下是tomcat7.0中默认配置:<session-config> <session-timeout>30&l...原创 2019-03-20 14:46:06 · 1799 阅读 · 0 评论 -
Java进阶(五十九)由NumberFormatException谈DateFormat和SimpleDateFormat 类线程安全
Java进阶(五十九)由时间转换报NumberFormatException异常引发的思考二:如何保证DateFormat和SimpleDateFormat 类线程安全前言 前文讲到在项目开发过程中,忽然遇到一个问题,数据库中的存放的时间原本是2018.03.21 08:08:08;后来存入的数据变为了2018.03...原创 2018-03-17 14:25:30 · 2037 阅读 · 1 评论 -
Java进阶(五十八)由NumberFormatException异常谈SimpleDateFormat
由时间转换报异常引发的思考一:如何使用时间格式化工具。在项目开发过程中,忽然遇到一个问题,数据库中的存放的时间原本是2018.03.21 08:08:08;后来存入的数据变为了2018.03.21 08:08:08.08。结果从数据库中取数进行处理时,报错如下:在排查问题过程中,发现该时间是从工作流转存过来的。96Jul;07TuePST;原创 2018-03-17 14:17:46 · 2387 阅读 · 0 评论 -
Java进阶(五十七)-基于感知哈希算法的pHash图像配准算法
毕业论文提交之后,老师交给自己一项任务:图像配准,也就是给你两幅图像,通过系统来判定两幅图像是否为同一副图像。自己作为这一方面的小白,先去网上搜索一下相应的检测方法,当然有现成的API调用最好,花钱也无所谓。我们这里采用的基础关键技术叫做 “感知哈希算法”(Perceptual hash algorithm),它的作用是对每张图片生成一个"指纹"(fingerprint)字符串,然后比较不同图片的指纹。结果越接近,就说明图片越相似。原创 2017-04-18 21:03:25 · 48734 阅读 · 5 评论 -
Java进阶(五十六)-IntelJ IDEA 将java项目打包成jar及引用外部包
Java进阶(五十六)-IntelJ IDEA 将java项目打包成jar及引用外部包打包成Jar 首先要保证自己的Java代码是没有问题的,在IDEA里面是可以正常运行的,然后,按下面步骤: 1.打开File -> Project Structure -> Artifacts,如下图 点击“+”,选择“Jar”,选择Empty或From modules with dependen原创 2017-04-18 20:58:30 · 44374 阅读 · 0 评论 -
Java进阶(五十五)-Java Lambda表达式入门
Java进阶(五十五)-Java Lambda表达式入门 原文链接: Start Using Java Lambda Expressions 下载示例程序 Examples.zip 。 简介 (译者注:虽然看着很先进,其实Lambda表达式的本质只是一个”语法糖”,由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能。本人建议不要乱用,因为这就和某些很高级的黑原创 2017-03-18 09:09:49 · 45908 阅读 · 1 评论 -
Java进阶(五十四)初识JAVA类加载机制
Java进阶(五十四)初识JAVA类加载机制 什么是类加载呢?当我们写完一个Java类的时候,并不是直接就可以运行的,它还要编译成.class文件,再由虚拟机解释给当前的操作系统去执行。这些过程都是我们看不见的,我们能看见的也就是一个.class文件。既然虚拟机要解释这些.class文件给当前的操作系统听,那么他怎么获得这些.class文件呢?虚拟机获得这些.class文件的过程就是类加载了。原创 2017-02-28 19:36:05 · 45120 阅读 · 0 评论 -
Java进阶(五十三)JAVA 注解机制
Java进阶(五十三)JAVA 注解机制 不知道大家在平时用到注解的频率多不多,注解对我们的帮助很大,能为我们节省很多工作。最直接的就是可以代替配置文件的功能,无论是基本的servlet还是常用的三大框架,里面都使用了注解,并且逐渐的代替了原本繁琐的配置,大大提高了编码效率。 随着注解使用的越来越频繁,我们对底层实现的了解越来越少,所以在这一章我们来好好了解一下注解是怎么实现的。 首先原创 2017-02-28 19:30:12 · 45320 阅读 · 0 评论 -
Java进阶(五十二)两个整数相除得到小数点并保留两位小数的方法
Java进阶(五十二)两个整数相除得到小数点并保留两位小数的方法 当两个整数相除时,由于小数点以后的数字会被截断,使运算结果为整数,故此时若希望得到运算结果为所预期的浮点数,则此时必须将两整数其一或是全部强制转换类型为浮点数。 例如: (float)a/b // 将整数其中一个强制转换成浮点数,再与另一个整数相除 a/(float)b (float)a/(float)b // 将两个整数同原创 2017-02-19 16:15:51 · 51388 阅读 · 0 评论 -
Java进阶(五十一)XML:四种解析器(dom,sax,jdom,dom4j)原理及性能比较
Java进阶(五十一)XML:四种解析器(dom,sax,jdom,dom4j)原理及性能比较 dom是解析xml的底层接口之一(另一种是sax).而jdom和dom4j则是基于底层api的更高级封装。dom是通用的,具有跨语言、跨平台性,而jdom和dom4j则是面向java语言的。 1.DOM DOM 是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准。DOM 是以层次结构组原创 2017-02-11 16:40:12 · 47395 阅读 · 2 评论 -
Java进阶(五十)根据一个给定经纬度的点,进行附近500米地点查询–合理利用算法
Java进阶(五十)根据一个给定经纬度的点,进行附近500米地点查询–合理利用算法前沿 最近做一个项目:需要查询一个站点(已知该站点经纬度)1km-10km范围内的其它站点。所以,我首先想到的是,对每条记录,去进行遍历,跟数据库中的每一个点进行距离计算,当距离小于10km时,认为匹配。这样做确实能够得到结果,但是效率极其低下,因为每条记录都要去循环匹配n条数据,其消耗的时间可想而知。 于是我原创 2017-01-06 15:48:48 · 65224 阅读 · 10 评论 -
Java进阶(四十九)实现矩阵秩的求解-转置-行列式-逆矩阵操作
Java进阶(四十九)实现矩阵转置-行列式-逆矩阵操作 应论文需求,需要计算矩阵的逆矩阵。 相应的矩阵操作工具类如下:package cn.edu.ujn.paper.matrix;public class MatrixUtil { /** * 实现矩阵相乘 (AB) * @param a 矩阵A * @param b 矩阵B */ pr原创 2017-01-04 18:32:57 · 47444 阅读 · 3 评论 -
Java进阶(四十八)使用BigDecimal对浮点数进行精确运算
Java使用BigDecimal对浮点数进行精确运算 首先我们先来看如下代码示例:public class Test_1 { public static void main(String[] args) { System.out.println(0.06+0.01); System.out.println(1.0-0.42); System.原创 2017-01-04 16:55:10 · 45384 阅读 · 0 评论 -
Java进阶(四十七)Socket通信
Java进阶(四十七)Socket通信 今天讲解一个 Hello Word 级别的 Java Socket 通信的例子。具体通讯过程如下: 先启动Server端,进入一个死循环以便一直监听某端口是否有连接请求。然后运行Client端,客户端发出连接请求,服务端监听到这次请求后向客户端发回接收消息,连接建立,启动一个线程去处理这次请求,然后继续死循环监听其他请求。客户端输入字符串后按回车键,向服务原创 2016-10-15 15:39:32 · 46182 阅读 · 1 评论 -
Java进阶(四十六)简述ArrayList、Vector与LinkedList的异同点
简述ArrayList、Vector与LinkedList的异同点 Collection类的继承图如下: 从图中可以看出,LinkedList与ArrayList、ArrayDeque这三者都实现了List接口.所有使用方式也很相似,主要区别在于因为实现方式的不同,所以对不同的操作具有不同的效率。ArrayList是一个可改变大小的数组.当更多的元素加入到ArrayList中时,其大小将会原创 2016-10-08 20:27:20 · 48872 阅读 · 4 评论 -
Java进阶(四十五)字节流与字符流的区别
java 字节流与字符流的区别(转载) 字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件,如下图所示。 下面以两个写文件的操作为主进行比较,但是在操作时字节流和字符流的操作完成之后都不关闭输出流。 范例:使用字节流不关闭原创 2016-10-08 15:25:16 · 48966 阅读 · 7 评论 -
Java进阶(四十四)线程与进程的特征及区别
线程与进程的特征及区别定义及特征进程 指在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令、数据和堆栈等组成的,是一个能独立运行的活动实体。进程的特征:1.动态性:进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的。2.并发性:任何进程都可以同其他进程一起并发执行。3.独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位。4.异步性:由于进程间的原创 2016-09-28 08:58:41 · 46658 阅读 · 1 评论 -
Java进阶(四十三)线程与进程的区别
Java进阶(四十三)线程与进程的区别1、线程的基本概念 概念:线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。 好处:(1)易于调度。(2)提高并发性。通过线程可方原创 2016-09-28 08:50:07 · 50323 阅读 · 3 评论 -
Java进阶(四十二)Java中多线程使用匿名内部类的方式进行创建3种方式
Java中多线程使用匿名内部类的方式进行创建3种方式“` package cn.edu.ujn.demo;/* * 匿名内部类的格式: */ public class ThreadDemo { public static void main(String[] args) { // 继承thread类实现多线程 new Thread() {原创 2016-09-27 19:55:11 · 46648 阅读 · 1 评论 -
剑指Offer——巧妙使用sort(List<T>,Comparator<? super T>)比较器
剑指Offer——巧妙使用sort(List,Comparator)比较器先入为主package cn.edu.ujn.offersword; import java.util.ArrayList;import java.util.Collections;import java.util.Comparator; public class C5_33_SortArrayForMinNum原创 2016-09-16 12:13:35 · 51832 阅读 · 5 评论 -
Java进阶(四十一)多线程讲解
Java多线程讲解前言 接到菜鸟网络的电话面试,面试官让自己谈一下自己对多线程的理解,现将其内容整理如下。线程生命周期 Java线程具有五中基本状态 新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread(); 就绪状态(Runnable):当调用线程对象的start()方法(t.start();),线程即进入就绪状态。原创 2016-08-30 21:04:43 · 48895 阅读 · 1 评论 -
Java进阶(四十)Java类、变量、方法修饰符讲解
Java进阶(四十)Java类、变量、方法修饰符讲解Java类修饰符 abstract: 将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现。 final: 将一个类生命为最终(即非继承类),表示他不能被其他类继承。 private: Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的类、属性以及方法只能被该类的对象访问,其子类不能访问,更不能允原创 2016-08-30 10:00:51 · 45800 阅读 · 4 评论 -
Java进阶(三十九)Java集合类的排序,查找,替换操作
Java进阶(三十九)Java集合类的排序,查找,替换操作前言 在Java方向校招过程中,经常会遇到将输入转换为数组的情况,而我们通常使用ArrayList来表示动态数组。获取到ArrayList对象后,我们可以根据Collection中的方法进行排序,查找,替换操作。而不用在东奔西走的利用什么各种排序算法、正则来实现了。在进行数组排序是,有时反而会因为参数问题而大费周折。例如,自己在利用原创 2016-08-07 15:55:59 · 49848 阅读 · 2 评论 -
Java进阶(三十八)快速排序
Java进阶(三十八)快速排序前言 有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。 假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥的了)。为了方便,就让第一个数6作为基准数吧。接下原创 2016-07-28 21:41:35 · 47364 阅读 · 7 评论 -
Java进阶(三十七)java 自动装箱与拆箱
Java进阶(三十七)java 自动装箱与拆箱前言 这个是jdk1.5以后才引入的新的内容。java语言规范中说道:在许多情况下包装与解包装是由编译器自行完成的(在这种情况下包装称为装箱,解包装称为拆箱); 其实按照我自己的理解自动装箱就可以简单的理解为将基本数据类型封装为对象类型,来符合java的面向对象;例如用int来举例: //声明一个Integer对象 In原创 2016-07-23 17:21:42 · 46437 阅读 · 6 评论 -
Java进阶(三十六)深入理解Java的接口和抽象类
Java进阶(三十六)深入理解Java的接口和抽象类前言 对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的接口和抽象类。抽象类 在了解抽象类之前,先来了解一下抽象方法。抽象方法是一原创 2016-07-23 15:14:07 · 49804 阅读 · 14 评论 -
Java进阶(三十五)java int与integer的区别
java int与integer的区别前言 int与integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象。 1.Java 中的数据类型分为基本数据类型和复杂数据类型 int 是前者而integer 是后者(也就是一个类);因此在类进行初始化时int类的变量初始为原创 2016-07-19 19:26:08 · 61346 阅读 · 14 评论 -
Java进阶(三十四)Integer与int的种种比较你知道多少?
Integer与int的种种比较你知道多少?前言 如果面试官问Integer与int的区别:估计大多数人只会说到两点:Ingeter是int的包装类,注意是一个类;int的初值为0,Ingeter的初值为null。但是如果面试官再问一下Integer i = 1;int ii = 1; i==ii为true还是为false?估计就有一部分人答不出来了,如果再问一下其他的,估计更多原创 2016-07-19 19:17:29 · 54066 阅读 · 2 评论 -
Java进阶(三十三)java基础-filter
java基础-filter 我们先看看没有filter的时候,整个web客户端-服务端的一个流程。 接下来我们再看看引入了filter之后的Uml图。尝试分析这两者之间的差别。 filter从哪里来? 是在servlet2.3规范中加入的。 filter的生命周期? 同servlet的生命周期相同。 filter的执行过程?原创 2016-06-30 21:52:54 · 46053 阅读 · 1 评论 -
Java进阶(三十二) HttpClient使用详解
Java进阶(三十二)HttpClient使用详解 Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性。因此熟练掌握HttpClient是很重要的必修原创 2016-06-24 11:56:51 · 48647 阅读 · 1 评论 -
Java进阶(三十一) Web服务调用
Java进阶(三十一) Web服务调用前言 有朋友问了一个问题:如何调用已知的音乐服务接口,服务文档如下: https://www.evernote.com/shard/s744/sh/c37cd503-68fc-4406-b8f2-5e90095be303/19b67e36aa2ccd19 查看代码之后,按照以往的服务调用方法实现,结果无法实现。很是费解,求教大师兄原创 2016-06-24 11:44:51 · 47781 阅读 · 1 评论 -
Java进阶(三十) 判断字符串编码类型
java 判断字符串编码类型public static String getEncoding(String str) { String encode = "GB2312"; try { if (str.equals(new String(str.getBytes(encode), encode))) {原创 2016-06-12 16:35:14 · 47914 阅读 · 6 评论 -
Java进阶(二十九)Could not create the view: An unexpected exception was thrown
Could not create the view: An unexpected exception was thrown 在将web项目部署到tomcat时,控制台输出以下内容: 这个问题的出现是在启动myeclipse之后出现的,这时还没有启动tomcat,因此可以排除tomcat中项目代码问题。应该是myeclipse在初始化工作空间workspace 的时候出的问题。原创 2016-05-21 18:08:01 · 54982 阅读 · 2 评论 -
Java进阶(二十八)SimpleDateFormat格式化日期问题
SimpleDateFormat格式化日期问题 发现一个问题,经过以下语句处理后,发现12:27:45转换后成为了00:27:45。DateFormat df = null;if(DATE1.trim().length() == 10){df = new SimpleDateFormat("yyyy-MM-dd");}else{df = new SimpleDateFormat(原创 2016-05-19 09:06:05 · 48447 阅读 · 1 评论 -
Java进阶(二十七)使用Dom4j解析XML文件
使用Dom4j解析XML文件写在前面的话 由于论文实验要求,需要实现操作XML文档,为此想到了dom4j这个工具,使用之后深感受益。在此分享给大家,以此共勉。 注:本文转载自http://blog.youkuaiyun.com/redarmy_chen/article/details/12969219转载请注明转载地址,谢谢。正文 dom4j是一个Java的XML API,类原创 2016-04-23 21:24:11 · 49604 阅读 · 1 评论 -
Java进阶(二十六)公司项目开发知识点回顾
公司项目开发知识点回顾前言 “拿来主义”在某些时候并不是最佳选择,尤其是当自己遇到问题的时候,毫无头绪。 在一次实验过程中,需要实现数据库的CRUD操作。由于之前项目开发过程中,自己就曾进行过此操作。故选择“走捷径”,直接使用前面的操作。其实之前的数据库操作方法是别人封装好的,当时自己只是拿来就用而已。这次自己就按照前面的方法配置了相关参数,在写数据时,却出现了意想原创 2016-04-07 09:23:52 · 51914 阅读 · 7 评论 -
Java进阶(二十五)Java连接mysql数据库(底层实现)
Java进阶(二十五)Java连接mysql数据库(底层实现)前言 很长时间没有系统的使用java做项目了。现在需要使用java完成一个实验,其中涉及到java连接数据库。让自己来写,记忆中已无从搜索。特将之前使用的方法做一简单的总结。也能够在底层理解一下连接数据库的具体步骤。实现 首先需要导入相关的jar包,我使用的为:mysql-connector-java原创 2016-03-19 15:03:47 · 50397 阅读 · 1 评论 -
Java进阶(二十四)Java List集合add与set方法原理简介
JavaList集合add与set方法原理简介add方法add方法用于向集合列表中添加对象。语法1用于在列表的尾部插入指定元素。如果List集合对象由于调用add方法而发生更改,则返回true;否则返回false。add(Ee)e:要添加到列表中的元素。实例public static void main(String[] args) { List list=原创 2020-03-14 17:18:06 · 53862 阅读 · 1 评论 -
Java进阶(二十三)java中long类型转换为int类型
java中long类型转换为int类型 由int类型转换为long类型是向上转换,可以直接进行隐式转换,但由long类型转换为int类型是向下转换,可能会出现数据溢出情况: 主要以下几种转换方法,供参考:一、强制类型转换[java]longll=300000;intii=(int)ll;二、调用intValue()方法[j原创 2016-03-02 20:27:14 · 52442 阅读 · 6 评论