Jermmy's Lazy Blog


  • 首页

  • 分类

  • 归档

  • 标签

计算机系统

发表于 2016-11-23 | 分类于 计算机系统 |

RAM & ROM

RAM(Read Access Memory)和ROM(Read Only Memory)是很多小白感到困惑的东西,只知道跟主存有关,傻傻分不清。

RAM分为SRAM和DRAM。DRAM就是通常用作主存的设备,速度快于普通硬盘,访问速度以ns计算,目前已经可以到几十ns。SRAM速度更快,价格更贵,所以通常用作缓存(Cache,一种读写速度比主存更快的设备,用于缓解CPU与主存之间的速度差异,CPU指令周期低于1个ns)。这两种设备都是靠电压驱动的,断电就无法保存数据。

ROM也是一种访问速度很快的设备,它与RAM的区别是,ROM在断电的情况下仍然可以保存数据。ROM分很多类型,比如PROM(可编程的ROM,只能编写一次)、EPROM(可编程1000次)。

Flash memory是基于EPROM的一种重要存储设备,在手机、电子照相机等设备中大量使用。SSD(固态硬盘)也是基于Flash memory的。

ROM设备中存储的程序通常称为固件(firmware)。计算机启动的时候,会先执行ROM中的固件程序。有些系统会在固件中提供了一系列读写函数(比如BIOS)。

阅读全文 »

Thinking in Java — 类型信息

发表于 2016-11-01 | 分类于 Java |

这一章将讨论Java是如何让我们在运行时识别对象和类的信息的。主要有两种方式:1、“传统的”RTTI,它假定我们在编译时已经知道了所有的类型;2、“反射”机制,它允许我们在运行时发现和使用类的信息。

阅读全文 »

Android:在SurfaceView上做放大镜效果

发表于 2016-10-23 | 分类于 Android |

一开始遇到这个需求的时候,觉得应该是一个再普通不过的功能,于是上网查了下怎么实现放大镜效果。果不其然,很快就google出一堆如何在ImageView或者其他View上实现放大镜的方法,但当我把同样的思路用在SurfaceView上时,却遇到一个极坑的问题。于是特意写这篇文章记录实现的思路。

简单起见,我们要实现的是下图展示的功能,当手指触及SurfaceView时,放大手指所指的位置,放大镜出现在手指左上方。

ezgif.com-video-to-gif
ezgif.com-video-to-gif

预备知识

  1. Android canvas基本用法,推荐这篇文章:

    http://blog.csdn.net/harvic880925/article/details/39080931

  2. SurfaceView的初级使用

阅读全文 »

Android生命周期的那些事

发表于 2016-10-15 | 分类于 Android |

这篇文章总结一下Android里面那些常用组件的生命周期,以及在项目中的一些简单应用。

Activity

Activity的生命周期

说起Activity的生命周期,很多人都会马上想起下面这张图:

Activity生命周期
Activity生命周期
阅读全文 »

Android内存泄漏那些事

发表于 2016-10-04 | 分类于 Android |

这篇博文总结一下最近开发中遇到的内存泄漏的场景,并提供一些我所能找到的解决方案。

静态全局类

说起静态全局类,在Android里面用的最多的要数全局单例类(单例模式)。大多数人在构造单例类的时候,都会毫不犹豫地使用这种模板:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Singleton {

private static Singleton instance = null;

private Context mContext;

public static Singleton getInstance(Context context) {
if (instance != null) {
return instance;
}
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton(context);
}
return instance;
}
}

private Singleton(Context context) {
this.mContext = context;
}


}
阅读全文 »

Thinking in Java — 容器类深入研究

发表于 2016-09-25 | 分类于 Java |

容器已经是现代编程语言必备的组件了。(注:由于一些常用容器的使用已经非常熟悉,因此本文着眼于我不熟悉的容器)

完整的容器分类法

下面这张图摘自《Thinking in Java》,是Java中容器类很好的概览图

full_container_taxonomy_thinking_in_java
full_container_taxonomy_thinking_in_java
阅读全文 »

Android Volley源码浅析

发表于 2016-09-21 | 分类于 Android |

Volley,中文翻译为「万箭齐发」,也就是适合大规模的小数据包发送的场景。Google 于 2013 年 I/O 大会上发布这个类库,试图弥补 UrlConnection 封装性太差的问题(Android 原生系统中用于网络请求的组件一般是 HttpUrlConnection 和 HttpClient 两种,后者适合 Android2.2 及以前的版本,但在 API23 开始便被舍弃了,前者适合于 Android2.3 及以上版本)。由于 Volley 自带异步线程回调机制,可以代替 AsyncTask 繁琐的接口,另外加上 Volley 的缓存功能,因此总体来说是一个大的改进。

阅读全文 »

Android-WebView加载非Assets目录下的文件

发表于 2016-09-13 | 分类于 Android |

背景

最近遇到这样一个需求:WebView里的文件需要定期更新,而且是在java层获取后台的json数据后,更新到原来的js文件中。由于之前app的html、js等文件都是放在Assets目录下的,所以最开始的想法当然是看能不能对Assets目录进行读写。google一番后,SO上有人给出了答复:You cannot write data’s to asset/Raw folder, since it is packed(.apk) and not expandable in size. 然后我出于好奇想知道apk安装后,这两个文件夹的资源会被存储在哪。于是便进入到data/data/packageName目录下,结果发现这两个目录相关的资源并不存在,不仅如此,res目录下的资源也不在这里。于是又google了一番,发现apk安装后,除了data/data/packageName目录下会有东西,在data/app目录下会有一个与该apk相关的文件,暂时不知道是什么,但十有八九就是跟res等资源有关的东西。

阅读全文 »

Thinking in Java — 并发

发表于 2016-09-10 | 分类于 Java |

今天温习一下Java多线程的知识(文中代码除非特别说明,否则均摘自《Thinking in Java》(第四版))。

Runnable,Thread的简单使用表过不谈,只总结一下不熟悉的知识点。

<br>

阅读全文 »

Android NDK-异常总结

发表于 2016-09-06 | 分类于 Android |

开发 NDK 时,由于大量用到指针等,在失去 Java 虚拟机保护(异常抛出)的情况下,常常面临崩溃闪退却不知道哪里出错的问题。更有甚者,这种情况还具有随机性,非常麻烦!本文记录一下我开发 NDK 时遇到的各种蛋疼问题,方便以后查找使用。

阅读全文 »
1…78910
Jermmy

Jermmy

In me the tiger sniffs the rose.

96 日志
19 分类
43 标签
GitHub
Links
  • 阮一峰
  • pluskid
© 2016 - 2020 Jermmy
由 Hexo 强力驱动
主题 - NexT.Muse