架构人生
文章平均质量分 72
Java斗帝之路
在java道路上不断奋斗的小学生
展开
-
一位三本菜鸟跳槽却被源码暴锤,23天狂学Spring,终入大厂
一、不会 Spring 就不要谈就业!一直强调, Java 是空气,永不过时。而 Spring 在 Java 开发里中处于垄断地位,任何一个框架不跟 Spring 整合,就要被淘汰!这也是为什么大部分企业的岗位需求中 Spring 都是必须的!之前有朋友去京东面试,被问到 AOP、IOC相关的问题,因为一直没有系统地学习相关的知识,答得不是很好。回忆了一下,问到了这些点:什么是控制反转(IOC)?什么是依赖注入? Spring Aop的底层是怎样实现的? 能不能简单说下AOP中的切面、切点、原创 2020-09-15 14:51:55 · 91 阅读 · 0 评论 -
SpingBoot整合Mybatis,这些小技巧你得知道,对你工作有很大的帮助!
如何使用SpingBoot整合MybatisSpringBoot 是由Pivotal 团队提供的全新框架,其设计目的是用来简化新Spring 应用的初始搭建以及开发过程。SpringBoot 的主要特点为:创建独立的Spring 应用程序 嵌入到Tomcat,无需部署WAR 文件 简化Maven 配置 自动配置Spring 提供生产就绪型功能,如指标,健康检查和外部配置 绝对没有代码生成并且对XML 也没有配置要求开发环境的搭建JDK 的要求使用SpringBoot 必须使用原创 2021-04-08 14:44:03 · 72 阅读 · 0 评论 -
谈谈京东自研的 “杰夫” 服务框架,是否会超越阿里
最近由于在实习期间接触到了京东的自研服务框架JSF,简称“杰夫”,目前我写的一些新功能里面调用的下游接口就是杰夫提供的。现有有很多高效的服务框架,如阿里巴巴的Dubbo配合Apache的ZooKeeper,那么为什么京东却自研了JSF服务框架呢?于是看了看京东的JSF的演化历史,不得不感叹好的架构果然不是一朝一夕就能实现的,都是逐步演变而来的。一、Dubbo与Zookeeper的组合拳Dubbo是阿里巴巴开源的一个高性能的服务框架,Dubbo使得应用之间可通过高性能的RPC实现服务的输出和输入...原创 2021-04-08 14:40:44 · 2884 阅读 · 3 评论 -
阿里内部资料:并发编程知识点总结
本书包括了学习并发编程必备的所有知识点:解决方案,三大特性,volatile关键字,锁,内存模型,线程,AQS等等!为了方便大家有更好的学习体验,本文档的图都是彩页,代码也可以复制,不多说了下面直接给大家展示出来,需要获取的小伙伴可以直接点赞+关注后添加vx(bjmsb10)即可免费获取!需要获取的小伙伴可以直接转发+关注后私信(学习)即可免费获取!...原创 2021-04-07 22:18:06 · 107 阅读 · 0 评论 -
遭GitHub连夜封杀下架?被泄露的阿里内部Java面试手册到底有多强?
首先肯定会有人问为什么文章标题会写上阿里内部资料呢?下面一张图就给你做出了解释看完这个就不用我多说了吧,虽然我也不知道是不是真的,这份文档我也看了一下总结了跟多内容其中面试篇包含了(基础篇+JVM篇+多线程&并发篇+Spring篇+MyBatiz篇+SpringBoot篇+MySQL篇+SpringCloud篇+Dubbo篇+Nginx篇+MQ篇)数据结构与算法篇包含了(Linux篇+Zookeeper篇+Redis篇+分布式篇+网络篇+设计模式maven篇+Elastiosear.原创 2021-04-07 20:43:48 · 881 阅读 · 0 评论 -
2021金三银四程序员面试必问总结
最近闲得无聊给大家整理出来了一些面试必备问题合集,已经把内容汇总成为了六本 PDF 电子书,分别是《Java 基础总结》 《Java 基础总结 V2.0》 《面试题总结》 《计算机基础总结》 《HTTP 核心总结》 《操作系统核心总结》Java 基础总结先来看一下本篇文章的思维导图吧,文章围绕下面这些内容进行讲解。操作系统总结内容涉及认识操作系统 进程和线程 内存管理 文件管理 I/O 死锁 操作系统面试题 操作系统核心概念每一章...原创 2021-04-07 19:07:41 · 190 阅读 · 0 评论 -
都1202年了,阿里五岳版的《Java开发手册》你还没拜读过?
都2021年了相信有很多人已经看过阿里五岳版的《Java开发手册》了!没看过也没有关系,因为我今天给大家分享出来这份阿里开发手册五岳版的核心总结篇!如果想获取开发手册的话可以直接添加助手vx:(bjmsb10)凭截图免费获取到!核心版内容展示:不给大家做过多的展示了,如果想获取开发手册的话可以直接添加助手...原创 2021-04-07 16:56:31 · 97 阅读 · 0 评论 -
爽爆了!凭借阿里这份笔记,仅仅两星期就拿到了8个大厂offer!
近期面对已经过去的“金三”大部分小伙伴已经心急如焚!想要抓住“银四”的尾巴搏一搏的人也是大有人在!你不确定你可以在众多大牛中脱颖而出,那您就更应该付出加倍的努力了。正所谓“比你优秀的人,比你努力一百倍”言归正传,下面给大家分享一份不知道从哪里来的阿里21年面试集锦!及电话面试需要重要的点:需要的小伙伴可以直接点赞+关注后添加助手vx:(bjmsb10)即可凭截图免费获取到内容展示:红黑树...原创 2021-04-07 16:45:58 · 96 阅读 · 0 评论 -
阿里P9力荐Spring Boot学习笔记,一步一步学习Spring Boot,学到的不单单是基础
今天给大家分享的这份实战派文档,教程由浅入深,一步一步学习Spring Boot,最后学到的不单单是基础!针对springboot2.0以上版本用知识点+实例+项目完全深入地讲解springboot原理。从基础到项目的所有内容都做了详细的介绍及解说可以让读者理解得更加深入,同时希望小伙伴可以多阅读几遍!常言道:书读百遍,其义自见下面会给小伙伴把书中内容展示出来。需要获取的可以直接点赞+关注后添加助手vx(bjmsb10)凭截图即可免费获取!目录展示:...原创 2021-04-07 16:41:51 · 59 阅读 · 0 评论 -
别再面向 for 循环编程了,Spring 自带的观察者模式就很香!
1. 概述在设计模式中,观察者模式是一个比较常用的设计模式。维基百科解释如下:观察者模式是软件设计模式的一种。在此种模式中,一个目标对象管理所有相依于它的观察者对象,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。 此种模式通常被用来实时事件处理系统。在我们日常业务开发中,观察者模式对我们很大的一个作用,在于实现业务的解耦。以用户注册的场景来举例子,假设在用户注册完成时,需要给该用户发送邮件、发送优惠劵等等操作,如下图所示:UserService原创 2021-04-07 16:29:40 · 112 阅读 · 0 评论 -
面试官问我:你确定JVM堆内存是共享的?
Java堆的区域都是线程共享的吗?当你听到这个问题的时候,你首先想到的是什么呢?letmetellyou面试官其实问这个的时候就是在看你对堆的了解程度,你只知道是用来放对象实例的,那面试官对你表现觉得不算非常满意;但是如果你知道TLAB,并且知道它的原理和问题,那面试官就会觉得:这小伙子不一般,我得再多深入了解了解,可以考虑当我的好助手首先,你得肯定回答,没错,堆是全局共享的,但是会存在一些问题就是多个线程在堆上同时申请空间,如果在并发的场景中,两个线程先后把对象引用指向了...原创 2021-04-07 14:17:01 · 598 阅读 · 0 评论 -
你在备战“字节”时一定需要这个,程序员进大厂指南+算法已开源
现在是金三银四的跳槽季,不少朋友在准备换工作,也有一些朋友是应届生准备实习和今年秋招,那么求职方面的资料是大家最需要的了。有一段时间Carl写了关于:程序员如何写简历,面试流程以及一些城市的互联网公司,这些文章都是那段时间阅读最高的文章。这次我把这些文章重新编排了一下,还做了对一些城市的互联网公司做了梳理,才整理出这份pdf,供朋友们在求职的时候参考。这份PDF包含程序员应该如何写简历,一线互联网面试流程以及注意事项(超详细)以及各个重点城市互联网公司总结(2021最新版)。先来看...原创 2021-04-07 13:26:15 · 80 阅读 · 0 评论 -
七进七出,终获阿里32k*16offer,这就是我悲惨的面试经历~
写在片头:声明,勿杠首先简单说一下,这三次面试阿里并不是一次性去面的,实际上第一次面试时候还在大四,找的实习岗,不太清楚是什么部门,别问我为什么还记得面试题,有记录和复盘的习惯,再问就是杠。个人背景不详细多说,学历双非本科,不是应届生,工作年限不长,技术不是大牛,但也非小白,面经分享是想给正面试的同行一些建议和鼓励,希望能够多多支持。注意:下文内容中会提到一些简历模板、学习笔记、学习脑图、Java电子书籍和视频等,需要的添加助手vx:bjmsb10 凭截图即可免费领取。One:.原创 2021-04-06 17:31:12 · 172 阅读 · 0 评论 -
字节跳动上亿级别秒杀系统优化,用这个方案可行吗?
秒杀相信大家都不陌生,商家会发布一些价格低廉、数量很少的商品,吸引用户抢购,例如每年双十一活动就属于典型的秒杀活动。还有类似春节12306抢票、小米手机限量发售等都可以理解为“秒杀”。秒杀特点是持续时间短,抢购人数多,参与人数大大高于商品数量。抢购开始前后大量用户请求涌入,极易给服务造成巨大压力。如果系统设计不当,还容易造成超卖、数据丢失等问题。本文我们主要讨论在秒杀的高并发场景下,传统订单架构存在的性能瓶颈,如何利用redis、MQ等中间件对系统做优化,解决缓存加速、防止重复提交、排队下单、超卖、原创 2021-04-06 14:17:58 · 498 阅读 · 0 评论 -
头条二面:你们公司怎么处理MySQL的 Binlog 日志?
Canal定位:基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了mysql。原理:canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议 mysql master收到dump请求,开始推送binary log给slave(也就是canal) canal解析binary log对象(原始为byte流)整个parser过程大致可分为几步:Connection获取上一次解析成功的位..原创 2021-04-02 22:04:45 · 124 阅读 · 0 评论 -
一个完整的、全面k8s化的集群稳定架构(值得借鉴)
前言我司的集群时刻处于崩溃的边缘,通过近三个月的掌握,发现我司的集群不稳定的原因有以下几点:1、发版流程不稳定2、缺少监控平台【最重要的原因】3、缺少日志系统4、极度缺少有关操作文档5、请求路线不明朗总的来看,问题的主要原因是缺少可预知的监控平台,总是等问题出现了才知道。次要的原因是服务器作用不明朗和发版流程的不稳定。解决方案发版流程不稳定重构发版流程。业务全面k8s化,构建以kubernetes为核心的ci/cd流程。发版流程有关发版流程如下:ima原创 2021-04-01 19:43:18 · 144 阅读 · 0 评论 -
看了架构师的代码,切身感受到了代码可扩展性高的魅力
前言开发有个著名的设计原则:开闭原则,即对扩展开放,对修改关闭。但是实际开发中鲜有人能运用纯熟,少侠在开发中接触的例子就是,大多数人就是if…else…这样难以扩展的条件判断。那么应该如何优雅的精简掉复杂的逻辑判断呢?当然抽象共性是从产品思维角度的优化方案,今天少侠想说的是通过技术手段实现。业务背景首先简单介绍一下业务背景,背景很简单,就是有若干渠道源,如阿里巴巴,腾讯等,针对不同的渠道需要有不同的数据处理逻辑,并且渠道来源之后会不断扩展。初步实现先建立一个简单的枚举类:/**原创 2021-03-31 19:19:54 · 114 阅读 · 0 评论 -
深入理解MySQL中的事务【超详细配图版】
文章目录 1 引言 2 事务的特性 2.1 原子性 2.2 持久性 2.3 隔离性 2.3.1 第一类丢失更新 2.3.2 脏读 2.3.3 幻读 2.3.4 不可重复读 2.3.5 第二类丢失更新 3 Repeatable Read 4 小结 点点关注,不会迷路 1 引言想必参加过后台开发面试的伙伴们都知道,MySQL事务这玩意是各大面试官百问不厌的知识点,但是大家对于事务的了解到什么层面呢,仅原创 2021-03-31 17:30:26 · 123 阅读 · 0 评论 -
Java并发理论(一):指令重排序与数据依赖性
文章目录 1 为什么需要指令重排序? 2 重排序的分类 3 重排序的过程 4 重排序对多线程的影响 5 数据依赖性 点点关注,不会迷路 先附上思维导图,本篇重点介绍指令重排序,主要为了下篇的as-if-serial和happens-before规则。1 为什么需要指令重排序?现在的CPU一般采用流水线来执行指令。一个指令的执行被分成:取指、译码、访存、执行、写回等若干个阶段。然后,多条指令可以同时存在于流水线中,同时被执行。指令流水线并不是串行原创 2021-03-31 17:28:39 · 200 阅读 · 0 评论 -
如何用Java实现一把 LOL 案例???
前言假如开一把lol,必须要做哪些事呢?可以简化位这三个步骤。选择英雄,开始游戏,投降。这三个步骤必须按照顺序执行。映射到代码中可以想到socket信息传输,建立连接,传输数据,关闭连接。[这就是模板模式了大概的样子,在模板模式中,一个抽象类公开定义了执行它的方法的方式模板,它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。][比如玩一把lol,选择什么英雄都可以,开始游戏后,每个人也有自己的发育路线,最后是15分钟投降,还是20分钟投降,每一局也都不一定(赢了暂时不算)不管谁来原创 2021-03-31 17:25:25 · 681 阅读 · 0 评论 -
长文深度解读HashMap
主要静态变量 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; static final float DEFAULT_LOAD_FACTOR = 0.75f; static final int TREEIFY_THRESHOLD = 8; static final int UNTREEIFY_THRESHOLD = 6; static final int MIN_TREEIFY_CAPACITY = 64;复制代码 DEFAUL原创 2021-03-31 16:55:04 · 82 阅读 · 0 评论 -
自己写的实战教程就是香!聊聊我写博客的那些事!
摘要之前经常有读者朋友问我:怎样才能和我一样优秀?其实我也是从菜鸟过来的,但是我坚信平时多积累,多输出,就能变得优秀!今天分享下我写博客的经历,希望对大家有所启发!为什么要写博客?优秀的人不一定写博客,但是一定会记笔记。记得刚开始工作那会儿,之前写过的模板代码,又要用到的时候忘了,经常会去原来的项目里面找,感觉非常麻烦,大概是和公司老程序员学的,反正不是啥好习惯!后来在使用搜索引擎解决问题的时候,发现有的问题解决一次,又遇到了,又要去找一遍,有点麻烦!于是就养成了把搜索到的有用文章记录到原创 2021-03-31 16:54:23 · 244 阅读 · 0 评论 -
JVM调优典型案例(一)附源码说明
背景线上服务频繁Full GC,每次full gc就会有接口超时问题,引起系统告警,曲线图大概如下 老年代内存回收锯齿状。原因分析oldgen频繁full gc,先想到的是因为oldgen区域过小吗,调整大以后发现问题依旧没有解决。我想到的第二个原因:Eden区过小,因为小Eden区域yong gc就会很频繁,这还不是引起Full gc的原因,熟悉gc算法的知道,Young GC 采用的是复制算法,会伴随这对象年龄晋升,如果遇到大对象,或者Eden区过小,就会导致直接把大对象抛到old区原创 2021-03-31 16:53:10 · 298 阅读 · 0 评论 -
Spring Boot 定时任务的技术选型对比
1. 概述在产品的色彩斑斓的黑的需求中,有存在一类需求,是需要去定时执行的,此时就需要使用到定时任务。例如说,每分钟扫描超时支付的订单,每小时清理一次日志文件,每天统计前一天的数据并生成报表,每个月月初的工资单的推送,每年一次的生日提醒等等。其中,艿艿最喜欢“每个月月初的工资单的推送”,你呢?在 JDK 中,内置了两个类,可以实现定时任务的功能:java.util.Timer :可以通过创建 java.util.TimerTask 调度任务,在同一个线程中串行执行,相互影响。也就是说,对原创 2021-03-31 16:52:20 · 476 阅读 · 0 评论 -
Redis 分布式锁遇到的序列化问题
场景描述最近使用 Redis 遇到了一个类似分布式锁的场景,跟 Redis 实现分布式锁类比一下,就是释放锁失败,也就是缓存删不掉。又踩了一个 Redis 的坑……这是什么个情况、又是怎样排查的呢?本文主要对此做个复盘。问题排查既然是释放锁有问题,那就先看看释放锁的代码吧。释放锁释放锁使用了 Lua 脚本,代码逻辑和 Lua 脚本如下:释放锁示例代码public Object release(String key, String value) { Object exi原创 2021-03-31 16:51:07 · 106 阅读 · 0 评论 -
你真的了解执行上下文吗?
执行上下文执行上下文 可以理解为当前代码的执行环境,同一个函数在不同的环境中执行,会因为访问数据的不同产生不一样的结果。执行上下文分为三种:全局执行上下文:只有一个,程序首次运行时创建,它会在浏览器中创建一个全局对象(window对象),使this指向这个全局对象 函数执行上下文:函数被调用时创建,每次调用都会为该函数创建一个新的执行上下文 Eval 函数执行上下文:运行eval函数中的代码时创建的执行上下文,少用且不建议使用执行上下文栈执行上下文栈(Execution conte原创 2021-03-31 16:05:38 · 679 阅读 · 0 评论