超卖问题(图解 + 秒懂 + 史上最全) 前言 先来就库存超卖的问题作描述:一般电子商务网站都会遇到如团购、秒杀、特价之类的活动,而这样的活动有一个共同的特点就是访问量激增、上千甚至上万人抢购一个商品。然而,作为活动商品,库存肯定是很有限的,如何控制库存不让出现超买,以防止造成不必要的损失是众多电子商务网站程序员头疼的问题,这同时也是最基本的问题。 在秒杀系统设计中,超卖是一个经典、常见的问题,任何商品都会有数量上限,如何避免成功下订单买 2024-05-08
超卖问题-多位骑手抢一个外卖订单,如何保证只有一个骑手可以接到单子? 类似的问题: 多位用户抢一个商品,如何保证只有一个用户可以抢到商品? 多位用户抢一个红包,如何保证只有一个抢到? 在多线程环境中,如果多个线程同时访问共享资源(例如商品库存、外卖订单),会发生数据竞争,可能会导致出现脏数据或者系统问题,威胁到程序的正常运行。 举个例子,假设现在有 100 个用户参与某个限时秒杀活动,每位用户限购 1 件商品,且商品的数量只有 3 个。如果不对共享资源进行互 2024-05-07
算法训练-6高效算法部分 单调栈 6.4 单调栈 单调栈是一种基于栈的数据结构,所谓的单调就是满足单调递增(单调递减)的栈。主要用于解决 next_greater 问题,也就是找到下一个更大的元素。 基本模板如下: stack;//单调栈 for (int i = 0 ; i < n ; i++) { while (stack && nums[stack.top] < nums[i] 2024-05-07 计算机基础 > 算法 #算法
算法训练-6高效算法部分 贪心算法 6.3 贪心算法 前言 贪心算法一般出现在笔试题中,面试出现的概率非常低。贪心算法理解并不难,他区分于我们常用DFS/BFS/DP,他并不会枚举所有情况,而是只选择其中“当前最优”的情况。因此,贪心算法的思想并不难,甚至代码也并不难实现,但是难点在于找到贪心的策略和证明贪心策略有可行性。 贪心的正确性严格意义上来说是需要数学证明的,但这超出了数据结构的范畴,特别是笔试的时候,几乎不会有充足的时间让 2024-05-06 计算机基础 > 算法 #算法
算法训练-6高效算法部分 二分查找 6.2 二分查找 前言 二分查找的思想非常简单,在有序的数据中每次按照中点进行尝试,如果中间点大于我们要查找的值,则答案应该位于左侧, 反之右侧。由于每次可以排除现有数据量的一半,因此时间复杂度是O(logn)O(logn)O(logn)。 以下我们提供两套二分查找的模板。两个模板的原理都是一样的,区别在于边界的处理。二分查找的难点往往也在于边界。因此如果我们划分的边界是[l,mid]和[mid 2024-05-05 计算机基础 > 算法 #算法
算法训练-6高效算法部分 滑动窗口 前言 滑动窗口主要解决“满足某个条件的连续子串”问题,因为我们枚举 区间、子数组、子串 问题的时候时间复杂度是O(n2)O(n^2)O(n2),使用滑窗可以将时间复杂度优化至O(n)O(n)O(n)。 代码模板如下: for (int l = 0, r = 0 ; r < n ; r++) { // 如果右指针的元素加入到窗口内后,根据题目判断进行滑动左指针 whi 2024-05-04 计算机基础 > 算法 #算法
详细了解 RBAC(Role-Based Access Control) 摘要:本文介绍了基于角色的访问控制(RBAC),包括什么是 RBAC?什么是 RBAC 中的角色?什么是 RBAC 中的权限?NIST 标准包含的 4 级 RBAC 模型,使用 RBAC 的好处,使用 RBAC 的缺陷,RBAC 的实践,RBAC vs. ABAC vs. ACL vs. PBAC,RBAC & IAM。 什么是 RBAC? RBAC 允许您通过分配一组权限来创建和实施高级 2024-05-03
常见的查找算法与排序算法 1 常见的七种查找算法 1.1 基本查找 也叫做顺序查找。说明:顺序查找适合于存储结构为数组或者链表。 基本思想:顺序查找也称为线形查找,属于无序查找算法。从数据结构线的一端开始,顺序扫描,依次将遍历到的结点与要查找的值相比较,若相等则表示查找成功;若遍历结束仍没有找到相同的,表示查找失败。 示例代码: public class A01_BasicSearchDemo1 { pu 2024-05-02 计算机基础 > 算法 #算法
2024.5.1 计算机基础(快速排序)+算法(最小生成树) 计算机基础 题目 排序过程中,对尚未确定最终位置的所有元素进行一遍处理称为一 “趟”。下列排序中,不可能是快速排序第二趟结果的是()【2019 年全国试题 10(2 分)】 A. 5, 2, 16, 12, 28, 60, 32, 72 B. 2, 16, 5, 28, 12, 60, 32, 72 C. 2, 12, 16, 5, 28, 32, 72, 60 D. 5, 2, 12, 28, 2024-05-01
如何实现第三方授权登录? 面试中,第三方授权登录是场景题常考的一个知识点。 第三方授权登录具体的问法,常见的如下面这些形式: 如何实现第三方授权登录? 如果我们的网站要对接第三方登录,你该怎么做? 如何快速接入一个新开发的网站,让公司内部的员工可以访问? 如何让别人的应用支持使用我们的产品进行第三方登录? …… 考虑到很多同学还不清楚第三方授权登录的基本知识,因此,这篇文章会从基础开始讲起,最后我会给出一个面试回答的简 2024-04-30
2024.4.29 计算机基础+算法 计算机基础 B站笔试 涉及的知识点总结 在 jstat 命令的使用中,有一些特定的选项用于输出 Java 虚拟机的统计信息。以下是对每个选项的解释: jstat -gc:这个命令用于输出垃圾收集统计信息,包括堆中各区域的使用情况和垃圾收集次数等。 jstat -gccause:这个命令用于输出垃圾收集统计信息以及最后一次垃圾收集的原因。 jstat -gcnew:这个命令用于输出新生代的垃圾收集 2024-04-29
2024.4.28 美团笔试复盘 算法 美团0427笔试 美团笔试,上强度了!(0427春招实习笔试真题解析) 1 小美换团 小美拿到了一个字符串,她准备把其中所有的"mei"子串替换为"tuan"子串,你能帮帮她吗? 输入描述 一个仅由小写字母组成的字符串。长度不超100000 输出描述 修改后的字符串。 示例 1 输入 meituan 输出 tuantuan 思路与代码 打卡题。直接模拟 2024-04-28
Windows环境下Mysql安装与密码设置 1 MySQL 安装 所有平台的 MySQL 下载地址为: MySQL 下载 。 挑选你需要的 MySQL Community Server 版本及对应的平台。 **注意:**安装过程我们需要通过开启管理员权限来安装,否则会由于权限不足导致无法安装。 进入官网找到自己所需的安装包:https://dev.mysql.com/ ,路径:DOWNLOAD–>MYSQL Community 2024-03-20
实习攻略:从简历到面试一网打尽 实习对于求职者而言,是踏入职场的第一步,也是获取宝贵经验的良机。但如何才能在激烈的竞争中脱颖而出呢?本文将从简历制作到面试技巧,为你解答一切关于实习的疑问。 制作简历 下面是简历应该包含的内容:个人信息(基本信息,教育背景,照片)、履历信息(实习经历、项目经历、科研经历)、补充信息(如下图)。 此外,还有一些需要注意的点: 1.简历中的内容要简要精练,突出含金量高的部分; 2.在写自己的履历 2024-02-29
2024.2.27 Java基础(多线程+生产者消费者+反射+动态代理) 1 多线程 1.1 相关概念 多线程是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多个线程,提升性能。 并发和并行 并行:在同一时刻,有多个指令在多个CPU上同时执行。 并发:在同一时刻,有多个指令在单个CPU上交替执行。 进程和线程(重要) 进程:是正在运行的程序。 独立性:进程是一个能独立运行的基本单位,同时也是系统分配资 2024-02-27 每日反思 #Java
2024.2.25 LeetCode刷题+Java基础(String类) Leetcode刷题 2. 两数相加 - 力扣(LeetCode) /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int va 2024-02-25 每日反思 #算法
2024.2.23 Java基础 1.Java语言有哪些特点? 首先,Java语言是纯粹的面向对象编程语言,这意味着它支持面向对象的核心概念,比如封装、继承和多态。这就让你可以更方便地组织和管理你的代码。 Java还具有平台无关性,这是因为它的代码在执行时不是直接在硬件上运行,而是在Java虚拟机(JVM)上运行。这意味着你可以编写一次代码,然后在不同的操作系统和硬件上运行,只要有对应的JVM就行,这极大地提高了代码的可 2024-02-23
泛型 & 通配符常见面试题总结 泛型 什么是泛型?有什么作用? Java 泛型(Generics) 是 JDK 5 中引入的一个新特性。使用泛型参数,可以增强代码的可读性以及稳定性。 编译器可以对泛型参数进行检测,并且通过泛型参数可以指定传入的对象类型。比如 ArrayList<Persion> persons = new ArrayList<Persion>() 这行代码就指明了该 ArrayList 2024-02-17 Java后端 > Java #Java #面试题
2024.2.17 Java基础(泛型+Set+数据结构) *1 泛型 1.1 泛型概述 泛型的介绍 泛型是JDK5中引入的特性,它提供了编译时类型安全检测机制。 泛型的好处 把运行时期的问题提前到了编译期间; 避免了强制类型转换。 泛型的定义格式 <类型>: 指定一种类型的格式.尖括号里面可以任意书写,一般只写一个字母.例如: <E>、 <T>; <类型1,类型2…>: 指定多种类型的格式 2024-02-17 Java后端 > Java #Java
2024.2.16 Java基础(List集合) 1 Collection集合 1.1 数组和集合的区别 相同点 都是容器,可以存储多个数据。 不同点 数组的长度是不可变的,集合的长度是可变的; 数组可以存基本数据类型和引用数据类型,集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类。 1.2 集合类体系结构 1.3 Collection集合概述和使用 Collection集合概述 是单例集合的顶层接 2024-02-16