如何设计一个分布式锁?如何对锁性能进行优化?
如何设计一个分布式锁?如何对锁性能进行优化? 分布式锁的本质:就是在所有进程都能访问到的一个地方设置一个锁资源,让这些进程都来竞争锁资源。(保证只有一个进程获取资源)数据库、zookeeper、redis等。通常对于分布式锁,会要求响应快、性能高、与业务无关。 如何使用redis实现分布式锁 SETNX key value:当key不存在时,将key设置为value,并返回1。如果ke...
如何设计一个分布式锁?如何对锁性能进行优化? 分布式锁的本质:就是在所有进程都能访问到的一个地方设置一个锁资源,让这些进程都来竞争锁资源。(保证只有一个进程获取资源)数据库、zookeeper、redis等。通常对于分布式锁,会要求响应快、性能高、与业务无关。 如何使用redis实现分布式锁 SETNX key value:当key不存在时,将key设置为value,并返回1。如果ke...
什么是Netty Netty是一款提供异步的, 事件驱动的网络应用程序框架和工具, 用以快速开发高性能, 高可靠性的网络服务器和客户端程序. 也就是说, Netty是一个基于NIO的客户,服务器端编程框架. 使用Netty可以确保你快速和简单地开发出一个网络应用, 例如实现了某种协议的客户, 服务端应用. Netty相当简化和流线化了网络应用的编程开发过程, 例如: TCP和UDP的so...
🦅 概念 序列化(编码),是将对象序列化为二进制形式(字节数组),主要用于网络传输、数据持久化等。 反序列化(解码),则是将从网络、磁盘等读取的字节数组还原成原始对象,主要用于网络传输对象的解码,以便完成远程调用。 🦅 选型 在选择序列化协议的选择,主要考虑以下三个因素: 序列化后的字节大小。更少的字节数,可以减少网络带宽、磁盘的占用。 序列化的性能。对 CPU...
synchronized是一个关键字,ReentrantLo夏促1. synchronized是一个关键字,ReentrantLockw一个类 synchronized会自动的加锁与释放锁,ReentrantLock需要手动加锁与释放锁 synchronized的底层是JVM层面的锁,ReentrantLock是API层面的锁 synchronized是非公平锁,Reentran...
MQTT协议是什么 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(Publish/Subscribe)模式的轻量级通讯协议,该协议构建于TCP/IP协议上,目前最新版本为v3.1.1。 MQTT最大的优点在于可以以极少的代码和有限的带宽,为远程设备提供实时可靠的消息服务。做为一种低开销、低带宽占用的即时通讯...
BIO是什么? 概念 BIO,又称Block-IO,是一种阻塞+同步的通信模式. 是一个比较传统的通信方式,模式简单,使用方便.但是并发处理能力低,通信耗时,依赖网速 原理 服务器通过一个Acceptor线程,负责监听客户端请求和为每个客户端创建一个新的线程进行链路处理.典型的一请求一应答模式 若客户端数量增多,频繁地创建和销毁线程会给服务器打开很大的压力.后改良为用线程...
🦅 概念 TCP 是以流的方式来处理数据,所以会导致粘包 / 拆包。 拆包:一个完整的包可能会被 TCP 拆分成多个包进行发送。 粘包:也可能把小的封装成一个大的数据包发送。 🦅 原因 应用程序写入的字节大小大于套接字发送缓冲区的大小,会发生拆包现象。而应用程序写入数据小于套接字缓冲区大小,网卡将应用多次写入的数据发送到网络上,这将会发生粘包现象。 待发送数据大...
一、基础 模式定义了数据如何存储、存储什么样的数据以及数据如何分解等信息,数据库和表都有模式。 主键的值不允许修改,也不允许复用(不能使用已经删除的主键值赋给新数据行的主键)。 SQL(Structured Query Language),标准 SQL 由 ANSI 标准委员会管理,从而称为 ANSI SQL。各个 DBMS 都有自己的实现,如 PL/SQL、Transact-SQL ...
请说说 Redis 的线程模型? 艿艿:这个是我从网络上找的资料,讲的灰常不错。一般来说,回答道 Redis 是非阻塞 IO ,多路复用。 Redis 内部使用文件事件处理器 file event handler,这个文件事件处理器是单线程的,所以 Redis 才叫做单线程的模型。它采用 IO 多路复用机制同时监听多个 Socket,根据 Socket 上的事件来选择对应的事件处理器进行...
面试官:谈谈 PostgreSQL 与 MySQL 的区别 都属于开放源码的一员,性能和功能都在高速地提高和增强。MySQL AB的人们和PostgreSQL的开发者们都在尽可能地把各自的数据库改得越来越好,所以对于任何商业数据库使用其中的任何一个都不能算是错误的选择。 PostgreSQL : 免费 原则: 对于一个数据库,稳定性和速度并不能代表一切。对于一个成熟的数据库,稳定性肯定...