自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

IT技术精选文摘

专注于Java架构知识分享,文章内容主要涵盖Java基础,底层原理,架构设计(高可用,高性能,消息,缓存等),Android移动开发等范围.

  • 博客(615)
  • 收藏
  • 关注

转载 后端思维篇:如何应用设计模式优化代码

若有收获,请记得分享和转发哦前言日常工作中,我们用得最多的设计模式,就是策略模式、工厂模式和模板方法模式啦。最近刚好用这几种模式优化了代码,所以今天跟大家聊聊,我是怎么优化的,思路是怎么样的。希望本文对大家有帮助哈。优化前伪代码的流程策略模式是如何应用进去的工厂设计模式是怎么使用的模板方法模式又是怎么应用进去的。唠叨几句1. 优化前伪代码流程大家先看下,优化前,原有代码的...

2022-05-29 08:00:46 96

转载 如何保障 MySQL 和 Redis 的数据一致性?

若有收获,请记得分享和转发哦如何保障 MySQL 和 Redis 的数据一致性?这个问题很早之前我就遇到过,但是一直没有仔细去研究,上个月看了极客的课程,有一篇文章专门有过讲解,刚好有粉丝也问我这个问题,所以感觉有必要单独出一篇。之前也看了很多相关的文章,但是感觉讲的都不好,很多文章都会去讲各种策略,比如(旁路缓存)策略、(读穿 / 写穿)策略和(写回)策略等,感觉意义真...

2022-05-28 08:00:51 63

转载 后端思想篇:设计好接口的36个锦囊!

若有收获,请记得分享和转发哦前言大家好,作为后端开发,不管是什么语言,Java、Go还是C++,其背后的后端思想都是类似的。后面打算出一个后端思想的技术专栏,主要包括后端的一些设计、或者后端规范相关的,希望对大家日常工作有帮助哈。我们做后端开发工程师,主要工作就是:如何把一个接口设计好。所以,今天就给大家介绍,设计好接口的36个锦囊。本文就是后端思想专栏的第一篇哈。1. ...

2022-05-27 08:00:01 85

转载 IO 模型

若有收获,请记得分享和转发哦在学习 Netty 框架前有一个话题是无法绕过的,就是:网络编程 IO 模型,听见 IO 模型有些同学就开始背八股文了,Java 常见 IO 模型有:同步阻塞 BIO同步非阻塞 NIO异步非阻塞 AIO今天跟大家一起重温下这些知识点。Socket 网络编程网络编程中有一个重要的概念就是:Socket,我们简单了解一下。在网络通信中,客户端和服务...

2022-05-26 08:00:23 75

转载 MySQL 去重的 3 种方法​,还有谁不会?

若有收获,请记得分享和转发哦在使用SQL提数的时候,常会遇到表内有重复值的时候,比如我们想得到 uv (独立访客),就需要做去重。在 MySQL 中通常是使用 distinct 或 group by子句,但在支持窗口函数的 sql(如Hive SQL、Oracle等等) 中还可以使用 row_number 窗口函数进行去重。举个栗子,现有这样一张表 task: ...

2022-05-25 08:00:33 303

转载 太极限了,JDK的这个BUG都能被我踩到

若有收获,请记得分享和转发哦之前遇到个文件监听变更的问题,刚好这周末有空研究了一番,整理出来分享给大家。从一次故障说起我们还是从故障说起,这样更加贴近实际,也能让大家更快速理解背景。有一个下发配置的服务,这个配置服务的实现有点特殊,服务端下发配置到各个服务的本地文件,当然中间经过了一个agent,如果没有agent也就无法写本地文件,然后由client端的程序监听这个配置...

2022-05-24 08:00:47 67

转载 刨根问底: Kafka 到底会不会丢数据?

若有收获,请记得分享和转发哦大家好,今天我们来聊聊Kafka 到底会不会丢数据呢?如果丢数据,究竟该怎么解决呢?只有掌握了这些, 我们才能处理好 Kafka 生产级的一些故障,从而更稳定地服务业务。认真读完这篇文章,我相信你会对Kafka 如何解决丢数据问题,有更加深刻的理解。这篇文章干货很多,希望你可以耐心读完。01 总体概述越来越多的互联网公司使用消息队列来支撑自己...

2022-05-23 08:00:38 235

转载 阿里一面:SQL 优化有哪些技巧?

