Java专题
则不达
Hold the door
展开
-
Java 9:装B之前你必须要会的——泛型,注解,反射
1 泛型1.1 基本概念泛型提供了编译期的类型检查,但问题远非这么简单///原生态类型List list1 = new ArrayList(); ///规避的类型检查List list1 = new ArrayList<String>();///参数化类型List<Object> list2 = new ArrayList<Object>(); //可以放任何类型的对象,没指导意义Li原创 2016-12-11 20:53:10 · 3067 阅读 · 0 评论 -
Java 4:类的行为和设计模式
Java 4:类的行为和设计模式本文想要说明的问题是,类需要一个良好的关系网来约束类之间的通信,在实现功能的同时,利用面向对象的特性,使模块达到对修改关闭,对扩展开放。 最近看到一句话,说组件化的程度,就是一个团队的技术实力的体现,确实有道理。下面会提到的概念: 继承:概念上的is-a组合:组合配合注入,看似简单,但其力量十分巨大设计模式!!!占位符!!!原创 2016-12-07 22:51:43 · 289 阅读 · 0 评论 -
Java 3:对象的通用行为
本文说的是类的通用行为,要定义一个类,首先考虑本文提到的几个问题0 前言类的分类:活动实体,如Thread,安卓的Activity 一个线程就是一个Thread对象,两个线程要相等,就得是同一个对象一个安卓界面就是一个Activity对象,两个界面要相等,就得是同一个对象值类,如Person 一个学生可能对应好几个对象,要判断相等,可不能依赖于两个是不是同一个对象Java的对象普通对象原创 2016-12-07 22:39:09 · 398 阅读 · 0 评论 -
Java 2:枚举
1 基本使用package com.cowthan.enum2;public enum Planet { MERCURY(3.302e+23, 2.439e6), //水星 VENUS(4.869e+24, 6.052e6), //金星 EARTH(5.975e+24, 6.378e6), // MARS(6.419e+23, 3.393e6), //火星原创 2016-12-05 01:09:10 · 311 阅读 · 0 评论 -
Java 8:活好水多——Java 的新IO (nio)
Java的IO体系:旧IO新IO:nio,用ByteBuffer和FileChannel读写nio通道管理:SelectorOkio:io的封装,好像不关nio的事Netty:目的是快速的实现任何协议的server和client端 所以说你可以用netty通过channel等实现一个httpclient,和URLConnection平级这个课题太大了,应该分层次学: 第一层是官方的文档原创 2016-12-10 23:34:42 · 11620 阅读 · 0 评论 -
Java 1: 射基模式*$#%$#@射鸡摸式^%$%^ ! 设计模式!——对象管理
则不达的博客从这篇文章开始,我想说说我为什么写博客,其实之前也尝试过写博客,但都没有坚持下来,但这回找工作跳槽比较从容,再加上做安卓开发的这三年,都没有把知识体系好好整理一下,一直都是忙工作,正应了一个哥们说的那句话,一年经验重复了三年,当初定好的一天一点进步的目标也没有实现,所以为了给之前三年一个交代,也给之后三年一个好的开端,所以我从今天开始写文章,这些文章都是一边学一边整理,所以更像是一份笔记原创 2016-12-05 01:08:17 · 721 阅读 · 0 评论 -
Java 6-1:清华池的故事——线程和线程池
1 Java的线程1.1 线程和线程池Java的线程就是Thread,一个Thread对象,就是一个线程 Runnable是一个接口,给Thread提供任务这两个就是Java里最基本的线程new Thread(Runnable, "thread-name").start();但线程对于操作系统来说,是一种资源,既然是资源,就不能无限使用,同时线程也是一种重量级的对象,初始化也是个费事的工程,所以为原创 2016-12-08 11:13:03 · 564 阅读 · 0 评论 -
Java 6-2:收放自如,融汇贯通,让线程不再疯癫——线程的阻塞和关闭
本节重点说说线程什么时候会阻塞,如何关闭1 让出时间片Thread.yield(); 通知并建议线程调度器,我已经做完了主要工作,时间片你可以分给别人了 即使调用了这个,还是可能没有切换时间片,或者切换了,但是还是给了当前线程Thread.sleep(1000); TimeUnit.SECOND.sleep(1); 让当前线程进入睡眠状态,程序就阻塞在这里了 这个的表现应该是比yield良原创 2016-12-10 00:53:42 · 518 阅读 · 0 评论 -
Java 6-3:轮流值班儿,相互纠缠——线程协作
本文重点是线程的协作,如线程并发的执行一个任务,线程A等待线程B完成后再接着执行,线程A和B交替的执行某个任务1 join线程A等待线程B执行完,在A中调用B.join() A中的B.join()可以被中断 B也可以被中断 B被中断后,run方法继续执行直到返回,此刻A的join依旧有效 A被中断后,或者join到期后,run方法也继续执行,所以可能需要加条件判断public class原创 2016-12-10 01:13:06 · 1658 阅读 · 0 评论 -
Java 6-4:别看了,坑的就是你——活性失败-volatile
线程A对某变量值的修改,可能没有立即在线程B体现出来,称为活性失败。 注意下面这个例子,在PC和安卓上运行结果可能不一样(安卓可能不需要volatile)例子public class VolatileTest extends Thread { /** * 使用了volatile,则1秒后,子线程会退出循环,因为在主线程将isRunning置位为false */原创 2016-12-10 01:19:17 · 2628 阅读 · 0 评论 -
Java 6-5:拒绝3P,拒绝黄赌毒!——安全性失败,同步访问
首先需要注意的是锁会让并行变为串行,但安全和效率,这两个之间没有折衷,安全第一,但我们要追求的必须是高效安全本文涉及到: 原子操作临界区锁信号量1 共享受限资源什么时候会出现共享受限资源的冲突? 有一份数据摆在这里,多个worker线程都对其进行修改,状态就可能会乱了 总之,每次访问一个资源时,从进去到出来,都要保证数据的一致性基本上所有保护共享受限资源的方法,都是序列化对受限资源的原创 2016-12-10 01:26:02 · 805 阅读 · 0 评论 -
Java 6-6:你存的不只有.avi——ThreadLocal-线程本地存储
对于一个变量,从不同的线程取出来的是不同的拷贝public static class ThreadLocalVariableHolder{ private static ThreadLocal<Integer> value = new ThreadLocal<Integer>(){ private Random rand = new Random(47); pr原创 2016-12-10 01:30:09 · 525 阅读 · 0 评论 -
Java 7:Java集合从不懂到更不懂,不信来看
集合1 集合关系网关系网:数组 Arrays.asList就成了List接口Collection3个分支:List,Set,QueueList两个分支:Sequential(代表作是LinkedList)和RandomAccess(ArrayList,Vector,Stack) 用时要考虑是频繁插入,还是频繁访问LinkedList可以快速插入删除,因为只是节点的操作,但下标访问(随机访原创 2016-12-10 23:26:23 · 1450 阅读 · 1 评论 -
Java 5:方法设计
Java 5:方法设计本文把范围从类和对象缩小到方法上,我们实现一个方法,试图阐明我们实现一个方法时,需要考虑的基本问题。大约如下: 参数返回值:参数和返回值取决于你想让用户如何调用你的方法条件检查:在繁琐和简洁之间寻找平衡异常处理:可恢复的异常用受检异常,致命异常用runtime方法的功能方法的副作用:对对象状态的影响!!!占位符!!!原创 2016-12-07 22:52:16 · 353 阅读 · 0 评论