- 博客(53)
- 收藏
- 关注
原创 春招秋招笔试题记录
001. Valid Parentheses题目描述Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.An input string is valid if:Open brackets must be ...
2020-02-22 08:18:00
1314
原创 排序算法总结(三)
一、前言本篇博客属于对排序算法的复习,主要是基于《算法》一书。博客正文聚焦的主要是算法的实现过程,对于辅助方法如 less()、exch() 和 isSorted() 等请移步排序算法模板代码查看相关实现。注: 本文中所有的图片均为《算法》一书的辅助图片,代码实现也源自该书。 本文只是对其要点的提炼,想要详细的学习这些算法请自行观看相关书籍。二、正文本篇文章将要复习的知识点为堆排...
2019-07-10 17:39:17
341
原创 排序算法总结(二)
一、前言本篇博客属于对排序算法的复习,主要是基于《算法》一书。博客正文聚焦的主要是算法的实现过程,对于辅助方法如 less()、exch() 和 isSorted() 等请移步排序算法模板代码查看相关实现。注: 本文中所有的图片均为《算法》一书的辅助图片,代码实现也源自该书。 本文只是对其要点的提炼,想要详细的学习这些算法请自行观看相关书籍。二、正文1. 归并排序归并排序是一种...
2019-07-09 20:15:03
301
原创 排序算法总结系列导读
1. 模板代码public class SortExample { public static void sort(Comparable[] a){ // 具体的算法实现 } /*************************************************************************** * if v...
2019-07-05 21:28:16
197
原创 排序算法总结(一)
一、选择排序思想:首先,找到数组中最小的那个元素,其次,将它和数组的第一个元素交换(如果第一个元素就是最小元素那么它就和自己交换)。再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换…如此往复,直到将整个数组排序。...
2019-07-05 21:10:15
239
原创 Java 基础之 Comparable & Comparator
一、概述本篇文章是对 Java 中两个用于比较排序的接口 Comparable 和 Comparator 使用方式的简单介绍,然后会通过举例子的方式来说明它们各自的使用方法,首先我们来看看 Comparable 接口的相关介绍。二、Comparable 接口先下结论:Comparable 的中文意思是“可比较的”,也就是说,实现了该接口的类是可排序的。例如我们自定义一个简单的 Stude...
2019-06-27 17:29:39
199
原创 读书笔记 | Java 内存模型与线程
硬件的效率与一致性问题来源:绝大多数的运算任务不可能只靠处理器完成,处理器至少要与内存进行交互,如读取运算数据、存储运算结果等,这个 IO 操作是很难消除的。但计算机的存储设备于CPU的运算速度有几个数量级的差距。解决办法:加入一层读写速度尽可能接近处理器运算速度的告诉缓存作为内存与处理器之间的缓冲,将运算需要使用到的数据复制到缓存中,让运算能快速进行。当运算结束后再从缓存同步回内存之中。这样...
2019-06-03 23:09:10
209
原创 Java 基础之 I/O(一)
一、概述Java 类库定义了许多类专门负责各种方式的输入/输出,这些类都被放在 java.io 包中。它具有4个最基本的类,如下所示:InputStream:字节输入流,它的子类都含有 read() 方法用于读入字节数据。OutputStream:字节输出流,它的子类都含有 write() 方法用于写出字节数据。Reader:字符输入流,它的子类都含有 read() 方法用于读入字符数据...
2019-05-31 21:54:21
308
原创 Java 基础之 File
一、概述File 类在日常的开发中应当是不少见的,只要是涉及到文件读写的,往往都需要借助 File 类。本篇文章为笔者的读书笔记,将对 File 类的使用做一个简单的介绍,内容如下所示:...
2019-05-28 16:29:07
220
原创 【应用层】DNS协议
一、概述本篇文章基于《计算机网络》一书,为笔者的读书笔记,主要内容如下所示:DNS提供的服务互联网的域名结构DNS服务器的分布DNS的工作原理二、DNS提供的服务域名系统 DNS(Domain Name System) 提供的服务很简单,就是将便于人们使用的机器名字转换为IP地址。我们都知道用户与互联网上的某台主机通信时必须知道对方的 IP 地址。相比于难以记忆的IP地址,用...
2019-05-26 20:48:20
4511
原创 【专题归纳】字符串之回文
一、概述本篇博客动笔的初衷是华为OJ中一道关于求最长回文子串的长度的问题,深感自己对于字符串处理方面真的很渣,本篇文章结构如下:问题描述求最长回文子串的算法——马拉车算法只求解最长子串长度的简单算法二、问题描述...
2019-05-01 09:59:30
472
原创 Android属性动画(二)—— 插值器和估值器
一、概述本篇文章续接Android属性动画(一),介绍属性动画中非常重要的两个部分:插值器(Interpolator)和估值器(TypeEvaluator)。它们在属性动画中分别用于动画随时间流逝的变化规律和定义从初始值过渡到结束值的计算规则,本文结构如下:插值器(Interpolator)的介绍和使用估值器(TypeEvaluator)的介绍和使用二、插值器Interpolator...
2019-04-28 22:18:41
1704
原创 Android属性动画(一)—— 属性动画的基本使用
一、概述属性动画(property animation)是在 API11 引入的新特性,它相比于补间动画有如下优势:补间动画只能对View进行操作,而属性动画可以对任何对象进行操作,甚至还可以没有对象。补间动画只能实现平移、缩放、旋转和透明度这4种动画,当我们需要更多效果时,补间动画无能为力;而属性动画则具有良好的扩展性,只要我们根据一定的规则,我们可以操作多种属性。补间动画只改变Vie...
2019-04-27 21:24:25
739
原创 equals()与"=="的区别
概述在Java中,equals()方法和==是我们经常使用的,也是在面试中的常考题之一了。本篇文章就来分析一下它们二者之间的区别。一、关于“==”== 的比较可分为如下两种:基本数据类型的比较引用数据类型的比较1. 基本数据类型的比较使用"=="进行基本数据类型的比较时,比较的是它们的值,例如int型变量和int型变量的比较,boolean变量和boolean变量的比较都属于值...
2019-04-27 09:45:41
185
原创 Android补间动画
概述本篇读书笔记基于《Android开发艺术探索》,将会介绍以下三种动画:View 动画帧动画属性动画一、View动画首先,我们要知道View动画作用的对象是View,它支持平移、缩放、旋转和透明度四种变换效果,它们的具体描述如下表所示:名称标签子类效果平移动画<translate>TranslateAnimation移动View缩...
2019-04-25 21:22:55
3492
原创 SQLite学习笔记导读
概述SQLite学习笔记部分总共分为7篇文章,讲述的均为 SQLite 的使用,未对 SQLite 进行深入的研究。本系列读书笔记均源自两本书籍:《SQLite权威指南》和《SQL必知必会》。下面对7篇文章的内容做一个内容概要:SQLite学习笔记(一):讲述了什么是SQL,如何创建、删除和修改表以及SQLite的数据类型和常用命令。SQLite学习笔记(二):对SELECT命令的完...
2019-04-24 09:08:56
722
原创 SQLite学习笔记(六)
概述本篇文章的结构如下所示:视图(View)索引(Index)触发器(Trigger)事务(Transaction)一、视图视图即虚拟表,也叫做派生表,它的内容都是派生自其它表的查询结果。虽然视图看起来像基本表,但是它并不是基本表,因为基本表的内容是持久的,而视图的内容是在使用时动态产生的。我们往往基于以下理由使用视图:重用 SQL 语句。简化复杂的 SQL 操作。在编写查...
2019-04-23 10:02:53
596
原创 SQLite学习笔记(五)
概述本篇文章要介绍的是 CRUD 操作和约束,文章结构如下:一、INSERTINSERT 用于将行插入(或添加)到数据库表中。INSERT 的一般形式如下所示:INSERT INTO table_name (column_list) VALUES (value_list);其中 column_list 部分并不是必须的。插入共有以下三种方式:插入完整的行;插入行的一部分;插入...
2019-04-22 15:39:27
585
1
原创 SQLite学习笔记(四)
概述本篇文章将继续介绍关于 SELECT 中的一些用法。文章结构如下:子查询多表连接/联结表名称和别名组合/复合查询条件结果一、子查询子查询是指 SELECT 语句中又嵌套 SELECT 语句。子查询最常应用的地方是 WHERE 子句,特别是在 IN 操作符中。下面通过一个例子来了解下子查询的用法和好处。例子列出订购商品 RGAN01 的所有顾客。这个需求的检索思路如下:...
2019-04-21 20:36:20
364
原创 SQLite学习笔记(三)
概述本篇文章将介绍 SQLite 中的函数,了解如何利用内置的函数来处理数据。文章结构如下:一、聚合函数SQLite 常用的聚合函数如下表所示,对于所有的聚合函数来说,关键字 DISTINCT 可以作为它们函数参数字段的前置属性,用以过滤重复的字段值:函数名描述count(x | *)计算字段x中非NULL行数,count(*)返回在同一组内的数据行数avg(...
2019-04-20 23:42:08
316
原创 SQLite学习笔记(一)
本文结构SQL 是什么SQL 是什么SQL 全称为 Structured Query Language,即结构化查询语言,所以和 C、Java 一样,它是一门语言,一门专门用来与数据库“沟通”的语言。下面是几个重要的数据库术语以及它们的概念:数据库(Database):数据库是一个以某种有组织的方式储存的数据集合。我们可以把数据库想象成一个文件柜,这个文件柜是一个存放数据的物理位置,不管数...
2019-04-20 09:27:30
697
原创 华为OJ
收录问题如下6. 质数因子6. 质数因子题目描述功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )。最后一个数后面也要有空格详细描述:函数接口说明:public String getResult(long ulDataInput)输入参数:long ulDataInput:输入的正整数返回值:String输入描...
2019-04-16 23:06:36
1387
原创 【避免进程死锁】银行家算法
一、概述银行家算法(Banker’s Algorithm)是一个避免进程死锁的著名算法,由 Dijkstra 于 1965 年提出。本文为笔者的读书笔记,结构如下:死锁银行家算法例子展示补充:鸵鸟算法和实际系统中对死锁的处理方式二、死锁既然银行家算法就是为了解决进程死锁而出现的,那么首先我们应该先来了解下什么是死锁,以及死锁产生的4个条件。2.1 什么是死锁如果一组进程中的每...
2019-04-13 23:17:29
4222
2
原创 【剑指Offer】动态规划问题
问题描述题目:给你一根长度为n的绳子,请把绳子剪成m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0], k[1], … ,k[m]。请问 k[0]✖k[1]✖…✖k[m] 可能的最大乘积是多少? 例如,当绳子的长度为8时,我们把它剪成长度分别为 2、3、3 的三段,此时得到的最大乘积是 18。解题思路对于这道题目,适宜用动态规划的思想来解决。假设 f(n) ...
2019-04-10 11:06:35
528
原创 GET 和 POST 的区别
一、概述本文的内容源自其他博客的总结,属于笔者的读书笔记,结构如下:HTTP 的请求报文GET 方法的特点POST 方法的特点GET 和 POST 的区别二、HTTP 的请求报文首先我们要解决的第一个问题是:GET 和 POST 是什么?GET 和 POST 其实都是 HTTP 的请求方法。除了这 2 个请求方法之外,HTTP 还有 HEAD、PUT、DELETE、TRACE...
2019-04-07 22:30:29
46859
17
原创 【剑指Offer】面试题19:正则表达式匹配
题目:请实现一个函数用来匹配包含 ‘.’ 和 ‘*’ 的正则表达式。模式中的字符 ‘.’ 表示任意一个字符,而 ‘*’ 表示它前面的字符可以出现任意次(含0次)。在本题中。匹配是指字符串的所有字符匹配整个模式。例如,字符串 "aaa"与模式 "a.a"和 "ab*ac*a"匹配,但与 "aa.a"和 "ab*a"均不匹配。这道题的难点非常明显,那就是要处理 '*' 这个字符的情况,当我们遇到 ...
2019-04-06 16:46:33
330
原创 TCP的三次握手与四次挥手
一、概述本篇博客是经由他人书籍以及博客总结得出的知识点,属于笔者的学习笔记,它的结构如下:TCP 报文首部TCP 的三次握手TCP 的四次挥手二、TCP 报文首部TCP 报文首部如下图所示:源端口:表示发送端端口,字段长为16位,即2个字节。目的端口:表示接收端端口,字段长为16位,即2个字节。seq(序号):表示发送数据的位置,字段长为32位,即4个字节。TCP连接中传...
2019-03-29 16:29:26
350
原创 读书笔记 | JVM 的垃圾回收机制
一、概述本篇博客是基于《深入理解Java虚拟机》一书的读书笔记,主要记录的是关于 GC 方面的相关知识,脉络如下:什么是引用引用的四种基本类型判断对象已死垃圾收集算法HotSpot 的算法实现垃圾收集器对象内存分配与回收策略二、什么是引用引用可用于判断对象是否存活,所以想要了解 GC,那么对于引用的了解必不可少,要知道什么是对象,我们还得先了解一下什么是对象?我们都知道,...
2019-03-22 17:05:16
260
原创 读书笔记 | Java 内存区域
一、概述本篇博客是基于《深入理解Java虚拟机》一书的读书笔记,是对笔者所学知识点的一个记录,本篇博客所包含的知识点如下:JVM 内存区域的划分划分区域各自的功能和职责对象的创建、内存布局和访问定位JDK1.8 中的虚拟机二、内存区域的划分JVM 在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域,如下图所示:其中方法区(Method Area)和堆(...
2019-03-20 22:40:46
1194
原创 读书笔记 | 单例模式总结
一、概述单例模式(Singleton Pattern)的定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式是一种对象创建型模式。它的使用场景如下所示:整个项目需要一个共享访问点或共享数据。创建一个对象需要消耗的资源过多,比如访问I/O或者数据库等资源。工具类对象。在本篇笔记中,将会介绍以下6种单例模式的实现方式:懒汉模式(线程不安全)懒汉模式(线程安全...
2019-03-19 16:03:19
1190
原创 Java 容器之 LinkedList
文章结构一、概述二、LinkedList 的源码分析1. 双向链表2. 类的继承关系3. 类的属性4. 类的构造方法一、概述日常开发中,相较于 ArrayList,LinkedList 的使用频率是相对较少的,但是使用较少绝对不代表着它不重要,ArrayList 在访问元素的时候速度很快,而 LinkedList 的优势则展现在它添加和删除元素的速度上,所以在添加、删除元素频繁而访问较少的场景...
2019-03-15 14:59:08
289
原创 Java 容器之 ArrayList
文章结构一、概述二、ArrayList 的源码分析1. 类的继承关系2. 类的属性3. 类的构造方法4. 常用方法4.1 add4.2 remove一、概述ArrayList 在日常开发的过程中经常使用到,所以了解它的底层实现是比较有必要的。既然带有 Array 的字眼,那么它的内部无疑也就是用数组来存储值的,和普通的数组不同,它是一个动态数组,也就是说在往内部添加元素的时候我们可以动态地对数...
2019-03-14 21:31:58
300
原创 读书笔记 | Java 基础之 Thread
文章结构一、概述二、线程和进程的区别1. 进程三、start 和 run 方法的区别三、Callable一、概述本篇博客为《Java并发编程的艺术》的学习笔记,主要对于 Thread 的知识做一个记录,知识结构如下:线程和进程的区别。Thread 中 start 和 run 方法的区别。处理线程的返回值之 Callable。sleep 和 wait 的区别。notify 和 not...
2019-03-12 16:02:05
238
原创 读书笔记 | Fragment
文章结构一、概述二、Fragment 的生命周期三、Fragment 的加载四、Fragment 和 Activity 之间的通信五、补充一、概述Fragment 是 Android 3.0 中引入的一个控件,主要是为了适应不同尺寸设备的 UI 设计,例如在手机和平板中我们就可以通过使用一套 UI 进行两种布局了,如下图所示:当然它的作用不止于此,它还被广泛地应用于多页面的情况,通过 Fr...
2019-03-06 15:34:18
149
原创 Java 基础之方法中的参数
文章结构一、概述二、Java 的数据类型1. 基本数据类型作为参数2. 引用数据类型作为参数2.1 数组作为参数2.2 类作为参数一、概述对于有学过 C++ 的人来说,由于有指针的存在,使得一个函数的参数可以有多种传值方式:值传递、引用传递以及指针传递。而 Java 是没有指针的概念的,这也就意味着 Java 只存在值传递,不过这似乎不符合我们直观的感受,看下面例子:public class...
2019-03-04 20:40:02
5699
1
原创 LruCache 源码解析
文章结构一、概述二、LruCache 的基本使用1. 初始化2. 读/写缓存3. LruCache 的其他方法createentryRemoved三、LruCache 的源码分析1. LruCache 的成员2. LruCache 的构造方法3. LruCache#put4. LruCache#get四、LruCache 的总结一、概述LruCache 是一种内存缓存算法,全称为 Least ...
2019-03-02 22:25:38
692
原创 读书笔记 | 四大组件之 Activity
前言这篇文章不是关于新手如何使用 Activity 的文章,它算作是笔者自己在学习 Activity 过程中整理的一个笔记,里面会对 Activity 中的生命周期、启动模式等知识做一个介绍,力求能够将平常容易混淆的知识点做一个系统的梳理。本篇文章的结构如下:Activity 的生命周期。Activity 的启动模式。Activity 的生命周期在开始讲解 Activity 的生命...
2019-02-28 22:30:25
258
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人