自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 为什么循环队列要浪费一个存储空间

什么是队列队列和数组,链表,栈一样都是属于线性数据结构,而队列又和栈比较相似,都属于操作受限的数据结构,其中栈是“后入先出”,而队列是“先进先出”。和栈一样,队列也仅有两个基本操作:入队和出队(栈则是入栈和出栈)。往队列中放元素称之为入队,往队列中取元素称之为出队,然而相对于栈来说,队列又会复杂一点。队列中通常需要定义两个指针:head和tail(当然,也有称之为:front和rear)分别用来表示头指针和尾指针。初始化队列时,head和tail相等,当有元素入队时,tail指针...

2022-01-14 21:39:28 447

原创 Java中Volatile的原理及使用

1、简介volatile是轻量级的synchronized,不会引起线程上下文的切换和调度,因此使用和执行成本更低。2、Volatile特性2.1、Volatile保证可见性当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值 对一个volatile变量的读,总是能看到任意线程对这个volatile变量最后的写入2.1.1、可见性举例下面用一个例子来说明:线程t1中进行循环,直到tag变成true时才退出,线程t2负责将tag更新为true,先开始t1,后开始t2p

2022-01-13 21:01:04 381

原创 选择了MySQL和SpringData JPA

今天想跟大家聊聊数据库层面上的事,austin项目继续更新(注:今天聊的数据库都特指关系型数据库)01、数据库选择之前发了一张我可能要在austin项目上引入哪些技术栈的图,好多人问我分布式配置中心为什么不选择Nacos,而是用Apollo。却没人问我为什么数据库选择MySQL。说起来MySQL,在网上看到的各类Java教程,几乎都是使用MySQL作为数据库。日常在群里聊各种数据库上的问题,也差不多都是MySQL,只有个别的可能用PostgreSQL和Oracle或其他就连我在面试的时候,我

2022-01-13 20:30:28 503

原创 为啥春节抢红包总不是运气王?看完微信抢红包算法你就明白了

前言春节必不可少的活动就是抢红包啦,从以前的纸质红包到现在互联网红包(以微信红包为首),今天我们就来分析一下抢红包的算法,其中有一些是微信红包的算法,看完你就知道手气最佳是如何产生的啦!算法一:剩余金额随机法算法一是不推荐使用的,算法一全称叫剩余金额随机法,听名字就知道这个方法是将剩余的金额进行随机分配,我们先来看代码。// 分配红包的算法private static void testPocket(BigDecimal amount, BigDecima...

2022-01-13 16:13:56 2659

原创 翻译翻译什么TMD叫EXPLAIN

其实网上有很多写的很好的sql优化文章,全面细致,但是都遗漏了一个问题,只教了大家怎么治病,没教怎么看病,这就好比一个饱读医书的大夫,病人往这一坐,望闻问切全都不会,一身的本事不知道该用哪个?急死个人了。所以今天就聊聊怎么看病,也就是如何看MySQL的执行计划。EXPLAIN当客户端发送给服务端一条sql语句后,并不是拿过来就执行的,而是先经过优化器选取最优的方案,比如表的读取顺序,索引实际是否被使用,表之间的引用等。而优化后的执行方案就称之为执行计划。EXPLAIN的作用就是查看执行计划

2022-01-12 20:49:13 93 1

原创 一文说清楚ThreadLocal

ThreadLocal当多个线程对同一变量进行写操作的时候,容易出现线程安全问题,所以就会用到对应的锁和其他一些方法,我们先不介绍锁,先介绍ThreadLocal, ThreadLocal字面意思本地线程,ThreadLocal使每个线程之间是隔离的,数据是独立的,我们使用过session都知道 session是一个会话,我们可以用它来存储一些用户的基本信息,这样每个用户在服务端都能取到,ThreadLocal也可以做到,ThreadLocal将相应的信息存储在当前的线程中,只有当前线程能够访问,其他线

2022-01-12 19:14:53 3507

原创 不会一致性hash算法,劝你简历别写搞过负载均衡

大家好这两天看到技术群里,有小伙伴在讨论一致性hash算法的问题,正愁没啥写的题目就来了,那就简单介绍下它的原理。下边我们以分布式缓存中经典场景举例,面试中也是经常提及的一些话题,看看什么是一致性hash算法以及它有那些过人之处。构建场景假如我们有三台缓存服务器编号node0、node1、node2,现在有3000万个key,希望可以将这些个key均匀的缓存到三台机器上,你会想到什么方案呢?我们可能首先想到的方案,是取模算法hash(key)% N,对key进行hash运算后取模,N是机

