自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (2)
  • 收藏
  • 关注

原创 LVS高可用(Keepalived)

keepalive高可用问题1、LVS会挂,单点故障,所有业务下线2、RS会挂,一部分用户会请求异常(因为LVS还有这个RS的负载记录)解决单点故障:一变多解决多点问题的2个思路:1、主备:本文讨论主备实现;2、主主:VIP必须全局唯一,不能配多个主,必须才有其他技术,如动态DNS等。主备和主从不是同一个概念主备:备机平时不干活主从:从机平时干活,同时主机也会存在单点问题,所以需要对主机进行主备主备模型如何确定主机的状态?(方向性)1、备机定时轮询主机状态,主机会有 较大压力

2021-07-13 21:37:36 619

原创 LVS负载均衡(简介、原理加实操)

LVS调度算法4种静态算法:动态算法:LVS会“偷窥”真实服务器的最小连接数LVS配置LINUX的ipvs模块集成了LVS,但是只是系统调用要想使用LVS,需要安装一个用户空间程序 ipvsadm需要定义进来的和出去的接口...

2021-07-12 22:10:35 420

原创 负载均衡模型

四层负载7层负载 如 nginx (反向代理)​ 应用层 uri​ 建立连接,握手​ 后端被负载的服务器可以不一样4层负载 如LVS​ 传输层 IP+端口号​ 不会和客户端握手,不建立连接,​ 只是数据包转发,所以速度快​ 后端服务器是镜像的4层负载是为了解决高并发,负载流量,7层负载是为了接入流量(解决握手),分流NAT公网地址和私网地址,私网中的192.168.1.8想要访问8.8.8.8:80,需要将源IP转换成路由器的公网地址6.6.6.6即从(

2021-07-11 19:17:28 304

原创 01-异或运算

1、异或异或运算符”∧”,它的规则是若参加运算的两个二进位同号,则结果为0(假);异号则为1(真)。即 0∧0=0,0∧1=1, 1^0=1,1∧1=0。 可以简单理解为无进位相加2、特性1) 0 ^ N = N2) N ^ N = 03) 满足交换律和结合律3、实战交换两个数的值a = a ^ b;b = a ^ b;a = a ^ b; 把一个int类型的数的最右侧的1提取出来a & (-a) 或者a & (~a + 1)一个数组中一个数出现奇数次,其

2021-06-22 00:09:41 2167

原创 一图搞定设计模式

2021-06-19 09:23:26 84

原创 Redis06-进阶使用(过期 expire)

文章目录Expire刷新过期时间返回值Keys的过期时间过期精度过期和持久Redis如何淘汰过期的keys在复制AOF文件时如何处理过期Expire设置key的过期时间,超过时间后,将会自动删除该key。在Redis的术语中一个key的相关超时是不确定的。超时后只有对key执行DEL命令或者SET命令或者GETSET时才会清除。 这意味着,从概念上讲所有改变key的值的操作都会使他清除。 例如,INCR递增key的值,执行LPUSH操作,或者用HSET改变hash的field所有这些操作都会触发删除动

2021-03-08 22:47:58 263

原创 Redis05-进阶使用(事务)

文章目录用法事务中的错误为什么 Redis 不支持回滚(roll back)放弃事务使用 check-and-set 操作实现乐观锁了解 `WATCH`使用 WATCH 实现 ZPOPMULTI 、 EXEC 、 DISCARD 和 WATCH 是 Redis 事务相关的命令。事务可以一次执行多个命令, 并且带有以下两个重要的保证:事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。事务是一个原子操作:事务中的命令要么全部被

2021-03-08 22:46:22 90

原创 Redis07-RDB和AOF(未完待续)

Redis 持久化Redis 提供了不同级别的持久化方式:RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储.AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾.Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大.如果你只希望你的数据在服务器运行的时候存在,你也可以不使用任何持久化方式.你也可以同时开启两种持久化方式, 在这种情况下, 当redis重启的时候会优先载入

2021-02-25 22:59:33 203

原创 Redis04-进阶使用(管道、发布/订阅)

一、redis管道(一次发送多个命令,节省往返时间)1.安装ncyum install nc -y2.通过nc连接redisnc localhost 63793.通过echo向nc发送指令echo -e "set k2 99\nincr k2\n get k2" |nc localhost 6379二、发布订阅(pub/Sub)publish channel messagesubscribe channel三、事务(transactions)multi 开启事务...ex

2021-02-24 22:46:24 240

原创 Redis03-数据类型:应用及实操

redis的数据类型实操String类型## 连接客户端[root@node01 ~]# redis-cli -p 6379 127.0.0.1:6379> set key "hello world"OK127.0.0.1:6379> get key"hello world"##==========获取所有的keys==========127.0.0.1:6379> keys *1) "key"##========== nx 不存在key时才能设置,即只能新建

2021-02-23 23:25:49 205

原创 Redis02-架构及简单使用

