自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 go语言:腾讯终于开源trpc框架——对trpc-go源码分析

2.1 首先实现 trpc提供的 Factory接口,完成自定义插件设计2.2 插件中init() 方法里面调用 trpc提供的 plugins,Register() 方法 把插件注册到 局部变量 var plugins = make(map[string]map[string]Factory)中2.3 trpc框架在程序启动的时候会调用 loadPlugins()方法和plugins中的 get()方法,把插件从factory中获取出来。

2023-10-20 17:05:18 2165 2

原创 k8s笔记一 ——基本概念

学习k8s client.go之前,先让我们了解一下k8s的常用术语和基本概念,如果你在之前接触过微服务或者是mysql、redis集群这将会非常轻松

2022-06-17 15:25:01 364

原创 Redis核心技术笔记——分布式锁(完结)

1.Redis分布式锁​ 在了解Redis的分布式锁的时候,我们先来看看单机上的锁和分布式锁的联系和区别​ 我们先来看下单机上的锁。对于在单机上运行的多线程程序来说,锁本身可以用一个变量表示,比如java的synchronized,你可以用unself方法反射出monitor,就是通过monitor去加锁解锁的变量值为0时,表示没有线程获取锁;变量值为1时,表示已经有线程获取到锁了。​ 我们通常说的线程调用加锁和释放锁的操作,到底是啥意思呢?我来解释一下。实际上,一个线程调用加锁操作,

2021-08-12 22:02:56 325

原创 Redis核心技术笔记——哨兵集群

1.哨兵机制​ 在进行哨兵机制学习的时候,我们首先来看看为什么需要哨兵机制​ 在主从集群模式下,如果从库发生故障了,客户端可以继续向主库或其他从库发送请求,进行相关的操作,但是如果主库发生故障了,那就直接会影响到从库的同步,因为从库没有相应的主库可以进行数据复制操作了。​ 而且,如果客户端发送的都是读操作请求,那还可以由从库继续提供服务,这在纯读的业务场景下还能被接受。但是,一旦有写操作请求了,按照主从库模式下的读写分离要求,需要由主库来完成写操作。此时,也没有实例可以来服务客户端的写操作请求了

2021-08-11 22:14:02 219

原创 Redis核心技术笔记——Redis主从、主从从、切片集群

1.Redis主从集群​ 首先我们来谈谈Redis的高可靠性,Redis的高可靠性其实有两层含义一是保证数据尽量少丢失或者不丢失,AOF和RDB持久化保证了二是服务尽量少中断,Redis采用了增加副本冗余量(集群就是为了解决服务中断的问题)什么是增加副本冗余量:将一份数据同时保存在多个实例上。即使有一个实例出现了故障,需要过一段时间才能恢复,其他实例也可以对外提供服务,不会影响业务使用。其实这也就是Redis的主从集群1.1主从集群是如何保证数据的一致性——采用了读写分离​ 多实例保存同

2021-08-10 22:08:39 749

原创 Redis核心技术笔记——Redis持久化

1.Redis持久化​ 当Redis数据库挂掉时,内存中的数据会全部丢失,为了防止这个问题有两个办法1.从后台数据库中读取,恢复到Redis中,但是不仅仅会频繁的访问数据库并且速度还会很慢2.采用Redis的AOF和RDB机制2.AOF写后日志(记录命令)​ AOF记录日志的方式采用写后日志,Redis先执行命令,把数据写入内存,然后才记录日志,如下图所示2.1 AOF为什么采用写后日志​ 传统数据库,比如mysql的redo log(重做日志),记录的是修改过后的内容,AOF记

2021-08-09 22:29:12 187

原创 Redis核心技术笔记——Redis为什么是单线程(单线程为什么这么快)

Redis为什么是单线程​ 首先我们要知道严格来说Redis并不是单线程的,Redis的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。Redis的单线程是指:Redis的网络IO和键值对读写是由一个线程完成的,这也是Redis对外提供键值存储服务的主要流程(注意:网络IO和键值对读写)​ 在了解Redis为什么采用单线程时,我们首先了解一下Redis为什么不使用多线程1.Redis为什么不使用多线程​ 日常写程序时,我们经常会听到一种说法:“使用多线程,可以增加系统

2021-08-06 16:29:03 439

原创 Redis核心技术笔记——Redis数据结构

Redis底层数据结构​ 总体来说,大家都知道redis数据结构有String、List、Hash、Set、Sorted Set还有三种高级的数据结构Bit map、GEO、Hyperloglog。​ 简单来说,redis底层数据结构一共只有6种,分别是简单动态字符串(SDS)、双向链表、压缩列表、哈希表、跳表和数组,首先我会分析他们对于redis中数据结构的实现,然后我会给出三种高级数据结构的应用场景还有redis索引的实现1.Redis中数据类型和底层数据结构的关系如图所示:​ 可见,

2021-08-02 17:35:09 576

原创 go语言实现消息队列模型

1.简单的生产者消费者模型​ 并发编程中最常见的例子就是生产者消费者模式,该模式主要通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。简单地说,就是生产者生产一些数据,然后放到成果队列中,同时消费者从成果队列中来取这些数据。这样就让生产消费变成了异步的两个过程。当成果队列中没有数据时,消费者就进入饥饿的等待中;而当成果队列中数据已满时,生产者则进行阻塞等待状态。​ Go语言实现生产者消费者并发很简单:// 生产者: 生成 factor 整数倍的序列func Producer(fa

