学习笔记
文章平均质量分 94
内容来自网上学习,系个人java体系学习自结。主要涉及的内容为:mysql专题,jvm专题,juc并发专题,spring专题,分布式、微服务专题等内容
验证码有毒
2017年7月毕业于东莞猴赛雷社会学院。码农届的搬砖员
展开
-
【分布式微服务专题】从单体到分布式(四、SpringCloud整合Sentinel)
相对来说,Sentinel的学习难度比之之前的Dubbo要低了不少。不过在学习过程中也遇到了一些认知局限带来的困难。比如,虽然还是学习了Sentinel,但是不知道生产环境该如何配置才是最佳的状态。说到底,Sentinel还是没有提供很好的文档支持。比如:生产最佳实践方案。官方也确实提供了一个,但是总感觉不太完备。另外在学习的过程中再次提醒了我:不要盲目的添加中间件,中间件的引入势必会造成系统复杂度上升,也带来了一定的运维成本。所以,若非有必要的,不一定要特定地去引入某个中间件。原创 2024-01-11 11:35:35 · 1202 阅读 · 0 评论 -
【分布式微服务专题】SpringSecurity OAuth2快速入门
这里面的笔记都是我这里抄抄那里抄抄得来的,然后也经过了一些简单的测试,主要是用来拓宽知识面用的,毕竟到了项目开发中,不会裸用这些技术框架,通常都是采用第三方集成框架。另外需要说明的是,这里要介绍的框架应该有点过时了,在Spring官网已经没有了项目介绍,现在项目似乎已经升级,并且迁移为项目。所以我打算学习完现在的OAuth2之后,继续学习。OAuth2.0协议介绍OAuth(Open Authorization,开放授权)是一个关于授权(authorization)的开放网络标准协议。原创 2024-01-09 15:04:57 · 1637 阅读 · 0 评论 -
【分布式微服务专题】从单体到分布式(三、SpringCloud整合Dubbo)
本片笔记主要是记录我整合Dubbo的过程。引入Dubbo主要是为了实现微服务之间的调用,即:RPC(Remote-Process-Call,远程过程调用)。本次整合Dubbo可谓是曲折坎坷,耗费了不少时间和精力。不过也是收获挺多的,有些项目问题,真的不亲身经历,终是【纸上谈兵】。举个鲜明的例子:我为什么要自己从0开始搭建微服务项目?因为我想要获得【从0开始搭建项目】的经验和能力!maven的基本知识。原创 2023-12-17 14:41:08 · 228 阅读 · 0 评论 -
【分布式微服务专题】从单体到分布式(二、SpringCloud整合Nacos)
本篇笔记主要是记录我整合Nacos项目进来的过程。以实现服务注册发现,以及分布式配置管理。Nacos官网传送门Nacos使用详解》)原创 2023-12-07 22:42:52 · 1296 阅读 · 0 评论 -
【分布式微服务专题】从单体到分布式(一、SpringCloud项目初步升级)
从本节课开始,我将自己手写一个基于SpringCloud框架的web服务集群,中间会引入常用的微服务中间件。如:配置中心、网关、链路追踪、断路器等等。本节课只是简单地从原有单体项目,然后升级成SpringCloud架构。为了升级演示效果,我写了一个简单的SpringBoot单体应用,架构如下:然后实现的功能也很简单,直接list获取库里面所有的数据。会员管理模块:提供一个/user/list接口,获取数据库里面所有用户数据钱包管理模块:提供一个接口,获取数据库里面所有钱包数据。原创 2023-12-06 11:47:48 · 1396 阅读 · 0 评论 -
【微服务专题】微服务架构演进
事实上,我个人对单体到微服务架构的演进尽管能够理解,但总是觉得差点意思,所以这边在学习之余,顺便写个笔记总结一下,加深一下印象吧。Spring Cloud提供了一些可以让开发者快速构建微服务应用的工具,比如配置管理、服务发现、熔断、智能路由等,这些服务可以在任何分布式环境下很好地工作。Distributed configuration,分布式配置Service registration and discovery,服务注册与发现Routing,服务路由。原创 2023-11-28 22:35:49 · 1527 阅读 · 0 评论 -
【ShardingSphere专题】SpringBoot整合ShardingSphere(一、数据分片入门及实验)
最近线上的项目部分数据表增量速度比较快,可以预见的是,个把月后数据量会急剧增长至千万级,所以只是简单的使用索引等已经无法满足业务需求了,分库分表势在必行!于是着手研究如何整合ShardingSphere到现有项目中,顺带记录一下实验过程吧。特别声明:这边是实验配置阶段,还没有完成整合到项目、以及测试联调阶段,所以不敢保证实验过程是否正确。而且,在我的业务中,还涉及到【普通单表】与【分片表】之间的联表查询,所以需要后期比较严谨的测试才能知道最终效果。不过我自己对比了站内其他大佬的教程,大体是没问题的。原创 2023-11-28 20:32:01 · 2257 阅读 · 4 评论 -
【Netty专题】Netty调优及网络编程中一些问题补充(面向面试学习)
很直接哈,最近去面试的时候遇到了一些Netty网络编程,序列化框架上的问题,当时回答的不是很好,所以赶紧回来学习了一下,顺便做一下笔记,沉淀一下了。什么是序列化/反序列化?我在前面的文章中有提到过,但那时候没有写的很仔细,我自己也忘了,罪过啊。其实我知道,序列化/反序列化在网络编程中是很重要的概念,只不过被我自己疏忽了。言归正传。什么是序列化、反序列化?我们知道,数据在网络中传输不可能是原文传输的,人家机器设备只认得二进制01串。所以,把原文转换为01串字节流这个过程就是序列化;反之,则叫做反序列化。原创 2023-11-25 17:03:20 · 1445 阅读 · 0 评论 -
【微服务专题】SpringBoot自动配置简单源码解析
想要搞懂自动装配,需要当前系列前两篇笔记内容打底。不过我上一篇笔记写的不好,没有什么突出的重点,主要也是当时跟着课程看了源码之后,也没发现什么特别的,直到在看自动装配源码的时候,才后知后觉遗漏了一些重要的知识点。但是总体来说不影响这一节课的笔记记录吧。我们说起SpringBoot,总会不自觉的联想到自动配置约定大于配置等标签,但说实在,我是有一点困惑的,这个【约定和配置】到底是什么意思,或者说,它们具体指的是哪些内容啊?!我在想,像我这种,只是用过那么一年多SSM/SSH。原创 2023-11-24 23:47:59 · 1453 阅读 · 0 评论 -
【微服务专题】Spring启动过程源码解析
这部分只是个人的自结,方便后面回来看源码的时候跟踪,个人感觉看完之后没什么需要特别学习的地方。大家绕道走吧。原创 2023-11-15 23:49:32 · 941 阅读 · 2 评论 -
【微服务专题】手写模拟SpringBoot
SpringBoot最大的特点是什么大家伙还记得吧?自动配置 + 约定大于配置原则。简单学习了一下SpringBoot的启动流程简单学习了一下SPI机制,及其在Java和Spring中的使用。原创 2023-11-11 00:53:55 · 1233 阅读 · 0 评论 -
【ES专题】Logstash与FileBeat详解以及ELK整合详解
这一篇笔记给大家分享一些日志管理相关的组件。为什么需要这个玩意呢?这主要还是因为分布式微服务的兴起啊!试想一下,现在的电商场景,动不动就百万流量进来,万一线上出了什么问题了,异常啊什么的,总该需要追溯日志吧?而且这些日志,在微服务场景下,通常是分布在多个机器里面的。那在这种海量业务日志里面,如何快速找到分布在各服务器里面的日志呢?海量日志多台服务器集中化日志管理思路:日志收集 -> 格式化分析 -> 检索和可视化 -> 风险告警Logstash 是免费且开放的服务器端数据处理管道,能够从多个来源。原创 2023-11-08 23:39:14 · 912 阅读 · 1 评论 -
【ES专题】ElasticSearch功能详解与原理剖析
使用:搜索和聚合操作语法,理解分词,倒排索引,相关性算分(文档匹配度)优化: 数据预处理,文档建模,集群架构优化,读写性能优化学习了ES的预处理器弄明白了ES的读写流程,以及ES写原理。原创 2023-11-07 22:26:31 · 556 阅读 · 0 评论 -
【ES专题】ElasticSearch集群架构剖析
使用何种通信协议去同步数据,互相通信采用何种策略同步数据(异步还是同步)如何保证一致性,保证到什么程度(【最终一致性】 or【实时一致性 / 强一致性】)使用何种算法去选举主次节点(感觉这个比较随意,通常为了快速恢复服务,选举流程是怎么快怎么来,但是不能出现【脑裂问题】)原创 2023-11-05 22:13:08 · 2555 阅读 · 0 评论 -
【ES专题】ElasticSearch搜索进阶
丑话说在前头,说实在这篇笔记写的不是很好,我自己都云里雾里的,所以大伙们可以不用看这篇笔记了(主要还是评分机制有点搞不清楚)。我单纯是为了记录笔记所以才坚持写成博客,方便后面回顾。等我什么时候真正理解清楚了,我再回过头来修改一下。ElasticSearch之score打分机制原理。原创 2023-11-02 18:56:35 · 914 阅读 · 0 评论 -
【ES专题】ElasticSearch 高级查询语法Query DSL实战
语法结构比较陌生没有中文文档, 只能看英文其他博客也比较少介绍语法结构。比如说,为什么查询中会出现query关键词就跟Mysql有自己的查询语言一样,ES作为一款优秀的分布式文档存储和【搜索引擎】,它也有自己的查询语言。即:Query DSL(查询Domain Specific Language),查询领域专用语言。Query DSL是利用RESTfull风格API传递JSON格式的请求体(RequestBody)数据与ES进行交互,这种方式的丰富查询语法让ES检索变得更强大,更简洁。原创 2023-10-31 23:38:09 · 1450 阅读 · 0 评论 -
【ES专题】ElasticSearch快速入门
现在有一个【搜索】的场景,在CSDN中 【搜索】【Java设计模式】,你会看到如下页面:看,大伙有没有想过,上面这种搜索,到底是怎样实现的?就假设他们就是存在一个Mysql里面了,那我们不妨来反推一下,上面这个搜索,它们背后的表结构是怎样的。id标题title内容content1Java中23种设计模式Java中23种设计模式,包括简单介绍,适用场景以及优缺点等2Java常见设计模式总结设计模式是一套经过反复使用的代码设计经验,目的是为了重用代码、让代码更容易被他人理解、保证代码可靠性。原创 2023-10-30 23:38:42 · 1266 阅读 · 0 评论 -
【Netty专题】用Netty手写一个远程长连接通信框架
目录前言阅读对象阅读导航前置知识课程内容一、使用Netty实现一个通信框架需要考虑什么问题二、通信框架功能设计2.1 功能描述2.2 通信模型2.3 消息体定义2.4 心跳机制2.5 重连机制*2.6 Handler的组织顺序2.7 交互式调试三、代码实现:非必要。感兴趣的自行查看3.1 最外层的通信入口3.1.1 NettyRpcServer:服务端通信入口3.3 NettyRpcClient:客户端通信入口3.3 NettyRpcClient:交互式调试3.2 server包下3.2.1 ServerI原创 2023-10-25 20:30:44 · 644 阅读 · 0 评论 -
【Netty专题】Netty实战与核心组件详解
Netty啊,真的是大名鼎鼎!Netty之于Java网络编程,相当于Spring之于Java开发。两者都是Java生态的金字塔尖的【框架】!所以,非常推荐Java程序员学习这个框架。Netty有多牛逼?据说,曾经在性能上把谷歌公司一个用C++写的网络通信框架都给人干碎了。后来,后者参照了Netty的设计方案,才完成了超越。Netty是由 JBOSS 提供的一个Java开源网络通信框架。它是一个【异步事件驱动】的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。也就是说,原创 2023-10-21 23:49:50 · 381 阅读 · 0 评论 -
【Netty专题】【网络编程】从OSI、TCP/IP网络模型开始到BIO、NIO(Netty前置知识)
我是有点怕网络编程的,总有点【谈网色变】的感觉。为了让自己不再【谈网色变】,所以我想过系统学习一下,然后再做个笔记这样,加深一下理解。但是真要系统学习,其实还是要花费不少时间的,所以这里也只是简单的,尽可能地覆盖一下,梳理一些我认为比较迫切需要了解的网络编程相关的知识。其实单单网络编程跟TCP/IP协议族就可以拿来写一个独立的笔记了,但是为了让知识点更耦合一点,我还是决定写在一起。当然这样也有坏处,那就是知识点比较密集,然后导致笔记篇幅偏长,所以阅读的朋友给点耐心。原创 2023-10-17 23:37:21 · 1283 阅读 · 0 评论 -
【Zookeeper专题】Zookeeper选举Leader源码解析
为什么要看源码?说实在博主之前看Spring源码之前没想过这个问题。因为我在看之前就曾听闻大佬们说过【JavaCoder三板斧:Java,Mysql,Spring】,所以我抱着积极的学习心态去看的。另外,我也发现了一个很有意思的现象:就是我们一群人在学习,但是每个人学习的【偏好】似乎是不一样的,或者说关注的重点不一样。所以,其实我也不知道自己关注的重点到底对不对,但总归是有收获的。现在回过头来再看ZK源码,有必要学习吗?原创 2023-10-11 20:28:44 · 578 阅读 · 0 评论 -
【Zookeeper专题】Zookeeper经典应用场景实战(二)
说到分布式锁,这里其实有2个概念,即【分布式 + 锁】。分布式这个概念我们可以看看【前置知识】;至于锁嘛,第一概念当然是JUC中的锁了。如:Sychronized和ReentractLock。但是,这些作为JVM级别的锁,只能应用在同一个进程中,不同线程的竞争中,没办法满足分布式(多进程)的使用场景、于是,就需要一种更加高级的锁机制来处理多进程之间的数据同步问题,这种机制就是:分布式锁。基于数据库的分布式锁。这种方案使用数据库的事务和锁机制来实现分布式锁。原创 2023-10-08 11:45:07 · 937 阅读 · 0 评论 -
【Zookeeper专题】Zookeeper经典应用场景实战(一)
ZooKeeper : Curator框架之数据缓存与监听CuratorCache。原创 2023-10-07 12:45:24 · 1551 阅读 · 0 评论 -
【Kafka专题】Kafka日志索引详解以及生产常见问题分析与总结
了解了文件存储日志文件的特点及数据内容。转载 2023-10-03 14:29:29 · 417 阅读 · 0 评论 -
【Kafka专题】Kafka集群架构设计原理详解
Kafka的天生就是为了保证高吞吐,高性能,高可扩展的三高架构设计的,所以如果在学习中,遇到一些无法理解的,你可以适当地从这三高点入手理解。服务端Broker:一个Kafka服务器就是一个Broker(在MQ中经常出现的一个名词:中介者)Kafka将状态信息保存在Zookeeper中,这些状态信息记录了每个Kafka的Broker服务与另外的Broker服务有什么不同。通过这些差异化的功能,共同体现出集群化的业务能力。这些数据,需要在集群中各个Broker之间达成共识,因此,需要存储在一个所有集群都能共同访原创 2023-10-02 23:21:05 · 1394 阅读 · 0 评论 -
【Kafka专题】Kafka收发消息核心参数详解
Kafka的客户端基本就是固定的按照这三个大的步骤运行。在具体使用过程中,最大的变数基本上就是给生产者和消费者设定合适的属性,这些属性极大的影响了客户端程序的执行方式。*二、从客户端属性来梳理客户端工作机制*2.1 消费者分组消费机制这是我们在使用kafka时,最为重要的一个机制,因此最先进行梳理。在Consumer中,都需要指定一个GROUP_ID_CONFIG属性,这表示当前Consumer所属的消费者组。// 翻译如下:// 标识此消费者所属的消费者组的唯一字符串。原创 2023-10-02 17:39:40 · 1790 阅读 · 0 评论 -
【Mysql专题】一条SQL在Mysql中是如何执行的
知其然,当知其所以然。Mysql作为我们后端的重中之重,搞懂其执行原理非常有必要。甚至有人这么说:Java一定要搞好的三板斧有【数据结构】、【Mysql】、【Spring】。只要你能舞好这三板斧,基本上可以成为一个比较优秀的JavaCoder了。复习sql的执行顺序,特别是查询语句的执行顺序学习Mysql服务的内部组件结构图学习Mysql内部各组件的作用。原创 2023-09-28 17:49:28 · 510 阅读 · 2 评论 -
【Kafka专题】Kafka快速实战以及基本原理详解
ChatGPT对于Apache Kafka的介绍:Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发并于2011年开源。它主要用于解决大规模数据的实时流式处理和数据管道问题。Kafka是一个分布式的发布-订阅消息系统,可以快速地处理高吞吐量的数据流,并将数据实时地分发到多个消费者中。Kafka消息系统由多个broker(服务器)组成,这些broker可以在多个数据中心之间分布式部署,以提供高可用性和容错性。Kafka的基本架构由生产者、消费者和主题(topic)组成。原创 2023-09-28 00:41:20 · 1190 阅读 · 0 评论 -
【RocketMQ专题】快速实战及集群架构原理详解
MQ:即MessageQueue,消息队列。是在互联网中使用非常广泛的一系列服务中间件。Message:消息。消息是在不同进程之间传递的数据。这些进程可以部署在同一台机器上,也可以分布在不同机器上Queue:队列。队列原意是指一种具有FIFO(先进先出)特性的数据结构,是用来缓存数据的。对于消息中间件产品来说,能不能保证FIFO特性,尚值得考量。但是,所有消息队列都是需要具备存储消息,让消息排队的能力。广义上来说,只要能够实现消息跨进程传输以及队列数据缓存,就可以称之为消息队列。原创 2023-09-18 23:10:54 · 979 阅读 · 0 评论 -
【Redis专题】Redis高并发缓存架构实践与性能优化
一线大厂Redis高并发缓存架构实战与性能优化。原创 2023-09-13 00:41:01 · 586 阅读 · 3 评论 -
【Redis专题】大厂生产级Redis高并发分布式锁实战
Redis中间件,非常推荐大家学的一个东西。甚至这么说,Redis也许是我们Java程序员,能接触到的分布式、微服务中间件中一个较为高级,但又比较接地气的中间件了。为什么接地气?因为哪怕是在小项目中,Redis都是一个比较常用、可靠的中间件!但是我发现,新手用Redis缓存很容易钻入一个牛角尖,那就是Redis会不会崩啊?万一哪一天断电了,宕机了呢?最后得到一个结论:Redis不可靠啊!!!但现实是,博主当前所在的小公司小项目Redis生产环境运行2年没蹦过。原创 2023-09-11 00:09:30 · 446 阅读 · 0 评论 -
【Redis专题】RedisCluster集群运维与核心原理剖析
前面我们介绍过了Redis主从哨兵的方案。在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会做主从切换,将某一台slave作为master,哨兵的配置略微复杂,并且性能和高可用性等各方面表现一般,特别是在主从切换的瞬间存在【访问瞬断】的情况,而且哨兵模式只有一个主节点对外提供服务,没法支持很高的并发,且单个主节点内存也不宜设置得过大,否则会导致持久化文件过大,影响数据恢复或主从同步的效率为了解决上面说的问题,Redis3,0原创 2023-09-09 02:04:14 · 511 阅读 · 0 评论 -
【Redis专题】Redis持久化、主从与哨兵架构详解
【持久化】这个单词我想大家都不陌生吧。什么是持久化?我们知道,Redis的数据是存储在内存里面的,所以在Redis这里,其实是指把内存中的数据,通过一些策略写到磁盘中,方便因为宕机、或者重启Redis服务的时候,再次把数据加载到内存中。那么,Redis中持久化策略(方式)有哪些呢?其实主要的方式有如下三种,让我们来看看吧在默认情况下, Redis 将内存数据库快照保存在名字为 dump.rdb 的二进制文件中。(PS:该持久化策略,是默认的策略,当然不排除在随后的版本中改了)原创 2023-09-05 23:05:37 · 1479 阅读 · 0 评论 -
【Redis专题】Redis核心数据结构实战与高性能原理解析
比如数据集, 那么这个数据集的基数集为, 基数(不重复元素)为5。基数估计就是在误差可接受的范围内,快速计算基数复习了redis基本数据类型学习了Redis高性能原理,学习其IO模型。原创 2023-09-04 23:39:27 · 483 阅读 · 0 评论 -
【Spring专题】Spring之事务底层源码解析
@Transactional 注解相信大家并不陌生,平时开发中很常用的一个注解。它可以作用在类上面,所有该类的public方法都配置相同的事务属性信息;也可以作用在方法上面,表示方法被纳入了事务管理钟。被事务管理的方法,能保证方法内多个数据库操作要么同时成功、要么同时失败。但是使用@Transactional注解时又需要注意一些细节,不然一个不小心就事务失效了。下面注解的源码,我们来看看它都有什么属性:上面贴的基本上是我们在业务代码中能使用到的关于注解的了。通过属性我们可以看出,注解具备以下作用:看完之原创 2023-08-29 23:32:08 · 493 阅读 · 0 评论 -
【Spring专题】SringAOP底层原理解析——阶段三(AOP)
什么是代理模式?代理模式的解释:为其他对象提供一种代理以控制对这个对象的访问,增强一个类中的某个方法,对程序进行扩展。少年可曾听闻【代理范式】?它的伪代码一般如下:(Cglib动态代理采用的方案class 被代理类 {function 方法A();class 代理类 被代理类 {被代理类 targetObject;@Overridefunction 方法A() {// 这里写被加强的逻辑targetObject.方法A();// 也可以在这里写// 被代理对象。原创 2023-08-23 23:24:03 · 795 阅读 · 0 评论 -
【Spring专题】Spring之Bean的生命周期源码解析——阶段二(三)(属性填充之循环依赖底层原理解析)
说到循环依赖大家都不陌生,循环依赖的代码,就是如下:但是大家有没有想过,循环依赖是如何产生的,然后又是怎么解决的呢?这里,我想给大家推演一下,就像咱是Spring作者一样,思考如何循环依赖。在这里,我还是想提前给大家先大概解释一下,在获取单例bean的时候,Spring源码出现的3个Map。分别如下:我们先来看个图,在没有三级缓存之前,只有一个一级缓存的时候,如果A依赖了B,B依赖了A,那么就会造成下面的现象:很显然,在我们刚开创建的过程中,单例池里面是不会有对象B,也不会有对象A的。毕竟它们才走到第原创 2023-08-21 23:37:41 · 480 阅读 · 4 评论 -
【Spring专题】Spring之Bean的生命周期源码解析——阶段二(二)(IOC之属性填充/依赖注入)
由于Spring源码分析是一个前后联系比较强的过程,而且这边分析,也是按照代码顺序讲解的,所以不了解前置知识的情况下,大概率没办法看懂当前的内容。Spring底层核心原理解析★★☆☆☆手写简易Spring容器过程分析★★☆☆☆Spring之底层架构核心概念解析★★★☆☆★★★★★Bean的生命周期流程图☆☆☆☆☆★★★★★Spring之Bean的生命周期源码解析——阶段一(扫描生成BeanDefinition)★★☆☆☆★★★☆☆Spring之Bean的生命周期源码解析——阶段二(IOC之实例化)原创 2023-08-17 23:27:21 · 867 阅读 · 0 评论 -
【Spring专题】Spring之Bean生命周期源码解析——阶段四(Bean销毁)(拓展,了解就好)
我们在这里讲的是Bean的销毁过程。也许,不少朋友说到Bean的销毁,可能会想到垃圾回收的东西。虽然都是在做生命周期的最后一部分,但其实这俩不是同一回事。垃圾回收是JVM级别的东西,这里说的Bean销毁是Spring的东西,所以当然不是一回事。方法调用链:从入口:registerDisposableBeanIfNecessary()调用进来。原创 2023-08-16 17:43:53 · 698 阅读 · 0 评论 -
【Spring专题】Spring之Bean的生命周期源码解析——阶段二(一)(IOC之实例化)
由于Spring源码分析是一个前后联系比较强的过程,而且这边分析,也是按照代码顺序讲解的,所以不了解前置知识的情况下,大概率没办法看懂当前的内容。Spring底层核心原理解析★★☆☆☆手写简易Spring容器过程分析★★☆☆☆Spring之底层架构核心概念解析★★★☆☆★★★★★Bean的生命周期流程图☆☆☆☆☆★★★★★Spring之Bean的生命周期源码解析——阶段一(扫描生成BeanDefinition)(PS:特别是《Bean的生命周期流程图》,帮大家【开天眼】,先了解下流程。原创 2023-08-14 21:51:28 · 557 阅读 · 0 评论