Android学习之路
有朋友私信想给 Android 新手一些方向,谈不上指导——我自己也还在学。刚好有大学同学准备转行 Android、几乎从头开始,就以过来人的身份整理一份学习路线,希望少走些弯路。 一、硬件 电脑推荐 Mac。我不是果粉,Windows、Linux、Mac OS 都用过:Windows 上的开发工具…
有朋友私信想给 Android 新手一些方向,谈不上指导——我自己也还在学。刚好有大学同学准备转行 Android、几乎从头开始,就以过来人的身份整理一份学习路线,希望少走些弯路。 一、硬件 电脑推荐 Mac。我不是果粉,Windows、Linux、Mac OS 都用过:Windows 上的开发工具…
这是 Futurice 给 Android 开发者的一份实践清单:从 SDK 放置、Gradle 项目结构、敏感配置,讲到网络库选型、Fragment 管 UI、资源 XML 和 ProGuard。 按这些规范走,可以把「每个项目都要重新踩一遍」的重复劳动压下去;下文按原文条目展开,示例和目录树都保…
这篇是 Java IO 学习笔记加代码:从 File 对象的生成、创建、改名和属性测试,讲到拷贝、随机访问、字符流、键盘输入、过滤流、顺序流和对象串行化。 每个主题都配有完整可运行示例(包名 study.iostudy),覆盖 mkdir/createNewFile、FilenameFilter、F…
面向字节流时,最常用的是文件字节流:FileInputStream / FileOutputStream,按顺序读写本地磁盘文件。再往上套过滤流,就能按基本类型写二进制;最外层则是 System.in / System.out / System.err 三套标准流。 下面几个例子都在教材编号 10-…
字节流以字节为传输单位,读写 8 位数据。除了纯文本,还能处理图片、音频这类二进制文件。InputStream 和 OutputStream 是所有字节流的父类,同样都是抽象类。 程序里真正 new 出来的,一般是它们某个子类的对象;调用继承来的 read() / write(),就能对外设做输入输…
面向字符的输出流都是 Writer 的子类。和输入侧一样,Writer 是抽象类,真正写出文本要用 FileWriter、BufferedWriter 这些子类。 写文件时先构造输出流对象,再 write();带缓冲的写法还要在结束前 flush(),把缓冲区里剩下的字符真正落到文件上。 一、Wri…
字符流是按字符而不是按字节来读写的:源或目标通常是文本文件。java.io 里所有字符流的父类是 Reader 和 Writer,二者都是抽象类,实际工作要靠子类。 子类可以分成两类:直接对接数据源或目的地的叫节点流,在流上再做缓冲、转换等处理的叫处理流。本节先看面向字符的输入流。 一、Reader…
两个或两个以上线程要共享资源时,必须保证某一刻只有一条线程占用。这个过程叫同步(synchronization)。Java 在语言层面提供了支持。 关键概念是管程(也叫信号量 semaphore):一个互斥独占锁定,或称互斥体(mutex)。同一时刻只有一条线程能获得管程;其他试图进入已锁定管程的线…
同步方法能挡住其他线程同时进同一个对象,但还不够精巧。生产者一边造数据、消费者一边用,还要互相等对方干完——如果靠轮询死循环盯条件,会浪费大量 CPU。 Java 用 wait()、notify()、notifyAll() 做线程间通信。它们是 Object 的 final 方法,必须在 synch…
到目前为止只用到两条线程:主线程和一个子线程。程序可以按需要创建更多。下面这个例子创建了三个子线程 One、Two、Three。 每个 NewThread 在构造函数里 start(),从 5 数到 1,每次睡 1 秒。主线程用 sleep(10000) 睡十秒,确保自己最后结束。 线程 做什么 等…