自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Kingfar Ou

重要的不是写了多少行代码,而是花了多少时间去想该怎么写。

  • 博客(46)
  • 问答 (5)
  • 收藏
  • 关注

原创 浅谈git rebase命令:变基的作用

写在前面既然文章的标题是浅谈,那自然是不做太详细的探究了,就举几个简单的例子,谈一谈变基、合并提交这两个操作的使用。至于为什么简简单单地内容都要记录下来,是因为我当初在搜索变基的时候,居然找不到一篇文章真正意义上讲清楚了“变基”这个过程涉及到的不同操作。我看到的要么就是写的太隐晦的,没点基础的读者估计绕不过来,还有一些就是抄来抄去的,连基本流程都没讲清楚的,便决定整理一下,于是有了这篇文章。什么是变基我们先来看看什么是变基,假设我们有下图所示的提交历史:这个时候我们会说,feature1分支是从d

2021-02-11 12:29:58 1214 6

原创 散列表:从原理到Java实例

起源:符号表学习散列表之前,我们先来了解一下散列表是什么,它有什么用。散列表是符号表的其中一个实现方式(其它的实现方式有例如红黑树),那么问题就变成了符号表是什么,它又有什么用,符号表用于实现如下功能:需要将两个元素进行关联存储(两个元素分别称为“键”和“值”),并且需要根据“键”获取对应“值”。举几个例子来说明一下,例如投票,我们会记录候选人(或者候选项)的名字及其对应的票数,每读取一张选票,就找到选票上写的候选人的名字,将他的得票数加一,投票结束,我们会公布得票数最高的候选人,或者公布所有候选人的

2020-05-14 14:29:04 587 2

原创 一步步地分析排序——优先队列和堆排序

本文框架定义和使用场景优先队列是一个抽象数据类型,和栈、队列类似,它们都是抽象数据类型,相当于一个Java类,有自己的属性,并对外提供API。在了解它有什么API之前,先来看看优先队列的使用场景。优先队列适用于需要对集合不断地执行插入元素、删除最大(或最小)元素的场景。这个场景大体可以分为两类:第一类是业务实际情况需要,比如CPU的任务调度,待执行的任务是一个集合,每启动一个新程序就是在...

2020-01-11 17:10:35 857 2

原创 原型模式在不同语言里的实现

写在前面前段时间通过阅读《JavaScript高级程序设计》全面学习了一次JavaScript之后,在看到使用原型创建对象时,感觉和Java里的似曾相识又略有不同,于是重新思考了一次原型模式,便有了这篇文章。需要说明的是本文的重点是原型模式本身的思想,尽管我们会讨论Java和JavaScript对原型模式的实现,但真正重要的地方是通过不同语言对原型模式的实现去思考模式本身,而不仅仅是解读语法。以...

2019-11-11 18:10:36 177

原创 Git知识梳理

概述Git是什么:分布式版本控制系统。版本控制系统是什么:版本控制系统是一个能够记录文件变更以及支持多人协同工作的软件。记录文件变更:比如记录谁在什么时候修改了文件的什么内容,可以查阅每次变更的内容,也可以将文件内容回退到某次变更。多人协同工作:即支持并行开发。分布式是什么:相比较于集中式而言,集中式如SVN,服务器作为中央处理器,只有服务器上面的版本库才是真正完整的,每个人的电脑...

2019-07-09 17:05:05 195

原创 Java集合系列——LinkedList源码解读

之前写过一篇Java集合系列——ArrayList源码解读,现在接着来写与之关联比较近的LinkedList的源码解读,对比着学习,体会以不同方式实现的List接口的异同。概述简单说下LinkedList的特点:LinkedList使用双向链表来实现List接口和Deque接口的功能。实现了所有列表有关的操作,允许添加所有类型的元素(包括null)。该类是线程不安全的。接下来开始进...

2019-05-02 18:55:01 230

原创 Java集合系列——ArrayList源码解读

