Redis原理学习
Redis数据结构:参考文章:
javaguide Redis相关部分
redis 数据结构
🌟redis对象与数据结构的关系图:
redisObject结构: redis的每个value底层是由 redisObject指向具体的数据结构
12345678910#define LRU_BITS 24typedef struct redisObject { unsigned type:4; unsigned encoding:4; unsigned lru:LRU_BITS; int refcount; void *ptr;}robj;
type:是哪种Redlis对象
encoding : 表示用哪种底层编码,用OBJECT ENCODING [key] 可以看到对应的编码方式
Iru:记录对象访问信息,用于内存淘汰。
refcount:引用计数,用来描述有多少个指针,指向该对象
ptr:内容指针,指向实际内容
其中:*ptr指向各种数据结构对象内容
5 种基础数据结构:String(字符串)、List(列表)、Set(集合)、Hash(散列 ...
Docker学习
基本概念:
镜像:
容器:
仓库:
java8新特性学习
Java8官方文档
Lambda表达式:Lambda表达式语法基础: 关键运算符: -> (箭头操作符或Lambda 操作符)
格式:Lambda 表达式参数列表 -> Lambda 表达式中所需要执行的功能,即Lambda 体
语法格式一:无参数,无返回值。
() ->System.out.println(“Hello”);
语法格式二:有一个参数,并且无返回值。
(e) -> System.out.println(e);
语法格式三:若只有一个参数,参数的小括号可以省略。
e -> System.out.println(e);
语法格式四:有两个以上的参数,又返回值,有多条执行语句。
(x,y)-> {
System.out.println(“Lambda”);
return Integer.compare(x,y);
};
语法格式五:如果有两个以上的参数,又返回值,只有一条执行语句,Lambda 体的大括号和return可以省略。
Comparatorc ...
MySQL原理学习
MySQL原理
架构MySQL架构
MySQL服务器逻辑架构:
最上层的服务并不是 MySQL 所独有的,大多数基于网络的客户端/服务器的工具或者服务都有类似的架构。比如连接处理、授权认证、安全等等。
第二层架构是 MySQL 比较有意思的部分。大多数 MySQL 的核心服务功能都在这一层,包括查询解析、分析、优化、缓存以及所有的内置函数(例如,日期、时间、数学和加密函数),所有跨存储引擎的功能都在这一层实现:存储过程、触发器、视图等。
第三层包含了存储引擎。存储引擎负责 MySQL 中数据的存储和提取。和 GNU/Linux 下的各种文件系统一样,每个存储引擎都有它的优势和劣势。服务器通过 API 与存储引擎进行通信。这些接口屏蔽了不同存储引擎之问的差异,使得这些差异对上层的查询过程透明。存储引擎API包合几十个底层函数,用于执行诸如“开始一个事务”或者“根据主键提取一行记录” 等操作。但存储引擎不会去解析 SQL,不同存储引擎之间也不会相互通信,而只是简单地响应上层服务器的请求。
连接管理与安全性
每个客户端连接都会在服务器进程中拥有一个线程,这个连接的查询 ...
JVM探究
JVM:
运行过程: Java 源文件,通过编译器,能够生产相应的.Class 文件,也就是字节码文件,而字节码文件又通过 Java 虚拟机中的解释器,编译成特定机器上的机器码 。
① Java 源文件(.java)—->编译器(javac)—->字节码文件(.class)
② 字节码文件(.class)—->JVM—->机器码
1.1线程 这里所说的线程指程序执行过程中的一个线程实体。 JVM 允许一个应用并发执行多个线程。Hotspot JVM 中的 Java 线程与原生操作系统线程有直接的映射关系。 当线程本地存储、缓冲区分配、同步对象、栈、程序计数器等准备好以后,就会创建一个操作系统原生线程。Java 线程结束,原生线程随之被回收。操作系统负责调度所有线程,并把它们分配到任何可用的 CPU 上。当原生线程初始化完毕,就会调用 Java 线程的 run() 方法。当线程结束时,会释放原生线程和 Java 线程的所有资源。
1.2JVM内存区域
JVM内存区域分为:
线程私有区域
程序计数器
虚拟机栈
本地方法区
线程共享区域(JAVA8之前)
J ...
API接口开放平台
API开放平台背景:
前端开发需要用到后台接口
使用现成的系统的功能
做一个API接口平台:
防止攻击(安全性)
不能随便调用(限制、开通)
统计调用次数
计费
流量保护
API接入
项目介绍做一个提供API接口调用的平台:
用户可以注册登录,开通接口调用权限。用户可以使用接口,并且每次调用会进行统计。
管理员可以发布接口、下线接口、接入接口,以及可视化接口的调用情况、数据。
业务流程
技术选型前端
Ant Design Pro
React
Ant Design Procomponents
Umi
Umi Request(Axios的封装)
后端
Spring Boot
Spring Boot Starter(SDK开发)
网关、限流、日志实现 —–> dubbo+nacos
项目开发的阶段划分1、初始化和展示项目介绍、设计、技术选型
基础项目的搭建
接口管理
用户查看接口
2、接口调用
继续开发接口管理前端页面
开发模拟API接口
开发调用这个接口的代码
保证调用的安全性(API签名认证)
客户端SDK的开发
3、接口计量与保护
开发接口发 ...
算法小结
算法学习知识汇总
Spring
本博客参照了韩顺平老师的 Spring 课程讲义!
1 Spring 基本介绍1.1 官方资料1.1.1 官网 https://spring.io/1.1.2 Spring5 下载……
1.1.3 在线文档: https://docs.spring.io/spring-framework/docs/current/reference/html/1.1.4 离线文档 : 解压 spring-5.3.8-dist.zipspring-framework-5.3.8\docs\reference\html\index.html1.1.5 离线API: 解压 spring-5.3.8-dist.zipspring-framework-5.3.8\docs\javadoc-api\index.html1.2 Spring 学习的核心内容一图胜千言
老韩解读上图:
1、Spring 核心学习内容 IOC、AOP, jdbcTemplate, 声明式事务
2、IOC: 控制反转 , 可以管理 java 对象
3、AOP : 切面编程
4、 JDBCTemplate : 是 spring 提供一套 ...
设计模式
尚硅谷视频看到P43设计模式七大原则:目的:1) 代码重用性(即:相同功能的代码,不用多次编写)
2)可读性(即:编程规划性,便于其他程序员的阅读和理解)
3)可扩展性(即:当需要增加新的功能时,非常的方便,称为可维护)
4) 可靠性(即:当我们增加新的功能后,对原来的功能没有影响)
5) 使程序呈现高内聚,低耦合的特性
单一职责原则 「一个类只负责一项职责」
单一职责原则注意事项和细节:
1. 降低类的复杂度,一个类只负责一项职责。
2.提高类的可读性、可维护性。
3.降低变更引起的风险。
4.通常情况下,我们应该遵守单一职责原则。
——只有逻辑足够简单时,才可以在代码级违反单一职责原则;
——只有类型的方法数量足够少时,才可以才方法级别保持单一职责原则。
接口隔离原则客户端不应该依赖它不需要的接口,一个类对另一个类的依赖应建立在最小的接口上。
因为如果不是建立在最小的接口上,那么就说明有几个接口白白被实现了(实现但是没有被用),违背了接口隔离原则!
改进后:⬇️
依赖倒转原则
高层模块不应该依赖低层模块,二者都应该依赖其抽象 ...
SpringCloud
本博客参照了韩顺平老师的 Sping Cloud 课程讲义!
1 Spring Cloud 基本介绍1.1 官方文档1.1.1地址**: https://spring.io/projects/spring-cloud**1.2 微服务引出1.没有微服务技术**,是不是程序员就不能开发大型项目?** 是可以的, 对大型项目进行模块划分,对各个模块进行实现, 模块之间更多的是以API调用完成,耦合度较高, 不利于扩展和维护。
2.标准的微服务解决方案(springcloud 和cloud alibaba)出现原因和价值是什么? (1) **微服务可以根据业务不同,将一个大项目 , 分解成不同的服务(微服务,比如搜 索服务/网关服务/配置服务/存储服务/发现服务等等) **
(2)各个服务通过分布式方式进行工 作,从而可以高效,快速,稳定的完成复杂的功能
(3) 如果小伙伴还不理解, 你也可以理解成就 将原来大项目的某些模块->抽出形成微服务->配合分布式工作方式->从而高效,快速,稳定的完成复杂业务功能。
3. ...