自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(138)
  • 收藏
  • 关注

原创 Java编程思想读书笔记——泛型(四)

15.15 混型混型:混合多个类的能力,以产生一个可以表示混型中所有类型的类。15.15.1 C++中的混型15.15.2 与接口混合使用接口产生混型效果:package com.mzm.chapter15;import java.util.Date;/** * */public class Mixins { public static v

2018-01-28 22:11:06 336

原创 Java编程思想读书笔记——泛型(三)

15.11 问题15.11.1 任何基本类型都不能作为类型参数对于基本类型,只能使用对应的包装类来作为类型参数。这又涉及到自动装箱和自动拆箱的问题,会对性能造成一定的影响。 Org.apache.commons.collectiions.primitives这一开源的框架中可以使用由基本类型作为类型参数的泛型。 自动装箱机制不能用于数组。 例如:package com.m

2018-01-28 22:10:54 320

原创 Java编程思想读书笔记——泛型(二)

15.7 擦除的神秘之处泛型的类型与类型参数无关。package com.mzm.chapter15;import java.util.ArrayList;/** * 泛型的类型不受类型参数的影响 * */public class ErasedTypeEquivalence { public static void main(String[] args) {

2018-01-28 22:10:43 328

原创 Java编程思想读书笔记——泛型(一)

第十五章 泛型15.1 与C++的比较15.2 简单泛型泛型类package com.mzm.chapter15;/** * * 泛型类,持有泛化类型的对象,取出对象无需转型 */public class Holder3 { private T a; public Holder3(T a){ this.a = a;

2018-01-28 22:10:29 249

原创 Java编程思想读书笔记——类型信息

第十四章 类型信息14.1 为什么需要RTTIRTTI(Run-Time Type Identification):运行时类型识别。 从数组中取出元素是RTTI最基本的使用形式。14.2 Class对象Class对象包含了与类有关的信息。 每一个类都有一个Class对象,在编写并编译后,被保存在同名的.class文件中。 而需要生成该类的对象时,则是由JVM使用”类加

2018-01-28 22:10:12 242

原创 Java编程思想读书笔记——字符串

第十三章 字符串13.1 不可变StringString对象是不可变的(不能够原地修改),具备只读特性。String类中每一个修改String值的方法,实际上是创建了一个新的String对象。当把String对象作为方法的参数时,都会复制一份引用,而该引用所指向的对象其实一直呆在单一的物理位置上,从未移动过。13.2 重载”+”与StringBuilderString对

2018-01-28 22:09:43 249

原创 Java编程思想读书笔记——通过异常处理错误(二)

12.7 Java标准异常Throwable可以表示任何作为异常被抛出的类,其可分为两类对象:Error和Exception。Error表示编译时和系统错误,一般不需关心; Exception表示可以被抛出的基本类型,通常关心该类型。异常的名称都是可以望文知意的。12.7.1 特例:RuntimeException运行时异常由Java虚拟机自动抛出,不必在异常说明中列出,

2017-10-22 14:59:52 269

原创 Java编程思想读书笔记——通过异常处理错误(一)

第十二章 通过异常处理错误12.1 概念12.2 基本异常异常情形(exceptional condition):阻止当前方法或作用域继续执行的问题。 普通问题:在当前环境下能得到足够的信息,总能处理的问题。当程序遇到异常情形而不知如何处理时,就需要抛出异常。在抛出异常时,首先会在堆中创建异常对象,之后终止当前的执行路径,并从当前环境中弹出异常对象的引用。之后交由异常处理程序进行

2017-10-15 16:58:11 281

原创 Java编程思想读书笔记——持有对象

第十一章 持有对象

2017-10-08 15:48:58 266

原创 Java编程思想读书笔记——接口

9.1 抽象类和抽象方法抽象方法:仅有声明而没有方法体。 抽象类:包含抽象方法的类。实际不包含抽象方法的类也可以声明为抽象类,只是不能创建该类的对象而已。

2017-10-05 11:13:24 311

原创 Java编程思想读书笔记——多态

第八章 多态多态(动态绑定、后期绑定或运行时绑定)分离做什么和怎么做,从另外一个角度讲接口和实现分离。8.1 再论向上转型将一个对象的引用同时看作其父类的引用的做法称为向上转型。8.1.1 忘记对象类型在方法中只接受父类作为参数,则其不同的子类对象也可作为参数传入。8.2 转机8.2.1 方法调用绑定绑定:将一个方法调用同一个方法主体关联起来称为绑定

2017-10-03 23:58:15 250

原创 Java编程思想读书笔记——复用类

第七章 复用类组合和继承是复用类的两种主要方式。7.1 组合语法 组合只需将对象引用置于新类中即可。这些引用的初始化方式有四种: 1) 在定义对象的地方进行初始化,即在创建新类对象前就被初始化; 2) 在新类的构造器中初始化; 3) 在使用这些引用之前再初始化,这被称之为惰性初始化,推荐这一方式; 4) 使用新类对象进行初始化。7.2 继承语法 当创建一个类时,总是在继承,

2017-10-03 08:21:32 275

原创 Java编程思想读书笔记——访问权限控制

第六章 访问控制权限6.1 包:库单元 默认包(未命名包):.java文件(编译单元/转译单元)直接位于src目录下。 6.1.1 代码组织 类库 -> 包 -> 编译单元(包含一个public类和任意个非public类)package语句是.java文件的第一句非注释语句,它指明了该.java文件位于那一个包下。.java文件的文件名必须与public类的类名相同(大小写敏感)

2017-10-02 11:21:33 306

原创 Java编程思想读书笔记——初始化与清理(二)

5.6 成员初始化 1)类的每一个基本数据类型成员,如果不显式赋予初值,都会有一个初始值; 2)对于引用类型成员,如果不显式赋予初值,则其初始值为null。 3)也可以直接在类中,对成员变量直接赋予初值。5.7 构造器初始化 构造器也可以用于初始化。 5.7.1 初始化顺序 类内部的初始化,要先于构造器中初始化。 5.7.2 静态数据的初始化 静态成员变量的初始化值与非静态成员