都2019年了还来谈ArrayList,不知道是不是太老套了,但是从另一个角度来想,Java集合本就是一个老少咸宜的话题,那就先从最简单的ArrayList开始谈吧。概述简单说下ArrayList的特点:ArrayList使用可变长数组来实现List接口的功能。实现了所有列表有关的操作,允许添加所有类型的元素,连null都可以添加。该类和Vector类相似,但是该类是线程不安全,Vec...

2019-04-14 10:31:19 809 2

原创 一步步地分析排序——归并排序

前言归并排序的概念归并排序是基于“归并”这个操作得出的排序方法,所谓归并,就是将两个分别有序的数组合并(归并)成一个更大的有序的数组。那么归并排序就可以这样描述:要将一个数组排序,可以先(递归地)将它分成两半分别排序,然后将结果(两个分别有序的数组)归并成一个更大的有序的数组。再来看看图解过程:对左、右子数组进行排序的过程,其实也是通过归并操作来实现的,所以,实际上,真正在执行“排序”行...

2019-01-06 17:25:49 3862 2

原创 通过流程图来分析Android事件分发

写在前面距离前一次写博客,已经过去接近一年,回想起来这一年确实很忙,否则不会连写博客都耽误了。然而忙归忙,也并没有停下学习的脚步,趁着今天有时间,把最近学习并实践于项目当中的知识点给梳理了,这就是今天要聊的话题——Android事件分发。如题目所示,这篇文章的侧重点在于通过流程图来分析事件分发,为什么要强调通过流程图来分析呢?要理解系统的流程,自然是要回归源码,但是站在工程应用的角度,我们不单...

2018-12-22 16:48:33 3292 10

原创 Android自定义View分享——仿网易云音乐留声机效果

写在前面这是笔者自学习自定义View以来,分享的第六篇效果,之前写过一篇打钩小动画,有兴趣的可以看看:Android自定义View分享——打钩动画之前的博客笔者一般都会说,这是不太复杂但是“长得”还可以的效果,这次的分享也长得挺好看的,但是不敢说“不太复杂”。虽然没有用到很高级的API(这篇分享还是以canvas的各个API调用为主),但是在涉及到计算的地方,确实是有些复杂(繁琐)。让

2018-01-06 09:20:22 4435 6

原创 Android自定义View分享——一个时钟

动态时钟。

2016-10-23 16:16:21 1022

原创 Android自定义View分享——仿微信朋友圈图片合并效果

仿微信朋友圈图片合并效果。

2016-10-18 14:29:08 4180 3

原创 Android自定义View分享——一个圆形温度显示器

一个动态的圆形温度显示器。

2016-10-18 08:47:30 3967

原创 Android自定义View分享——一个水平的进度条

写在前面笔者近来在学习Android自定义View,收集了一些不算复杂但又“长得”还可以的自定义View效果实现,这些View的逻辑不算复杂,大多都只用到了Paint、Canvas类的一些常用的API。

2016-10-17 14:52:26 3443

原创 一步步地分析排序——插入排序

一步步地分析插入排序

2016-09-28 15:14:40 2483

原创 一步步地分析排序——选择排序

概述本文是对《算法》第四版选择排序所做的笔记,选择排序是书本里面的首个排序算法,同时也是基础排序算法里面较简单的一个。虽然算法本身是很简单,但是通过一个简单算法,学习算法的分析过程,还是相当有意义的。本文的脉络如下

2016-09-25 20:31:24 694

原创 算法 动态连通性--如何设计和分析算法

本文是对《算法》(橙色那本)动态连通性问题的学习笔记。我想通过这篇笔记,整理出设计和分析算法的过程来。

2016-07-29 14:47:41 4533 7

原创 安卓与“Proguard”——安卓的代码混淆

谨以此文,记我在公司实习时,所接到的第一个正式的、有意义的任务——将公司即将发布的APK进行代码混淆。什么是代码混淆混淆就是对发布出去的程序进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能,而混淆后的代码很难被反编译,即使反编译成功也很难得出程序的真正语义。被混淆过的程序代码,仍然遵照原来的档案格式和指令集,执行结果也与混淆前一样,只是混淆器将代码中的所有变量、

