Notes

A collected map of technical notes and project thinking.
126 / 126 notes

鱼泡 - 伙伴匹配系统

鱼泡 - 伙伴匹配系统

鱼泡 - 伙伴匹配系统 介绍:帮助大家找到志同道合的伙伴,移动端 H5 网页(尽量兼容 PC 端) 需求分析 用户去添加标签,标签的分类(要有哪些标签、怎么把标签进行分类)学习方向 java / c++,工作 / 大学 主动搜索:允许用户根据标签去搜索其他用户 Redis 缓存 组队 创建队伍 加入队...
技术笔记 后端开发 项目实战 Java SpringBoot Redis

用户中心项目进度

用户中心项目进度

用户中心项目进度 TODO 0: 前端 向后端请求并且成功返回数据后未跳转到welcome页面 ✔ 前端增加了拦截器,取不到state状态时会自动跳转回登录页面 非dev模式下代理失败问题 ✔ 后端 注册字段补充到后端登录以及查询逻辑当中 ✔ 登出账号接口编写 ✔ 优化后端代码 ✔ 优化后端代码 全局响应处...
技术笔记 后端开发 项目实战 Java SpringBoot Redis

鱼泡 - 伙伴匹配系统

鱼泡 - 伙伴匹配系统

鱼泡 - 伙伴匹配系统 介绍:帮助大家找到志同道合的伙伴,移动端 H5 网页(尽量兼容 PC 端) 需求分析 用户去添加标签,标签的分类(要有哪些标签、怎么把标签进行分类)学习方向 java / c++,工作 / 大学 主动搜索:允许用户根据标签去搜索其他用户 Redis 缓存 组队 创建队伍 加入队...
后端开发 项目实战 Java SpringBoot Redis 学习笔记

用户中心项目进度

用户中心项目进度

用户中心项目进度 TODO 0: 前端 向后端请求并且成功返回数据后未跳转到welcome页面 ✔ 前端增加了拦截器,取不到state状态时会自动跳转回登录页面 非dev模式下代理失败问题 ✔ 后端 注册字段补充到后端登录以及查询逻辑当中 ✔ 登出账号接口编写 ✔ 优化后端代码 ✔ 优化后端代码 全局响应处...
后端开发 项目实战 Java SpringBoot Redis 学习笔记





二进制位计算

二进制位计算

二进制位计算 在计算机中 a&b 表示a与b进行按位与运算, 逐一比较两个数的二进制位,如果两个比特都是1,该位结果为1,否则为0。 在二进制中 x & 1,等价于检查数字的最低为是否为1(最右边的位)(因为1的二进制数为1)。 而在二进制到十进制的转换中,由于最右的数为 x*2_0,2_0=1,因此奇数可以表示为2k+1,偶数可以表示为2k。 **根据每个二进制位...
技术笔记 面试 计算机核心课程

消息存储方案(已更新为kbase)

消息存储方案(已更新为kbase)

IM系统为了保证消息必达以及发送可靠,消息数据是先落盘后推送or同步的。消息从发 送方发出后,经过服务端转发,服务端会先将消息保存到消息库,完成消息的持久化保存 后,对于在线的接收方,会直接选择通过长链接在线推送。但在线推送并不是一个必达路 径,只是为了保证“即时”,采用的一个更优的消息传递路径。对于在线推送失败或者离线的 接收方,会通过主动拉取的方式获得服务端所有未同步消息。通过推...
技术笔记 后端开发 消息队列 分布式 系统设计 系统架构

RocketMQ 是什么?

2024-11-10-RocketMQ和Kafka有什么区别?

作为一个程序员,假设你有 A、B 两个服务,A 服务发出消息后,不想让 B 服务立马处理到。而是要过半小时才让 B 服务处理到,该怎么实现? 这类延迟处理消息的场景非常常见,举个例子,比如我每天早上到公司后都会点个外卖,我希望外卖能在中午送过来,而不是立马送过来,这就需要将外卖消息经过延时后,再投递到商家侧。 那么问题就来了,有没有优雅的解决方案?当然有,没有什么是加一层中间层不能解...
技术笔记 后端开发 消息队列 Kafka RocketMQ 分布式

**1. 先排查是不是bug,如果是,要快速修复**

2024-11-10-Kafka如何处理百万消息积压

