- 博客(92)
- 资源 (6)
- 收藏
- 关注
原创 Android自定义View——自由定制优惠券背景
1、功能介绍现在购物类的APP真的是数不甚数啊,经常可以在这些APP中看到优惠券的影子,今天我们就来实现一下优惠券的背景效果。实际开发中,如果我们想偷懒,直接用一张背景图作为优惠劵背景就OK了,今天我们手动来实现一下,其实实现起来还是比较简单的。效果图如下:边缘的样式可以自由定制,有两种边缘类型:半圆形和三角形。上面图中第一张左右两边边缘为三角形、上下边缘为半圆形,第二张左右两本是半圆形、上下两边
2016-07-11 08:00:33
14383
14
原创 【深入理解Java虚拟机】类加载机制
本文内容来源于《深入理解Java虚拟机》一书,非常推荐大家去看一下这本书。本系列其他文章:【深入理解Java虚拟机】Java内存区域模型、对象创建过程、常见OOM【深入理解Java虚拟机】垃圾回收机制1、类加载机制概述虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。在java中,类型的加载、连
2016-06-27 07:53:18
10085
3
原创 【深入理解Java虚拟机】垃圾回收机制
本文内容来源于《深入理解Java虚拟机》一书,非常推荐大家去看一下这本书。本系列其他文章:【深入理解Java虚拟机】Java内存区域模型、对象创建过程、常见OOM1、垃圾回收要解决的问题垃圾收集(Garbage Collection,GC),要设计一个GC,需要考虑解决下面三件事情:(1)哪些内存需要回收?(2)什么时候回收?(3)如何回收?哪些内存需要回收?根据《Java内存区域模型、对象创建过
2016-06-24 09:39:16
14008
2
原创 【深入理解Java虚拟机】Java内存区域模型、对象创建过程、常见OOM
本文内容来源于《深入理解Java虚拟机》一书,非常推荐大家去看一下这本书。最近开始看这本书,打算再开一个相关系列,来总结一下这本书中的重要知识点。呃呃呃,说好的那个图片请求框架呢~ 不要急哈,因为这个请求框架设计的内容还是比较广的,目前业余时间正在编写当中,弄好了之后就会放上来。在完成之前,咱还是先来学习一下其他知识。1、内存模型java虚拟机在执行java程序的过程中会把它说管理的内存划分为若
2016-06-22 10:34:46
7632
4
原创 Android异步任务AsyncTask的使用与原理分析
在上一篇文章《Android缓存机制&一个缓存框架推荐》中说到,在了解了Android缓存机制后我准备自己动手写一个LruCache和DiskLruCache二级缓存的轻量级的图片请求框架,在思考如何搭建这个框架时,纠结于用何种方式去下载图片,是直接new出一个线程呢,还是用看起来稍微高大上档次一点的AsyncTask异步任务来处理?思来想去,还是虚荣心作怪,还是用AsyncTask吧,正好这个工
2016-06-21 07:46:14
13748
2
原创 Android缓存机制&一个缓存框架推荐
1、先推荐一个轻量级缓存框架——ACache(ASimpleCache)ACache介绍:ACache类似于SharedPreferences,但是比SharedPreferences功能更加强大,SharedPreferences只能保存一些基本数据类型、Serializable、Bundle等数据,而Acache可以缓存如下数据:普通的字符串、JsonObject、JsonAr
2016-06-17 07:53:12
61845
4
原创 Java笔试面试题整理第八波
本系列整理Java相关的笔试面试知识点,其他几篇文章如下: Java笔试面试题整理第七波 Java笔试面试题整理第六波 Java笔试面试题整理第五波 Java笔试面试题整理第四波 Java笔试面试题整理第三波 Java笔试面试题整理第二波 Java笔试面试题整理第一波1、运算符相关What results from the f
2016-06-14 11:07:41
18173
原创 Android实现滑动的几种方法
下面通过一个例子来总结实现滑动的几种方式,例子的主要功能就是让我们的自定义View能够随着手指的移动而移动。布局文件如下:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width
2016-06-13 15:17:17
17144
5
原创 【Android面试要点系列一】
1、广播的两种注册方法,有什么区别广播接受者BroadcastReceiver通过注册自己感兴趣的广播意图,当有该广播发出时,我们自定义的BroadcastReceiver就能够接收到该广播,进行我们自己的逻辑处理。一个简单的自定义BroadcastReceiver如下:public class BroadcastReceiverTest extends BroadcastReceiv
2016-06-12 20:39:32
6300
2
原创 【常用算法思路分析系列】与二分搜索相关高频题
本文是【常用算法思路分析系列】的第五篇,总结二分搜索相关的高频题目和解题思路。本文分析如下几个问题:1、求数组局部最小值问题;2、元素最左出现的位置;3、循环有序数组求最小值;4、最左原位;5、完全二叉树计算结点数;6、快速N次方。本系列前四篇导航:【常用算法思路分析系列】排序高频题集【常用算法思路分析系列】字符串高频题集【常用算法思路分析系列】栈和队列高频题集(修
2016-06-12 16:36:18
3986
5
原创 Android Scroller大揭秘
本文内容有:(1)scrollTo()、scrollBy()的讲解;(2)Scroller类的讲解。在学习使用Scroller之前,需要明白scrollTo()、scrollBy()方法。一、View的scrollTo()、scrollBy()scrollTo、scrollBy方法是View中的,因此任何的View都可以通过这两种方法进行移动。首先要明白的是,scrollTo、scrollBy滑动的是View中的内容(而且还是整体滑动),而不是View本身。我们的滑动控件如SrollVi
2016-06-06 07:48:20
10311
2
原创 【常用算法思路分析系列】链表相关高频题集
本文是【常用算法思路分析系列】的第四篇,总结链表相关的高频题目和解题思路。本文分析如下几个问题:1、环形链表的差值问题;2、只能访问单个结点的删除问题;3、链表的分化;4、打印两个链表的公共部分;5、把链表的每k个结点逆序;6、删除链表中指定结点;7、判断链表是否为回文结构;8、复杂链表的复制;9、判断链表是否有环;10、判断两个无环链表是否相交;11、判断两个有环链表是否相交;12、判断两个链表
2016-05-24 10:45:28
7407
2
原创 【常用算法思路分析系列】栈和队列高频题集(修改版)
本文是【常用算法思路分析系列】的第三篇,分析栈和队列相关的高频题目。本文分析:1、可查询最值的栈;2、用两个栈实现队列的功能;3、反转栈中元素;4、排序栈中元素;5、滑动窗口问题。本系列前两篇导航:【常用算法思路分析系列】排序高频题集【常用算法思路分析系列】字符串高频题集1、可查询最值的栈定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
2016-05-21 11:00:12
7798
2
原创 Service要点全解析
1、Service概述Service的主要作用是,让系统可以在后台干一些不与用户交互的操作,这些操作可能会比较耗时,比如去下载一些网络资源等;也可能是一项长期运行的工作,比如说监听电话来电、播放音乐等。初听起来,Service与线程Thread很像,但Service和Thread完全是两个不同的东西啊。(1)Service不是运行在一个独立的进程中,它和我们的应用程序在同一个进程中
2016-05-20 17:51:51
8557
3
原创 Activity与Fragment易混点归纳
Android开发中Activity和Fragment是非常重要的两个知识点,这里我们就分别归纳一下,在使用Activity和Fragment时需要注意的一些事项,特别是对于Fragment,在对其进行管理时我们要选择好的一些方式。一、Activity要点Activity负责展示UI给用户,负责和用户的交互操作。本部分主要对Activity的生命周期、如何保存状态信息、如何讲一个A
2016-05-19 09:00:10
16316
7
原创 【常用算法思路分析系列】字符串高频题集
本文是【常用算法思路分析系列】的第二篇,分析字符串相关的高频题目。第一篇是关于排序相关的高频题,还没有看的同学请移步:【常用算法思路分析系列】排序高频题集。本文分析的高频题目有,1、KMP字符匹配;2、判断是否为变形词;3、旋转词;4、字符串逆序调整;5、字符串部分整体交换;6、字符拼接得到最小字典序字符串;7、空格替换;8、合法括号序列判断;9、最长无重复字符子串。对于两棵彼此独立的二叉树A和B,请编写一个高效算法,检查A中是否存在一棵子树与B树的拓扑结构完全相同,即给定两棵二叉树的头结点A和B,请返
2016-05-17 08:08:14
9940
3
原创 【常用算法思路分析系列】排序高频题集
最近在牛客上整理常用的一些算法思路,【常用算法思路分析系列】主要是针对一些高频算法笔试、面试题目的解题思路进行总结,大部分也给出了具体的代码实现,本篇文章是对排序相关题目的思路分析。(1)对一个基本有序的有序的数组排序,选择哪种排序算法?(2)判断数组中是否有重复值,要求空间复杂度为O(1);(3)把两个有序数组合并成一个数组,第一个数组空间正好可以容纳两个数组的元素;(4)荷兰国旗问题;(5)有序矩阵(二维数组)查找;(6)最短排序子数组:对于一个数组,请设计一个高效算法计算需要排序的最短子数组的长度;(
2016-05-16 07:56:40
6965
3
原创 Java笔试面试题整理第七波
1、super的作用、transient关键字用法、构造方法、java NIO、for和foreach比较 在Java中super指代父类对象(直接父类),也就是说,super相当于是一个直接new出来的父类对象,所以可以通过它来调用父类的那些非private修饰的变量、方法(对于我们普通new出来的对象来说,也就只能访问那些非private的成员变量、方法了,这里的访问是指通过“对象名.变量名或方法名”的形式)。所以,super这个对象也就是一个普通对象,同样遵循访问控
2016-05-13 08:43:29
15072
11
原创 我眼中的KMP
KMP是用于字符匹配的一个常用算法。next数组里面存放的是要查找的字符串前i个字符串的所有前缀、后缀相等的公共串中,最大的长度值。比如需要查找的一个子串ababcd,next[0]表示子串中前1个字符串即a的前缀和后缀中相等字符串的最大长度,因为a的前缀和后缀没有,故next[0] = 0;对于next[2],即先求出子串aba的前缀和后缀出来,前缀为a,ab,后缀有ba,a,相等的公共串为a,长度为1,因此next[2] = 1;依次可以求出。
2016-05-12 10:02:56
6636
5
原创 [大、小根堆应用总结一]堆排序的应用场景
前言 在整理算法题的时候发现,大根堆(小根堆)这种数据结构在各类算法中应用比较广泛,典型的堆排序,以及利用大小根堆这种数据结构来找出一个解决问题的算法最优解。因此,我打算单独将关于堆的应用独立总结出来,后面每遇到一种跟堆结构相关的应用都放到这个目录下。堆的定义 n个关键字序列L[1…n]称为堆,当且仅当该序列满足: 1. L(i)<=L(2i)且L(i)<=L(2i+1)或
2016-05-10 09:53:55
12561
2
原创 Java笔试面试题整理第六波(修正版)
1、线程池ThreadPool相关在java.util.concurrent包下,提供了一系列与线程池相关的类。合理的使用线程池,可以带来多个好处:(1)降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗;(2)提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行;(3)提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低
2016-05-06 13:02:54
8713
原创 Java笔试面试题整理第五波
1、实现多线程的两种方法实现多线程有两种方法:继承Thread和实现Runnable接口。继承Thread:以卖票为例: public class MyThread extends Thread { private static int COUNT = 5; private int ticket = COUNT; private String name
2016-05-05 11:58:50
9145
2
原创 [剑指Offer]把数组排成最小的数
题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。输入int[] numbers:输入正整数数组输出组合之后最小的数思路这个题目类似于字典序的问题,而在这里,是比较两个数字组合之后的大小。即对于数字a和b,它们之间的组合有ab和ba两种,要求我们打印出最小的一个组合数
2016-05-03 10:01:29
6351
3
原创 [剑指Offer]最小的K个数
题目描述 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。输入 int[] input:待搜索的数组 int k:需要找出最小的数量输出 当k大于input长度时,返回空(非null) 当k小于input长度时,返回input中最小的k个数字思路一要求数组中最小的k个数,最容易想到的就是利用冒泡排
2016-04-29 14:29:06
9881
原创 [剑指Offer]二维数组中的查找
题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 输入描述 array: 待查找的二维数组 target:查找的数字输出描述 查找到返回true,查找不到返回false思路一查找的方法一般就是顺序查找、二分查找、哈希表查找、二叉排序树查找。根据该
2016-04-29 11:24:13
5403
2
原创 Java笔试面试题整理第四波
1、HashMap、HashTable、ConcurrentHashMap的区别 【参考:http://www.cnblogs.com/carbs/archive/2012/07/04/2576995.html】 (关于HashMap的分析,在第三篇总结《Java笔试面试题整理第三波》中的hashCode有分析,同样在这篇中有关于Java容器的介绍。HashMap和HashTa
2016-04-28 15:40:56
17989
6
原创 [剑指Offer]数组中重复的数字
题目描述:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。 思路一: 根据题目描述,数组里面的值范围在0~n-1,此时就可以利用数组的值作为我们数组的下标,
2016-04-26 17:20:18
3096
1
原创 Java笔试面试题整理第三波
1、String的split(String regex)方法参数注意点使用这个方法时,当我们直接以“.”为参数时,是会出错的,如:String str = "12.03";String[] res = str.spilt("."); //出错!!!此时,我们得到的res是为空的(不是null),即str = [];因为String的split(String regex)根据给定
2016-04-26 09:41:56
14954
6
原创 Java笔试面试题整理第二波
1、List遍历时删除的几种方式比较1.1、会报错的删除方式:(1)在Iterator遍历时使用list删除 Iterator it = list.iterator(); while(it.hasNext()){ String item = it.next(); list.remove(item); //报错!
2016-04-20 13:54:41
8989
原创 Java笔试面试题整理第一波
1、Java变量Java中主要有如下几种类型的变量局部变量类变量(静态变量)-- 属于类成员变量(非静态变量)-- 属于对象2、关于枚举package com.scu.lly;public class EnumTest { /** * 颜色枚举 */ enum ColorEnum{
2016-04-14 15:04:29
24974
3
转载 这些小工具让你的Android 开发更高效
在做Android 开发过程中,会遇到一些小的问题,虽然自己动手也能解决,但是有了一些小工具,解决这些问题就得心应手了,今天就为大家推荐一下Android 开发遇到的小工具,来让你的开发更高效。VysorVysor 是一个可以将手机的屏幕投影到电脑上,当然也可以操作,当我们做分享或者演示的时候,这个工具起到了作用。Vector AssetAn
2016-04-10 09:32:24
2271
原创 自定义ViewGroup--浮动标签的实现
前面在学习鸿洋大神的一些自定义的View文章,看到了自定义ViewGroup实现浮动标签,初步看了下他的思路以及结合自己的思路完成了自己的浮动标签的自定义ViewGroup。目前实现的可以动态添加标签、可点击。效果图如下:1、思路首先在onMeasure方法中测量ViewGroup的宽和高,重点是处理当我们自定义的ViewGroup设置为wrap_content的情况下,如
2016-04-08 11:21:20
3413
4
原创 Android自定义View或ViewGroup的流程
对于onMeasure()方法-->不论是View还是ViewGroup,onMeasure方法其实都是在测量自身的宽和高,只是对于ViewGroup来讲,当该ViewGroup的父容器为其设置的计算模式不是MeasureSpec.EXACTLY时(即自己设置的是wrap_content),该ViewGroup没法直接测量出自身宽和高,必须要让它的子View自己先去测量自己,也就是为啥此时需要在onMeasure中调用measureChildren()了,当调用了measureChildren后子View的
2016-04-07 21:09:19
4307
转载 Android WebView的Js对象注入漏洞解决方案
最近在做一个项目过程中,发现了一个很严重的安全漏洞,这个漏洞是乌云平台(http://www.wooyun.org)报告出来的。1,使用场景我们很多时候要使用WebView来展示一个网页,现在很多应用为了做到服务端可控,很多结果页都是网页的,而不是本地实现,这样做有很多好处,比如界面的改变不需要重新发布新版本,直接在Server端修改就行了。用网页来展示界面,通常情况下都或多或少都
2016-04-04 11:38:19
1338
原创 Android事件分发机制总结
理解事件的分发机制,需要对View和ViewGroup事件的分发分别探讨。View和ViewGroup的区别,一个View控件是指它里面不能再包含子控件了,常见的如TextView、Button、ImageView等,而ViewGroup是继承自View的,但是它里面可以包含一些子控件,包括View或者嵌套的ViewGroup,常用的大部分布局都是ViewGroup组件,如LinearLayout
2016-03-27 20:59:29
2635
1
转载 Android自定义属性,format详解
1. reference:参考某一资源ID。 (1)属性定义: background" format = "reference" /> (2)属性使用: android:layout
2016-01-20 20:41:19
1504
转载 【Android开发经验】APP的缓存文件到底应该存在哪?看完这篇文章你应该就自己清楚了
只要是需要进行联网获取数据的APP,那么不管是版本更新,还是图片缓存,都会在本地产生缓存文件。那么,这些缓存文件到底放在什地方合适呢?系统有没有给我们提供建议的缓存位置呢?不同的缓存位置有什么不同呢?今天这篇文章就是主要来说明这个问题的。 首先,我们要知道,在Android手机里面,缓存的位置分为两类,一类是Internal Storage,即内部存储,另外一类是External S
2016-01-20 10:31:27
27574
1
转载 Android 漂亮的UI控件
里面很多实用、漂亮的UI控件https://github.com/wasabeef/awesome-android-ui
2016-01-20 09:55:30
5624
1
原创 Android绘制时钟
最近在学View相关的知识,对Canvas和Paint类有了初步了解,看到别人弄了一个会走动的时钟,自己也打算给弄上一个,算是巩固一下相关知识。首先来分析一下,要绘制出一个时钟,要绘制哪几部分:时钟的大圆、圆上的刻度线、圆外的数字、圆中心处的圆点以及三个时钟指针。既然明白了要绘制的东西,下面只需要想办法来实现即可。(1)绘制时钟的大圆这个最简单,只要确定好圆
2016-01-19 16:26:20
7560
1
原创 极光推送JPush客户端与服务器端的集成
一、应用场景 有些情况下,我们项目的服务器端需要“自己”拥有推送消息到手机客户端的能力,比如,一些商家端的APP应用,当用户下单后,我们的后台系统需要即时的通知到商家APP端,这就要求我们的后台系统拥有推送功能。最经济便捷的一种方式就是服务器端集成一套第三方的推送方案。说到第三方的推送平台,极光推送就是不错的选择。 二、推送流程 在我们服务器端集
2015-12-11 17:48:52
15135
Android Scroller练习-仿ViewPager效果
2016-06-05
Android绘制时钟
2016-01-19
极光推送JPush服务器端集成SDK
2015-12-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人