Java concurrent包下的高级工具 发表于 2017-08-16 | 分类于 Java | | 阅读次数 Java1.5中的concurrent包下提供了很多的工具类,本次来讲述这些实用的类。 CountDownLatch它主要用来管理一组相关的线程,使得某个线程,要等待其他所有线程执行完后在执行。常用的有两个方法:countdown()和await().它的用法很简单,可分为以下三步: new Co ... 阅读全文 »
Java NIO 发表于 2017-08-14 | 分类于 Java | | 阅读次数 Java的底层通信I/O系统,无论是文件I/O还是网络I/O。这里有两个最基本的概念,分别是BIO(阻塞IO)和NIO(非阻塞IO,又称为NEW IO)。BIO是指当某个线程进行I/O操作时,线程会被阻塞,直到数据被读取完毕或者数据被完全写入,在此期间,该线程无法执行任何操作。 这里有个误区,认为非 ... 阅读全文 »
高并发下的缓存设计 发表于 2017-08-10 | 分类于 Java | | 阅读次数 背景工业界有很多成熟的系统,大多数都是分布式的缓存系统,如redis,memcache,Ehcache等,它们被广泛运用于互联网公司中。缓存系统的一个重要应用就是减小数据库的压力,也可以缓存jsp,静态HTML,图片等资源。 这次说的缓存,并不是大型的分布式缓存系统,也没有类似LRU等过期机制,它仅 ... 阅读全文 »
Java实现多线程 发表于 2017-08-03 | 分类于 Java | | 阅读次数 多线程是Java重要的一块基础知识,各种面试中也是考察的重点,需要非常牢固的掌握。多线程的目的是更好的利用CPU资源 线程状态回顾首先回顾一下线程的5种状态: NEW 线程初始化,还没调用run()之前的状态 RUNABLE 可运行态,其中包括RUNNING和READY WAIT 等待状态,一 ... 阅读全文 »
装饰模式 发表于 2017-08-01 | | 阅读次数 背景给一个类或一个对象增加行为?继承或关联。装饰模式可以不需要创造更多子类的情况下,将对象的功能拓展。动态地给一个对象增加一些额外的职责,装饰模式比生成子类实现更为灵活。其别名也可以称为包装器(Wrapper),与适配器模式相同,但它们适用于不同的场合。 代码示例beverage.h,饮料的接口,其 ... 阅读全文 »
代理模式 发表于 2017-08-01 | | 阅读次数 背景某些情况下,客户不想或不可以直接引用一个对象,只能通过一个称之为“代理”的第三方来间接引用。它起到一个中介的作用,通过代理对象,能够去掉客户不想看到的内容,或者添加客户需要的内容。 代码示例12345678910111213141516171819202122232425262728293031 ... 阅读全文 »
Java方法调用过程(静态分派与动态分派) 发表于 2017-08-01 | 分类于 Java | | 阅读次数 在任何程序中,方法的调用都是非常拼单的操作,而掌握Java方法的调用,需要综合多方面的知识,其中包括class文件的结构,类加载的过程,类型转换和多态等概念,下面就详细讲解一下Java方法调用的过程。 Class文件的编译和加载由之前的学习的Class文件结构和类加载过程可知,编译器将.java文件 ... 阅读全文 »
适配器模式 发表于 2017-08-01 | | 阅读次数 背景目标类给客户端提供服务,很多时候都是以API的形式,目标类能偶提供满足要求的服务,但是接口不一定是客户端期望的,方法名,参数列表等不符合客户的要求,本着以客户为中心的理念,不能让客户去更改调用的方式,只能是目标类修改。但如果多个客户所要求的接口不一样,那么目标类到底是要改成什么样呢?适配器模式就 ... 阅读全文 »
Java高效并发 发表于 2017-07-26 | 分类于 Java | | 阅读次数 线程安全 记得有一次电话面试,被问到什么是线程安全?这个问题看似觉得一定能够答上来,但是我却没有答好。有一本书的作者将线程安全定义如下: 当多个线程访问一个对象时,如果不考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以 ... 阅读全文 »
统计学习方法概论 发表于 2017-07-26 | 分类于 机器学习 | | 阅读次数 概括统计学习是关于计算机基础数据构建概率统计模型的并运模型对数据进行预测与分析的一门学科。 对象统计学习的对象是数据,从数据出发,提取数据的特征,抽象出数据的模型,发现数据中的知识,又回到对数据的分析和预测当中。数据包括数字,文字,图像,视频等 目的对数据进行预测和分析,给人们获得新知识,给人们带来 ... 阅读全文 »