2017-09-29 21:14:20 232

原创 Java编程思想读书笔记——初始化与清理(一)

第五章 初始化与清理5.1 用构造器确保初始化 Java中也有类似C++中的构造器(constructor)的概念,其名称与类名相同,没有返回值。在创建对象时,将会为对象分配存储空间,并调用相应的构造器。构造器按参数的有无划分为无参构造器(默认构造器)和有参构造器。5.2 方法重载 构造器重载:默认构造器和有参构造器; 普通方法重载:方法名相同,与返回值和访问修饰符无关,且必

2017-09-27 20:40:10 207

原创 Java编程思想读书笔记——控制执行流程

第四章 控制执行流程4.1 true和false 所有的条件语句都利用条件表达式的真或假来决定执行路径。4.2 if-else 三种形式if(Boolean-expression){ Statement}if(Boolean-expression){ Statement}else{ Statement}if(Boolean-expr

2017-09-24 18:12:48 231

原创 Java编程思想读书笔记——操作符

第三章 操作符3.1 更简单的打印语句 3.2 使用Java操作符 操作符接受一个或多个参数,并生成新的值。操作数操作符的参数。几乎所有的操作符都只能操作基本数据类型。 例外:=、==和!=,这三个操作符可以操作所有对象。而’+’和’+=’可以操作String对象。3.3 优先级 最简单的就是以括号明确规定计算顺序。3.4 赋值 只能是=右

2017-09-19 22:34:12 322

转载 拉链表简介

拉链表简介(转载,以mysql为例)在数据仓库中,经常会用历史数据和时间维度做数据分析。而保存历史数据最常见的方案是使用拉链表进行存储。首先创建测试表:create table deal_order( order_id varchar(20) comment '订单ID', order_updatetime date comment '订单更新时间',

2017-09-02 18:06:25 19263

原创 Java编程思想读书笔记——一切都是对象

第二章 一切都是对象本章介绍Java程序的基本组成部分。2.1 用引用操纵对象 操纵对象的标识符就是引用。例如: String str = “asdf”;2.2 必须由你创建所有对象 存储区域的分类: 1) 寄存器最快的存储区,位于处理器内部,但数量有限,且不能直接控制。2) 堆栈位于通用RAM(随机访问存储)中,堆栈指针向下移动,则分配新的内存,向上移动则释放内

2017-08-31 21:36:08 291

原创 Java编程思想读书笔记——对象导论

第一章 对象导论本章主要介绍的是面向对象编程(Object-oriented Programming, OOP)的基本概念。1.1 抽象过程面向过程:在解决问题时基于计算机结构考虑; 面向对象:在解决问题时针对待解决问题建模。 对象(Object):问题空间中的元素及其在解空间中的表示。 面向对象的实质是通过添加新类型的对象使自身适用于某个特定的问题。面向对象程序设计的基...

2017-08-30 16:47:27 236

原创 python数据结构学习笔记-2017-01-08-01-N皇后问题、迷宫问题和跳马问题的递归解决

