- 博客(16)
- 资源 (5)
- 收藏
- 关注
原创 View背后不为人知的勾当(二)--onDraw
内容太多,尚未完工,估计得写到这个周末 需要知道的问题 点线面和Paint图形变换,色彩混合,Shader,网格等16ms和掉帧问题SurfaceView和TextureView硬件加速1 关于onDraw1.1 16ms和掉帧的问题得知道16ms一帧的问题,如果渲染一帧超过16ms,如用了20ms渲染,下一帧的切换就来不及,这一帧就持续了32ms,就出现了掉帧,掉帧多了,用户就会感
2016-12-12 23:36:58
1739
原创 View背后不为人知的勾当(一)--自定义控件和测量过程
本节首先讲讲自定义控件套路,自定义属性,测量过程的问题,为了后面的几节能专注于实现特效,而不受本文这些惯用套路的影响特效系列的目录关于Draw关于动画关于滑动关于Layout要实现界面特效,首先得掌握:View的简单原理自定义属性measure过程这算是UI特效的周边技术,任何特效都得考虑这几个问题安卓特效的实现,需要借助以下四个技术点:draw动画滑动layout1 Vi
2016-12-11 23:27:08
821
原创 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
3484
原创 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
11685
原创 Java 7:Java集合从不懂到更不懂,不信来看
集合1 集合关系网关系网:数组 Arrays.asList就成了List接口Collection3个分支:List,Set,QueueList两个分支:Sequential(代表作是LinkedList)和RandomAccess(ArrayList,Vector,Stack) 用时要考虑是频繁插入,还是频繁访问LinkedList可以快速插入删除,因为只是节点的操作,但下标访问(随机访
2016-12-10 23:26:23
1475
1
原创 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
542
原创 Java 6-5:拒绝3P,拒绝黄赌毒!——安全性失败,同步访问
首先需要注意的是锁会让并行变为串行,但安全和效率,这两个之间没有折衷,安全第一,但我们要追求的必须是高效安全本文涉及到: 原子操作临界区锁信号量1 共享受限资源什么时候会出现共享受限资源的冲突? 有一份数据摆在这里,多个worker线程都对其进行修改,状态就可能会乱了 总之,每次访问一个资源时,从进去到出来,都要保证数据的一致性基本上所有保护共享受限资源的方法,都是序列化对受限资源的
2016-12-10 01:26:02
826
原创 Java 6-4:别看了,坑的就是你——活性失败-volatile
线程A对某变量值的修改,可能没有立即在线程B体现出来,称为活性失败。 注意下面这个例子,在PC和安卓上运行结果可能不一样(安卓可能不需要volatile)例子public class VolatileTest extends Thread { /** * 使用了volatile,则1秒后,子线程会退出循环,因为在主线程将isRunning置位为false */
2016-12-10 01:19:17
2661
原创 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
1674
原创 Java 6-2:收放自如,融汇贯通,让线程不再疯癫——线程的阻塞和关闭
本节重点说说线程什么时候会阻塞,如何关闭1 让出时间片Thread.yield(); 通知并建议线程调度器,我已经做完了主要工作,时间片你可以分给别人了 即使调用了这个,还是可能没有切换时间片,或者切换了,但是还是给了当前线程Thread.sleep(1000); TimeUnit.SECOND.sleep(1); 让当前线程进入睡眠状态,程序就阻塞在这里了 这个的表现应该是比yield良
2016-12-10 00:53:42
533
原创 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
582
原创 Java 5:方法设计
Java 5:方法设计本文把范围从类和对象缩小到方法上,我们实现一个方法,试图阐明我们实现一个方法时,需要考虑的基本问题。大约如下: 参数返回值:参数和返回值取决于你想让用户如何调用你的方法条件检查:在繁琐和简洁之间寻找平衡异常处理:可恢复的异常用受检异常,致命异常用runtime方法的功能方法的副作用:对对象状态的影响!!!占位符!!!
2016-12-07 22:52:16
365
原创 Java 4:类的行为和设计模式
Java 4:类的行为和设计模式本文想要说明的问题是,类需要一个良好的关系网来约束类之间的通信,在实现功能的同时,利用面向对象的特性,使模块达到对修改关闭,对扩展开放。 最近看到一句话,说组件化的程度,就是一个团队的技术实力的体现,确实有道理。下面会提到的概念: 继承:概念上的is-a组合:组合配合注入,看似简单,但其力量十分巨大设计模式!!!占位符!!!
2016-12-07 22:51:43
297
原创 Java 3:对象的通用行为
本文说的是类的通用行为,要定义一个类,首先考虑本文提到的几个问题0 前言类的分类:活动实体,如Thread,安卓的Activity 一个线程就是一个Thread对象,两个线程要相等,就得是同一个对象一个安卓界面就是一个Activity对象,两个界面要相等,就得是同一个对象值类,如Person 一个学生可能对应好几个对象,要判断相等,可不能依赖于两个是不是同一个对象Java的对象普通对象
2016-12-07 22:39:09
409
原创 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
318
原创 Java 1: 射基模式*$#%$#@射鸡摸式^%$%^ ! 设计模式!——对象管理
则不达的博客从这篇文章开始,我想说说我为什么写博客,其实之前也尝试过写博客,但都没有坚持下来,但这回找工作跳槽比较从容,再加上做安卓开发的这三年,都没有把知识体系好好整理一下,一直都是忙工作,正应了一个哥们说的那句话,一年经验重复了三年,当初定好的一天一点进步的目标也没有实现,所以为了给之前三年一个交代,也给之后三年一个好的开端,所以我从今天开始写文章,这些文章都是一边学一边整理,所以更像是一份笔记
2016-12-05 01:08:17
738
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人