2021-08-02 11:02:36 1059

原创 线性代数手稿

2021-04-16 17:38:17 159

原创 高等数学手稿

2021-04-16 17:31:58 187

原创 一文看懂简单工厂模式,工厂方法模式,抽象工厂模式

简单工厂模式 简单工厂模式在严格意义上并不算23种设计模式之一,但是他在软件开发中十分的常用 简单工厂模式定义:1.需要一个工厂类用来产生你所需要的对象,你给什么参数就生产该参数对应的对象案列分析一个顶级接口,Animal类,该类中定义了一个run方法,代表所有的动物都会跑public interface Animal { public String run();}两个具体实现类,分别是 人类human和猫cat,他们都属于动物,所有他们都拥有奔跑这一特点人类对象publ

2021-03-22 13:48:06 215

原创 自定义负载均衡轮询算法——基于Ribbon的轮询算法

这里写自定义目录标题一:自定义LoadBalance接口二:采用负载均衡轮询算法实现该接口1.实现上面的LoadBalance接口2.采用 CAS+自旋锁方式实现轮询算法2.获取该轮询算法产生的值,参数微服务实例List下标三:调用该负载均衡轮询方法实现负载均衡一:自定义LoadBalance接口具体代码如下:package com.springcloudtest.order.config;import org.springframework.cloud.client.ServiceInstanc

2021-02-08 17:26:56 3010 4

原创 JAVA线程和进程(load.......)

1.进程和线程的关系进程是多个线程的集合,进程是正在执行的程序,线程是进程中独立运行的子任务,比如正在执行的QQ就是一个进程,里面的好友视频,下载文件,传输数据等等就是独立的子任务,也就是线程。每一个进程中都有一个主线程,JAVA代码中,main 函数就是一个主线程,多线程可以提高程序的运行效率,任务可以不用排队等待。1.1 创建线程的方式1.1.1 继承Thread类的方式1.在类上继承 Thread2.在类中重写 Thread的 run 方法3.在 run 方法里写 线程需要执行的代码4

2020-07-28 18:07:38 526

原创 JVM各种部分的工作原理

什么是JVMjvm是java二进制文件(.class)的运行环境好处1.一次运行,处处运行(可移植性)2.自动内存管理,垃圾回收功能3.数据下标越界检查,不会覆盖数组的其他元素4.采用虚方法表进行多态,多态是指同一操作作用于不同的对象比较JVM的内部结构和执行过程1.java文件首先被编译成二进程class文件。2.class文件被类加载器classloader加载到jvm...

2020-04-11 16:37:09 523

原创 redis从windows到linux

什么是redisredis是一个高性能的key-value数据库,是为了解决高并发,高扩展的NOSQL(非关系)类型数据库,支持的数据类型包括,String,list,hash,set和Zset。 redis把数据都存储在内存中以提高读取效率,周期性(如 y=sinx T= 2Π)的进行数据写入磁盘。...

2020-03-17 17:38:02 1077

原创 springboot的使用笔记

什么是springbootspringboot是简化spring应用开发,是J2EE一站式解决方案,降低了对配置文件的要求。整合了整个spring的应用技术栈。什么是微服务微服务是一种架构风格,是由一组小型服务组成,每一个小型服务都运行在自己的进程上,通过http方式进行沟通,微服务是把应用中的每一个功能元素都独立出来,通过动态组合的方式进行使用,每一个功能元素最终都是一个可独立替换和独立升...

2020-03-09 17:27:23 2298

原创 springmvc从零到一使用

什么是springMVCspringmvc是实现mvc设计模型的请求驱动类型的web框架。通过注解的方式,让一个JAVA类成为控制器(controller)三层架构:表现层(展示层和控制层),业务层,持久层springmvc用于表现层框架,与浏览器进行数据的交互,接受浏览器发送的请求和返回给浏览器响应结果M --model —javavbean(可重用主键)V --view —jsp...

2020-03-03 19:39:08 476

原创 动态代理和springAOP的介绍和使用

什么是aopaop叫做面向切面编程,通过预编译方式和动态代理实现程序功能统一维护的技术。简单说,就是把程序中重复的部分拿出来,解耦提供可复用性,在需要执行的时候用动态代理技术,在不修改源码的基础上对方法进行增强。就是把重复的部分放在invoke方法中。aop优势:减少重复代码,方便维护aop相关术语解释,与配置无关哦~(Pointcut)切入点:一个类中需要增加的方法才是切入点。(Joi...

2020-03-01 11:31:48 419

原创 spring中IOC的简介和使用

什么是springspring就是一个管理事务的框架,核心是ioc和aop,不要想象的太复杂,就相当于什么是加法,加法就是用来计算的,核心是数字跟符号。什么是IOC,IOC有什么作用IOC又叫控制反转,控制反转(bean标签)的意思就是,生成实例化对象的控制权力反转了,就是生成实例化对象控制的权力发生了变化。以前是直接主动实例化对象,现在是把主动权力给工厂(spring),只能被动的接收。一...

2020-02-26 17:21:40 473

空空如也

空空如也

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

TA关注的人

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