大家在日常开发中,是否处理过大批量消息积压的问题呢? 它一般由于代码bug(比如消费逻辑处理有误)、或者生产者的生产速度大于消费者的消费速度(如大促、抢购等活动期间导致消息数量激增,或者消费者处理速度极慢),就可能导致生产环境出现百万、甚至千万的消息积压。 那么,假设发生kafka百万消息堆积,如何解决呢? 先排查是不是bug,如果是,要快速修复 优化消费者代码逻辑 ...
技术笔记 后端开发 消息队列 Kafka 分布式 高并发

ZK实现分布式锁

2024-11-10-浅谈Zookeeper

聊聊分布式锁 (qq.com)—字节跳动谈分布式锁 ZK实现分布式锁 ZooKeeper 分布式锁是基于 临时顺序节点 和 Watcher(事件监听器) 实现的。 获取锁: 首先我们要有一个持久节点/locks,客户端获取锁就是在locks下创建临时顺序节点。 假设客户端 1 创建了/locks/lock1节点,创建成功之后,会判断 lock1是否是 /locks 下最小的...
技术笔记 后端开发 中间件 分布式 Zookeeper

Kafka为什么这么快

2024-11-01-浅谈Kafka

Kafka为什么这么快 顺序读写 零拷贝 消息压缩 分批发送 顺序读取 零拷贝原理 把磁盘中的某个文件内容发送到远程服务器上 那么它必须要经过几个拷贝的过程: 从磁盘中读取目标文件内容拷贝到内核缓冲区Read Buffer中。 CPU控制器再把内核缓冲区的数据赋值到用户空间的缓冲区中 接着在应用程序中,调用write()方法,把用户空间缓冲区中的数...
技术笔记 后端开发 消息队列 Kafka 分布式 数据结构

跳表

跳表

跳表 结构 ele 权重设计 节点的权重在跳表中通常是用来决定节点的排序和层级结构的。设计节点权重的方式主要考虑以下几个方面: 唯一性:每个节点的权重应该是唯一的,以便在查找时能够准确定位目标节点。 排序规则:节点的权重决定了跳表中节点的顺序。一般情况下,权重越大的节点在跳表中越靠后。 随机化:为了保持跳表的平衡性,节点的权重...
技术笔记 后端开发 数据库 Redis

算法篇

算法篇

算法篇 上述题目是一场Java开发工程师讨论中提问的Java开发的问题,假如你是Java高级架构师,并且对Java程序员成长路线的所有技术栈都非常熟悉,精通Java基础、Mysql数据库知识、缓存数据库、Spring全家桶、分布式等各种知识请你尽可能详细、谨慎、全面、细心、前瞻,尽可能通俗易懂地,尽可能全面,尽可能仔细,尽可能仔细分析考虑所有可能为我讲解上述问题,可以尽可能多地输出t...
技术笔记 开发工具 AI 学习工具

秒杀三阶段

2024-10-28-抽奖系统设计

秒杀三阶段 通常,从秒杀开始到结束,往往会经历三个阶段: 准备阶段:这个阶段也叫作系统预热阶段,此时会提前预热秒杀系统的业务数据,往往这个时候,用户会不断刷新秒杀页面,来查看秒杀活动是否已经开始。在一定程度上,通过用户不断刷新页面的操作,可以将一些数据存储到Redis中进行预热。 秒杀阶段:这个阶段主要是秒杀活动的过程,会产生瞬时的高并发流量,对系统资源会造成巨大的冲击,所以,...
技术笔记 后端开发 分布式 系统设计 高并发 系统架构

RSA+AES加密算法

2024-10-24-Security+JWT实现SSO