2022-01-12 14:18:55 73

原创 IDEA注释模板,惊艳了。动作要快,姿势要帅

一、类注释打开 IDEA 的 Settings,点击 Editor-->File and Code Templates,点击右边 File 选项卡下面的Class,在其中添加图中红框内的内容:/** * @author jitwxs * @date ${YEAR}年${MONTH}月${DAY}日 ${TIME} */注 意在我提供的示例模板中,说明了作者和时间,IDEA 支持的所有的模板参数在下方的 Description 中被列出来。保存后,当你创建一个新的类的

2022-01-11 20:42:06 199

原创 Spring切面加解密MySQL数据实战

本篇文章就是如何解决针对字符串进行过滤拦截。mybatis拦截器也可以拦截字符串参数,至于为什么不在Mybatis拦截器里面把字符串参数进行加解密的原因:不是所有字符串类型数据都需要加解密,只有在用手机号字作为入参和查询结果才加解密数据。而mybatis拦截器无法直接区分本次拦截的字符串是否需要加解密,所以才需要额外配置字符串拦截过滤(这里的字符串包括:手机号,真实姓名,身份证、银行卡号、支付宝账号等数据)Spring切面拦截Spring的aop在项目中使用场景还是比较广泛的,这次就使用次来进行字

2022-01-10 20:48:43 432

原创 AQS是什么?Java并发编程大师的源码不得不拜读呀

目录初识ReentrantLock什么是AQSAQS中的同步状态stateCLH变体队列独占模式共享模式公平锁&非公平锁结语大家好,我是tin,这是我的第13篇原创文章​文章首发于公众号【看点代码再上班】,欢迎围观,第一时间获取最新文章。今天把ReentrantLock和AQS一起翻一翻,通过源码说一说我们的Java锁。初识ReentrantLock首先,我们同时启用5个线程对一个公共变量counter从0开始累加,每个线程只对变量+1

2022-01-10 19:22:12 87

原创 Java异步编程的核心类:FutureTask

话不多说,直接进入正文。一、FutureTask1、FutureTask的通俗解释有一天你饿了,想吃饭,但是你不会做,这时候你就跟你妈说:妈,我饿了,我要吃饭。然后你妈就去厨房做饭,同时你就去看球赛了(但是你不想被打扰,就跟你妈说,饭做好了贴个墙纸就好了)。你妈把饭做好并端到餐桌上了,并贴了个墙纸,也不告诉你,然后你饿的受不了了,看了一下墙,已经有贴纸了,你就去餐桌上吃饭了,如果没有贴纸你就继续看球赛。FutureTask就是这张墙纸。当然,你要真这么干,估计你妈会打死你。一句话总.

2022-01-08 20:15:17 221

原创 Mybatis拦截器安全加解密MySQL数据实战

需求背景公司为了通过一些金融安全指标(政策问题)和防止数据泄漏,需要对用户敏感数据进行加密,所以在公司项目中所有存储了用户信息的数据库都需要进行数据加密改造。包括Mysql、redis、mongodb、es、HBase等。 因为在项目中是使用springboot+mybatis方式连接数据库进行增删改查,并且项目是中途改造数据。所以为了不影响正常业务,打算这次改动尽量不侵入到业务代码,加上mybatis开放的各种拦截器接口,所以就以此进行改造数据。 本篇文章讲述如何在现有项目中尽量不侵入业务方式进行

2022-01-08 16:46:53 4306 2

原创 SkyWalking Java Agent 配置初始化流程分析

