自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(256)
  • 收藏
  • 关注

原创 学习MySQL看这一篇就够了

文章目录整体大纲1. 为什么要学习数据库2. 数据库的相关概念3. 数据库存储数据的特点4. 初始MySQL4.1 MySQL服务的登录和退出4.2 MySQL的常见命令4.3 MySQL的语法规范4.4 SQL的语言分类4.5 导入数据库表5. DQL语言的学习5.1 基础查询5.1.1 基础查询练习5.2 条件查询5.2.1 条件查询练习5.2.2 经典面试题5.3 排序查询5.3.1 排序查询练习5.4 常见函数5.4.1 常见函数练习5.5 分组函数5.5.1 分组函数练习5.6 分组查询5.6.1

2020-11-10 11:34:42 1548

转载 彻底搞懂排序算法,看这篇就够了

文章目录1.排序算法的介绍和分类2.算法的时间复杂度和空间复杂度2.1 时间频度忽略常数、低次项、系数的说明2.2 时间复杂度的计算2.3 常见的时间复杂度2.3.1 常数阶O( 1 )2.3.2 对数阶O( log2n )2.3.3 线性阶O( n )2.3.4 线性对数阶O( nlogN )2.3.5 平方阶O( n² )2.3.6 立方阶O( n³ )、K次方阶O( n^k )2.4 算法的平均时间复杂度和最坏时间复杂度2.5 空间复杂度3.冒泡排序3.1 代码实现4.选择排序4.1 代码实现5.插入

2020-11-09 12:08:49 860 1

原创 两篇文章带你搞懂GC垃圾回收之基础篇

文章目录1.JVM GC回收哪个区域的垃圾?2.判断对象可以回收的方法2.1 引用计数法2.2 可达分析算法2.3 什么对象可以当作GC Roots?虚拟机栈中的引用对象全局的静态的对象常量引用本地方法栈中JNI引用的对象3.垃圾回收算法3.1 标记清除算法3.2 复制算法3.3 标记压缩算法3.4 分代回收算法4.垃圾回收器理解什么是STW?4.1 Serial 和 Serial Old 回收器4.2 ParNew 回收器4.3 Parallel Scavenge 回收器4.4 Parallel Old

2020-11-08 17:44:42 6339 17

原创 学习String类和日期Date类,看这一篇就够了

写在前面,Java基础系列文章都是作者基于b站尚硅谷的Java基础视频所做的笔记,没有时间的同学可以认真看看,如果有时间的同学,还是建议看看视频,毕竟笔记说到底还是自己的东西,每个人的习惯也是不一样的,所以为了自己,学就对了,加油!也请各位同学,如果感觉对自己有帮助,可以帮忙给个一键三连,谢谢!文章目录1.字符串相关的类1.1 String类的概述1.2 理解String类的不可变性1.3 String不同实例化方式的对比1.4 String不同拼接操作的对比1.5 String使用陷阱1.6 St.

2020-10-30 15:35:33 746 5

原创 快速了解Java多线程,有这一篇就够了

写在前面,Java基础系列文章都是作者基于b站尚硅谷的Java基础视频所做的笔记,没有时间的同学可以认真看看,如果有时间的同学,还是建议看看视频,毕竟笔记说到底还是自己的东西,每个人的习惯也是不一样的,所以为了自己,学就对了,加油!也请各位同学,如果感觉对自己有帮助,可以帮忙给个一键三连,谢谢!文章目录1.基本概念:程序、进程、线程1.1 使用多线程的优点1.2 何时需要多线程2.线程的创建和使用2.1 线程的创建和启动2.2 Thread类2.3 API中创建线程的两种方式2.3.1 创建多线程的.

2020-10-29 23:50:49 687 3

原创 三篇文章彻底搞懂Java面向对象之三

写在前面,Java基础系列文章都是作者基于b站尚硅谷的Java基础视频所做的笔记,没有时间的同学可以认真看看,如果有时间的同学,还是建议看看视频,毕竟笔记说到底还是自己的东西,每个人的习惯也是不一样的,所以为了自己,学就对了,加油!也请各位同学,如果感觉对自己有帮助,可以帮忙给个一键三连,谢谢!文章目录1.关键字:static1.1 static关键字的使用1.2 类变量 vs 实例变量内存解析1.3 自定义 ArrayUtil 工具类的优化1.4 static 关键字的应用举例1.5 static.