N皇后问题        棋盘ADT#-*-coding: utf-8-*-# 二维数组实现棋盘ADTfrom myarray2d import Array2Dclass Board(object): def __init__(self, n): self._board = Array2D(n, n) self._size = n

2017-01-08 21:17:04 1585

原创 python数据结构学习笔记-2016-12-25-01-2-3 树

14.4 2-3 树       2-3 树是一种平衡树,其形状定义如下:每一个结点可储存1个或2个关键码,分别以k1和k2表示;每一个结点有2~3个子结点,分别为左子结点、中子结点和右子结点;所有的叶结点都在同一层;每一个内结点如果只有一个关键码,则其只有两个子结点,如果有两个关键码,则其有三个子结点。       对于每一个内结点来说,有:所有小于该

2016-12-31 18:56:11 764

原创 python数据结构学习笔记-2016-12-10-01-AVL树

14.3 AVL树        AVL树由G.M.Adel‘son-Velskii和Y.M.Landis在1962年发明的自平衡二叉查找树。如果一个二叉树,其左右两子树的高度最多相差1,则称该二叉树是平衡的(balanced)。        对于AVL树中的每一个结点,都有一个平衡因子(balance factor),以表示该结点的左右两分支的高度差,平衡因子有三种状态:

2016-12-31 18:55:32 923

原创 python数据结构学习笔记-2016-12-04-02-二叉搜索树

14.1 二叉搜索树        二叉搜索树(binaey search tree, BST)是一种二叉树,其内的每一个结点储存着搜索关键码以及相应的负载,此二叉树以如下形式构建:对于每一个内结点,小于该内结点的关键码位于该结点的左子树内;对于每一个内结点,大于该内结点的关键码位于该结点的右子树内。        注意二叉搜索树是不能含有重复元素的。     

2016-12-31 18:54:41 466

原创 python数据结构学习笔记-2016-12-04-01-Morse电码

13.6 Morse电码        13.6.1 决策树        决策树(decision tree)是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。        我们使用决策树来实现Morse电码。        26个字母的Morse电码如下:        构建出来的二叉决策树如下:   

2016-12-31 18:54:18 356

原创 python数据结构学习笔记-2016-12-03-01-堆排序

13.5 堆排序        堆排序(heapsort),该算法以一个未排序序列,创建堆,然后从中提取元素来,从而创建排序序列。        13.5.1 简单实现#-*-coding: utf-8-*-# 堆排序算法的简单实现from arrayheap import MaxHeapdef simpleHeapSort(theSeq): n = len(t

2016-12-31 18:53:41 291

原创 python数据结构学习笔记-2016-11-30-01-堆

13.4 堆        堆(heap)是一个完全二叉树,其结点组织是基于各自结点的数据域。它有两个重要的变种——最大堆和最小堆。        最大堆(max-heap),具有称为堆序性质(heap order property)。对于其任意一个内结点而言,该结点处的值均大于其两个子结点的值。        最小堆(min-heap),则具有相反的堆序性质,对于其任意一个内结点而言

2016-12-31 18:52:55 431

原创 python数据结构学习笔记-2016-11-28-01-表达式树

13.3 表达式树        算术表达式可以用二叉树的形式表示,称为表达式树(expression tree)。其操作符位于内结点,而操作数位于叶结点。表达式树可以用于对表达式本身求值,也可以将中序表达式转变成前序表达式或者后序表达式。        13.3.1 表达式树ADT        算术操作符可分为一元操作符(-a, a!)和二元操作符(a + b)。这里,先只

2016-12-31 18:52:22 1469

原创 python数据结构学习笔记-2016-11-27-01-二叉树

13.2 二叉树(binary tree)        二叉树(binary tree)是每一个结点至多含有两个子结点的树结构。其中,对于含有两个子结点的结点,左边的子结点称为左子结点(left child node),相应的右边的称为右子结点(right child node)。       13.2.1 二叉树的性质       二叉树可以以不同形式和大小存在,其取决于结点的数目

2016-12-31 18:50:50 290

原创 python数据结构学习笔记-2016-11-26-02-树结构

13.1 树结构         树结构(tree structure)是结点和边以层次结构形式组织起来的数据结构。         数据储存在结点中,每一对结点之前通过边相连。          根结点(root node)          树结构中处于最顶层上的结点称为根结点(root node)。它提供了访问树的唯一途径。任何一个非空树结构都含有一个根结点。 

2016-12-31 18:50:14 293

原创 python数据结构学习笔记-2016-11-26-01-链表排序

