Leon Ling's Blog

人的一生,总是为了追寻生命中的光,而走在漫长的路上

前缀和&差分算法

在做LeetCode和其他算法题的时候,遇到复杂的DP问题经常看到分享的答案中有用到被称为“前缀和”的算法,这里把搜集到的概念和相关用法整理到一起。 [toc] 1. 前缀和 前缀和是一种重要的预处理,能大大降低查询的时间复杂度。我们可以简单理解为“数列的前 n 项的和”。 例题 有 N 个的正整数放到数组 A 里,现在要求一个新的数组 B,新数组的第 i 个数 B[i]是...

海量数据处理-BitMap

[toc] 1. 什么是Bit-Map 所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。 看一个具体的例子,假设我们要对0-7内的5个元素(4,7,2,5,3)排序(这里假设这些元素没有重复)。那么我们就可以采用Bit-map的方法来达到排序的目的。 要表示8个数,我们就只...

剑指Offer-TCP&UDP

TCP&UDP协议常见知识点

[toc] 网络层只把分组发送到目的主机,但是真正通信的并不是主机而是主机中的进程。传输层提供了进程间的逻辑通信,传输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看起来像是在两个传输层实体之间有一条端到端的逻辑通信信道。 TCP和UDP这两种数据传输协议就存在于传输层。 1. UDP 和 TCP 的特点 用户数据报协议 UDP(User Datagram Prot...

博客迁移说明

Blog Migration anounce

“ 🙉🙉🙉 ” 万万没想到, 本来准备好好经营的博客也有迁移的一天. 本来维护这样一个博客, 一方面是记录自己的学习历程, 另一方面也是利用博客系统的tag功能给自己的笔记做个分类. 现在看来这种笔记分类方法还是效果不够好, 而且博客框架本身似乎也存在一些Bug, 最近忙着秋招也没有时间去调试. 因此, 我把所有的笔记和学习记录重新整理, 更加系统地迁移到了Notion平台上...

剑指Offer-MySQL

MySQL的一些基础概念

[toc] MySQL 1. 索引 1.1 B+ Tree 原理 1.1.1 数据结构 B Tree 指的是 Balance Tree,也就是平衡树。平衡树是一颗查找树,并且所有叶子节点位于同一层。 B+ Tree 是基于 B Tree 和叶子节点顺序访问指针进行实现,它具有 B Tree 的平衡性,并且通过顺序访问指针来提高区间查询的性能。 在 B+ Tree 中,一个节点...

C++ std中vector和list的区别

从零开始C++

[TOC] 1. 数据结构设计 vector数据结构 vector和数组类似,拥有一段连续的内存空间,并且起始地址不变。 因此能高效的进行随机存取,时间复杂度为o(1); 但因为内存空间是连续的,所以在进行插入和删除操作时,会造成内存块的拷贝,时间复杂度为o(n)。 另外,当数组中内存空间不够时,会重新申请一块内存空间并进行内存拷贝。 lis...

剑指Offer-数据库&SQL

数据库基础知识总结

[TOC] 数据库基础 1. 事务 事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。 1.1 ACID 原子性(Atomicity) 事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。 回滚可以用回滚日志来实现,回滚日志记录着事务所执行的修改...

如何修改 PySpark Dataframe 的列名

从零开始Spark

在做Spark Dataframe操作的时候会遇到很多需求. 最近我遇到了一个问题, 就是通过agg方法传入多种聚合函数对多列进行操作, 然后后就生成了多列的聚合结果. 但是列名就是以 原列名+聚合函数的方法, 然后就产生需求 —- 如何修改这些列名呢? 然后找到了以下方法: 使用selectExpr 1 2 3 4 5 6 7 8 9 10 11 12 13 ...

Hive保留关键字冲突的解决

从零开始学Hive

最近做Hive表创建的时遇到一个问题. 报错如下: 1 FailedPredicateException(identifier,{useSQL11ReservedKeywordsForIdentifier()}?) 最后在HCC上找到了对应的解决办法. 1 2 3 -- 解决办法很简单, 就是直接修改一下Hive的配置 SET hive.support.sql11.reserved...

剑指Offer-计算机网络

计算机网络基础知识总结

[TOC] 1. 计算机网络体系结构 1.1 五层协议 应用层 :为特定应用程序提供数据传输服务,例如 HTTP、DNS 等协议。数据单位为报文。 传输层 :为进程提供通用数据传输服务。由于应用层协议很多,定义通用的传输层协议就可以支持不断增多的应用层协议。运输层包括两种协议:传输控制协议 TCP,提供面向连接、可靠的数据传输服务,数据单位为报文段;用户数据报协议 UDP...