主页

Leetcode —「蓄水池采样」系列题解

给定一个无限的数据流,要求随机取出 k 个数。也就是说当数据流有 N 个数据时,不论 N 为多少,每个数被取出的概率都为 k / N。 先取出前 k 个数; 从第 k + 1 开始,以 k / i 的概率取出这个数,并随机替换掉之前已经取出的 k 个数中的一个。 随机数索引 Leetcode - 398 Random Pick Index (Medium) 题目描述:给定...

阅读更多

Java - equals() 和 hashCode()

一、equals() 的作用 equals() 的作用是 用来判断两个对象是否相等。 equals() 定义在 JDK 的 Object.java 中。通过判断两个对象的地址是否相等(即,是否是同一个对象)来区分它们是否相等。 public boolean equals(Object obj) { return (this == obj); } 既然 Object.java...

阅读更多

剑指Offer - Java题解 「下」

48. 最长不含重复字符的子字符串 Code It Now!!! 题目描述:请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 解题思路:滑动窗口,Map 记录字符出现的位置,判断是否重复。 public int lengthOfLonges...

阅读更多

Spring — 控制反转 IoC

一、基本概念 1. IoC 是什么 IoC - Inversion of Control,即「控制反转」,不是什么技术,而是一种设计思想。 在 Java 开发中,IoC 意味着将你设计好的对象交给容器控制,而不是传统的在对象内部直接控制。 谁控制谁,控制什么: 传统 Java SE 程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而 Io...

阅读更多

计算机网络 — 基础知识

一、OSI 与 TCP/IP 各层的结构与功能 物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。 数据链路层:负责建立和管理节点间的链路。 网络层:通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。 传输层:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输。 会话层:向两个实体的表示层提供建立和使用连接的方法。 表示层:处理用户信息的表示问...

阅读更多

剑指Offer - Java题解 「中」

26. 树的子结构 Code It Now!!! 题目描述:输入两棵二叉树 A 和 B,判断 B 是不是 A 的子结构。(约定空树不是任意一个树的子结构) 解题思路:先序遍历,包含判断。 public boolean isSubStructure(TreeNode A, TreeNode B) { if (A == null || B == null) return fals...

阅读更多

MySQL — 存储引擎

简单来说,存储引擎就是指表的类型以及表在计算机上的存储方式。 在 MySQL 中有很多存储引擎,可以通过 SHOW ENGINES 语句来查看,主要的存储引擎有:InnoDB、MuISAM 和 Memory。 一、InnoDB 是 MySQL 默认的事务型存储引擎,只有在需要它不支持的特性时,才考虑使用其它存储引擎。 实现了四个标准的隔离级别,默认级别是可重复读(REPEATABLE...

阅读更多

MySQL — 索引

一、什么是索引? 索引(Index)是帮助 MySQL 高效获取数据的数据结构。 索引的应用在生活中很常见,例如图书的目录、词典等,都是通过不断的缩小想要获得数据的范围来筛选出最终想要的结果。 二、索引的数据结构 数据库中的数据是存储在磁盘中的,磁盘 IO 是十分高昂的操作,所以每次查找数据的时候需要把磁盘 IO 控制在一个很小的数量级,由此就引出了 B/B+ 树的数据结构。 B ...

阅读更多