2020-10-29 17:44:38 317

原创 三篇文章彻底搞懂Java面向对象之二

写在前面,Java基础系列文章都是作者基于b站尚硅谷的Java基础视频所做的笔记,没有时间的同学可以认真看看,如果有时间的同学,还是建议看看视频,毕竟笔记说到底还是自己的东西,每个人的习惯也是不一样的,所以为了自己,学就对了,加油!也请各位同学,如果感觉对自己有帮助,可以帮忙给个一键三连,谢谢!文章目录1. 面向对象的特征之二:继承性2.方法的重写 (override/overwrite)2.1 方法重写的练习3.四种访问权限修饰符4.关键字:super5.子类对象实例化的过程4.1 super.

2020-10-29 12:31:27 729

原创 三篇文章彻底搞懂Java面向对象之一

写在前面,Java基础系列文章都是作者基于b站尚硅谷的Java基础视频所做的笔记,没有时间的同学可以认真看看,如果有时间的同学,还是建议看看视频,毕竟笔记说到底还是自己的东西,每个人的习惯也是不一样的,所以为了自己,学就对了,加油!也请各位同学,如果感觉对自己有帮助,可以帮忙给个一键三连,谢谢!文章目录1.Java面向对象学习的三条主线2.Java语言的基本元素: 类和对象2.1 类和对象的创建与使用(面向对象思想落地的实现)2.2 内存解析3.类的成员之一:属性(field)3.1 语法格式3.2.

2020-10-29 11:40:00 403

原创 (一)NIO 基础

non-blocking io:非阻塞 IO。

2023-09-24 23:42:06 410

原创 函数式编程