若有收获,请记得分享和转发哦MySQL 相信大家一定都不陌生,但是不陌生不一定会用!会用不一定能用好!今天就带大家复习一个高频面试考点,SQL 优化有哪些技巧?当然这个还是非常有实用价值的,工作中你也一定用的上。如果应用得当,升职加薪,指日可待1、创建索引一定要记得创建索引,创建索引,创建索引重要的事说三遍!执行没有索引的 SQL 语句,肯定要走全表扫描,慢是肯定的。这种...

2022-05-22 08:00:56 70

转载 干掉 if else 辣,Java8 判空新写法!

若有收获,请记得分享和转发哦在文章的开头,先说下NPE问题,NPE问题就是,我们在开发中经常碰到的NullPointerException.假设我们有两个类,他们的UML类图如下图所示在这种情况下,有如下代码user.getAddress().getProvince();这种写法,在user为null时,是有可能报NullPointerException异常的。为了解决这...

2022-05-21 08:00:21 169

转载 两万字详解!InnoDB锁专题!

若有收获,请记得分享和转发哦前言本文将跟大家聊聊InnoDB的锁。本文比较长,包括一条SQL是如何加锁的,一些加锁规则、如何分析和解决死锁问题等内容,建议耐心读完,肯定对大家有帮助的。为什么需要加锁呢?InnoDB的七种锁介绍一条SQL是如何加锁的RR隔离级别下的加锁规则如何查看事务加锁情况死锁案例分析1. 为什么需要加锁?数据库为什么需要加锁呢?在日常生活中,如果你心情...

2022-05-20 08:00:39 64

转载 面试官:说说 MyBatis 二级缓存?关联刷新实现?我懵B了。。