基于 SkyWalking Java Agent 8.8.0 版本今天我们要分析的是 SkyWalking Java Agent 配置相关内容,我们接触到的框架大都需要一些配置文件,比如 SpringBoot 中的 application.yml。 SkyWalking Java Agent 在 premain 方法中首先做的就是通过SnifferConfigInitializer.initializeCoreConfig(agentArgs);初始化核心配置。/** * The main ..

2022-01-08 16:41:14 1453

原创 基于Netty手写一个远程连接Redis的IDEA插件

前言前几天一直在学习Netty框架,写了几个Demo,然后就想着可以用它来写点什么,然后又对编写idea的插件有点兴趣,那么就准备写一个idea插件.写什么好呢,想起可以写一个Redis连接客户端的插件,这个也可以用上Netty,虽然市面上已经有很多redis的客户端,例如:Redis Desktop Manager这类的,不过很多是付费的,想白嫖需要找破解版,自己写的功能上虽然简陋,不过胜在使用方便,不用另开程序.很多时候也仅仅是想看看redis里数据有没有保存上,所以也够用了.想要完...

2022-01-07 17:21:59 939 1

原创 咦,为什么我的事务回滚不了?

MySQL 事务小伙伴们都懂,通过 begin 开启事务,通过 commit 提交事务或者通过 rollback 回滚事务。在前面的文章中,松哥也和大家聊了一些事物原理以及相关的细节,小伙伴们可以回顾一下:MVCC 水略深,但是弄懂了真的好爽! 一致性视图是啥时候建立的? 四个案例看懂 MySQL 事务隔离级别正常来说,当我们开启一个事务之后,需要 commit 或者 rollback 来结束一个事务的,但是有时候,一些操作会自动帮我们提交事务,如果大家不了解隐式事务的话,那么在具体使用事务的

2022-01-07 15:21:15 419

原创 为什么索引可以让查询变快?终于有人说清楚了

概述人类存储信息的发展历程大致经历如下:由于是个人凭着自己理解总结的,因此可能不一定精确,但是毋庸置疑的是,在当代,各大公司机构部门的数据都是维护在数据库当中的。数据库作为数据存储介质发展的最新产物,必然是具有许多优点的,其中一个很大的优点就是存储在数据库中的数据访问速度非常快。数据库访问速度快的一个很重要的原因就在于索引index的作用。也就是这篇文章的主要想介绍的内容,为什么索引可以让数据库查询变快?计算机存储原理在理解索引这个概念之前,我们需要先了解一下计算机存储方面的

2022-01-07 14:39:44 2643

原创 全方位、多角度理解 ThreadLocal,还有谁不会?

来源:blog.csdn.net/zzg1229059735/article/details/82715741本次给大家介绍重要的工具ThreadLocal。讲解内容如下,同时介绍什么场景下发生内存泄漏,如何复现内存泄漏,如何正确使用它来避免内存泄漏。ThreadLocal是什么?有哪些用途? ThreadLocal如何使用 ThreadLocal原理 ThreadLocal使用有哪些坑及注意事项1. ThreadLocal是什么?有哪些用途?首先介绍Thread类中属性thread

2022-01-06 20:38:38 79

原创 聊聊如何通过自定义注解实现springmvc和sentinel整合

前言今天我们就来聊下如何通过自定义注解把springmvc请求的功能和sentinel功能给整合起来实现思路核心思路通过一个注解把springmvc的@RequestMapping具备的功能 + @SentinelResource具备的功能给聚合起来实现步骤1、自定义注解@Target({ElementType.TYPE, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documented@Mappingpu

2022-01-06 20:16:43 439

原创 困扰程序员的7个“雷区”,只要遇上一个,都是崩溃的瞬间

谈到程序员,不得不提那些让程序员们崩溃的几件事,简直就是噩梦!下面这几条,从业编程人员的你,有没有遇到过呢?1、技术大牛帮不上忙“emmmm……遇到了个技术难题,去 GitHub 和Google 上找找答案”,然后就没有然后了……每个程序员浏览器书签里肯定有几个优秀的技术官网或论坛社区,用里面的资源来提高自己的编程技术。但是!!!有些问题大牛也帮不上什么忙,真的是恐怖的噩梦!2、断网掉线“没有网,就没办法 Google,不能 Google 就不能解决问题,解决不了问题,公司就能解

2022-01-06 16:37:17 143

原创 这个 SpringCloud 微服务商城值得推荐

一个基于Spring Cloud、Nacos、Seata、Mysql、Redis、RocketMQ、canal、ElasticSearch、minio的微服务B2B2C电商商城系统,采用主流的互联网技术架构、全新的UI设计、支持集群部署、服务注册和发现以及拥有完整的订单流程等,代码完全开源,没有任何二次封装,是一个非常适合二次开发的电商平台系统。前言本商城致力于为中大型企业打造一个功能完整、易于维护的微服务B2B2C电商商城系统,采用主流微服务技术实现。后台管理系统包含平台管理,店铺管理...

2022-01-06 14:42:37 1257

原创 Java Record 的一些思考 - 序列化相关

Java Record 序列化相关Record 在设计之初,就是为了找寻一种纯表示数据的类型载体。Java 的 class 现在经过不断的迭代做功能加法,用法已经非常复杂,各种语法糖,各种多态构造器,各种继承设计导致针对 Java 的序列化框架也做得非常复杂,要考虑的情况有很多很多。每次 Java 升级,如果对类结构有做改动或者加入了新特性,那么序列化框架就都需要改来兼容。这样会阻碍 Java 的发展,于是设计出了 Record 这个专门用来存储数据的类型。经过上一节的分析我们知道,Record 类

2022-01-05 21:46:41 319

原创 Netty究竟是怎么运行的-连接流程的深入剖析

java nio非常难驾驭,就像我在上一篇文章中处理的文件服务器那样,也只是考虑并处理了部分情况,然而可能还是要出错,可扩展性也不好。netty就是这样的一种框架,让Java nio变得:网络服务器编程变得容易 可用性变高 扩展性好netty的基本工作方式那么,Netty究竟是怎么运行的? Netty使用多Reactor多线程模型。这种模型是把Reactor线程拆分了mainReactor和subReactor两个部分,mainReactor只处理连接事件,读写事件交给subR...

2022-01-05 15:59:06 177

原创 10个人9个答错,另外1个只对一半:数据库的锁,到底锁的是什么?

在MySQL数据库中,为了解决并发问题,引入了很多的锁机制,很多时候,数据库的锁是在有数据库操作的过程中自动添加的。所以,这就导致很多程序员经常会忽略数据库的锁机制的真正的原理。比如,我经常在面试中会问候选人,你知道MySQL Innodb的锁,到底锁的是什么吗?关于这个问题的回答,我听到过很多种,但是很少有人可以把他回答的很完美。因为想要回答好这个问题,需要对数据库的隔离级别、索引等都有一定的了解才行。MySQL Innodb的锁的相关介绍,在MySQL的官方文档(https://dev.my

2022-01-05 13:50:15 47

转载 MyBaits中#{}和${}的真正区别,${}的使用场景,#{}如何防止注入

一、MyBatis中${}和#{}的区别1.1${}和#{}演示数据库数据:dao接口:List<User> findByUsername(String username);List<User> findByUsername2(String username);Mapper.xml:<!-- 使用#{} --><select id="findByUsername" parameterType="java.lang.Stri

2022-01-05 13:29:00 278

原创 JDK中的BitMap实现之BitSet源码分析

前提本文主要内容是分析JDK中的BitMap实现之java.util.BitSet的源码实现,基于JDK11编写,其他版本的JDK不一定合适。什么是BitMapBitMap,直译为位图,是一种数据结构,代表了有限域中的稠集(Dense Set),每一个元素至少出现一次,没有其他的数据和元素相关联。在索引,数据压缩等方面有广泛应用(来源于维基百科词条)。计算机中1 byte = 8 bit,一个比特(bit,称为比特或者位)可以表示1或者0两种值,通过一个比特去标记某个元素的值,而KEY或者IND

2022-01-04 15:31:29 108

原创 【实战】聊聊幂等设计

前言大家好,今天我们一起来聊聊幂等设计。什么是幂等 为什么需要幂等 接口超时,如何处理呢? 如何设计幂等? 实现幂等的8种方案 HTTP的幂等1. 什么是幂等?幂等是一个数学与计算机科学概念。在数学中,幂等用函数表达式就是:f(x) = f(f(x))。比如求绝对值的函数,就是幂等的,abs(x) = abs(abs(x))。 计算机科学中,幂等表示一次和多次请求某一个资源应该具有同样的副作用,或者说,多次请求所产生的影响与一次请求执行的影响效果相同。2. 为什么需要幂等

2022-01-04 15:19:31 1400

原创 在Java中为什么不同的返回类型不算方法重载?

方法重载是指在同一个类中,定义了多个同名方法,但每个方法的参数类型或者是参数个数不同就是方法重载。 比如以下 4 个 method 方法就可以称之为方法重载,如下代码所示:public class OverloadExample { public void method() { // doSomething } public void method(String name) { // doSomething } public

2022-01-04 15:14:37 108

原创 猛刷《Java权威面试指南(阿里版)》,“金三银四”offer指定有你一份

假如“金九银十”过得匆匆忙忙不理想,那么,还有将近60天的样子即是“金三银四”,这次你准备好了吗?莫慌莫慌,“面试造火箭,工作拧螺丝” 说得不无道理,偶然从朋友那得到的这份Alibaba内部疯传《Java权威面试指南(阿里版)》堪称精品,或可能助你一臂之力,事半功倍!注:《Java权威面试指南(阿里版)》分七大部分:分布式、中间件、大数据与高并发、数据库、设计模式与实践、数据结构与算法、面试题举例等逐一攻克,迅速造火箭应对面试官!全文会一一详细展现,且如需源文档pdf进行深入学习的点赞+关注支持

2022-01-04 15:07:27 94

原创 你真的会给变量命名吗?

有读者看到标题就开始敲键盘了,我知道,命名不就是不能用 abc、123 命名,名字要有意义嘛,这有什么好讲的? 然而,即便懂得了名字要有意义,很多程序员依然无法逃离命名沼泽。不精准的命名什么叫精准? 废话不多说,CR 一段代码: public void processChapter(long chapterId) { Chapter chapter = this.repository.findByChapterId(chapterId); if (chapter == null)

2022-01-04 13:50:51 126

原创 不愧是 GitHub 上标星 120K 的手册,真细啊

今天日常摸鱼的时候在 GitHub 上发现了这份标星 120K 的 Java 手册(现已标星 129k),里面涵盖了 Java 所有的知识点,包括基础知识、Java 集合、JVM、多线程并发、spring 原理、微服务、Netty 与 RPC 、Kafka、日记、设计模式、Java 算法、数据库、Zookeeper、分布式缓存、数据结构等等,内容不多,只讲重点。为了帮助大家更好的学习,现将这份资料免费分享出来,希望对需要的小伙伴有帮助哦学习 Java

2021-12-31 19:39:17 4597

原创 一口气怼完12种@Transactional的失效场景

数据库事务是后端开发中不可缺少的一块知识点。Spring为了更好的支撑我们进行数据库操作,在框架中支持了两种事务管理的方式:编程式事务 声明式事务日常我们进行业务开发时,基本上使用的都是声明式事务,即为使用@Transactional注解的方式。常规使用时,Spring能帮我们很好的实现数据库的ACID(这里需要注意哦,Spring只是进行了编程上的事务,最终数据上的事务还是有数据库实现的)。但是,只要是人写的代码,就一定会有Bug。如果我们不了解@Transactional的失效场..

2021-12-31 19:22:59 3697 9

原创 怎么做到的?一年时间,从小白到进入阿里核心部门,“他”的逆袭之路

注明:这是一个励志老哥给我分享的个人经历,发本文的目的是为了让大家可以参考他的学习经历,提高自己的能力!当然人外有人天外有天,大神也别打我!再次说明,我只是为了能够帮助迷茫的兄弟们!接下来以他的第一视角为大家讲述他的经历。可能故事有点长,大家是想听故事还是直接听我讲我学了什么,怎么学习的。好吧,进入实验室的过程我就不细说了,最后选了两个人,一个就是我!!进去的第一个项目是做一个javase的桌面项目,我和同伴负责的是写界面。当时就觉得有机会写真正项目就已经很开心了,根本不考虑写什么,

2021-12-31 17:26:42 82

原创 去了家新公司,技术总监不让用 IntelliJ IDEA,想离职了。。

最近有个小伙伴微信和我说,新去的一家公司,技术团队全部规定要用的 Eclipse 开发,技术总监不让用 IntelliJ IDEA,付费也不行,说想离职了,问我该怎么办。首先听到这件事情的时候,我表示十分理解该公司技术总监的决定,虽然我没有做过技术总监,但在这件事情上面,我深有感触,因为我也有类似这样的经历,我也和他说了我的看法,他最后表示理解。以我的阅历做一个大概的衡量吧,目前的现状是,一些新人基本上大多是清一色的 IntelliJ IDEA,老人大多用的 Eclipse,有的甚至两者皆用。那

2021-12-31 16:31:33 2695 2

原创 Docker容器间网络互联原理,讲不明白算我输

目录一、今天我们要搞明白的实验 二、前置网络知识 2.1、docker默认为我们创建的网络 2.2、怎么理解docker0网桥 2.3、什么是veth-pair技术? 三、同一个局域网中不同主机的互联原理 四、容器网络互通原理 五、实验环境一、今天我们要搞明白的实验#如上红字所描述:同一个宿主机上的不同容器之间的网络如何互通的???二、前置网络知识#2.1、docker默认为我们创建的网络#我们安装完docker之后,docker daemon会为我们自动

2021-12-31 14:32:40 259

原创 「RocketMQ技术专题」帮你梳理RocketMQ/Kafka的选择理由及二者PK

前提背景大家都知道,市面上有许多开源的MQ,例如,RocketMQ、Kafka、RabbitMQ等等,现在Pulsar也开始发光,今天我们谈谈笔者最常用的RocketMQ和Kafka,想必大家早就知道二者之间的特点以及区别,但是在实际场景中,二者的选取有可能会范迷惑,那么今天笔者就带领大家分析一下二者之间的区别,以及选取标准吧!架构对比RocketMQ的架构RocketMQ由NameServer、Broker、Consumer、Producer组成,NameServer之间互不通信,Brok

2021-12-31 14:24:07 156

原创 生产服务GC调优实践基本流程总结

前言对Java虚拟机进行性能调优是一个非常宽泛的话题,在实践上也是非常棘手的过程。因为它需要一种系统的优化方法和清晰的优化期望。默认的JVM参数尝试在大多数情况下提供可接受的性能;但是,根据应用程序的行为和它所处的工作负载,默认值可能不会产生理想的结果。如果Java虚拟机没有按照预期运行就可能需要对应用程序进行基准测试并进行调优,以找到一组合适的 JVM参数。大多数情况下谈论的“JVM调优”都是在说“Java GC调优”,Java官方手册上关于HotSpot虚拟机下的第一个主题就是HotSpot V

2021-12-31 14:07:58 88

原创 一份“内卷”面试题兼答案,直接让我15k变成30k

我认为,对于 Java 面试以及进阶的最佳学习方法发过于刷题+博客+书籍+总结,前三者 LZ 将淋漓尽致地挥毫于这篇文章中,至于总结在于个人,实际上越到后面你会发现面试并不难,其次就是在刷题的过程中有没有去思考,刷题只是次之,这又是一个层次了,这里暂时不提后面再谈。我总结了一系列大厂面试中常问的面试技术点,深入解析以及答案,将为最近准备面试的各开发者去大厂保驾护航,何谓面试?我所理解的面试,它是一个过程,是不断沉淀、不断总结、善于传达自己的专业领域技术以及解决问题能力的过程。以下是 小编 总结的一些

2021-12-30 21:36:40 2724 2

原创 分布式接口幂等性、分布式限流(Guava 、nginx和lua限流)

一、接口幂等性接口幂等性就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额返发现多扣钱了,流水记录也变成了两条,这就没有保证接口的幂等性。幂等性的核心思想:通过唯一的业务单号保障幂等性,非并发的情况下,查询业务单号有没有操作过,没有则执行操作,并发情况下,这个操作过程需要加锁。1、

2021-12-30 21:12:11 130

原创 《MySQL》系列 - select 查询语句到底是怎么执行的?

mysql 作为一个关系型数据库,在国内使用应该是最广泛的。也许你司使用 Oracle、Pg 等等,但是大多数互联网公司,比如我司使用得最多的还是 Mysql,重要性不言而喻。事情是这样的,某天我司小胖问我执行select * from table,数据库底层到底发生了啥?从而我们得到数据呢?以下把我给问住了,为此我查阅了大量的书籍、博客。于是就有了这篇文章。假设现在我有张 user 表,只有两列,一列 id 自增的,一列 name 是 varchar 类型。建表语句是这样的:CREATE T

2021-12-30 20:39:50 141

原创 面试官:群聊消息的已读未读功能,你来设计一个?

一朋友和我讨论他前段时间面试某大公司的一题目 :企业IM比如企业微信、钉钉里面的群消息的有个已读未读的功能,发送者刚发出消息时,当前群里其他群成员都是未读状态,陆陆续续有人看了这个消息,这时候消息的详情变成x人已读,y人未读,如下图所示,有具体的已读未读列表(万恶的功能,看到同事or老板的消息不能假装没看到了),每条消息对应一个唯一的messageid(uint64_t),每个用户对应一个唯一的userid(uint64_t),应该如何保存这个消息对应的已读未读详情呢?图片我第一时间给出

2021-12-30 19:48:36 280

空空如也

空空如也

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

TA关注的人

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