自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 多线程陈述(未更晚版本)

通常操作系统均支持多任务同时运行,一个任务就是一个程序,这个)就代表一个进程,而一个进程内部可能有多个顺序执行流,这个。线程池呢,就是为了避免线程频繁创建和销毁造成资源浪费(),就提前创建好一堆线程的池子,里面有一些核心参数,比如说最大核心数(最大线程数)、核心线程数(最小线程数)、空闲线程存活时间(非核心线程空闲状态下的最大存活时间)、工作队列(线程池达到核心线程数的时候,就会被放入这里)、拒绝策略(线程池线程数量达到最大线程数,并且工作队列也满了,新提交的任务无法执行时所执行的策略。

2023-09-23 17:49:48 141

原创 缓存机制相关(持续新增)

设置刷新:手动刷新:调用SqlSession对象的clearCache()方法清空一级缓存【仅能清空当前SqlSession的缓存】,在同个会话中,执行SQL后会将其存入缓存中,那自然下次再执行相同语句时,就从缓存中查询结果了。设置禁用:将localCacheScope属性设置为STATEMENT,表示每次SQL语句后都清空缓存。一、Mybatis的二级缓存机制。

2023-09-20 23:04:46 276

原创 Spring使用(未更完版)

Spring小总结

2023-09-19 21:06:59 131

原创 手撸RPC---->优雅停机、优雅启动

首先,讨论一下暴力关闭的问题和解决方案:要知道,rpc是服务于的,到目前实现了基本的服务治理的能力,但是还有个问题我启动了多个服务提供方,同时启动了服务调用方,不断的进行方法调用,然后发现就出问题了,目前项目确实会有这样的问题。当时,注册中心感知、以及通过watcher机制通知调用方,一,同时我们的心跳检测也会有。也就意味着当一个提供方实际上,但是他依然在调用方的,调用方依然认为他健康依然会给他发送消息,最后的结果就是超时等待,不断重试而已。所以如何在服务下线时快速的让调用方感知,很重要。

2023-09-01 23:21:28 339

原创 手撸RPC-----异常重试、熔断限流、流量隔离

举个例子,假如我要发布一个服务 B,而服务 B 又依赖服务 C,当一个服务 A 来调用服务 B 时,服务 B 的业务逻辑调用服务 C,而这时服务 C 响应超时了,由于服务 B 依赖服务 C,C 超时直接导致 B 的业务逻辑一直等待,而这个时候服务 A 在频繁地调用服务 B,服务 B 就可能会因为堆积大量的请求而导致服务宕机。最好的办法就是隔离流量,将多个rpc服务进行分组,一个调用方只能访问一个分组的服务,就是一个调用方流量爆炸也只会影响一个分组的服务,整体还是可用的。那怎么分组好呢,有没有统一的标准?

2023-09-01 23:13:29 499

原创 手撸RPC----解析请求、利用反射进行调用

其中包含接口的名字,方法名字,参数类型列表,和参数列表、返回值类型几个核心参数。当我们拥有了这些核心参数之后,我们应该思考,服务提供方应该如何使用这些数据进行方法调用,很明显,我们能直接想到的技术就是【反射】。基础的通讯的逻辑代码已经完成了,封装请求的代码如下,关于设计私有协议的内容我们在上一个课件中就讲述了,当然其中还包括对。2、从已经发布的服务中获取具体的实例。,发送给服务提供方,提供方需要解析报文,解析过程如下,其中需要对负载进行。2、从请求中获取请求所携带的负载。3、根据负载进行方法调用。

2023-09-01 23:03:11 274

原创 手撸RPC----SPI机制

一、spi机制SPI(Service Provider Interface),是JDK内置的一种服务提供发现机制,可以用来启用框架扩展和替换组件,主要是被框架的开发人员使用,比如java.sql.Driver接口,其他不同厂商可以针对同一接口做出不同的实现,MySQL和PostgreSQL都有不同的实现提供给用户,而Java的SPI机制可以为某个接口寻找服务实现。Java中SPI机制主要思想是将装配的控制权移到程序之外,在模块化设计中这个机制尤其重要,其核心思想就是解耦。SPI整体机制图如下:

2023-09-01 09:49:33 198

原创 手撸RPC---动态上下线、配置类

当有,我们如何进行感知呢?服务上线,首先会在注册中心进行注册,调用方是无法实时感知的,合理的方式只有两种:1、调用方2、注册中心在我们当前的项目中zk提供了watcher机制,我们正好可以利用他来实现动态上下线,具体步骤如下:1、调用方拉取服务列表时,注册一个watcher关注该服务节点的变化。2、当服务提供方上线或线下时会触发watcher机制(节点发生了变化)。3、通知调用方,执行动态上下线的操作。我们,就是根据新的服务列表,生成一个新的选择器,将原有的替换即可。

2023-08-31 22:53:42 101

原创 手撸RPC---负载均衡

常见的负载均衡策略由轮询、加权轮询、随机、一致性hash、最短响应时间、最少连接数等,我们选取。

2023-08-31 22:42:56 350

原创 手撸RPC-----雪花算法、序列化

雪花算法(snowflake)最早是twitter内部使用分布式环境下的唯一ID生成算法,他使用64位long类型的数据存储id,具体如下:符号位 时间戳 机器码 序列号最高位表示符号位,其中0代表整数,1代表负数,而id一般都是正数,所以最高位为0。当然知道了这个理论,我们甚至可以自由设定属于我们自己的雪花算法。41位存储毫秒级时间戳,这个时间戳不是存储当前时间的时间戳,而是存储时间戳的差值(当前时间戳 - 开始时间戳) * 得到的值),这样我们可以存储一个相对更长的时间。

