协变与逆变

什么是协变与逆变?

协变是指能够使用比原始指定的派生类型的派生程度更大(更具体的)类型。

逆变是指能够使用比原始指定的派生类型的派生程度更小(不太具体的)类型。

大部分语言是支持协变的,比如 C++,C#,Java。但是 Java 并不支持逆变。

Number num = new Integer(1);

Number[] numbers = new Integer[10];//J......

再探 Hash 算法

开篇

先前看到 HashMap 到一些东西,其中 JDK7 和 JDK8 的 hash 方式不同让我很是好奇,虽然已经知道这两个版本间实现的区别是 JDK8 中将链地址法做了优化,将链表改成类红黑树,将查询的复杂度从 O(n) 优化到了 O(logn)。

其实 hash 表这种东西在大学的 数据结构 课程上就已经学过,只是时隔太久,只知道有这样一种很棒的数据结构,但是具体怎么实现,有哪些实现......

再探内部类

开篇

内部类,一个熟悉又陌生的老朋友。到目前为止也没怎么在开发中写过内部类。但是最近在看 JDK 源码的时候,发现内部类使用到的频率非常高,这给我阅读源码带来了不少挑战。所以为了扫清这个障碍,专门复习一下内部类的相关知识。

内部类探索

Java 内部类总共由四种:成员内部类,局部内部类,匿名内部类,静态内部类。

成员内部类

成员内部类是最普通的内部类,定义在一个类的内部。......

将csv数据导入到mysql

之前用想用 Navicat 将 csv 的数据导入到 MYSQL 时候,发现有行数限制,上个星期改用了 DataGrip 工具来操作数据库,发现可以没有限制的导入数据了(很是 happy)。

但是对于 datetime 类型的数据导入还是会有问题的,需要做点处理。下面就来演示一遍。

将表中的 Datetime 类型改成 varchar 类型。

ALTER TABLE pack......

从代购到代理模式

随着生活水平的提高,人们对物质的需求也随之提高,但是有些东西是自己周遭还没有的,只能去别的地方购买,但是出于时间和成本的考虑,人们一般不会选择为了购买东西而专门来一次说走就走的行程。这个时候,代购就出现了。

当然我们不是为了来讲代购的,而是来总结一种在系统开发中用到的一种设计模式---代理模式。代理模式和代购的作用如出一辙。只要你知道代购是干嘛的,你就知道代理模式是干嘛的了。

在 Java......