Redis架构首先要明确一个概念:redis是单线程,单实例那么为什么并发那么多,redis依旧很快呢?因为redis调用了系统内核的epollIO发展小插曲:​ Linux有内核kernal,客户端进行连接的时候,首先到达的是kernal。我们使用一个线程/进程 进行调用read和write函数。因为socket在这个时期是blocking(阻塞的),遇到高并发,就会阻塞,即我们所说的BIO。​ 随着kernal的发展,我们可以使用客户端进行轮询访问,即NIO,进线不会阻塞,但还是同步的。​

2021-02-21 23:37:12 109 1

原创 Redis01 基础及安装

redis-01 基础及安装1、背景:为什么需要缓存小常识1:磁盘:寻址 ms级,带宽GB / M内存:寻址 ns级,带宽很大(比磁盘大几个数量级)磁盘比内存在寻址上慢了10W倍,I/O成为瓶颈小常识2:磁盘有磁道和扇区。一扇区512Byte,如果根据一个扇区寻找数据,需要的索引成本会很大实际上操作系统每次读取最少 4k问题1、数据存在磁盘,当磁盘数据变大,I/O成为瓶颈,性能下降,速度变慢。在查找数据库时,还存在一个问题,那就是字节宽度,在我们建库的时候必须给出schema

2021-02-21 20:56:50 121

原创 mybatis-plus

mybatis-plus使用​ MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。​ 特性:无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求支持 La

2021-02-08 21:52:09 123

原创 (一)Nginx介绍及安装

NginxNginx版本区别Nginx 开源http://nginx.org/Nginx plus 商业 (被F5收购)https://www.nginx.comOpenresty (国产,整合很多Lua脚本)http://openresty.org/cn/Tengine (淘宝,C/C++ 做的二次开发)http://tengine.taobao.org/其他web服务器IISApache Httpd 1/2lighttpdNginx安装虚拟机环

2021-01-17 22:38:11 158

原创 计算机网络基础

LVS 负载均衡原理网络知识基础网络分层 OSI参考模型,7层,5层,4层为什么要分层:分层解耦应用层[root@node01 fd]# cd /proc/$$/fd[root@node01 fd]# pwd/proc/8531/fd[root@node01 fd]# exec 8<& -## 建立连接[root@node01 fd]# exec 8<> /dev/tcp/www.baidu.com/80[root@node01 fd]# lltota

2021-01-09 23:02:11 83

翻译 Seata-Saga

seata saga模式Saga 服务设计的实践经验允许空补偿空补偿:原服务未执行,补偿服务执行了出现原因:原服务 超时(丢包)Saga 事务触发 回滚未收到 原服务请求,先收到 补偿请求所以服务设计时需要允许空补偿, 即没有找到要补偿的业务主键时返回补偿成功并将原业务主键记录下来防悬挂控制悬挂:补偿服务 比 原服务 先执行出现原因:原服务 超时(拥堵)Saga 事务回滚,触发 回滚拥堵的 原服务 到达所以要检查当前业务主键是否已经在空补偿记录下来的业务主键

2021-01-09 16:10:26 886 1

原创 TDD

单元测试的目的提高外部质量提高内部质量提高开发效率提高个人开发技能TDD三部曲写一个不通过的测试验证测试代码本身确实能够捕获错误写实现代码,使其刚好通过测试保证每一个代码逻辑都是测试驱动的,从而达到前面的测试覆盖率通过重构去除坏味道,如重复、魔数、命名不准确、代码复杂等持续改进代码质量单元测试的原则F:fast 单元测试应该快速完成,一个产品的全部单元测试在几分钟内I:independent,测试用例相互不依赖,即不需要固定的顺序执行R:repeatabl

2021-01-07 19:16:39 290

原创 Java 容器

Java容器容器java容器,或者应该叫java集合框架更为贴切。Java集合框架提供了一套性能优良、使用方便的接口和类,它们位于java.util包中[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rDt1Xuq3-1609855908938)(D:\notes\JavaSE\容器.png)]Collection 接口集合作为容器应该具有的功能(增,删,改,查),不一定全有。集合的基本操作:增加,删除,判断,取出序号方法名作用1add

2021-01-05 22:12:26 58

原创 Java 多线程基础

Java 多线程基础文章目录Java 多线程基础线程程序、进程和线程线程的创建和启动线程的生命周期线程操作的相关方法阻塞状态线程同步安全性问题同步死锁线程间通信生产者与消费者问题线程池线程池分类生命周期创建及参数意义execute方法执行逻辑线程池关闭线程程序、进程和线程程序:Program,是一个指令的集合进程:Process,(正在执行中的程序)是一个静态的概念进程是程序的一次静态态执行过程, 占用特定的地址空间.每个进程都是独立的,由3部分组成cpu,data,code缺点:内存的浪

2021-01-03 17:35:07 114

原创 自定义注解

自定义注解什么是注解Annontation是Java5开始引入的新特征,中文名称叫注解。它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。为程序的元素(类、方法、成员变量)加上更直观更明了的说明,这些说明信息是与程序的业务逻辑无关,并且供指定的工具或框架使用。Annontation像一种修饰符一样,应用于包、类型、构造方法、方法、成员变量、参数及本地变量的声明语句中。Java注解是附加在代码中的一些元信息,用于一些工具在编译

