自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 434 2

原创 升级数据库的最佳写法

保证在升级数据库的时候数据并不会丢失。模拟一个数据库升级的案例 第一版的程序要求非常简单,只需要创建一张Book 表。public class MyDatabaseHelper extends SQLiteOpenHelper { public static final String CREATE_BOOK = "create table Book (" + "id integer

2016-03-31 15:10:31 2731

原创 多线程03--线程同步之synchronized

3

2016-01-29 11:31:42 320

原创 多线程02--多线程安全问题

上一篇 多线程01–线程的创建和启动 使用实现Runnable接口的方式来创建线程,可以实现多个线程共享资源。class Dog implements Runnable { // 定义线程共享数据 private int t = 100; @Override public void run() { // TODO:死循环,暂不处理 whi

2016-01-29 11:31:03 309

原创 多线程01--线程的创建和启动

进程和线程? 一个进程就是一个“执行中的程序”,是程序在计算机上的一次运行活动。程序要运行,系统就在内存中为该程序分配一块独立的内存空间,载入程序代码和资源进行执行。程序运行期间该内存空间不能被其他进程直接访问。系统以进程为基本单位进行系统资源的调度和分配。 线程是进程内一次具体的执行任务。程序的执行具体是通过线程来完成的,所以一个进程中至少有一个线程。回忆一下 HelloWrold 程序中ma

2016-01-29 11:28:48 332

原创 设计模式--观察者模式

定义? 定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。观察者模式的作用是什么? 观察者模式的主要作用就是对象解耦,将观察者和被观察者完全隔离,只依赖于Observer和Observable抽象。观察者模式的简单实现 很多技术网站支持用户邮箱订阅,每周发布周报后会将优质的内容推送给订阅用户。 /** * 程序员是观察者

2016-01-27 16:47:37 362

原创 数据结构--二叉树

为什么使用二叉树? 二叉树结合了另外两中数据结构的优点:一种是有序数组,另一种是链表。在树中查找数据项的速度和在有序数组中查找一样快,并且插入和删除数据项的速度也和链表一样。在有序数组中插入或删除数据项太慢 当在有序数组中插入一个新数据项,就必须首先找到新数据项插入的位置,然后把所有比新数据项大的数据项向后移动一位,来给新数据项腾出空间。这样多次的移动很费时,平均来讲要移动数组中一半的数据项。在

2016-01-27 14:46:53 265

原创 ListView使用技巧

1.ListView的常用优化 1.1使用ViewHold模式提高效率 ViewHold模式充分利用了ListView的视图缓存机制,避免了每次在调用getView的时候都去通过findViewById实例化控件。在定义的Adapter中定义内部类ViewHolder ,并将布局中的框架作为成员变量 private class ViewHolder { public TextView h

2016-01-19 13:46:36 287

原创 关于字符串截取的一个小问题

需求:截取掉字符串最后一个逗号。 最开始想到的是用substring进行字符串的截取,当然如果可以直接这样操作就没有必要写这篇博客了。 下面是具体实现的代码StringBuilder sb = new StringBuilder(); String prefix = ""; if (disInfoList != null) { for (DisInfo disInfo : disInfoLi

2015-09-22 14:54:48 277

原创 java常用设计模式

1.单例设计模式 所谓单例设计模式简单说就是无论程序如何运行,采用单例设计模式的类永远只会有一个实例化对象产生。具体实现步骤如下: (1) 将采用单例设计模式的类的构造方法私有化(采用private修饰)。 (2) 在其内部产生该类的实例化对象,并将其封装成private static类型。 (3) 定义一个静态方法返回该类的实例。//饿汉式,一开始就加载 class Sing

2015-09-16 11:27:50 262

原创 Android欢迎页+引导页实现

需求分析: 程序安装后第一次启动: 启动页–>功能引导页–>应用主页 以后启动: 启动页–>应用主页 实现原理: 用SharedPreferences实现。 创建一个boolean的变量,默认值为true。 当判断这个变量是true的时候,说明是第一次运行,就跳转到另一个引导页面。 引导页面跳转到最后一张图片时,点击某按钮发生跳转事件,回到MainActivity,此时把变量的值改

2015-09-15 19:37:50 1152

原创 handler机制的原理

andriod提供了Handler 和 Looper 来满足线程间的通信。Handler先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(MessageExchange)。 1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的MessageQueue(消息队列)。 2)Handler: 可以构造Handler对象来与Looper沟通,以便push新消息到M

2015-09-14 14:00:40 307

原创 WeakReference的理解与使用

在Java里, 当一个对象o被创建时, 它被放在Heap堆里. 当GC运行的时候, 如果发现没有任何引用指向o, o就会被回收以腾出内存空间. 或者换句话说, 一个对象被回收, 必须满足两个条件: 1.没有任何引用指向它 ;2.GC被运行。 在现实情况写代码的时候, 我们往往通过把所有指向某个对象的referece置空来保证这个对象在下次GC运行的时候被回收。 Object c = new

2015-09-11 16:23:03 1619

原创 Volley 源码解析

1.功能介绍 Volley 是 Google 推出的 Android 异步网络请求框架和图片加载框架,特别适合数据量小,通信频繁的网络操作。 Volleyde的主要特点 (1). 扩展性强。Volley 中大多是基于接口的设计,可配置性强。 (2). 一定程度符合 Http 规范,包括返回 ResponseCode(2xx、3xx、4xx、5xx)的处理,请求头的处理,缓存机

2015-09-09 15:52:37 283

原创 Android学习笔记一

Android-Universal-Image-Loader是一个针对图片加载、缓存的开源项目 (1)cache主要是磁盘缓存及内存缓存预定的接口和常规实现类,包含的算法较多(并不复杂),如FIFO算法、LRU算法等。 (2)core是整个Image Loader的核心包,图片下载、适配显示,并向上层应用提供各种接口,默认模板,还包括很多关键枚举类、工具类。 (3)utils比较简单些,常规工

2015-09-08 15:54:00 361

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除