自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

陶程的博客

Keep the beginner's mind.

  • 博客(15)
  • 收藏
  • 关注

转载 [Android进阶]Android 开发最佳实践

Android 开发最佳实践从Futurice公司Android开发者中学到的经验。 遵循以下准则,避免重复发明轮子。若您对开发iOS或Windows Phone 有兴趣, 请看iOS Good Practices 和 Windows client Good Practices 这两篇文章。摘要使用 Gradle 和它推荐的工程结构把密码和敏感数据放在gradle.properties不要

2016-05-29 18:42:21 3171

转载 [Android进阶]Java、Android 内存泄漏总结

Java、Android 内存泄漏总结内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。内存泄漏大家都不陌生了,简单粗俗的讲,就是该被释放的对象没有释放,一直被某个或某些实例所持有却不再被使用导致 GC 不能回收。最近自己阅读了大量相关的文档资料,打算做个 总结 沉淀下来跟大家一起分享和学习,也给自己一个警示,以后 coding 时怎么避免这些情况,提高应用的体验和质量。我

2016-05-27 13:07:49 4874 5

转载 [算法]很特别的一个动态规划入门教程

转载自http://www.cnblogs.com/sdjl/articles/1274312.html通过金矿模型介绍动态规划 对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总是想不通为什么这种方法可行,这篇文章就是为了帮助大家理解动态规划,并通过讲解基本的01背包问题来引导读者如何去思考动态规划。本文力求通俗易懂,无异性,不让读者感到迷惑,引导读者去思考,所以如

2016-05-23 20:11:30 2897

原创 [Android进阶]Android性能优化

Android性能优化合理管理内存节制的使用Service如果应用程序需要使用Service来执行后台任务的话,只有当任务正在执行的时候才应该让Service运行起来。当启动一个Service时,系统会倾向于将这个Service所依赖的进程进行保留,系统可以在LRUcache当中缓存的进程数量也会减少,导致切换程序的时候耗费更多性能。我们可以使用IntentService,当后台任务执行结束后会自动

2016-05-23 12:10:11 10518 1

原创 [Android进阶]Android中使用的观察者模式

Android中使用观察者模式的代码有很多,比如最近很火的EventBus、RxAndroid等,都使用了观察者模式,原因是观察者模式观察者和被观察者之间是抽象耦合,应对业务变化,可以增强系统灵活性,可扩展性。我们很熟悉的BroadcastReceiver和ListView同样用到了观察者模式,当然ListView肯定用到了适配器模式。我们关心一下这两个是如何使用观察者模式的:首先在Android中

2016-05-15 18:43:33 1895

原创 [Java数据结构]从源码分析HashMap

HashMapHashMap和Hashtable的区别:Hashtable的大部分方法做了同步,HashMap没有,因此,HashMap不是线程安全的。Hashtable不允许key或者value使用null值,而HashMap可以。在内部算法上,它们对key的hash算法和hash值到内存索引的映射算法不同。HashMap的实现原理简单说,HashMap就是将key做hash算法,然后将h

2016-05-09 10:33:39 5827 4

原创 [算法]删除字符串中重复的字符

如何删除字符串中重复的字符问题描述: 删除字符串中重复的字符,例如,”good”去掉重复的字符串后就变成”god”。第一种方法: “蛮力法”,最简单的方法就是把这个字符串看作是一个字符数组,对该数组使用双重循环进行遍历,如果发现有重复的字符,就把该字符置为’\0’,最后再把这个字符数组中所有的’\0’去掉,此时得到的字符串就是删除重复字符后的目标字符串。代码如下:package 删除字符

2016-05-08 12:12:55 9721

原创 [算法]判断两个字符串是否由相同的字符组成

