![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
程序员摩西
这个作者很懒,什么都没留下…
展开
-
阿里云高工手写!这是我见过最完美的“docker学习宝典”,你值得拥有
前言什么是Docker?对于很多不了解Docker技术的人来说,Docker可能只是一条“蓝色的鲸鱼”。实际上,Docker技术的流行,还是因为开发人员对它的认可。目前,大部分的互联网公司都在使用docker,包括腾讯、京东、美团、新浪等等,腾讯的盖亚,就是基于docker的,可见docker对于一名开发人员的重要性。学习docker与其他技术是一样的,从基础出发,由浅入深,熟练掌握docker,成为成熟的开发人员,才能更受大厂青睐。为了让更多的开发人员学习好docker,这份dock.原创 2020-12-17 21:31:05 · 323 阅读 · 0 评论 -
阿里技术专家深入讲解,SpringMVC入门到进阶,看这一篇就够了!
前言SpringMVC是一个实现了Web MVC设计模式的轻量级Web框架。它与前辈Struts 2框架一样,都属于MVC框架,因为其使用和性能等方面比Struts 2更加优异,所以Spring MVC是现在比较主流的MVC框架。先简单概括一下SpringMVC的主要特点:灵活性强,容易与其他框架集成;提供了前端控制器DispatcherServlet;支持多种视图技术,如JSP、FreeMarker等视图技术;支持国际化;And So On…接下来,开始写我们的第一个Spring MV原创 2020-11-23 21:23:56 · 325 阅读 · 0 评论 -
别说我不告诉你!如何用分库分表的 9种分布式主键ID 生成方案?挺全乎的
前言《sharding-jdbc 分库分表的 4种分片策略》中我们介绍了sharding-jdbc4种分片策略的使用场景,可以满足基础的分片功能开发,这篇我们来看看分库分表后,应该如何为分片表生成全局唯一的主键ID。引入任何一种技术都是存在风险的,分库分表当然也不例外,除非库、表数据量持续增加,大到一定程度,以至于现有高可用架构已无法支撑,否则不建议大家做分库分表,因为做了数据分片后,你会发现自己踏上了一段踩坑之路,而分布式主键ID就是遇到的第一个坑。不同数据节点间生成全局唯一主键是个...原创 2020-11-19 20:26:05 · 314 阅读 · 0 评论 -
亲身经历在国企搞IT:自我总结500页“Java成长笔记”,谁说待国企就是养老!?
前言2020.11月,这个月是我加盟xxx国企的一年整,这篇分享本来是要提前写的,不过由于前段时间确实繁忙,一直没有机会提笔。今天简单和大家分享下我在国企的一些工作内容,感悟等等,希望能给那些对自身规划仍然迷茫的朋友们,带来一些真切实在的分享和建议,愿大家少走弯路。国企为什么会有IT部门要想知道在国企搞IT都做什么,首先可能需要了解一下国企为什么会有IT部门,也就是说国企对IT的诉求到底在哪里。 随着企业的发展,企业中各种“慢贵难”问题日益凸显,人力,生产,办公,采购,制造,销售等等领域,方原创 2020-11-16 17:45:46 · 483 阅读 · 1 评论 -
你还在问我Bean的生命周期?带你看看一个Spring Bean从诞生到逝去的九次人生转折!
前言关于Spring生命周期的学习,前面已经写过很多篇文章去不断的探究Spring对一个Bean的创建、管理过程,在整个SpringBean的生命周期中,BeanPostProcessor是不可绕过的一环,他几乎贯穿了整个Spring Bean的生命周期!几乎我们现在所熟知Bean的生命周期的功能,大部分都是由BeanPostProcessor完成的!比如,依赖注入、循环依赖问题、Aop等,全部都是由BeanPostProcessor的扩展实现的!BeanPostProcessor的学习是我们理解S原创 2020-11-16 16:52:26 · 130 阅读 · 0 评论 -
首发!阿里大佬整理万字MyBatis实战笔记,精简易懂,开源免费下载
MyBatis作为国内经常使用的持久层框架,其内部代码的设计非常优秀。比如在开发过程中,有能力对框架进行深度的定制化开发,解决BUG也更加得心应手!另外学习开发者是如何设计高扩展性、低耦合性的代码,便于在自己的开发场景中应用。而在跳槽的时候MyBatis更是面试必问的内容,那你对于MyBatis又掌握了多少呢?想学习MyBatisK但,市面上真正适合学习的MyBatis资料太少,有的书或资料虽然讲得比较深入,但是语言晦涩难懂,大多数人看完这些书基本都是从入门到放弃。学透MyBatis源码难道就真的就没有一转载 2020-11-12 21:28:45 · 178 阅读 · 0 评论 -
阿里为什么弃用hibernate?看完Mybatis源码,我目瞪口呆
最近一直在研究MyBatis源码,作为国内经常使用的持久层框架,其内部代码的设计非常优秀。比如在开发过程中,有能力对框架进行深度的定制化开发,解决BUG也更加得心应手!另外学习开发者是如何设计高扩展性、低耦合性的代码,便于在自己的开发场景中应用。而在Mybatis中,缓存是一个绕不开的话题。比如说,MyBatis的一级缓存竟然还会引来麻烦?MyBatis 一级缓存与 SpringFramework 的声明式事务有冲突吗?在 Service 中开启事务,连续查询两次同样的数据,结果两次查询的结果不一致。这原创 2020-11-09 14:35:15 · 580 阅读 · 5 评论 -
面对海量数据,如何才能查得更快?
本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等本文和大家分享一下如何来保存原始数据,我们知道,原始数据的数据量太大,能存下来就很不容易了,这个数据是没法直接来给业务系统查询和分析的。有两个原因,一是数据量太大了,二是也没有很好的数据结构和查询能力,来支持业务系统查询。所以一般的做法是,用流计算或者是批计算,把原始数据再进行一次或者多次的过滤、汇聚和计算,把计算结果落到另外一个存储系统中去,由这个存储再给业务系统提供查询支持。这里的“流计算”,指的是 Flink、Storm..原创 2020-08-29 20:18:35 · 713 阅读 · 1 评论 -
揭秘:一条SQL语句的执行过程是怎么样的?
本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等数据库系统能够接受 SQL 语句,并返回数据查询的结果,或者对数据库中的数据进行修改,可以说几乎每个程序员都使用过它。而 MySQL 又是目前使用最广泛的数据库。所以,解析一下 MySQL 编译并执行 SQL 语句的过程,一方面能帮助你加深对数据库领域的编译技术的理解;另一方面,由于 SQL 是一种最成功的 DSL(特定领域语言),所以理解了 MySQL 编译器的内部运作机制,也能加深你对所有使用数据操作类 DSL 的理解,比如.原创 2020-08-26 21:10:31 · 608 阅读 · 0 评论 -
面试官:有没有比读写锁更快的锁?StampedLock了解下
本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等本文主要和大家分享一下 StampedLock 的使用方法、内部工作原理以及在使用过程中需要注意的事项。一、StampedLock支持的三种锁模式我们先来看看在使用上 StampedLock 和上一篇文章讲的 ReadWriteLock 有哪些区别。ReadWriteLock 支持两种模式:一种是读锁,一种是写锁。而 StampedLock 支持三种模式,分别是:写锁、悲观读锁和乐观读。其中,写锁、悲观读锁的语义和 Rea..原创 2020-08-22 20:26:22 · 345 阅读 · 0 评论 -
数据库中的数据是如何被黑客拖取的?
本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等说到数据库,你肯定会说:“数据库是我最熟悉的工具了。利用它,我能够设计复杂的表结构、写出炫酷的 SQL 语句、优化高并发场景下的读写性能。”当然,我们的日常工作离不开数据库的使用。而且,数据库中储存的大量机密信息,对于公司和用户都至关重要。那关于数据库的安全你知道多少呢?你知道数据库是如何进行认证的吗?使用数据库交换数据的过程是安全的吗?假如黑客连入了数据库,又会发生什么呢?今天,我就以两种比较常见的数据库 Redis 和 My.原创 2020-08-13 17:46:16 · 415 阅读 · 0 评论 -
如何用数据结构和算法实现一个短网址系统?
本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等短网址服务你用过吗?如果我们在微博里发布一条带网址的信息,微博会把里面的网址转化成一个更短的网址。我们只要访问这个短网址,就相当于访问原始的网址。从功能上讲,短网址服务其实非常简单,就是把一个长的网址转化成一个短的网址。作为一名软件工程师,你是否思考过,这样一个简单的功能,是如何实现的呢?底层都依赖了哪些数据结构和算法呢?一、短网址服务整体介绍刚刚我们讲了,短网址服务的一个核心功能,就是把原始的长网址转化成短网址。除了这个功.原创 2020-08-10 18:13:31 · 350 阅读 · 0 评论 -
阿里架构师浅析数据结构:队列在线程池等有限资源池中的应用
本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等我们知道,CPU 资源是有限的,任务的处理速度与线程个数并不是线性正相关。相反,过多的线程反而会导致 CPU 频繁切换,处理性能下降。所以,线程池的大小一般都是综合考虑要处理任务的特点和硬件环境,来事先设置的。当我们向固定大小的线程池中请求一个线程时,如果线程池中没有空闲资源了,这个时候线程池如何处理这个请求?是拒绝请求还是排队请求?各种处理策略又是怎么实现的呢?实际上,这些问题并不复杂,其底层的数据结构就是我们今天要学的内容.原创 2020-08-05 17:49:47 · 206 阅读 · 0 评论 -
阿里大牛的数据库优化方案:写入数据量增加时,如何实现分库分表?
本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等之前个大家分享给在高并发下数据库的一种优化方案:读写分离,它就是依靠主从复制的技术使得数据库实现了数据复制为多份,增强了抵抗大量并发读请求的能力,提升了数据库的查询性能的同时,也提升了数据的安全性,当某一个数据库节点,无论是主库还是从库发生故障时,我们还有其他的节点中存储着全量的数据,保证数据不会丢失。此时,你的电商系统的架构图变成了下面这样:这时,公司 CEO 突然传来一个好消息,运营推广持续带来了流量,你所设计的电商系统的.原创 2020-08-02 20:53:03 · 400 阅读 · 0 评论 -
反应式编程框架设计:如何使程序调用不阻塞等待,立即响应?
本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等在之前的文章中就讨论过为什么在高并发的情况下,程序会崩溃。主要原因是,在高并发的情况下,有大量用户请求需要程序计算处理,而目前的处理方式是,为每个用户请求分配一个线程,当程序内部因为访问数据库等原因造成线程阻塞时,线程无法释放去处理其他请求,这样就会造成请求堆积,不断消耗资源,最终导致程序崩溃。这是传统的 Web 应用程序运行期的线程特性。对于一个高并发的应用系统来说,总是同时有很多个用户请求到达系统的 Web 容器。Web .原创 2020-07-29 20:57:56 · 450 阅读 · 0 评论 -
阿里架构师的炫技与克制:代码的两种味道与态度
本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等虽然你代码可能已经写得不少了,但要真正提高代码水平,其实还需要多读代码。就像写作,写得再多,不多读书,思维和认知水平其实是很难提高的。代码读得多了,慢慢就会感受到好代码中有一种味道和品质:克制。但也会发现另一种代码,它也会散发出一种味道:炫技。一、炫技什么是炫技的代码?我先从一个读代码的故事说起。几年前我因为工作需要,去研究一个开源项目的源代码。这是一个国外知名互联网公司开源的工具项目,据说已在内部孵化了 6 年之久,这才.原创 2020-07-23 21:24:48 · 300 阅读 · 0 评论 -
熟悉会导致轻蔑,记一次MySQL 选错索引的原因
本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等MySQL 中,可以为某张表指定多个索引,但在语句具体执行时,选用哪个索引是由 MySQL 中执行器确定的。那么执行器选择索引的原则是什么,以及会不会出现选错索引的情况呢?先看这样一个例子:创建表 Y,设置两个普通索引, 创建一个存储过程用于插入数据。MySQL: 5.7.27, 隔离级别: RRCREATE TABLE `Y` ( `id` int(11) NOT NULL AUTO_INCREMENT, `.原创 2020-07-15 21:09:23 · 225 阅读 · 0 评论 -
海量数据做计算,到底可以有多快?
本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等内存计算是近十几年来,在数据库和大数据领域的一个热点。随着内存越来越便宜,CPU的架构越来越先进,整个数据库都可以放在内存中,并通过 SIMD 和并行计算技术,来提升数据处理的性能。我问你一个问题:做 1.6 亿条数据的汇总计算,需要花费多少时间呢?几秒?几十秒?还是几分钟?如果你经常使用数据库,肯定会知道,我们不会在数据库的一张表中保存上亿条的数据,因为处理速度会很慢。但今天,我会带你采用内存计算技术,提高海量数据处理工作的.原创 2020-07-14 21:33:27 · 631 阅读 · 0 评论 -
阿里架构师浅析系统高可用的实现,如何让你的系统不掉链子?
本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等在实际工作中,我们平常更关注系统业务功能的实现,而对于系统是否会出故障,总觉得那是小概率事件,一开始不会考虑得太多。然而系统上线后,我们会发现系统其实很脆弱,每个地方都可能会出问题,处理线上事故的时间往往超过了开发功能的时间。所以,对于系统的高可用,我想你经常会有这样的疑问:系统的高可用真的很重要吗?如何实现系统的高可用,具体都有哪些手段呢?十年前的时候,我们有几个数据来说明系统宕机对公司的影响,我记得其中一个是系统每宕掉 1.原创 2020-07-13 22:02:54 · 354 阅读 · 0 评论 -
看了这个高并发系统架构,才知道我对秒杀的误解有多深
本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等一、前言很多小伙伴反馈说,高并发学了那么久,但是在真正做项目时,仍然不知道如何下手处理高并发业务场景!甚至很多小伙伴仍然停留在只是简单的提供接口(CRUD)阶段,不知道学习的并发知识如何运用到实际项目中,就更别提如何构建高并发系统了!究竟什么样的系统算是高并发系统?今天,我们就一起解密高并发业务场景下典型的秒杀系统的架构,让大家学以致用。二、电商系统架构在电商领域,存在着典型的秒杀业务场景,那何谓秒杀场景呢。简单的来说就是.原创 2020-07-10 21:25:42 · 1367 阅读 · 3 评论 -
深入理解微服务架构:银弹or焦油坑?
本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等微服务是近几年非常火热的架构设计理念,大部分人认为是 Martin Fowler 提出了微服务概念,但事实上微服务概念的历史要早得多,也不是 Martin Fowler 创造出来的,Martin只是将微服务进行了系统的阐述。不过不能否认 Martin 在推动微服务起到的作用,微服务能火,Martin 功不可没。微服务的定义相信你早已耳熟能详,参考维基百科,我就来简单梳理一下微服务的历史吧2005 年:Dr. Peter ..原创 2020-07-07 20:59:03 · 395 阅读 · 0 评论 -
阿里大佬是怎么监控Kafka?这次算是长见识了
本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等监控 Kafka,历来都是个老大难的问题。无论是在我维护的微信公众号,还是 Kafka QQ群里面,大家问得最多的问题,一定是 Kafka 的监控。大家提问的内容看似五花八门,但真正想了解的,其实都是监控这点事,也就是我应该监控什么,怎么监控。我个人认为,和头疼医头、脚疼医脚的问题类似,在监控 Kafka 时,如果我们只监控Broker 的话,就难免以偏概全。单个 Broker 启动的进程虽然属于 Kafka 应用,但它也是一..原创 2020-07-06 20:39:19 · 424 阅读 · 0 评论 -
磁盘I/O性能优化的几个思路
本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等虽然 I/O 的性能指标很多,相应的性能分析工具也有好几个,但理解了各种指标的含义后,你就会发现它们其实都有一定的关联。顺着这些关系往下理解,你就会发现,掌握这些常用的瓶颈分析思路,其实并不难。找出了 I/O 的性能瓶颈后,下一步要做的就是优化了,也就是如何以最快的速度完成 I/O操作,或者换个思路,减少甚至避免磁盘的 I/O 操作。本文,我就来说说,优化 I/O 性能问题的思路和注意事项。I/O基准测试按照我的习惯,..原创 2020-07-05 21:43:05 · 1408 阅读 · 1 评论 -
Java虚拟机是怎么实现synchronized的?
本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等文章目录重量级锁轻量级锁偏向锁总结在 Java 程序中,我们可以利用 synchronized 关键字来对程序进行加锁。它既可以用来声明一个 synchronized 代码块,也可以直接标记静态方法或者实例方法。当声明 synchronized 代码块时,编译而成的字节码将包含 monitorenter 和 monitorexit指令。这两种指令均会消耗操作数栈上的一个引用类型的元素(也就是 synchronized 关键字括.原创 2020-07-02 21:16:52 · 186 阅读 · 0 评论 -
Kafka中位移提交那些事儿
本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等之前我们说过,Consumer 端有个位移的概念,它和消息在分区中的位移不是一回事儿,虽然它们的英文都是 Offset。今天我们要聊的位移是 Consumer 的消费位移,它记录了Consumer 要消费的下一条消息的位移。这可能和你以前了解的有些出入,不过切记是下一条消息的位移,而不是目前最新消费消息的位移。我来举个例子说明一下。假设一个分区中有 10 条消息,位移分别是 0 到 9。某个Consumer 应用已消费了 5 条.原创 2020-07-01 21:25:35 · 299 阅读 · 0 评论 -
阿里架构师的内存管理心得:如何避免内存溢出和频繁的垃圾回收?
本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等不知道你有没有发现,在高并发、高吞吐量的极限情况下,简单的事情就会变得没有那么简单了。一个业务逻辑非常简单的微服务,日常情况下都能稳定运行,为什么一到大促就卡死甚至进程挂掉?再比如,一个做数据汇总的应用,按照小时、天这样的粒度进行数据汇总都没问题,到年底需要汇总全年数据的时候,没等数据汇总出来,程序就死掉了。之所以出现这些情况,大部分的原因是,程序在设计的时候,没有针对高并发高吞吐量的情况做好内存管理。要想解决这类问题,首先你要.原创 2020-06-30 21:43:53 · 168 阅读 · 0 评论 -
这样简单地的设置一下,可以让你的让Docker镜像起飞
本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等一、前言Docker用起来非常爽,尤其是用于DevOps实践时。但是,当你在国内或者本地拉取镜像时,经常会碰到各种“便秘”——要么镜像拉取缓慢,要么时断时连,要么连接超时!当我们的镜像又比较大时(比如某人在代码里面丢了个魔兽争霸的包),这简直是一个噩梦!那么如何解决这个问题?接下来我们就主要从以下几个方面来解决这个问题:使用镜像加速器换源自己做镜像推送到国内仓库自己搭建就近镜像仓库最后的绝招(保密)二、镜像加速.原创 2020-06-29 20:31:29 · 168 阅读 · 0 评论 -
互联网大厂面试揭秘:MySQL查询常考的十道面试题
本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等表结构:`student`('id'、'name'、'code'、'age'、'sex')学生表`teacher`('id'、'name')教师表`course`('id'、'name'、'teacher_id')课程表`score`('student_id'、'course_id'、'score')成绩表问题:查询001课程比002课程成绩高的所有学生的信息查询所有课程成绩小于60分的同学的信息名查询平均成..原创 2020-06-28 15:56:19 · 225 阅读 · 0 评论 -
面试官:讲一讲你对数据结构——数组、链表、栈、队列的理解
本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等一、解释定义1. 数据结构:数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。再简单描述一下:数据结构就是描述对象间逻辑关系的学科。如果还是不太清楚下面会举例说明的。2. 数据存储结构:简单的讲就是数据在计算机中的存储方式。常用的数据存储方式有两种:顺序存储,非顺序存储。顺序存储就是把数据存储在一块联系的存储介质(硬盘或内存等)中。反之就是非顺序存储咯。Java中的数组就是典型的顺序存储,链表就是非顺序存储。.原创 2020-06-24 21:08:08 · 345 阅读 · 0 评论 -
一文详解消息队列——Kafka如何实现高性能IO?
本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等Kafka 是一个高性能的消息队列,在众多消息队列产品中,Kafka 的性能绝对是处于第一梯队的。我曾经在一台配置比较好的服务器上,对 Kafka 做过极限的性能压测,Kafka 单个节点的极限处理能力接近每秒钟 2000 万条消息,吞吐量达到每秒钟 600MB。你可能会问,Kafka 是如何做到这么高的性能的?之前就曾探讨过:怎么开发一个高性能的网络应用程序。其中提到了像全异步化的线程模型、高性能的异步网络传输、自定义的私有传.原创 2020-06-15 20:52:25 · 356 阅读 · 0 评论 -
面试官:你来举个栗子,如何使用异步设计提升系统性能?
最新互联网大厂面试真题、Java程序员面试策略(面试前的准备、面试中的技巧)请移步GitHub对于开发者来说,异步是一种程序设计的思想,使用异步模式设计的程序可以显著减少线程等待,从而在高吞吐量的场景中,极大提升系统的整体性能,显著降低时延。因此,像消息队列这种需要超高吞吐量和超低时延的中间件系统,在其核心流程中,一定会大量采用异步的设计思想。接下来,我们一起来通过一个非常简单的例子学习一下,使用异步设计是如何提升系统性能的。异步设计如何提升系统性能?假设我们要实现一个转账的微服务 Transf.原创 2020-06-13 21:53:31 · 317 阅读 · 0 评论 -
公司新来的阿里P7大牛,只用十分钟就教会了我实现高层次的复用
最新互联网大厂面试真题、Java程序员面试策略(面试前的准备、面试中的技巧)请移步GitHub作为开发人员,你对复用这个概念一定不陌生。在开发过程中,我们把系统中通用的代码逻辑抽取出来,变成公共方法或公共类,然后在多个地方调用,这就是最简单的技术上的复用。但一开始,我们不会过多地考虑复用,当一个新项目过来,我们会选择最直接的方式来实现,结果往往是欲速而不达,比如说:好不容易搞定了一个项目,接着又有新的类似项目过来,我们又要从头再来;项目的代码是定制的,项目结束后,系统维护的噩梦刚刚开始。如果项原创 2020-06-12 21:29:47 · 538 阅读 · 0 评论 -
P6到P7只用了两年,阅码无数的阿里大佬,是如何去阅读别人代码的?
最新互联网大厂面试真题、Java程序员面试策略(面试前的准备、面试中的技巧)请移步GitHub一、为何要读别人的代码?我们去阅读别人的代码,通常会带有一定的目的性。完整把一个系统的代码 “读懂” 需要极大的精力。所以明确阅读代码的目标很重要,因为它决定了你最终能够为这事付出多大的精力,或者说成本。大体来说,我们可以把目标分为这样几种类型:我要评估是否引入某个第三方模块;我要给某个模块局部修改一个 Bug(可能是因为使用的第三方模块遇到了一个问题,或者可能是你的上级临时指定了一个模块的 Bug原创 2020-06-11 15:56:20 · 577 阅读 · 0 评论 -
阿里P7大佬手把手叫我如何判断一个数据库是不是出问题了,受教了!
最新互联网大厂面试真题、Java程序员面试策略(面试前的准备、面试中的技巧)请移步GitHub在一主一备的双 M 架构里,主备切换只需要把客户端流量切到备库;而在一主多从架构里,主备切换除了要把客户端流量切到备库外,还需要把从库接到新主库上。主备切换有两种场景,一种是主动切换,一种是被动切换。而其中被动切换,往往是因为主库出问题了,由 HA 系统发起的。这也就引出了我们今天要讨论的问题:怎么判断一个主库出问题了?你一定会说,这很简单啊,连上 MySQL,执行个 select 1 就好了。但是 se原创 2020-06-09 20:58:14 · 253 阅读 · 0 评论 -
阿里P7架构师加持,这可能是全网把Spring Boot信息泄露讲的最清楚的文章
最新互联网大厂面试真题、Java程序员面试策略(面试前的准备、面试中的技巧)请移步GitHub一、路由地址及接口调用详情泄漏开发环境切换为线上生产环境时,相关人员没有更改配置文件或忘记切换配置环境,导致此漏洞直接访问以下几个路由,验证漏洞是否存在:/api-docs/v2/api-docs/swagger-ui.html一些可能会遇到的接口路由变形:/api.html/sw/swagger-ui.html/api/swagger-ui.html/template/swagger.原创 2020-06-08 21:53:24 · 538 阅读 · 0 评论 -
为什么公司新来的阿里P8大佬说:这几种情况下不能使用Java泛型
最新互联网大厂面试真题、Java程序员面试策略(面试前的准备、面试中的技巧)请访问GitHub1. 前言Java 1.5 引入了泛型来保证类型安全,防止在运行时发生类型转换异常,让类型参数化,提高了代码的可读性和重用率。但是有些情况下泛型也是不允许使用的,今天就总结一下编码中不能使用泛型的一些场景。2. 基本类型无法直接使用泛型以下写法是错误的:// error Map<int,char> wrong= new HashMap<>()基本类型是不能够作为泛型类型的,需原创 2020-06-03 22:09:19 · 243 阅读 · 0 评论 -
天天都在用数据库,你真的搞懂MySQL数据库索引是如何实现的吗?
最新互联网大厂面试真题、Java程序员面试策略(面试前的准备、面试中的技巧)请移步GitHub作为一个Java开发工程师,你对数据库肯定再熟悉不过了。作为主流的数据存储系统,它在我们的业务开发中,有着举足轻重的地位。在工作中,为了加速数据库中数据的查找速度,我们常用的处理思路是,对表中数据创建索引。那你是否思考过,数据库索引是如何实现的呢?底层使用的是什么数据结构和算法呢?一、解决问题的前提是定义清楚问题如何定义清楚问题呢?除了对问题进行详细的调研,还有一个办法,那就是,通过对一些模糊的需求进行假.原创 2020-06-02 15:43:24 · 253 阅读 · 0 评论 -
编码10小时,崩溃一瞬间,原来P8是这么处理多任务中的java性能问题
最新互联网大厂面试真题、Java程序员面试策略(面试前的准备、面试中的技巧)请移步"GitHub"在生产实践中,为了降低公司运营成本,更好地利用系统容量,并提高资源使用率,我们经常会让多个应用程序,同时运行在同一台服务器上。但是,万事有利就有弊。这几个共存的应用程序,有可能会互相影响;有时还会导致严重的性能问题。我就遇到过,几个程序同时运行,最后导致吞吐量急剧下降的情况。所以,今天我们就来探讨,当多个 Java 应用程序共存在一个 Linux 系统上的时候,会产生哪些性能问题?我们又该怎么解决这些问原创 2020-06-01 21:12:09 · 373 阅读 · 1 评论 -
关于高并发系统设计看这篇就够了,阿里、百度、美团都在用
本文转载自:关于"高并发系统设计"看这篇就够了,阿里、百度、美团都在用“秒杀活动”、“抢红包”、“微博热搜”、“12306抢票”、"共享单车拉新"等都是高并发的典型业务场景,那么如何解决这些业务场景背后的难点问题呢?秒杀系统中,QPS达到10万/s时,如何定位并解决业务瓶颈?明星婚恋话题不断弓|爆微博热搜,如何确保系统不宕机?共享单车充值活动,如何保证不超卖?…同一时间、海量用户的高频访问对任何平台都是难题,但可喜的是,虽然业务场景不同,设计和优化的思想却是万变不离宗。如果你掌握了高并发系原创 2020-05-21 15:38:36 · 2324 阅读 · 0 评论 -
深入理解Java编程性能调优——深入浅出HashMap的设计与优化
HashMap 作为我们日常使用最频繁的容器之一,相信你一定不陌生了。今天我们就从HashMap 的底层实现讲起,深度了解下它的设计与优化。常用的数据结构我在 05 讲分享 List 集合类的时候,讲过 ArrayList 是基于数组的数据结构实现的,LinkedList 是基于链表的数据结构实现的,而我今天要讲的 HashMap 是基于哈希表的数据结构实现的。我们不妨一起来温习下常用的数据结构,这样也有助于你更好地理解后面地内容。数组:采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复原创 2020-05-19 15:41:26 · 350 阅读 · 0 评论