2021-01-03 10:58:19 94

原创 Stream API

Stream APIA sequence of elements supporting sequential and parallel aggregate operationsStream是一组用来处理数组、集合的APIJava 8之所以费这么大功夫引入函数式编程,原因有二:代码简洁函数式编程写出的代码简洁且意图明确,使用stream接口让你从此告别for循环。多核友好, Java函数式编程使得编写并行程序从未如此简单,你需要的全部就是调用一下parallel()方法。Stream特性不

2021-01-03 10:46:39 90

原创 lambda表达式

lambda表达式介绍Lambda表达式是Java8中的新特性,使用Lambda表达式可以替代只有一个抽象函数的接口实现,告别匿名内部类。Lambda表达式同时还提升了对集合、框架的迭代、遍历、过滤数据的操作。特点函数式编程参数类型自动推断代码量少,简洁使用语法形式为 () -> {},其中 () 用来描述参数列表,{} 用来描述方法体,-> 为 lambda运算符 ,读作(goes to)。案例public class Test{ public static v

2021-01-03 10:38:03 75

原创 Java IO

Java IOFile类文件类,代表物理文件或目录创建文件对象,通过文件对象的方法,可以操作文件或目录的属性(路径、权限、日期和时间等)File类常用方法流动态的概念,是一连串连续动态的数据集合分类按流向分类:输入流:OutputStream 和 Writer 作为基类输出流:InputStream 和 Reader 作为基类输入输出流是相对于计算机内存来说的,而不是相对于源和目标按处理数据单元分:字节流:​ 字节输入流:OutputStream​ 字节输出流:In

2021-01-02 23:38:43 167 1

原创 JavaSE总结

Java Core文章目录Java Core一、数据类型1、基本数据类型3、运算二、流程控制1、选择2、循环3、跳转4、递归三、数组1、概述2、二维(多维)数组3、方法四、类和对象1、类、方法2、修饰符3、关键字thisstaticfinalsupersynchronizevolatile4、内存分析5、继承、封装和多态继承 extends抽象类 abstract多态接口 interface内部类6、重载(overload)和覆写(override)方法重载方法覆写(重写)7、类加载,对象初始化类加载对象

2021-01-02 20:20:08 179

原创 Seata简介

文章目录一、seata是什么二、seata模块三、seata四种模式1、AT 模式2、TCC 模式3、Saga 模式4、Seata XA 模式一、seata是什么Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。二、seata模块TC (Transaction Coordinator) - 事务协调者维护全局和分支事务的状态,驱动全局事务提交或回滚。

2021-01-02 17:20:50 1891

原创 docker安装mysql

安装docker。参考我的docker安装文档。拉取镜像。拉取镜像:docker pull mysql:5.7在本地创建目录(存放数据库文件)容器中的文件,映射到宿主机。mkdir -p /root/mysql/data /root/mysql/logs /root/mysql/conf创建*.cnf在/root/mysql/conf中创建 *.cnf 文件(叫什么都行)touch my.cnf启动dockerdocker run -p 3306:3306 -..

2021-01-02 17:05:53 1928 2

原创 CentOS7安装Docker

docker卸载已有的dockeryum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine按装依赖yum install -y yum-utils device-mapper-persistent-data lvm

2021-01-02 13:04:15 183

原创 CentOS7安装Redis

CentOS7安装Redis安装##安装yum install -y wgetcd /usr/local/wget http://download.redis.io/releases/redis-5.0.3.tar.gztar -zxvf redis-5.0.3.tar.gzcd redis-5.0.3yum install -y gcc*make && make install防火墙##使用## 关闭防火墙systemctl stop firewalld#

2021-01-02 12:44:00 100

原创 CentOS-7安装

CentOS-7安装下载镜像 ,个人选择CentOS-7-x86_64-DVD-1810.isoVMWare 安装CentOS-71、新建虚拟机2、自定义安装3、稍后安装系统4、版本选择CentOS7 64位5、处理器1,内核1,内存10246、网络选择NAT7、磁盘大小选择100G其他默认,最后选择镜像系统配置1、时区选择上海2、选择minimal安装3、KDUMP 去掉勾选4、7不需要进行分区,直接done5、网卡、主机信息:打开开关,自动获取网关6、设置root密码

2021-01-02 11:16:40 187 1

原创 CentOS-6.5环境准备

CentOS-6.5环境准备VMWare 安装CentOS-6.5自定义安装稍后安装系统 – CentOS 6 64位 – CPU 1G, 处理器数量 1 – 内存 1G (不要小于768M)网络类型选择 NAT最大磁盘空间 100G安装系统一直下一步自定义分区 Create Custom Layoutsda 分3个区 ,如下:1、/boot 引导程序区 type = ext4 , size = 200M2、swap 交换区 type = swap ,

2020-12-25 19:03:05 102

23种设计模式详解及编程思想

23种设计模式详解及编程思想

2021-07-11

多线程基础、JUC锁、同步容器、线程池

多线程基础、JUC锁、同步容器、线程池

2021-07-11

空空如也

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

TA关注的人

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