
java基础
文章平均质量分 55
杜鲁门
keep moving
展开
-
Java基础知识回顾--IO流
字节流 字符流输入流 InputStream Reader输出流 OutputStream Writer按数据流的方向不同可以分为输入流和输出流。 按处理数据单位不同可以分为字节流和字符流。 按照功能不同可以分为节点流和处理流。上来就是这样的管道。现在来细细理解一下,如果一根管道怼到一个文件上读数据,站在文件的角度上这叫输出,站在程序的原创 2016-09-02 23:53:24 · 627 阅读 · 0 评论 -
Java线程池和阻塞队列
Java提供了自己的线程池。每次只执行指定数量的线程,java.util.concurrent.ThreadPoolExecutor 就是这样的线程池。ThreadPoolExecutor参数介绍:corePoolSize 核心线程数,指保留的线程池大小(不超过maximumPoolSize值时,线程池中最多有corePoolSize 个线程工作)。 maximumPoolSize 指的是线程池原创 2017-02-20 10:05:32 · 4132 阅读 · 1 评论 -
Java动态代理的两种实现方法
AOP的拦截功能是由java中的动态代理来实现的。说白了,就是在目标类的基础上增加切面逻辑,生成增强的目标类(该切面逻辑或者在目标类函数执行之前,或者目标类函数执行之后,或者在目标类函数抛出异常时候执行。不同的切入时机对应不同的Interceptor的种类,如BeforeAdviseInterceptor,AfterAdviseInterceptor以及ThrowsAdviseInterceptor原创 2017-02-19 13:10:02 · 988 阅读 · 0 评论 -
synchronized 修饰在 static方法和非static方法的区别
Java中synchronized用在静态方法和非静态方法上面的区别在Java中,synchronized是用来表示同步的,我们可以synchronized来修饰一个方法。也可以synchronized来修饰方法里面的一个语句块。那么,在static方法和非static方法前面加synchronized到底有什么不同呢?大家都知道,static的方法属于类方法,它属于这个Class(注意:这里的Cl原创 2017-02-19 12:51:26 · 1295 阅读 · 0 评论 -
多线程中基础Thread和实现Runnable的区别
在程序开发中只要是多线程肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下好处:避免点继承的局限,一个类可以继承多个接口。适合于资源的共享因为Java本来就是面向接口的,所以第一个特性应该很容易理解,下面我们以买票为例,通过Thread类完成要卖出30张票。虽然现在程序中有三个线程,但是一共卖了10张票,也就是说使用Runnable实现多线程可以达原创 2017-02-17 09:46:01 · 723 阅读 · 0 评论 -
判断两个float或double是否相等
double a, b; ... if(a==b) ...不用考虑初始化的问题哈,此处不是说明那个问题。不能直接 if(a==b)而是要equal(a,b)equal 函数自己写public boolean equal(double a, double b) { if ((a- b> -0.000001) && (a- b) < 0.000001)原创 2017-02-08 15:12:22 · 20505 阅读 · 0 评论 -
Java.lang.Character.isDigit()和isLetter()方法
[LeetCode]–125. Valid Palindrome在这个题里面遇到一个没见过判断字符串是否为字母啊数字的方法。这里解释一下。使用isDigit判断是否为数字public static boolean isNumeric(String str){ for (int i = str.length();--i>=0;){ if (!Character.isDigit(str.原创 2016-10-05 19:33:44 · 22917 阅读 · 0 评论 -
List中的set方法和add方法
[LeetCode]–119. Pascal’s Triangle II在做这个题的时候,我发现了一个list初始化的问题。就是set必须是new出来的具体list初始化之后才能使用,不然就会报错。下面就研究一下set和add。package yanning;import java.util.LinkedList;import java.util.List;public class TestLis原创 2016-10-05 16:00:43 · 23628 阅读 · 1 评论 -
Java经典多线程问题--生产者与消费者
今天研究了一下Java多线程,顺便写了一下多线程中的经典问题—–生产者消费者经典问题,推荐一个线程链接Java基础知识回顾–线程 这个里面其实写了生产者与消费者问题,估计在后面大家看起来比较费劲,所以我提取出来再讲解一遍。package yanning;public class ProducerConsumer { public static void main(String[] args)原创 2016-10-05 15:22:52 · 793 阅读 · 0 评论 -
Java基础知识回顾--线程
基本概念 线程是一个程序内部的顺序控制流Java的线程是通过java.lang.Thread类来实现的。main函数是一个主线程,用户可以通过创建Thread的实例来创建新的线程。每一个线程都必须实现run方法。通过Thread类的start方法来启动一个线程。两种方式实现,一种是线程类实现Runnable接口;二种就是定义一个Thread的子类并重写其run方法。public class Tes原创 2016-09-01 18:01:45 · 868 阅读 · 0 评论 -
Java Math的floor,round,ceil函数小结
floor 返回不大于的最大整数 round 则是4舍5入的计算,入的时候是到大于它的整数(当-1.5时可见,四舍五入后得到的结果不是我们期待的,解决办法是先对他取绝对值,然后在用round方法) round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11.原创 2016-10-16 17:40:27 · 1355 阅读 · 0 评论 -
Java中List、Set、Map区别--小记
三者异同List,Set都是继承自Collection接口;List特点:元素有放入顺序,元素可重复; Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的); Map特点:元素按键值对存储,无放入顺序 (应该知道什么是键值对吧!) ;List接口有三个实现类:LinkedList,ArrayLi原创 2016-09-26 09:07:46 · 2498 阅读 · 0 评论 -
Java基础知识回顾--反射机制
ReflectionClassLoader的类加载机制 并非一次性加载。 需要的时候加载(运行期间动态加载)。 java-verbose:class可以观察类的具体加载过程。 static语句块在加载后执行一次。 dynamic语句块每次new新的对象都会执行,等同于构造方法中语句,用得也比较少。首先bootstrap class loader把其他的Class loader给load进来原创 2016-09-04 08:23:23 · 720 阅读 · 0 评论 -
Java基础知识回顾--正则表达式
RegularExpressions 字符串处理利器正则表达式语法 正则表达式包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”)。 特殊字符 下表包含了单字符元字符的列表以及它们在正则表达式中的行为。 若要匹配这些特殊字符之一,必须首先转义字符,即,在字符前面加反斜杠字符 ()。 例如,若要搜索“+”文本字符,可使用表达式“+”。 元字符 下表包含了多字符元字原创 2016-09-03 12:23:21 · 711 阅读 · 0 评论 -
Java基础知识回顾--网络编程基础
OSI参考模型 TCP/IP参考模型 应用层 表示层 应用层 会话层 传输层 传输层 网络层 网络层数据链路层 物理+数据链路层 物理层IP协议 最大的贡献就是给大家提供了独一无二的IP地址。A类地址 8位网络号并且0打头,24位主机号; B类原创 2016-09-03 10:07:40 · 633 阅读 · 0 评论 -
HashMap Hashtable区别
我们先看2个类的源码HashMap Hashtable实现源码可见Hashtable 继承自 Dictiionary 而 HashMap继承自AbstractMapHashtable的put方法如下public synchronized V put(K key, V value) { // Make sure the value is not null if (value == nu原创 2017-02-11 12:32:36 · 330 阅读 · 0 评论