Java
文章平均质量分 88
程序员阿轩
Java领域:架构干货分享:互联网分析
展开
-
十年经验倾囊相授,MySQL-高性能使用索引,拿走不谢
前言索引是存储引擎用于快速找到记录的一种数据结构,索引对于良好的性能非常关键,特别是随着数据量的加大,索引对性能的影响越发重要,但是日常工作中索引经常被忽略,造成经常遇到糟糕索引导致的性能问题。索引优化是对查询性能优化最有效的手段,索引能够轻易将查询性能提高几个数量级,创建一个真正的最优索引,应该是研发追求的目标。所谓索引其实就是我们日常经常使用目录,协助我们尽快找到需要的内容。索引有很多种类型,为不同的场景提供更好的性能。在MySQL中,索引是在存储引擎层实现,而不是在服务器层实现,所以并没有统一的索原创 2021-06-24 15:57:15 · 354 阅读 · 1 评论 -
炒干货!!!Springboot整合Shiro实现登录加密和权限
这篇文章实打实的技术指导,废话不多说,直接开始干,希望大家多多一键三连支持一下野生技术博客,毕竟这年头技术博士不多见了呀先看看下面的teacher表role表 perms表 shiro是一个安全框架,可以进行认证、授权、密码加密、会话管理 从外部来解析shiro框架:Subject:主体,代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject,如网络爬虫,机器人等;即一个抽象概念;所有Subject都绑定到SecurityManager,与Subject原创 2021-06-24 14:33:43 · 493 阅读 · 1 评论 -
前三星程序员被无良HR欺骗,因祸得福竟“意外”拿下字节跳动offer(定薪45K)
前言先讲述一下自己为什么到字节跳动面试的原因吧,因为上一次面试被无良HR欺骗坑惨,面试的是一家上海某电商公司,给的薪资是不错。面试的时候,找我要了工资流水,然后给了我口头offer,就让我回去等了邮件了。回去之后就觉得offer没啥问题,稳稳当当了,就没再去面其他的公司,打起了游戏。结果等了两个礼拜也没等来邮件,问HR告诉我在走流程,我问是不是不要我,HR说要,让我继续等。再过了几天我再去问,HR就怎么都不回我了,这个时候我才反应过来“坏了”。好在后来我马上开始面试其他的公司,阴差阳错拿到了字节跳动的o原创 2021-06-23 16:46:28 · 972 阅读 · 0 评论 -
网曝:985毕业的“打工人”,大厂java开发5年被裁,内卷优化后还被经历了哪些黑幕?
周末的时候,一个很久没联系的朋友在微信上找到我,说有些关于程序员职业规划的问题想聊一聊。其实我跟他并不熟,甚至不记得是因为什么加的微信,只记得有过几次问题的探讨。那个时候,他还在大厂工作,负责一个创新业务的产品工作。现在,他刚从那家待了两年的大厂离职了。按他的说法,自己是被「优化」的。「优化」这个词也算一个互联网行业的「黑话」,通常指因为某些原因被辞退或者拿了公司赔偿后主动离职的。他发给我的经历,我看完后觉得,其实相对于大多数职场人来说,他的履历还算是光鲜的。本科985,毕业后通过校招进了美团原创 2021-06-23 10:01:24 · 445 阅读 · 0 评论 -
Github标星35K+超火的整理宝典【数据结构和算法】爆肝三万字你必须知道的20个解决问题的技巧
前言数据结构和算法 (DSA) 通常被认为是一个令人生畏的话题——一种常见的误解。它们是技术领域最具创新性概念的基础,对于工作/实习申请者和有经验的程序员的职业发展都至关重要。掌握DSA意味着你能够使用你的计算和算法思维来解决前所未见的问题,并为任何科技公司的价值做出贡献(包括你自己的!)。通过了解它们,您可以提高代码的可维护性、可扩展性和效率。话虽如此,我决定将我所了解的数据结构和算法集中起来。本文旨在使 DSA 看起来不像人们认为的那样令人生畏。它包括 15 个最有用的数据结构和 15 个最重要原创 2021-06-22 20:58:14 · 2606 阅读 · 0 评论 -
阿里巴巴面试官:谈谈 Tomcat 请求处理流程,我一脸懵逼。。
很多东西在时序图中体现的已经非常清楚了,没有必要再一步一步的作介绍,所以本文以图为主,然后对部分内容加以简单解释。那接下来我将重点聊聊Tomcat,希望给你以借鉴!大家看完觉得还不错的话,别忘了给个一键三连哦!绘制图形使用的工具是 PlantUML + Visual Studio Code + PlantUML Extension本文对 Tomcat 的介绍以 Tomcat-9.0.0.M22 为标准。https://tomcat.apache.org/tomcat-9.0-doc/index.h原创 2021-06-21 15:14:42 · 224 阅读 · 0 评论 -
渣硕试水字节跳动,消息队列面试连环问,本以为简历都过不了,123+HR面直接拿到意向书满满干货指导!
消息队列核心知识点有很多,为了更贴合实际场景,这里我们从常见的面试问题入手:如何保证消息不丢失?如何处理重复消息?如何保证消息的有序性?如何处理消息堆积?当然在剖析这几个问题之前需要简单的介绍下什么是消息队列,消息队列常见的一些基本术语和概念。接下来进入正文。什么是消息队列来看看维基百科怎么说的,顺带学学英语这波不亏:In computer science, message queues and mailboxes are software-engineering component转载 2021-06-18 17:01:29 · 433 阅读 · 0 评论 -
我把Github上最牛b的Java教程设计模式(三)命令模式整合成了一个PDF文档
前言今天在面试别人的过程,问到了设计模式,他说命令模式,what!!我没有听过,我只能强装淡定,问了问他,回来赶紧翻翻书,补一补。命令模式日常背书:命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。先来讲个故事吧,再来说说自己的理解。板面的故事板面相信大家都吃过吧,今天讲的是公司那边的一家板面店, 我们皮皮家族经常去吃,这家店中原创 2021-06-18 15:42:20 · 258 阅读 · 2 评论 -
阿里内部Java实战指南|花3分钟你就初步掌握了Redis分布式锁
前言:随着互联网的发展,单体架构所存在的问题也一一爆了出来,如部署成本高,迭代速度慢,不易于扩展等问题,微服务架构也油然而生,微服务的出现,并不是为了替代原先单体架构,而是为了解决单体架构出现的相关问题;微服务并不是为了取代某一种程序架构,而是它更适合于某种业务场景或更好地解决某种问题。然而微服务的出现也会带来一些相关的问题如:分布式问题更加复杂化:因为本来分布式问题就存在,比如分布式锁,分布式事务,数据一致性等问题,随着服务的细化,自然就让分布式问题更加复杂化;问题排查增加难度:微服务很多时原创 2021-06-18 14:33:34 · 208 阅读 · 1 评论 -
Github标星35K+超火的阿里p7大佬整理的Java核心知识总结,附超全教程文档
JDK JRE JVMJDK:Java标准开发包,它提供了编译、运⾏Java程序所需的各种⼯具和资源,包括Java编译器、Java运⾏时环境,以及常⽤的Java类库等。JRE:Java运⾏环境,⽤于解释执⾏Java的字节码⽂件。JVM:Java虚拟机,是JRE的⼀部分。负责解释执⾏字节码⽂件,是可运⾏java字节码⽂件的虚拟计算机区别联系:JDK包含JRE,JDK 和 JRE 中都包含 JVM。JDK出了包含jre还包含⼀些常⽤开发⼯具和基础类库JDK ⽤于开发,JRE ⽤于运⾏jav.原创 2021-06-17 15:40:25 · 356 阅读 · 0 评论 -
大厂面试内幕:阿里内部整理出的5000页Java多线程面试题(含答案)复盘指南,起飞
Java并发编程问题是面试过程中很容易遇到的问题,提前准备是解决问题的最好办法,将试题总结起来,时常查看会有奇效。在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。如果你想获得更多职位,那么你应该准备很多关于多线程的问题。他们会问面试者很多令人混淆的Java线程问题。面试官只是想确信面试者有足够的Java线程与并发方面的知识,因为候选人中有很多只浮于表面。现在引用Java5并发包关于并发工具和并发集合的问题正在增多。那些问题中ThreadLocal、Blocking Queue、Count原创 2021-06-16 14:39:43 · 232 阅读 · 0 评论 -
学妹半夜想学SpringBoot,连夜起来整理了一篇SpringBoot入门最详细教程笔记,看完才准睡觉!
前言凭借开箱即用,远离繁琐的配置等特性,Spring Boot 已经成为 Java 开发者人人必学必会的开源项目。那么开发者该如何快速上手Spring Boot 呢?Spring Boot 到底是啥?那请问Spring Boot 到底是啥?Spring Boot是Spring框架的扩展和自动化,它消除了在Spring中需要进行的XML(EXtensible Markup Language)文件配置(若习惯XML配置,则依然可以使用),使得开发变得更快、更高效、更自动化。微服务 微服务:每一个功能元原创 2021-06-09 22:18:24 · 300 阅读 · 1 评论 -
教妹学MySQL:哇塞!GitHub 上这些 实用的几种SQL语句太强了吧,看完哪个都变大佬!
前言SQL查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结一些方法,供大家参考学习。如果大家还有其他好的语句或者好的见解欢迎分享。实用的SQL1、常见 SQL 语句性能优化策略对查询进行优化,应尽量避免全表扫描,首先应考虑在 WHERE 及 ORDER BY 涉及的列上建立索引。应尽量避免在 WHERE 子句中对字段进行 NULL 值判断,创建表时 NULL 是默认值,但大多数时候应该使用 NOT NULL,或者使用一个特殊的值,如 0,-1 作为默认值。应尽原创 2021-06-07 15:44:19 · 413 阅读 · 4 评论 -
史无前例!肝了30天,我靠着这份java突击成功拿下蚂蚁金服offer
今年的大环境非常差,互联网企业裁员的现象比往年更严重了,可今年刚好是我的第一个“五年计划”截止的时间点,说什么也不能够耽搁了,所以早早准备的跳槽也在疫情好转之后开始进行了。前前后后面试了不下二十家公司,一二线大公司或者是融资中的创业公司都面试过,也拿了几个offer,其中包括美团、蚂蚁金服等。下面题目都是我总结这些天面试中问的大多数题目,综合分类有Java基础,框架,多线程,网络通信,数据库以及设计模式,算法等几个模块。如果大家还有其他好的题目或者好的见解欢迎分享。一、JVM出乎意料,Java虚拟机应原创 2021-06-03 21:11:37 · 292 阅读 · 2 评论 -
28岁因为不能月入过万,所以在一起5年的女朋友和我分手了,我想当程序员!可父母力阻我辞职,怎么办?
前言就因为女朋友说了一句,你看你兄弟是做程序员的一个月2万多,那像你天天加班加点的做月收入才8k,所以我选择了分手!大学选择的就是计算机专业,但是毕业后电商很火所以我选择去做跨境电商,这两年因为疫情的原因本来就想换行业分手应该是我压死我最后一根稻草,我现在有车无房,父母在老家有一个农场,每年能够挣个20多问万,我觉得我可以再拼一把,但是父母极力阻止我,希望我回去专心做农场即使在这样的情况下我还是选择了跳槽从头去做Java,因为我在城市买房买车!让前任看看新的面试一面:1hmysql知道哪些原创 2021-05-27 18:01:39 · 236 阅读 · 0 评论 -
毕业五年,年薪百万,我掌握了这些java最简单粗暴的入门线程方法
大家好!我是老猿,一个热爱技术的程序猿,Java行业入行7年,每天都在学习和分享的路上!线程1.简介大家都知道多线程给我们带来了更好的资源利用和更好的程序响应,所以关于它的简介我就不多阐明了,大家可以自行搜索,我主要讲的就是重点线程就是独立的执行路径;在程序运行时,即使没有自己创建线程,后台也会有多个线程,如主线程、gc线程;对同一份资源操作时,会存在资源抢夺的问题,需要加入并发控制;线程会带来额外的开销,如cpu调度时间,并发控制开销;每个线程在自己的工作内存交互,内存控制不当会造成数据不一致;2.线程创原创 2021-05-21 11:21:10 · 155 阅读 · 4 评论 -
太香!终于有阿里大牛用15分钟,把Java多线程性能优化讲明白了
大家好!我是老猿,一个热爱技术的程序猿,Java行业入行7年,每天都在学习和分享的路上!正文大家使用多线程无非是为了提高性能,但如果多线程使用不当,不但性能提升不明显,而且会使得资源消耗更大。下面列举一下可能会造成多线程性能问题的点:死锁过多串行化过多锁竞争切换上下文内存同步下面分别解析以上性能隐患死锁关于死锁,我们在学习操作系统的时候就知道它产生的原因和危害,这里就不从原理上去累述了,可以从下面的代码和图示重温一下死锁产生的原因:public class LeftRightDeadlo原创 2021-05-20 11:40:05 · 144 阅读 · 4 评论 -
15分钟教你快速学会!JVM内存区域异常分析
Java虚拟机在执行java程序时会把它所管理的内存会分为若干个不同的数据区域,不同的区域在内存不足时会抛出不同的异常。接下来将对各区域分别进行分析介绍,内容包括触发各区域OutOfMemoryError异常的代码,以及对其进行排查判定的过程。还会初步涉及几个与内存相关的最基本虚拟机参数。1、Java堆溢出Java堆用于存储对象实例,只要不断创建对象并保证对象不会被回收,那么当对象数量到达最大堆的容量限制后就会产生堆内存溢出异常。测试代码如下:/** * 探究Java堆溢出 * VM Args原创 2021-05-18 16:58:29 · 276 阅读 · 6 评论 -
90%的程序员都不知道的Redis过期删除策略和内存淘汰策略
先自己思考一下这些问题:①、如何设置Redis键的过期时间?②、设置完一个键的过期时间后,到了这个时间,这个键还能获取到么?假如获取不到那这个键还占据着内存吗?③、如何设置Redis的内存大小?当内存满了之后,Redis有哪些内存淘汰策略?我们又该如何选择?如果上面的几个问题你都懂,那么下面的内容你就不用看了;如果你不是很懂,那就带着这些问题往下看。1、设置Redis键过期时间 Redis提供了四个命令来设置过期时间(生存时间)。①、EXPIRE :表示将键 key 的生存时间设置为 ttl原创 2021-05-18 11:37:17 · 126 阅读 · 0 评论 -
采访了900个大厂员工,终于总结出10大MySQL性能调优方法
MYSQL是什么就不需要我一一解释了,一般都是工作2年的架构师所掌握的必备技能之一一定看到最后哦!!!所有方法都是整理实践亲测有效才会分享给大家!!1.选择合适的存储引擎: InnoDB现在基本都是默认选择InnoDB,不知道你们的习惯是什么,我自己测试的时候我觉得MyISAM 比 InnoDB 速度快,为什么?很简单 MyISAM 只缓存索引,而 InnoDB 缓存数据和索引,MyISAM 不支持事务。但是 如果你使用 innodb_flush_log_at_trx_commit = 2 你.原创 2021-05-17 17:26:03 · 153 阅读 · 0 评论 -
(最终篇)一文看透垃圾回收,深入剖析,浅入深出
由于上一篇文章篇幅比较多,我们在这一篇文章重点讲解上一篇文章中提到的 CMS 垃圾回收器,让你可以更好的理解垃圾回收的过程。还没阅读过上一篇文章的朋友可以点击此处查看以便更好理解:关于垃圾回收你真的了解透彻了吗?我熬夜深度剖析了一下在这里首先给你介绍几个概念:Minor GC:发生在年轻代的 GC。 Major GC:发生在老年代的 GC。 Full GC:全堆垃圾回收。比如 Metaspace 区引起年轻代和老年代的回收。理解了这三个概念,我们再往下看。CMS 的全称是 Most原创 2021-04-12 21:56:22 · 162 阅读 · 0 评论 -
关于垃圾回收你真的了解透彻了吗?我熬夜深度剖析了一下
本文章我们重点剖析 JVM 的垃圾回收机制。关于 JVM 垃圾回收机制面试中主要涉及这三个考题:JVM 中有哪些垃圾回收算法?它们各自有什么优劣? CMS 垃圾回收器是怎么工作的?有哪些阶段? 服务卡顿的元凶到底是谁?虽然 Java 不用“手动管理”内存回收,代码写起来很顺畅。但是你有没有想过,这些内存是怎么被回收的?其实,JVM 是有专门的线程在做这件事情。当我们的内存空间达到一定条件时,会自动触发。这个过程就叫作 GC,负责 GC 的组件,就叫作垃圾回收器。JVM 规范并没有规定垃圾回原创 2021-04-10 16:13:03 · 214 阅读 · 0 评论 -
面试时总是搞混JMM 与 JVM?一文带你了解得透透的
本篇文章我们主要分析一个大厂面试题:不要搞混 JMM 与 JVM。在面试的时候,有一个问题经常被问到,那就是 Java 的内存模型,它已经成为了面试中的标配,是非常具有原理性的一个知识点。但是,有不少人把它和 JVM 的内存布局搞混了,以至于答非所问。这个现象在一些工作多年的程序员中非常普遍,主要是因为 JMM 与多线程有关,而且相对于底层而言,很多人平常的工作就是 CRUD,很难接触到这方面的知识。JMM 概念在前几篇文章,就已经了解了 JVM 的内存布局,你可以认为这是 JVM 的数据存储模原创 2021-04-06 22:24:19 · 369 阅读 · 0 评论 -
怎么得心应手应对 OOM 的疑难杂症?我给出了详细的解析
在前面几篇文章中,我们不止一次提到了堆(heap),堆是一个巨大的对象池。在这个对象池中管理着数量巨大的对象实例。而池中对象的引用层次,有的是很深的。一个被频繁调用的接口,每秒生成对象的速度,也是非常可观的。对象之间的关系,形成了一张巨大的网。虽然 Java 一直在营造一种无限内存的氛围,但对象不能只增不减,所以需要垃圾回收。那 JVM 是如何判断哪些对象应该被回收?哪些应该被保持呢?在古代,刑罚中有诛九族一说。指的是有些人犯大事时,皇上杀一人不足以平复内心的愤怒时,会对亲朋好友产生连带责任。诛原创 2021-04-03 21:11:46 · 109 阅读 · 0 评论 -
大厂面试题:有了G1还需要其他垃圾回收器吗?我教你怎么答
本篇文章我们主要来看下这两个高频的面试考题:G1 的回收原理是什么?为什么 G1 比传统 GC 回收性能好? 为什么 G1 如此完美仍然会有 ZGC?我们在上次,简要的介绍了 CMS 垃圾回收器,下面我们简单回忆一下它的一个极端场景(而且是经常发生的场景)。在发生 Minor GC 时,由于 Survivor 区已经放不下了,多出的对象只能提升(promotion)到老年代。但是此时老年代因为空间碎片的缘故,会发生 concurrent mode failure 的错误。这个时候,就需要降级为原创 2021-04-01 21:32:50 · 324 阅读 · 0 评论 -
JVM探究:全面解析OOM异常,都在这了,看完再也不怕遇到了
在Java虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError(下文称OOM)异常的可能。本节探究主要基于jdk1.8的内存结构。JVM探究:全面解析OOM异常,都在这了,看完再也不怕遇到了1. Java堆溢出Java堆用于存储对象实例,只要不断地创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么在对象数量到达最大堆的容量限制后就会产生内存溢出异常。import java.util.Arra原创 2021-03-31 17:57:14 · 583 阅读 · 0 评论 -
Zookeeper和Redis实现分布式锁,附我的可靠性分析
在分布式系统中,为保证同一时间只有一个客户端可以对共享资源进行操作,需要对共享资源加锁来实现,常见有三种方式:基于数据库实现分布式锁 基于 Redis 实现分布式锁 基于 Zookeeper 实现分布式锁高并发下数据库锁性能太差,本文不做探究。仅针对Redis 和 Zookeeper 实现的分布式锁进行分析。实现一个分布式锁应该具备的特性:高可用、高性能的获取锁与释放锁 在分布式系统环境下,一个方法或者变量同一时间只能被一个线程操作 具备锁失效机制,网络中断或宕机无法释放锁时,锁必须被原创 2021-03-30 17:20:35 · 148 阅读 · 0 评论 -
全网最透彻!Dubbo整合SpringBoot详解,又通宵了
目前的dubbo已支持和springboot集成,还是之前的例子,这次我们通过springboot容器来实现。借此了解一下基于springboot容器启动的dubbo的配置及使用。1. 准备工作创建一个Maven空项目,作为项目的父工程,此工程的子项目基于Spring Boot 2.0.5 实现在父工程的pom.xml引入之后要创建的子工程 <modules> <module>gmall-interface</module>.原创 2021-03-29 16:30:56 · 6884 阅读 · 4 评论 -
Redis:看完就比常人多会三种类型实战,可以拿去炫耀了
前言对于Redis而言,很多小伙伴只关注其关键的五大基础类型:string、hash、list、set、sorted set(有序集合),其实还有三种特殊类型在很多应用场景也比较适合使用,分别是:bitmap、geospatial、hyperloglog;上一篇(跟我一起学Redis之五种基本类型及其应用场景举例(干了6个小时))对五种类型进行分享,接下来结合应用场景来说说三种特殊类型的使用方式;正文geospatial(地理空间)该类型在Redis3.2.0版本中加入,其本质是将经纬度通过原创 2021-03-25 17:55:47 · 138 阅读 · 0 评论 -
美团面试官总结的“Spring boot面试文档”,全是大厂高频面试题,太全了!
前言Spring boot不单单在BAT这些一线大厂使用率极其的高,在中小企业中使用率也是非常高的,又赶上现在是跳槽面试的高峰期“金三银四”,企业的需求增大,当然对待面试者的要求也会随之提高,竞争也会随之增大。相信现在的你之所以可以看到我的这篇文章,那肯定是因为最近在准备面试,到处搜刮面试题吧,今天给大家分享的这份“spring boot面试题集锦”,是美团面试官花了几个月的时间整理的,涵盖一线大厂所有常见的高频spring boot面试题,十分全面!现在分享给大家。xu要这份文档的完整版可以原创 2021-03-24 17:46:06 · 167 阅读 · 0 评论 -
透彻!Ingress-nginx工作原理和实践,这操作可以吧
本文记录/分享 目前项目的 K8s 部署结构和请求追踪改造方案这个图算是一个通用的前后端分离的 k8s 部署结构:Nginx Ingress 负责暴露服务(nginx前端静态资源服务), 根据十二要素应用的原则,将后端 api 作为 nginx 服务的附加动态资源。Ingress vs Ingress-nginx#Ingress 是一种向 k8s 集群外部的客户端公开服务的方法,Ingress 在网络协议栈的应用层工作,根据请求的主机名 host 和路径 path 决定请求转发..原创 2021-03-24 17:00:52 · 655 阅读 · 0 评论 -
最简单的JVM内存结构图!既详细又简单明了,十分钟掌握
JVM内存结构图大家好,好几天没有更新了,今天的内容有点多,我们详细介绍下JVM内部结构图,还是和之前一样,案例先行,方便大家理解记忆。/** * @author :jiaolian * @date :Created in 2021-03-10 21:28 * @description:helloworld测试jvm内存区域 * @modified By: * 公众号:叫练 */public class HelloWorldTest { public static.原创 2021-03-23 22:00:02 · 1303 阅读 · 0 评论 -
超硬核!MySQL优化从执行计划开始(explain超详细)
前言小伙伴一定遇到过这样反馈:这页面加载数据太慢啦,甚至有的超时了,用户体验极差,需要赶紧优化;反馈等同于投诉啊,多有几次,估计领导要找你谈话啦。于是不得不停下手里头的活,赶紧进行排查,最终可能是程序处理的问题、也可能是并发量大导致排队问题、也可能是SQL查询性能导致等;而在很多时候,SQL查询缓慢是最直接拖慢系统的罪魁祸首,同样是实现一个功能,有的小伙伴毫秒级呈现效果,有的却要好几秒,而调优需要的花费时间不容小觑,最终可能就体现到个人业务能力上和形象上:哇,真牛逼,分分钟搞定; 菜鸟,居然写出原创 2021-03-22 20:13:57 · 218 阅读 · 0 评论 -
当Parallel遇上了DI—Spring并行数据聚合最佳实践
分析淘宝PDP让我们先看个图, Taobao的PDP(Product Detail Page)页.打开Chrome Network面板, 让我们来看taobao是怎么加载这个页面数据的. 根据经验, 一般是异步加载的, 要么是XHR,要么就是js(jsonp), 你应该很快可以找到还能看到这个接口的性能神奇的是,taobao竟然在一次请求中拉下了整个PDP页的完整数据, 而且服务端处理耗时不到125ms首先, 这么做有什么好处?前后端开发对接简单 在...原创 2021-03-21 21:04:24 · 191 阅读 · 0 评论 -
保姆级教程!手把手带你用数据库中间件Mycat+SpringBoot完成分库分表
一、背景随着时间和业务的发展,数据库中的数据量增长是不可控的,库和表中的数据会越来越大,随之带来的是更高的磁盘、IO、系统开销,甚至性能上的瓶颈,而一台服务的资源终究是有限的,因此需要对数据库和表进行拆分,从而更好的提供数据服务。当用户表达到千万级别,在做很多操作的时候都会很吃力,所以当数据增长到 1000 万以上就需要分库分表来缓解单库(表)的压力。二、什么是分库分表简单来说,就是指通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载原创 2021-03-20 21:58:44 · 261 阅读 · 0 评论 -
从不同的角度教你类加载子系统,十分钟看懂!不来看看?
类文件首先需要经过类加载子系统,进行加载,进类信息等加载到运行时数据区,生成Klass的实例。在类加载子系统中有以下3个阶段操作(广义上的加载):加载阶段 Bootstrap ClassLoader:引导类加载器,主要加载JDK里面的核心类 Extension ClassLoader:拓展类加载器 Application ClassLoader:应用加载器 链接阶段 验证 链接 解析 初始化阶段如果加载的时候失败了,则不会执行后面的链接等操作。...原创 2021-03-17 17:59:25 · 94 阅读 · 0 评论 -
Java树结构实际应用(平衡二叉树/AVL树),讲得透透的
1、 看一个案例(说明二叉排序树可能的问题)给你一个数列{1,2,3,4,5,6},要求创建一颗二叉排序树(BST), 并分析问题所在. 左边 BST 存在的问题分析:1) 左子树全部为空,从形式上看,更像一个单链表.2) 插入速度没有影响3) 查询速度明显降低(因为需要依次比较), 不能发挥 BST的优势,因为每次还需要比较左子树,其查询速度比单链表还慢4) 解决方案-平衡二叉树(AVL)2、 基本介绍1) 平衡二叉树也叫平衡二叉搜索树(Self-balancin原创 2021-03-16 17:26:09 · 373 阅读 · 0 评论 -
全程干货!RabbitMQ与SpringBoot简单整合详解
目录配置 实现生产者和消费者 生产者 消费者 测试 总结RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用。Spring Boot的兴起,极大地简化了Spring的开发,本文将使用Spring Boot与RabbitMQ进行简单整合,实现生产和消费消息。配置Spring Boot使用了这么久,套路差不多摸清楚了。Spring Boot与其他组件进行整合,无非就是加入pom依赖,接着配置一些基本信息,然后就可以使用相关注解进行开发了。...原创 2021-03-13 17:46:00 · 310 阅读 · 0 评论 -
腾讯高工保姆级“Java成长手册”,层层递进,全是精华
好像在当今这个社会,什么事物都会分成不同的层级,不管是物件还是人,虽然当今这个时代,是一个人人平等的时代,但是现实中还是有着各种不同的层级。作为程序员的我们,也同样是一样的,有的是在小公司的,有的是在外包公司,有的是在BAT这样的一线大厂,在大厂也会对程序员进行分级,P6、P7、P8...等等,这些层级就好像代表着程序员自身技术能力的分级。努力的人一直在往前,就像打怪升级一样的,安于现状的人,就一直停留在现在这个层级中,原地踏步。今天给大家分享的这份腾讯高工手写的“Java成长手册”,每一...原创 2021-03-12 17:17:32 · 560 阅读 · 2 评论 -
面试必备的计算机网络核心知识点,全都梳理好了,去怼面试官吧
目录1. OSI参考模型与TCP/IP参考模型 2. TCP的三次握手2.1 传输控制协议TCP简介:2.2 TCP报文头:2.3 三次握手3. TCP的四次挥手3.1 四次挥手的过程3.2 为什么会有TIME_WAIT状态?3.3 为什么需要四次挥手才能断开连接?4. TCP和UDP的区别4.1 UDP特点4.2 TCP和UDP区别:5. HTTP详解5.1 协议简介5.2 HTTP主要特点5.3 请求/响应的步骤5.4 在浏览器地址栏键...原创 2021-03-11 16:47:51 · 404 阅读 · 0 评论