2023-08-31 22:36:22 120

原创 手撸RPC----异步、代理模式、pipeline

CompletableFuture还提供了若干方法用于组合多个异步操作的结果,如thenCompose()、thenCombine()、allOf()和anyOf()方法等,这些方法可以帮助我们更加方便地进行复杂的异步编程。在以上的过程中,请求发送出去,即一旦调用了writeAndFlush方法,其中网络通信、方法调用等一系列的工作就都和当前线程无关了,我们只能使用CompletableFuture.get()方法等待结果。的,所以我们会使用CompletableFuture来获取异步的结果。

2023-08-31 22:27:16 154

原创 手撸RPC框架---服务注册

1、服务提供方将服务注册到注册中心中。2、消费端拉取服务列表。3、消费端简单的选取一个可以服务(后续会进行改造,实现负载均衡)。

2023-08-31 22:13:49 118

原创 手撸RPC-----CAP理论、BASE理论

不支持分区容错,只支持一致性和可用性,但这在分布式系统中不存在。因为不支持分区容错性,也就意味着不允许分区异常,设备、网络永远处于理想的可用状态,从而让整个分布式系统满足一致性和可用性。但分布式系统是由众多节点通过网络通信连接构建的,设备故障、网络异常是客观存在的,而且分布的节点越多,范围越广,出现故障和异常的概率也越大。因此对于分布式系统而言,分区容错性(P)是无法避免的,如果避免了 P,那么只能把分布式系统回退到单机单实例系统。

2023-08-30 21:13:46 78

原创 手撸RPC----注册中心Zookeeper

概念:解释ZooKeeper是一个开源的分布式协调服务组件,用于构建可靠的分布式系统。它提供了一个高性能的、有序的、可靠的分布式数据存储和协调服务,简单的理解为一个内存数据库,特殊的数据结构和一些特性,他可以实现一些特殊的功能。应用场景:在分布式系统中我们经常使用ZooKeeper实现服务注册发现、分布式锁、配置管理、命名服务和分布式协调等功能。数据模型:ZooKeeper的数据模型是一个类似于文件系统的层次结构。每个节点称为ZNode,它可以存储数据和子节点。

2023-08-30 20:52:52 109

原创 手撸RPC----封装报文、序列化、压缩

在设计一个 rpc(Remote Procedure Call)远程调用框架时,需要考虑如何。

2023-08-30 20:48:28 359

原创 手撸RPC的思考---简述

**既然 yrpc 存在的核心目的是为了实现远程调用,既然是远程调用那肯定就需要通过网络来传输数据,并且 yrpc 常用于业务系统之间的数据交互,需要保证其可靠性,所以 yrpc 一般默认采用 TCP 来传输。:**选择了合适的传输层协议之后,我们需要基于此建立一个我们自己的通用协议,和http一样需要封装自己的应用层协议,详细的内容会在后边的课程里详细介绍。:**如果我们觉得序列化后的字节数组体积比较大,我们还可以对他进行压缩,压缩后的字节数组体积更小,能在传输的过程中更加节省带宽和内存。

