自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(564)
  • 资源 (4)
  • 收藏
  • 关注

原创 使用左连接和右连接代替全连接 3 (3 张表,值不唯一)(4张表)(统一结论)

在前两篇文章中,我们都是使用的 2 张表,如果是 3 张表,结论会不会变呢?我们来试一下。3. 3张表,值不唯一的情况。3.1 创建测试用表。DROP TABLE IF EXISTS table1;CREATE TABLE table1( column_1 NUMERIC);INSERT INTO table1VALUES (123);INSERT INT...

2019-12-05 16:32:29 441

原创 使用左连接和右连接代替全连接 2 (2 张表,值不唯一)

在上篇文章中,我们的测试用表,没一行都是唯一的,也就是没有重复值,如果有重复值,结论会不会变呢?2. 2 张表,值不唯的情况。2.1 创建测试用表。DROP TABLE IF EXISTS table1;DROP TABLE IF EXISTS table2;CREATE TABLE table1( column_1 NUMERIC);INSERT ...

2019-12-05 14:43:04 347

原创 使用左连接和右连接代替全连接 1 (2 张表,值唯一)

MySQL 不支持 FULL OUTER JOIN,如果需要使用 FULL OUTER JOIN,可以使用 LEFT OUTER JOIN 和 RIGHT OUTER JOIN 来模拟。这篇文章研究怎样使用 LEFT OUTER JOIN 和 RIGHT OUTER JOIN 代替 FULL OUTER JOIN。 因为 PostgreSQL 支持 FULL OUTER JOIN...

2019-12-04 17:27:05 407

原创 MySQL 和 PostgreSQL 字符串类型比较

1. MySQL: 1.1 CHAR(n) 1.1. 存储固定长度(n)的字符串。n 范围是 [0, 255]。n 的缺省值为 1. 1.2. 当插入的字符串长度小于 n 时,MySQL 会在末尾补充空格。查询的时候,MySQL 会删除末尾的空格(不会删除头部空格)。 1.3. MySQL 在处理 >、 >=、 <、...

2019-10-18 19:33:52 1930

原创 ConcurrentHashMap

ConcurrentHashMap 在功能上与 HashTable 一致,都是线程安全的键值对容器。但是 ConcurrentHashMap比 HashTable 有更好的并发性能:1. HashTable 是同步的,也就是说,它的所有方法都是被 synchronized 修饰的。所以当 thread-1 进入put 方法时,其它所有线程都不能进入put/get 方法。这样做可以确保线程...

2019-10-16 19:29:07 107

原创 Collections.synchronizedXxx

先来看一下集合类: 表 1 . Java Collection Implementations以上 10 个Java 集合的实现类搜不是同步的。(类/成员函数/代码块 没有使用 synchronized 修饰)可以通过Collections.synchronizedXxx 来把他们变成同步的。比如...

2019-10-12 19:06:40 1003

原创 LinkedHashMap

