- 博客(350)
- 资源 (60)
- 收藏
- 关注
原创 字符串的排列
题目输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。解析我们可以把字符串看成由两个部分组成:第一部分为它的第一个字符,第二部分为后面的所有字符。如此就可以递归。 当然递归的时候一定不要忘了回溯。结果代码#include<iostream>using namespace std;vo
2017-03-23 19:23:29 598
原创 和为s的两个数字
参考《剑指Offer》题目输入一个递增排序的数组和一个数字s,在数组中查找两个数,是的它们的和正好是s。如果有多对数字的和等于s,输出任意一对即可。解析分别记录数组的最小的和最大的两个数,由于数组本身是递增的,即数组第一个数和最后一个数。 如果两个数的和大于sum,那么后面一个数就向前挪,如果两个数的和小于sum,那么前面一个数就向后挪。如果前后两个数挪到了同一个位置,就表示不存在这样一个和。代
2017-03-23 18:39:07 706
翻译 Java Object 之hashCode
官方参考:int hashCode () Returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided by HashMap.The general contract of hashCode is:Whenever it
2017-03-23 16:28:20 866 1
原创 FragmentTransaction使用全解
前言之前已经写过用Fragment做主界面以及Fragment与Activity通信的文章。两篇文章如下: ndroid viewpager+fragment做主界面(超容易理解的demo!) android Fragment与Activity交互,互相发数据(附图详解)对于Fragment还剩FragmentTransaction没有具体讲到,此篇文章就讲一下FragmentTransacti
2017-03-03 18:01:27 24479
原创 HandlerThread的使用以及原理
HandlerThread 如果已经理解Handler,Loop,MessageQueue的工作原理看此篇文章会非常简单,若没有了解的读者,可以看下面的文章: Handler类和Handler,Loop,MessageQueue的工作原理首先我们先看一下官方的描述: Handy class for starting a new thread that has a loo...
2017-02-28 16:19:34 26827 2
原创 用Scroller完成一个简单的ViewPager
前言ViewPager是我们常用的控件之一,此篇文章我们用Scroller等知识实现一个简单的ViewPager。效果:(源码在文章结尾)涉及知识点onMeasure和onLayout此点若不了解可以参考郭霖前辈的文章: Android视图绘制流程完全解析,带你一步步深入了解View(二)事件分发机制此点可以参考笔者文章: 完全理解android事件分发机制scrollTo和scrollBys
2017-02-23 16:22:10 1300 1
原创 完全理解android事件分发机制
前言之前笔者其实已经写过事件分发机制的文章:快速理解android事件传递拦截机制概念 但是,现在看来其实更像是一篇知识概括,多处可能未讲清楚,于是打算重写事件分发,用一篇文章大致讲清楚。 首先,形式上笔者最先思考的是使用源码,此者能从原理上讲解分发机制,比起侃侃而谈好得多。但是大量的源码往往会让新手产生畏惧难以理解,于是笔者最终还是打算主要使用实例log输出来让读者理解android事件分发。
2017-01-12 10:04:06 4155 4
原创 SharePreferences源码分析(commit与apply的区别以及原理)
前提概要上一篇文章SharePreferences源码分析(SharedPreferencesImpl),笔者分析了SharedPreferencesImpl的原理,然而结尾有读者评论说想通过源码理解一下commit()与apply()的区别。由于上篇文章已经发布,就不特地加长篇幅了,在此新启一篇分析一下两者的区别。 如果对SharedPreferencesImpl的原理还是完全不了解的建议...
2016-12-25 20:08:53 7219 3
原创 SharePreferences源码分析(SharedPreferencesImpl)
SharePreferences的基本使用在Android提供的几种数据存储方式中SharePreference属于轻量级的键值存储方式,以XML文件方式保存数据,通常用来存储一些用户行为开关状态等,一般的存储一些常见的数据类型。public class MainActivity extends AppCompatActivity { @Override prote...
2016-12-24 12:12:18 4302 5
原创 归并排序-数组中的逆序对
参考《剑指Offer》题目:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。输入:每个测试案例包括两行: 第一行包含一个整数n,表示数组中的元素个数。其中1 <= n <= 10^5。 第二行包含n个整数,每个数组均为int类型。输出:对应每个测试案例,输出一个整数,表示数组中的逆序对的总数。样例输入:4 7 5 6
2016-12-18 09:05:03 1323
原创 ListView的两次测量(源码分析)
前言ListView是Android开发者最常见的控件之一,但是真的很少有人会去思考他是如何实现的,包括笔者也是。 最近有学长正好问到这个问题,笔者当场懵逼。 于是痛定思痛,决定阅读其源码,了解一下ListView的测量原理。一方面是提高自己阅读源码的自学能力,另一方面是打算让自己对View的测量的理解更进一步。进入正题在此,不得不提一个概念: 任何一个View,在展示...
2016-12-17 13:34:53 2544
原创 反转链表
参考《剑指Offer》题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。链表定义如下:struct ListNode{ int m_nkey; ListNode* m_pNext;};要点1、链表的建立中由于需要改变头指针指向的值,所以要用双重指针。 2、反转的逻辑主要是让后面结点指向前面的结点,但是如果仅仅这样操作,链表就断了,无法继续向后操作
2016-12-16 11:32:53 767
原创 求第1500个丑数
参考《剑指Offer》题目:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。求按从小到大的顺序的第1500个丑数。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。分析常规解法第一反应,我们肯定从1开始遍历,一直到找到第1500个丑数为止,如下:bool isUgly(int number) { while (number%2==0
2016-12-14 16:22:33 6395
原创 ASP.NET 电影票信息的增删查改
题目1、使用Code First技术创建一个Movie数据模型。public class Movie { public int ID { get; set; } //电影编号 public string Title { get; set; } //电影名称 public DateTime ReleaseDate { get; set
2016-12-14 09:49:53 1707
原创 斐波那契数列第n项的高效解法
参考书籍《剑指Offer》常见解法谈及斐波那契数列,我们直接就可以想到f(n)=f(n-1)+f(n-2)。于是做出如下解:long long Fibonacci(unsigned int n){ if(n<=0) return 0; if(n==1) return 1; return Fibonacci(n-1)+Fibonacci(n-
2016-12-13 09:21:13 5708 1
原创 android LruCache源码解析
LruCacheLRU为最近最少使用算法,LruCache顾名思义即为最近最少使用算法下的缓存机制。 LRU的目的是为了加快最近经常使用的数据从内存中取出的速度。在android中LruCache在图片缓存中频繁使用到,了解它绝对是必要的。Lru算法实现首先当然是看 LruCache这个类的源码,我们很容易发现LruCache类中仅仅是get,put等供开发者使用的方法,并未...
2016-11-30 19:59:57 1048
原创 ASP.NET 个人信息注册页面,并跳转显示
题目新建一个MVC项目,利用HTML、CSS、JS、jQuery、Ajax、jQuery UI等技术设计一个个人信息注册页面。当点击“提交”按钮时,跳转到新的页面显示录入信息。 基本要求: 用户名为6-10个小写字母(小写使用正则式验证,且用户名不能为“wustzz” –用Ajax技术来检测);密码为6位数字,确认密码不一致时有提示;籍贯使用级联(jquery实现);Email必须符合Em
2016-11-24 09:14:49 14793 3
原创 一句话弄懂常见二叉树类型
满二叉树除最后一层无任何子节点外,每一层上的所有结点都有两个子结点二叉树。 完全二叉树一棵二叉树至多只有最下面的一层上的结点的度数可以小于2,并且最下层上的结点都集中在该层最左边的若干位置上,则此二叉树成为完全二叉树。 平衡二叉树它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树 二叉搜索树它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不
2016-11-22 14:55:27 16694
原创 android socket聊天室——也不仅仅是聊天室
前提概要笔者很久之前其实就已经学习过了socket,当然也是用socket做过了聊天室,但是觉得此知识点比较一般,并无特别难的技术点,于是也并未深究。 然而近期一个项目中对socket的使用却让笔者感觉socket强大无比,可以实现诸多功能。个人Socket体验项目主要有关智能家居,需要实现多台手机同时对灯进行操作(开或者关),主要需要实现以下几点: 1、进入界面时获取所有灯的...
2016-11-21 16:26:32 10774 21
原创 android自定义View “android.view.InflateException: Binary XML file line # : Error inflating class"
异常: Caused by: android.view.InflateException: Binary XML file line #82: Error inflating class com.example.new_smartoffice.view.ThreeButtonItem笔者异常如上,具体意思大概就是说XML布局的82行有错,错误就出在笔者的自定义布局上面。但是笔者检查了代码好几遍
2016-11-08 21:39:01 6614
原创 算法基础-字符移位
题目小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。 你能帮帮小Q吗?输入描述: 输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.输出描述: 对于每组数据,输出移位后的字符串。输入例子: AkleBiCeilD输出例子: kleieilABCD代码:(题目比较简单,就不带分析加长
2016-10-30 18:29:42 1242
原创 最大公共子串-构造回文
题目给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢? 输出需要删除的字符个数。输入描述:输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.输出描述:对于每组数据,输出一个整数,代表最少需要删除的字符个数。输入例子:abcdagoogle输出例子:22解题思路1、把获取的字符串逆向转换成另一个字符串,两个字符串中查
2016-10-30 18:12:49 974
原创 android Activity A和B互相跳转 生命周期的变化
前提概要此题出自笔者网上看到的一道面试题,原题如下:Activity A 跳转到 Activity B,生命周期的执行过程是啥?虽然笔者专门花时间了解过Activity生命周期以及启动模式等等,但是一下子问我这个跳转的生命周期还真有点不确定,于是,笔者就做了一个demo,彻底了解了一下Activity之间互相跳转的时候生命周期的变化。打开APP,进入ActivityA生命周期如下:Activity
2016-10-25 15:22:45 13851
原创 android 实现FlowLayout 流线布局(自定义ViewGroup)
项目目的1、深化自定义View的概念 2、将MeasureSpec、View的绘制流程、Layoutparams等分散的知识点整合成一个demo。项目灵感笔者经验也是有限,此文章主要借鉴张鸿洋前辈的博客。 原文地址:http://blog.csdn.net/lmj623565791/article/details/38352503项目预览(源码附文章结尾)主要涉及知识点以及相关链接1、Measu
2016-10-19 15:57:06 2104
原创 为RecyclerView添加分页加载(上拉加载更多)功能
上一篇文章已经介绍了如何为RecyclerView添加FootView,在此基础上,要添加分页加载的功能其实已经很简单了。 上一篇文章地址:为RecyclerView添加FootView和HeadView效果:(源码在文章结尾)实现关键在上一篇代码的基础上,只需要在onBindViewHolder(ViewHolder holder, int position)函数中添加一定修改就可以了,如下:
2016-10-11 15:51:04 12956 5
原创 为RecyclerView添加FootView和HeadView
前提概要:上一篇文章已经介绍过了RecyclerView的基本使用方法,原文如下:android RecyclerView布局真的只是那么简单!此篇文章算是对RecyclerView更深使用的介绍。FootView和HeadView在ListView中的本身就有相对应的函数,但是在新潮的RecyclerView中却没有了,FootView在分页加载(上拉在家更多)中起着很重要的作用,因此也必须要学习
2016-10-11 14:48:10 9462
原创 Android应用开发-学生信息管理系统
设计目的1、网上很少有关于SQLite简单综合项目的测试APP。 2、把自己所学的部分UI综合一下,希望能给新手一些帮助。涉及知识点1、包括SQLite的增删查找等功能。查找中加入了“模糊搜索”的功能。 2、RecyclerView展示 3、SharedPreference保存密码,以及判别是否是第一次安装APP。(如果是第一次就录入测试数据) 4、简单的Menu操作...
2016-09-23 18:13:59 20963 11
原创 最简易的网络框架封装(新手可看)
网络通信在Android上的重要性就不多说了。 demo就是获取到“https://www.baidu.com/”的HTML代码后显示在textview中,如下图:(源码在文章结尾) 涉及知识点1、HTTP网络请求,HttpURLConnnection的使用 2、简单线程 3、定义接口,实现回调如果仅仅实现这个功能需要的java代码绝对在10行以下,但是本片主要是讲一下简易...
2016-09-07 15:50:47 2800 2
原创 【从零开始写一个简单的ImageLoader框架】MyImageLoader代码简介
前提概要笔者仅仅对各个java文件作用以及一些关键方法进行阐述,其余很多需要掌握的知识点已于上一篇文章中给出相应链接,还需读者自己学习。代码预览demo包中的文件都用于演示,也不多加阐述了。 主要为imageLoader中的内容。BitmapUtils此文件中包含了图片压缩的公共方法。ImageDiskLruCache硬盘缓存。ImageLruCache内存缓存。ImageThreadPoolEx
2016-08-12 16:13:06 997
原创 【从零开始写一个简单的ImageLoader框架】ImageLoader分析
相关文章【从零开始写一个简单的ImageLoader框架】项目介绍【从零开始写一个简单的ImageLoader框架】ImageLoader分析【从零开始写一个简单的ImageLoader框架】MyImageLoader代码简介项目涉及知识点1、网络获取2、图片压缩3、内存缓存4、磁盘缓存5、线程池6、Handler7、Re...
2016-08-12 15:47:58 3191 2
原创 【从零开始写一个简单的ImageLoader框架】项目介绍
相关文章【从零开始写一个简单的ImageLoader框架】项目介绍【从零开始写一个简单的ImageLoader框架】ImageLoader分析【从零开始写一个简单的ImageLoader框架】MyImageLoader代码简介项目目的ImageLoader在实际项目中用的比较多,但是大多新手仅限于用的地步,没有深入了解其原理。 ImageLoader其中涉及的知识点也比较多,比如图片压缩,内存缓存
2016-08-12 14:43:26 1392
原创 给自定义View添加xml属性
笔者之前已经写过了一些自定义View的文章,在此对其也就不从头说起了,如有兴趣的读者可以看一下笔者的前两篇文章。 android 自定义view的使用(最佳demo——返回标题栏) android 自定义控件(底部icon点击效果)笔者之前的文章中仅仅介绍了如何使用自定义View以及为什么要使用自定义View等等,但是在实际操作中,我们还是希望自定义View之后,直接能够在xml中就对其进行操作
2016-08-04 11:17:10 10828
原创 二分法-长城守卫(Beijing Guards, CERC 2004, LA 3177)
题目:有n个人围成一个圈,其中第i个人想要ri个不同的礼物。相邻的两个人可以聊天,炫耀自己的礼物。如果两个相邻的人拥有同一种礼物,则双方都会很不高兴。问:一共需要多少种礼物才能满足所有人的需要?假设每种礼物有无穷多个,不相邻的两个人不会一起聊天,所以即使拿到相同的礼物也没关系。 比如,一共有5个人,每个人都要一个礼物,则至少要3种礼物。如果把这3种礼物编号为1, 2, 3,则5个人拿到的礼物应分别
2016-06-25 09:25:11 2304
原创 贪婪-zoj 1029--MOVING TABLES
题目:输入输入数据有T组测试例,在第一行给出测试例个数T。 每个测试例的第一行是一个整数N(1≤N≤200),表示要搬运办公桌的次数。接下来N行,每行两个正整数s和t,表示一张桌子,是从房间号码s移到到房间号码t。输出每组输入都有一行输出数据,为一整数T,表示完成任务所花费的 最小时间。输入样例3 4 10 20 30 40 50 60 70 80 2 1 3 2 200 3
2016-06-24 12:55:53 1595
原创 动态规划-ZOJ 1025-WOODEN STICKS
题目:现有n根木棒,已知它们的长度和重量。要用一部木工机一根一根地加工这些木棒。该机器在加工过程中需要一定的准备时间,是用于清洗机器,调整工具和模版的。 木工机需要的准备时间如下: (1)第一根木棒需要1min的准备时间; (2)在加工了一根长为l ,重为w的木棒之后,接着加工一根长为l ‘(l ≤ l’ ),重为 w’ ( w≤w’)的木棒是不需要任何准备时间的,否则需要一分钟的准备时间。
2016-06-24 09:25:42 1545
原创 广度优先搜索,分支限界- ZOJ - 1136 Multiple
Descriptiona program that, given a natural number N between 0 and 4999 (inclusively), and M distinct decimal digits X1,X2..XM (at least one), finds the smallest strictly positive multiple of N that has
2016-06-23 19:45:19 2326
原创 回溯法-经典 01背包问题
经典问题:给定N中物品和一个背包。物品i的重量是Wi,其价值位Vi ,背包的容量为C。问应该如何选择装入背包的物品,使得转入背包的物品的总价值为最大??分析1、如上图碰到一组数据,有两种可能:选或者不选,在树种分别由1,0表示。2、使用递归,在遍历完n个数的时候,判断最终的数是否比最佳价值大,如果比最佳价值大,就把值赋给bestv。代码:#include<stdio.h>int c=30; /
2016-06-22 11:37:08 36824 6
原创 贪心-突击战(Commando War, UVa 11729)
题目:你有n个部下,每个部下需要完成一项任务。第i个部下需要你花Bi分钟交待任务,然后他会立刻独立地、无间断地执行Ji分钟后完成任务。你需要选择交待任务的顺序,使得所有任务尽早执行完毕(即最后一个执行完的任务应尽早结束)。注意,不能同时给两个部下交待任务,但部下们可以同时执行他们各自的任务。输入包含多组数据,每组数据的第一行为部下的个数N( 1 ≤ N ≤ 1 000 ) ;以下 N 行每行两个正整
2016-06-22 09:28:58 1891
原创 动态规划-ZOJ 1 163 THE STAIRCASES
题目:分析:代码:#include<stdio.h>#include<string.h>int main(){ long long f[501][501];//f[i, j]表示i块积木堆成最高一排不超过j块积木的方案数 memset(f, 0, sizeof(f)); for(int i=0; i<501; i++) f[0][i] = 1; //f
2016-06-22 09:03:38 1078
原创 动态规划-最大子矩阵和(ZOJ 1074 TO THE MAX )
题目有一个包含正数和负数的二维数组。一个子矩阵是指在该二维数组里,任意相邻的下标是1×1或更大的子数组。一个子矩阵的和是指该子矩阵中所有元素的和。 本题中,把具有最大和的子矩阵称为最大子矩阵。例如,如下数组的最大子矩阵位于左下角,其和为15。 输入是N×N个整数的数组。第一行是一个正整数N,表示二维方阵的大小。接下来是N2个整数(由空格和换行隔开)。该数组的N2个整数,是以行序给出的。先是第一行
2016-06-21 15:04:22 14209 12
onMeasure简单方法 完美解决ListView与ScollView!
2016-05-22
残缺棋盘 android实现颜色填充
2016-05-17
实验四 常微分方程的数值解
2016-05-11
实验三 数值积分(android)
2016-05-08
android图片轮播效果,RollViewPager的简单使用
2016-05-06
android RecyclerView布局
2016-04-22
实验二 插值方法(android)
2016-04-22
android RecyclerView布局真的只是那么简单
2016-04-18
android RecyclerView布局真的只是那么简单!
2016-04-18
实验一 直接法解线性方程组(android)
2016-04-14
android 自定义控件(底部icon点击效果)
2016-04-08
android ContentResolver的使用(获取和修改联系人信息demo)
2016-04-07
android canvas\paint\path简单使用(自定义view必学)
2016-04-01
android 滑动删除的listview(自定义view)
2016-03-29
android Fragment与Activity交互,互相发数据(附图详解)
2016-03-26
android Fragment与Activity互相发数据(附图详解)
2016-03-25
android Activity的启动模式 作用简析+demo详解
2016-03-19
学生宿舍管理系统 学生宿舍管理系统
2016-03-04
Android单元测试-对Activity的测试 [
2017-08-15
Android单元测试-对Activity的测试
2017-08-14
ListView异步创建View
2017-07-14
FragmentTransaction使用全解
2017-03-03
用Scroller完成一个简单的ViewPager
2017-02-23
完全理解android事件分发机制
2017-01-12
ASP.NET 电影票信息的增删查改
2016-12-14
ASP.NET 个人信息注册页面,并跳转显示
2016-11-23
android socket聊天室——也不仅仅是聊天室
2016-11-21
android 实现FlowLayout 流线布局(自定义ViewGroup)
2016-10-18
为RecyclerView添加分页加载(上拉加载更多)功能
2016-10-11
为RecyclerView添加FootView和HeadView
2016-10-11
学生信息管理系统2222
2016-09-23
最简易的网络框架封装(新手可看)
2016-09-07
给自定义View添加xml属性
2016-08-04
快速入门android AIDL(开启多进程并进行通信)
2016-06-10
RecyclerView超简单demo(局部更新取代ListView)
2016-06-08
实验五 迭代法解线性方程组与非线性方程(android)1
2016-05-25
实验五 迭代法解线性方程组与非线性方程(android)
2016-05-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人