Java8 的 Stream 使用的是函数式编程模式,如同它的名字一样,它可以被用来对集合或数组进行链状流式的操作。可以更方便的让我们对集合或数组进行操作。我们在编写代码的时候出现最多的就是空指针异常,所以在很多情况下我们需要做各种非空的判断。if(author!= null) {尤其是对象中的属性还是一个对象的情况下,这种判断会更多。而过多的判断语句会让我们的代码显得臃肿不堪。

2023-03-20 08:03:55 427 1

原创 第一章 初识 Spring Security

Spring Security 是一个功能强大、可高度定制的身份验证和访问控制的框架。它是保护基于 Spring 应用程序的事实标准。Spring Security 是一个面向 Java 应用程序提供身份验证和安全性的框架。与所有 Spring 项目一样,Spring Security 的真正威力在于它可以轻松地扩展以满足定制需求。AuthenticationManager、ProviderManger、以及 AuthenticationProvider 的关系。

2023-02-20 16:23:22 685

原创 第三章 Kafka生产问题总结及性能优化实践

kafka 是 scala 语言开发,运行在 JVM 上,需要对 JVM 参数合理设置,参看 JVM 调优专题修改这种大内存的情况一般都要用 G1 垃圾收集器,因为年轻代内存比较大,用 G1 可以设置 GC 最大停顿时间,不至于一次 minor gc 就花费太长时间,当然,因为像 kafka,rocketmq,es 这些中间件,写数据到磁盘会用到操作系统的 page cache,所以 JVM 内存不宜分配过大,需要给操作系统的缓存留出几个 G。

2023-02-20 10:56:13 829

原创 第二章 Kafka设计原理详解

在 Kafka 集群中会有一个或者多个 broker,其中有一个 broker 会被选举为控制器(Kafka Controller),它负责管理整个集群中所有分区和副本的状态。

2023-02-20 10:54:24 191

原创 第一章 Kafka快速实战与基本原理

Kafka 是最初由 Linkedin 公司开发的,是一个分布式、支持分区的(partition)、多副本的(replica),基于 zookeeper 协调的分布式消息系统,它最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于 hadoop 的批处理系统、低延迟的实时系统、Storm/Spark 流式处理引擎,web/nginx 日志、访问日志,消息服务等等,用 scala 语言编写,Linkedin 于 2010 年贡献给了 Apache 基金会并成为顶级开源项目。

2023-02-20 10:51:54 274

原创 Zookeeper 学习笔记

Curator 是 Netflix 公司开源的⼀套 Zookeeper 客户端框架,Curator 是对 Zookeeper ⽀持最好的客户端框架。Curator 封装了⼤部分 Zookeeper 的功能,⽐如Leader 选举、分布式锁等,减少了技术⼈员在使⽤ Zookeeper 时的底层细节开发⼯作。我们可以把 Watch 理解成是注册在特定 Znode 上的触发器。

2023-02-20 10:50:21 202

原创 RocketMQ 第二章

Spring Cloud Stream 是⼀个框架,⽤于构建与共享消息系统连接的⾼度可扩展的事件驱动微服务。该框架提供了⼀个灵活的编程模型,该模型基于已经建⽴和熟悉的 Spring 习惯⽤法和最佳实践,包括对持久 pub/sub 语义、消费者组和有状态分区的⽀持。Destination Binders:负责提供与外部消息传递系统集成的组件。Destination Bindings:外部消息系统和最终⽤户提供的应⽤程序代码(⽣产者/消费者)之间的桥梁。

2023-02-20 10:44:45 498

原创 RocketMQ 第一章

随着使⽤消息队列和虚拟主题的增加,阿⾥巴巴团队最早使⽤的 ActiveMQ IO 模块达到了瓶颈。为此尽⼒通过节流、断路器或降级来解决这个问题,但效果不佳。所以开始关注当时流⾏的消息传递解决⽅案 Kafka。不幸的是,Kafka ⽆法满⾜其要求,尤其是在低延迟和⾼可靠性⽅⾯。在这种情况下,决定发明⼀种新的消息传递引擎来处理更⼴泛的⽤例,从传统的发布/订阅场景到⼤容量实时零丢失交易系统。⽬前 RocketMQ 已经开源给 Apache 基⾦会。

2023-02-20 10:43:04 417

原创 MongoDB 学习笔记

官方MongoDB是一个文档数据库,旨在方便应用开发和扩展。百度百科MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系型数据库的。MongoDB 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系型数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

2023-02-20 10:40:51 270

原创 Spring之推断构造方法源码解析

注解,@Autowired 注解可以写在构造方法上,所以哪个构造方法上写了@Autowired 注解,则表示程序员想使用该构造方法进行实例化,当然,它和第一个方式的不同点是,通过 xml 的方式,我们直接指定了构造方法的参数值,而通过 @Autowired 注解的方式,则需要 Spring 通过。先检查是否指定了具体的构造方法和构造方法的参数值,或者在 BeanDefinition 中缓存了具体的构造方法或构造方法的参数值,如果存在则直接使用该构造方法进行实例化。

2023-02-20 10:38:09 361

原创 Spring之循环依赖底层源码解析

1、singletonObjects:缓存经过了完整生命周期的 Bean 对象2、earlySingletonObjects:缓存未经过完整生命周期的 Bean 对象,如果某个 Bean 出现了循环依赖,就会提前把这个暂时未经过完整生命周期的 Bean 放入earlySingletonObjects 中,如果这个 Bean 需要经过 AOP,那么就会把 AOP 代理对象放入 earlySingletonObjects 中,否则就会把原始对象放入earlySingletonObjects 中。

2023-02-20 10:33:04 255

原创 Spring之事务底层源码解析

开启 Spring 事务本质上就是增加了一个 Advisor,当我们使用注解来开启 Spring 事务时,该注解代理的功能就是向 Spring 容器中添加了两个 Bean:AutoProxyRegistrar 主要的作用是向 Spring 容器中注册了一个 InfrastructureAdvisorAutoProxyCreator ****的 Bean。

2023-02-18 18:12:13 1462 2

原创 Spring之AOP底层源码解析

DefaultAdvisorAutoProxyCreator 的父类是 AbstractAdvisorAutoProxyCreator。AbstractAdvisorAutoProxyCreator 非常强大以及重要,只要 Spring 容器中存在这个类型的 Bean,就相当于开启了 AOP,AbstractAdvisorAutoProxyCreator实际上就是一个,所以在创建某个 Bean 时,就会进入到它对应的生命周期方法中,比如在某个 Bean 初始化之后,会调用。

2023-02-17 10:39:38 486

原创 Spring之依赖注入源码解析

Spring 中有几种依赖注入的方式?首先分为两种:1、手动注入2、自动注入。

2023-02-17 10:36:50 468

原创 day12 服务异步通信

Return 是指消息到达交换机了,但是在路由到队列的过程中失败了每个 RabbitTemplate 只能配置一个 ReturnCallback,因此需要在项目加载时配置:在 publisher 服务的// 获取RabbitTemplate对象 RabbitTemplate rabbitTemplate = applicationContext . getBean(RabbitTemplate . class);

2022-11-24 14:04:18 395

原创 day11 多级缓存

传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,如图:在多级缓存架构中,Nginx 内部需要编写本地缓存查询、Redis 查询、Tomcat 查询的业务逻辑,因此这样的 Nginx 服务不再是一个反向代理服务器,而是一个编写业务的 Web 服务器了。因此这样的业务 Nginx 服务也需要搭建集群来提高并发,再由专门的 Nginx 服务来做反向代理,如图:另外,我们的 Tomcat 服务将来也会部署为集群模式:其中 Nginx 编程则会用到 OpenResty 框架结合

2022-11-23 00:19:27 544

原创 day10 分布式缓存

Redis 如何判断某个 key 应该在哪个实例?将 16384 个插槽分配到不同的实例根据 key 的有效部分计算哈希值,然后对 16384 取余余数作为插槽,寻找插槽所在实例即可如何将同一类数据固定的保存在同一个 Redis 实例?将这一类数据使用相同的有效部分,例如 key 都以{typeId}为前缀。

2022-11-21 16:46:32 604

原创 day09 分布式事务

简述CAP定理内容?分布式系统节点通过网络连接,一定会出现分区问题(P)当分区出现时,系统的一致性(C)和可用性(A)就无法同时满足思考:elasticsearch集群是 CP 还是 AP 呢?ES集群出现分区时,故障节点会被剔除出集群,数据分片会重新分配到其它节点,保证数据一致。因此是低可用性,高一致性,属于 CP基本可用软状态最终一致全局事务:整个分布式事务分支事务:分布式事务中包含的每个子系统的事务最终一致思想:各分支事务分别执行并提交,如果有不一致的情况,再想办法恢复数据。

2022-11-20 20:38:57 247

原创 day08 微服务保护

什么是雪崩问题?微服务之间相互调用,因为调用链中的一个服务故障,引起整个链路都无法访问的情况。如果避免因瞬间高并发流量而导致服务故障呢?限流是对服务的保护,避免因瞬间高并发流量而导致服务故障,进而避免雪崩。是一种预防措施。如果避免因服务故障引起的雪崩问题呢?超时处理、线程隔离、降级熔断是在部分服务故障时,将故障控制在一定范围,避免雪崩。是一种补救措施。Sentinel 是阿里巴巴开源的一款微服务流量控制组件。

2022-11-19 16:46:33 599

原创 day07 Elasticsearch搜索引擎3

聚合(aggregations)可以让我们极其方便的实现对文档数据的统计、分析、运算。例如:实现这些统计功能比数据库的sql要方便得多,而且查询速度非常快,可以实现实时搜索效果。现在,我们要统计所有数据中的酒店品牌有几种,其实就是按照品牌对数据进行分组。此时可以根据酒店品牌的名称做聚合,也就是Bucket聚合。默认情况下,Bucket聚合会统计Bucket内的文档数量,记为 *,*并且按照 * 降序排序。我们可以指定 属性,自定义聚合的排序方式:示例:默认情况下,Bucket聚合是对索引库的所有

2022-11-17 16:33:31 942

原创 day06 Elasticsearch搜索引擎2

query:查询条件from和size:分页条件sort:排序条件highlight:高亮条件实体类有两个,一个是前端的请求参数实体,一个是服务端应该返回的响应结果实体。1、请求参数{"key" : "搜索关键字" , "page" : 1 , "size" : 3 , "sortBy" : "default" }因此,我们在// 搜索关键字 private String key;// 当前页码 private Integer page;

2022-11-16 11:52:01 316

原创 day05 ELasticsearch搜索引擎

什么是文档和词条?每一条数据就是一个文档对文档中的内容进行分词,得到的词语就是词条什么是正向索引?基于文档id创建索引。查询词条时必须先找到文档,而后判断是否包含词条什么是倒排索引?对文档内容分词,对词条创建索引,并记录词条所在文档的信息。查询时先根据词条找到文档id,而后获取到文档那么为什么一个叫做正向索引,一个叫做倒排索引呢?正向索引是最传统的,根据id索引的方式。在根据词条进行查询时,必须先逐条获取每个文档,然后判断文档中是否包含所需要的词条,是根据文档找词条的过程。

2022-11-15 00:43:05 172

原创 day04 RabbitMQ基本使用

MQ,中文名称是消息队列(MessageQueue),字面来看就是存放消息的队列。也就是事件驱动架构中的 Broker。ActiveMQRabbitMQRocketMQKafka追求可用性:Kafka、 RocketMQ 、RabbitMQ追求可靠性:RabbitMQ、RocketMQ追求吞吐能力:RocketMQ、Kafka追求消息低延迟:RabbitMQ、Kafka多个消费者绑定到一个队列,同一条消息只会被一个消费者处理。

2022-11-14 14:28:34 690

原创 day03 Docker基本使用

数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。一旦完成数据卷挂载,对容器内的一切操作都会作用在数据卷对应的宿主机目录了。这样,我们在操作宿主机的目录时,就相当于在操作容器内的目录了镜像是将应用程序及其所需要的系统函数库、环境、配置、依赖打包而成。我们以 MySQL 为例,来看看镜像的组成结构:我们要构建镜像,其实就是实现上述打包的过程。简单来说,镜像就是在系统函数库、运行环境基础上,添加应用程序文件、配置文件、依赖文件等组合,然后编写好启动脚本打包在一起形成的文件。

2022-11-13 21:22:30 1466

原创 day02 Nacos集群配置、Feign远程调用和统一网关Gateway

Nacos生产环境下一定要部署为集群状态。其中包含3个 Nacos 节点,然后一个负载均衡器代理3个 Nacos。这里负载均衡器可以使用 Nginx。我们计划的集群结构如下图,MySQL 的主从复制后续再添加。三个 Nacos 节点的地址:搭建数据库,初始化数据库表结构下载nacos安装包配置nacos启动nacos集群nginx反向代理其作用就是帮助我们优雅的实现 http 请求的发送,解决上面提到的问题。

2022-11-13 00:19:09 1635

原创 Redis八股

当 Redis 进行内存淘汰时,会使用。

2022-11-11 11:35:33 839

原创 MySQL八股

flush 阶段第一个事务会成为flush阶段的 Leader,此时后面到来的事务都是 Follower :接着,获取队列中的事务组,由绿色事务组的 Leader 对 rodo log 做一次 write + fsync,即一次性将同组事务的 redo log 刷盘:完成了 prepare 阶段后,将绿色这一组事务执行过程中产生的 binlog 写入 binlog 文件(调用 write,不会调用 fsync,所以不会刷盘,binlog 缓存在操作系统的文件系统中)。从上面这个过程,可以知道。

2022-11-11 11:32:38 805

原创 day01 微服务初探与Eureka、Nacos的基本使用

SpringCloud Ribbon 底层采用了一个拦截器,拦截了发出的请求,对地址做了修改。

2022-10-30 23:03:23 459

原创 Spring Security基础篇

Spring Security 是 Spring 家族中的一个安全管理框架。相比与另外一个安全框架 Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富。一般来说中大型的项目都是使用 Spring Security 来做安全框架。小项目有 Shiro 的比较多,因为相比与 Spring Security,Shiro 的上手更加的简单。而认证和授权也是 Spring Security 作为安全框架的核心功能。创建启动类创建 Controller引入Spring Security

2022-10-30 09:28:16 221

原创 第二章 Linux 实操(二)

在Linux中,每一个执行的程序都被称为一个进程。每一个进程都会分配一个ID号(pid,进程号)每个进程都可能以两种方式存在。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但在屏幕上无法看到的进程,通常使用后台方式运行。一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才会结束。windows下的pidlinux:top指令注意:输入q可以退出当前状态!!!

2022-10-24 22:47:53 1618

原创 第二章 Linux 实操

在 Linux 中的每个用户都必须属于一个组,不能独立于组外。在 Linux 中的每个文件都有所有者、所在组、其他组的概念。所有者所在组其他组改变用户所在的组ls -l- rw - r -- r -- (第一列) 1 root root 0 Oct 22 11 : 08 pig . txt第 0 位确定文件类型(d、-、l、c、b)l 是链接,相当于Windows的快捷方式d是目录,相当于Windows的文件夹c是字符设备文件,比如鼠标、键盘b是块设备,比如硬盘。

2022-10-23 00:25:48 1527

SpringSecurity笔记,编程不良人笔记

SpringSecurity笔记,编程不良人笔记

2022-10-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除