自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis入门与实践

今天继续更新austin项目,如果还没看过该系列的同学可以点开我的历史文章回顾下,在看的过程中不要忘记了点赞哟!建议不要漏了或者跳着看,不然这篇就看不懂了,之前写过的知识点和业务我就不再赘述啦。今天要实现的是handler消费消息后,实现平台性去重的功能。01、什么是去重和幂等这个话题我之前在《对线面试官》系列就已经分享过了,这块面试也会经常问到,可以再跟大家一起复习下「幂等」和「去重」的本质:「唯一Key」+「存储」唯一Key如何构建以及选择用什么存储,都是业务决定的。「本...

2022-02-22 17:24:17 166

原创 干了三年外包的普通程序员还能社招进阿里吗?

作为程序员相信每个人都有一个大厂梦,作为一个面试过阿里的菜鸡,那么今天我就来说说普通Java程序员要达到什么水平才能社招进阿里阿里面试都问什么?我参加的是阿里的社招面试,而社招不同于校招,问题的范围其实是很随机的。因为能参加一些比较知名的互联网公司社招的人,70%以上都会有个3-5年的经验。这倒不是说一两年经验的同学没有机会进这些公司,而是因为这种公司,大部分情况下只招一些比较资深的开发和应届生,而不招那些处于中间阶段的人。而1-2年经验的同学,往往就刚好处于这个尴尬的阶段。对于能有3-5年.

2022-02-19 21:22:56 1005

原创 阿里二面:Spring框架用到了哪些设计模式?

前言前几天,一位读者面阿里被问到一个问题:Spring框架用到了哪些设计模式?,答的不是很好,于是打算写篇文章讲讲这个!代理模式所谓代理,是指它与被代理对象实现了相同的接口,客户端必须通过代理才能与被代理的目标类进行交互,而代理一般在交互的过程中(交互前后),进行某些特定的处理,比如在调用这个方法前做前置处理,调用这个方法后做后置处理。代理又分为静态代理和动态代理两种方式,Spring的AOP采用的是动态代理的方式Spring通过动态代理对类进行方法级别的切面增强,动态生成目标对象的代理

2022-02-19 17:06:34 205

原创 阿里微服务架构师三年经验分享:Spring Cloud开发入门到实战

SpringCloud自述微服务?Spring?SpringBoot?SpringCloud?......作为一名Java开发人员,对于这些字眼,是否有一种既熟悉又陌生的感觉。你见过,了解过,知道它们也是面试中很重要的一部分,但是不会运用,不会实践到项目中,这就是很尴尬的一种局面,那么你该如何对它们进行深层的剖析呢?想必不需要多说,阿里这些年来开源的步子是不是迈得很大,其实在开源的软件上,阿里的发展速度和规模确实都是比较可圈可点的。SpringCloud也是现在开源领域的一大热门的软件,尽管前.

2022-02-18 20:46:41 343 1

原创 18个实列详解 Spring 事务传播机制

什么是事务传播机制事务的传播机制,顾名思义就是多个事务方法之间调用,事务如何在这些方法之间传播。举个例子,方法 A 是一个事务的方法,方法 A 执行的时候调用了方法 B,此时方法 B 有无事务以及是否需要事务都会对方法 A 和方法 B 产生不同的影响,而这个影响是由两个方法的事务传播机制决定的。传播属性 Propagation 枚举Spring 对事务的传播机制在 http://​ Propagation​ 枚举中定义了7个分类:REQUIRED 默认 SUPPORTS 支持 .

2022-02-17 17:10:12 185

原创 阿里p8耗时一个月整理的面试突击手册助力金三银四

