自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 windows版docker宿主机ping容器ping不通的坑

1.问题描述由于我在windows版docker中用虚拟子网建了一个固定IP172.18.18.10的mysql容器这个mysql容器通过端口映射使用localhost:3306能访问到,但是用172.18.18.10:3306访问不到查了网上解决方案:通过宿主机建立路由转发来实现宿主机和容器的通信,实际上windows的docker对于linux容器,配置了路由转发也ping不到内部。记录一下这个坑2 windows版docker为什么ping不通实际上官网说了,如图:由于没有docker0网

2022-05-06 16:07:21 10141 11

原创 响应式编程基础 --- 发布订阅模式、JDK9: Flow

一、发布订阅模式1.1 基本概念反应式编程离不开发布-订阅模式发布订阅模式有基本的三个概念:订阅者可以订阅发布者名为订阅的连接消息(也叫事件),它们通过连接传输1.2 示例:对两个流求和发布订阅 的一个简单例子就是整合两个信息源的事件并发布给其他用户使用例如想象成电子表格:C3 = C1+C2这样一个公式,只要C1或者C2更新,C3也会更新这些变化1、先对保存值的单元格进行建模:private static class SimpleCell { private int v

2022-04-27 22:31:32 1034

原创 Spring --- 循环依赖是怎么解决的

问题:怎么解决循环依赖的首先配置两个类A,B。A中有B属性,B中有A属性三级缓存都有啥singletonObjects:一级缓存,已经创建好的Bean的全局缓存earlySingletionObjects:二级缓存,提前暴露的Bean的全局缓存,但是还在创建中。如果不存在AOP,这个缓存已经足以解决循环依赖的问题但是如果有AOP,就需要三级缓存singletonFactories:三级缓存,单例工厂的缓存三级缓存存的内容是ObjectFactory,一个函数式接口在A实例化的时

2022-04-05 19:32:51 745

原创 Spring --- 为什么XML和注解方式配置的Bean,XML方式优先呢?(源码级分析)

目录问题导入:先测一下注解扫描放在bean前面再测一下注解扫描放在bean后面结论:问题导入:xml和注解方式配置两个bean,标识符id都为user: 为什么优先使用XML配置的Bean进行注入呢?首先我们要知道,Spring启动流程refresh方法中先在obtainFreshBeanFactory()中注册BeanDefinition,最后在finishBeanFactoryInitialization(beanFactory)实例化标识为Singleton的BeanDefini

2022-04-04 21:21:13 2390

原创 Netty源码分析(一) --- Server/Client启动流程,建立连接和Read剖析

一、Netty源码分析https://github.com/netty/netty/tree/4.1/example/src/main/java/io/netty/example/echo上找到echo这个example1.1 服务端启动流程1.1.1 两个NioEventLoopGroup服务端代码首先要定义两个NioEventLoopGroup,打个断点进去 NioEventLoopGroup继承MultithreadEventLoopGroup,加载的时候执行父类静态方法,初始化DEFA

2022-03-27 22:08:18 978

原创 深入理解JVM --- 逃逸分析,JMM,volatile,synchronized锁升级

五、编译优化技术5.1 逃逸分析逃逸分析(Escape Analysis)是目前Java虚拟机中比较前沿的优化技术逃逸分析的基本原理是: 分析对象动态作用域,当一个对象在方法里面被定义后,它可能被外部方法所引用例如作为调用参数传递到其他方法中,这种称为方法逃逸甚至还有可能被外部线程访问到,譬如赋值给可以在其他线程中访问的实例变量,这种称为线程逃逸从不逃逸、方法逃逸到线程逃逸,称为对象由低到高的不同逃逸程度。关于逃逸的优化:栈上分配: 如果确定一个对象不会逃逸出线程之外,那让这个对象在栈

2022-03-10 15:31:00 835 2

原创 深入理解JVM --- 垃圾回收,类加载器

三、垃圾回收GC3.1 如何判断对象已死?引用计数法在对象中添加一个引用计数器每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一回收的时候对计数为0的对象进行清除,即清除未使用的对象可达性分析通过可达性分析算法来判定对象是否存活该算法基本思路是通过一系列称为GC Roots的根对象作为起始节点集根据引用关系向下搜索搜索过的路径叫做引用链 GC Root对象包括一下几种虚拟机栈(栈帧中的本地变量表)中引用的对象方法区中类静态属性引

2022-03-10 13:32:50 312

原创 深入理解JVM --- JVM内存管理,Java对象创建、内存布局、访问定位

文章目录一、JVM内存管理1.1 程序计数器1.2 虚拟机栈1.3 本地方法栈1.4 Java堆1.5 方法区1.6 运行时常量池1.7 直接内存二、Java对象探秘2.1 对象的创建2.2 对象内存布局2.3 对象的访问定位复习一遍JVM,加深印象一、JVM内存管理 如图,每条线程独有的区域为:虚拟机栈,本地方法栈,程序计数器方法区和堆是线程共有的,方法区在JDK不同版本实现不同 1.6版本:方法区是堆的永生代来实现的,方法区中有一个笼统的常量池1.7版本:对方法区的常量池进行了

2022-03-09 20:14:40 514

原创 Zookeeper入门(二) --- 客户端常用命令、服务器上下线监听案例、分布式锁实现

文章目录四、客户端常用命令五、Zookeeper节点5.1 节点数据信息5.2 节点类型5.3 监听器原理六、服务器动态上下线监听案例七、分布式锁案例7.1 锁原理7.2 原生API代码实现7.3 Curator框架实现四、客户端常用命令命令行基本语法功能描述help显示所有操作命令ls [-w] [-s] path使用 ls 命令来查看znode的子节点,-w 监听子节点变化-s 附加次级信息create [-s] [-e] node value创建节点-s 带序

2022-02-21 13:18:21 1012

原创 Zookeeper入门 --- 环境搭建,集群配置,集群选举机制

文章目录一、Zookeeper概述1.1 概述1.2 工作机制1.3 特点1.4 数据结构1.5 应用场景1.5.1 统一命名服务1.5.2 统一配置管理1.5.3 统一集群管理1.5.4 服务器动态上下线1.5.5 软负载均衡二、Zookeeper安装2.1 单机模式安装2.2 集群环境搭建三、Zookeeper集群选举机制3.1 第一次启动3.2 非第一次启动一、Zookeeper概述1.1 概述Zookeeper是Apache的一个开源的分布式项目,能作为微服务的注册中心官网:https://

2022-02-20 19:21:24 1358

原创 Mysql深入学习 --- 锁机制

文章目录十四、锁14.1 并发事务一致性问题1.1 写-写情况1.2 读-写或写-读情况1.3 一致性读1.4 锁定读1.5 锁定写14.2 多粒度锁14.3 MySQL中的行锁和表锁3.1 其他引擎中的锁3.2 InnoDB中的锁3.2.1 InnoDB中的表级锁3.2.2 InnoDB中的行级锁①:Record Lock记录锁②:Gap Lock间隙锁③:Next-Key Lock临键锁④:Insert Intention Lock插入意向锁⑤:隐式锁3.3 InnoDB锁的内存结构14.4 锁相关的其

2022-02-18 00:52:08 1018

原创 MySQL深入学习 --- MVCC及其原理、MVCC如何解决幻读

文章目录十三、MVCC及其原理13.1 什么是MVCC1.1 回忆一下隔离级别13.2 MVCC实现原理2.1 版本链2.2 ReadView2.3 ReadView访问规则:2.4 READ COMMITTED和REPEATABLE READ的不同ReadView规则2.5 MVCC对purge的影响13.3 MVCC怎么解决幻读的往期:MySQL深入学习 — mysql逻辑架构,SQL的执行流程,数据库缓冲池MySQL深入学习 — MySQL存储引擎,InnoDB、MyISAM索引的数据结构M

2022-02-17 19:16:11 1280 3

原创 MySQL深入学习 --- 事务和三大日志详解

文章目录十一、MySQL事务11.1 ACID11.2 事务的状态11.3 如何使用事务3.1 显式事务3.2 隐式事务11.4 事务隔离级别4.1 数据并发问题4.2 事务隔离级别4.3 小结十二、MySQL三大日志12.1 binlog1.1 配置文件参数12.2 redo日志2.1 为什么要用redo日志2.2 redo 日志格式2.3 Mini-Transaction2.4 redo日志写入的过程2.4.1 redo log block 重做日志块2.4.2 redo log buffer 重做日志

2022-02-17 17:21:46 735

原创 MySQL深入学习 --- 索引的创建和删除,索引设计原则,索引失效场景,查询优化,索引下推ICP

文章目录六、索引的创建和删除6.1 索引的创建1.创建表的时候创建2.在已存在的表上创建6.2 索引的删除七、索引设计原则7.1 哪些情况适合索引7.2 哪些情况不适合索引八、索引失效场景1.违反最左前缀原则2.在索引列上用运算、函数、类型转换导致失效2.1 索引列上使用运算2.2 索引列使用函数2.3 索引列类型转换3.LIKE通配符的问题4.范围条件右边的列索引失效5.<>、NOT、IN、NOT EXISTS失效6. OR 前后存在非索引的列导致索引失效九、查询优化9.1 关联查询优化JOI

2022-02-13 22:39:48 984

原创 MySQL深入学习 --- MySQL存储引擎,InnoDB、MyISAM索引的数据结构

文章目录四、MySQL存储引擎4.1 InnoDB引擎:具备外键支持功能的事务存储引擎4.2 MyISAM 引擎:主要的非事务处理存储引擎4.3 Memory 引擎:置于内存的表小结:五、索引的数据结构5.1 为什么使用索引5.2 索引及其优缺点1.索引概述2.优点3.缺点5.3 InnoDB中索引的推演1.简单的索引设计方案2.InnoDB的索引方案①迭代1次:目录项纪录的页②迭代2次:多个目录项纪录的页③ 迭代3次:目录项记录页的目录页④B+Tree3.常见索引概念3.1 聚簇索引`优点:``缺点:`3

2022-02-12 18:20:02 1555

原创 MySQL深入学习 --- mysql逻辑架构,SQL的执行流程,数据库缓冲池

文章目录一、逻辑架构1.1 第一层:连接层1.2 第二层:服务层1.3 第三层:引擎层1.4 存储层1.5 小结二、SQL执行流程2.1 查询缓存2.2 解析器/分析器2.3 优化器2.4 执行器2.5 小结三、数据库缓冲池(buffer pool)3.1 缓冲池 vs 查询缓存缓冲池查询缓存3.2 缓冲池如何读取数据一、逻辑架构逻辑架构图1.1 第一层:连接层客户端访问MySQL服务器前首先要建立TCP连接三次握手建立连接成功后,MySQL服务器对TCP传输过来的账号密码做 身份认证 、 权

2022-02-10 16:43:25 963

原创 Mysql基础巩固 --- 多表查询和聚合函数的一些细节,SELECT的执行过程

文章目录一、多表查询1.1 笛卡儿积(交叉连接)解决方法:1.2 等值连接 vs 非等值连接1.3 自连接 vs 非自连接1.4 内连接 vs 外连接1.4.1 内连接(INNER JOIN)1.4.2 外连接(OUTTER JOIN)1.4.2.1 左外连接(LEFT OUTTER JOIN)1.4.2.2 右外连接(RIGHT OUTTER JOIN)1.4.2.3 满外连接(FULL OUTTER JOIN)1.4.2 UNION1.5 图解7种JOIN方式总结:1.6 SQL99新特性1.6.1 自

2022-01-28 17:37:20 2110

原创 Netty入门(五) --- Netty实现dubbo RPC

文章目录十、Netty实现dubbo RPC10.1 RPC基本介绍10.2 原理图和流程图10.3 基于Netty实现dubbo RPC往期Netty入门(一) — Reactor线程模型,Netty的线程模型,快速入门DemoNetty入门(二)— 任务队列,异步模型剖析,Http服务DemoNetty入门(三) — Netty核心组件,Netty群聊系统Netty入门(四) — 编码和解码,Netty的handler调用机制,TCP粘包和拆包原理和解决十、Netty实现dubbo RP

2022-01-26 19:05:45 738

原创 Netty入门(四) --- 编码和解码,Netty的handler调用机制,TCP粘包和拆包原理和解决

文章目录七、Google Protobuf7.1 编码和解码简介7.2 Netty本身的编解码机制和问题分析7.3 Protobuf基本介绍7.4 Protobuf发送单对象7.5 Protobuf发送多对象八、Netty编解码器和handler调用机制8.1 基本说明8.2 编解码器基本原理8.3 Netty的handler链调用机制8.4 一些简单的解码器8.4.1 ByteToMessageDecoder 解码器8.4.2 ReplayingDecoder解码器8.4.3 其他的编解码器九、TCP粘包

2022-01-25 00:13:51 1064

原创 Netty入门(三) --- Netty核心组件,Netty群聊系统

文章目录五、Netty核心组件5.1 Bootstrap、ServerBootstrap常用方法:5.2 Future、ChannelFuture常用方法:5.3 Channel5.4 Selector5.5 ChannelHandler5.6 Pipeline 和 ChannelPipeline常用方法:5.7 ChannelHandlerContext常用方法:5.8 ChannelOption5.9 EventLoopGroup和NioEventLoopGroup常用方法5.10 Unpooled

2022-01-23 18:09:48 534

原创 Netty入门(二)--- 任务队列,异步模型剖析,Http服务Demo

文章目录四、Netty异步操作4.1 taskQueue任务队列4.2 scheduleTaskQueue定时任务4.3 非当前Reactor调用Channel的方法4.4 Netty异步模型原理剖析4.4.1 ChannelFuture4.4.2 Future-Listener 机制4.5 Http服务Demo往期Netty入门(一) — Reactor线程模型,Netty的线程模型,快速入门Demo四、Netty异步操作Netty任务队列的 Task 有3中使用场景用户程序自定义的普通任

2022-01-23 18:05:30 1143

原创 Netty入门(一) --- Reactor线程模型,Netty的线程模型,快速入门Demo

文章目录一、Netty概述1.1 简介1.2 原生NIO的问题1.3 Netty的优点二、线程模型2.1 传统阻塞IO服务模型特点:问题:2.2 Reactor模式2.2.1 单Reactor单线程流程说明:优缺点分析:2.2.2 单Reactor多线程流程说明:优缺点:2.2.3 主从Reactor多线程流程说明:优缺点:总结三、Netty模型原理描述:快速入门demo一、Netty概述1.1 简介官网:https://netty.io/Netty是一个NIO客户端服务器框架,它可以快速简单地开发

2022-01-21 22:23:22 1287

原创 NIO快速入门 --- 三大核心组件Buffer,Channel,Selector,NIO聊天室系统,NIO与零拷贝

文章目录一、I/O模型简介二、BIO和NIO2.1 BIO工作原理图:工作流程:问题分析:2.2 NIONIO基本介绍:NIO与BIO对比NIO核心三大部分关系三、缓冲区Buffer基本介绍Buffer重要属性和APIByteBufferMappedByteBufferBuffer的Scattering 和 Gathering注意事项:四、通道Channel基本介绍常用的Channel:FileChannelServerSocketChannelSocketChannelBuffer和Channel实例:1

2022-01-20 17:14:44 1523

原创 Collection集合工具类源码解读(五) --- TreeMap 和 TreeSet

文章目录9、TreeMap9.1 先看看属性9.2 构造函数9.3 put方法分析排序第一次put以后的put如果用比较器怎么写?9.4 一些常用API10、TreeSet10.1 先看看属性10.2 构造函数10.3 一些API往期:Collection集合工具类源码解读(一) — ArrayList 和 VectorCollection集合工具类源码解读(二) — LinkedListCollection集合工具类源码解读(三) — HashMapCollection集合工具类源码解读(四)

2022-01-12 19:33:14 511

原创 Collection集合工具类源码解读(四) --- HashTable,HashSet,LinkedHashMap,LinkedHashSet

文章目录5、HashTable5.1 先看看属性5.2 构造函数5.3 从put方法分析扩容机制put方法addEntry方法(真正添加值的方法)rehash方法(扩容)扩容总结:5.4 get方法5.5 remove方法5.6 replace5.7 HashTable和HashMap6、HashSet6.1 先看看属性6.2 构造方法6.3 add方法6.4 remove方法6.5 contains7、LinkedHashMap7.1 先看看属性7.2 构造方法7.3 LinkedHashMap完善的方法

2022-01-12 17:31:49 829

原创 Collection集合工具类源码解读(三) --- HashMap

文章目录4、HashMap4.1 先看看属性4.2 构造方法4.3 从put分析扩容机制(重点)putVal方法resize方法(扩容和树化)扩容树化扩容机制总结4.4 get方法4.5 remove方法4.6 replace往期:Collection集合工具类源码解读(一) — ArrayList 和 VectorCollection集合工具类源码解读(二) — LinkedList4、HashMap重头戏来咯,老惯例,先写个demo,debugpublic class HashMapDe

2022-01-11 17:33:24 890

原创 Collection集合工具类源码解读(二) --- LinkedList

文章目录3、LinkedList3.1 先看属性3.2 构造方法3.3 add方法尾插法:linkLast头插法:linkFirst中间插:linkBefore3.4 get方法和set方法3.5 remove方法头删unlinkFirst尾删unlinkLast删除第一个出现的元素删除最后一个出现的元素3.6 一些队列的方法peek系poll系offer系往期:Collection集合工具类源码解读(一) — ArrayList 和 Vector3、LinkedListlinkedList底层

2022-01-10 17:38:43 809

原创 Collection集合工具类源码解读(一) --- ArrayList 和 Vector

文章目录1、ArrayList1.1 先看看这些属性1.2 构造方法1.3 从add分析扩容机制结论:1.4 get方法和set方法1.5 remove方法1. remove(int index)2.remove(Object o)1.6 indexOf方法和lastIndexOf方法1. indexOf2. lastIndexOf2、Vector2.1 先看看属性2.2 构造方法2.3 从add分析扩容机制结论:2.4 get方法和set方法2.5 remove方法1. remove(int index)

2022-01-09 14:20:29 741

原创 JUC并发编程(四)--- JMM内存模型,Volatile关键字深入理解,CAS

文章目录14、Java内存模型JMM15、Volatile15.1 保证可见性15.2 不保证原子性15.2.1 原子类15.3 禁止指令重排16、彻底玩转单例模式16.1 饿汉式16.2 DCL懒汉式16.3 枚举类型17、深入理解CAS17.1 什么是CAS17.2 Unsafe类和CAS17.3 ABA问题17.4 原子引用18、锁总结18.1 公平锁、非公平锁18.2 可重入锁18.3 自旋锁SpinLock18.9 死锁死锁如何排除JUC笔记JUC并发编程(一) — 多线程回顾,Synchr

2022-01-08 16:04:44 599

原创 JUC并发编程(三) --- 线程池,并行计算ForkJoin,异步回调FutureTask和CompletableFuture

文章目录10、Callable回顾11、线程池11.1 三大方法11.2 七大参数11.3 四个拒绝策略11.4 池的大小怎么确定12、并行计算ForkJoin12.1 什么是ForkJoin12.2 ForkJoin特点12.3 ForkJoinTask和ForkJoinPool实践:13、异步回调Future和FutureTask13.1 Future13.2 FutureTask13.3 CompletableFutureJUC笔记JUC并发编程(一) — 多线程回顾,Synchronized和

2022-01-07 23:06:18 648

原创 JUC并发编程(二)--- 并发下集合不安全及解决方案,读写锁,阻塞队列

文章目录6、集合类不安全问题6.1 List不安全1、Vector2、synchronizedList转换3、CopyOnWriteArrayList6.2 Set不安全回顾一下HashSet:1、synchronizedSet转换2、CopyOnWriteArraySet6.3 Map不安全1、HashTable2、ConcurrentHashMap7、常用辅助类7.1 CountDownLatch7.2 CyclicBarrier7.3 Semaphore8、读写锁9、阻塞队列9.1 阻塞队列和非阻塞队

2022-01-07 12:16:05 840

原创 JUC并发编程(一) --- 多线程回顾,Synchronized和Lock锁,Condition线程通信,八锁问题

1、JUC简介JUC是java.util.concurrent的缩写,即concurrent包下的所有东西,非常重要在学习JUC前需要对Java多线程进行回忆并补充2、线程和进程进程和线程 详见操作系统进程:就是一个正在运行的程序实例,进程是线程的容器线程:一个程序中不同的功能可能由不同的线程并行执行,例如:打开QQ,你这边和A聊天,那边和B聊天对java而言:java默认有2个线程:main线程和gc线程基类:Thread,Runnable,Callable对于Java而言,

2022-01-06 16:03:42 324

原创 Java多线程拾遗 --- 创建线程方式,线程的相关方法,线程锁,线程通信

文章目录1、线程创建1.1 继承Thread类1.2 实现Runnable接口1.3 实现Callable接口2、线程状态和相关方法2.1 线程五大状态2.2 线程相关方法2.2.1 优先级setPriority2.2.2 线程休眠sleep2.2.3 线程停止2.2.4 线程礼让yield2.2.5 线程插队join2.3 线程状态观测2.4 守护线程3、线程锁3.1 synchronized3.1.1 方法锁3.1.2 块锁3.2 Lock3.3 synchronized 和 lock 对比4、线程通信

2021-12-19 22:57:02 207

原创 Redis入门(六) ---缓存穿透,缓存击穿,缓存雪崩和分布式锁

文章目录12、Redis应用环境下的问题12.1 缓存穿透(查不到)原因分析:解决方案:12.2 缓存击穿(查询量太大,一个缓存过期)原因分析:解决方案:12.3 缓存雪崩(大量缓存过期)原因分析:解决方案:12.4 分布式锁的问题12.4.1 分布式锁主流实现方案:12.4.2 使用Redis实现分布式锁1、setnx key value加锁,del key解锁2、设置过期时间3、指定锁的值为uuid4、使用Lua脚本12.4.3 总结Redis笔记:Redis入门(一)— 五种基本数据类型Red

2021-12-17 15:35:00 472

原创 Redis入门(五) --- redis集群的概念,如何搭建,工作流程

文章目录11、Redis集群11.1 集群的引入11.2 怎么搭建集群11.2.1 制作六个实例:11.2.2 将六个节点合成一个集群:11.2.3 如何用集群的方式登录主机:redis cluster如何分配这六个节点?11.3 集群的插槽Slots11.4 集群中录入值11.5 查询集群的值11.6 集群故障恢复主从关系变化:某一段插槽的主从节点都宕掉,redis服务是否还能继续?11.7 集群的Jedis开发11.8 集群的总结优点:缺点:11、Redis集群11.1 集群的引入11.2 怎么搭建集群

2021-12-17 10:56:32 1316

原创 Redis入门(四)--- 主从复制,哨兵机制

文章目录10、Redis主从复制10.1 主从复制简介10.1.1 是什么10.1.2 能干啥10.2 主从复制相关配置10.2.1 配置文件修改10.2.2 复制三个配置文件10.2.3 启动三台redis服务器10.2.4 查看三台主机的运行情况10.2.5 配从不配主10.3 主从复制常用三招10.3.1 一主两仆10.3.2 薪火相传10.3.3 反客为主10.4 Redis主从复制原理总结:10.5 哨兵机制(sentinel)10.5.1 怎么玩10.5.2 主机挂掉选举新主机10.5.3 复制

2021-12-16 13:02:06 1649

原创 Redis入门(三)--- 可视化工具,发布订阅,事务管理,持久化RDB,AOF基本概念

文章目录[拓展]、Redis可视化工具7、Redis发布订阅7.1 发布和订阅7.2 命令行实现8、Redis事务管理8.1 Redis事务的定义8.2 Multi、Exec、discard8.2.1 事务对错误的处理8.3 锁机制8.3.1 悲观锁8.3.2 乐观锁8.3.3 如何加锁8.4 Redis秒杀案例8.4.1 秒杀并发模拟8.4.2 超卖问题问题:解决:8.4.3 少买问题原因:解决:9、Redis持久化9.1 RDB方式9.1.1 RDB是什么?9.1.2 备份如何执行9.1.3 dump.

2021-12-14 10:30:59 1169

原创 nginx入门 --- 反向代理,负载均衡的概念,基本配置文件

1、Nginx是什么?Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。Nginx的稳定性、功能集、示例配置文件和低系统资源的消耗让他后来居上,在全球活跃的网站中有12.18%的使用比率,大约为2220万个

2021-12-13 13:33:27 133

原创 Redis入门(二)--- redis新增数据类型,jedis操作redis,springboot整合redis

文章目录4、Redis新增的数据类型4.1 Bitmaps4.1.1 基本命令4.1.2 实例4.1.3 Bitmaps和set的对比4.2 HyperLogLog4.2.1 基本命令4.2.2 实例4.3 Geospatial4.3.1 基本命令4.3.2 实例5、Jedis操作redis5.1 Jedis-String5.2 Jedis-List5.3 Jedis-Set5.4 Jedis-Hash5.5 Jedis-Zset6、Springboot整合Redis1、pom依赖2、配置config3、测

2021-12-11 10:10:54 1788

原创 Redis入门(一)--- 五种基本数据类型

介绍:NoSql,非关系型数据库;单线程+多路IO复用技术Redis的原子性由于redis是单线程的,所有单个命令的执行都是原子性的适用场景:对数据高并发的读写海量数据的读写对数据高可扩展性的重点:redis和MemcacheRedis几乎覆盖了Memcached的绝大部分功能数据都在内存中,支持持久化,主要用作备份恢复除了支持简单的key-value模式,还支持多种数据结构的存储,比如 list、set、hash、zset等。一般是作为缓存数据库辅助持久化的数据库Me

2021-12-10 09:40:29 200

空空如也

空空如也

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

TA关注的人

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