若有收获,请记得分享和转发哦1、MyBatis缓存介绍Mybatis提供对缓存的支持,但是在没有配置的默认情况下,它只开启一级缓存,二级缓存需要手动开启。一级缓存只是相对于同一个SqlSession而言。也就是针对于同一事务,多次执行同一Mapper的相同查询方法,第一查询后,MyBatis会将查询结果放入缓存,在中间不涉及相应Mapper的数据更新(Insert,Up...

2022-05-19 08:00:46 120

转载 Redis 为何使用近似 LRU 算法淘汰数据,而不是真实 LRU?

若有收获,请记得分享和转发哦我们知道 Redis 缓存满了之后能通过淘汰策略删除数据腾出空间给新数据。淘汰策略如下所示:redis内存淘汰设置过期时间的 keyvolatile-ttl、volatile-random、volatile-lru、volatile-lfu这四种策略淘汰的数据范围是设置了过期时间的数据。所有的 keyallkeys-lru、allkeys-r...

2022-05-18 08:00:12 93

转载 Objects.equals有坑

若有收获,请记得分享和转发哦前言最近review别人代码的时候,发现有个同事,在某个业务场景下,使用Objects.equals方法判断两个值相等时,返回了跟预期不一致的结果,引起了我的兴趣。原本以为判断结果会返回true的,但实际上返回了false。记得很早之前,我使用Objects.equals方法也踩过类似的坑,所以有必要把这个问题记录下来,分享给大家。到底怎么回事...

2022-05-17 08:00:35 59

转载 一定要弄懂的MySQL复制原理~

若有收获,请记得分享和转发哦业务需要上线,所以除了表和索引的结构设计之外,你还要做好高可用的设计。因为在真实的生产环境下,如果发生物理硬件故障,没有搭建高可用架构,会导致业务完全不可用。而这在海量并发访问的互联网业务中完全不敢想象。所以除了业务架构,还要做好可用性的架构设计。今天我们就来学习 MySQL 高可用架构中最基础、最为核心的内容:MySQL 复制(Replica...

2022-05-16 08:00:00 120

转载 多线程批量拆分 List 导入数据库!

若有收获,请记得分享和转发哦一、前言前两天做了一个导入的功能,导入开始的时候非常慢,导入2w条数据要1分多钟,后来一点一点的优化,从直接把list怼进Mysql中,到分配把list导入Mysql中,到多线程把list导入Mysql中。时间是一点一点的变少了。非常的爽,最后变成了10s以内。下面就展示一下过程。二、直接把list怼进Mysql使用mybatis的批量导入操作...

2022-05-15 08:00:00 116

转载 异步神器CompletableFuture:让你的代码免受阻塞之苦!

若有收获,请记得分享和转发哦今天给大家带来JDK8的神器CompletableFuture,通过阅读本篇文章你将了解到:CompletableFuture的使用CompletableFure异步和同步的性能测试已经有了Future为什么仍需要在JDK1.8中引入CompletableFutureCompletableFuture的应用场景对CompletableFutur...

2022-05-14 08:00:00 200

转载 MySQL删除数据的三种方式!!!(有超级大坑)

若有收获,请记得分享和转发哦行数据批量delete时,InnoDB如何处理自增ID的?这里有一个潜在的大坑。整个实验步骤如上图:第一步:建表,设定自增列;第二步:指定id=1插入,锚定第一行是id是1;第三步:不指定id,依赖自增机制,插入3行;画外音:此时id应该变为2,3,4了?第四步:delete删除所有记录;画外音:坑就容易出在这里。第五步:指定id=0插入;第六...

2022-05-13 08:00:00 772

转载 几道高频的JVM面试题

若有收获,请记得分享和转发哦前言大家好,整理了几道高频的JVM面试题,小伙伴们加油呀!JVM内存为什么要分成新生代,老年代新生代中为什么要分为Eden和SurvivorJVM中一次完整的GC流程是怎样的CMS收集器和G1收集器的区别JVM 调优CPU飙升如何排查1. JVM内存为什么要分成新生代,老年代?1.1 JVM共享内存划分共享内存区 = 持久代 + 堆(jdk1....

2022-05-12 08:00:00 69

转载 对线面试官:MySQL 事务、锁和MVCC

若有收获,请记得分享和转发哦面试官:你是怎么理解InnoDB引擎中的事务的?候选者:在我的理解下,事务可以使「一组操作」要么全部成功,要么全部失败候选者:事务其目的是为了「保证数据最终的一致性」。候选者:举个例子,我给你发支付宝转了888块红包。那自然我的支付宝余额会扣减888块,你的支付宝余额会增加888块。候选者:而事务就是保证我的余额扣减跟你的余额增添是同时成功或者...

2022-05-11 08:00:00 92

转载 照着敲一遍,保证你彻底掌握 Stream ~

若有收获,请记得分享和转发哦一、概述Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。也可以使用 Stream API 来并行执行操作。简而言之,Stream API 提供了一种高效且易于使用的处理数据...

2022-05-10 08:00:00 62

转载 7000 字 | 20 图 | 一文带你搭建一套 ELK Stack 日志平台

若有收获,请记得分享和转发哦前言最近在折腾 ELK 日志平台,它是 Elastic 公司推出的一整套日志收集、分析和展示的解决方案。专门实操了一波,这玩意看起来简单,但是里面的流程步骤还是很多的,而且遇到了很多坑。在此记录和总结下。本文亮点:一步一图、带有实操案例、踩坑记录、与开发环境的日志结合,反映真实的日志场景。日志收集平台有多种组合方式:ELK Stack 方式:E...

2022-05-09 08:00:00 82

转载 面试官:Spring MVC 如何保证 Controller 的并发安全性?面试必问!

若有收获,请记得分享和转发哦单例模式(Singleton)是程序设计中一种非常重要的设计模式,设计模式也是Java面试重点考察的一个方面。面试经常会问到的一个问题是:SpringMVC中的Controller是单例还是多例,很多同学可能会想当然认为Controller是多例,其实不然。以上代码运行以后,每次请求 http:// localhost:8080 / addNu...

2022-05-08 08:00:00 71

转载 万字长文,聊聊架构师图谱 & 消息队列

若有收获,请记得分享和转发哦1. 概述“架构师图谱”是一个很宏大的命题,特别是优秀的架构师自身也是“由点到面再到图”,一点点成长积累起来,尝试写这系列文章的目的更多的是结合自身的一些经验和理解,来解读工程师和架构师所应具备的技能模型,这里会更偏向于后端技能,依赖于开源技术、云原生或者其他第三方服务。重点介绍一些技术栈、设计理念和适应场景,这些可以作为我们选型时的依据。所谓...

2022-05-07 08:00:00 86

转载 面试官:有一种数据类型,Redis 要存两次,为什么?

若有收获,请记得分享和转发哦前言在 Redis 中,有一种数据类型,当在存储的时候会同时采用两种数据结构来进行分别存储,那么 Redis 为什么要这么做呢?这么做会造成同一份数据占用两倍空间吗?五种基本类型之集合对象Redis 中的集合对象是一个包含字符串类型元素的无序集合,集合中元素唯一不可重复。集合对象的底层数据结构有两种:intset 和 hashtable。内部通...

2022-05-06 08:00:00 73

转载 100 行代码透彻解析 RPC 原理

若有收获,请记得分享和转发哦引 言本文主要论述的是“RPC 实现原理”,那么首先明确一个问题什么是 RPC 呢?RPC 是 Remote Procedure Call 的缩写,即,远程过程调用。RPC 是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而开发人员无需额外地为这个交互编程。值得注意是,两个或多个应用程序都分布在不同的服务器上,它...

2022-05-05 08:00:00 87

转载 MySQL 怎么用索引实现 group by?

若有收获,请记得分享和转发哦我们用 explain 分析包含 group by 的 select 语句时,从输出结果的 Extra 列经常可以看到Using temporary; Using filesort。看到这个,我们就知道 MySQL 使用了临时表来实现 group by。使用临时表实现 group by,成本高,执行慢。如果能够利用索引中记录已经排好序的特性,...

2022-05-04 08:00:00 1317

转载 Spring Boot + OAuth2.0 实现微信扫码登录,这才叫优雅!!

若有收获,请记得分享和转发哦微信开放平台:微信扫码登录功能官方文档:https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html1. 授权流程说明微信OAuth2.0授权登录让微信用户使用微信身份安全登录第三方应用或网站,在微信用户授权登录已接入微信OAu...

2022-05-03 08:00:00 380

转载 电商系统中常见的9大坑!库存超卖、重复下单、物流单ABA...

若有收获,请记得分享和转发哦一、避免重复下单用户快速点了两次 “提交订单” 按钮,浏览器会向后端发送两条创建订单的请求,最终会创建两条一模一样的订单。解决方案:解决方案就是采用幂等机制,多次请求和一次请求产生的效果是一样的。方案一:利用数据库自身特性 “主键唯一约束”,在插入订单记录时,带上主键值,如果订单重复,记录插入会失败。操作过程:引入一个服务,用于生成一个“全局...

2022-05-02 07:55:00 228

转载 大事务问题到底要如何解决?

若有收获,请记得分享和转发哦前言最近有个网友问了我一个问题:系统中大事务问题要如何处理?正好前段时间我在公司处理过这个问题,我们当时由于项目初期时间比较紧张,为了快速完成业务功能,忽略了系统部分性能问题。项目顺利上线后,专门抽了一个迭代的时间去解决大事务问题,目前已经优化完成,并且顺利上线。现给大家总结了一下,我们当时使用的一些解决办法,以便大家被相同问题困扰时,可以参考...

2022-05-01 08:00:00 293

转载 亿级流量架构,服务器如何扩容?写得太好了!

若有收获,请记得分享和转发哦为什么要扩容说人话就是, 无论如何优化性能,能达到的最大值是一定的,对于一个用户量大的应用,可以对服务器进行各种优化,诸如限流、资源隔离,但是上限还是在那里,这时候就应该改变我们的硬件,例如使用更强的CPU、更大的内存,在前文中举了一个学生食堂打饭的例子,如果学生多了,可以通过令牌桶算法优先给高三学生令牌打饭,但是如果高三的学生还是很多呢?那就...

2022-04-30 08:00:00 94

转载 聊聊高可用的 11 个关键技巧

若有收获,请记得分享和转发哦大型互联网架构设计,讲究一个四件套组合拳玩法,高并发、高性能、高可用、高扩展。如果能掌握这四个方面,应付大厂面试以及日常工作中的架构方案设计基本不是什么难题。今天,Tom哥就带大家学习下高可用都有哪些设计技巧?一、系统拆分有句古话 "牵一发而动全身"。面对一个庞然大物,如果没有一个合理的分工分层。任何一个小小失误都会被无限放大,酿成巨大灾难。万...

2022-04-29 08:00:00 72

转载 TCP/IP 协议竟然有这么多漏洞。。。

若有收获,请记得分享和转发哦据2020年上半年中国互联网网络安全监测数据分析报告显示,恶意程序控制服务器、拒绝服务攻击(DDoS)等网络攻击行为有增无减。时至今日,网络攻击已经成为影响网络信息安全、业务信息安全的主要因素之一。网络攻击是指利用网络存在的漏洞和安全缺陷对网络系统的软硬件及其系统数据进行攻击的行为。TCP/IP协议作为网络的基础协议,从设计之初并没有考虑到网络...

2022-04-28 08:00:00 184

转载 大意了,一次MySQL分页导致的线上事故...

若有收获,请记得分享和转发哦今天给大家分享个生产事故,一个由于MySQL分页导致的线上事故,事情是这样的~背景一天晚上10点半,下班后愉快的坐在在回家的地铁上,心里想着周末的生活怎么安排。突然电话响了起来,一看是我们的一个运维同学,顿时紧张了起来,本周的版本已经发布过了,这时候打电话一般来说是线上出问题了。果然,沟通的情况是线上的一个查询数据的接口被疯狂的失去理智般的调用...

2022-04-27 08:00:00 85

转载 Sentinel 万字教程

若有收获,请记得分享和转发哦限流作为现在微服务中常见的稳定性措施,在面试中肯定也是经常会被问到的,我在面试的时候也经常喜欢问一下你对限流算法知道哪一些?有看过源码吗?实现原理是什么?第一部分先讲讲限流算法,最后再讲讲源码的实现原理。限流算法关于限流的算法大体上可以分为四类:固定窗口计数器、滑动窗口计数器、漏桶(也有称漏斗,英文Leaky bucket)、令牌桶(英文Tok...

2022-04-25 08:00:00 63

转载 面试官问我instanceof关键字是如何实现的?结果被我一篇论文唬住了!

若有收获,请记得分享和转发哦小二那天去面试,碰到了这个问题:“instanceof 关键字是如何实现的?”面试官希望他能从底层来分析一下,结果小二没答上来,就来问我。我唯唯诺诺,强装镇定,只好把 R 大的一篇回答甩给了他,并且叮嘱他:“认认真真看,玩完后要是还不明白,再来问我。。。” ...

2022-04-24 08:00:00 46

转载 招银网络一面:@Autowired 和 @Resource 的区别是什么?

若有收获,请记得分享和转发哦下面是正文。Spring 内置的@Autowired以及 JDK 内置的@Resource和@Inject都可以用于注入 Bean。AnnotaionPackageSource@Autowiredorg.springframework.bean.factorySpring [email protected]...

2022-04-23 08:00:00 5480

转载 如何优雅地处理重复请求(并发请求)

若有收获,请记得分享和转发哦对于一些用户请求,在某些情况下是可能重复发送的,如果是查询类操作并无大碍,但其中有些是涉及写入操作的,一旦重复了,可能会导致很严重的后果,例如交易的接口如果重复请求可能会重复下单。重复的场景有可能是:黑客拦截了请求,重放前端/客户端因为某些原因请求重复发送了,或者用户在很短的时间内重复点击了网关重发….本文讨论的是如何在服务端优雅地统一处理这种...

2022-04-22 08:00:00 26

转载 后端必备:如何排查问题以及jvm调优思路

若有收获,请记得分享和转发哦大家好,今天跟大家就CPU、磁盘、网络及内存方面的问题,聊聊如何排查和调优。CPU过高,怎么排查问题linux内存磁盘IO网络IOjava 应用内存泄漏和频繁 GCjava 线程问题排查常用 jvm 启动参数调优linux CPU 过高,怎么排查问题 ...

2022-04-21 08:00:00 160

转载 《面试八股文》之 JVM 20卷

若有收获,请记得分享和转发哦「《面试八股文》之 JVM 20卷」它来了,整理大部分经常会问到的考点,整整 20 问,当然,moon 给出的答案也是相当丰富的,虽然只有 20 问,但是本文足足有 1W 多字,这也是 moon 想告诉大家的,就在面试的时候也需要「学会拓展」,不要面试官问什么你就只回答什么,象征性的扩展开来,要让面试官能知道,你并不是个只会背八股文的人,「知...

2022-04-20 08:00:00 67

转载 咳嗽/胸闷/痰多/咽炎?快用四大南药之一化橘红,一招帮你轻松解决!

最近有朋友和我说家里的老爸嗜烟如命本来就已经有很严重的慢性咽炎加之最近天气干燥,身体情况每况愈下真是让人操碎了心当得知我正在做的一款对慢性咽炎有奇效、以及有醒酒解毒等多种修复功能于一体的神奇产品广东化州市的化橘红马上让我给他介绍介绍CCTV化橘红专题报道化橘红的前世今生因为化橘红盛产在广东化州有些地方朋友可能不知道化橘红种植于南北朝时期(距今约1500年前)在明朝年间被钦...

2022-04-18 08:00:00 288

空空如也

空空如也

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

TA关注的人

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