SpringCloud-Alibaba-第一章
NacosDynamic Naming and Configuration Service 一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台 使用官方文档: https://nacos.io/zh-cn/docs/what-is-nacos.html 核心功能服务注册:Nacos Client 会通过发送 REST 请求的方式向 Nacos Server 注册自己的服务,提供自身的元数据,比如 ip 地址、端口等信息。Nacos Server 接收到注册请求后,就会把这些元数据信息存储在一个双层的内存 Map 中。 服务心跳:在服务注册后,Nacos Client 会维护一个定时心跳来持续通知 Nacos Server,说明服务一直处于可用状态,防止被剔除。默认 5s 发送一次心跳。 服务同步:Nacos Server 集群之间会互相同步服务实例,用来保证服务信息的一致性。 服务发现:服务消费者(Nacos Client)在调用服务提供者的服务时,会发送一个 REST 请求给 Nacos Server,获取上面注册的服务清单,并且缓存在 Nacos Client 本地,同 ...
事务隔离级别和MVCC
创建一个表: 12345678910111213141516CREATE TABLE hero ( number INT, name VARCHAR(100), country varchar(100), PRIMARY KEY (number)) Engine=InnoDB CHARSET=utf8;INSERT INTO hero VALUES(1, '刘备', '蜀');mysql> SELECT * FROM hero;+--------+--------+---------+| number | name | country |+--------+--------+---------+| 1 | 刘备 | 蜀 |+--------+--------+---------+1 row in set (0.00 sec) 事务隔离级别事务并发执行遇到的问题看一下访问相同数据的事务在不保证串行执行(也就是执行完一个再执行另一个)的情况下可能会出现哪些问题: 脏写(Dirty Writ ...
设计模式总结
设计模式总结常见设计模式1、单例模式12345678910111213141516171819public class Singleton { private static Singleton instance; private Singleton() { } public static Singleton getInstance() { if (null != instance) { return instance; } synchronized (Singleton.class) { if (null == instance) { instance = new Singleton(); } } return instance; }} 2、策略模式常用写法12345678 ...
spring-cache+redis自定义cache
使用spring cache+Redis整合redis hash等数据结构Spring cache源码分析 Cache、CacheManager:Cache抽象了缓存的通用操作,如get、put,而CacheManager是Cache的集合,之所以需要多个Cache对象,是因为需要多种缓存失效时间、缓存条目上限等 CacheInterceptor、CacheAspectSupport、AbstractCacheInvoker:CacheInterceptor是一个AOP方法拦截器,在方法前后做额外的逻辑,也即查询缓存、写入缓存等,它继承了CacheAspectSupport(缓存操作的主体逻辑)、AbstractCacheInvoker(封装了对Cache的读写) CacheOperation、AnnotationCacheOperationSource、SpringCacheAnnotationParser:CacheOperation定义了缓存操作的缓存名字、缓存key、缓存条件condition、CacheManager等,AnnotationCacheOperationSou ...
如何搭建自己的网盘
Cloudreve,帮助您以最低的成本快速搭建公私兼备的网盘系统 ✨ 特性 ☁️ 支持本机、从机、七牛、阿里云 OSS、腾讯云 COS、又拍云、OneDrive (包括世纪互联版) 作为存储端 📤 上传/下载 支持客户端直传,支持下载限速 💾 可对接 Aria2 离线下载 📚 在线 压缩/解压缩、多文件打包下载 💻 覆盖全部存储策略的 WebDAV 协议支持 ⚡ 拖拽上传、目录上传、流式上传处理 🗃️ 文件拖拽管理 👩👧👦 多用户、用户组 🔗 创建文件、目录的分享链接,可设定自动过期 👁️🗨️ 视频、图像、音频、文本、Office 文档在线预览 🎨 自定义配色、黑暗模式、PWA 应用、全站单页应用 🚀 All-In-One 打包,开箱即用 📌 资料 官网:https://cloudreve.org(opens new window) 文档:https://docs.cloudreve.org/getting-started/install(opens new window) 社区:https://forum.cloudreve ...
手写spring系列-第3章-容器IOC-2
初始化和销毁方法当我们的类创建的 Bean 对象,交给 Spring 容器管理以后,这个类对象就可以被赋予更多的使用能力 可以在 Bean 初始化过程,执行一些操作。比如帮我们做一些数据的加载执行,链接注册中心暴漏RPC接口以及在Web程序关闭时执行链接断开,内存销毁等操作。如果说没有Spring我们也可以通过构造函数、静态方法以及手动调用的方式实现,但这样的处理方式终究不如把诸如此类的操作都交给 Spring 容器来管理更加合适。 需要满足用户可以在 xml 中配置初始化和销毁的方法,也可以通过实现类的方式处理,比如我们在使用 Spring 时用到的 InitializingBean, DisposableBean 两个接口。 -其实还可以有一种是注解的方式处理初始化操作,不过目前还没有实现到注解的逻辑,后续再完善此类功能 在 spring.xml 配置中添加 init-method、destroy-method 两个注解,在配置文件加载的过程中,把注解配置一并定义到 BeanDefinition 的属性当中。这样在 initializeBean 初始化操作的工程中,就可以通 ...
手写spring系列-第2章-容器IOC-1
一、实现一个简单的Bean容器一个简单的 Spring Bean 容器实现,还需 Bean 的定义、注册、获取三个基本步骤,简化设计如下; 定义:BeanDefinition,它会包括 singleton、prototype、BeanClassName 等。 注册:这个过程就相当于我们把数据存放到 HashMap 中,只不过现在 HashMap 存放的是定义了的 Bean 的对象信息。 获取:最后就是获取对象,Bean 的名字就是key,Spring 容器初始化好 Bean 以后,就可以直接获取了。 Spring Bean 容器类关系 BeanDefinition,用于定义 Bean 实例化信息,现在的实现是以一个 Object 存放对象 BeanFactory,代表了 Bean 对象的工厂,可以存放 Bean 定义到 Map 中以及获取 1234567891011121314public class BeanDefinition { private Object bean; public BeanDefinition(Object bean) ...
手写spring系列-第1章-源码整体解析
一、前言先参考之前写的几篇 1、spring源码解析 2、spring循环依赖源码分析 在手写的过程中会剔除 Spring 源码中繁杂的内容,摘取整体框架中的核心逻辑,简化代码实现过程,保留核心功能,例如:IOC、AOP、Bean生命周期、上下文、作用域、资源处理等内容实现。 Spring Bean 在容器的生命周期 实例化->设置属性->初始化Bean对象->销毁 BeanDefinition 的解析过程 Bean 的生命周期
mysql系列-第1章-从跟儿上理解MYSQL笔记而已
InnoDBTCP/IP真实环境中,数据库服务器进程和客户端进程可能运行在不同的主机中,它们之间必须通过网络来进行通讯。MySQL采用TCP作为服务器和客户端之间的网络通信协议。在网络环境下,每台计算机都有一个唯一的IP地址,如果某个进程有需要采用TCP协议进行网络通信方面的需求,可以向操作系统申请一个端口号,这是一个整数值,它的取值范围是0~65535。这样在网络中的其他进程就可以通过IP地址 + 端口号的方式来与这个进程连接,这样进程之间就可以通过网络进行通信了。 一些重要的字符集ASCII字符集 共收录128个字符,包括空格、标点符号、数字、大小写字母和一些不可见字符。由于总共才128个字符,所以可以使用1个字节来进行编码,我们看一些字符的编码方式: 12'L' -> 01001100(十六进制:0x4C,十进制:76)'M' -> 01001101(十六进制:0x4D,十进制:77) ISO 8859-1字符集 共收录256个字符,是在ASCII字符集的基础上又扩充了128个西欧常用字符(包括德法两国的字母),也可以使用1个字 ...