自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

凡是过往,皆为序章

Yesterday is a history, tomorrow is a mystery.

原创 阿里新版java开发手册(2019华山版、2020泰山版)

pdf文件链接: https://pan.baidu.com/s/15Q_qCyqLTG0wBFyHVM3zog提取码: in6y目录一、 编程规约(一) 命名风格(二) 常量定义(三) 代码格式(四) OOP 规约(五) 集合处理(六) 并发处理(七) 控制语句(八) 注释规约(九) 其它二、异常日志(一) 异常处理(二) 日...

2019-11-12 19:14:13 1110 1

转载 【收藏】饿了么4年 + 阿里2年:研发路上的一些总结与思考

“最重要的是选择,最困难的是坚持。”我是在 2014 年入职饿了么,从前端和 PHP 一直做到后端架构和团队,从 2014 年到 2017 年陆续负责过公司客服、销售、代理商、支付、清结算、订单这些业务的产研与团队;2018 年从业务研发团队抽身,6 个人组起一个小组投身机器学习,试图结合实际的业务场景通过技术改造业务;2019 年回归到平台(中台)研发,负责交易、金融、营销三个中台的研发和团队工作。基于我在饿了么4年和阿里巴巴 2 年研发经历,从技术、业务、管理和架构层面分享一些我的思考。技术层面

2020-07-27 10:54:59 73

转载 【两万字】面试官:听说你很懂集合源码,接我二十道问题!

【高能预警】:两万字长文,建议先收藏再看,深度源码分析,二十个问题带你一网打尽集合面试。问题一:看到这个图,你会想到什么?(PS:截图自《编程思想》)答:这个图由Map指向Collection的Produces并不是说Map是Collection的一个子类(子接口),这里的意思是指Map的KeySet获取到的一个视图是Collection的子接口。我们可以看到集合有两个基本接口:Map和Collection。但是我个人认为Map并不能说是一个集合,称之为映射或许更为合适,因..

2020-06-28 15:13:00 102

转载 (建议收藏)TCP协议灵魂之问,巩固你的网络底层基础

先亮出这篇文章的思维导图:TCP 作为传输层的协议,是一个软件工程师素养的体现,也是面试中经常被问到的知识点。在此,我将 TCP 核心的一些问题梳理了一下,希望能帮到各位。001. 能不能说一说 TCP 和 UDP 的区别?首先概括一下基本的区别:TCP是一个面向连接的、可靠的、基于字节流的传输层协议。而UDP是一个面向无连接的传输层协议。(就这么简单,其它TCP的特性也就没有了)。具体来分析,和 UDP 相比,TCP 有三大核心特性: 面向连接。所谓的连接,指..

2020-06-28 13:48:06 114

转载 InnoDB一棵B+树可以存放多少行数据?

一个问题?InnoDB一棵B+树可以存放多少行数据?这个问题的简单回答是:约2千万。为什么是这么多呢?因为这是可以算出来的,要搞清楚这个问题,我们先从InnoDB索引数据结构、数据组织方式说起。我们都知道计算机在存储数据的时候,有最小存储单元,这就好比我们今天进行现金的流通最小单位是一毛。在计算机中磁盘存储数据最小单元是扇区,一个扇区的大小是512字节,而文件系统(例如XFS/EXT4)他的最小单元是块,一个块的大小是4k,而对于我们的InnoDB存储引擎也有自己的最小储存单元——页(Page),一

2020-06-28 10:47:35 96

转载 如何记忆 Spring Bean 的生命周期

我之前在准备面试时,去网上搜过答案,大多以下图给出的流程作为答案。但是当我第一次看到该图时,就产生了很多困扰.“Aware,BeanPostProcessor......这些都是什么啊?而且这么多步骤,太多了,该怎么记啊?”。其实要记忆该过程,还是需要我们先去理解.本文将从以下两方面去帮助理解 Bean 的生命周期:生命周期的概要流程:对 Bean 的生命周期进行概括,并且结合代码来理解; 扩展点的作用:详细介绍 Bean 生命周期中所涉及到的扩展点的作用。3. 生命周期的概要流