2022年的互联网行业竞争越来越严峻,程序员一个比一个内卷,面试也是越来越难,一直以来我都想整理一套完美的面试宝典,奈何难抽出时间,这次我利用春节假期耗时一个月整理了这一份Java面试突击手册,离今年的金三银四就只剩下了一个多月的时间趁着这个机会今天我就把这份手册免费分享给大家。由于篇幅限制,下面只能截图展示这份资料这份面试突击手册涵盖了备战面试,Java基础+集合+多线程+JVM,计算机,数据库,常用框架,系统设计常用面试题,整体分为当季最新系列、大厂面试真题系列、技术系统分类系列三部分。(纯文字文

2022-02-15 22:01:16 300

原创 复习了一个月的MySQL,阿里二面我居然就挂了

作为Java程序员相信大家对于MySQL的索引都不陌生,索引(Index)是帮助MySQL高效获取数据的数据结构。索引作为MySQL中比较重点的知识,在面试中出现的频率特别高。本人自认为对MySQL的索引知识相当了解,同事们工作中也都热情的称呼我为大佬。为了进阿里,我特地花了1个月左右时间复习相关知识,自信满满的在简历上写了“精通MySQL”,想不到被阿里面试官狠狠虐了一把… 前半段和面试官相谈甚欢,聊着聊着我提到我们业务量比较大,每天大概有几百万的新数据生成,面试官来了兴趣......... 面试官:

2022-02-14 21:43:57 114 1

原创 3年程序员感慨:都这么内卷现在Java面试都这么难了

都说现在Java面试是越来越难,是企业对JAVA人员的要求越来越高。一个行业在发展初期是非常需要人力物力各种资源的填充,前景好的扩张更快更大,也可以称作是野蛮生长吧,而在互联网行业这块尤为突出。互联网在咱们国家发展起来不过20几年时间,但是目前我国互联网普及率达已经达到了67.0%,网民规模达9.40亿,可见它的扩张速度有多快,市场有多大。由于互联网计算机行业的吃香,加之行业发展初期入行门槛要求不高,无数的计算机专业或非计算机专业转行的人才都投身进来,无论技术高低,都有适合而充足的岗位源源不断的出现。互

2022-02-13 21:37:11 744

原创 大厂面试真的很难吗?字节跳动3面+腾讯6面一次过,谈谈我的大厂面经

写在开头的闲言碎语2021年春节接近尾声,对很多人来说,这一年经历了太多太多,可能是十年来记忆里比较浓墨重彩的一笔。过去的一年里,“熬”算是这个阶段我的关键字,确实太多时候就要放弃,好在自己“熬”过去了,在新的2022年里,也有个一个非常好的开端,我收获了心仪的offer。简单来说,我今天也想要凡尔赛一次,原来大厂的面试也没有想象中的那么难,字节跳动3面+腾讯6面,就这么一次性过了,下面就细细聊聊我的大厂面经吧,希望能够给要面试的朋友提供一些经验。PART1:字节跳动3轮面试场景重现

2022-02-11 20:14:47 2995 1

原创 为什么要学Java调优?

Java性能调优Java性能调优,是一个老生常谈的话题。可能有些人觉得没用,一些细小的地方没有好修改的,改与不改对于代码的运行效率有什么影响呢?Java性能调优不单单是学一门编程语言那么简单,没有办法通过直线式的思维去掌握并运用,对架构师的技术和深度都是有较高的要求的。互联网的时代,一个简单的系统囊括了应用程序、数据库、操作系统、网络等很多技术,如果线上一旦出现什么问题的话,可能就要去协调多方面的组件去进行优化,这又将是一个问题。在这个“糙、快、猛”的互联网开发模式大行其道的今天,随着系统访问量

2022-02-10 19:50:40 125

原创 分布式锁是用 Redis好还是 Zookeeper

在讨论这个问题之前,我们先来看一个业务场景:系统A是一个电商系统,目前是一台机器部署,系统中有一个用户下订单的接口,但是用户下订单之前一定要去检查一下库存,确保库存足够了才会给用户下单。由于系统有一定的并发,所以会预先将商品的库存保存在redis中,用户下单的时候会更新redis的库存。此时系统架构如下:但是这样一来会产生一个问题:假如某个时刻,redis里面的某个商品库存为1,此时两个请求同时到来,其中一个请求执行到上图的第3步,更新数据库的库存为0,但是第4步还没有执行。而另外一个请求执行到了第

2022-02-10 19:33:44 251

原创 为什么都说今年金三银四会比往年更加难找工作

三个原因:一、疫情原因,公司少了。众所周知,2020年发生了疫情。疫情期间,倒闭了很多公司,很多公司也缩小规模裁员。所以,面试找工作的人就多了,岗位就少了。最近还听有朋友找工作(非IT),遇到一些公司的流氓操作。实习期就采用岗位备选,招多个人实习,竞争一个岗位,过了三个月实习期,最后公司从中选择一个上岗,或者一个都不选。实习完就开掉,再招实习……这样像骗子公司一样的行情,很生气,也很无奈。二、近几年的互联网行业,初级人才多了,面试的要求水涨船高了。在十几年前零几年的时候,IT

2022-02-09 21:52:10 406

原创 Java程序员都是如何准备面试的

Java面试通常可分为技术性问题和非技术性问题。一、技术方面技术方面的问题包含Java基础、框架等,特别是Java的一些核心基础知识点、对源码解读和核心原理的理解都是加分项。二、非技术方面非技术性方面的问题,虽然不能考察你多少技术能力,但能侧面看出你的一些综合能力,所以作为面试者,非技术性方面的问题,也要有所准备!无论是技术方面还是非技术方面的问题,总结起来无非三个方向:1. 知识结构2. 项目经验3. 综合能力所以,想要在短时间内突击Java面试,可从这三方面去着手准备

2022-02-08 20:16:48 389

原创 微服务在弹性云实现无损发布实践

1. 背景原来的系统是个单体服务,导致逻辑越来越复杂,牵一发而动全身。为了提高系统的可扩展性,我们把原来的单体系统,按照功能拆分成不同的微服务。2. 弹性云配置我们所有的微服务都是部署在弹性云上的,希望在部署服务时能够做到无损发布。要做到这一点,以下几个步骤是需要实现的:容器销毁之前服务进程能够主动从eureka注册中心列表中删除; 在eureka注册中心列表删除实例后,该实例在一定的时间内还要能够承接一些流量,因为此时其他eureka客户端还有该实例的缓存; 最后等待其他线程全部处

2022-01-25 17:30:44 217

原创 【MySql项目实战优化】多行数据转化为同一行多列显示

在我的工作中,接到过这么一个需求,需要合并纵向的数据为 1 条记录显示出来。业务场景用业务上的说法,我这里有 1 个物料,其中有 n 个属性,每个属性配置有是否显示的开关,对于这个物料的 n 个属性,就是 n 条记录存储在这个表中;现在就需要对这个表按物料编码分组,分组后的数据,提取出物料的属性和配置,作为单条记录显示,画一个大概的示意图这需求的理由是大量的数据拉出来后,上方的模式阅读数据会非常的不直观这种转化的操作,我们可以使用 java 来处理,拉取到全部的数据后,再根据物料编码.

2022-01-23 20:06:37 6021

原创 学会这10种实用的定时任务,拿捏所有业务场景

前言最近有几个读者私信给我,问我他们的业务场景,要用什么样的定时任务。确实,在不用的业务场景下要用不同的定时任务,其实我们的选择还是挺多的。我今天给大家总结10种非常实用的定时任务,总有一种是适合你的。一. linux自带的定时任务crontab不知道你有没有遇到过这种场景:有时需要临时统计线上的数据,然后导出到excel表格中。这种需求有时较为复杂,光靠写sql语句是无法满足需求的,这就需要写java代码了。然后将该程序打成一个jar包,在线上环境执行,最后将生成的excel文件下载到本地

2022-01-22 21:22:00 2049

原创 面试官:HashMap实现原理是什么?HashMap是线程安全的吗?

面试题1:说一下 HashMap 的实现原理?追问1:如何实现HashMap的有序? 追问2:那TreeMap怎么实现有序的? 追问3:put方法原理是怎么实现的? 追问4:HashMap扩容机制原理 追问5:HashMap在JDK1.8都做了哪些优化? 追问6:链表红黑树如何互相转换?阈值多少?面试题2:HashMap是线程安全的吗?追问1:你是如何解决这个线程不安全问题的? 追问2:说一下大家为什么要选择ConcurrentHashMap? 追问3:ConcurrentHash.

2022-01-22 21:19:41 293

原创 亿级流量架构:服务器扩容思路及问题分析

为什么要扩容说人话就是, 无论如何优化性能,能达到的最大值是一定的,对于一个用户量大的应用,可以对服务器进行各种优化,诸如限流、资源隔离,但是上限还是在那里,这时候就应该改变我们的硬件,例如使用更强的CPU、更大的内存,在前文中举了一个学生食堂打饭的例子,如果学生多了,可以通过令牌桶算法优先给高三学生令牌打饭,但是如果高三的学生还是很多呢?那就只有增加窗口或者食堂的数量,也就是硬件上的扩容。扩容策略扩容策略可以分为两种, 一种是对单机整体扩容,也就是机器内部包含CPU、内存、存储设备等,另一种.

2022-01-22 21:17:48 250

原创 工龄3年的Java开发程序员居然只能靠跳槽来涨薪?

各位职场人都听说过薪资倒挂这词儿吧,这个情况在行业内早就不是什么稀罕事了,我有一个认识的,作为公司3年工龄的Java开发老员工,技术过关,能够独立工作,并且思考优化方向,我不吹牛的说,至少也是个阿里P6的水平,无限接近于P7。 可即使是这么优秀的员工,3年工资一毛钱不涨,仅仅只想提升个30%的薪资,就留下来勤勤恳恳和公司共进退,但HR死活不肯,各种规章制度卡得死死的,我都为他抱不平。 人家也要生活的呀,总不能用自己的青春来给公司陪跑吧。心一横,跳槽了离家更近的公司,年薪大涨了50%。 他走以后,公司用原来.

2022-01-21 21:19:12 319

原创 SpringCloud Gateway集成Alibaba Nacos实现动态路由配置

SpringCloud Gateway的核心概念SpringCloud Gateway是Spring官方最新推出的一款基于SpringFramework5,Project Reactor和SpringBoot 2之上开发的网关。它与第一代网关Zuul不同的是:gateway是异步非阻塞的(netty + webflux实现);zuul是同步阻塞请求的Gateway由三大组成部分,分别是路由、断言、过滤器。谓词Predicate谓词Predicate对于熟悉Java8函数式编程的开发者来.

2022-01-21 21:13:14 1913

原创 SpringCloud Alibaba 实战:如何让 jwt token 主动失效?

前言有一个看我SpringCloud alibaba系列文章的粉丝私下问我:如何处理jwt失效的问题?修改密码或退出登录后需要将之前的jwt token失效掉,不允许使用旧token登录系统。我说:很简单呀,咱们直接 无为而治,用户退出或修改密码的时候前端直接删除这个token不就完了吗?后端啥都不用管,啥也不用做。他说:别闹,你的每篇文章我都给你一键三连。我当时就被感动了,既然是这样的好读者,我果断答应专门给他写篇文章来分享一下我这个不太成熟的做法,改造一下这个SpringCloud a.

2022-01-21 21:10:52 1688

原创 HashMap 是线程不安全的?

01、多线程下扩容会死循环众所周知,HashMap 是通过拉链法来解决哈希冲突的,也就是当哈希冲突时,会将相同哈希值的键值对通过链表的形式存放起来。JDK 7 时,采用的是头部插入的方式来存放链表的,也就是下一个冲突的键值对会放在上一个键值对的前面(同一位置上的新元素被放在链表的头部)。扩容的时候就有可能导致出现环形链表,造成死循环。resize 方法的源码:// newCapacity为新的容量void resize(int newCapacity) { // 小数组,临时过.

2022-01-20 22:02:57 137

转载 Spring Boot必备插件mybatis-plus

本文主要介绍mybatis-plus这款插件,针对springboot用户。包括引入,配置,使用,以及扩展等常用的方面做一个汇总整理,尽量包含大家常用的场景内容。本文项目代码gitee地址:gitee.com/wei_rong_xi…关于mybatis-plus是什么,不多做介绍了,看官方文档:baomidou.com/,咱们直接代码撸起来。一、快速开始本文基于springboot、maven、jdk1.8、mysql开发,所以开始前我们需要准备好这套环境。我的环境使用了nacos作为.

2022-01-19 21:13:56 1159

原创 黑科技Spring Native带你体验79毫秒启动一个项目

今天是实战先抛一个问题,大家在自己电脑上启动一个 spring boot 项目需要花费多久?根据项目大小和机器环境,花费几秒到几十秒的人应该都有。最近 spring 官方推出了一项技术可以将项目的启动时间缩短到 79 毫秒,79 毫秒大概是个什么概念?就是你还没反应过来项目已经启动好了,太牛了。这项技术被 spring 官方命名为Spring Native,翻译成中文叫Spring 云原生,应该有少部分人听说过这个概念,我先带大家入门扫盲。我是谁?Spring Native...

2022-01-19 16:41:56 635

原创 全网最新Java8特性大全

一、序言Java8 是一个里程碑式的版本,凭借如下新特性,让人对其赞不绝口。Lambda 表达式给代码构建带来了全新的风格和能力; Steam API 丰富了集合操作,拓展了集合的能力; 新日期时间 API 千呼万唤始出来;随着对 Java8 新特性理解的深入,会被 Lambda 表达式(包含方法引用)、流式运算的美所迷恋,不由惊叹框架设计的美。二、方法引用Lambda 表达式是匿名函数,可以理解为一段可以用参数传递的代码(代码像数据一样传递)。Lambda 表达式的使用需要有函数

2022-01-19 16:35:52 91

原创 18张图带你看懂SpringBoot解析yml全流程

前几天的时候,项目里有一个需求,需要一个开关控制代码中是否执行一段逻辑,于是理所当然的在yml文件中配置了一个属性作为开关,再配合nacos就可以随时改变这个值达到我们的目的,yml文件中是这样写的:switch: turnOn: on程序中的代码也很简单,大致的逻辑就是下面这样,如果取到的开关字段是on的话,那么就执行if判断中的代码,否则就不执行:@Value("${switch.turnOn}")private String on;@GetMapping("...

2022-01-19 16:30:14 1515

原创 谈谈Java中让你眼花缭乱的18把锁

乐观锁和悲观锁 独占锁和共享锁 互斥锁和读写锁 公平锁和非公平锁 可重入锁 自旋锁 分段锁 锁升级(无锁|偏向锁|轻量级锁|重量级锁) 锁优化技术(锁粗化、锁消除) 乐观锁和悲观锁悲观锁悲观锁对应于生活中悲观的人,悲观的人总是想着事情往坏的方向发展。举个生活中的例子,假设厕所只有一个坑位了,悲观锁上厕所会第一时间把门反锁上,这样其他人上厕所只能在门外等候,这种状态就是「阻塞」了。回到代码世界中,一个共享...

2022-01-18 15:01:56 88

原创 和阿里面试官谈JVM调优,他居然把我的电话挂了

Java 中堆和栈有什么区别?​新生代是用来存放新生的对象。一般占据堆的 1/3 空间。由于频繁创建对象,所以新生代会频繁触发MinorGC 进行垃圾回收。新生代又分为 Eden区、 ServivorFrom、 ServivorTo 三个区。Eden 区Java 新对象的出生地(如果新创建的对象占用内存很大,则直接分配到老年代)。当 Eden 区内存不够的时候就会触发 MinorGC,对新生代区进行一次垃圾回收。ServivorFrom上一次 GC 的幸存者,作.

2022-01-15 15:44:52 73

原创 通过 Java Timer/TimerTask 源码原理解析告诉你如何实现定时任务

一、背景和使用    日常实现各种服务端系统时,我们一定会有一些定时任务的需求。比如会议提前半小时自动提醒,异步任务定时/周期执行等。那么如何去实现这样的一个定时任务系统呢? Java JDK提供的Timer类就是一个很好的工具,通过简单的API调用,我们就可以实现定时任务。    现在就来看一下java.util.Timer是如何实现这样的定时功能的。    首先,我们来看一下一个使用demoTimer timer = new Timer(); TimerTask task = n..

2022-01-15 14:58:02 313

原创 图解四种 IO 模型 轻松区分BIO、NIO 和 AIO 、SIGIO

前言最近越来越认为,在讲解技术相关问题时,大白话固然很重要,通俗易懂,让人有想读下去的欲望。但几乎所有的事,都有两面性,在看到其带来好处时,不妨想想是否也引入了不好的地方。例如在博客中,过于大白话的语言的确会让你阅读起来更加顺畅,也更容易理解。但这都是其他人理解,已经咀嚼过了的,人家是已经完全理解了,你从这些信息中大概可能会观察不到全貌。所以,适当的白话是很好的,但这个度得控制一下。接下来切入正文。相信大家经常看到这个问题:BIO、NIO 和 AIO 有什么区别?看到这个问题,可

2022-01-14 21:58:52 329

原创 为什么大家都用Spring Cloud ,作为一套微服务治理的框架它凭什么这么牛?

Spring Cloud 作为一套微服务治理的框架,几乎考虑到了微服务治理的方方面面。本次分享主要解答这两个问题:Spring Cloud 在微服务的架构中都做了哪些事情? Spring Cloud 提供的这些功能对微服务的架构提供了怎样的便利?我们先来简单回顾一下,我们以往互联网架构的发展情况:传统架构发展史单体架构单体架构在小微企业比较常见,典型代表就是一个应用、一个数据库、一个 Web 容器就可以跑起来,比如我们开发的开源软件云收藏,就是标准的单体架构。在两种情况下...

2022-01-14 20:40:50 460

原创 上班第一天,老板就甩来30G文件,这个人不怕我离职的吗?

如果给你一个包含一亿行数据的超大文件,让你将数据转化导入生产数据库,你会如何操作?上面的问题是接到的一个真实的业务需求,将一个老系统历史数据通过线下文件的方式迁移到新的生产系统。由于时间紧,而数据量又超大,所以设计的过程想到一下解决办法:拆分文件 多线程导入拆分文件首先我们可以写个小程序,或者使用拆分命令 split 将这个超大文件拆分一个个小文件。-- 将一个大文件拆分成若干个小文件,每个文件 100000 行split -l 100000 largeFile.txt -d .

2022-01-14 20:32:39 88

原创 字节二面:面试官问我MySQL怎么调优,我只说了一句话就被看穿了

面试官:要不你来讲讲你们对MySQL是怎么调优的?候选者:哇,这命题很大阿…我认为,对于开发者而言,对MySQL的调优重点一般是在「开发规范」、「数据库索引」又或者说解决线上慢查询上。候选者:而对于MySQL内部的参数调优,由专业的DBA来搞。面试官:扯了这么多,你就是想表达你不会MySQL参数调优,对吧候选者:草,被发现了。面试官:那你来聊聊你们平时开发的规范和索引这块,平时是怎么样的吧。候选者:嗯,首先,我们在生产环境下,创建数据库表,都是在工单系统下完成的(那就自然需要DBA.

2022-01-14 17:24:43 131

空空如也

空空如也

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

TA关注的人

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