自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 并发编程(二):线程池

为什么要使用线程池?降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度:当任务到达时,任务可以不需要等到线程创建就能立即执行。提高线程的可管理性:线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一分配、调优和监控。Executor框架组成Executor框架主要由三大部分组成:任务:包括被执行任务需要实现的Runnable接口或Callable接口。任务的执行:包括任务执行机制的核心接口Executo.

2020-08-24 15:57:02 305

原创 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 343

原创 Redis(四):Redis如何实现分布式锁?

实现分布式锁的方式有Redis分布式锁、MySQL分布式锁、ZooKeeper分布式锁,Redis分布式锁的本质就是在Redis中“占坑”。实现一个分布式锁需要满足哪些条件呢?互斥性:在任何时刻都只能有一个客户端获得锁;健壮性:即使某个客户端在获得锁期间故障而没有释放锁,也要保住后续其他客户端可以获得锁;高可用:只要大部分节点正常,客户端就可以获得锁和释放锁;唯一性:加锁和解锁必须是同一个客户端;如何实现Redis分布式锁?如何加锁?1. setnx + delsetnx key

2020-08-18 12:29:38 430

原创 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 894

原创 Redis(二):Redis如何做高可用?

Redis 中采用了以下两种方式实现高可用:主从复制;采用Sentinel机制监控节点的运行情况,一旦主节点出现问题将由从节点顶上继续提供服务;主从复制Redis主从复制是异步同步的,主从复制双方都保存相同的数据,保证最终一致性。复制过程slaveof <master_ip> <master_port>:通过向从服务器发送slaveof命令,可以让该从服务器去复制一个主服务器。从服务器会将master_ip和master_port保存在redisServer结构

2020-08-17 19:49:06 283

原创 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 1269

原创 从Thrift到I/O多路复用

Thrift什么是Thrift?Thrift是一个轻量级、跨语言的远程服务调用框架,支持C++、Java、Python、PHP、Ruby等。通过代码生成引擎自动生成RPC接口Thrift IDL文件对应的各种主流语言的RPC服务端/客户端模板代码,省去自定义和维护接口编解码、消息传输、服务器多线程模型等基础工作,服务端只需要编写接口实现类,客户端根据服务对象调用远端服务。Thrift架构Thrift架构从下往上为传输层、协议层、处理层和服务层。传输层主要负责从网络中读/写数据,定义了网络

2020-07-31 17:55:20 757

原创 结合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 6519 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 14154 3

空空如也

空空如也

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

TA关注的人

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