如何判断两个字符串是否由相同的字符组成题目描述: 由相同的字符组成是指组成两个字符串的字母以及各个字母的个数是一样的,只是排列顺序不同而已。例如”aaaabbc”与”abcbaaa”就由相同的字符组成的。方法一: 排序法,将两个字符串中的字符排序,比较两个排序后的字符串是否相等。若相等则表明它们是由相同的字符组成的,否则,表明他们是由不同的字符组成的。import java.util.A

2016-05-07 14:57:32 10608

原创 [算法]求栈中最小元素

如何用O(1)的时间复杂度求栈中最小元素解题思路: 我们经常会采用空间换取时间提高时间复杂度。我们可以使用两个栈结构,一个栈用来存储数据,另一个栈用来存储栈中的最小元素。思路如下:如果当前入栈的元素比原来栈中的最小值还小,则把这个值压入保存最小元素的栈中;在出栈时,如果当前入栈的元素恰好为当前栈中的最小值,保存最小值的栈顶元素也出栈,使得当前最小值变为其入栈之前的那个最小值。实现代码如下:pa

2016-05-07 09:46:03 3555

原创 [算法]如何实现栈

如何实现栈 采用数组和链表两种方式来实现栈数组实现栈,代码如下:package 如何实现栈;import java.util.Arrays;public class MyStack<E> { private Object[] stack; private int size; //数组中存储的个数 public MyStack(){ stack = ne

2016-05-07 09:19:49 2536

原创 [算法]判断一个链表是否有环

如何判断一个链表是否有环解题思路: 定义两个指针fast和slow,其中fast是快指针,slow是慢指针,二者的初始值都指向链表头,slow每前进一步,fast每次前进两步,两个指针同时向前移动,快指针每移动一次都要和慢指针比较,直到当快指针等于慢指针为止,就证明这个链表是带环的单向链表,否则,证明这个链表是不带环的循环链表(fast先行到达尾部为NULL,则为无环链表)。代码实现如下:pu

2016-05-06 21:05:43 2137

原创 [算法]实现单链表的反转

实现链表的反转解题思路: 为了正确反转一个链表,需要调整指针的指向。举例说明,例如i,m,n是三个相邻的结点,假设经过若干步操作,已经把结点i之前的指针调整完毕,这些结点的next指针都指向前面一个结点。现在遍历到结点m,当然需要调整结点的next指针,让它指向结点i,但需要注意的是,一旦调整了指针的指向,链表就断开了,因为已经没有指针指向结点n,没有办法再遍历到结点n了,所以为了避免指针断开,

2016-05-06 18:32:07 3303

原创 [算法]找出单链表中的倒数第k个元素

找出单链表中的倒数第k个元素解题思路: 为了求出链表中的倒数第k个元素,最容易想到的方法是首先遍历一遍单链表,求出整个单链表的长度n,然后将倒数第k个,转换为正数第n-k个,接下去遍历一次就可以得到结果。不过这种方法需要对链表进行两次遍历,第一次遍历用于求解单链表的长度,第二次遍历用于查找正数第n-k个元素。 如果沿从头至尾的方向从链表中的某个元素开始,遍历k个元素刚好到达链表尾,那么元素

2016-05-06 16:12:23 7922 1

原创 [数据结构]链表的基本操作

链表可以用任意一组存储单元来存储单链表中数据元素(存储单元可以是不连续的),而且,除了存储每个数据元素ai的值以外,还必须存储指示其直接后继元素的信息。这两部分信息组成的数据元素ai的存储映像称为结点。N个结点链在一起被称为链表,当结点只包含其后继结点的信息的链表就被称为单链表。链表定义如下数据类来存储结点信息:public class Node { Node next = null;

2016-05-06 12:19:24 3037

原创 [设计模式]23种设计模式

最近一直在读《研磨设计模式》,将自己的笔记写成Markdown格式,并且将代码都敲了一遍,并写上了注释,开源在了Github上,欢迎Star,持续更新。https://github.com/GeniusVJR/DesignMode_Java

2016-05-05 19:56:47 3221 1

空空如也

空空如也

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

TA关注的人

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