鱼泡 - 伙伴匹配系统
鱼泡 - 伙伴匹配系统
鱼泡 - 伙伴匹配系统
介绍:帮助大家找到志同道合的伙伴,移动端 H5 网页(尽量兼容 PC 端)
需求分析
用户去添加标签,标签的分类(要有哪些标签、怎么把标签进行分类)学习方向 java / c++,工作 / 大学
主动搜索:允许用户根据标签去搜索其他用户
Redis 缓存
组队
创建队伍
加入队...
技术笔记
后端开发
项目实战
Java
SpringBoot
Redis
Posted by lily on May 9, 2025
用户中心项目进度
用户中心项目进度
用户中心项目进度
TODO 0:
前端
向后端请求并且成功返回数据后未跳转到welcome页面 ✔
前端增加了拦截器,取不到state状态时会自动跳转回登录页面
非dev模式下代理失败问题 ✔
后端
注册字段补充到后端登录以及查询逻辑当中 ✔
登出账号接口编写 ✔
优化后端代码 ✔
优化后端代码
全局响应处...
技术笔记
后端开发
项目实战
Java
SpringBoot
Redis
Posted by lily on May 9, 2025
鱼泡 - 伙伴匹配系统
鱼泡 - 伙伴匹配系统
鱼泡 - 伙伴匹配系统
介绍:帮助大家找到志同道合的伙伴,移动端 H5 网页(尽量兼容 PC 端)
需求分析
用户去添加标签,标签的分类(要有哪些标签、怎么把标签进行分类)学习方向 java / c++,工作 / 大学
主动搜索:允许用户根据标签去搜索其他用户
Redis 缓存
组队
创建队伍
加入队...
后端开发
项目实战
Java
SpringBoot
Redis
学习笔记
Posted by lily on May 9, 2025
用户中心项目进度
用户中心项目进度
用户中心项目进度
TODO 0:
前端
向后端请求并且成功返回数据后未跳转到welcome页面 ✔
前端增加了拦截器,取不到state状态时会自动跳转回登录页面
非dev模式下代理失败问题 ✔
后端
注册字段补充到后端登录以及查询逻辑当中 ✔
登出账号接口编写 ✔
优化后端代码 ✔
优化后端代码
全局响应处...
后端开发
项目实战
Java
SpringBoot
Redis
学习笔记
Posted by lily on May 9, 2025
库表设计
库表设计
设计流程
调研相关系统
项目模块设计
项目流程设计/时序图
库表设计
库表设计
题目表
业务代码代码设计注意事项
定义枚举类与定义常量标识的场景
枚举类可以拥有更多属性和方法
调用得到所有的枚举值的特定属性
i...
后端开发
项目实战
Java
SpringBoot
系统设计
学习笔记
Posted by lily on May 9, 2025
项目思路整理
项目思路整理
:::tips
参会人:@提及时间:2024-03-11
:::
项目需求
用户输入需求,利用ai生成智能图表,保存并返回给用户
建表
用户表
图表信息表
```sql
– 图表信息表
create table if not exists chartTable
(
id bigint auto_increment comment ‘id’ primar...
后端开发
项目实战
Java
SpringBoot
数据分析
学习笔记
Posted by lily on May 9, 2025
SMART方法论
2025-05-09-SMART目标制定
SMART方法论
Specific(具体的)
Measurable(可衡量的)
Achievable(可实现的)
Realistic & Relevant(实际的)
Time-bound(有时限的)
Specific(具体的)
如果目标太宽泛或太模糊,则很容易错失目标。如果定义太过广泛,则难以衡量且难以实现。
在创建 SMART 目标时,请尝...
学习方法论
Posted by lily on May 9, 2025
yarn
yarn
yarn
关于yarn tyarn npm cnpm的区别
npm是nodejs的包管理工具,yarn是facebook开发的另一个包管理工具,tyarn是yarn的国内镜像(taobao镜像源),cnpm是npm的国内镜像。
推荐使用 tyarn 来进行包管理,可以极大地减少 install 的时间和失败的概率,并且完全兼容 npm。如果喜欢使用 npm 而不是 yarn,可以使...
技术笔记
前端
前端学习
Posted by lily on May 9, 2025
二进制位计算
二进制位计算
二进制位计算
在计算机中 a&b 表示a与b进行按位与运算,
逐一比较两个数的二进制位,如果两个比特都是1,该位结果为1,否则为0。
在二进制中 x & 1,等价于检查数字的最低为是否为1(最右边的位)(因为1的二进制数为1)。
而在二进制到十进制的转换中,由于最右的数为 x*2_0,2_0=1,因此奇数可以表示为2k+1,偶数可以表示为2k。
**根据每个二进制位...
技术笔记
面试
计算机核心课程
Posted by lily on December 7, 2024
消息存储方案(已更新为kbase)
消息存储方案(已更新为kbase)
IM系统为了保证消息必达以及发送可靠,消息数据是先落盘后推送or同步的。消息从发
送方发出后,经过服务端转发,服务端会先将消息保存到消息库,完成消息的持久化保存
后,对于在线的接收方,会直接选择通过长链接在线推送。但在线推送并不是一个必达路
径,只是为了保证“即时”,采用的一个更优的消息传递路径。对于在线推送失败或者离线的
接收方,会通过主动拉取的方式获得服务端所有未同步消息。通过推...
技术笔记
后端开发
消息队列
分布式
系统设计
系统架构
Posted by lily on November 10, 2024
RocketMQ 是什么?
2024-11-10-RocketMQ和Kafka有什么区别?
作为一个程序员,假设你有 A、B 两个服务,A 服务发出消息后,不想让 B 服务立马处理到。而是要过半小时才让 B 服务处理到,该怎么实现?
这类延迟处理消息的场景非常常见,举个例子,比如我每天早上到公司后都会点个外卖,我希望外卖能在中午送过来,而不是立马送过来,这就需要将外卖消息经过延时后,再投递到商家侧。
那么问题就来了,有没有优雅的解决方案?当然有,没有什么是加一层中间层不能解...
技术笔记
后端开发
消息队列
Kafka
RocketMQ
分布式
Posted by lily on November 10, 2024
**1. 先排查是不是bug,如果是,要快速修复**
2024-11-10-Kafka如何处理百万消息积压
大家在日常开发中,是否处理过大批量消息积压的问题呢?
它一般由于代码bug(比如消费逻辑处理有误)、或者生产者的生产速度大于消费者的消费速度(如大促、抢购等活动期间导致消息数量激增,或者消费者处理速度极慢),就可能导致生产环境出现百万、甚至千万的消息积压。
那么,假设发生kafka百万消息堆积,如何解决呢?
先排查是不是bug,如果是,要快速修复
优化消费者代码逻辑
...
技术笔记
后端开发
消息队列
Kafka
分布式
高并发
Posted by lily on November 10, 2024
ZK实现分布式锁
2024-11-10-浅谈Zookeeper
聊聊分布式锁 (qq.com)—字节跳动谈分布式锁
ZK实现分布式锁
ZooKeeper 分布式锁是基于 临时顺序节点 和 Watcher(事件监听器) 实现的。
获取锁:
首先我们要有一个持久节点/locks,客户端获取锁就是在locks下创建临时顺序节点。
假设客户端 1 创建了/locks/lock1节点,创建成功之后,会判断 lock1是否是 /locks 下最小的...
技术笔记
后端开发
中间件
分布式
Zookeeper
Posted by lily on November 10, 2024
Kafka为什么这么快
2024-11-01-浅谈Kafka
Kafka为什么这么快
顺序读写
零拷贝
消息压缩
分批发送
顺序读取
零拷贝原理
把磁盘中的某个文件内容发送到远程服务器上
那么它必须要经过几个拷贝的过程:
从磁盘中读取目标文件内容拷贝到内核缓冲区Read Buffer中。
CPU控制器再把内核缓冲区的数据赋值到用户空间的缓冲区中
接着在应用程序中,调用write()方法,把用户空间缓冲区中的数...
技术笔记
后端开发
消息队列
Kafka
分布式
数据结构
Posted by lily on November 1, 2024
跳表
跳表
跳表
结构
ele
权重设计
节点的权重在跳表中通常是用来决定节点的排序和层级结构的。设计节点权重的方式主要考虑以下几个方面:
唯一性:每个节点的权重应该是唯一的,以便在查找时能够准确定位目标节点。
排序规则:节点的权重决定了跳表中节点的顺序。一般情况下,权重越大的节点在跳表中越靠后。
随机化:为了保持跳表的平衡性,节点的权重...
技术笔记
后端开发
数据库
Redis
Posted by lily on October 31, 2024
算法篇
算法篇
算法篇
上述题目是一场Java开发工程师讨论中提问的Java开发的问题,假如你是Java高级架构师,并且对Java程序员成长路线的所有技术栈都非常熟悉,精通Java基础、Mysql数据库知识、缓存数据库、Spring全家桶、分布式等各种知识请你尽可能详细、谨慎、全面、细心、前瞻,尽可能通俗易懂地,尽可能全面,尽可能仔细,尽可能仔细分析考虑所有可能为我讲解上述问题,可以尽可能多地输出t...
技术笔记
开发工具
AI
学习工具
Posted by lily on October 29, 2024
秒杀三阶段
2024-10-28-抽奖系统设计
秒杀三阶段
通常,从秒杀开始到结束,往往会经历三个阶段:
准备阶段:这个阶段也叫作系统预热阶段,此时会提前预热秒杀系统的业务数据,往往这个时候,用户会不断刷新秒杀页面,来查看秒杀活动是否已经开始。在一定程度上,通过用户不断刷新页面的操作,可以将一些数据存储到Redis中进行预热。
秒杀阶段:这个阶段主要是秒杀活动的过程,会产生瞬时的高并发流量,对系统资源会造成巨大的冲击,所以,...
技术笔记
后端开发
分布式
系统设计
高并发
系统架构
Posted by lily on October 28, 2024
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
计算机网络
Posted by lily on October 24, 2024
微服务与分布式服务的区别
2024-10-24-微服务基本概念
微服务与分布式服务的区别
技术笔记
后端开发
Java
SpringCloud
分布式
微服务
Posted by lily on October 24, 2024
循环依赖问题
循环依赖问题
循环依赖问题
参考文章:
三级缓存是如何解决bean循环依赖的
bean的循环依赖解决过程
顺序为,实例化、属性赋值(属性填充)、初始化、依赖注入。
实例化 Bean:
Spring 在实例化 Bean 时,会先创建一个空的 Bean 对象,并将其放入一级缓存中。
属性赋值:
Spring 开始对 Bean 进行属性赋值,如果发现循环依赖,会将当前 Bean 对象提前...
技术笔记
后端开发
Java
Spring
面试
问题排查
Posted by lily on October 24, 2024
undo-log
2024-10-24-Mysql日志篇
undo-log
作用
搜索引擎层用于事务回滚的日志,目的是用于保证事务的原子性
MVCC的实现是通过:read view + undo log实现的。
实现过程
事务开始后,根据不同的增删改类型的语句在undo-log中记录不同的数据,以便于事务回滚后数据的恢复。并且在记录行上维护undo-log中两个额外的字段事务id和roll_point指针。数据行之间由rol...
技术笔记
后端开发
数据库
MySQL
SQL
Posted by lily on October 24, 2024
学习文章
学习文章
学习文章
慢查询优化 (yuque.com)
MySQL中什么情况下会出现索引失效?如何排查索引失效?_如何定位索引失效-CSDN博客
五分钟搞懂MySQL索引下推大家好,我是老三,分享一个小知识点。面试时候问到索引,常常会顺嘴问一句索引下推。给我五分钟, - 掘金 (juejin.cn)
MySQL索引可能失效之or、is null、is not null、不等于(!=...
技术笔记
后端开发
数据库
MySQL
SQL
问题排查
Posted by lily on October 23, 2024
面试问题
2024-10-21-锦鲤抽奖
面试问题
文章:
lottery面试问题
项目亮点总览
项目描述:本抽奖系统是智动社区的扩展服务,本项目以使用和调用美团、京东、字节掘金的抽奖场景服务,负责提供各种抽奖活动,定期对平台活跃度高、贡献度大的用户奖励抽奖资格,从而提高整个平台用户的活跃度和积极性。同时将该系统与微信公众号进行对接,为用户提供方便快捷的抽奖体验。
后端技术:Spring Boot、Sharding-J...
技术笔记
后端开发
项目实战
Java
系统设计
高并发
Posted by lily on October 21, 2024
Feed流
2024-10-21-Feed流系统
本文基于Feed流架构参考,记录从学习到实现一个可以承载小流量的仿微博Feed流系统的过程。
Feed流
参考文章:
掘金: 使用redis实现feed流
即刻:自主实现了一个feed流系统
微博feed流系统架构
Feed流系统架构理论
IM开发技术学习:揭秘微信朋友圈这种信息推流背后的系统设计
什么是 feed 流
信息推流(以下简称“Feed流”...
技术笔记
后端开发
分布式
系统设计
系统架构
Posted by lily on October 21, 2024
redis缓存
2024-10-21-分布式Redis
redis缓存
为什么流量增大会导致数据库崩溃
数据库压力增大导致程序崩溃的原因主要有以下几点:
系统层面:
资源耗尽:
当数据库接收到大量请求时,CPU、内存和磁盘I/O等资源会迅速消耗殆尽,导致系统无法处理新的请求。
网络瓶颈:
数据库与应用服务器之间的网络带宽可能成为瓶颈,导致请求延迟和丢失。
...
技术笔记
后端开发
数据库
Redis
Posted by lily on October 21, 2024
死锁发生了如何排查
2024-10-20-Mysql锁篇
死锁发生了如何排查
参考文章:
死锁日志如何查看(MySQL死锁系列-线上死锁问题排查思路-腾讯云开发者社区-腾讯云)
InnoDB 死锁bug排查实例
mysql8.0.18死锁检测源码分析: MySQL 死锁检测源码分析
死锁日志
开启死锁日志记录
分析日志
从bin log中查看具...
技术笔记
后端开发
数据库
MySQL
SQL
Posted by lily on October 20, 2024
数据库事务
2024-10-20-Mysql事务
数据库事务
参考文章:
一文详解脏读、不可重复读、幻读
数据库事务是一系列不可分割的操作的集合。数据库事务可以保证多个对数据的操作(一系列SQL语句)要么全部执行成功,要么全部不执行。
关系型数据库事务特性
ACID
AID是手段,C是目的
并发事务会带来的问题
脏读
丢失修改(Lost to Modify)
不可重复读
幻读
不可重复读与幻读
...
技术笔记
后端开发
数据库
MySQL
SQL
Posted by lily on October 20, 2024
IM架构设计
2024-10-18-初步认识Netty
学习资料参考
面试题
实现im通讯demo
springboot+netty+ws通讯demo
IM架构设计
技术笔记
后端开发
中间件
分布式
系统设计
Netty
Posted by lily on October 18, 2024
Java多线程
Java多线程
Java多线程
多线程的状态
java中锁的分类
乐观锁悲观锁
读写锁
可重入锁
自旋锁
因此自旋锁适用于锁竞争不激烈、锁持有时间短的场景。
优缺点
CAS
是什么
怎么实现的
缺点
ABA问题
只能保证一个共享变量的原子操作
cpu开销大
基于CAS实现的类
原子类操作基本数据类型
AQS
CLH
CLH详解
CLH比传统CAS自旋锁优化点
CLH数...
技术笔记
后端开发
Java
JAVASE
Java并发
Posted by lily on October 18, 2024
equals方法和hashCode方法
equals方法和hashCode方法
equals方法和hashCode方法
常见问题
equals()方法中,如果有两个引用类型的对象,例如两个hashMap,但是里面存储的键值对内容都相等,调用equals()方法返回得到true还是false呢?
在 Java 中,equals() 方法用于比较两个对象的内容是否相等。对于 HashMap 这样的引用类型,如果两个 HashMap 对象存储的键值对内容...
技术笔记
后端开发
Java
数据结构
JAVASE
Posted by lily on October 17, 2024
分库分表理论
2024-10-11-分库分表组件
分库分表理论
前置理论知识
常见问题
为什么要分库分表?
我们分库分表用的非常熟。但不能为了等到系统到了200万数据,才拆。那么工作量会非常大
我们的做法是,因为有成熟方案,所以前期就分库分表了。但,为了解释服务器空间。所以把分库分表的库,用服务器虚拟出来机器安装。这样即不过多的占用服务器资源,也方便后续数据量真的上来了,好拆分。
同时,抽奖系统,是瞬时峰值较高的系统,历史数据...
技术笔记
后端开发
中间件
分布式
分库分表
Posted by lily on October 11, 2024
简介
2024-10-05-CountDownLatch
简介
使用示例
技术笔记
后端开发
Java
JAVASE
Java并发
Posted by lily on October 5, 2024
类加载器有哪些
2024-09-25-类的加载
类加载器有哪些
用户自定义类加载器:用户可以自定义类加载器用于加载网络类库等
应用程序类加载器:加载在用户指定的类路径(ClassPath)下的自定义类或是第三方类库(com.example.MyClass, com.hutool.*)
扩展类加载器:加载的是扩展类库,例如javax.swing.*, java.util.zip.*,这些类库位于java扩展目录下(jar/l...
技术笔记
后端开发
Java
JVM
Posted by lily on September 25, 2024
JVM内存模型
JVM内存模型
参考文章:JVM内存模型
JVM内存模型
JVM内存模型图
栈stack
栈中的内容
在 Java 虚拟机(JVM)中,栈帧是用于管理方法调用的结构,其中包含几个重要的组成部分,包括局部变量表、操作数栈、动态链接和方法出口。以下是它们的定义和作用:
1. 操作数栈
(Operand Stack)**:
操作数栈是栈帧中的一个区域,用于存储方法执行过程中产生的中间结果。每当执行指...
技术笔记
后端开发
Java
JVM
Posted by lily on September 21, 2024
面试题
面试题
面试题
题目来源: https://cloud.tencent.com/developer/article/1628831
简述Java垃圾回收机制
垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
Java 中都有哪些引用类型?
怎么判断对象是否可以被回收?什么时候可以被垃圾回收?
JVM中的永久代中会发生垃圾回收吗
...
技术笔记
后端开发
Java
JVM
面试
Posted by lily on September 21, 2024
JVM中String对象内存
JVM中String对象内存
技术笔记
后端开发
Java
JVM
Posted by lily on September 21, 2024
数据结构
2024-09-21-字典树(前缀树)
数据结构
字典树是一种特殊的多叉树,它虽然是树形结构但是设计出来却是为了方便查找存储的字符串类型的。
字典树的数据结构跟一般的多叉树不同,它的子节点的指针是存放在26个字母表长度的数组中的.
TrieNode中保存了下一个字符可能出现的所有字符的链接,我们可以通过当前节点预知所有子节点的值。
struct TrieNode {
bool isEnd; // 该结点是否是一个串的结束
...
技术笔记
数据结构与算法
数据结构
算法
Posted by lily on September 21, 2024
问题
问题
问题
Java创建的线程是用户级的还是内核级的
Java创建的线程是内核级的。主要是因为JVM会利用操作系统对线程的创建和管理功能。因为java中的线程都是由继承Thread类和实现Runnable接口创建的(重写run方法,执行start方法),而这个类和接口的实现直接映射到操作系统线程。当创建一个线程时,Java会直接把线程的创建和管理功能交给操作系统来控制。所以当在java中请求创建...
技术笔记
操作系统
问题排查
Java并发
Posted by lily on September 21, 2024
广搜和深搜
2024-09-20-图论
广搜和深搜
问题
什么题型适合使用广度优先搜索而不是深度优先搜索?
视具体题目要求的答案而定,因为不管是深搜还是广搜的基本定义都是从当前节点出发,向周围节点扩散搜索的搜索方法。
深搜顾名思义就是先对某一条路径进行深度搜索(直到搜索至终点之后才会返回)。
而广搜则是需要兼顾所有方向,每一个搜索方向的进度都是一样的,所有方向齐头并进,适合搜索节奏需要保持一致的题型,一般最短路径题型会...
技术笔记
数据结构与算法
数据结构
算法
Posted by lily on September 20, 2024
操作系统
操作系统
技术笔记
操作系统
Posted by lily on September 20, 2024
B+树原理
2024-08-19-Mysql索引
B+树原理
存储数据结构
B+tree是在B tree的基础上添加
B+树是一种自平衡的树数据结构,通常用于数据库和文件系统中。与普通二叉树不同,B+树的每个节点可以有多个子节点。在B+树中,根节点可以包含多个键(关键字),并且这些键是有序的。
B+树的结构
节点类型:
内部节点: 包含指向子节点的指针和一些键(关键字),用于指导查找路径。
叶子节点: 包含实际的数据记录或...
技术笔记
后端开发
数据库
MySQL
SQL
数据结构
Posted by lily on August 19, 2024
索引分类
2024-08-19-Mysql索引
索引分类
按数据类型:B+树索引、Hash索引、full-text索引
存储数据的不同数据结构分
按物理类型:聚簇索引、二级索引
聚簇索引一定会存在。如果没有自定聚簇索引,InnoDB会根据情况给每张表创建一个。
首先如果存在主键会以主键创建一个聚簇索引。
主键不...
技术笔记
后端开发
数据库
MySQL
SQL
Posted by lily on August 19, 2024
SSO原理
2024-07-20-基于SpringSecurity和JWT的SSO
参考文章:
单点登录SSO解决方案之SpringSecurity+JWT实现
SSO原理
参考文章:
博客园SSO原理
单点登录SSO是企业级多业务系统整合的常用方案,它的目的是只要在其中的一个业务系统进行登录和授权作用就可以访问其他受信的任业务系统。
一次登录处处登录,一次登出,每个系统都是登出状态,这依赖于一个sso认证中心服务端,每次生成以及验证t...
技术笔记
后端开发
Java
SpringSecurity
计算机网络
Posted by lily on July 20, 2024
Chapter1:DDD分层基础手脚架搭建
Chapter1:DDD分层基础手脚架搭建
Chapter1:DDD分层基础手脚架搭建
DDD分层是项目基础架构设计的一种模式,类似于web开发中的MVC架构,我觉得将DDD分层架构与曾经学习过的spring clould Alibaba微服务架构类比会更相似些。
为什么使用DDD架构
DDD架构分层包括
项目基础手脚架
应用层-application
这是应用启动和配置的一层,如一些 aop 切面或者 config 配置,以及打包...
技术笔记
后端开发
项目实战
Java
系统设计
高并发
Posted by lily on June 11, 2024
栈与队列
栈与队列
在java中可以使用封装好的栈(现成的数据结构),也可以
技术笔记
数据结构与算法
数据结构
算法
Posted by lily on June 6, 2024
从输入URL到页面显示发生了什么
2024-06-04-Http篇
从输入URL到页面显示发生了什么
简洁步骤
浏览器使用DNS协议查找URL对应的IP地址,生成Http请求报文
客户端通过ip和端口号向服务端发起建立TCP连接
在TCP连接的基础上向服务端发送http请求报文
服务端接收到请求报文并解析,生成对应的html页面发送给客户端
客户端解析http请求,渲染并展示html页面,同时根据Html中的其他资源的url(例如图片,...
技术笔记
计算机网络
Posted by lily on June 4, 2024
数据库错题本
2024-06-04-数据库错题本
SQL SELECT DISTINCT 语句
在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。
关键词 DISTINCT 用于返回唯一不同的值。
语法:
SELECT DISTINCT 列名称 FROM 表名称
元组(tuple)是关系数据库中的基本概念,关系是一张表,表中的每行(即数据库中的每条记录)就是一个元组,每列就...
技术笔记
面试
问题排查
计算机核心课程
Posted by lily on June 4, 2024
继承
2024-06-04-封装继承多态
继承
子类继承于父类时,子类构造器调用情况
子类调用构造器(是否会调用父类构造器)
由于子类继承于父类,子类默认包含父类所有的类属性以及成员变量,如果子类初始化结束时没有初始化父类,那么在子类中引用父类的某些方法和属性时就会因为没有初始化父类而抛出异常。因此在初始化子类时会在子类构造器中默认调用父类构造器初始化父类。
如果在初始化子类之前先调用父类构造器初始化了,...
技术笔记
后端开发
Java
JAVASE
Posted by lily on June 4, 2024
介绍一下数据库设计的三范式
2024-06-03-数据库知识总览
介绍一下数据库设计的三范式
第一范式:表不可再分
第二范式:消除了非主属性对主属性的部分函数依赖
第三范式:消除了非主属性对主属性的传递函数依赖
数据库设计的三范式是数据规范化的一种方法,是针对关系数据库设计的理论。第一范式要求每个列的值都是不可再分的原子值;第二范式要求所有非主键属性必须完全依赖于整个主键,而不是依赖于主键的某一部分;第三范式要求非主键属性之间不能存在传递依赖关系,即所有数...
技术笔记
后端开发
数据库
MySQL
SQL
Posted by lily on June 3, 2024
设计模式错题总结
2024-05-25-设计模式错题总结
题解:
打印池在系统中只能存在唯一的一个对象,成为一个线程安全的资源,所以单例模式正确
一个系统只允许存在一个打印池对象,打印池是管理多台打印机的作用,看到池就想享元是不对的。
题解:
观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新
当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如...
技术笔记
面试
问题排查
计算机核心课程
设计模式
Posted by lily on May 25, 2024
SQL错题本
2024-05-25-SQL错题本.md
RIGHT JOIN 关键字会返回右表 (t2) 所有的行(本题***4行),即使在左表 (t1) 中没有匹配的行。
参考文章:https://blog.csdn.net/Li_Jian_Hui_/article/details/105801454
官方解析:Mysql(版本8.0.25)不支持full join,执行报错【1064 - You have an error in yo...
技术笔记
SQL
面试
问题排查
计算机核心课程
Posted by lily on May 25, 2024
Linux错题本
2024-05-25-Linux错题本
文件类型和权限由开头的 10 个字符表示,第一位表示文件的类型,有如下几种:
普通文件类型
d 目录文件
b 块设备文件
c 字符设备文件
s 套接字文件
p 管道文件
l 链接文件
所以D是符号链接文件。
知识点:Linux
nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续...
技术笔记
Linux
面试
问题排查
计算机核心课程
Posted by lily on May 25, 2024
设计模式错题总结
2024-05-25-设计模式错题总结
题解:
打印池在系统中只能存在唯一的一个对象,成为一个线程安全的资源,所以单例模式正确
一个系统只允许存在一个打印池对象,打印池是管理多台打印机的作用,看到池就想享元是不对的。
题解:
观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新
当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如...
技术笔记
面试
问题排查
计算机核心课程
设计模式
Posted by lily on May 25, 2024
介绍一下数据库设计的三范式
2024-05-25-数据库知识库
介绍一下数据库设计的三范式
第一范式:表不可再分
第二范式:消除了非主属性对主属性的部分函数依赖
第三范式:消除了非主属性对主属性的传递函数依赖
数据库设计的三范式是数据规范化的一种方法,是针对关系数据库设计的理论。第一范式要求每个列的值都是不可再分的原子值;第二范式要求所有非主键属性必须完全依赖于整个主键,而不是依赖于主键的某一部分;第三范式要求非主键属性之间不能存在传递依赖关系,即所有数...
技术笔记
面试
计算机核心课程
Posted by lily on May 25, 2024
SQL错题本
2024-05-25-SQL错题本.md
RIGHT JOIN 关键字会返回右表 (t2) 所有的行(本题***4行),即使在左表 (t1) 中没有匹配的行。
参考文章:https://blog.csdn.net/Li_Jian_Hui_/article/details/105801454
官方解析:Mysql(版本8.0.25)不支持full join,执行报错【1064 - You have an error in yo...
技术笔记
SQL
面试
问题排查
计算机核心课程
Posted by lily on May 25, 2024
Linux错题本
2024-05-25-Linux错题本
文件类型和权限由开头的 10 个字符表示,第一位表示文件的类型,有如下几种:
普通文件类型
d 目录文件
b 块设备文件
c 字符设备文件
s 套接字文件
p 管道文件
l 链接文件
所以D是符号链接文件。
知识点:Linux
nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续...
技术笔记
Linux
面试
问题排查
计算机核心课程
Posted by lily on May 25, 2024
介绍一下数据库设计的三范式
2024-05-25-数据库知识库
介绍一下数据库设计的三范式
第一范式:表不可再分
第二范式:消除了非主属性对主属性的部分函数依赖
第三范式:消除了非主属性对主属性的传递函数依赖
数据库设计的三范式是数据规范化的一种方法,是针对关系数据库设计的理论。第一范式要求每个列的值都是不可再分的原子值;第二范式要求所有非主键属性必须完全依赖于整个主键,而不是依赖于主键的某一部分;第三范式要求非主键属性之间不能存在传递依赖关系,即所有数...
技术笔记
后端开发
数据库
MySQL
SQL
面试
Posted by lily on May 25, 2024
Java面试知识+错题本
2024-05-25-Java面试知识+错题本
如果多个Java线程同时访问创建同一个对象的构造器,此时构造器方法的调用情况如下:
对象创建过程的原子性:
尽管有多个线程同时试图创建同一个对象,但JVM会保证对象创建过程的原子性。也就是说,在任意时刻只会有一个线程成功地完成对象的创建。
线程安全的对象创建:
由于对象创建是一个原子操作,因此即使多个线程同时访问同一个构...
技术笔记
后端开发
Java
面试
问题排查
JAVASE
Posted by lily on May 25, 2024
库表设计
2024-05-07-OJ在线判题系统
设计流程
调研相关系统
项目模块设计
项目流程设计/时序图
库表设计
库表设计
题目表
业务代码代码设计注意事项
定义枚举类与定义常量标识的场景
枚举类可以拥有更多属性和方法
调用得到所有的枚举值的特定属性
i...
技术笔记
后端开发
项目实战
Java
SpringBoot
系统设计
Posted by lily on May 7, 2024
项目思路整理
2024-04-07-EasyBI项目学习笔记
:::tips
参会人:@提及时间:2024-03-11
:::
项目需求
用户输入需求,利用ai生成智能图表,保存并返回给用户
建表
用户表
图表信息表
```sql
– 图表信息表
create table if not exists chartTable
(
id bigint auto_increment comment ‘id’ primar...
技术笔记
后端开发
项目实战
Java
SpringBoot
数据分析
Posted by lily on April 7, 2024
抽奖项目简介
2024-06-11-Lottery抽奖系统
抽奖项目简介
参考文章:
xfg博客园
抽奖系统设计
一个抽奖,想让用户合理的别中奖(品牌方不能亏损),又要能达到拉新促活的效果、提高平台曝光量的需求(keep之前就有一个跑步抽奖的活动很出圈),并且抽奖细节从其设计到落地实现都是需要精细化控制成本的。
现在各个互联网产品场景中,都有抽奖模块来拉新促活,如;平台签到积分抽奖、商城支付完成抽奖、打车优惠发券抽奖都需依赖抽奖模块...
技术笔记
后端开发
项目实战
Java
系统设计
高并发
Posted by lily on March 11, 2024
基本流程
2024-03-10-项目经验笔记
基本流程
先设计好完整需求(一开始系统不用过于复杂,预留优化点)
比如代码结构设计方面–抽出来新增加一个包
函数设计,把函数抽出来进行复用设计等
再先跑通流程,快速把代码完成,写测试类,流程能跑通再改细节(fast and dirty)
当想要引入某个技术时按流程来
springboot引入
查...
技术笔记
项目实战
项目笔记
Posted by lily on March 10, 2024
基本流程
基本流程
基本流程
先设计好完整需求(一开始系统不用过于复杂,预留优化点)
比如代码结构设计方面–抽出来新增加一个包
函数设计,把函数抽出来进行复用设计等
再先跑通流程,快速把代码完成,写测试类,流程能跑通再改细节(fast and dirty)
当想要引入某个技术时按流程来
springboot引入
...
项目实战
学习笔记
Posted by lily on March 10, 2024
注意事项
注意事项
注意事项
eclipse
设置自动提示
Window -> Preferences -> Java -> Editor -> Content Assist -> Auto Activation
输入提示的触发字符,比如输入“abcdefghijklmn.”
设置自动导包
在eclispe中,打开 Wi...
技术笔记
项目实战
数据结构与算法
算法
项目笔记
Posted by lily on February 29, 2024
注意事项
2024-2-29-蓝桥杯学习笔记
2024-2-29-蓝桥杯学习笔记
注意事项
eclipse
设置自动提示
Window -> Preferences -> Java -> Editor -> Content Assist -> Auto Activation
输入提示的触发字符,比如输入“abcdefghijklmn.”
设置自动导...
技术笔记
项目实战
数据结构与算法
算法
项目笔记
Posted by lily on February 29, 2024
注意事项
注意事项
注意事项
eclipse
设置自动提示
Window -> Preferences -> Java -> Editor -> Content Assist -> Auto Activation
输入提示的触发字符,比如输入“abcdefghijklmn.”
设置自动导包
在eclispe中,打开 Wi...
项目实战
数据结构与算法
算法
学习笔记
Posted by lily on February 29, 2024
元素出口端一般定义为队头,入口端一般定义为队尾
2024-02-25-高级数据结构.md
元素出口端一般定义为队头,入口端一般定义为队尾
Stack
遵从FILO原则,先进后出,所以peek的是栈头元素,pop的是栈头元素。一切操作都是在栈头进行的。(开口部分为栈头)
push(E e):将元素压入栈顶
pop():将栈顶元素弹出
peek():查看栈顶元素
empty():判断栈是否为空
Stack<Integer> stack=new ...
技术笔记
后端开发
Java
JAVASE
Posted by lily on February 25, 2024
伙伴匹配系统后端项目
2023-12-10-伙伴匹配系统
伙伴匹配系统后端项目
项目设计
用户匹配。根据特定算法匹配标签相同的伙伴,从带标签的用户数据库中查询数据并进行匹配,匹配成功后将匹配结果存入数据库中,用户可以查看自己的匹配结果。
功能设计
用户注册
用户登录
用户添加标签
用户推荐,在主页推荐某些可以组队的用户
用户去添加标签,标签分类设计
用户修改标签
用户查看自己的...
技术笔记
后端开发
项目实战
Java
SpringBoot
Redis
Posted by lily on December 10, 2023
伙伴匹配系统后端项目
2023-12-10-伙伴匹配系统.md
伙伴匹配系统后端项目
项目设计
用户匹配。根据特定算法匹配标签相同的伙伴,从带标签的用户数据库中查询数据并进行匹配,匹配成功后将匹配结果存入数据库中,用户可以查看自己的匹配结果。
功能设计
用户注册
用户登录
用户添加标签
用户推荐,在主页推荐某些可以组队的用户
用户去添加标签,标签分类设计
用户修改标签
用户查看自己的...
后端开发
项目实战
Java
SpringBoot
Redis
学习笔记
Posted by lily on December 10, 2023
vscode快捷键
2023-12-10-vscode.md
vscode快捷键
代码格式化:shift+alt+f
全局搜索:ctrl+shift+p
选中多行:shift+alt+鼠标左键
snippets玩法
局部代码片段存储在.vscode文件夹中
全局代码片段存储在C:\Users\lily\AppData\Roaming\Code\User\snippets中
代码片段的格式:
{
"Print t...
技术笔记
开发工具
学习工具
Posted by lily on December 10, 2023
lily's Daliy Todo List
lily's Daliy Todo List
lily’s Daliy Todo List
2023-10-18
idea
xmind破解导出我的md笔记
hutul小工具识图,扩充我的md笔记
寻找稳定的md笔记平台(完善自己的博客网站)
study
操作系统多线程笔记未完成
用户中心项目进度–用户中心项目进度.md🔗
project
tools
2023-12-10
idea
xmi...
技术笔记
项目实战
项目笔记
Posted by lily on October 18, 2023
lily's Daliy Todo List
lily's Daliy Todo List
lily’s Daliy Todo List
2023-10-18
idea
xmind破解导出我的md笔记
hutul小工具识图,扩充我的md笔记
寻找稳定的md笔记平台(完善自己的博客网站)
study
操作系统多线程笔记未完成
用户中心项目进度–用户中心项目进度.md🔗
project
tools
2023-12-10
idea
xmi...
项目实战
学习笔记
Posted by lily on October 18, 2023
Markdown 代码语法
2023-09-23-markdown语法
Markdown 代码语法
要将单词或短语表示为代码,请将其包裹在反引号 (`) 中。
Markdown语法 HTML 预览效果
At the command prompt, type nano. At the command prompt, type nano. At the command prompt, type nano.
#转义反引号
如果你要表示为代码的单词或短语中包含一个或多...
技术笔记
开发工具
学习工具
Posted by lily on September 23, 2023
yarn
2023-09-22-ant-design-pro
yarn
关于yarn tyarn npm cnpm的区别
npm是nodejs的包管理工具,yarn是facebook开发的另一个包管理工具,tyarn是yarn的国内镜像(taobao镜像源),cnpm是npm的国内镜像。
推荐使用 tyarn 来进行包管理,可以极大地减少 install 的时间和失败的概率,并且完全兼容 npm。如果喜欢使用 npm 而不是 yarn,可以使...
技术笔记
前端
前端学习
Posted by lily on September 22, 2023
springboot默认配置
springboot默认配置
springboot默认配置
ComponentScan与MapperScan
@ComponentScan是SpringBoot的注解,如其意“Sacn”是扫描的意思。
SpringBoot在没配置@ComponentScan的情况下,默认只扫描和主类处于同包下的Class
@ComponentScan是组件扫描注解,用来扫描@Controller @Service @Reposi...
技术笔记
后端开发
Java
SpringBoot
Posted by lily on September 19, 2023
springboot默认配置
springboot默认配置
springboot默认配置
ComponentScan与MapperScan
@ComponentScan是SpringBoot的注解,如其意“Sacn”是扫描的意思。
SpringBoot在没配置@ComponentScan的情况下,默认只扫描和主类处于同包下的Class
@ComponentScan是组件扫描注解,用来扫描@Controller @Service @Reposi...
技术笔记
后端开发
Java
Spring
SpringBoot
Posted by lily on September 19, 2023
redis数据结构
redis数据结构
redis数据结构
stream篇
常见指令
|指令|用途|
|-|-|
|xadd|添加|
技术笔记
后端开发
Redis
中间件
分布式
Posted by lily on September 18, 2023
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
Posted by lily on September 18, 2023
redis数据结构
redis数据结构
redis数据结构
stream篇
常见指令
|指令|用途|
|-|-|
|xadd|添加|
技术笔记
后端开发
数据库
Redis
Posted by lily on September 18, 2023
markdown篇
$
插入图片

开头一个感叹号 !
接着一个方括号,里面放上图片的替代文字
接着一个普通括号,里面放上图片的网址,最后还可以用引号包住并加上选择性的 ‘title’ 属性的文字。
技术笔记
开发工具
学习工具
Posted by lily on May 15, 2023
SpringSecurity
SpringSecurity基础
spring security
使用BCryptPasswordEncoder进行密码加密和校验的Spring Security实现
在Spring Security中,我们可以使用BCryptPasswordEncoder来对密码进行加密和校验。下面是相关步骤的总结:
BCryptPasswordEncoder作为密码加密器
将其注入到Spring容器中,可以在配置类中添加以下代码:...
技术笔记
后端开发
Java
SpringSecurity
Posted by lily on May 15, 2023
异常处理:异常处理器
开发中前后端分离下的异常处理
为什么要特别关注异常的处理
后端出现异常时前端以及其他调用方无法得知出现了什么异常,无法进行相应的处理
后端内部,每一层都可能出现异常,需要一个统一处理的方式:统一抛出到表现层处理
springMVC内置了异常处理方法:异常处理器
异常处理器
关键注解
@ControllerAdvice:异常处理器
@RestControllerAdvice:异常处理器 rest...
技术笔记
后端开发
Java
Spring
Posted by lily on May 8, 2023
JWT
learn about JWT
初识JWT
在用户访问资源过程中,服务器需要解决两个问题:身份验证和授权。
身份验证解决“你是谁”的问题
授权解决“你能做什么”的问题。
JWT 是一种用于在双方(例如客户端和服务器)之间安全传输信息的轻量级、自包含的 Token。
—
JWT组成部分
JWT 由三部分组成:头部(Header)、负载(Payload)和签名(Signature)。
...
技术笔记
SpringSecurity
计算机网络
Posted by lily on May 7, 2023
Maven
get fimiliar with maven
Maven 简介
Maven是一个项目管理工具,可以对Java项目进行构建、依赖管理。Maven是Apache下的一个开源项目,它的主要目标是提供一个易于使用的项目管理工具,能够帮助开发人员更好的管理项目的构建、报告和文档的编写。
maven的主要功能
maven构建项目指令
mvn spring-boot:run //运行springboot项目,其中springboot是通...
技术笔记
开发工具
学习工具
Posted by lily on May 6, 2023
计网知识碎片集合
有关计网知识的知识碎片集合
知识碎片集合
知识碎片集合
代理模式篇
clash rules
代理配置部分
基本规则部分
代理模式篇
解决节点和游戏使用、代理模式、DNS分流、UDP穿透等问题的教程。解释网络协议栈和代理行为。
Detailed Summary fo...
技术笔记
数据结构
计算机网络
Posted by lily on May 5, 2023
ruoyi-vue-pro项目
ruoyi-vue-pro项目
ruoyi-vue-pro项目
项目地址:https://gitee.com/y_project/RuoYi-Vue-Pro
项目介绍
项目架构图片
!架构图
后端采用 Spring Boot 多模块架构、MySQL + MyBatis Plus、Redis + Redisson
数据库使用 MySQL
权限认证使用 Spring Security & Toke...
技术笔记
后端开发
Java
SpringBoot
Posted by lily on April 22, 2023
springboot基础
springboot
基础配置
在Spring中,@Repository、@Service和@Controller等注解都是@Component注解的拓展。@Repository注解用于标识数据访问对象(DAO),@Service注解用于标识业务逻辑对象,@Controller注解用于标识控制器对象。
而MyBatis中,@Mapper注解是用来标识Mapper接口的。在Spring中,为了将Mapper注入...
技术笔记
后端开发
Java
SpringBoot
Posted by lily on April 22, 2023
mybatis-plus简介
mybatis-plus简介
mybatis-plus简介
mybatis-plus与mybatis的区别
plus的使用
比较
plus的使用
mybatis-plus简介
mybatis-plus仅是在mybatis框架上做增强,并没有修改整个框架的核心逻辑。所以用基础的mybatis设置也是可以的。
plus maven依赖坐标
添加mybatis-plus依赖时需要注意,mybatis-plus依赖...
技术笔记
后端开发
Java
SpringBoot
MyBatis
Posted by lily on April 22, 2023
Mybatis & jdbc & mysql
Mybatis & jdbc & mysql
Mybatis & jdbc & mysql
MYSQL 登录 erro 1045 — 忘记密码/密码错误
重置密码
方法一:使用 –init-file 选项
创建一个文本文件,例如 init-file.txt ,并在其中写入以下内容: ALTER USER ‘root...
技术笔记
后端开发
Java
MySQL
SQL
问题排查
Posted by lily on April 18, 2023
简单的bug收录
简单的bug收录
idea自动配置相关bug
自动导包错误
前情:在配置springboot相关pojo类时,使用了lombok的@data注解,想测试lombok注解是否生效。于是在测试类中测试能否使用Autowired注解注入相关类,但是idea报错,提示找不到相关类。
bug信息为
org.springframework.beans.factory.UnsatisfiedDependencyExcep...
问题排查
Posted by lily on April 18, 2023
复杂的bug收录
搞不定的bug搞定花了好些时间
复杂的bug收录
Mysql字符集编码问题
mybatis-plus与springboot整合版本问题
mybatis spring boot starter的版本选择要求与MyBatis、MyBatis-Spring、Java和Spring Boot的版本有关。例如:
如果您使用的是MyBatis 3.5+、MyBatis-Spring 3.0、Java 17+和Spring ...
问题排查
Posted by lily on April 18, 2023
初识redis
how to use redis in springBoot?
springBoot整合redis
spring使用redis原理
spring提供了一个RedisConnectionFactory接口,获取Redisconnection接口对象。由于现在使用的是jedis驱动,所以spring就会提供RC接口的实现类JedisConnectionFactory,通过JedisConnectionFactory获取JedisConnection接...
技术笔记
后端开发
Java
SpringBoot
Redis
Posted by lily on April 17, 2023
java反射
java反射
Java反射
什么是反射
反射是指在程序运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取信息以及动态调用对象的方法的功能称为java语言的反射机制。
反射的作用
在运行时判断任意一个对象所属的类
获取类的完整结构,包括类的属性、方法、构造器、父类、实现的接口等从而可以动态的创建对象、调用对象的方法、访问属性等...
技术笔记
后端开发
Java
JAVASE
Posted by lily on April 13, 2023
SpringMVC
MVC.md
SpringMVC
目录
SpringMVC
bean的加载控制
请求映射路径
请求参数传递
josn格式数据传输
RESTful风格
统一返回格式
...
技术笔记
后端开发
Java
Spring
SpringMVC
Posted by lily on April 8, 2023
爬取京东物品信息实例
爬取京东物品信息实例
代码设计
网页分析
第一页url
未动态刷新:
https://search.jd.com/Search?keyword=%E5%A9%9A%E7%BA%B1&suggest=1.rem.0.0&wq=%E5%A9%9A%E7%BA%B1&pvid=33d24bcb2dca411ebd9dc4729a4e5670&page=1&s=1&...
技术笔记
Python
爬虫
爬虫学习
Posted by lily on April 7, 2023
链表
链表
一、链表知识总结
二、链表做题心得
链表定义
class LinkNode(self, val=None):
# self表示创建的对象自身,定义了对象自带的属性和方法
self.val = val
self.next = None
# 实例化链表并用头插法添加元素
# 已存在头节点
head = LinkNode(val1)
def createLink_head(v...
技术笔记
数据结构与算法
数据结构
算法
Posted by lily on April 7, 2023
递归算法_函数
递归算法_函数
定义
为什么可以使用递归
递归函数的实现原理(程序内部)
带有多个return 出口的递归函数
有返回值
无返回值
递归函数的测试
递归函数中局部变量和全局变量
递归函数在结构上分三部分
递归函数调用自身前
递归调用自身时
递归调用自身后
...
技术笔记
数据结构与算法
数据结构
算法
Posted by lily on April 7, 2023
贪心题况详情
贪心题况详情
摆动数列
求摆动 子序列 的 最大长度
问题:
摆动子序列 :如何衡量是否摆动
最大长度:如何遍历一遍找到最大长度
解决思路:
记录上两个数之间的差值,规定等于 i -(i+1),大于零则为上坡,小于零则为下坡,若能保持上下坡交替关系期间的子序列为 摆动子序列。
由此可以看出必须使用两个变量a, b 一个记录上一段坡度是否与当前坡度【相反】
...
技术笔记
数据结构与算法
数据结构
算法
Posted by lily on April 7, 2023
算法题合集(简单收录)
算法题合集(简单收录)
不是主流思想里的解题角度和思路的合集
422 数组中重复的数字:
时间复杂度O(n),空间复杂度O(1),仅使用常量额外空间的算法解决此问题。(输入输出的空间不算额外的空间,以列表或者其他任何形式存储的输出空间)
要点:
【用我查别人】假如没有重复的数字,那么由题意,每个数字都会对应唯一的下标(用数字作下标);而现在有重复的数字,用数字做...
技术笔记
数据结构与算法
数据结构
算法
Posted by lily on April 7, 2023
树
树
树相关概念:
节点的度:一个节点含有的子树的个数称为该节点的度;
树的度:一棵树中,最大的节点度称为树的度;
叶节点或终端节点:度为零的节点;
非终端节点或分支节点:度不为零的节点;
父亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;
孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点;
兄弟节点:具有相同父节点的节点互称为兄弟...
技术笔记
数据结构与算法
数据结构
算法
Posted by lily on April 7, 2023
数据结构以及相关算法
数据结构以及相关算法
主流的数据结构与必须要掌握的算法思想
数据结构与算法简介
程序 = “数据结构”+“算法”
数据结构是程序实现的工具
算法是动态的存在于程序运行的过程
数据结构表达了多种数据间的关系
基本数据结构
逻辑结构:线性结构、树、图
物理结构:数据结构在实际代码中的实现
刷题顺序参...
技术笔记
数据结构与算法
数据结构
算法
Posted by lily on April 7, 2023
排序查找算法
排序查找算法
刷题顺序参考:
数组——>链表——>哈希表——>字符串——>栈与队列——>树——>回溯——>贪心——>动态规划——>图论——>高级数据结构
学习思维导图
时间复杂度和空间复杂度
时间复杂度
概念:用于评估代码运行所需要时长的衡量单位
O(1),一段代码运行一个单位数量级
O(n),...
技术笔记
数据结构与算法
数据结构
算法
Posted by lily on April 7, 2023
排序查找算法
排序查找算法
线性表的查找
线性查找——linear search
按顺序依次往后查找
二分查找——binary search
时间复杂度:每次查找,循环减半,时间复杂度为O(logn)
```python
class Solution(object):
def search(self, nums, target):
left = 0
right = ...
技术笔记
数据结构与算法
数据结构
算法
Posted by lily on April 7, 2023
快速傅里叶变换FFT
快速傅里叶变换FFT
以两个同次高阶多项式乘法为例
两个多项式系数相乘Pe=[p0,p1…],Po=[p0,p1…],时间复杂度为O(n^2)
为了降低时间复杂度,用n+1个点来表示n阶的多项式,那么只用对应点处函数值相乘,就可以得到结果多项式对应的点,时间复杂度降为O(n)
任一n阶的函数都可以凭借n+1个点来确定
如何取点,如果我们取n个点,每个点都要计算函数值,其实又相...
技术笔记
数据结构与算法
数据结构
算法
Posted by lily on April 7, 2023
回溯算法
回溯算法
回溯的本质是穷举
把要穷举的问题抽象为树形结构
横向遍历(遍历遍及一维数组内所有数据)
纵向遍历(纵向深度由递归深度控制)
穷举模板
枚举剪枝
数据的共享和重复使用
“树枝剪枝”
“树层剪枝”
组合问题(有无重复数据)、分割问题(按顺序分割)
回溯函数模板
...
技术笔记
数据结构与算法
数据结构
算法
Posted by lily on April 7, 2023
动态规划
动态规划
动态规划是什么?
定义
数组定义
在我的理解来看,动态规划的定义强调的是当下此时的状态是由前一时刻的状态推导而来的,它不是由搜索所有的前置状态而去匹配适合的上一个状态(那是深搜/广搜),而是强调这一刻与上一刻的逻辑依赖关系。
前置状态选择
这一刻动规数组表达的是什么,取决于我们对它的自定义。
上一刻是什么,该如何选择,到底是由什么推导而得到的此刻的状态?
我看很多题目基本上都会将dp[i-...
技术笔记
数据结构与算法
数据结构
算法
Posted by lily on April 7, 2023
IDEA篇
IDEA篇
Idea快捷键
| 快捷键组合 | 实现效果 |
| — | — |
| psvm + Tab键 / main + Tab键 | public static void main(String[] args) |
| . +sout (点sout方法) | System.out.println() |
| sout + Tab键/Enter键 | System.out.println() |...
技术笔记
开发工具
学习工具
Posted by lily on April 7, 2023
Git工作流程
2023-04-07-Git.md
Git工作流程
一般工作流程如下:
在本地创建一个Git仓库。
克隆 Git 资源作为工作目录。在克隆的资源上添加或修改文件。
如果其他人修改了,你可以更新资源。在提交前查看修改。
提交修改。
在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。
关于三个区域的概念:
第一步是用git add把文件添加进去,实际上就是把文件修改...
技术笔记
开发工具
学习工具
Posted by lily on April 7, 2023
python基础
python基础
格式化输出
数字保留几位小数
s = 1.345667
return "%.2f"%s
print("%.2f"%s)
sorted函数
sorted(iterable, key=None, reverse=False)
iterable – 要排序的可迭代对象
key——指定可迭代对象里的一个以用来排序
reverse – 排序规则,...
技术笔记
Python
Posted by lily on April 7, 2023
SpringFramework
SpringFramework
Spring简介
Spring是什么
是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
Spring的优点
方便解耦,简化开发,通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码造成的程序耦合度高。
AOP编程的支持,通过Spring提供的AOP功能,方便进行面向切面编程。
声明式事务的支持,在Spring中,我们...
技术笔记
后端开发
Java
Spring
Posted by lily on April 7, 2023
SpringFramework
SpringFramework
Spring简介
Spring是什么
是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
Spring的优点
方便解耦,简化开发,通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码造成的程序耦合度高。
AOP编程的支持,通过Spring提供的AOP功能,方便进行面向切面编程。
声明式事务的支持,在Spring中,我们...
技术笔记
后端开发
Java
Spring
Posted by lily on April 7, 2023
Spring-Mybatis
Spring-Mybatis
数据库概念
数据库
数据库是一个容器,包含了很多数据,当然这些数据可能存在不同的小容器(表)里面。
若用水来形容数据,数据库就是水库。
数据源
数据源是连接到数据库的一类路径,它包含了访问数据库的信息(地址、用户名、密码)。
数据源就像是排水管道。
数据库连接
数据库连接是根据数据源产生的实际连接上数据库的路径。
数据库连接就像是管道里面的水管,这些水管都按照管道(数据源)...
技术笔记
后端开发
Java
Spring
MyBatis
Posted by lily on April 7, 2023
Spring AOP编程
2023-04-07-AOP.md
Spring AOP编程
1. 什么是面向切面编程(AOP)
AOP是一种编程思想,它将程序的业务逻辑和系统服务分离开来,通过对横切关注点的分离,它可以使得业务逻辑和系统服务更加清晰,降低了模块间的耦合度,提高了系统的可重用性,同时提高了开发的效率。
在软件开发中,散布于应用中多处的功能被称为横切关注点(比如日志、安全和事务管理)。通常来讲,这些横切关注点...
技术笔记
后端开发
Java
Spring
Posted by lily on April 7, 2023
mysql
mysql
Mysql内存
buffer pool中存储什么
结构
头节点一对一管理数据页
buffer pool如何管理
三个链表
三种缓存页类型
free page(空闲页)
Dirty page(脏页)
clean page(未被修改过的页)
如何提高缓存命中率
普通LRU算法存在下面问题:
buffer pool污染
预读失...
技术笔记
后端开发
数据库
MySQL
SQL
Posted by lily on April 7, 2023
servlet
servlet
一、getRequestDispatcher()
getRequestDispatcher()包含两个重要方法,分别是请求转发和请求包含。一个请求跨多个Servlet时,需要使用请求转发和请求包含。
首先需要获得一个RequestDispatcher 对象:
RequestDispatcher rd = request.getRequestDispatcher("/MyServlet"...
技术笔记
后端开发
Java
JavaWeb
JavaWEB
Posted by lily on April 7, 2023
mysql
mysql
sql数据类型
数字类型
| 类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
| — | — | — | — | — |
| TINYINT | 1 Bytes | (-128,127) | (0,255) | 小整数值 |
| SMALLINT | 2 Bytes | (-32 768,32 767) | (0,65 535) | 大整数值 |
| MEDIUMINT...
技术笔记
后端开发
Java
MySQL
SQL
JavaWeb
Posted by lily on April 7, 2023
maven & tomcat
maven & tomcat
Maven
maven 是一个java项目管理工具,里面含有很多相关的帮助插件,其中maven helper可以帮助更方便的一键编译运行maven项目等
maven编译,多次编译会覆盖原有的项目内文件.若文件存在,新编译文件会覆盖,但不会删除已存在文件
maven-install-plugin:2.4 already delet from meven/plugins, usin...
技术笔记
后端开发
Java
开发工具
JavaWeb
JavaWEB
Posted by lily on April 7, 2023
Mybatis
Mybatis
快速引入框架
建立maven项目
导入mybatis坐标,下载mybatis框架
:::info
如果使用 Maven 来构建项目,则需将下面的依赖代码置于 pom.xml 文件中:
org.mybatis mybatis
x.x.x
:::
配置mybatis核心xml文件,
修改配置信息,获取数据库连接实例的数据...
技术笔记
后端开发
Java
JavaWeb
MyBatis
JavaWEB
Posted by lily on April 7, 2023
JavaWeb
JavaWeb
Jdbc
使用jdbc连接数据库
JDBC的主要功能如下:
(1)建立与数据库或者其他数据源的链接(2)向数据库发送SQL命令(3)处理数据库的返回结果
1. 注册驱动
2. 获取连接
a.mysql端口连接
b.登录用户
c.密码
3.定义sql
4. 获取执行sql的对象
5.执行sql
a. executeUpdata--增删改查
b. executeQuary...
技术笔记
后端开发
Java
JavaWeb
JavaWEB
Posted by lily on April 7, 2023
常用类String&compareTo&Arrays...
常用类String&compareTo&Arrays...
string相关类
String
StringBuilder:线程安全
deleteCharAt() 删除指定位置字符
StringBuffer:线程不安全,效率高
String底层实现
final char[] a;底层实际上是不可变的char数组。
Serialized Form 该类型可序列化,可将strin...
技术笔记
后端开发
Java
JAVASE
Posted by lily on April 7, 2023
java多线程&Socket
java多线程&Socket
程序、进程、线程
线程的创建
继承Thread类
实现Runnable接口
实现Callable接口
创建线程池
线程的同步(解决线程不安全问题)
同步代码块
同步方法
Lock锁(多个线程一个🔒)
线程通信
经典例子:生产者(prod...
技术笔记
后端开发
Java
JAVASE
Java并发
Posted by lily on April 7, 2023
Stream Api
Stream Api
简介
Stream 和 Collection 集合的区别:
:Collection 是一种静态的内存数据结构,而 Stream 是有关计算的。前者是主要面向内存,存储在内存中,后者主要是面向 CPU,通过 CPU 实现计算。
Stream到底是什么
是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。
...
技术笔记
后端开发
Java
JAVASE
Posted by lily on April 7, 2023
Lambda表达式
Lambda表达式
lambda表达式
函数式接口
只包含一个抽象方法的接口,称为函数式接口。
@FunctionalInterface
interface myInterface{
xxx absMethod();
}
你可以通过 Lambda 表达式来创建该接口的对象。(若 Lambda 表达式抛出一个受检异常(即:非运行时异常),那么该异常需要在目标接口的抽...
技术笔记
后端开发
Java
JAVASE
Posted by lily on April 7, 2023
IO stream & api
IO stream & api
file类:创建磁盘中指定文件或文件夹的java对象
四个输入输出/字符字节流的抽象基类
InputStream/OutputStream 字节流byte
Reader/Writer 字符流char
节点流
文件节点流+File
处理流
缓冲流Buffer:自带缓...
技术笔记
后端开发
Java
JAVASE
Posted by lily on April 7, 2023
Collections_Map-集合_泛型
Collections_Map-集合_泛型
接口概述
collections作为接口提供了java内部相关数据结构的方法规范
map接口
集合框架概述
collections接口—–存储单个数据
List子接口—–“动态数组”,存储的数据特点为,数据有序,可重复。
ArrayList 实现类—–是list接口的主要实现类,底层封装了数组,按地址...
技术笔记
后端开发
Java
数据结构
JAVASE
Posted by lily on April 7, 2023
计算机网络综述
计算机网络综述
计算机网络综述
因特网概述
网络:由两个以上的计算机通过节点连接形成的网络
互联网:网络的网络
因特网:专有名词,全世界最大的互联网
信息交换技术
电路交换:先连通,再传输数据,最后取消连接
报文交换:不固定线路,不需要提前连通,整个数据直接传输
分组交换:把数据分包分别先...
技术笔记
计算机网络
Posted by lily on November 11, 2022
No notes match this filter.