自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 你还在看《深入理解Java虚拟机》的运行时数据模型吗?

学习JVM必看的书籍无疑是《深入理解Java虚拟机》这本书了,在书中,关于运行时数据区域模型是这样描述的:在这里我们只针对HotSpot VM来说,它是OracleJDK和OpenJDK中所带的虚拟机,也是目前使用范围最广的Java虚拟机。在JDK7之前,这样的模型是正确的。但是到了JDK8,如图标红的部分,做了一些优化。什么是方法区,什么是永久代,运行时常量池又是什么“方法区”(Me...

2019-03-31 21:26:46 127

原创 阿里的朋友拿到头条Offer后,却反而头疼和纠结~

这两天一位供职于阿里的朋友跑来咨询我一个关于跳槽的问题,具体是这样的:朋友目前在阿里工作两年时间,刚拿到头条的 Offer,但非常纠结是否要接,所以来咨询下我的意见。一、从阿里平薪跳头条?听朋友说完,我当时想,目前本就金三银四,加上近几年如头条、拼多多等小巨头大肆从 BAT 挖人,发展快速,而且开出的薪资一般来说也非常诱人,按理说朋友不应该这么纠结的。于是我打趣到,是不是头条给的薪水太高,不...

2019-03-30 20:49:11 178

原创 大佬是怎么思考设计MySQL优化方案的?

在进行MySQL的优化之前,必须要了解的就是MySQL的查询过程,很多查询优化工作实际上就是遵循一些原则,让MySQL的优化器能够按照预想的合理方式运行而已。一、优化的哲学注:优化有风险,涉足需谨慎1、优化可能带来的问题优化不总是对一个单纯的环境进行,还很可能是一个复杂的已投产的系统;优化手段本来就有很大的风险,只不过你没能力意识到和预见到;任何的技术可以解决一个问题,但必然存...

2019-03-29 17:07:27 131

原创 阿里P7级架构师总结Spring核心模块及功能汇总

如果你在使用Spring,而且没有使用SpringBoot,那么每个Spring的功能都需要引入相应的jar包依赖。而Spring的jar包依赖又有一二十个,很容易混淆,造成编译或运行错误。下面我们就整理一下Spring3和Spring4的核心模块和对应的jar包,方便我们在具体使用的过程中更加清晰的了解到我们都需要什么。与Spring3相比去掉了Struts,新增了Messaging和W...

2019-03-28 20:49:42 150

原创 面试又被问线程池原理?教你如何反击

前言在阿里巴巴Java开发手册中有这么两段话,如下图所示可以看到提到的两点,第一要求不能显示的创建线程,也就是new Thread的这种形式,需要使用线程池对线程进行管理,第二不允许使用官方提供的四种线程池,而是需要通过自行创建的方式去创建线程池,更加理解线程池的允许规则本文就基于JDK1.8的代码,对线程池源码进行解析,带大家能够更好的理解线程池的概念以及其运行规则,如有错误,请大家指出一、...

2019-03-28 17:33:13 2892

原创 别装啦!一看就知道你要跳槽了.....

金三银四对职场来说是一个很骚动的季节,可谓是草木皆兵。一个稀疏平常的动作都能换来同事们一个意味深长的眼神——你要跳槽。跳槽的过程本身是低调的、神秘的、突然的但又在很多个细节中被折射成透明的。今天身边发生了很戏剧性的一幕。同事A在工作群中说,”下午有点事,出去一会“。几个小时后,等同事A再回来时,胸前竟然贴着一张形状为圆形,白色背景,×××字体的贴纸标签,上面凸显着两个大字——...

2019-03-27 20:56:02 195

原创 到底怎样的程序员能称为架构师?

我曾问过很多自称热爱代码的程序员的发展规划,大多都回答说期望成为一名架构师。而在招聘一方,有的团队会过滤掉多次提起架构一词而一点不提具体内容的简历。可见,虽然在大多数程序员眼里,架构师是神圣的,但又不得不承认事实是:“架构”和“架构师”是最常被滥用的。那些写能 PPT 而不能写代码的人,只做和事佬而不考虑软件快、稳、便捷的人,都称不上做“架构”更别提“架构师”。那么什么样的人可以称为“架构师”...

2019-03-27 16:38:51 256

原创 Java学到什么程度才能叫精通?

如果要谈精通Java ,有一个特别直接的方法,那就是考察工程师是否具有:“快速构建开发框架的能力”。例如下面这个系统:这是一个典型的web应用(基于Java)。虽然就整个系统搭建来说,是架构师的责任。但其中的深色部分,是一个典型Java应用框架。以此为标准,框架的搭建能力,可以用来考察软件工程师是否真的精通Java。在一些新项目中,项目经理和架构师会根据业务需求从顶层设计架构。待架构稳定...

2019-03-26 15:34:43 737

原创 阿里九年架构师教你如何学会阅读源码

读源码的经历刚参加工作那会,没想过去读源码,更没想过去改框架的源码;总想着别人的框架应该是完美的、万能的,应该不需要改;另外即使我改了源码,怎么样让我的改动生效了? 项目中引用的不还是没改的jar包吗。回想起来觉得那时候的想法确实挺……工作了一年多之后准备跳槽了,开始了一轮的面试,其中有几个面试官就问到了相关的源码问题:ArrayList、HashMap的底层实现,spring、mybatis...

2019-03-25 16:21:22 220

原创 使用Keycloak实现安全的SpringBoot微服务

Keycloak是RedHat的开源身份和访问管理解决方案,本文介绍如何在我们的微服务安全模块中使用keycloak,特别是基于SpringBoot的微服务。Keycloak它提供了身份和访问管理的有用功能:单点登录(SSO),身份代理和社交登录用户联合客户端适配器管理控制台和帐户管理控制台。虽然安全性是任何应用程序的一个重要方面,但安全性的实现部分是复杂和困难的。通常,它在代码...

2019-03-22 21:38:13 2653

原创 《MySQL——从删库到跑路》阿里架构师分享删库跑路救命策略

首先看下mysql误删数据排名最前的几种是:误删文件误删库、表错误全表删除 / 更新升级操作失误都来看看你命中过几个,hoho。简单说下我亲手造的一个大事故吧。那大概是一个春暖花开的季节,我的内心是激动澎湃的,因为已经安排了休假计划。在这前几天,已经把一个新项目的数据库环境都部署好了,包括自动化备份。等我美美的出去玩的时候,悲剧发生了,业务要求进行数据回滚,但发现备份文件不可用...

2019-03-22 15:29:45 173

原创 我的梦想是十年内成为架构师,该怎么办?

现在已经有确定的目标了,真不错!很多人连自己的职业目标还没有确定。架构师这个职位没什么神秘的,简单点儿说就是用户需求转化成技术实现,只是在转化的时候会遇到一系列问题,比如:技术如何选型? 如何设计才更简洁、更容易实现和扩展?如何满足非功能性需求,如性能、安全、高可用性、审计......除此之外,还得和客户以及分析人员沟通需求,确保没有跑偏,有时候还得引导一下,去除或者改变那些不可能实现的需求。...

2019-03-22 12:19:28 205

原创 阿里架构师浅析体面编码之代码注释评论

避免无意义的注释评论,不添加任何价值。如果通过阅读代码可以清楚地看到某些内容,则评论只会增加噪音。考虑是否可以改进代码,以便不再需要注释。通过改进命名,重构(例如,提取函数)或引入解释变量,通常可以解释解释代码正在做什么以及有时为什么的注释。考虑一个单元测试是否会更好的沟通。构造良好和命名的单元测试可以解释代码背后的原因,以及在不同情况下演示和验证其行为。解释从代码中不清楚的推理。预计未来...

2019-03-21 21:04:52 141

原创 【面经】记一次字节跳动后端面试经历

太长不看版对于实习招聘(甚至校招)来说,项目经历可能是获得面试的敲门砖,但是基础绝对是赢得面试的通天索。即使是实习招聘,白板写代码也很可能逐渐成为主流面试的标配,平时要有意识地锻炼这方面能力,要不然面试时没有IDE真的是做不下去。对自己的真实实力一定要有正确的评估。一个简单的评估方式是,你的真实能力水平大约只有你所认为的50%甚至更低。面试是一件很累的事情,要找准自己的位置,避免海投。...

2019-03-21 12:12:36 7076

原创 程序员注意了!面试官在问这些问题时,到底是在考什么?

最近公司在招聘,准备招一个前端和后端,所以,最近两周我面试了很多人。通过最近频繁的一系列面试,我发现了很多大家都普遍存在的问题。比如:对于面试准备不充分;面试的简历写的不仔细,有错别字,有时候,计算机的专业技术英文名词都能拼写错;面试的时候,过度表现和包装自己,把不是自己参与的模块说成自己写的;回答面试官的问题避重就轻,当然可能并没有了解考官的意图导致的。其实,作为一个程序员面试,尤其是...

2019-03-20 11:56:37 363

原创 一个程序员的北漂之路——充满多少泪和水

前几天,一个粉丝投稿,分享了他的北漂生活,看完之后,不禁感慨万千原文:北漂,一个让多少人充满泪水的词语,我好像也不例外。从毕业到现在,踏上程序员的路也算是有2年的时间了,不能算是一个资深的北漂,但是实际上,住过合租房,住过小工厂改建的廉价房,到现在一直住在村中的自建房。一步步走来,从最初的一个非科班毕业生,自己是怎么默默坚持下来的?可能是为了理想,也可能是为了未来给妻子更好的生活吧!...

2019-03-19 21:35:55 367

原创 阶乘很简单?恕我直言,阶乘相关的面试题你还真不一定懂!

对于如何算 n 的阶乘,只要你知道阶乘的定义,我想你都知道怎么算,但如果在面试中,面试官抛给你一道与阶乘相关,看似简单的算法题,你还真不一定能够给出优雅的答案!本文将分享几道与阶乘相关的案例,且难度递增。案例一给定一个整数 N,那么 N 的阶乘 N! 末尾有多少个 0?例如: N = 10,则 N!= 3628800,那么 N! 的末尾有两个0。有些人心想,这还不简单,直接算出 N!的...

2019-03-19 15:37:00 204

原创 8年开发架构师浅析SpringBoot的JVM的内存占用与Docker-spring.io

JVM可能是一个复杂的野兽。值得庆幸的是,大部分复杂性都在幕后,我们作为应用程序开发人员和部署人员通常不必过于担心。随着基于容器的部署策略的兴起,需要引起注意的一个复杂领域是JVM的内存占用。两种内存JVM将其内存分为两大类:堆内存和非堆内存。堆内存是人们通常最熟悉的部分。它是存储由应用程序创建的对象的位置。它们一直存在,直到它们不再被引用并被垃圾收集。通常,应用程序使用的堆量将根据当前负载...

2019-03-18 21:43:42 683

原创 8年开发架构师浅析SpringBoot的JVM的内存占用与Docker-spring.io

JVM可能是一个复杂的野兽。值得庆幸的是,大部分复杂性都在幕后,我们作为应用程序开发人员和部署人员通常不必过于担心。随着基于容器的部署策略的兴起,需要引起注意的一个复杂领域是JVM的内存占用。两种内存JVM将其内存分为两大类:堆内存和非堆内存。堆内存是人们通常最熟悉的部分。它是存储由应用程序创建的对象的位置。它们一直存在,直到它们不再被引用并被垃圾收集。通常,应用程序使用的堆量将根据当前负载...

2019-03-18 21:42:58 290

原创 Google 出品的 Java 编码规范,权威又科学,强烈推荐

这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Google的Java编程风格。与其它的编程风格指南一样,这里所讨论的不仅仅是编码格式美不美观的问题, 同时也讨论一些约定及编码标准。然而,这份文档主要侧重于我们所普遍遵循的规则, 对于那些不是明确强制要求的,我们尽量避免提供意见。Google Java编程规范PDF前言...

2019-03-18 16:01:09 271

原创 八年开发程序员浅析SpringBoot 之 Shiro 与 Redis 多级缓存问题

前言来自不愿意透露姓名的小师弟的投稿。这篇主要讲了,项目中配置了多缓存遇到的坑,以及解决办法。发现问题在一次项目实践中有实现多级缓存其中有已经包括了 Shiro 的 Cache ,本以为开启 redis 的缓存是一件很简单的事情只需要在启动类上加上 @EnableCaching 注解就会启动缓存管理了,但是问题出现了。重要错误日志截图java.lang.IllegalStateExce...

2019-03-18 11:53:08 219

原创 阿里P8级架构师浅析秒杀架构设计实践思路

一、前言一提到秒杀,都会想到高性能、高并发、高可用、大流量…。在电商体系中,交易系统占据了环节中的半壁江山。比如里面特别迷人的秒杀系统,那秒杀涉及到什么架构设计?会涉及到什么业务?泥瓦匠自言自语:秒杀这个东西,一篇文章也说不完。我这一篇起个头,实践系列还在后面,敬请期待。二、秒杀业务难点秒杀业务难点,总结为两点并发多读并发少写这不同于一些场景,优惠营销系统,只会是一个用户读多个数...

2019-03-17 20:52:16 188

原创 Java程序员须知:分布式微服务为什么很难?

现在,我们不断地赞美云原生cloud native架构(容器化和微服务),然而现实是大多数公司仍然运行单体系统。为什么?这不是因为我们非常不时尚,而是因为分布式是非常困难的。尽管如此,它仍然是创建超大规模的、真正弹性的和快速响应的系统的唯一途径,因此我们必须围绕它进行整合。在这篇文章中,我们将介绍分布式系统中一些障碍以及人们应对方法。忘记康威定律(Conway’s Law),分布式系统遵循的是...

2019-03-16 17:14:52 713

原创 Java程序员为什么会有职业瓶颈?

一、寒冬的思考2019年初,俗话说"金三银四"。这时候面试不知道你们慌不慌张。因为2018年冬天是寒冷的。其实18年的低温持续时间不算很长,我也没有披上军大衣。但是突如其来的互联网寒冬影响了不少人,互联网寒冬当然主要受影响的就是程序员了。回顾过往,2017年是互联网高速发展的一年,共享经济仅仅一个概念就成就了多少家公司,各种共享单车满天飞,然而到了2018年下旬,好像所有的情况都发生了变化,你...

2019-03-15 15:52:23 255

原创 阿里P8浅析Spring Boot和Apache Kafka结合实现错误处理,消息转换和事务支持?

Spring为Kafka带来了熟悉的Spring编程模型。它提供了KafkaTemplate用于发布记录和用于异步执行POJO侦听器的侦听器容器。Spring Boot自动配置连接了大部分基础架构,因此您可以专注于业务逻辑。错误恢复考虑这个简单的POJO侦听器方法:@KafkaListener(id = "fooGroup", topics = "topic1")public void l...

2019-03-14 14:29:10 784

原创 阿里P8级架构师浅谈Java架构师的工作都干些什么?

架构不是一个职业而是一种能力,每一种架构师只不过是在不同的领域里面使用不同的技术,没有什么可对比,就好比如你问一个篮球明星和一个足球明星有什么区别一样!一、架构师需要考虑四个问题确定系统干什么不干什么,也就是说系统的边界在哪里?确定架构内部的模块与模块之间的关系,以及模块与外部之间的关系是什么?架构确定以后,有能力去指导开发去继续设计和演化,如果开发设计和演化出来的东西和架构不一致也是有...

2019-03-13 15:00:28 288

原创 是时候为自己的后半生考虑了——致奔三的互联网人

互联网这几年发展很快,红利很高,但是人员的更替也很快,我们看张年龄分布图职场已经是 90 后的天下,31-35岁只占了 30.7%,而且随着年龄的增长市场的包容度越来越低,某厂也出现了辞退 34 岁以上的员工。没有年轻人有激情、没有年轻人有体力能熬夜、没有年轻人灵光、比年轻人有更多的顾虑,顾虑源于对家庭的责任和对父母的义务。这便成为了大部分 80 后的处境。中年以后的男人,时常会觉得孤独...

2019-03-12 15:02:32 178

原创 金三银四跳槽季,你应该如何逆袭冲进BATJ?

想起刚刚入门的时候,工作和学习上是完全找不到方向的,再然后渡过了一段时间的新手期之后,工作的方向虽然逐渐变得清晰起来,但是没过多久,能了解到的资料就开始超过每天学习的能力,像是买了没看的书、收藏没读的贴、mark了之后再也没有关注过的文章越积越多,更别提每天面对各种技术分享或者微博里的新鲜玩意了。我曾经就很喜欢看一些博客或者是一些“看起来”比较通俗易懂的文章,每天在微博微信里刷到什么技术文章就...

2019-03-12 11:12:07 136

原创 Java面试——重载、重写、重构的区别

一、重载构造函数是一种特殊的函数,使用构造函数的目的是用来在对象实例化时初始化对象的成员变量。由于构造函数名字必须与类名一致,我们想用不同的方式实例化对象时,必须允许不同的构造方法同时存在,这就用到了重载。重载虽然起源于构造方法,但是在普通方法中也可以使用方法的重载。方法的重载就是在同一个类中允许同时存在多个同名方法,只要这些方法的参数类型、个数、顺序不同即可。package com.jav...

2019-03-11 16:26:54 306

原创 Quarkus简介:下一代Kubernetes原生Java框架

Quarkus是为GraalVM和HotSpot量身定制的Kubernetes Native Java框架,由最佳的Java库和标准精心打造而成。Quarkus的目标是使Java成为Kubernetes和无服务器环境中的领先平台,同时为开发人员提供统一的反应式和命令式编程模型,以优化地满足更广泛的分布式应用程序架构。容器第一Quarkus提供了显着的运行时效率(基于Red Hat测试),例如:...

2019-03-09 20:33:02 672

原创 阿里P7浅析Java虚拟机如何处理异常

ExceptionsExceptions允许您顺利处理程序运行时发生的意外情况。要演示Java虚拟机处理异常的方式,请考虑一个名为NitPickyMath的类。它提供了对整数执行加法,减法,乘法,除法和余数的方法。NitPickyMath在溢出,下溢和被零除的条件下抛出已检查的异常。Java虚拟机将在整数除零上抛出一个ArithmeticException,但不会在溢出和下溢上抛出任何异常。方法...

2019-03-08 16:43:28 110

原创 阿里P7架构师告诉你Java架构师必须知道的 6 大设计原则

在软件开发中,前人对软件系统的设计和开发总结了一些原则和模式, 不管用什么语言做开发,都将对我们系统设计和开发提供指导意义。本文主要将总结这些常见的原则,和具体阐述意义。开发原则面向对象的基本原则(solid)是五个,但是在经常被提到的除了这五个之外还有 迪米特法则和合成复用原则等, 所以在常见的文章中有表示写六大或七大原则的; 除此之外我还将给出一些其它相关书籍和互联网上出现的原则;S单一...

2019-03-07 16:22:05 128

原创 阿里P7分享最新java面试——线程面试题集合

1、说说进程,线程,协程之间的区别简而言之,进程是程序运行和资源分配的基本单位,一个程序至少有一个进程,一个进程至少有一个线程.进程在执行过程中拥有独立的内存单元,而多个线程共享内存资源,减少切换次数,从而效率更高.线程是进程的一个实体,是cpu调度和分派的基本单位,是比程序更小的能独立运行的基本单位.同一进程中的多个线程之间可以并发执行.2、你了解守护线程吗?它和非守护线程有什么区别程序运...

2019-03-06 15:42:43 347

原创 阿里P7告诉你SpringBoot如何防止重复提交?

有两种防止重复提交:禁用提交按钮 发出请求令牌/ ID:禁用提交按钮我们可以在函数调用HTTP请求之前禁用提交按钮,并在完成HTTP响应后再次启用它。该技术对于需要很长时间才能完成的过程(超过5秒)是有效的。由于不耐烦而无法获得结果,用户无法再次单击n'。此外,我们可能会显示一个正在Loading装载进度,以获得良好的体验。<!DOCTYPE html><htm...

2019-03-05 15:29:04 451

原创 阿里P7给你一份超详细 Spring Boot 知识清单

在过去两三年的Spring生态圈,最让人兴奋的莫过于Spring Boot框架。或许从命名上就能看出这个框架的设计初衷:快速的启动Spring应用。因而Spring Boot应用本质上就是一个基于Spring框架的应用,它是Spring对“约定优先于配置”理念的最佳实践产物,它能够帮助开发者更快速高效地构建基于Spring生态圈的应用。那Spring Boot有何魔法?自动配置、起步依赖、Act...

2019-03-04 15:17:22 152

原创 阿里P7给你一份超详细 Spring Boot 知识清单

在过去两三年的Spring生态圈,最让人兴奋的莫过于Spring Boot框架。或许从命名上就能看出这个框架的设计初衷:快速的启动Spring应用。因而Spring Boot应用本质上就是一个基于Spring框架的应用,它是Spring对“约定优先于配置”理念的最佳实践产物,它能够帮助开发者更快速高效地构建基于Spring生态圈的应用。那Spring Boot有何魔法?自动配置、起步依赖、Act...

2019-03-04 15:15:56 216

空空如也

空空如也

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

TA关注的人

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