- 博客(9)
- 收藏
- 关注
原创 并发编程(二):线程池
为什么要使用线程池?降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度:当任务到达时,任务可以不需要等到线程创建就能立即执行。提高线程的可管理性:线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一分配、调优和监控。Executor框架组成Executor框架主要由三大部分组成:任务:包括被执行任务需要实现的Runnable接口或Callable接口。任务的执行:包括任务执行机制的核心接口Executo.
2020-08-24 15:57:02 338
原创 Redis(五):Lua脚本
Redis从2.6版本开始支持Lua脚本,通过在服务器端嵌入Lua环境,客户端可以使用Lua脚本在服务器端原子的执行多个命令。Redis服务器会单线程原子性执行Lua脚本,保证Lua脚本在处理的过程中不会被任意其它请求打断。创建并修改Lua环境为了在Redis服务器中执行Lua脚本,需要在Redis服务器内嵌一个Lua环境。因为Redis在任何时间最多只有一个脚本被放进Lua环境中执行,所以一个Redis服务器只需要创建一个Lua环境。调用lua_open函数创建一个基本的Lua环境;—— 接下来
2020-08-18 17:59:20 377
原创 Redis(四):Redis如何实现分布式锁?
实现分布式锁的方式有Redis分布式锁、MySQL分布式锁、ZooKeeper分布式锁,Redis分布式锁的本质就是在Redis中“占坑”。实现一个分布式锁需要满足哪些条件呢?互斥性:在任何时刻都只能有一个客户端获得锁;健壮性:即使某个客户端在获得锁期间故障而没有释放锁,也要保住后续其他客户端可以获得锁;高可用:只要大部分节点正常,客户端就可以获得锁和释放锁;唯一性:加锁和解锁必须是同一个客户端;如何实现Redis分布式锁?如何加锁?1. setnx + delsetnx key
2020-08-18 12:29:38 462
原创 Redis(三):Redis如何实现高可扩展?
Redis集群提高了Redis的可扩展性,Redis的集群方案主要有Redis Cluster和Codis。Redis ClusterRedis Cluster是Redis官方提供的去中心化集群方案,通过分片来进行数据共享,并提供复制和故障转移功能。Redis Cluster如何分片?Redis集群通过分片的方式来保存数据库中的键值对。集群的整个数据库被分为16384个槽,数据库中的每个键都属于这16384个槽的其中一个,集群中的每个节点可以负责0~16384个槽。当数据库中的16384个槽
2020-08-17 20:53:38 955
原创 Redis(二):Redis如何做高可用?
Redis 中采用了以下两种方式实现高可用:主从复制;采用Sentinel机制监控节点的运行情况,一旦主节点出现问题将由从节点顶上继续提供服务;主从复制Redis主从复制是异步同步的,主从复制双方都保存相同的数据,保证最终一致性。复制过程slaveof <master_ip> <master_port>:通过向从服务器发送slaveof命令,可以让该从服务器去复制一个主服务器。从服务器会将master_ip和master_port保存在redisServer结构
2020-08-17 19:49:06 313
原创 Redis(一):Redis为什么高性能?
Redis为什么这么快?Redis是单线程的,避免了多线程的上下文切换和并发控制开销;Redis大部分操作时基于内存,读写数据不需要磁盘I/O,所以速度非常快;Redis采用了I/O多路复用机制,提高了网络I/O并发性;Redis提供高效的数据结构,如跳跃表、哈希表等;基础数据结构SDSRedis的简单动态字符串SDS是可变的,遵循C字符串以1字节空字符结尾,最大长度为512M。SDS为什么使用1字节空字符结尾呢?使用1字节空字符结尾可重用C字符串的部分函数。结构定义S.
2020-08-17 16:40:47 1305
原创 从Thrift到I/O多路复用
Thrift什么是Thrift?Thrift是一个轻量级、跨语言的远程服务调用框架,支持C++、Java、Python、PHP、Ruby等。通过代码生成引擎自动生成RPC接口Thrift IDL文件对应的各种主流语言的RPC服务端/客户端模板代码,省去自定义和维护接口编解码、消息传输、服务器多线程模型等基础工作,服务端只需要编写接口实现类,客户端根据服务对象调用远端服务。Thrift架构Thrift架构从下往上为传输层、协议层、处理层和服务层。传输层主要负责从网络中读/写数据,定义了网络
2020-07-31 17:55:20 797
原创 结合SpringBoot+Mybatis+MySQL+FreeMarker实现增删改查
目录1.新建一个SpringBoot项目2.数据库设计3.项目整体目录结构4.在pom.xml中添加Mybatis、MySQL、FreeMarker等的starter5.在application.properties中添加数据库、Mybatis、FreeMarker等的相关配置6.在SpringBoot启动类MallApplication配置扫描mapper接口类7.实...
2018-09-29 17:41:51 6642 6
原创 在项目中使用Swagger接口说明
目录1 Swagger介绍1.1 Swagger应用场景1.2 Swagger作用2 Swagger注解说明3 在项目中使用Swagger1 Swagger介绍Swagger是最流行的API开发工具,它遵循OpenAPI Specification(OpenAPI规范,简称OAS)。Swagger可以贯穿于整个API生态,如API的设计、编写API文档、测试和部署。...
2018-09-26 17:43:37 14207 3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人