- 博客(498)
- 资源 (25)
- 收藏
- 关注
原创 二叉树遍历的三种方式
题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,...
2018-07-07 16:21:38
1414
1
原创 剑指offer--滑动窗口的最大值
题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,...
2018-07-07 15:06:29
714
原创 剑指offer--机器人的运动范围
题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?题意分析:题目是指从坐标0,0开...
2018-06-30 18:38:01
780
原创 使用AspectJ在Android中实现Aop
开题上一篇文章Android Aop预研中介绍了Aop的各种实现方式,并且在最后提到,选择AspectJ作为合适的开发方式。这篇文章通过我自己编写的一个例子,来说明AspectJ的使用。首先要声明,使用AspectJ进行Android的Aop开发,早有例子,一篇写得很好的文章是Aspect Oriented Programming in Android,有需要的朋友可以看译文【翻译】Android中
2016-07-24 16:36:45
15865
3
原创 Android Aop预研
预研目的公司要求,希望我整理一下项目中的log日志,由于当前项目已经很庞大,包含多个自主开发的library,并且由多个开发人员共同完成。不同的同事,打log的方式都不一样,没有同一个的格式,因此我探讨能否使用Aop编程来统一log日志,使用注解的方式来减少大家的开发量,提高效率。Aop编程是一种区别OOP编程的概念,从切面的角度看待问题,这篇文章主要讲述了JAVA开发中常用的Aop开发方式以及他们
2016-07-24 15:26:43
5597
1
原创 go test命令参数问题
go test命令参数问题在使用go test对go代码进行单元测试的时候,遇到关于命令参数的问题,google了一下,没有找到很好的说明,其实就是一些细节而已。问题是这样的,在进行单元测试的时候,我希望输入一些命令行参数来控制程序的运行。 参考go官方文档,只需要在go test后面加上-args和参数就可以了 例如 go test -args -classpath E:\testcase
2016-03-18 15:04:37
8563
1
翻译 Implementing a virtual machine in C(虚拟机C语言实现)
介绍Github上展示了我们将要做的东西,你可以对比项目中的代码以防你遇到任何错误GitHub Repository 这是一篇关于使用C语言建造你自己的虚拟机的文章。我喜欢研究底层应用,例如编译器,解释器,编辑器,虚拟机等。预备知识和提醒在我们继续之前,有一些东西是你必须的:一个编译器 — 我在使用clang3.4,但是你可以使用支持c99/c11的任何编译器编辑器 — 我会建议你使用文本编辑
2016-01-16 01:14:39
4254
原创 sqlzoo练习答案--Self join
stops(id, name)route(num,company,pos, stop)stopsrouteidnumnamecompany pos stop 1、How many stops are in the database.select count(id) from stops2、Find the id value for the stop 'Craiglockhart'select
2016-01-14 16:25:59
9460
2
原创 sqlzoo练习答案--Using Null
teacheriddeptnamephonemobile1011Shrivell275307986 555 12341021Throd275407122 555 19201031Splint2293 104 Spiregrain3287 1052Cutflower321207996 555 6574106 Deadyawn3345 ...deptidname1Computing2Design3En
2016-01-14 15:32:11
4733
1
原创 sqlzoo练习答案--More JOIN operations
Movie DatabaseThis tutorial introduces the notion of a join. The database consists of three tables movie , actor and casting .movieactorcastingididmovieidtitlenameactoridyr orddirector budget gross
2016-01-13 23:54:54
7060
原创 sqlzoo练习答案--The JOIN operation
gameidmdatestadiumteam1team210018 June 2012National Stadium, WarsawPOLGRE10028 June 2012Stadion Miejski (Wroclaw)RUSCZE100312 June 2012Stadion Miejski (Wroclaw)GRECZE100412 June 2012National Stadium,
2016-01-13 15:35:17
11780
4
原创 sqlzoo练习答案--SUM and COUNT
World Country Profile: Aggregate functionsThis tutorial is about aggregate functions such as COUNT, SUM and AVG. An aggregate function takes many values and delivers just one value. For example the fu
2016-01-12 15:43:05
5842
原创 sqlzoo练习答案--SELECT within SELECT Tutorial
This tutorial looks at how we can use SELECT statements within SELECT statements to perform more complex queries.namecontinentareapopulationgdpAfghanistanAsia6522302550010020343000000AlbaniaEurope2874
2016-01-12 14:18:09
13402
1
原创 sqlzoo练习答案--SELECT from Nobel Tutorial/zh
nobel 諾貝爾獎得獎者我們繼續練習簡單的單一表格SQL查詢。這個教程是有關諾貝爾獎得獎者的:nobel(yr, subject, winner)yrsubjectwinner1960ChemistryWillard F. Libby1960LiteratureSaint-John Perse1960MedicineSir Frank Macfarlane Burnet1960MedicineP
2016-01-08 16:18:01
8778
2
原创 sqlzoo练习答案--SELECT names/zh
namecontinentAfghanistanAsiaAlbaniaEuropeAlgeriaAfricaAndorraEuropeAngolaAfrica....name:國家名稱continent:洲份1、你可以用WHERE name LIKE 'B%'來找出以 B 為開首的國家。%是萬用字元,可以用代表任何字完。找出以 Y 為開首的國家。SELECT name FROM world W
2016-01-08 15:24:21
13508
原创 sqlzoo练习答案--SELECT basics/zh
這個教程介紹SQL語言。我們會使用SELECT語句。我們會使用WORLD表格namecontinentareapopulationgdpAfghanistanAsia6522302550010020343000000AlbaniaEurope28748283174112960000000AlgeriaAfrica238174137100000188681000000AndorraEurope468
2016-01-08 15:08:21
5001
原创 一款炫酷Loading动画--加载失败
简介上一篇文章一款炫酷Loading动画–加载成功,给大家介绍了成功动画的绘制过程,这篇文章将接着介绍加载失败特效的制作。 相比成功动画,有了前面的经验,失败动画的过程就显得比较简单了。 动画结构分析首先我们来看失败动画的一张图: 失败动画的状态转移描述如下: 1、加载过程,画蓝色圆环,当进度为100%时,圆环完成 2、从右侧抛出蓝色小方块,小方块沿着曲线到达圆环正上方
2015-12-17 11:43:03
17862
12
原创 一款炫酷Loading动画--加载成功
简介昨天在简书上看到一篇文章,介绍了一个加载动画的实现过程 一款Loading动画的实现思路(一) 只可惜原动画是IOS上制作的,而看了一下,作者的实现思路比较复杂,于是趁着空闲写了一个Android版本,这篇文章将给大家介绍一下实现过程。 首先让我们来看一下动画效果 动画结构分析从上面的gif图中可以看到,这个加载动画有成功,失败两种状态,由于Gif速度比较快,我们再来分别看一张慢图1
2015-12-12 17:23:44
21990
14
原创 ADB使用小结
简介ADB全称Android Debug Bridge,我们在开发过程中经常使用这个工具来操作Android系统。 在使用ADB过程中有一些常识和细节,我们来总结一下。ADB主要功能有: 1、在Android设备上运行Shell(命令行) 2、管理模拟器或设备的端口映射 3、在计算机和设备之间上传/下载文件 4、将电脑上的本地APK软件安装至Android模拟器或设备上AD
2015-12-08 17:49:06
6998
3
原创 Android雷达图(蜘蛛网图)绘制
简介最近因为项目需求,要实现一款雷达图来表示用户的各种成就值 雷达图的绘制很简单,只要思路清晰按部就班的绘制就可以了,其中使用得最多,是路径path类的使用,使用这个类可以让我们更加方便地绘制出正多边形等效果。 效果图如下: 使用方式使用方式很简单,只要在布局文件里面,直接使用这个控件就好了,记得给它设置一个合适的具体的大小。 另外可以控制绘制的是多少边形,通过提供的一些public方法,可
2015-12-03 17:21:55
32924
36
原创 Android制作粒子爆炸特效
简介最近在闲逛的时候,发现了一款粒子爆炸特效的控件,觉得比较有意思,效果也不错。 但是代码不好扩展,也就是说如果要提供不同的爆炸效果,需要修改的地方比较多。于是我对源代码进行了一些重构,将爆炸流程和粒子运动分离。 对于源码,大家可以参考以下链接 链接1 链接2上面两套代码,其实结构都是一样的,但是实现的效果不同(其实就是粒子运动的算法不同)。 本篇文章,将给大家介绍粒子爆炸特效的实现方式,
2015-12-02 16:06:09
37429
17
原创 打造简易NineoldAndroids动画库,深入理解Android动画原理
简介NineoldAndroids是Github上一个著名的动画库,简单来说,NineOldAndroids是一个向下兼容的动画库,主要是使低于API 11的系统也能够使用View的属性动画。 网上已经有一些文章,介绍了这个库的设计,包括类结构和思想,例如 NineOldAnimations 源码解析 NineoldAndroids动画库源码分析 上面两篇文章都比较详细的介绍了NineoldAn
2015-11-18 19:43:17
7623
5
原创 模仿手机QQ红点消除功能
简介手机QQ红点消除的功能大家应该印象很深,我一直奇怪微信为什么不跟进这个功能,毕竟消息太多。 功能图如下: 简单的功能描述是这样的:新消息到来以后,会出现红点,红点被拉扯,在短距离内出现粘连效果,到达一点距离以后,可以扯断粘连,松手消除红点。对于这个功能是怎么实现的呢,我一直很好奇,并且参考了一下两篇文章: Android之实现妙趣横生的粘连布局 手机 QQ 的一键消除红点功能是怎么想出来
2015-11-18 16:19:27
5505
9
原创 ListView的多选模式
ListView的多选需求需求驱动技术,最近在项目中又遇到这样一个需求,简单而言就是:遍历某个文件夹下的所有log文件,然后将它们通过微信发送给别人。 这个功能很容易实现,但是在实现过程中,我希望自己的产品使用起来更加的人性化,所有我添加了多文件压缩打包功能,多选,反选,全选等功能,这样使用者就可以更加合理选择自己需要的log了。 那么问题来了,ListView应该怎么实现多选功能呢? 上下文
2015-11-12 21:51:35
7689
2
原创 TextView中英文排版混乱
TextView问题由来TextView在中英文夹杂的时候,会出现自动断行的情况,相信许多人都碰见过。这是系统的一个Bug,在Android5.0以后被修复了,而5.0以下的还没有见到比较好的解决版本。 参考了网上的方法,有的朋友推荐使用全角和半角转换(没有解决问题),也有的推荐了JustifyTextView这个控件(效果也不理想)。 于是我决定自定义一个TextView来做这件事,勉强解决了
2015-11-11 22:12:00
11360
3
原创 自定义通用Adapter适配ListView GridView
概述相信做Android开发的写得最多的就是ListView,GridView的适配器吧,对于Adapter一般都继承BaseAdapter复写几个方法,getView里面使用ViewHolder模式,其实大部分的代码基本都是类似的。 网上也有一些自定义Adapter的封装,本篇博客的Adapter的可以适应于多种类型的layout,也就是实现对话效果,而且代码和类设计都比较简单。效果图,其中图片
2015-11-07 19:57:25
3046
原创 定制Volley,实现加载本地和资源图片
volley加载网络图片众所周知volley提供了一个ImageLoader类用于网络图片的加载,本质上也是用消息队列的那一套去进行图片请求,只是请求以后做了一些图片本地缓存、缩放、错位处理等内容。 下面我们来看一个简单的加载例子: public RequestQueue requestQueue = Volley.newRequestQueue(mContext);public Imag
2015-11-03 15:12:09
3647
1
原创 在Android Studio上快速导入Eclipse风格
生成自己的风格JAR自己编辑了一款Eclipse风格的程序猿的Android Studio主题编辑方式很简单,就是在setting里面根据Eclipse的风格在这个文章里面,可以下载Eclipse风格的xml文件,大家对应着去修改就可以了然后File-》Export Setting就可以到处settings.jar,以后我们就可以在别的地方使用这个风格了导入Eclipse风格当然,这里我已经做好了一
2015-10-29 14:43:11
2923
2
原创 Android短信拦截机制适配的坑(下)--4.4以上系统,主要是6.0
前一篇文章,Android短信拦截机制适配的坑(上)--4.4以下系统介绍了广播接收的顺序,但是我明确说明在4.4以下系统,那么4.4及以上系统会遇到说明问题呢?首先我们要来了解4.4系统短信的机制的改变,主要是这篇文章http://android-developers.blogspot.com/2013/10/getting-your-sms-apps-ready-for-kitka
2015-10-28 21:50:10
17825
12
原创 Android短信拦截机制适配的坑(上)--4.4以下系统
最近项目遇到短信拦截的问题,新短信到达以后,项目app希望可以提示用户未读短信的数据,并且可以将短信置为已读。这个可能在不同系统中都遇到了问题,并且和其他短信访问的app,例如微信电话本发生冲突,下面内容主要针对Android4.4以下系统,和部分被修改的操作系统,例如小米首先就说和微信电话本冲突的情况,由于微信电话本也要实现上述功能,可是它有一个坑就是,它收到短信以后,就讲短信置
2015-10-28 21:06:14
4619
原创 《TCP/IP详解 卷一:协议》读书笔记--IP选路
9.1、引言9.2、选路的原理9.2.1、简单路由器svr4 % netstat -rnRouting tables Destination Gateway Flags Refcnt Use Interfac
2015-10-08 21:47:59
3156
原创 《TCP/IP详解 卷一:协议》读书笔记--Traceroute程序
8.2、Traceroute程序的操作它发送一份TTL字段位1的IP数据报给目的主机。处理这份数据报的第一个路由器将TTL值减1,丢弃该数据报,并发回一份超时ICMP报文。这样就得到了改路径中第一个路由器的地址。然后Traceroute程序发送一份TTL值为2的数据报,这样我们就可以得到第二个路由器的地址。继续这个过程直至该数据报到达目的主机。但是目的主机哪怕接受到TTL值为1的IP数据报,也
2015-10-05 15:46:26
2240
原创 《TCP/IP详解 卷一:协议》读书笔记--Ping程序
7.2、Ping程序大多数的TCP/IP实现都在内核中直接支持Ping服务器——这种服务器不是一个用户进程。ICMP回显请求和回显应答报文如图:7.3、IP记录路由选项最大的问题是IP首部中只有有限的空间来存放IP地址。IP首部中的首部长度字段只有4 bit,因此整个IP首部最长只能包括15个32 bit的字(即60个字节)。由于IP首部固定长度为20字节,RR选项用去
2015-10-05 00:35:40
2101
原创 《TCP/IP详解 卷一:协议》读书笔记--ICMP:Internet控制报文协议
6.1、引言类型字段可以有15个不同的值,以描述特定类型的ICMP报文。检验和字段覆盖整个ICMP报文,使用的算法与IP首部检验的算法相同。ICMP的检验和是必需的。6.2、ICMP报文的类型当发送一份ICMP差错报文时,报文始终包含IP的首部和产生ICMP差错报文的IP数据报的前8个字节。这样,接收ICMP差错报文的模块就会把它与某个特定的协议(根据IP数据报首部中的
2015-10-04 17:12:21
2109
原创 《TCP/IP详解 卷一:协议》读书笔记--RARP:逆地址解析协议
5.1、引言具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址。但是无盘机,如X终端或无盘工作站,则需要采用其他方法来获得IP地址。网络上的每个系统都具有唯一的硬件地址,它是由网络接口生产厂家配置的。无盘系统的RARP实现过程是从接口卡上读取唯一的硬件地址,然后发送一份RARP请求,请求某个主机响应该无盘系统的IP地址。5.2、RARP的分组格式RARP分组的
2015-10-04 13:44:55
2216
原创 《TCP/IP详解 卷一:协议》读书笔记--ARP:地址解析协议
4.1、引言当一台主机吧以太网数据帧发送到同一局域网上的另一台主机时,是根据48 bit的以太网地址来确定目的接口的。设备驱动程序从不检查IP数据报中的目的IP地址。4.2、一个例子任何时候我们敲入一下这个形式的命令:% ftp bsdi都会进行以下这些步骤。1)应用程序FTP客户端调用函数gethostbyname(3)把主机名(bsdi)转换32 bit的I
2015-10-04 00:07:41
1798
原创 《TCP/IP详解 卷一:协议》读书笔记--IP:网际协议
3.1、引言不可靠:它不能保证IP数据报能成功地到达目的地。无连接:IP并不维护任何关于后续数据报的状态信息。这也说明,IP数据报可以不按发送顺序接收。3.2、IP首部4个字节的32 bit值以下面的次序传输:首先是0~7 bit,其次是8~15 bit,然后16~23 bit,最后是24~31 bit。这种传输次序称为big endian字节序。由于TCP/IP首部中
2015-10-03 00:07:31
1907
原创 《TCP/IP详解 卷一:协议》读书笔记--链路层
2.2、以太网和IEEE 802封装以太网是当今TCP/IP采用的主要的局域网技术。它采用一种称作CSMA/CD的媒体介入方法,其意思是带冲突检测的载波侦听多路接入。它的速率为10Mb/s,地址为48bit。IEEE802委员会公布了一个稍有不同的标准集,其中802.3针对整个CSMA//CD网络,802.4针对令牌总线网络,802.5针对令牌环网络。这三者的共同特效由802.2标准来
2015-10-02 21:47:19
2616
原创 《TCP/IP详解 卷一:协议》读书笔记--概述
1.2、分层TCP/IP通常被认为四层协议系统链路层:通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡网络层:处理分组在网络中的活动,例如分组的选路(IP、ICMP和IGMP)运输层:主要为两台主机上的应用程序提供端到端的通信(TCP和UDP)应用层:Telnet远程登录,FTP文件传输协议,SMTP简单邮件传输协议,SNMP简单网络管理协议构造互联网最简
2015-09-30 17:14:11
7407
原创 android常见面试题与我自己的回答 (三)
1,ANR产生的原因和处理?ANR的产生需要同时满足三个条件:主线程:只有应用程序进程的主线程响应超时才会产生ANR;超时时间:产生ANR的上下文不同,超时时间也会不同,但只要在这个时间上限内没有响应就会ANR;输入事件/特定操作:输入事件是指按键、触屏等设备输入事件,特定操作是指BroadcastReceiver和Service的生命周期中的各
2015-09-25 13:29:11
1932
SuperLoadingProgress
2015-12-12
android粒子爆炸
2015-12-04
粒子爆炸特效
2015-12-04
雷达图(蜘蛛网图)
2015-12-03
制作粒子爆炸特效
2015-12-02
模仿手机QQ红点消除功能
2015-11-18
NineoldAndroids
2015-11-14
ListView的多选模式
2015-11-12
TextView自适应
2015-11-11
通用Adapter
2015-11-07
Volley加载本地图片
2015-11-03
接收广播的最高优先级
2015-10-29
CircleIndicator
2015-08-22
SVGPathView
2015-08-17
EventBus代码
2015-08-11
VerticalScrollView
2015-08-09
PullScrollView
2015-07-30
DrawerArrowDrawable
2015-06-02
CircularProgressButton
2015-05-30
xlistview代码
2015-05-25
datepicker
2015-05-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人