Java基础
文章平均质量分 70
日常工作记录总结
zhengyangzkr
善于总结,乐于分享。
展开
-
java线程的创建方式
java线程有三种创建方式有三种分别是:继承Thread类,实现Runnable接口,实现Callable接口。1.继承Thread类 继承Thread类创建线程主要是通过覆写父类中的run()方法来实现自己的线程的业务实现逻辑,例如下面的代码 的功能就是创建一个线程并输出一段话"hello world !"。package com.java.base原创 2017-04-14 13:18:24 · 248 阅读 · 0 评论 -
java8新特性-接口定义增强
Java8之前java接口由全局常量和抽象方法所做组成,java8及以后的接口定义可以使用default,static定义。 例如:一个接口随着时间的推移,接口下面有2000个实现类,这个时候我们接到一个需求,给接口增加一个方法,并且每个实现类这个方法都是相同的实现,那我们应该怎么办呢?Java8之前的做法就是先实现出来一个方法,然后复制粘贴这个方法的实现到其他的接原创 2017-08-05 13:26:40 · 453 阅读 · 1 评论 -
spring获取bean工具类
import java.io.ByteArrayInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingExc原创 2017-08-05 13:24:01 · 354 阅读 · 0 评论 -
在java项目中通过相对路径获取资源的方式
1.可以通过 类名.class.getResource方法获取或者getSystemResource 2.可以通过当前线程 Thread.currentThread().getContextClassLoader().getResource获取 public class TestDemo {public static void main(String[] args) throws F原创 2017-08-05 13:20:49 · 1704 阅读 · 0 评论 -
TreeSet使用时注意问题
TreeSet是依靠TreeMap来实现的。 TreeSet是一个有序集合,TreeSet中的元素将按照升序排列,缺省是按照自然排序进行排列,意味着TreeSet中的元素要实现Comparable接口。或者有一个自定义的比较器。 我们可以在构造TreeSet对象时,传递实现Comparator接口的比较器对象。 TreeSet的排序是在添加元素的时候进行排序的,即add(元素)的时候,原创 2017-08-05 13:18:07 · 838 阅读 · 0 评论 -
java使用freemark生成pdf
1.首先通过maven的pom.xml文件引入jar包 javax.servlet javax.servlet-api 3.0.1 provided org.freemarker freemarker 2.3.22 org.xhtmlrenderer flying-saucer-pdf 9.0.3 2.原创 2017-07-24 22:38:07 · 13980 阅读 · 7 评论 -
java之用volatile和不用volatile的区别
转载地址:http://blog.csdn.net/feier7501/article/details/20001083 在当前的Java内存模型下,线程可以把变量保存在本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成数据的不一致。 要解转载 2017-04-26 18:14:25 · 707 阅读 · 0 评论 -
linux下jdk的安装及环境变量的配置
工作中经常接触到windows系统中的java jdk环境变量的配置,这个配置过程大家应该很熟悉了,关于linux下对java jdk环境变量的配置对于不经常使用linux系统的开发人员来说感觉还是比较陌生的,下面就开始介绍一下linux环境下java jdk的安装和环境变量的配置问题。 1.jdk的下载及安装: a.jdk的下载 官网地址:http://原创 2017-05-08 09:39:14 · 1157 阅读 · 0 评论 -
java内部类的创建方式
内部类我们在程序开发中经常会用到,这里通过普通内部类,静态内部类和方法内部类三种方式来介绍一下内部类的创建方式。 1.普通内部类的创建:/** * * 普通内部类的定义* */class Outer { private String name = "hello world !"; //普通内部类定义 class Inner{ publi原创 2017-04-20 13:06:03 · 4768 阅读 · 0 评论 -
java递归的简单实现方式
递归在平常的开发过程中使用的不是太多,但是作为一个经典算法,我们必须也要了解一下,递归在使用的过程中一定要有递归的结束条件,否则就会出现java内存溢出,导致整个系统崩溃。下面使用递归计算100以内的数的累计求和让大家更深刻的理解一下递归算法。public class TestDemo { /** * @param args */ public static void m原创 2017-04-19 22:30:58 · 12530 阅读 · 4 评论 -
使用Object类中的wait()和notify()方法实现生产者和消费者模式
生产者消费者模式,在实际的开发过程中经常会遇到,平常我们接触到的例如ActiveMQ就是一个一个典型的生产者消费者模式。为了更好的理解生产者和消费这模式,下面通过自己定义的一个消息类、结合Object对象中的wait()和notify()方法实现一个简单的生产者消费者模式。 首先定义一个消息类Info.package com.test.consumer;/** * @生产消息类原创 2017-04-19 21:31:25 · 1007 阅读 · 0 评论 -
Java并发编程之volatile关键字解析
原文地址:http://www.tuicool.com/articles/2YB7Rr volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。本文我们就从JVM内存模型开始,了解一下 volatile 的应用场景。volatile关键字JVM内存模型在了解 volatile 之前,我们有必要对JVM的内存模型有一个基本的了解。Java转载 2017-04-27 15:25:19 · 79 阅读 · 0 评论 -
java8新特性-Lamda表达式
Lamda表达式属于函数式编程的概念,为甚需要函数式编程呢?如果想知道函数式编程产生的目的,那么我们可以且必须通过匿名内部类来分析。 public class TestClass { /** * 接口类 */ public interface IMessage{ void print(); }原创 2017-08-05 13:34:21 · 482 阅读 · 0 评论