参考文章: 官方github地址文档 RSA+AES加密算法 在HTTPS中,RSA+AES的加密方案结合了非对称加密(RSA)和对称加密(AES)的优点,以确保通信的安全性和效率。下面是具体的过程和相关细节: 1. RSA和AES在HTTPS中的加密流程 HTTPS加密使用RSA+AES的混合加密模式,整个过程可以分为两个阶段: (1) 握手阶段(使用RS...
技术笔记 后端开发 Java SpringSecurity 计算机网络


循环依赖问题

循环依赖问题

循环依赖问题 参考文章: 三级缓存是如何解决bean循环依赖的 bean的循环依赖解决过程 顺序为,实例化、属性赋值(属性填充)、初始化、依赖注入。 实例化 Bean: Spring 在实例化 Bean 时,会先创建一个空的 Bean 对象,并将其放入一级缓存中。 属性赋值: Spring 开始对 Bean 进行属性赋值,如果发现循环依赖,会将当前 Bean 对象提前...
技术笔记 后端开发 Java Spring 面试 问题排查

undo-log

2024-10-24-Mysql日志篇

undo-log 作用 搜索引擎层用于事务回滚的日志,目的是用于保证事务的原子性 MVCC的实现是通过:read view + undo log实现的。 实现过程 事务开始后,根据不同的增删改类型的语句在undo-log中记录不同的数据,以便于事务回滚后数据的恢复。并且在记录行上维护undo-log中两个额外的字段事务id和roll_point指针。数据行之间由rol...
技术笔记 后端开发 数据库 MySQL SQL

学习文章

学习文章

学习文章 慢查询优化 (yuque.com) MySQL中什么情况下会出现索引失效?如何排查索引失效?_如何定位索引失效-CSDN博客 五分钟搞懂MySQL索引下推大家好,我是老三,分享一个小知识点。面试时候问到索引,常常会顺嘴问一句索引下推。给我五分钟, - 掘金 (juejin.cn) MySQL索引可能失效之or、is null、is not null、不等于(!=...
技术笔记 后端开发 数据库 MySQL SQL 问题排查

面试问题

2024-10-21-锦鲤抽奖

面试问题 文章: lottery面试问题 项目亮点总览 项目描述:本抽奖系统是智动社区的扩展服务,本项目以使用和调用美团、京东、字节掘金的抽奖场景服务,负责提供各种抽奖活动,定期对平台活跃度高、贡献度大的用户奖励抽奖资格,从而提高整个平台用户的活跃度和积极性。同时将该系统与微信公众号进行对接,为用户提供方便快捷的抽奖体验。 后端技术:Spring Boot、Sharding-J...
技术笔记 后端开发 项目实战 Java 系统设计 高并发

Feed流

2024-10-21-Feed流系统

本文基于Feed流架构参考,记录从学习到实现一个可以承载小流量的仿微博Feed流系统的过程。 Feed流 参考文章: 掘金: 使用redis实现feed流 即刻:自主实现了一个feed流系统 微博feed流系统架构 Feed流系统架构理论 IM开发技术学习:揭秘微信朋友圈这种信息推流背后的系统设计 什么是 feed 流 信息推流(以下简称“Feed流”...
技术笔记 后端开发 分布式 系统设计 系统架构

redis缓存

2024-10-21-分布式Redis

redis缓存 为什么流量增大会导致数据库崩溃 数据库压力增大导致程序崩溃的原因主要有以下几点: 系统层面: 资源耗尽: 当数据库接收到大量请求时,CPU、内存和磁盘I/O等资源会迅速消耗殆尽,导致系统无法处理新的请求。 网络瓶颈: 数据库与应用服务器之间的网络带宽可能成为瓶颈,导致请求延迟和丢失。 ...
技术笔记 后端开发 数据库 Redis


数据库事务

2024-10-20-Mysql事务

数据库事务 参考文章: 一文详解脏读、不可重复读、幻读 数据库事务是一系列不可分割的操作的集合。数据库事务可以保证多个对数据的操作(一系列SQL语句)要么全部执行成功,要么全部不执行。 关系型数据库事务特性 ACID AID是手段,C是目的 并发事务会带来的问题 脏读 丢失修改(Lost to Modify) 不可重复读 幻读 不可重复读与幻读 ...
技术笔记 后端开发 数据库 MySQL SQL


Java多线程

Java多线程

Java多线程 多线程的状态 java中锁的分类 乐观锁悲观锁 读写锁 可重入锁 自旋锁 因此自旋锁适用于锁竞争不激烈、锁持有时间短的场景。 优缺点 CAS 是什么 怎么实现的 缺点 ABA问题 只能保证一个共享变量的原子操作 cpu开销大 基于CAS实现的类 原子类操作基本数据类型 AQS CLH CLH详解 CLH比传统CAS自旋锁优化点 CLH数...
技术笔记 后端开发 Java JAVASE Java并发

equals方法和hashCode方法

equals方法和hashCode方法

equals方法和hashCode方法 常见问题 equals()方法中,如果有两个引用类型的对象,例如两个hashMap,但是里面存储的键值对内容都相等,调用equals()方法返回得到true还是false呢? 在 Java 中,equals() 方法用于比较两个对象的内容是否相等。对于 HashMap 这样的引用类型,如果两个 HashMap 对象存储的键值对内容...
技术笔记 后端开发 Java 数据结构 JAVASE

分库分表理论

2024-10-11-分库分表组件

分库分表理论 前置理论知识 常见问题 为什么要分库分表? 我们分库分表用的非常熟。但不能为了等到系统到了200万数据,才拆。那么工作量会非常大 我们的做法是,因为有成熟方案,所以前期就分库分表了。但,为了解释服务器空间。所以把分库分表的库,用服务器虚拟出来机器安装。这样即不过多的占用服务器资源,也方便后续数据量真的上来了,好拆分。 同时,抽奖系统,是瞬时峰值较高的系统,历史数据...
技术笔记 后端开发 中间件 分布式 分库分表


类加载器有哪些

2024-09-25-类的加载

类加载器有哪些 用户自定义类加载器:用户可以自定义类加载器用于加载网络类库等 应用程序类加载器:加载在用户指定的类路径(ClassPath)下的自定义类或是第三方类库(com.example.MyClass, com.hutool.*) 扩展类加载器:加载的是扩展类库,例如javax.swing.*, java.util.zip.*,这些类库位于java扩展目录下(jar/l...
技术笔记 后端开发 Java JVM

JVM内存模型

JVM内存模型

参考文章:JVM内存模型 JVM内存模型 JVM内存模型图 栈stack 栈中的内容 在 Java 虚拟机(JVM)中,栈帧是用于管理方法调用的结构,其中包含几个重要的组成部分,包括局部变量表、操作数栈、动态链接和方法出口。以下是它们的定义和作用: 1. 操作数栈 (Operand Stack)**: 操作数栈是栈帧中的一个区域,用于存储方法执行过程中产生的中间结果。每当执行指...
技术笔记 后端开发 Java JVM

面试题

面试题

面试题 题目来源: https://cloud.tencent.com/developer/article/1628831 简述Java垃圾回收机制 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收? Java 中都有哪些引用类型? 怎么判断对象是否可以被回收?什么时候可以被垃圾回收? JVM中的永久代中会发生垃圾回收吗 ...
技术笔记 后端开发 Java JVM 面试


数据结构

2024-09-21-字典树(前缀树)

数据结构 字典树是一种特殊的多叉树,它虽然是树形结构但是设计出来却是为了方便查找存储的字符串类型的。 字典树的数据结构跟一般的多叉树不同,它的子节点的指针是存放在26个字母表长度的数组中的. TrieNode中保存了下一个字符可能出现的所有字符的链接,我们可以通过当前节点预知所有子节点的值。 struct TrieNode { bool isEnd; // 该结点是否是一个串的结束 ...
技术笔记 数据结构与算法 数据结构 算法

问题

问题

问题 Java创建的线程是用户级的还是内核级的 Java创建的线程是内核级的。主要是因为JVM会利用操作系统对线程的创建和管理功能。因为java中的线程都是由继承Thread类和实现Runnable接口创建的(重写run方法,执行start方法),而这个类和接口的实现直接映射到操作系统线程。当创建一个线程时,Java会直接把线程的创建和管理功能交给操作系统来控制。所以当在java中请求创建...
技术笔记 操作系统 问题排查 Java并发

广搜和深搜

2024-09-20-图论

广搜和深搜 问题 什么题型适合使用广度优先搜索而不是深度优先搜索? 视具体题目要求的答案而定,因为不管是深搜还是广搜的基本定义都是从当前节点出发,向周围节点扩散搜索的搜索方法。 深搜顾名思义就是先对某一条路径进行深度搜索(直到搜索至终点之后才会返回)。 而广搜则是需要兼顾所有方向,每一个搜索方向的进度都是一样的,所有方向齐头并进,适合搜索节奏需要保持一致的题型,一般最短路径题型会...
技术笔记 数据结构与算法 数据结构 算法


B+树原理

2024-08-19-Mysql索引

B+树原理 存储数据结构 B+tree是在B tree的基础上添加 B+树是一种自平衡的树数据结构,通常用于数据库和文件系统中。与普通二叉树不同,B+树的每个节点可以有多个子节点。在B+树中,根节点可以包含多个键(关键字),并且这些键是有序的。 B+树的结构 节点类型: 内部节点: 包含指向子节点的指针和一些键(关键字),用于指导查找路径。 叶子节点: 包含实际的数据记录或...
技术笔记 后端开发 数据库 MySQL SQL 数据结构


SSO原理

2024-07-20-基于SpringSecurity和JWT的SSO

参考文章: 单点登录SSO解决方案之SpringSecurity+JWT实现 SSO原理 参考文章: 博客园SSO原理 单点登录SSO是企业级多业务系统整合的常用方案,它的目的是只要在其中的一个业务系统进行登录和授权作用就可以访问其他受信的任业务系统。 一次登录处处登录,一次登出,每个系统都是登出状态,这依赖于一个sso认证中心服务端,每次生成以及验证t...
技术笔记 后端开发 Java SpringSecurity 计算机网络

Chapter1:DDD分层基础手脚架搭建

Chapter1:DDD分层基础手脚架搭建

Chapter1:DDD分层基础手脚架搭建 DDD分层是项目基础架构设计的一种模式,类似于web开发中的MVC架构,我觉得将DDD分层架构与曾经学习过的spring clould Alibaba微服务架构类比会更相似些。 为什么使用DDD架构 DDD架构分层包括 项目基础手脚架 应用层-application 这是应用启动和配置的一层,如一些 aop 切面或者 config 配置,以及打包...
技术笔记 后端开发 项目实战 Java 系统设计 高并发


从输入URL到页面显示发生了什么

2024-06-04-Http篇

从输入URL到页面显示发生了什么 简洁步骤 浏览器使用DNS协议查找URL对应的IP地址,生成Http请求报文 客户端通过ip和端口号向服务端发起建立TCP连接 在TCP连接的基础上向服务端发送http请求报文 服务端接收到请求报文并解析,生成对应的html页面发送给客户端 客户端解析http请求,渲染并展示html页面,同时根据Html中的其他资源的url(例如图片,...
技术笔记 计算机网络

数据库错题本

2024-06-04-数据库错题本

SQL SELECT DISTINCT 语句 在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。 关键词 DISTINCT 用于返回唯一不同的值。 语法: SELECT DISTINCT 列名称 FROM 表名称 元组(tuple)是关系数据库中的基本概念,关系是一张表,表中的每行(即数据库中的每条记录)就是一个元组,每列就...
技术笔记 面试 问题排查 计算机核心课程

继承

2024-06-04-封装继承多态

继承 子类继承于父类时,子类构造器调用情况 子类调用构造器(是否会调用父类构造器) 由于子类继承于父类,子类默认包含父类所有的类属性以及成员变量,如果子类初始化结束时没有初始化父类,那么在子类中引用父类的某些方法和属性时就会因为没有初始化父类而抛出异常。因此在初始化子类时会在子类构造器中默认调用父类构造器初始化父类。 如果在初始化子类之前先调用父类构造器初始化了,...
技术笔记 后端开发 Java JAVASE

介绍一下数据库设计的三范式

2024-06-03-数据库知识总览

介绍一下数据库设计的三范式 第一范式:表不可再分 第二范式:消除了非主属性对主属性的部分函数依赖 第三范式:消除了非主属性对主属性的传递函数依赖 数据库设计的三范式是数据规范化的一种方法,是针对关系数据库设计的理论。第一范式要求每个列的值都是不可再分的原子值;第二范式要求所有非主键属性必须完全依赖于整个主键,而不是依赖于主键的某一部分;第三范式要求非主键属性之间不能存在传递依赖关系,即所有数...
技术笔记 后端开发 数据库 MySQL SQL

设计模式错题总结

2024-05-25-设计模式错题总结

题解: 打印池在系统中只能存在唯一的一个对象,成为一个线程安全的资源,所以单例模式正确 一个系统只允许存在一个打印池对象,打印池是管理多台打印机的作用,看到池就想享元是不对的。 题解: 观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新 当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如...
技术笔记 面试 问题排查 计算机核心课程 设计模式


Linux错题本

2024-05-25-Linux错题本

文件类型和权限由开头的 10 个字符表示,第一位表示文件的类型,有如下几种: 普通文件类型 d 目录文件 b 块设备文件 c 字符设备文件 s 套接字文件 p 管道文件 l 链接文件 所以D是符号链接文件。 知识点:Linux nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续...
技术笔记 Linux 面试 问题排查 计算机核心课程

设计模式错题总结

2024-05-25-设计模式错题总结

题解: 打印池在系统中只能存在唯一的一个对象,成为一个线程安全的资源,所以单例模式正确 一个系统只允许存在一个打印池对象,打印池是管理多台打印机的作用,看到池就想享元是不对的。 题解: 观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新 当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如...
技术笔记 面试 问题排查 计算机核心课程 设计模式

介绍一下数据库设计的三范式

2024-05-25-数据库知识库

介绍一下数据库设计的三范式 第一范式:表不可再分 第二范式:消除了非主属性对主属性的部分函数依赖 第三范式:消除了非主属性对主属性的传递函数依赖 数据库设计的三范式是数据规范化的一种方法,是针对关系数据库设计的理论。第一范式要求每个列的值都是不可再分的原子值;第二范式要求所有非主键属性必须完全依赖于整个主键,而不是依赖于主键的某一部分;第三范式要求非主键属性之间不能存在传递依赖关系,即所有数...
技术笔记 面试 计算机核心课程


Linux错题本

2024-05-25-Linux错题本

文件类型和权限由开头的 10 个字符表示,第一位表示文件的类型,有如下几种: 普通文件类型 d 目录文件 b 块设备文件 c 字符设备文件 s 套接字文件 p 管道文件 l 链接文件 所以D是符号链接文件。 知识点:Linux nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续...
技术笔记 Linux 面试 问题排查 计算机核心课程

介绍一下数据库设计的三范式

2024-05-25-数据库知识库

介绍一下数据库设计的三范式 第一范式:表不可再分 第二范式:消除了非主属性对主属性的部分函数依赖 第三范式:消除了非主属性对主属性的传递函数依赖 数据库设计的三范式是数据规范化的一种方法,是针对关系数据库设计的理论。第一范式要求每个列的值都是不可再分的原子值;第二范式要求所有非主键属性必须完全依赖于整个主键,而不是依赖于主键的某一部分;第三范式要求非主键属性之间不能存在传递依赖关系,即所有数...
技术笔记 后端开发 数据库 MySQL SQL 面试

Java面试知识+错题本

2024-05-25-Java面试知识+错题本

如果多个Java线程同时访问创建同一个对象的构造器,此时构造器方法的调用情况如下: 对象创建过程的原子性: 尽管有多个线程同时试图创建同一个对象,但JVM会保证对象创建过程的原子性。也就是说,在任意时刻只会有一个线程成功地完成对象的创建。 线程安全的对象创建: 由于对象创建是一个原子操作,因此即使多个线程同时访问同一个构...
技术笔记 后端开发 Java 面试 问题排查 JAVASE



抽奖项目简介

2024-06-11-Lottery抽奖系统

抽奖项目简介 参考文章: xfg博客园 抽奖系统设计 一个抽奖,想让用户合理的别中奖(品牌方不能亏损),又要能达到拉新促活的效果、提高平台曝光量的需求(keep之前就有一个跑步抽奖的活动很出圈),并且抽奖细节从其设计到落地实现都是需要精细化控制成本的。 现在各个互联网产品场景中,都有抽奖模块来拉新促活,如;平台签到积分抽奖、商城支付完成抽奖、打车优惠发券抽奖都需依赖抽奖模块...
技术笔记 后端开发 项目实战 Java 系统设计 高并发

基本流程

2024-03-10-项目经验笔记

基本流程 先设计好完整需求(一开始系统不用过于复杂,预留优化点) 比如代码结构设计方面–抽出来新增加一个包 函数设计,把函数抽出来进行复用设计等 再先跑通流程,快速把代码完成,写测试类,流程能跑通再改细节(fast and dirty) 当想要引入某个技术时按流程来 springboot引入 查...
技术笔记 项目实战 项目笔记





元素出口端一般定义为队头,入口端一般定义为队尾

2024-02-25-高级数据结构.md

元素出口端一般定义为队头,入口端一般定义为队尾 Stack 遵从FILO原则,先进后出,所以peek的是栈头元素,pop的是栈头元素。一切操作都是在栈头进行的。(开口部分为栈头) push(E e):将元素压入栈顶 pop():将栈顶元素弹出 peek():查看栈顶元素 empty():判断栈是否为空 Stack<Integer> stack=new ...
技术笔记 后端开发 Java JAVASE

伙伴匹配系统后端项目

2023-12-10-伙伴匹配系统

伙伴匹配系统后端项目 项目设计 用户匹配。根据特定算法匹配标签相同的伙伴,从带标签的用户数据库中查询数据并进行匹配,匹配成功后将匹配结果存入数据库中,用户可以查看自己的匹配结果。 功能设计 用户注册 用户登录 用户添加标签 用户推荐,在主页推荐某些可以组队的用户 用户去添加标签,标签分类设计 用户修改标签 用户查看自己的...
技术笔记 后端开发 项目实战 Java SpringBoot Redis

伙伴匹配系统后端项目

2023-12-10-伙伴匹配系统.md

伙伴匹配系统后端项目 项目设计 用户匹配。根据特定算法匹配标签相同的伙伴,从带标签的用户数据库中查询数据并进行匹配,匹配成功后将匹配结果存入数据库中,用户可以查看自己的匹配结果。 功能设计 用户注册 用户登录 用户添加标签 用户推荐,在主页推荐某些可以组队的用户 用户去添加标签,标签分类设计 用户修改标签 用户查看自己的...
后端开发 项目实战 Java SpringBoot Redis 学习笔记









mybatis-plus在springboot中的使用

mybatis-plus在springboot中的使用

mybatis-plus在springboot中的使用 在继承和实现mybatis-plus自带的baseMapper等接口时,注意将springboot中的实体类以及mapper接口注入到springboot容器中,因为mybtais-plus的调用依赖springboot框架。如果不事先注入bean,会导致mybatis框架无法找到对应的实体类(domain)或者baseMapp...
技术笔记 后端开发 Java Spring SpringBoot MyBatis




异常处理:异常处理器

开发中前后端分离下的异常处理

为什么要特别关注异常的处理 后端出现异常时前端以及其他调用方无法得知出现了什么异常,无法进行相应的处理 后端内部,每一层都可能出现异常,需要一个统一处理的方式:统一抛出到表现层处理 springMVC内置了异常处理方法:异常处理器 异常处理器 关键注解 @ControllerAdvice:异常处理器 @RestControllerAdvice:异常处理器 rest...
技术笔记 后端开发 Java Spring

JWT

learn about JWT

初识JWT 在用户访问资源过程中,服务器需要解决两个问题:身份验证和授权。 身份验证解决“你是谁”的问题 授权解决“你能做什么”的问题。 JWT 是一种用于在双方(例如客户端和服务器)之间安全传输信息的轻量级、自包含的 Token。 — JWT组成部分 JWT 由三部分组成:头部(Header)、负载(Payload)和签名(Signature)。 ...
技术笔记 SpringSecurity 计算机网络

Maven

get fimiliar with maven

Maven 简介 Maven是一个项目管理工具,可以对Java项目进行构建、依赖管理。Maven是Apache下的一个开源项目,它的主要目标是提供一个易于使用的项目管理工具,能够帮助开发人员更好的管理项目的构建、报告和文档的编写。 maven的主要功能 maven构建项目指令 mvn spring-boot:run //运行springboot项目,其中springboot是通...
技术笔记 开发工具 学习工具









java反射

java反射

Java反射 什么是反射 反射是指在程序运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取信息以及动态调用对象的方法的功能称为java语言的反射机制。 反射的作用 在运行时判断任意一个对象所属的类 获取类的完整结构,包括类的属性、方法、构造器、父类、实现的接口等从而可以动态的创建对象、调用对象的方法、访问属性等...
技术笔记 后端开发 Java JAVASE





贪心题况详情

贪心题况详情

摆动数列 求摆动 子序列 的 最大长度 问题: 摆动子序列 :如何衡量是否摆动 最大长度:如何遍历一遍找到最大长度 解决思路: 记录上两个数之间的差值,规定等于 i -(i+1),大于零则为上坡,小于零则为下坡,若能保持上下坡交替关系期间的子序列为 摆动子序列。 由此可以看出必须使用两个变量a, b 一个记录上一段坡度是否与当前坡度【相反】 ...
技术笔记 数据结构与算法 数据结构 算法

算法题合集(简单收录)

算法题合集(简单收录)

不是主流思想里的解题角度和思路的合集 422 数组中重复的数字: 时间复杂度O(n),空间复杂度O(1),仅使用常量额外空间的算法解决此问题。(输入输出的空间不算额外的空间,以列表或者其他任何形式存储的输出空间) 要点: 【用我查别人】假如没有重复的数字,那么由题意,每个数字都会对应唯一的下标(用数字作下标);而现在有重复的数字,用数字做...
技术笔记 数据结构与算法 数据结构 算法

树相关概念: 节点的度:一个节点含有的子树的个数称为该节点的度; 树的度:一棵树中,最大的节点度称为树的度; 叶节点或终端节点:度为零的节点; 非终端节点或分支节点:度不为零的节点; 父亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点; 孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点; 兄弟节点:具有相同父节点的节点互称为兄弟...
技术笔记 数据结构与算法 数据结构 算法

数据结构以及相关算法

数据结构以及相关算法

主流的数据结构与必须要掌握的算法思想 数据结构与算法简介 程序 = “数据结构”+“算法” 数据结构是程序实现的工具 算法是动态的存在于程序运行的过程 数据结构表达了多种数据间的关系 基本数据结构 逻辑结构:线性结构、树、图 物理结构:数据结构在实际代码中的实现 刷题顺序参...
技术笔记 数据结构与算法 数据结构 算法



快速傅里叶变换FFT

快速傅里叶变换FFT

以两个同次高阶多项式乘法为例 两个多项式系数相乘Pe=[p0,p1…],Po=[p0,p1…],时间复杂度为O(n^2) 为了降低时间复杂度,用n+1个点来表示n阶的多项式,那么只用对应点处函数值相乘,就可以得到结果多项式对应的点,时间复杂度降为O(n) 任一n阶的函数都可以凭借n+1个点来确定 如何取点,如果我们取n个点,每个点都要计算函数值,其实又相...
技术笔记 数据结构与算法 数据结构 算法


动态规划

动态规划

动态规划是什么? 定义 数组定义 在我的理解来看,动态规划的定义强调的是当下此时的状态是由前一时刻的状态推导而来的,它不是由搜索所有的前置状态而去匹配适合的上一个状态(那是深搜/广搜),而是强调这一刻与上一刻的逻辑依赖关系。 前置状态选择 这一刻动规数组表达的是什么,取决于我们对它的自定义。 上一刻是什么,该如何选择,到底是由什么推导而得到的此刻的状态? 我看很多题目基本上都会将dp[i-...
技术笔记 数据结构与算法 数据结构 算法


Git工作流程

2023-04-07-Git.md

Git工作流程 一般工作流程如下: 在本地创建一个Git仓库。 克隆 Git 资源作为工作目录。在克隆的资源上添加或修改文件。 如果其他人修改了,你可以更新资源。在提交前查看修改。 提交修改。 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。 关于三个区域的概念: 第一步是用git add把文件添加进去,实际上就是把文件修改...
技术笔记 开发工具 学习工具


SpringFramework

SpringFramework

Spring简介 Spring是什么 是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 Spring的优点 方便解耦,简化开发,通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码造成的程序耦合度高。 AOP编程的支持,通过Spring提供的AOP功能,方便进行面向切面编程。 声明式事务的支持,在Spring中,我们...
技术笔记 后端开发 Java Spring

SpringFramework

SpringFramework

Spring简介 Spring是什么 是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 Spring的优点 方便解耦,简化开发,通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码造成的程序耦合度高。 AOP编程的支持,通过Spring提供的AOP功能,方便进行面向切面编程。 声明式事务的支持,在Spring中,我们...
技术笔记 后端开发 Java Spring

Spring-Mybatis

Spring-Mybatis

数据库概念 数据库 数据库是一个容器,包含了很多数据,当然这些数据可能存在不同的小容器(表)里面。 若用水来形容数据,数据库就是水库。 数据源 数据源是连接到数据库的一类路径,它包含了访问数据库的信息(地址、用户名、密码)。 数据源就像是排水管道。 数据库连接 数据库连接是根据数据源产生的实际连接上数据库的路径。 数据库连接就像是管道里面的水管,这些水管都按照管道(数据源)...
技术笔记 后端开发 Java Spring MyBatis

Spring AOP编程

2023-04-07-AOP.md

Spring AOP编程 1. 什么是面向切面编程(AOP) AOP是一种编程思想,它将程序的业务逻辑和系统服务分离开来,通过对横切关注点的分离,它可以使得业务逻辑和系统服务更加清晰,降低了模块间的耦合度,提高了系统的可重用性,同时提高了开发的效率。 在软件开发中,散布于应用中多处的功能被称为横切关注点(比如日志、安全和事务管理)。通常来讲,这些横切关注点...
技术笔记 后端开发 Java Spring













计算机网络综述

计算机网络综述

计算机网络综述 因特网概述 网络:由两个以上的计算机通过节点连接形成的网络 互联网:网络的网络 因特网:专有名词,全世界最大的互联网 信息交换技术 电路交换:先连通,再传输数据,最后取消连接 报文交换:不固定线路,不需要提前连通,整个数据直接传输 分组交换:把数据分包分别先...
技术笔记 计算机网络

No notes match this filter.