2020-06-16 14:17:38 111

转载 如果让你做一个秒杀系统,你会如何设计?

前言秒杀大家都不陌生。自2011年首次出现以来,无论是双十一购物还是 12306 抢票,秒杀场景已随处可见。简单来说,秒杀就是在同一时刻大量请求争抢购买同一商品并完成交易的过程。从架构视角来看,秒杀系统本质是一个高性能、高一致、高可用的三高系统。而打造并维护一个超大流量的秒杀系统需要进行哪些关注,就是本文讨论的话题。整体思考首先从高维度出发,整体思考问题。秒杀无外乎解决两个核心问题,一是并发读,一是并发写,对应到架构设计,就是高可用、一致性和高性能的要求。关于秒杀系统的设计思考,本文即基

2020-06-09 13:40:14 204

转载 8 个优化建议让你的接口健步如飞

前言最近对外接口偶现 504 超时问题,原因是代码执行时间过长,超过 nginx 配置的 15 秒,然后真枪实弹搞了一次接口性能优化。在这里结合优化过程,总结了接口优化的八个要点,希望对大家有帮助呀~ 数据量比较大,批量操作数据入库 耗时操作考虑异步处理 恰当使用缓存 优化程序逻辑、代码 SQL 优化 压缩传输内容 考虑使用文件/MQ等其他方式暂存,异步再落地 DB 跟产品讨论需求最恰当,最舒服的实现方式 先看一下我们对外转

2020-06-09 13:24:20 267

转载 新鲜出炉,直接带你弄懂 Spring Boot Jar 启动原理!

1. 概述Spring Boot 提供了 Maven 插件spring-boot-maven-plugin,可以方便的将 Spring Boot 项目打成jar包或者war包。考虑到部署的便利性,我们绝大多数 99.99% 的场景下,我们会选择打成jar包。这样,我们就无需在部署项目的服务器上,配置相应的 Tomcat、Jetty 等 Servlet 容器。那么,jar包是如何运行,并启动 Spring Boot 项目的呢?这个就是本文的目的,一起弄懂 Spring Bootj...

2020-06-04 16:01:20 120

转载 MySQL 三万字精华总结 + 面试100 问,吊打面试官绰绰有余(收藏系列)

❝写在之前:不建议那种上来就是各种面试题罗列,然后背书式的去记忆,对技术的提升帮助很小,对正经面试也没什么帮助,有点东西的面试官深挖下就懵逼了。个人建议把面试题看作是费曼学习法中的回顾、简化的环节,准备面试的时候,跟着题目先自己讲给自己听,看看自己会满意吗,不满意就继续学习这个点,如此反复,好的offer离你不远的,奥利给一、MySQL架构和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和..

2020-06-01 14:59:47 155

转载 【深入学习MySQL】MySQL的索引结构为什么使用B+树?

