CodeTop 记录 206 反转链表给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]实现:class Solution { public ListNode reverseList(ListNode head) { if(head == null) { return head; } ListNode pre = null;
Redis集群(主从)脑裂及解决方案 1 集群脑裂redis 的集群脑裂是指因为网络问题,导致 redis master 节点跟 redis slave 节点和 sentinel 集群处于不同的网络分区,此时因为 sentinel 集群无法感知到 master 的存在,所以将 slave 节点提升为master 节点。此时存在两个不同的 master 节点,就像一个大脑分裂成了两个。集群脑裂问题中,如果客户端还在基于原来的 master 节点继续写入数据,那么新的 master 节点将无法同步这些数据,当网络问题解决之后,sentinel
如何理解BIO、NIO、AIO的区别? 很多文章在谈论到BIO、NIO、AIO的时候仅仅是抛出一堆定义,以及一些生动的例子。看似很好理解。但是并没有将最基础的本质原理显现出来,如果没有没有从IO的原理出发的话是很难理解这三者之间的区别的。所以本篇文章从Java是如何进行IO操作为开头进行分析。Java中的IO原理首先Java中的IO都是依赖操作系统内核进行的,我们程序中的IO读写其实调用的是操作系统内核中的read&write两大系统调用。那内核是如何进行IO交互的呢?网卡收到经过网线传来的网络数据,并将网络数据写到内.
Spring 事务失效的7种场景 目录1、事务失效的7种情况1.1、未启用 spring 事务管理功能1.2、方法不是 public 类型的1.3、数据源未配置事务管理器1.4、自身调用问题1.5、异常类型错误1.6、异常被吞了1.7、业务和spring事务代码必须在一个线程中2、如何快速定位事务相关bug?1、事务失效的7种情况1.1、未启用 spring 事务管理功能@EnableTransactionManagement 注解用来启用 spring 事务自动管理事务的功能,这个注解.
深入理解OAuth 2.0 一OAuth 2.0 是什么OAuth 2.0 是一种授权协议。二 为什么用OAuth 2.0OAuth 2.0 这种授权协议,能保证第三方软件只有在获得授权之后,才可以进一步访问授权者的数据,能保证授权者数据的安全性。三OAuth 2.0四种授权流程在 OAuth 2.0 的体系里面有 4 种角色,它们分别是资源拥有者、客户端、授权服务和受保护资源。为了详细的讲解四种授权流程,以产品 A 集成产品 B 进行授权登录为例,来具体说明四种授权流程和应用场景。3.1授权码模...
必知必会的正则表达式 目录1 正则表达式概念2 正则表达式语法元字符限定符反义词3 正则表达式的应用汉字字符数字邮政编码日期格式手机号码IP地址邮箱地址身份证号特殊字符4 正则表达式可视化iHate Regexregex101The Regular Expression Visualizer, Simulator & Cross-Compiler Tool1 正则表达式概念正则表达式,又称规则表达式。(英语:Regular Ex
Optional 最佳实践 目录一 Optional 是什么二 Optional API介绍三 Optional 最佳实践3.1 不要直接返回 null,使用 Optional.empty();3.2 正确使用 ifPresent()3.3 少用 get(),多用orElse()和orElseGet()3.4 少用of(),多用ofNullable()一 Optional 是什么Optional 的作者 Brian Goetz 对这个 API 的说明:Our intention was
MySQL存储时间的最佳实践 平时开发中经常需要记录时间,比如用于记录某条记录的创建时间以及修改时间。在数据库中存储时间的方式有很多种,比如 MySQL 本身就提供了日期类型,比如 DATETIME,TIMESTAMEP 等,我们也可以直接存储时间戳为 INT 类型,也有人直接将时间存储为字符串类型。那么到底哪种存储时间的方式更好呢?不要使用字符串存储时间类型这是初学者很容易犯的错误,容易直接将字段设置为 VARCHAR 类型,存储"2021-01-01 00:00:00"这样的字符串。当然这样做的优点是比较简单,上手快。
代码整洁之道学习 目录2.1 介绍2.2 名副其实2.3 避免误导2.4 做有意义的区分2.5 使用读的出来的名称2.6 使用可搜索的名称2.7 避免使用编码2.8 避免思维映射2.9 类名2.10 方法名2.11 别扮可爱2.12 每个概念对应一个词2.13 别用双关语2.14 使用解决方案领域名称2.15 使用源自所涉问题领域的名称2.16 添加有意义的语境2.17 不要添加没有用的语境2.1 介绍软件开发中命名随处可见,做好命名是必要且重要的。
供应链服务术语 目录1 范围2 规范性引用文件3 供应链服务基础术语4 供应链服务商流术语5 供应链服务物流术语6 供应链服务资金流术语7 供应链服务信息流术语8 供应链服务综合术语1 范围本文件界定了供应链服务的术语及其定义。本文件适用于供应链服务及相关领域的信息处理和信息交换。2 规范性引用文件下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文件。 凡是不注日期的引用文件,其最新版本(包...
为什么数组的下标都是从0开始而不是1? 目录一 数组寻址公式二 数组模型表示三 数组寻址计算一 数组寻址公式a[i]_address = base_address + i * data_type_sizedata_type_size 是数组中每一个元素大小。二 数组模型表示以 int[] a = new int[10] 为例。计算机给数组 a[10],分配了一块连续内存空间 2000~2039,内存块的首地址为 base_address = 2000。三 数组寻址计算假设数组从0开始,计算第9个元
RPC必知必会 目录一 RPC是什么二 RPC通信流程2.1 请求部分2.2 响应部分一 RPC是什么RPC的全称是 Remote Procedure Call,即远程过程调用。什么是远程调用?本地服务调用远程服务。什么是RPC?RPC是帮助我们屏蔽网络编程细节,实现调用远程方法就像调用本地方法一样。总结来讲,RPC作用有两个:屏蔽远程调用跟本地调用的区别,让我们感觉就是调用项目内的方法; 隐藏底层网络通信的复杂性,让我们更专注于业务逻辑。二 RPC通信流程RPC通信流.
工作中如何成长 德雷福斯模型德雷福斯是一个专业人员能力成长模型,这个模型认为所有专业人员都需要经历 5 个成长阶段,任何专业技能的从业者都需要经历新手、高级新手、胜任者、精通者、专家 5 个阶段。新手:无法独立完成工作,必须在有经验的同事指导下,学习相关的技能,完成工作。技能指的是:工具:开发用什么工具、开发用什么框架,怎么开发。协作:如何开会,如何写周报,如何与同事协作。业务:了解业务,了解业务领域知识。高级新手:不需要别人指导工作,能独立完成工作,缺少对工具和框架的思考,无法解决在工作中
TP50、TP90、TP99的理解和使用 一 TP50、TP90、TP99 的概念1.1 什么是 TPTP 是 Top Percentile 的缩写,中文译作百分位。1.2 什么是百分位百分位是一个统计学的术语。如果将一组数据从小到大排序,并计算相应的累计百分位,则某一百分位所对应数据的值就称为这一百分位的百分位数。可表示为:一组N个观测值按数值大小排列。如,处于P%位置的值称第P百分位数。1.3 TP50、TP90、TP99 怎么理解TP50、TP90、TP99 是工程性能指标,以网络请求耗时为例:TP50:表
09-Redis IO 多路复用 目录一 Redis 是单线程还是多线程?二 为什么单线程的 Redis 性能很高?三 什么是 IO 多路复用技术?一 Redis 是单线程还是多线程?这个问题可以一分为二:Redis 是单线程,是因为 Redis 使用文件事件分派器来处理事件队列,且该文件事件分派器是单线程的,所以 Redis 才叫做单线程的模型。Redis 是多线程,是因为持久化、异步删除、集群数据同步等操作都是由数据读写线程之外其他线程执行的,所以 Redis 也可以叫做多线程模型。之所以大家都说是单线程