2016-07-15 11:03:27 2255

原创 leetCode88:Merge Sorted Array

Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.Note:You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold addit

2016-03-15 21:05:14 481

原创 LeetCode219题:Contains Duplicate II

Given an array of integers and an integer k, find out whether there are two distinct indices i and j in the array such that nums[i] = nums[j] and the difference between i and j is at most k.

2016-03-04 19:14:48 562

原创 LeetCode66: Plus One

Given a non-negative number represented as an array of digits, plus one to the number.The digits are stored such that the most significant digit is at the head of the list./** * Return an arr

2016-03-04 14:38:57 624

原创 leetCode1: Two Sum

Given an array of integers, find two numbers such that they add up to a specific target number.The function twoSum should return indices of the two numbers such that they add up to the target, whe

2016-01-14 16:54:10 367

原创 文件存储——安卓存储方案之二

文件存储△概述→安卓提供了相关API,让你可以以流的方式去读写数据,这跟原来java里的流操作的方式基本一致,如果你对java流操作很熟悉,其实安卓里的文件操作没有什么特别新鲜的东西的。→根据存储位置不同,文件存储可以分为内部存储(Internal storage)、外部存储(External storage)。→内部存储的文件,属于你的应用私有文件,其

2016-01-14 16:25:15 616

原创 SharedPreferences——安卓存储方案之一

SharedPreference△概述→SharedPreference,安卓下的数据存储方式之一,它的存储方式类似java的Map集合,yi△    总是放在:/data/data//shared_prefs/路径下面,文件名是你获取”SharedPreferences”对象那时指定的。

2016-01-14 11:53:11 568

原创 Fragment使用小结

→Fragment是从安卓的3.0开始有的,主要针对大屏幕的设备进行工作(例如平板)。    →Fragment中文翻译“片段,碎片”,他确实是做为活动一个片段来存在的,你可以将他理解为一个模块,或者活动里的窗体,如果活动就是一个房子,fragment就是里面一个房间。    →Fragment有他自己的生命周期,他有自己一个布局,能够接受和处理自己的输入事件,能在窗体运行的时候对frag

2016-01-11 21:01:24 1042

原创 leetCode75:Sort Colors

Given an array with n objects colored red, white or blue, sort them so that objects of the same color are adjacent, with the colors in the order red, white and blue.Here, we will use the integers

2016-01-01 11:33:45 328

原创 leetCode26:Remove Duplicates from Sorted Array

Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.Do not allocate extra space for another array, you must do this in place with

2015-12-31 16:25:35 516

原创 leetCode61:Rotate List

Given a list, rotate the list to the right by k places, where k is non-negative.For example:Given 1->2->3->4->5->NULL and k = 2,return 4->5->1->2->3->NULL.问题需求:将单链表循环右移,移动次数有参数所决定。问题分析

2015-12-27 14:20:42 407

原创 leetCode24:Swap Nodes in Pairs

Given a linked list, swap every two adjacent nodes and return its head.For example,Given 1->2->3->4, you should return the list as 2->1->4->3.Your algorithm should use only constant space. Y

2015-12-26 16:03:18 343

原创 leetCode2:Add Two Numbers

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     struct ListNode *next; * }; */struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {

2015-12-26 14:08:37 80

原创 LeetCode,141:Linked List Cycle

C语言实现判断单链表是否带有循环LeetCode原题如下:Given a linked list, determine if it has a cycle in it.Follow up:Can you solve it without using extra space?对于一个普通的单链表(双向链表以及循环链表不算在内),链表最后一个元素指针==NULL,一

2015-12-25 10:38:33 369

原创 leetCode:234: Palindrome Linked List

C语言实现判断某链表是否属于回文链表

2015-12-25 10:10:02 452

翻译 安卓应用基本原理

安卓应用基本原理谷歌官方原文链接:http://developer.android.com/guide/components/fundamentals.html 初尝翻译,如有不当,请多包涵安卓应用程序是由Java语言所编写的。Android SDK工具编译你的代码(包括所用任何资源以及文件)到APK里。APK是一个Android package,他以".apk"作为后缀。一个AP

2015-09-11 14:29:47 2207

原创 Java对象初始化的过程示例

对象的初始化的过程△所谓对象的初始化过程,就是当你new了一个对象之后,对象所在类的各个成分执行顺序。△先来看看一个类里可能包含哪些成员:    →代码块:分为静态代码块以及构造代码块。    →成员变量(静态成员变量以及普通成员变量)。    →成员方法(如果仅仅只是new了一个对象,不会调用成员方法,除非构造方法里面调用成员方法,这个不在这里论述)。    →构造方法(

2015-09-05 08:47:39 561

原创 Java内部类的使用小结

Java内部类的使用小结△概念:一个类定义在另一个类里面,就被成为内部类了。△分类:    1,内部类定义在一个类的里面,与外部类的成员方法和成员变量处在同级,这是普通的内部类,他以外部类的“成员”身份存在,符合成员一般属性:比如能被static、final、private等修饰符所修饰。    2,内部类定义在一个外部类的成员方法里面,与外部类里的成员方法里的局部变量

2015-09-03 19:39:10 544

原创 AsyncTask小案例

AsyncTask小案例第一次接触到安卓异步任务,原本以为要使用复杂的handler,后来知道安卓封装了"AsyncTask",相对而言,他更简单,下面做一个小案例,当做笔记。△安卓线程    虽说AsyncTask封装的很好,能让你几乎在不了解安卓多线程工作的具体情况之下,照样使用异步任务,但是如果想理解好异步任务,还得说说安卓的某些线程的知识。    →主线程与UI线程

2015-08-22 12:17:41 697

原创 ExpandableListView简介

ExpandableListView小结学习笔记,欢迎指导。最近做了一个项目,需要一个层级列表,完成之后,就顺便来做个博客小结一下。备注一下:当你看到这篇文章,我默认你已经熟悉基本ListView操作,也就是说,关于适配器的基本知识以及"ViewHolder"优化的使用我不会重复。△ExpandableLIstView,是对ListView更进一步加工,可以实现类似QQ好友

2015-08-21 15:04:44 1690

原创 安卓服务——bind service一个绑定式的服务

绑定式服务的介绍学习笔记,欢迎指导。△绑定式的服务定义:一个由bindService()方法所开启的服务成为绑定式的服务。    →其他组件可以与该服务绑定,同时可以与他进行通信(包括向服务发送请求,接收服务所返回的和数据,你还可以通过这个服务进行进程间的通信)。    →一个绑定式的服务不可以在后台无限期地执行,当所有与他相绑定的组件都与他解绑,这个服务就会销毁(当不再有组件

2015-06-12 17:07:37 3542

原创 Activity及其生命周期小结

△概述Activity,是安卓里与用户交互的组件,通俗点说平时用手机的时候看到的一个个界面就是“Activity"所组成的(当然也有可能会是Fragment,这个不在本文讨论),Activity类似一个容器,可以装填布局文件,装填可显示的东西,但Activity本身不具备绘图功能。

2015-06-10 12:43:31 936

原创 Java多线程的基本概述以及创建

Java多线程的基本概述以及创建学习笔记,欢迎指导。△多线程概念    →进程:为了能够说清线程,首先要搞清楚进程概念。进程就是一个正在运行中的程序,这样理解:一个程序(或者说是一个软件)被装进了设备之后,它仅仅是一段静态代码,当他被运行起来时,就称作进程。所以说进程就是正在运行的程序,或者说是正在运行着的那个软件。    →线程:线程是比进程更小得控制单元,在早期的计

2015-06-08 19:23:22 756

空空如也

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

TA关注的人

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