自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 字符串拼接还在用StringBuilder?快试试StringJoiner吧,真香

来源:jianshu.com/p/469fe8fdd3be为什么会新增这样一个string辅助类?原有的stringbuilder太死板,不支持分割,如果想让最终的字符串以逗号隔开,需要这样写StringBuilder sb = new StringBuilder();IntStream.range(1,10).forEach(i->{ sb.append(i+""); if( i < 10){ sb.append(",") }...

2022-01-25 19:43:23 160

原创 鬼知道发生了什么?痛述阿里Java岗5轮技术面经历,险幸上岸

写在前面又到了收割Offer的季节,你准备好了吗?曾经的我,横扫各个大厂的Offer。还是那句话:进大厂临时抱佛脚是肯定不行的,一定要注重平时的总结和积累,多思考,多积累,多总结,多复盘,将工作经历真正转化为自己的工作经验。面经分享今天给大家分享一个面试大厂的完整面经,小伙伴们可以对照下,这些面试题自己是否都会了呢?同时后面还整理了这些问题的一套面试解析文档及架构学习笔记资料,有需要的小伙伴麻烦转发后仅需留意文末!一轮技术面(90分钟)hashmap和hashtabl

2022-01-25 17:23:40 191 1

原创 不是吧,不会还不懂Zookeeper的watcher机制吧,一文深入源码分析

我们可以使用 zookeeper 作为注册中心来实现服务的注册与发现,curator 框架提供了 curator-x-discovery 扩展实现了开箱即用的服务注册发现,但更多时候我们还是选择自己去实现,那这个时候我们需要额外关注 zookeeper 的 1 个特性,即 wathcer。在微服务场景中,watcher 机制主要提供了服务通知功能,比如 Instance1 这个实例在 Service1 服务节点下注册了一个 emphemeral 子节点后,它的某个服务消费者根据依赖配置在 Service

2022-01-25 16:17:02 138

原创 深度掌握 Java Stream 流操作,让你的代码高出一个逼格

概念Stream将要处理的元素集合看作一种流,在流的过程中,借助Stream API对流中的元素进行操作,比如:筛选、排序、聚合等。Stream` 的操作符大体上分为两种:`中间操作符`和`终止操作符中间操作符对于数据流来说,中间操作符在执行指定处理程序后,数据流依然可以传递给下一级的操作符。中间操作符包含8种(排除了parallel,sequential,这两个操作并不涉及到对数据流的加工操作):map(mapToInt,mapToLong,mapToDouble)

2022-01-25 15:30:13 363

原创 超赞:不愧是“阿里内部Redis学习笔记”从头到尾,全是精华

近几年,随着移动互联网的飞速发展,我们享受着整个社会的技术进步带来的便利,但同时也给从业者带来了如何保证项目的高并发、低延时的技术挑战,相应的互联网技术也随之发生了重大变革,NoSQL技术得到了蓬勃的发展。Redis作为基于键值对的NoSQL数据库,具有高性能、丰富的数据结构、持久化、高可用、分布式等特性,同时Redis本身非常稳定,已经得到业界的广泛认可和使用。掌握Redis已经逐步成为开发和运维人员的必备技能之一。基于上述情况,本次将给大家分享我的珍藏《阿里内部Redis学习笔记》这本笔记对Re

2022-01-25 14:33:41 82

原创 并发编程案例:高性能限流器Guava RateLimiter

Guava 是Google 开源的 Java 类库,提供了一个工具类 RateLimiter。我们先来看看 RateLimiter的使用,让你对限流有个感官的印象。假设我们有一个线程池,它每秒只能处理两个任务,如果提交的任务过快,可能导致系统不稳定,这个时候就需要用到限流。在下面的示例代码中,我们创建了一个流速为 2 个请求 / 秒的限流器,这里的流速该怎么理解呢?直观地看,2 个请求 / 秒指的是每秒最多允许 2 个请求通过限流器,其实在Guava中,流速还有更深一层的意思:是一种匀速的概念,2 个请

2022-01-25 13:55:15 216

原创 系统性能百倍提升典型案例分析:高性能队列Disruptor

Disruptor 是一款高性能的有界内存队列,目前应用非常广泛,Log4j2、SpringMessaging、HBase、Storm 都用到了 Disruptor,那 Disruptor 的性能为什么这么高呢?Disruptor 项目团队曾经写过一篇论文,详细解释了其原因,可以总结为如下:内存分配更加合理,使用 RingBuffer 数据结构,数组元素在初始化时一次性全部创建,提升缓存命中率;对象循环利用,避免频繁 GC。 能够避免伪共享,提升缓存利用率。3. 采用无锁算法,避免频繁加锁、解锁的性能

2022-01-25 13:50:34 100

原创 直接起飞,LeetCode官方推出算法面试指导手册(代码版)限时开源

什么是LeetCode?leetcode是个题库,里面有很多编程多面试的题目,可以在线编译运行。难度比较高。如果自己能做出来,对面大公司很有帮助。建议一次只针对一种题型进行训练,如数组、链表、二叉树、回溯、动态规划,这样效果会更好。做leetcode肯定是有帮助的。我今年四月面腾讯的时候,面试官就问了我一道leetcode上的原题,让我写一个数组右移k位的程序。然后我大学做了两年ACM吧,感觉leetcode上的题目基本都比ACM要简单一些。程序员的葵花宝典,当代内卷的万恶之源今天

2022-01-24 20:31:07 73

原创 阿里Java二面:说说Spring MVC执行流程及原理?这样聊能吊打面试官

面试找虐博主之前每次去面试必问的问题:“讲一下spring mvc的执行流程以及常用组件的作用”;记得第一次和面试官说了大概的流程是这样的:“服务器收到一个请求后会先去HandlerMapping中匹配url,找到url之后用HandlerAdapter 适配器去执行这个控制器(controller层),执行完之后返回一个modelAndView,然后通过视图解析器ViewResolver解析后得到一个view对象,这个view就是渲染好的jsp页面,返回给前端页面”;(等了一会看着我)面试官:“

2022-01-24 17:15:20 448

原创 面试官:熟悉Redis,那聊聊Redis主从复制?我画了13张图讲明白了

怎么实现高可用呢? 最重要的一点就是冗余数据啊,redis 是通过主从复制来实现数据的冗余存储,这样在主redis down调用之后,切换到从就可以了,这样就实现了故障转移,保证了高可用了,今天我们主要来讲主从复制,至于主down掉之后,怎么切换到从,我们会在下篇再聊。怎么做备份我想在再看redis 主从复制之前,有必要看下下面这三个基础概念。备份分为冷备和热备,如果再深入一些还有多活。热备:由主库或者说是主数据中心承担业务流量,同时会实时的备份数据到从库或者从的数据中心。如下图。

2022-01-24 17:03:53 91

原创 Alibaba最新神作,耗时182天肝出来1015页分布式全栈手册太香了

前言到底什么是分布式?这个话题一直以来就在各大平台论坛上被热议。一千个读者里面就有一千个哈姆雷特。官方这边给出的结论是:分布式就是将相同或相关的程序运行在多台计算机上,从而实现特定目标的一种计算方式。而从分布式技术的起源来看,随之诞生的分布式系统就是用更多的机器,处理更多的数据和更复杂的任务。一个篱笆三个桩,一个好汉三个帮。虽然分布式系统让更多的服务器进行协作,提供了更强大的数据处理能力,解决了单机系统无法处理的问题;但是随之而来也带来了许多的挑战。有句老话说得好:如果你的系统可以用单机实现,就不要

2022-01-24 16:28:28 116 1

原创 Spring Cloud Eureka源码分析之心跳续约及自我保护机制

Eureka-Server是如何判断一个服务不可用的?Eureka是通过心跳续约的方式来检查各个服务提供者的健康状态。实际上,在判断服务不可用这个部分,会分为两块逻辑。Eureka-Server需要定期检查服务提供者的健康状态。 Eureka-Client在运行过程中需要定期更新注册信息。Eureka的心跳续约机制如下图所示。客户端在启动时, 会开启一个心跳任务,每隔30s向服务单发送一次心跳请求。 服务端维护了每个实例的最后一次心跳时间,客户端发送心跳包过来后,会更新这个心跳

2022-01-24 16:05:53 8301

原创 JDK中Lambda表达式的序列化与SerializedLambda的巧妙使用

前提笔者在下班空余时间想一想Javassist为核心基于JDBC写一套摒弃反射调用的轻量级的ORM框架,过程中有研读mybatis、tk-mapper、mybatis-plus和spring-boot-starter-jdbc的源代码,其中发现了mybatis-plus中的LambdaQueryWrapper可以获取当前调用的Lambda表达式中的方法信息(实际上是CallSite的信息),在这里做一个完整的记录。本文基于JDK11编写完,其他版本的JD...

2022-01-24 15:48:02 194

原创 刨根问底:Kafka 到底会不会丢数据?

那么 Kafka 到底会不会丢数据呢?如果丢数据,究竟该怎么解决呢?只有掌握了这些, 我们才能处理好 Kafka 生产级的一些故障,从而更稳定地服务业务。认真读完这篇文章,我相信你会对Kafka 如何解决丢失数据问题,有更加深刻的理解。这篇文章干货很多,希望你可以耐心读完。01 总体概述越来越多的互联网公司使用消息队列来支撑自己的核心业务。由于是核心业务,一般都会要求消息传递过程中最大限度地做到不丢失,如果中间环节出现数据丢失,就会引来用户的投诉,年底绩效就要背锅了。那么使用

2022-01-24 15:40:30 313

原创 无语言表,阿里这份Github星标63.7K的Redis高级笔记简直不要太细

Redis大家都知道Redis的业务范围是非常广的,但是对于刚入行的小伙伴来说可能也就知道个缓存跟分布式锁。因为Redis的很多功能在一些小企业里,根本是用不到的,得等到并发量到了一定的程度,系统扛不住了,才会用到Redis那些高级的功能。下面LZ就带大家来看看,Redis到底能干些啥:以上图为例,上面的例举的就是Redis的最常用的核心知识点,掌握了上面这些,面试跟日常开发肯定是够用了,不过你要是想真正的精通Redis这个技术栈,只会上面这些肯定是不够的!如果你自诩自己已经掌握了Redis基础

2022-01-24 14:51:40 5775

原创 慌了,CTO叫我推荐几款优秀的程序员一定要知道的画图工具

大家好,我是小林。最近很多读者私信问我,我图解文章中用到的画图工具、思维导图工具、代码贴图工具是什么?我在很早的时候提到过,不过时间有点久了,而且比较零散,可能现在大部分读者还不知道。我今天统一整理一下,我图解文章用到的各类工具吧,这些工具我用了一年多了,没发现什么问题,所以是值得推荐的。我在这里先列一下:画图工具:draw.io 思维导图工具:xmind/effie 代码贴图工具:carbon 文章编写工具:有道云笔记/typora/effie接下来,详细聊一聊。画图工具

2022-01-24 13:54:36 153

原创 来了,大话分布式:分布式事务(CAP、两阶段提交、三阶段提交)

1 关于分布式系统1.1 介绍我们常见的单体结构的集中式系统,一般整个项目就是一个独立的应用,所有的模块都聚合在一起。明显的弊端就是不易扩展、发布冗重、服务治理不好做。所以我们把整个系统拆分成若干个具备独立运行能力的计算机服务的集合,而从用户的角度看,是一个完整的系统,但实际上,它是一个分布式服务的集合。分布式系统主要从以下几个方面进行裂变:应用可以从业务领域拆分成多个module,每个module还可以再按项目结构分成接口层、业务层、数据访问层;当然也可以按访问入口进行拆分,如移动、桌

2022-01-24 13:49:03 312

原创 后悔呀,自从用了SkyWalking分布式链路追踪,现在睡得越来越香了

本篇文章介绍链路追踪的另外一种解决方案Skywalking,文章目录如下:什么是Skywalking?上一篇文章介绍了分布式链路追踪的一种方式:Spring Cloud Sleuth+ZipKin,这种方案目前也是有很多企业在用,但是作为程序员要的追逐一些新奇的技术,Skywalking作为后起之秀也是值得大家去学习的。skywalking是一个优秀的国产开源框架,2015年由个人吴晟(华为开发者)开源 ,2017年加入Apache孵化器。短短两年就被Apache收入麾下,实力可见一斑.

2022-01-23 22:02:45 3894

原创 不可想象,GitHub上惊现阿里手记,竟真的把微服务、容器和K8S讲清楚了

微服务经过了长足的发展,在每个阶段所产生的信息都很多。在信息爆炸的当今,如若找到一本将信息梳理得井井有条的好书,将是提升学习效率的最佳途径。而今天小编分享的这份“微服务架构深度解析原理、实践与进阶”就是帮助小伙伴们提升学习效率的最佳途径。本书层次分明,分为原理篇、实践篇和进阶篇,适用于广泛的人群。理论篇对新手入门非常友好,实践篇非常适合在工作中解决实际问题的开发者,进阶篇则面向响应式编程和云原生架构,是高手的必备技能。内容展示原理篇第1章微服务概述第2章微服务的采用前提.

2022-01-23 22:00:06 472 1

原创 太离奇了,我实在是憋不住了

大家好,我是吴师兄,周末快乐,分享个有趣的编程问题。这就是一个求阶乘的问题,大家刚刚开始学编程的时候应该都写过这样的程序。一个求阶乘的问题,还能玩出什么样的花儿来?我在回答区看到了一个非常有趣的回答,把各种版本的代码都举例了出来,一个比一个还离谱,后面的代码,甚至让怀疑是我学过的代码吗?分享给大家图个乐,下面是回答正文,答主:小白白。数学家版本:(简单利索,深藏功与名)#include <iostream>#include <cmath>in

2022-01-23 21:52:23 99

原创 追溯volatile的前世今生

什么是volatile?volatile可以使得在多处理器环境下保证了共享变量的可见性,那么到底什么是可见性呢?大家有没有思考过这么一个问题,在单线程的环境中,如果向一个变量先写入一个值,然后在没有写干扰的情况下读取这个变量,那么读到变量的值应该是之前写入的值,这本来就应该是一个很正常的事,但是在多线程环境下,读和写出现在不同线程中时,可能会出现读线程不能及时读取到其他线程写入的最新值,这就是所谓的可见性为了实现跨线程写入的内存可见性,就必须采用一些机制来实现,volatile就是这么一种机制

2022-01-23 21:50:00 4587

原创 世界级运维专家巨作:793页Linux实战手记,GitHub点击量已超千万

前言:我们知道Linux这玩意儿是在计算机上面运行的,所以说Linux就是一组软件。问题是这个软件是操作系统还是应用程序? Linux可以在哪些种类的计算机硬件上面运行?而Linux源自哪里?为什么使用Linux还不用花钱?这些我们都得先来谈—谈! 免得下次人家问你,为什么复制软件不会违法时,你会答不出来!下面大家一起来看一下:这本书是颇具知名度的 Linux书籍最新版,全面且详细地介绍了Linux操作系统。内容丰富全面,基本概念的讲解非常细致,深入浅出。各种功能和命令的介绍,都配以大量的实例操

2022-01-23 21:45:19 115

原创 Redis实现分布式锁可没有你想象的那么简单

讲道理,这一篇不管是面试还是实际工作的试用都是非常有必要了解并且弄懂得,但是要看懂这篇的话需要的基础是懂好多我以前弄的一些知识点,如果好哥哥们在看的过程中有不熟悉的点可以看 Redis 高级进阶知识点大全,基本上 Reids 的东西都有了。觉得不错的话给猛男我点个赞加下关注啥的。普通锁首先锁是置于可启闭的器物上,以钥匙或暗码开启,像门锁、密码锁等。从我们日常生活中看,正常每个门都会有一把锁(不正常的就不要杠了),如果没有配置锁的话,什么样的人都可以进去(天下大同就是这种情况吧)。很显然这样是很不安全

2022-01-23 21:38:16 130

原创 字节跳动这份面试题,你能打几分

最近这段时间,身边的一个朋友刚刚拿到字节跳动的offer,一起来复盘一下他的offer之路,希望能给正在看机会的你有所帮助。这次面试总共经历了四轮,这四轮面试都是视频面试,其中前三轮是技术面试,最后一轮是hr面试。前三轮技术面试都有一个手动写代码的环节,在牛客网上写。情况也不完全一样,有的是先写代码后面试,有的是先聊一会儿再写代码。首轮面试1.1 算法题开始首先一道算法题,题目是链表上的数字相加。题目类似下面这道leetcode题。https://leetcode-cn.c...

2022-01-23 21:30:26 406

空空如也

空空如也

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

TA关注的人

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