2023-08-30 20:33:43 46

原创 消息队列Rocketmq

嘎嘎权威。

2023-08-13 22:02:00 70 1

原创 单例模式--设计模式

当调用getInstance()方法时,会首先加载SingletonHolder类,由于静态内部类的加载时延迟的,只有第一次使用SingletonHolder.instance时才会加载,从而实现了懒加载。首先检查视力是否为空,如果为空,则进入同步块,在同步块内再检查实例是否为空,避免了多个线程同时通过了第一个检查而同时创建了实例。在该方法中,如果实例不存在,则创建一个新实例并赋值给静态变量instance,否则直接返回已有的实例。,只能在类内部访问,不能从外部进行实例化,意味着其他类不能通过。

2023-08-09 09:25:08 54 1

原创 Linux安装mysql(共17步)

别看文章标题党有17步 但是这17步骤一步一步来,保证没有问题。第十六步:(退出mysql,输入exit或者quit或/q退出)第十八步:navicat链接。第十七步: 设置字符编码集。

2023-08-07 20:04:27 95 1

原创 Linux安装tomcat

注意:这里需要防火墙。

2023-08-07 19:55:13 56 1

原创 Linux安装jdk

注意:这种方式安装 不需要配置环境变量。

2023-08-07 19:44:51 52 1

原创 EasyExcel下载模板,excel导入数据库,数据库导出到excel

在做电子存销系统的时候,有时需要将数据导出供用户参考,也需要把数据存入数据库做持久化存储,也许后续能做数据可视化。

2023-08-06 10:37:36 442

原创 MybatisPlus分页

在做项目的过程中会涉及到分页的情况,有时用户操作界面时还会手动操作页数和每页的条数,这时就需要下面的操作。这里面也可以包装进行响应的数据,意思就是返回,httpstatus.ok这种。这里是对数据进行包装,需要传递的参数,就是实体类,第几页,每页显示的条数。

2023-08-06 10:23:53 223

原创 SpringBoot+mybatis-plus+Druid+SpringSecurity+JWT进销存系统

项目模块简介1返厂入库管理2返厂入库单审核3返厂出库管理4返厂单审核出库5维修点管理博主先做的维修点管理,因为此模块相对独立,涉及到维修点的增删改查,实体类我用的easycode自动生成,这个应该有教程,很简单lombok注解@Data 自动生成Java类的一些常用方法,如getter、setter、toString、equals和hashCode等无参构造和有参构造注意:有参构造生成的是全参构造,不能选中其中某一个或某几个生成构造mapper类(Dao层)

2023-07-31 11:07:11 119 1

原创 IDEA2022连接Gitee仓库步骤及其注意事项

参照如下文章(作者名称: paidaxinga)

2023-07-24 22:26:46 713

原创 C++基础学习:析构函数

vs2019

2023-01-11 11:52:43 154

原创 C++基础学习:构造函数和初始化列表

vs2019

2023-01-06 22:23:52 150

原创 C++学习基础:类的声明基础

vs2019

2023-01-06 21:51:10 159

原创 C++学习:函数特性

vs2019

2023-01-06 21:29:37 54

原创 c++基础学习:关于引用以及交换两个变量的值

vs2019

2023-01-01 22:07:10 922

原创 c++基础学习:申请空间

vs2019

2023-01-01 21:52:20 286

原创 c++基础学习:结构体struct,new和delete

vs2019

2023-01-01 21:47:42 1477

原创 C++基础学习:namespace命名空间、

vs2019

2023-01-01 09:16:02 65

原创 c++基础学习:输入cin、输出cout、换行endl

c++基础知识学习

2022-12-31 10:29:22 4120

原创 C++学习:头文件、主函数、注释

vs2019

2022-12-28 13:04:56 122

原创 spark练习题RDD(python)

spark的rdd算子练习题,用python语言编写

2022-05-04 12:35:43 1991

空空如也

空空如也

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

TA关注的人

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