LinkedHashMap 继承自 HashMap,与HashMap 相比,增加了一个功能:每个节点使用双向链表链接起来,这样就能保证节点的遍历顺序与插入顺序一致。这是 HashMap 的节点: static class Node<K,V> implements Map.Entry<K,V> { final int hash; ...

2019-10-12 18:36:55 122

原创 TreeMap

TreeMap 通过红黑树实现,一般的读写操作都是 log(n) 的时间复杂度: containsKey,get,put,remove。来看一下 put 函数的源码: public V put(K key, V value) { Entry<K,V> t = root; if (t == null) { c...

2019-10-12 18:03:52 116

原创 NavigableMap

1. NavigableMap 继承自 SortedMap,所以它的元素是有序的。2. 在 SortedMap 基础上,支持快速搜索符合条件的最近的元素。这里条件主要是指lower(>),floor(>=),ceiling(<),higher(>)。3. 支持逆序访问。descendingKeySet /descendingMap。4. 支持获取子集合...

2019-10-12 15:20:25 2895

原创 RandomAccess

RandomAccess 只是一个标记,继承这个接口的类,支持快速随机访问(时间复杂度为O(1))。一些通用算法,可以根据这个接口,知道相应的类支持随机访问还是顺序访问,根据这个信息来提升算法的性能。参考链接:1.https://docs.oracle.com/javase/8/docs/api/java/util/RandomAccess.html...

2019-10-12 14:47:41 298

原创 NavigableSet

NavigableSet 继承自 SortedSet,相比于 SortedSet,NavigableSet 多了以下几类功能:1. 直接获取符合条件的最近的元素,这里,条件主要是 lower(>)、 floor(>=)、 higher(<)、 ceiling(<=)。如果符合条件的元素不存在,就返回 null。2. 逆向访问:descendingSet,descen...

2019-10-12 12:34:43 497

原创 HashMap

我们通过查看 put 方法的源码,来比较 HashMap 和 HashTable 的区别: public V put(K key, V value) { return putVal(hash(key), key, value, false, true); // value 可以为 null } static final int hash(Object k...

2019-09-30 18:13:39 146

原创 HashTable

Map 接口中,key 和 value 都可以为 null。HashTable 实现中,key 和 value 都不允许为 null。我们看一下它添加元素的方法: public synchronized V put(K key, V value) { if (value == null) { // value 不能为 null throw...

2019-09-30 17:47:26 129

原创 Map

Map 没有继承 Collection,因为 Map 是键值对的集合,而 Collection 仅仅是值的集合。Map 要求键必须唯一。Map 的主要实现有:HashTable,HashMap,LinkedHashMap,IdentityHashMap,WeakHaspMap。参考链接:1.https://docs.oracle.com/javase/8/docs/api/...

2019-09-30 17:07:27 97

原创 TreeSet

HashSet 是通过 HashMap 实现的。LinkedSet 是通过 LinkedHaspMap 实现的。果然,TreeSet 是通过 TreeMap 来实现的。我们来看一下 TreeSet 的 add 方法的实现: public boolean add(E e) { return m.put(e, PRESENT)==null; } ...

2019-09-30 16:35:40 119

原创 SortedSet

SortedSet 是一个接口,它继承自 Set。比 Set 多的功能是,它保证元素按照大小排序。因为这个特点,所有它有 first(), last() 这样的成员函数。需要区分的是,LinkedHashSet 保证元素的顺序,是保证插入顺序与遍历顺序一只。而SortedSet 保证的顺序是指遍历顺序始终是按照从小到大排序。当然了,也可以自定义比较函数,让它按照从大到小排序。参考链接...

2019-09-30 16:07:29 672

原创 LinkedHashSet

继承自 HashSet,不过比 HashSet 多的功能是它维护了一份双向链表,来将它所有的元素连接起来。遍历的顺序与插入的顺序是一致的。HashSet 不能保证这样的一致性。看 LinkedHashSet 的源码,发现 LinkedHashSet 没有自己的方法,只有一些构造方法: public LinkedHashSet(int initialCapacity, float l...

2019-09-30 15:49:58 140

原创 HashSet

HashSet,顾名思义,我们可以得到两点信息:1. 实现了 Set 接口。2. 通过 Hash 表实现。所以它的 element 是无序的。下面看一下 add 方法的源码: public boolean add(E e) { return map.put(e, PRESENT)==null; } private transient Hash...

2019-09-30 15:18:29 96

原创 Set

Set 是一个没有重复元素的集合,允许 null 作为 element。它继承自 Collection 接口,与 Collection 接口相比,几乎没有添加新的函数。因为它只表示一个集合,不需要向 List 一样支持随机访问(get, set),也不需要像 Queue 一样支持队头/队尾部的插入/删除/读取。参考链接:1.https://docs.oracle.com/javas...

2019-09-30 11:48:02 86

原创 ArrayDeque

从名字就能看出来:1. 实现了 Deque 接口。支持头部/尾部的插入/删除/读取操作。2. 使用数组实现,如果容量不够,会自动扩容。下面我们以 add 函数为入口,看一下源码: public boolean add(E e) { addLast(e); return true; } public void addLast(E...

2019-09-30 11:38:25 349

原创 Deque

Deque 是 ”double ended queue“ 的缩写,通常发音是 ”deck“。顾名思义,就是在队头或者队尾都可以插入或者删除。而 Queue 只能在队列尾部插入,在队列头部获取。与 Queue 一样,它的插入/删除/获取都有两个版本:1. 操作失败时抛出异常。2. 操作失败时返回 null 或者 false.与 Queue 一样,这个借口不提供按照下标访问: get(...

2019-09-30 11:05:00 121

原创 PriorityQueue

PriorityQueue 基于小根堆,如果需要大根堆,就在构造函数里面自定义 Comparator。因为 PriorityQueue 必须支持比较运算,所以不能为 null。PriorityQueue 不是线程安全的,如果需要在多线程下使用,应该使用 PriorityBlockingQueue。看一下PriorityQueue 的 add 方法: public boo...

2019-09-29 18:40:15 276

原创 Queue

Queue,队列,通常支持 FIFO(first-in-first-ou)操作。直接写总结:1. 它所支持的插入/删除/获取操作都有两个版本,分别对应操作失败的两种策略: 1.1. 抛出异常。 1.2.返回 null 或者 false.3. Queue 的操作不支持阻塞,如果需要支持阻塞,需要使用 BlockingQueue, BlockingQueue 是...

2019-09-29 18:21:13 127

原创 Stack

Stack 继承自 Vector, 的 push 方法如下: public E push(E item) { addElement(item); return item; } public synchronized void addElement(E obj) { modCount++; ensureCa...

2019-09-29 17:48:37 97

原创 Vector

和 ArrayList 一样,是通过数组实现的 List, 与 ArrayList 不同的是,Vector 是同步的。比如下面这段代码: public void add(int index, E element) { insertElementAt(element, index); } public synchronized void insertEl...

2019-09-29 17:38:44 76

原创 LinkedList

LinkedList 是 List 的另一种实现:通过双向链表来实现的。与 ArrayList 一样,它的方法也不是同步的,可能会抛出ConcurrentModificationException 。如果有多个 thread 需要写同一个 LinkedList,最好在创建它的时候就创建一个同步版本:List list = Collections.synchronizedList(new L...

2019-09-29 17:14:32 81

原创 ArrayList

这是一个可改变 size 的,通过数组实现的 List。它的很多方法都是 O(1) 的时间复杂度,比如size, isEmpty, get, set, iterator,listIterator。add 方法的平摊复杂度也是 O(1),也就是说,调用 n 次的复杂读为 O(n).看一下源码就能明白很多: public boolean add(E e) { ...

2019-09-29 16:57:34 74

原创 List

List 是有序集合,允许重复的值,也允许多个 null 存在。List 比 Collection 多的方法:1. index 相关:get, set,indexOf, lastIndexOf.2. 排序: sort.参考链接:1.https://docs.oracle.com/javase/8/docs/api/java/util/List.html...

2019-09-29 16:24:04 75

原创 Collection

Collection 接口是 Java 集合框架的根接口。Jdk 没有类直接继承这个j接口,而是继承它的子借口,比如 List, Set, Queue.主要方法:1. 添加元素: add, addAll.2. 删除元素: clear, remove, removeAll, removeIf, retainAll.3. 获取 size :isEmpty, size.4. 转换成 ...

2019-09-29 16:15:04 83

原创 Iterable

Iterable 接口是 Collection 的父接口,实现了这个接口的 Class 可以用在 for-each 循环当中。Iterable 借口主要定义了 3 个方法:1.iteratorIterator<T> iterator();返回集合的迭代器。2.forEach default void forEach(Consumer<? s...

2019-09-29 15:44:27 222

原创 Java 集合框架一 :java.util包

这个专栏整理一下 Java 语言的集合框架。仅包含 java.util 包下面的类。java.util.concurrency 将用另一个专栏来写。Java 版本:Java 8Java 集合的整体框图如下:后面几篇文章做打算做几件事情:1. 列举每个 Interface 的主要方法。2. 列举实现每个 Interface 的 Class,看这些 Class 的...

2019-09-29 15:22:05 169

原创 华为机试题 凸包

输入:13;-3,-3;1,3;2,-4;6,1;-2,-2;4,5;1,-2;1,4;-2,3;-4,1;-1,1;2,2;1,-1输出:-4, 1-2, 34, 56, 12, -4-3, -3#include#include#include#include#include#include#include#include

2015-08-18 19:37:16 778

原创 华为机试题 好友关系管理

好友关系管理描述:现有一个社交网站,其好友推荐策略为:用户A和用户B不是好友,当二人的共同好友数量超过好友推荐阈值m时,就向A和B分别推荐为彼此好友。 本题任务为:对设定的m值,给定一组用户及各自好友列表,对这一组用户,反复自动应用上述好友推荐策略后(假设每次推荐都被采纳),求指定用户的最终好友列表。 注:好友关系是双向的,即:如果用户A是用户B的好友,

2015-08-17 20:45:32 1659 1

原创 计蒜客 难题题库 224 判断奇偶

65次 23.0% 1000ms 65536KBessie那惨无人道的二年级老师搞了一个有 N (1 输入格式:第一行: 一个单独的整数: N * 第2到第N+1行: 第j+1行有第j个需要判断奇偶性的整数。输出格式:第1..N行: 第j行根据第j个整数的奇偶性输出一个单词" even" 或者" odd"1024可以被2整除; 而5931不可以。样例1输入:

2015-08-11 09:20:59 1025

原创 计蒜客 难题题库 223 字母排序

49次  14.2%  1000ms  65536K XXXX年突然有外星人造访,但大家语言不通,不过科学家们经过研究发现外星人用26个英文字母组成的单词中最长不降子序列的长度来表述数字,且英文字母的排列顺序不同,现给出其排列顺序,再给出外星人说的每个数字(其实是每个英文单词,用空格隔开),翻译出外星人所说的数字(连续输出,最后加回车)。   (因为是最长不降子序列,所以数字中没有0,

2015-08-11 09:19:28 2407

原创 计蒜客 难题题库 222 疲倦程度

27次  3.70%  1000ms  65536K奶牛Bessie有N分钟时间跑步,每分钟她可以跑步或者休息。若她在第i分钟跑步,可以跑出D_i米,同时疲倦程度增加1(初始为0)。若她在第i分钟休息,则疲倦程度减少1。无论何时,疲倦程度都不能超过M。另外,一旦她开始休息,只有当疲惫程度减为0时才能重新开始跑步。在第N分钟后,她的疲倦程度必须为0。输入格式:第一行,两个整数

2015-08-11 09:17:49 577

原创 计蒜客 难题题库 221 N的-2进制表示

36次  13.8%  1000ms  65536K对于十进制整数N,试求其-2进制表示。 例如,因为  1*1  +  1*-2  +  1*4  +  0*-8  +1*16  +  1*-32  =  -13  ,所以(-13)_10  =  (110111)_-2。输入一个整数,代表要转换的十进制数。输出一个整数,代表N的-2进制表示。|N|  样例

2015-08-11 09:16:41 1001

原创 计蒜客 难题题库 220 线段的总长

22次  22.7%  1000ms  65536K数轴上有N个点,任意两点连线得到n(n-1)条线段,试求线段的总长。输入格式:第一行,一个整数N,表示点数。 接下来N行,每行一个整数X_i,表示点的坐标。输出格式:输出为一个整数,表示线段的总长。N  样例1输入:515324输出:40

2015-08-11 09:15:58 820

原创 计蒜客 难题题库 219 最大质因数

52次  13.4%  1000ms  65536K给出N个数字,试求质因数最大的数字。输入格式:第一行,一个整数N,表示数字个数。 接下来N行,每行一个整数A_i,表示给出的数字。输出格式:一个整数,表示质因数最大的数字。N  举例 38和1238=19*2, 12=2*3*3, 38最大的是19 12最大的是3, 所以本数据要输出38。样

2015-08-11 09:14:35 1478

原创 计蒜客 难题题库 218 配对元素

15次  53.3%  1000ms  65536K给出2个序列A={a[1],a[2],…,a[n]},B={b[1],b[2],…,b[n]},从A、B中各选出n个元素进行一一配对(可以不按照原来在序列中的顺序),并使得所有配对元素差的绝对值之和最大。输入格式:输入的第1行为1个整数n 第2行包含n个整数,题目中的A序列。  第3行包含n个整数,题目中的B序列。 输

2015-08-10 10:16:07 835

成功解析HMR3000数据

从HMR3000发过来的数据中获得Heading、Pitch、Roll三轴数据

2014-07-05

C8051F120倍频成功

成功将C8051F120系统时钟 倍频4倍,想要其他倍数调一下系数就可以了

2014-07-05

HMR3000获取三轴数据

/*********************************************************** 时间:20140612 作者:CRJ 函数原型:void GetHPR(void) 入口参数:全局数组Uart0Receive[] 出口参数:Heading: HMR3000航向 0~359.9 × 10 = 0~3599 -> 0 ~ 3599000 Pitch : HMR3000俯仰 -44.9~ 44.9 × 10 =-499~499 ->-499000 ~ 499000 Roll : HMR3000横滚 -44.9~ 44.9 × 10 =-499~499 ->-499000 ~ 499000 功能描述:从串口0接收来的HMR300数据,得到电子罗盘的三轴数据 ************************************************************/

2014-07-05

C8051F120倍频函数

函数原型:void ClockConfig(void) 入口参数:无 出口参数:无 功能描述:系统时钟的初始化配置,采用PLL倍频22.1184M*4=88.4736M 完全按照芯片手册上的步骤给C8051F120单片机倍频,在我的单片机上倍频成功

2014-07-05

空空如也

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

TA关注的人

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