自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 30 条架构原则

本文作者叫Srinath,是一位科学家,软件架构师,也是一名在分布式系统上工作的程序员。他是Apache Axis2项目的联合创始人,也是Apache Software基金会的成员。他是WSO2流处理器(wso2.com/analytics)的联席架构师。Srinath撰写了两本关于MapReduce和许多技术文章的书。他获得了博士学位。来自美国印第安纳大学。Srinath通过不懈的努力最终总结出了30条架构原则,他主张架构师的角色应该由开发团队本身去扮演,而不是专门有个架构师团队或部门。Srinath

2022-03-10 13:41:54 195

原创 推荐 2 个 Spring Boot 的工作流项目

今天主要推荐两个工作流的springboot项目,开源项目中有具体的部署操作文档,核心表结构说明,都可以帮助理解工作流原理,其实大厂华为阿里里面的工作流虽然号称自研(很多都是参考开源),跟开源工作流的原理差不多的。工作流出问题比较高频的是配置出现低级问题,比如少一个符号或大小写不规范,别问我怎么知道的(玩工作流好几年了),工作流玩熟悉了,开发效率是极快的。 Spring-boot-activiti RuoYi-vue 4.x + flowable 1、Spring-boot-acti

2022-03-10 13:41:19 853 1

原创 一次性总结:57个数据分析常用术语

本篇文章,我们来讲讲数据分析常用语1、绝对数和相对数绝对数:是反应客观现象总体在一定时间、一定地点下的总规模、总水平的综合性指标,也是数据分析中常用的指标。比如年GDP,总人口等等。相对数:是指两个有联系的指标计算而得出的数值,它是反应客观现象之间的数量联系紧密程度的综合指标。相对数一般以倍数、百分数等表示。相对数的计算公式:相对数=比较值(比数)/基础值(基数)2、百分比和百分点百分比:是相对数中的一种,它表示一个数是另一个数的百分之几,也称为百分率或百分数。百分比的分母是100,

2022-03-09 13:12:26 467

原创 面试必备:聊聊MySQL的主从

金三银四面试的时候,面试官经常会问MySQL主从。今天就跟大家聊聊MySQL的主从。 数据库主从概念、优点、用途 数据库主从复制原理 主主、主从、主备的区别 MySQL是怎么保证主从一致的 数据库主从延迟的原因与解决方案 聊聊数据库的高可用方案 1. 数据库主从概念、优点、用途主从数据库是什么意思呢,主是主库的意思,从是从库的意思。数据库主库对外提供读写的操作,从库对外提供读的操作。数据库为什么需要主从架构呢? 高可用,实时灾备,

2022-03-08 13:52:12 430

原创 四种常用的微服务架构拆分方式

微服务架构并无标准架构,不然什么架构师大会也不会各个系统架构百花齐放了。虽然没有固定的套路,却有一些经验,今天就来做一个总结。基于角色拆分这种拆分方式常见于基础设施以及其PaaS层的架构,比如服务治理、k8s、kafka。所谓基础组件的PaaS层是说,基础设施本身主要作为基础设施使用,是IaaS层。但是基础设施本身需要维护功能,需要增删改查等运维操作。业界基于开源做的二次开发也着重在做这方面的工作。下面以kafka做说明。因为要上升到PaaS层,下图基于美团对kafka的二次开发封装,产品名叫m

2022-03-08 13:33:16 646

原创 几种主流的分布式定时任务,你知道哪些?