前言在MySQL中,无论是Innodb还是MyIsam,都使用了B+树作索引结构(这里不考虑hash等其他索引)。本文将从最普通的二叉查找树开始,逐步说明各种树解决的问题以及面临的新问题,从而说明MySQL为什么选择B+树作为索引结构。目录一、二叉查找树(BST):不平衡二、平衡二叉树(AVL):旋转耗时三、红黑树:树太高四、B树:为磁盘而生五、B+树六、感受B+树的威力七、总结一、二叉查找树(BST):不平衡二叉查找树(BST,Binary Search Tre

2020-05-31 17:18:16 70

转载 深入学习MySQL事务:ACID特性的实现原理

事务是MySQL等关系型数据库区别于NoSQL的重要方面,是保证数据一致性的重要手段。本文将首先介绍MySQL事务相关的基础概念,然后介绍事务的ACID特性,并分析其实现原理。MySQL博大精深,文章疏漏之处在所难免,欢迎批评指正。一、基础概念事务(Transaction)是访问和更新数据库的程序执行单元;事务中可能包含一个或多个sql语句,这些语句要么都执行,要么都不执行。作为一个关系型数据库,MySQL支持事务,本文介绍基于MySQL5.6。首先回顾一下MySQL事务的基础知识。1.

2020-05-31 16:44:59 91

转载 关于 TCP/IP,必知必会的十个问题

本文整理了一些TCP/IP协议簇中需要必知必会的十大问题,既是面试高频问题,又是程序员必备基础素养。TCP/IP十个问题一、TCP/IP模型TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议。基于TCP/IP的参考模型将协议分成四个层次,它们分别是链路层、网络层、传输层和应用层。下图表示TCP/IP模型与OSI模型各层的对照关系。...

2020-05-27 13:14:59 77

转载 玩转Java8中的 Stream 之从零认识 Stream

相信Java8的Stream 大家都已听说过了,但是可能大家不会用或者用的不熟,文章将带大家从零开始使用,循序渐进,带你走向Stream的巅峰。操作符什么是操作符呢?操作符就是对数据进行的一种处理工作,一道加工程序;就好像工厂的工人对流水线上的产品进行一道加工程序一样。Stream的操作符大体上分为两种:中间操作符和终止操作符中间操作符对于数据流来说,中间操作符在执行制定处理程序后,数据流依然可以传递给下一级的操作符。中间操作符包含8种(排除了parallel,sequentia

2020-05-22 09:19:21 71

转载 Java 代码精简之道

前语古语有云:道为术之灵,术为道之体;以道统术,以术得道。其间:“道”指“规矩、道理、理论”,“术”指“办法、技巧、技能”。意思是:“道”是“术”的魂灵,“术”是“道”的肉体;能够用“道”来统管“术”,也能够从“术”中取得“道”。在拜读大佬“孤尽”的文章《Code Review是苦涩但有意思的修行》时,感触最深的一句话便是:“优质的代码必定是少便是多的精兵准则”,这便是大佬的代码精简之“道”。工匠寻求“术”到极致,其实便是在寻“道”,且离悟“道”也就不远了,亦或是现已得道,这便是“工

2020-05-20 14:26:06 95

转载 Spring Job?Quartz?XXL-Job?年轻人才做选择~

摘要: 原创出处 http://www.iocoder.cn/Spring-Boot/Job/ 「芋道源码」欢迎转载,保留摘要,谢谢! 1. 概述 2. 快速入门 Spring Task 3. 快速入门 Quartz 单机 4. 再次入门 Quartz 集群 5. 快速入门 XXL-JOB 6. 快速入门 Elastic-Job 666. 彩蛋 本文在提供完整代码示例,可见 https://github.com/YunaiV/Spr.

2020-05-15 09:15:37 171

转载 面试官:听说你看过ThreadLocal源码?我来瞅瞅?

全文共10000+字,31张图,这篇文章同样耗费了不少的时间和精力才创作完成,请大家点点关注+在看,感谢。对于ThreadLocal,大家的第一反应可能是很简单呀,线程的变量副本,每个线程隔离。那这里有几个问题大家可以思考一下: ThreadLocal的key是弱引用,那么在 threadLocal.get()的时候,发生GC之后,key是否为null? ThreadLocal中ThreadLocalMap的数据结构? ThreadLocalMap的Hash算法? ...

2020-05-14 16:06:15 93

转载 Map 集合怎么也有这么多坑?一不小心又踩了好几个!

本文设计知识点如下:不是所有的 Map 都能包含 null这个踩坑经历还是发生在实习的时候,那时候有这样一段业务代码,功能很简单,从 XML 中读取相关配置,存入 Map 中。代码示例如下:那时候正好有个小需求,需要改动一下这段业务代码。改动的过程中,突然想到HashMap并发过程可能导致死锁的问题。于是改动了一下这段代码,将HashMap修改成了ConcurrentHashMap。美滋滋提交了代码,然后当天上线的时候,就发现炸了。。。应用启动过程发生NPE...

2020-05-14 14:48:25 108

转载 Redis 6.0 新特性-多线程连环13问!

Redis 6.0 来了在全国一片祥和IT民工欢度五一节假日的时候,Redis 6.0不声不响地于5 月 2 日正式发布了,吓得我赶紧从床上爬起来,学无止境!学无止境!对于6.0版本,Redis之父Antirez在RC1版本发布时(2019-12-19)在他的博客上连续用了几个“EST”词语来评价:the most “enterprise” Redis version to date // 最”企业级”的the largest release of Redis ever as far a.

2020-05-12 14:22:42 134

转载 当前疫情下火爆的直播应用,你了解背后的技术架构吗?

这场疫情让线下零售降至冰点,但是却带火了直播应用。直播电商、直播教育等各类直播应用可谓赢得了历史性的机会,很多大众开始接受并认可这种新型应用的便利和价值,个人感觉随着5G的普及,『直播+垂直领域+精细化的私域流量』将会是互联网的一个大热点,迎来真正的红利期。直播行业大概在10年多前就开始兴起了,秀场直播和游戏直播是PC时代比较成功的应用场景,直到16年,随着移动互联网的大规模普及,直播行业迎来...

2020-05-08 11:11:53 410

转载 面试官没想到,一个Volatile都能吹半小时

Volatile可能是面试里面必问的一个话题吧,对他的认知很多朋友也仅限于会用阶段,今天我们换个角度去看看。先来跟着丙丙来看一段demo的代码:你会发现,永远都不会输出有点东西这一段代码,按道理线程改了flag变量,主线程也能访问到的呀?为会出现这个情况呢?那我们就需要聊一下另外一个东西了。JMM(JavaMemoryModel)JMM:Java内存模型,是java虚拟机规...

2020-04-29 13:49:46 230

转载 【并发编程】MESI--CPU缓存一致性协议

目录概念#MESI协议中的状态#MESI状态转换图#操作#概念#MESI(Modified Exclusive Shared Or Invalid)(也称为伊利诺斯协议,是因为该协议由伊利诺斯州立大学提出)是一种广泛使用的支持写回策略的缓存一致性协议。MESI协议中的状态#CPU中每个缓存行(caceh line)使用4种状态进行标记(使用额外的两位(bit)表示)...

2020-04-29 11:11:22 87

转载 一口气带你踩完五个 List 的大坑

List 可谓是我们经常使用的集合类之一,几乎所有业务代码都离不开 List。既然天天在用,那就没准就会踩中这几个 List 常见坑。今天我们就来总结这些常见的坑在哪里,捞自己一手,防止后续同学再继续踩坑。本文设计知识点如下:List 踩坑大全ArrayList 这是李逵,还是李鬼?以前实习的时候,写过这样一段简单代码,通过Arrays#asList将数组转化为 L...

2020-04-24 09:27:10 186

转载 硬不硬你说了算!近 40 张图解被问千百遍的 TCP 三次握手和四次挥手面试题

前言不管面试 Java 、C/C++、Python 等开发岗位,TCP的知识点可以说是的必问的了。任 TCP 虐我千百遍,我仍待 TCP 如初恋。遥想小林当年校招时常因TCP面试题被刷,真是又爱又狠….过去不会没关系,今天就让我们来消除这份恐惧,微笑着勇敢的面对它吧!所以小林整理了关于TCP 三次握手和四次挥手的面试题型,跟大家一起探讨探讨。 TCP 基本认识...

2020-04-06 15:47:26 250

转载 Idea 公司真牛逼,发行适合程序员编程字体

JetBrains前几天推出了一种新字体,即JetBrains Mono,它是专为开发人员设计的。JetBrains表示:在当今的大部分时间里,我们作为开发人员都在看代码。我们一直在寻找最佳字体,以使我们更容易在屏幕上查看文本。但是,许多流行字体中的逻辑并不总是考虑到通读代码和阅读书本之间的区别。我们的眼睛以非常不同的方式沿代码移动,通常必须垂直移动和水平移动,这与阅读书籍不同,因为...

2020-01-21 15:38:00 272

转载 谈谈为什么要拆分数据库?有哪些方法?

目录1. 为什么要拆分数据库?2. 什么是垂直切分?垂直切分解决了什么问题垂直切分不能解决什么问题3. 什么是水平切分?水平切分的用途水平切分的缺点4. 为什么先做水平切分,后作垂直切分?1. 为什么要拆分数据库?单体项目在构建之初,数据库的负载和数据量都不大,所以不需要对数据库做拆分,小型财务系统、文书系统、ERP系统、OA系统,用一个MySQL数据库实例...

2020-01-21 11:21:09 371

转载 Linux系列教程(六)——Linux常用命令之链接命令和权限管理命令

目录1、链接命令2、权限管理命令3、总结前一篇博客我们讲解了Linux文件和目录处理命令,还是老生常淡,对于新手而言,我们不需要完全记住命令的详细语法,记住该命令能完成什么功能,然后需要的时候去查就好了,用的多了我们就自然记住了。这篇博客我们接着讲Linux命令——链接命令和权限管理命令。1、链接命令 一、生成链接文件命令:ln  ①、命令名称:ln  ②、英...

2020-01-20 09:59:42 166

转载 Linux系列教程(五)——Linux常用命令之文件和目录处理命令

目录1、Linux命令的普遍语法格式2、目录处理命令3、文件处理命令4、总结这个系列教程的前面我们讲解了如何安装Linux系统,以及学习Linux系统的一些方法。那么从这篇博客开始,我们就正式进入Linux命令的学习。学习命令,首先要跟大家纠正的一点就是,我们不需要记住每一条命令的详细语法格式,学完之后我们只需要知道某个命令能干什么。这样我们在实际应用中,遇到需要实现某个功能,...

2020-01-19 13:28:07 157

转载 Linux系列教程(四)——Linux系统目录详解

目录01. 文件系统介绍02. 常用目录介绍03. /etc目录文件04. /dev目录文件05. /usr目录文件06. /var目录文件07. /proc08. 比较重要的一些目录01. 文件系统介绍Win和Linux文件系统区别 (了解)在 windows 平台下,打开“计算机”,我们看到的是一个个的驱动器盘符:每个驱动器都有自己的根目录结...

2020-01-19 13:17:04 163

转载 Linux系列教程(三)——Linux学习技巧

目录1、工欲善其事必先利其器2、英文提示的困惑3、忘掉windows的思维方式4、总结  前面我们讲了Linux系统的详细安装教程,大家跟着教程一步一步的操作,应该能完美的完成安装。那么这篇博客跟大家聊聊如何来学习Linux。1、工欲善其事必先利其器  ①、第一个问题:通过前面在虚拟软件中安装的Linux系统,我们发现在Linux虚拟机中操作命令发现特别繁琐,在虚拟机系...

2020-01-19 11:31:58 113

转载 Linux系列教程(一)——Linux系统简介

目录1、Unix2、Linux3、Unix和Linux的区别4、总结  本系列教程将完整的讲解整个Linux相关的知识,这是楼主学完兄弟连的Linux教程之后重新对Linux知识体系的整理。个人感觉兄弟连的Linux教程可以很好的入门,从最基础的知识开始,对于一个完全不懂Linux系统的人,相信在看完整个系列教程之后,都能对Linux有一个完完全全的了解。那么废话不多说,本篇博...

2020-01-19 11:26:46 133

转载 Redis为何这么快--数据存储角度

目录一、简介和应用二、Redis的对象redisObject三、String四、List五、Hash六、Set7.ZSet 本文内容思维导图如下:一、简介和应用 Redis是一个由ANSIC语言编写,性能优秀、支持网络、可持久化的K-K内存数据库,并提供多种语言的API。它常用的类型主要是 String、List、Hash、Set、Z...

2020-01-19 11:15:04 126

转载 为什么我使用了索引,查询还是慢?

经常有同学问我,我的一个SQL语句使用了索引,为什么还是会进入到慢查询之中呢?今天我们就从这个问题开始来聊一聊索引和慢查询。另外插入一个题外话,个人认为团队要合理的使用ORM,可以参考我的另外一篇<ORM的权衡和抉择>。合理利用的是ORM在面向对象和写操作方面的优势,避免联合查询上可能产生的坑(当然如果你的Linq查询能力很强另当别论),因为ORM屏蔽了太多的DB底层的知识内容,...

2020-01-16 14:51:02 124

转载 秒懂MyBatis分页插件PageHelper基于ThreadLocal的实现原理分析

你或许用过mybatis,但你未必用过github上的一个基于mybatis的分页插件PageHelper。项目地址:https://github.com/pagehelper/Mybatis-PageHelper小用了一下,感觉还是蛮不错的。使用MyBatis分页插件PageHelper非常简单,代码如下://使用方法可参考https://github.com/pagehelpe...

2020-01-10 10:27:19 522

转载 网站发展历程九大阶段,及知识体系梳理

目录网站发展历程java入门框架基础阶段一:单体项目阶段二:物理分离应用和数据库阶段三:缓存化、静态化阶段四:应用负载均衡,集群阶段五:动静分离阶段六:分布式缓存、缓存集群阶段七:读写分离、分库分表阶段八:微服务架构阶段九:NoSql与分布式搜索引擎B站视频讲解结束语网站发展历程用思维导图学习java真的是一个不错的方式!今天,我们用...

2019-12-26 16:31:44 121

转载 两岸猿声啼不住,轻舟已过万重山(再见 MySQL 索引~)

前言有人谓,再见是何意?我曰:再见,既是相见时难别亦难,东风无力百花残的难舍难分;亦是,下次再见时,你我若初见般无悲画扇......好似知识,你理解它之后的告别,也因再次遇见它,别有一番风味......正文(tips:终于有图了)备注一:参考资料部分来自于掘金小册《从根上儿理解mysql》、极客时间《MYSQL45讲》、《高性能MYSQL》备注二:此次的图来源于在我...

2019-12-12 14:11:04 128

转载 HTTPS 原理分析——带着疑问层层深入

HTTPS随着 HTTPS 建站的成本下降,现在大部分的网站都已经开始用上 HTTPS 协议。大家都知道 HTTPS 比 HTTP 安全,也听说过与 HTTPS 协议相关的概念有 SSL 、非对称加密、 CA证书等,但对于以下灵魂三拷问可能就答不上了:为什么用了 HTTPS 就是安全的? HTTPS 的底层原理如何实现? 用了 HTTPS 就一定安全吗?本文将层层深入,从原理上把 H...

2019-12-12 11:19:41 66

转载 初识Spring Cloud的各个组件

目录什么是Spring cloudSpring Cloud 的版本Spring Cloud 的服务发现框架——Eureka负载均衡之 Ribbon什么是 RestTemplate?为什么需要 Ribbon?Nginx 和 Ribbon 的对比Ribbon 的几种负载均衡算法什么是 Open Feign必不可少的 Hystrix什么是 Hystrix之熔断...

2019-12-11 15:49:42 97

转载 为什么阿里巴巴要禁用Executors创建线程池?

目录写在前面线程池的定义Executors创建线程池的方式ThreadPoolExecutor对象线程池执行任务逻辑和线程池参数的关系Executors创建返回ThreadPoolExecutor对象OOM异常测试如何定义线程池参数看阿里巴巴开发手册并发编程这块有一条:线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式...

2019-12-10 15:24:27 99

原创 nginx-windows系统下的安装及使用

目录一、Nginx简介二、安装部署三、优化配置一、Nginx简介Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru 站点(俄文:Рамблер)开发的.它也是一种轻量级的Web服务器,可以作为独立的服务器部署网站(类似Tomcat)。...

2019-12-07 13:51:10 129

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