- 博客(15)
- 收藏
- 关注
原创 github提交本地代码
1.复制git地址,eg: https://github.com/zhushi91/BannerDemo.git。打开git bash切换到项目工程目录下,git clone https://github.com/zhushi91/BannerDemo.git把远程版本库克隆到本地。2.将远程文件目录下的所有文件复制到上一层目录中,注意.git是一个隐藏目录。复制完之后把空文件夹删除。
2016-05-06 10:09:55 447 2
原创 升级数据库的最佳写法
保证在升级数据库的时候数据并不会丢失。模拟一个数据库升级的案例 第一版的程序要求非常简单,只需要创建一张Book 表。public class MyDatabaseHelper extends SQLiteOpenHelper { public static final String CREATE_BOOK = "create table Book (" + "id integer
2016-03-31 15:10:31 2744
原创 多线程02--多线程安全问题
上一篇 多线程01–线程的创建和启动 使用实现Runnable接口的方式来创建线程,可以实现多个线程共享资源。class Dog implements Runnable { // 定义线程共享数据 private int t = 100; @Override public void run() { // TODO:死循环,暂不处理 whi
2016-01-29 11:31:03 320
原创 多线程01--线程的创建和启动
进程和线程? 一个进程就是一个“执行中的程序”,是程序在计算机上的一次运行活动。程序要运行,系统就在内存中为该程序分配一块独立的内存空间,载入程序代码和资源进行执行。程序运行期间该内存空间不能被其他进程直接访问。系统以进程为基本单位进行系统资源的调度和分配。 线程是进程内一次具体的执行任务。程序的执行具体是通过线程来完成的,所以一个进程中至少有一个线程。回忆一下 HelloWrold 程序中ma
2016-01-29 11:28:48 345
原创 设计模式--观察者模式
定义? 定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。观察者模式的作用是什么? 观察者模式的主要作用就是对象解耦,将观察者和被观察者完全隔离,只依赖于Observer和Observable抽象。观察者模式的简单实现 很多技术网站支持用户邮箱订阅,每周发布周报后会将优质的内容推送给订阅用户。 /** * 程序员是观察者
2016-01-27 16:47:37 374
原创 数据结构--二叉树
为什么使用二叉树? 二叉树结合了另外两中数据结构的优点:一种是有序数组,另一种是链表。在树中查找数据项的速度和在有序数组中查找一样快,并且插入和删除数据项的速度也和链表一样。在有序数组中插入或删除数据项太慢 当在有序数组中插入一个新数据项,就必须首先找到新数据项插入的位置,然后把所有比新数据项大的数据项向后移动一位,来给新数据项腾出空间。这样多次的移动很费时,平均来讲要移动数组中一半的数据项。在
2016-01-27 14:46:53 273
原创 ListView使用技巧
1.ListView的常用优化 1.1使用ViewHold模式提高效率 ViewHold模式充分利用了ListView的视图缓存机制,避免了每次在调用getView的时候都去通过findViewById实例化控件。在定义的Adapter中定义内部类ViewHolder ,并将布局中的框架作为成员变量private class ViewHolder { public TextView h
2016-01-19 13:46:36 301
原创 关于字符串截取的一个小问题
需求:截取掉字符串最后一个逗号。 最开始想到的是用substring进行字符串的截取,当然如果可以直接这样操作就没有必要写这篇博客了。 下面是具体实现的代码StringBuilder sb = new StringBuilder();String prefix = "";if (disInfoList != null) { for (DisInfo disInfo : disInfoLi
2015-09-22 14:54:48 286
原创 java常用设计模式
1.单例设计模式 所谓单例设计模式简单说就是无论程序如何运行,采用单例设计模式的类永远只会有一个实例化对象产生。具体实现步骤如下: (1) 将采用单例设计模式的类的构造方法私有化(采用private修饰)。 (2) 在其内部产生该类的实例化对象,并将其封装成private static类型。 (3) 定义一个静态方法返回该类的实例。//饿汉式,一开始就加载class Sing
2015-09-16 11:27:50 270
原创 Android欢迎页+引导页实现
需求分析: 程序安装后第一次启动: 启动页–>功能引导页–>应用主页 以后启动: 启动页–>应用主页 实现原理: 用SharedPreferences实现。 创建一个boolean的变量,默认值为true。 当判断这个变量是true的时候,说明是第一次运行,就跳转到另一个引导页面。 引导页面跳转到最后一张图片时,点击某按钮发生跳转事件,回到MainActivity,此时把变量的值改
2015-09-15 19:37:50 1165
原创 handler机制的原理
andriod提供了Handler 和 Looper 来满足线程间的通信。Handler先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(MessageExchange)。1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的MessageQueue(消息队列)。 2)Handler: 可以构造Handler对象来与Looper沟通,以便push新消息到M
2015-09-14 14:00:40 316
原创 WeakReference的理解与使用
在Java里, 当一个对象o被创建时, 它被放在Heap堆里. 当GC运行的时候, 如果发现没有任何引用指向o, o就会被回收以腾出内存空间. 或者换句话说, 一个对象被回收, 必须满足两个条件: 1.没有任何引用指向它 ;2.GC被运行。在现实情况写代码的时候, 我们往往通过把所有指向某个对象的referece置空来保证这个对象在下次GC运行的时候被回收。 Object c = new
2015-09-11 16:23:03 1634
原创 Volley 源码解析
1.功能介绍 Volley 是 Google 推出的 Android 异步网络请求框架和图片加载框架,特别适合数据量小,通信频繁的网络操作。 Volleyde的主要特点 (1). 扩展性强。Volley 中大多是基于接口的设计,可配置性强。 (2). 一定程度符合 Http 规范,包括返回 ResponseCode(2xx、3xx、4xx、5xx)的处理,请求头的处理,缓存机
2015-09-09 15:52:37 292
原创 Android学习笔记一
Android-Universal-Image-Loader是一个针对图片加载、缓存的开源项目 (1)cache主要是磁盘缓存及内存缓存预定的接口和常规实现类,包含的算法较多(并不复杂),如FIFO算法、LRU算法等。 (2)core是整个Image Loader的核心包,图片下载、适配显示,并向上层应用提供各种接口,默认模板,还包括很多关键枚举类、工具类。 (3)utils比较简单些,常规工
2015-09-08 15:54:00 369
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人