单点定时任务JDK原生自从JDK1.5之后,提供了ScheduledExecutorService代替TimerTask来执行定时任务,提供了不错的可靠性。publicclassSomeScheduledExecutorService{publicstaticvoidmain(String[]args){//创建任务队列,共10个线程ScheduledExecutorServicescheduledExecutorServi...

2022-03-07 13:58:42 164

原创 聊聊并发编程的10个坑

对于从事后端开发的同学来说,并发编程肯定再熟悉不过了。说实话,在java中并发编程是一大难点,至少我是这么认为的。不光理解起来比较费劲,使用起来更容易踩坑。不信,让继续往下面看。今天重点跟大家一起聊聊并发编程的10个坑,希望对你有帮助。1. SimpleDateFormat线程不安全在java8之前,我们对时间的格式化处理,一般都是用的SimpleDateFormat类实现的。例如:@ServicepublicclassSimpleDateFormatService{...

2022-03-07 13:50:57 86

原创 完整秒杀架构的设计

秒杀系统-情报背景相信大家都接触过新浪微博、淘宝、京东等等这些访问量较为巨大的平台以及网站,针对于“高流量”、“高并发”来讲,更是我们【技术开发者】都要面临的的一个很难的“包袱”难题。哎,看来如果要在这行混下去,即使你可能没有接触高并发场景,也要自己创造“高并发”进行迎难而上,因为只有这样子我们才可以更进一步啊!秒杀系统-情报介绍对于今天我们要介绍的内容就属于高并发的一个最极端的场景之一:“秒杀”,这个名词一般会在“大促”的时候出现,当然也会在某些平台活动上出现,那么肯定会有小伙伴会说,秒杀系统

2022-03-05 14:51:03 1228

原创 如何写出让同事无法维护的代码?63个小技巧

混乱你的代码。使用XML。XML的强大是无人能及的。使用XML你可以把本来只要10行的代码变成100行。而且,还要逼着别人也有XML。(参看,信XML得永生,信XML得自信) 分解条件表达式。如:把 a==100分解成,a>99 && a<101 学会利用分号。如:if ( a );else;{ int d; d = c;} 间接转型 。如:把double转string,写成new Double(d).toString() 而不是 Dou...

2022-03-05 13:08:49 550

原创 一个由“ YYYY-MM-dd ”引发的惨案 ...

前言在使用一些 App 的时候,竟然被我发现了一个应该是由于前端粗心而导致的 bug,在 2019.12.30 出发,结果 App 上显示的是 2020.12.30(吓得我以为我的订单下错了,此处是不是该把程序员拉去祭天了)。鉴于可能会有程序员因此而被拉去祭天,而我以前学 Java 的时候就有留意过这个问题,所以我还是把这个问题拿出来说一下,希望能尽量避免这方面的粗心大意(毕竟这种问题也很难测出来)。正文publicclassDateTest{publicstaticvoid...

2022-03-04 19:16:44 87

原创 HashMap夺命连环21问

1:HashMap 的数据结构?A:哈希表结构(链表散列:数组+链表)实现,结合数组和链表的优点。当链表长度超过 8 时,链表转换为红黑树。transient Node<K,V>\[\] table;2:HashMap 的工作原理?HashMap 底层是 hash 数组和单向链表实现,数组中的每个元素都是链表,由 Node 内部类(实现 Map.Entry接口)实现,HashMap 通过 put & get 方法存储和获取。存储对象时,将 K/V 键值传给 put

2022-03-04 13:02:17 200

原创 消息队列经典十连问

前言金三银四即将来临,整理了十道十分经典的消息队列面试题,看完肯定对面试有帮助的,大家一起加油哈~ 什么是消息队列 消息队列的应用场景 消息队列如何解决消息丢失问题 消息队列如何保证消息的顺序性。 消息有可能发生重复消费吗?如何幂等处理? 如何处理消息队列的消息积压问题 消息队列技术选型,Kafka还是RocketMQ,还是RabbitMQ 消息中间件如何做到高可用? 如何保证数据一致性,事务消息如何实现 如

2022-03-03 13:15:03 155

原创 面试八股:MySQL InnoDB 是如何存数据的?

前言如果你使用过 MySQL 数据库,对它的存储引擎:InnoDB,一定不会感到陌生。众所周知,在MySQL5 以前,默认的存储引擎是:MyISAM。但MySQL5之后,默认的存储引擎已经变成了InnoDB,它是我们建表的首选存储引擎。那么,问题来了: InnoDB 底层是如何存储数据的? 表中有哪些隐藏列? 用户记录之间是如何关联起来的? 如果你想知道上面三个问题的答案,那么,请继续往下面看。本文主要包含如下内容:1. 磁盘 or 内存...

2022-03-03 13:13:41 162

原创 金三银四快到了,我总结了面试准备中5个最最最常见的坑

金三银四,这马上就是三四月份了,无论是校招还是社招又开始简历、面试、薪酬的比拼当中...面试准备的时候,你是否总觉得花费的时间过长?又或者有些面试题你明明了解过,但是面试的时候,给出的答案总是不那么令人满意。甚至,每次刷完面试题,你觉得答得很好,但是总也没得到 Offer。其实说白了,出现这些问题,很可能是因为你面试准备的时候,踩了一些坑却不自知。现在,作为一名资深面试官,我今天就和大家说说面试准备中 5 个最常见的坑。坑1. 不看岗位职责和岗位要求“岗位职责”和“岗位要求”是我们在看招

2022-02-28 16:49:55 146

原创 分布式定时任务框架选型,写得太好了

1. 前言我们先思考下面几个业务场景的解决方案: 支付系统每天凌晨1点跑批,进行一天清算,每月1号进行上个月清算 电商整点抢购,商品价格8点整开始优惠 12306购票系统,超过30分钟没有成功支付订单的,进行回收处理 商品成功发货后,需要向客户发送短信提醒 “类似的业务场景非常多,我们怎么解决?”很多业务场景需要我们某一特定的时刻去做某件任务,定时任务解决的就是这种业务场景。一般来说,系统可以使用消息传递代替部分定时任务,两者有很多相似之处,可以相互替换场

2022-02-28 13:10:02 747

原创 为什么微服务一定要有 API 网关?

微服务不能没有网关,就如同 Java 程序员不能没有 IDEA、Eclipse。为什么呢?之所以网关对微服务这么重要,主要有以下几点原因:1. 解决 API 放哪里的问题要知道,采用微服务架构的系统本身是由很多的独立服务单元组合起来的。而客户端要调用系统,则必须通过系统提供的各种对外开放的 API 来实现。问题来了,这些 API 要放在哪里呢?直接放在组成系统的服务单元上行不行?比如,在一套电商系统上,关于订单相关的 API ,放在组成订单服务的服务单元上;风控服务的 API ,放在组成

2022-02-26 19:16:31 121

原创 聊聊一致性hash算法

构建场景假如我们有三台缓存服务器编号node0、node1、node2,现在有3000万个key,希望可以将这些个key均匀的缓存到三台机器上,你会想到什么方案呢?我们可能首先想到的方案,是取模算法hash(key)% N,对key进行hash运算后取模,N是机器的数量。key进行hash后的结果对3取模,得到的结果一定是0、1或者2,正好对应服务器node0、node1、node2,存取数据直接找对应的服务器即可,简单粗暴,完全可以解决上述的问题。hash的问题取模算法虽然使用简单..

2022-02-26 13:14:35 173 1

原创 被阿里P8面了两个小时,技术、业务有来有回......

背景这次面试流程足足横跨三个部门,其中既有侧重业务的部门,也有侧重技术的部门。在省略三次面试的前提下,实际面试轮次有七次。整个过程的心理压力还是比较大的,毕竟每多一次面试轮次,就多一份落选的可能。尤其转战三个部门还都是由于公司方面的原因...面试范围广。由于涉及多个部门、多个面试官,所以面试内容涉及方方面面。技术、管理、业务、个人规划等等均有所涉及。其中技术也涉及基础、中间件、架构,以及应用等。这里非常感谢我的原二级主管,在我面试过程中提供的帮助。他多次帮我梳理业务、梳理思考逻辑等。这篇

2022-02-25 19:27:29 264

原创 一文教你了解SSL协议

什么是SSL简称是SSL,全称Secure Sockets Layer 安全套接字协议,一般我们在学习 SSL 的时候,都会和 TLS一起来学习的,为什么呢?因为 SSL 和 TLS 都是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层与应用层之间对网络连接进行加密。我们先看 SSL协议,然后在看 TLS协议。SSL协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。SSL 协议可分为两层: SSL记录协议(SSL Record Protocol)

2022-02-25 13:19:03 4119

原创 数据库为啥查询那么慢?

1. MySQL查询慢是什么体验?大多数互联网应用场景都是读多写少,业务逻辑更多分布在写上。对读的要求大概就是要快。那么都有什么原因会导致我们完成一次出色的慢查询呢?1.1 索引在数据量不是很大时,大多慢查询可以用索引解决,大多慢查询也因为索引不合理而产生。MySQL 索引基于 B+ 树,这句话相信面试都背烂了,接着就可以问最左前缀索引、 B+ 树和各种树了。说到最左前缀,实际就是组合索引的使用规则,使用合理组合索引可以有效的提高查询速度,为什么呢?因为索引下推。如果查询条件包含在.

2022-02-24 19:02:35 1478

原创 JMH 和 Arthas 定位问题的案例分享

问题描述为了能够让我后面的实例能够贯穿这两个工具的使用,我首先简单描述下我们在开发中遇到的实际的性能问题。然后再引出这两个性能工具的实际使用,看我们如何使用这两个工具成功定位到性能瓶颈的。问题如下:为了能够支持丢失率,我们将原先log4j2 的Async+自定义Appender的方式进行了修正,把异步的逻辑放到了自己改版后的Appender中。但我们发现修改后日志性能要比之前Async+自定义Appender的方式下降不少。这里由于隐私原因我并没有用实际公司中的实例,这里我用了一种其他同样能够体现问

2022-02-24 13:07:21 107

原创 锁记——偏向锁注定过不好这一生

背景在 JDK1.5 之前,面对 Java 并发问题, synchronized 是一招鲜的解决方案: 普通同步方法,锁上当前实例对象 静态同步方法,锁上当前类 Class 对象 同步块,锁上括号里面配置的对象 拿同步块来举例:publicvoidtest(){synchronized(object){i++;}}经过javap -v编译后的指令如下:monitorenter指令是在编译后插入到同步代码块的开始位...

2022-02-23 16:33:33 253 2

原创 糟糕程序员的20个坏习惯

今天我想和你聊一聊优秀程序员的基本素养。我想你肯定遇到过这样一类程序员:他们无论是写代码,还是写文档,又或是和别人沟通,都显得特别专业。每次遇到这类人,我都在想,他们到底是怎么做到的?随着工作时间的增长,渐渐地我也总结出一些经验,他们身上都保持着一些看似很微小的优秀习惯,但正是因为这些习惯,体现出了一个优秀程序员的基本素养。但今天我们来换个角度,来看看一个糟糕程序员有哪些坏习惯?只要我们都能避开这些问题,就可以逐渐向一个优秀程序员靠近。1、技术名词拼写不规范无论是个人简历,还是技术文档,

2022-02-23 13:22:19 62

原创 Git : 每一行命令都算数

Git工作区域为了说明我们日常开发中执行的一系列Git命令的作用是什么,我们需要了解Git的工作区域的概念,几乎每一个常见的Git命令操作都可以通过工作区域来解释。Git本地有四个工作区域: 工作区(Working Directory):在git init之后的本地的文件目录下,也就是大家写代码的地方 暂存区(Staged/Index):修改了代码之后,需要先将改动add到暂存区,表示将要提交的改动 本地仓库(Local Repository):本地Git仓库,通俗...

2022-02-22 17:05:19 150

原创 用了这么久 Linux ,才知道这些概念

我们大家应该知道,Linux 和 UNIX 中的文件系统是一个以/为根的树状式文件结构,/ 是 Linux 和 UNIX 中的根目录,同样它也是文件系统的起点。所有的文件和目录都位于 / 路径下,包括我们经常听到的 /usr、/etc、/bin、/home 等。在早期的 UNIX 系统中,各个厂家都定义了自己文件系统的命名构成,比较混乱,而且难以区分。为了避免在 Linux 系统上也出现这种命名混乱的问题,在 1994 年推出了 FSSTND(FileSystem Standard)的 Linux ..

2022-02-22 13:18:31 173

原创 图解 Java 中那 18 把锁

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

2022-02-21 19:42:25 113

原创 什么是简单跑得又快的数据库语言 SPL

数据库语言的目标要说清这个目标,先要理解数据库是做什么的。数据库这个软件,名字中有个“库”字,会让人觉得它主要是为了存储的。其实不然,数据库实现的重要功能有两条:计算、事务!也就是我们常说的 OLAP 和 OLTP,数据库的存储都是为这两件事服务的,单纯的存储并不是数据库的目标。我们知道,SQL 是目前数据库的主流语言。那么,用 SQL 做这两件事是不是很方便呢?事务类功能主要解决数据在写入和读出时要保持的一致性,实现这件事的难度并不小,但对于应用程序的接口却非常简单,用于操纵数据库读写的代

2022-02-21 13:20:50 3454

原创 通俗讲解分布式锁:场景和使用方法

前言对于锁大家肯定不会陌生,比如 synchronized 关键字 和 ReentrantLock 可重入锁,一般我们用其在多线程环境中控制对资源的并发访问。但是随着业务的发展,分布式的概念逐渐出现在我们系统中,我们在开发的过程中经常需要进行多个系统之间的交互,于是上面的加锁方法就会失去作用。于是在分布式锁就自然而然的诞生了,接下来我们来聊一聊分布式锁实现的几种方式。分布式锁的使用场景 效率性:使用分布式锁可以避免不同节点重复相同的工作。 正确性:分布式锁可以避免破坏正确性的发生,如

2022-02-19 19:09:30 1985 1

原创 SpringBoot 如何统计、监控 SQL运行情况?

1 基本概念Druid 是Java语言中最好的数据库连接池。虽然 HikariCP 的速度稍快,但是,Druid能够提供强大的监控和扩展功能,也是阿里巴巴的开源项目。Druid是阿里巴巴开发的号称为监控而生的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource等等等,秒杀一切。Druid 可以很好的监控 DB 池连接和 SQL 的执行情况,天生就是针对监控而生的 DB 连接池。Spring

2022-02-19 13:15:53 429

原创 Java jar 如何防止被反编译?代码写的太烂,害怕被人发现

java作为解释型的语言,其高度抽象的特性意味其很容易被反编译,容易被反编译,自然有防止反编译措施存在。今天就拜读了一篇相关的文章,受益匪浅,知彼知己嘛!!之所以会对java的反编译感兴趣,那是因为自己在学习的过程中,常常需要借鉴一下别人的成果(你懂的...)。或许反编译别人的代码不怎么道德,这个嘛......废话不多说,正文如下:常用的保护技术由于Java字节码的抽象级别较高,因此它们较容易被反编译。本节介绍了几种常用的方法,用于保护Java字节码不被反编译。通常,这些方法不能够绝对防止程序被

2022-02-18 17:13:14 186

原创 面试官:一千万数据,怎么快速查询?

前言 面试官:来说说,一千万的数据,你是怎么查询的? B哥:直接分页查询,使用limit分页。 面试官:有实操过吗? B哥:肯定有呀 此刻献上一首《凉凉》也许有些人没遇过上千万数据量的表,也不清楚查询上千万数据量的时候会发生什么。今天就来带大家实操一下,这次是基于MySQL 5.7.26做测试准备数据没有一千万的数据怎么办?创建呗代码创建一千万?那是不可能的,太慢了,可能真的要跑一天。可以采用数据库脚本执行速度快很多。创建表CREAT

2022-02-18 13:21:34 879 1

原创 Redis夺命十二问,你能扛到第几问?

大家好Redis是面试中绕不过的槛,只要在简历中写了用过Redis,肯定逃不过。今天我们就来模拟一下面试官在Redis这个话题上是如何一步一步深入,全面考察候选人对于Redis的掌握情况。小张:面试官,你好。我是来参加面试的。面试官:你好,小张。我看了你的简历,熟练掌握Redis,那么我就随便问你几个Redis相关的问题吧。首先我的问题是,Redis是单线程还是多线程呢?小张:Redis不同版本之间采用的线程模型是不一样的,在Redis4.0版本之前使用的是单线程模型,在4.0版

2022-02-17 16:30:56 46

原创 缓存三连问:项目中如何使用、为什么要使用、使用不当会造成什么后果?

问题项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果?分析这个问题,互联网公司必问,要是一个人连缓存都不太清楚,那确实比较尴尬。只要问到缓存,上来第一个问题,肯定是先问问你项目哪里用了缓存?为啥要用?不用行不行?如果用了以后可能会有什么不良的后果?这就是看看你对缓存这个东西背后有没有思考,如果你就是傻乎乎的瞎用,没法给面试官一个合理的解答,那面试官对你印象肯定不太好,觉得你平时思考太少,就知道干活儿。面试题剖析项目中缓存是如何使用的?这个,需要结合自己项目的

2022-02-17 13:13:09 265

原创 增加了一行代码,让我们提高了3000%的性能

01概述我们公司运维着 15 个 Web 应用,主要的工作就是按需交付基于数据驱动的 Web 应用程序,用于支撑实时决策的制定。这些应用的预期是在高负载下依然保持高可用。其中的主 Web 应用是一个历史遗留的大型多服务系统。系统中的大部分服务都有超过 15 年的历史并且经过了好几代人的重构。试想一下,负责编写系统代码的人现在可能已经离职或已经调整到其他岗位了。过去几年我们团队的主要目标是就是针对这些服务进行性能优化。本次我将和你分享在性能优化的过程中,我们的一些主要经验总结和当时决定这么..

2022-02-16 21:34:52 45

原创 20个 Linux 服务器性能调优技巧

Linux是一种开源操作系统,它支持各种硬件平台,Linux服务器全球知名,它和Windows之间最主要的差异在于,Linux服务器默认情况下一般不提供GUI(图形用户界面),而是命令行界面,它的主要目的是高效处理非交互式进程,响应时间并不是那么重要,相反,能够长时间处理高负载才是最关键的。Linux高可用服务器集群解决方案让IT系统管理员可以从容应对许多常见的硬件和软件故障,允许多台计算机一起工作,为关键服务正常运行提供保障,系统管理员可以不中断服务执行维护和升级。Linux服务器有各种用途,如W

2022-02-16 13:20:43 848

原创 9道微服务面试题,你能回答上来几个?

如今,微服务是我们Java开发者必备的技能之一了。不管你工作中是否真的是使用微服务架构,但是面试官肯定会问你,所以田哥给你整理一份微服务面试题。话不多说,我们直入主题。1. 什么是微服务?单个轻量级服务一般为一个单独微服务,微服务讲究的是 专注某个功能的实现,比如登录系统只专注于用户登录方面功能的实现,讲究的是职责单一,开箱即用,可以独立运行。微服务架构系统是一个分布式的系统,按照业务进行划分服务单元模块,解决单个系统的不足,满足越来越复杂的业务需求。马丁福勒(Martin Fowler)

2022-02-15 19:04:00 3062 1

原创 分布式一致性协议 Gossip 和 Redis 集群原理解析

分布式一致性协议 Gossip 和 Redis 集群原理解析Redis 是一个开源的、高性能的 Key-Value 数据库。基于 Redis 的分布式缓存已经有很多成功的商业应用,其中就包括阿里 ApsaraDB,阿里 Tair 中的 RDB 引擎,美团 MOS 以及腾讯云 CRS。本文我将着重介绍 Redis Cluster 原理、类 Codis 分布式方案以及分布式信息一致性协议 Gossip,以帮助大家深入理解 Redis。1. Redis 单机模式顾名思义,单机模式指 Redi...

2022-02-15 13:20:58 887

原创 为什么建议少用if语句

相信大家或多或少的听说过,少用点if-else吧?但是为什么要少用呢,有人说他会影响程序运行效率,但是这并不是他最大的罪状...if-else 的罪状if-else 作为三种最基本的程序结构之一,是我们从最开始学习编程时就接触的基本语句。但是到后面的阶段就不断听人说少用if-else。如果询问原因的话,你得到的结果大概率是if-else导致程序运行效率下降。这次来扯扯为什么我们说要少用if-else。 导致程序运行效率下降(大部分时候可以忽略) 破坏程序结构,导致代码难以维护(核

2022-02-12 21:41:04 615

原创 《大厂面试》之JVM篇21问与答

1. 什么是JVM内存结构?jvm将虚拟机分为5大区域,程序计数器、虚拟机栈、本地方法栈、java堆、方法区; 程序计数器:线程私有的,是一块很小的内存空间,作为当前线程的行号指示器,用于记录当前虚拟机正在执行的线程指令地址; 虚拟机栈:线程私有的,每个方法执行的时候都会创建一个栈帧,用于存储局部变量表、操作数、动态链接和方法返回等信息,当线程请求的栈深度超过了虚拟机允许的最大深度时,就会抛出StackOverFlowError; 本地方法栈:线程私有的,保存的是nativ

2022-02-11 21:27:52 125

原创 Spring 夺命连环18问

1.spring 中都用到了哪些设计模式? 2.spring 中有哪些核心模块? 3.说一下你理解的 IOC 是什么? 4.spring 中的 IOC 容器有哪些?有什么区别? 5.那 BeanFactory 和 FactoryBean 又有什么区别? 6.@Repository、@Service、@Compent、@Controller它们有什么区别? 7.那么 DI 又是什么? 8.说说 AOP 是什么? 9.动态代理和..

2022-02-11 13:26:19 93

空空如也

空空如也

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

TA关注的人

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