12.5 链表排序        12.5.1 插入排序         将原链表的每一个结点取出,放入到新的排序链表中。#-*-coding: utf-8-*-# 链表的插入排序def llistInsertionSort(origList): # 确保链表非空 if origList is None: return # 对原链表

2016-12-31 18:49:21 1517

原创 python数据结构学习笔记-2016-11-24-02-基数排序

12.4 基数排序         基数排序(radix sort)是一种只适用于数字或字母类型的排序方法,它检查数字或字母的每一位,将之分类,按照位数的特定顺序,来将元素排列。         12.4.1 算法描述         以数字为例,将所有元素按照个位数字分类,分类好后,将个位数字大小排列组合起来,再按照十位数字分类,再按照数字大小排列组合起来,一直到最大数位为止。

2016-12-31 18:48:05 851

原创 python数据结构学习笔记-2016-11-24-01-快速排序

12.2 快速排序        快速排序(quick sort)仍旧是采用分治法,该排序算法按照选定的主键(pivot key)将序列分成两部分。此外,该算法不需要使用临时数组。        12.2.1 算法描述        首先是选定第一个元素作为主键,将序列分成两部分,分别为L和G,L是小于主键的部分,G是大于主键的部分。其次,对L和G分别重复上述过程,一直到不能再分为止。

2016-12-31 18:47:27 430

原创 python数据结构学习笔记-2016-11-23-01-归并排序

12.1 归并排序        排序算法分为两大类:比较排序和分布排序        比较排序(comparsion sort):数据可以通过排序关键字的逻辑关系比较来实现升序或降序排列。这种逻辑关系比较基于数字大小或字母顺序。        分布排序(distribution sort):将所有排序关键字分成基于每一个关键字的中间组。        归并排序(merge sor

2016-12-31 18:46:48 427

原创 python数据结构学习笔记-2016-11-20-01-直方图ADT

11.6 直方图(histograms)        11.6.1 直方图ADT        直方图ADT所包含的方法如下:Histogram(catSeq):创建直方图,catSeq为指定的分类,每一个分类的频数初始化为零;getCount(category):返回给定分类的频数;incCount(category):给定分类的频数加一;totalCount():返回所有

2016-12-31 18:46:04 390

原创 python数据结构学习笔记-2016-11-18-01-散列表ADT

11.5 散列表ADT         散列表ADT的实现代码如下:#-*-coding: utf-8-*-# 散列表ADT的实现from myarray import Arrayclass HashMap(object): # 定义散列表中每一项中状态的常数 UNUSED = None EMPTY = _MapEntry(None, None) #

2016-12-31 18:45:05 502

原创 python数据结构学习笔记-2016-11-14-01-散列表

11.1 简介        基于比较的搜索(comparison-based searches):通过元素之间的相互比较,在容器中搜索特定的元素。之前的线性搜索和二分法搜索都是基于比较的搜索,其时间复杂度也就仅能达到O(log n)。        对于由几个正整数组成的集合       将上述各数映射到[100, 199]的数组内,即      这时,我们就可以

2016-12-31 18:44:34 510

原创 python数据结构学习笔记-2016-11-12-03-八皇后问题

10.5 八皇后问题        问题描述        在国际象棋8 × 8的棋盘上放置8个皇后,使得每一个皇后都不能被另一个皇后攻击(皇后可在横竖斜走任意多步)。        10.5.1 解决四皇后问题         先将问题规模缩小,我们先来解决四皇后问题。         在4 × 4的棋盘上,皇后可以在横竖斜三个方向上走任意多步,所以这四个皇后必然处于不同行、

2016-12-31 18:43:40 393

原创 python数据结构学习笔记-2016-11-12-02-递归的应用

10.4 递归的应用       10.4.1 递归二分法搜索        二分法搜索,可以采用递归的形式,其时间复杂度仍是O(log n)。但不同的是,每一次函数调用的时间复杂度是O(1),只是整个算法的最坏情况总共调用了log n次,因此时间复杂度仍是O(log n)。#-*-coding: utf-8-*-# 二分法搜索的递归形式def recBinarySearc

2016-12-31 18:42:20 297

原创 python数据结构学习笔记-2016-11-11-01-递归

递归(recursion):通过将大问题分解成几个相对简单的且解法相同或类似的子问题,来将问题解决的方式。        10.1 递归函数         一个可以调用自身的函数称为递归函数(recursive function)。         递归调用(recursive calls)         递归展开(recursive unwinding)        1

2016-12-31 18:40:36 362

空空如也

空空如也

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

TA关注的人

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