Java
文章平均质量分 90
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。
程序员黑哥
这个作者很懒,什么都没留下…
展开
-
蚂蚁集团网络通信框架 SOFABolt 功能介绍及协议框架解析
今天我们来聊一下蚂蚁集团开源的网络通信框架 SOFABolt 的框架解析以及功能介绍。本期分享将从以下四个方面展开:SOFABolt 简介;基础通信能力解析;协议框架解析;私有协议实现解析;SOFABolt 是什么SOFABolt 产生背景相信大家都知道 SOFAStack,SOFAStack(Scalable Open Financial Architecture Stack) 是一套用于快速构建金融级云原生架构的中间件,也是在金融场景里锤炼出来的最佳实践。SOFABolt 则是 SO原创 2020-07-20 17:03:49 · 927 阅读 · 0 评论 -
这份599页的PDF,帮你彻底搞定kafka核心原理!(附P8面试题)
Kafka 至今仍是当今大数据技术中当之无愧的王者,由于高吞吐量、可持久化、分布式、支持流数据处理等特性而被广泛应用。 这几年,大数据技术发展迅猛,其中 Kakfa 凭借高可靠、高吞吐、高可用、可伸缩几大特性,成为数据管道技术的首选。越来越多人开始使用 Kafka,对学习源码的需求也愈发强烈,原因主要有以下几个方面:了解 Kafka 底层原理,从而搞懂 Kafka 高性能的实现机制;快速分析定位线上问题,有针对性地制定调优方案,提升编码功力;Kafka 的很多优秀设计理念和特性,在官方文档中并未得到原创 2020-07-23 17:53:30 · 748 阅读 · 0 评论 -
一份还热乎的蚂蚁金服面经(已拿Offer)面试流程4轮技术面+1轮HR
前言本篇题材来自我的校友投稿,他在最近的校招中拿到了蚂蚁金服的实习生Offer,整体思路和面试题目由面试本人——泽林提供由于作者面试过程中高度紧张,本文中只列出了自己还记得的部分题目。经历了漫长一个月的等待,终于在前几天通过面试官获悉已被蚂蚁金服录取,这期间的焦虑、痛苦自不必说,知道被录取的那一刻,一整年的阴霾都一扫而空了。笔者面的是阿里的Java研发工程师岗,面试流程是4轮技术面+1轮hr。文末可以获取面试资料参考一面(基础面:大约60分钟)自我介绍对象相等的判断,equals方法实现.原创 2020-07-10 13:53:45 · 2937 阅读 · 0 评论 -
三面字节跳动被虐得“体无完肤”,15天读完这份pdf,终拿下美团研发岗offer
开篇:说清缘由首先介绍一下我的个人背景,鄙人小康家庭,父母都是普通职业,供我读书长大不容易,好在我也算争气,高考发挥正常,考了个还算不错的大学,华南地区某211。今年的金三银四本是想好好拼一把,奈何受到疫情影响,只能将自己的计划缩减又缩减,所以第一家选择去面试的字节跳动,奈何三面被虐得“体无完肤”,好在自己并未气馁,复习15天后去面试了美团,最终4面拿下了offer。文章以下内容主要是分享面经和个人的学习建议,内容涉及到很多PDF文档(面试题库、学习笔记、实战文档、脑图等),由于文章有限,需要这些文档原创 2020-07-07 10:29:15 · 873 阅读 · 0 评论 -
去年去阿里面试,面试官居然问我Java类和对象,我是这样回答的!
1.谈谈你对Java面向对象的理解? 面向对象就是把构成问题的事务分解成一个个对象,建立对象的目的不是一个步骤,而是为了描述一个事务在解决问题中的行为。类是面向对象的一个重要概念,类是很多个具有相同属性和行为特征的对象抽象出来的,对象是类的一个实例。类具有三个属性:继承、封装和多态。封装:通过把程序模块化、对象化,通过把这些具体事物的特性属性和通过这些属性实现的具体方法放到一个类中。核心思想就是“隐藏细节”,“数据安全”。利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成原创 2020-06-30 16:52:59 · 1579 阅读 · 0 评论 -
太傻了!下次二面再回答不好“秒杀系统“设计原理,我就捶死自己...
秒杀业务分析正常电子商务流程:查询商品创建订单扣减库存更新订单付款卖家发货秒杀业务的特性低廉价格大幅推广瞬时售空一般是定时上架时间短、瞬时并发量高秒杀技术挑战假设某网站秒杀活动只推出一件商品,预计会吸引1万人参加活动,也就说最大并发请求数是10000,秒杀系统需要面对的技术挑战有:1、对现有网站业务造成冲击秒杀活动只是网站营销的一个附加活动,这个活动具有时间短,并发访问量大的特点,如果和网站原有应用部署在一起,必然会对现有业务造成冲击,稍有不慎可能导致整个网站瘫痪。原创 2020-07-01 11:51:04 · 664 阅读 · 1 评论 -
面试细节:为什么 HashMap 默认加载因子非得是0.75?
前言有很多东西之前在学的时候没怎么注意,笔者也是在重温HashMap的时候发现有很多可以去细究的问题,最终是会回归于数学的,如HashMap的加载因子为什么是0.75?本文主要对以下内容进行介绍:为什么HashMap需要加载因子?解决冲突有什么方法?为什么加载因子一定是0.75?而不是0.8,0.6?(若文章有不正之处,或难以理解的地方,请多多谅解,欢迎指正)为什么HashMap需要加载因子?HashMap的底层是哈希表,是存储键值对的结构类型,它需要通过一定的计算才可以确定数据在哈希表原创 2020-06-23 17:15:21 · 259 阅读 · 0 评论 -
Java笔试面试总结—try、catch、finally语句中有return 的各类情况
前言之前在刷笔试题和面试的时候经常会遇到或者被问到 try-catch-finally 语法块的执行顺序等问题,今天就抽空整理了一下这个知识点,然后记录下来。正文本篇文章主要是通过举例的方式来阐述各种情况,我这里根据 try-catch-finally 语法块分为两种大情况讨论:try-catch 语法块和 try-catch-finally 语句块,然后再在每种情况里再去具体讨论。一、try-catch 语句块我们可以看看下面程序:public static void ma原创 2020-06-27 21:13:26 · 151 阅读 · 0 评论 -
RabbitMQ指南之四:路由(Routing)和直连交换机(Direct Exchange)
在上一章中,我们构建了一个简单的日志系统,我们可以把消息广播给很多的消费者。在本章中我们将增加一个特性:我们可以订阅这些信息中的一些信息。例如,我们希望只将error级别的错误存储到硬盘中,同时可以将所有级别(error、info、warning等)的日志都打印在控制台上。1、绑定(Bindings)在上一章中,我们已经创建了绑定关系,回顾一下代码:1 channel.queueBind(queueName, EXCHANGE_NAME, "");一个绑定是一个交换器与队列之间的关系。意思是指:原创 2020-06-15 14:15:23 · 522 阅读 · 0 评论 -
牛人!百度T9大佬纯手打的Kafka学习笔记,吃透已胜过80%Java求职者
小灰工作3年了,一直在一家初创公司做大数据架构师,最近几次大厂的面试经历都百般不顺,小灰心如死灰,想着如果一直跳槽无望,只能跟着时下最火的地摊儿大军一起去出摊儿谋生了。被问到了为什么要使用 Kafka,在哪种场景下需要使用 JMS,小灰一脸问号。工作几年来,接触了 Kafka,Elasticsearch 等等,居然没想过为什么要用这些眼花缭乱的消息系统,各种数据库。脑海中一直萦绕着面试官问的好几个问题,看似简单,小灰却给不出一个系统性的答复。Kafka为什么这么快?如何对Kafka集群进行调优?原创 2020-06-08 20:44:57 · 3325 阅读 · 2 评论 -
2020Java后端没这些东西都不敢跳!对标阿里P7技术路线你值得拥有
虽然 2020 开局不顺,但生活工作还是要往前看的。目前在互联网行业内,尤其是大厂之间对人才的抢夺愈演愈烈。如何在后疫情时代,快速提升自身实力,尽快达到心仪企业的用人要求,成为当下技术人找工作或跳槽时必须考虑的问题。然而,很多朋友在准备时,往往不成体系,一会学会儿 Spring Cloud,一会看下 redis,过后几天就忘。这里贴上一张进阶学习路线图(完整的架构进阶路线图在文末免费领取),图中将大厂需求归纳为五项能力:硬核编码能力、分布式技术栈、必备中间件、微服务主流架构、高并发实战能力。具体学习哪些原创 2020-06-09 16:25:13 · 372 阅读 · 0 评论 -
工作面试总遇秒杀?看了京东T8大咖私藏的秒杀系统笔记,已献出膝盖
不管是面试还是工作中,我们都容易遇上的问题:如何在进程压力极大的情况下实现扩容?当系统崩溃,服务熔断之后,如何保证数据正常进行?当系统上新运转,如何保障系统的稳定?如何实现每个层次都需要的高可用架构设计?如何实现一个能支撑高并发,高可用的系统?······懂得底层原理的,实战起来更是高手。比如高并发是指在比较短的时间内有大量的访问者访问目标系统,系统负载饱和或者过载宕机。高并发的应用,我们应该都有用过或者见过,比如天猫、京东、拼多多、亚马逊的秒杀抢购还有12306的抢票。我们在体验应用的时原创 2021-08-13 15:47:05 · 459 阅读 · 0 评论 -
工作三年四面(技术面)里巴巴拿offer阿定级P6,月薪36K(Java岗)章
阿里技术岗位要求及体系图:好多人对阿里巴巴技术岗的体系结构及级别的技术要求设置不太清楚,想去面试也不知道面试什么级别的岗位,下面说说阿里的技术体系又是一个怎么样的水平划分!阿里P6(技术主管)工作要求:能独立解决问题,制定系统的技术实现方案,考核会涉及部分技术深度。技能要求:除P5的技能外,还需掌握以下技能,以下技能至少需要做到熟悉。架构设计,运维能力,操作系统。技术四面面试题如下一面(问了数据结构、jvm、锁等):1.自我介绍和项目2.HashMap底层如何实现?3.Hash一致原创 2020-06-10 21:09:11 · 1091 阅读 · 0 评论 -
面试官:你知道 Docker 有哪些优缺点嘛?
Docker解决的问题由于不同的机器有不同的操作系统,以及不同的库和组件,在将一个应用部署到多台机器上需要进行大量的环境配置操作。Docker 主要解决环境配置问题,它是一种虚拟化技术,对进程进行隔离,被隔离的进程独立于宿主操作系统和其它隔离的进程。使用 Docker 可以不修改应用程序代码,不需要开发人员学习特定环境下的技术,就能够将现有的应用程序部署在其它机器上。与虚拟机的比较虚拟机也是一种虚拟化技术,它与 Docker 最大的区别在于它是通过模拟硬件,并在硬件上安装操作系统来实现。启动.原创 2020-05-29 15:19:49 · 408 阅读 · 0 评论 -
RocketMQ:至今我见过讲得最全的一篇,看完再也不担心没有实战经验
RocketMQ 是业内知名的消息中间件,有着金融级消息的消息可靠性保证,在性能方面不输于 Kafka。同时对比 Kafka 有着更低的消息投递延时。而这一切,依赖于 RokcetMQ 精心的架构设计和不遗余力的性能优化。大多数人学习面临的痛点实战经验缺乏很多人学习一门技术,更多的是看视频看书,纯理论学习。背概念,缺乏真实的实战。很多同学看过不少RocketMQ博客或视频,理论知识丰富。但我们实际工作中会遇到的问题是各种各样的,缺少实战,当真正碰到问题就不知道如何运用所学知识去解决。纯技术晦涩难懂,原创 2020-05-29 20:32:31 · 1220 阅读 · 0 评论 -
再见Navicat! IDEA的这个兄弟真的很香!我粉了...
前言在我们日常的程序开发中,很大一部分时间是在与数据库打交道。查数据,导数据,检查SQL执行计划,优化SQL等,是我们数据库开发工作的重要组成部分,而且很多时候我们会使用到多款数据库,如Oracle,Mysql,PostgreSQL等。这个时候,找到一款合适的,适用于各个数据库的客户端就非常重要了。今天分享一款功能强大的数据库客户端:DataGrip。介绍DataGrip 是Jetbrains开发的SQL客户端工具(Jetbrains大家都很熟悉,我们常用的IntelliJ IDEA原创 2020-05-30 20:52:17 · 8268 阅读 · 25 评论 -
很全很牛逼,看完这篇Elasticsearch实战,我觉得我可以写个百度~
当前Spring Boot很是流行,包括我自己,也是在用Spring Boot集成其他框架进行项目开发,所以这一节,我们一起来探讨Spring Boot整合ElasticSearch的问题。本文主要讲以下内容:第一部分,通读文档第二部分,Spring Boot整合ElasticSearch第三部分,基本的CRUD操作第四部分,搜索第五部分,例子还没有学过Elasticsearch的朋友,可以先学这个系列的第一节(这个系列共三节),如果你有不明白或者不正确的地方,可以给我原创 2020-06-01 15:45:34 · 833 阅读 · 1 评论 -
一位面试了阿里,滴滴,网易,蚂蚁金服,最终有幸去了网易的Java程序员【面试题分享】
前言15年毕业到现在也近三年了,最近面试了阿里集团(菜鸟网络,蚂蚁金服),网易,滴滴,点我达,最终收到点我达,网易offer,蚂蚁金服二面挂掉,菜鸟网络一个月了还在流程中…最终有幸去了网易。但是要特别感谢点我达的领导及HR,真的非常非常好,很感谢他们一直的关照和指导。面试整体事项简历要准备好,联系方式一定要正确清晰醒目,项目经历按照时间倒序阐述,注意描述自己在项目中承担的职责,简历的模板尽量选择简洁的,毕竟程序员大部分还是喜欢简单明了的。推荐boss直聘,我觉得很好用(不是广告)。一般的整原创 2020-06-01 17:06:37 · 1168 阅读 · 1 评论 -
这套Github上40K+star学习笔记,可以帮你搞定95%以上的Java面试
该文档在Github上收获40K+star的Java面试神技(这赞数,质量多高就不用我多说了吧)非常全面,包涵Java基础、Java集合、JavaWeb、Java异常、OOP、IO与NIO、反射、注解、多线程、JVM、MySQL、MongoDB、Spring全家桶、计算机网络、分布式架构、Redis、Linux、git、前端、算法与数据结构、MyBatis、RocketMQ、Netty、Dubbo。内容非常丰富,已经帮很多人拿下互联网一线公司的offer。每个知识点都有左侧导航书签页,看的时候十分方便.原创 2020-05-21 17:02:53 · 320 阅读 · 0 评论 -
简直是神仙题库,啃完这26个java开发者面试必问专题,阿里P7不是梦
面试作为涨薪最直接最有效的方式,我们需要花费巨大的精力和时间来准备。除了自身的技术积累之外,掌握一定的面试技巧和熟悉最常见的面试题,一定会让我们如虎添翼。尤其是在当今的这个严峻形势下,大厂的面试竞争十分激烈,想要在这场战役中获得胜利,就必须在面试这个环节上下狠功夫,那么查漏补缺和务实理论就是我们的必经之道。短期准备——刷面试题;长期筹谋——巩固核心技能。面试题怎么刷?刷高频题、有深度的题、符合时效性的题。核心技能如何巩固?先深入理解原理,再系统应用到实践。好东西来了,最近发现一个大神级面试复原创 2020-05-25 14:50:09 · 204 阅读 · 0 评论 -
synchronized锁升级原理分析(偏向锁-轻量级锁-重量级锁)
synchronized原理分析初识 synchronized在并发编程中,synchronized对我们来说并不陌生,我们都知道,当多个线程并行的情况下,程序是不安全的,这个不安全主要发生在共享变量的不安全,我们通过一个例子来说明:package com.zwx.concurrent;public class TestSynchronized { private static int count; public static void increment(){原创 2020-05-25 17:23:32 · 607 阅读 · 0 评论 -
干掉Navicat:这个IDEA的兄弟真香!
DataGrip 版是由JetBrains公司推出的数据库管理软件,DataGrip支持几乎所有主流的关系数据库产品,如DB2、Derby、H2、MySQL、Oracle、PostgreSQL、SQL Server、Sqllite及Sybase等,并且提供了简单易用的界面,开发者上手几乎不会遇到任何困难。JetBrains DataGrip 2020功能数据编辑器工具提示中的列注释智能代码完成DataGrip提供上下文相关的代码完成,帮助您更快地编写SQL代码。完成可以识别表格结构、外键,甚.原创 2020-05-26 21:13:09 · 261 阅读 · 0 评论 -
阿里大牛花费近8个月整理的Java架构成长进阶笔记文档(Java岗)
由于细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容(这里只展示2级目录)!整理了一份Java核心知识点。覆盖了JVM,Java基础,并发编程,分布式,Dubbo,Spring,MyBatis,SpringMVC,Spring Cloud,SpringBoot,Docker,操作系统,Linux(V2.0更新),Redis,Kafka,数据结构算法,后续还会以后的版本持续更新等大量知识点级面试解析。如果需要获取到这个【Java架构进阶笔记】文档的话帮忙转发一下.原创 2020-05-27 16:11:17 · 1025 阅读 · 0 评论 -
Java程序员怎么才能又轻松又赚钱又拥有技术?
1.如何赚钱?当你进入正确的河道,哪怕你毫不用力,湍急的水流也会推着你飞速前进。这就是趋势和环境的力量。如果你进入了错误的河道,就算你很努力,趋势也会无情淹没你的努力;五年、八年、十年或者更久,趋势的作用会远远大于个人努力,甚至会将个人的努力淹没。每一个行业的发展,均经历了增长、见顶、缓慢下降的阶段。互联网恰处于增长阶段,一个好的APP或游戏,不再是能摸得到的实物,这些物品只需要生产一次,而复制扩张成本趋近于0;你能想象其中的利润空间么?而程序员恰恰处于这个行业和时代的执行层中心,工资只会越来越高,原创 2020-05-27 17:30:35 · 807 阅读 · 0 评论 -
慢查询优化实践(已解决)
一、问题背景现网出现慢查询,在500万数量级的情况下,单表查询速度在30多秒,需要对sql进行优化,sql如下:我在测试环境构造了500万条数据,模拟了这个慢查询。简单来说,就是查询一定条件下,都有哪些用户的。很简单的sql,可以看到,查询耗时为37秒。说一下app_account字段的分布情况,随机生成了5000个不同的随机数,然后分布到了这500万条数据里,平均来说,每个app_account都会有1000个是重复的值,种类共有5000个。二、看执行计划可以看到,group by字段上我原创 2020-05-14 09:29:50 · 662 阅读 · 0 评论 -
程序员:并发下如何保证共享变量安全且不用锁?!
学习笔记,休息了两天(其实期间在做一个模拟项目实战),偶尔也想到自己究竟应该做些什么,是真的对自己或社会有意义的呢?说出你的回答emmm,答案不止一个,今天先介绍一个简单易懂的读题:我们应该如何保证共享变量访问的线程安全,同时又避免引入锁产生的开销呢在并发环境下,一个对象是很容易被多个线程共享的,那么对于数据的一致性是有要求的虽然可以使用显式锁或者CAS操作,不过这也会带来一些上下文切换...原创 2020-05-08 17:01:49 · 618 阅读 · 1 评论 -
面试题:数据量很大,分页查询很慢,有什么优化方案?
当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时需要使用分页查询。对于数据库分页查询,也有很多种方法和优化的点。下面简单说一下我知道的一些方法。准备工作为了对下面列举的一些优化进行测试,下面针对已有的一张表进行说明。表名:order_history描述:某个业务的订单历史表主要字段:unsigned int id,tinyint...原创 2020-04-29 10:03:38 · 430 阅读 · 0 评论 -
编码5分钟,命名2小时?史上最全的Java命名规范参考!
简洁清爽的代码风格应该是大多数工程师所期待的。在工作中笔者常常因为起名字而纠结,命名已经成为我工作中的拦路虎,夸张点可以说是编程5分钟,命名两小时!每个公司都有不同的标准,目的是为了保持统一,减少沟通成本,提升团队研发效能。所以本文中是笔者结合阿里巴巴开发规范,以及工作中的见闻针对Java领域相关命名进行整理和总结,仅供参考。一,Java中的命名规范好的命名能体现出代码的特征,含义或者是用途...转载 2020-05-06 10:32:13 · 731 阅读 · 0 评论 -
Dubbo如何支持本地调用?InJvm方式解析
Dubbo是一个远程调用的框架,对于一个服务提供者,暴露了一个接口供外部消费者调用,那么对于提供者自己是否可以调用这个接口,需要什么特殊处理吗?这篇文章就分享下Dubbo关于本地调用的实现机制,以及如何开启和关闭本地调用。injvm支持本地调用使用 Dubbo 本地调用不需做特殊配置,按正常 Dubbo 服务暴露服务即可。任一服务在暴露远程服务的同时,也会同时以 injvm 的协议暴露本...原创 2020-04-23 15:13:34 · 321 阅读 · 0 评论 -
Tomcat是如何运行的?整体架构又是怎样的
在许多的高端开发的岗位中都会或多或少有要求面试人员要研究过一些常用中间件源码。这是因为一切的秘密都是藏在源码中,阅读源码能够让我们对框架或者中间件的理解更加深刻,而我们也能够在源码的研究中获得其中一些优秀的设计方式。而我们的中间件和源码那么多,我们该从何入手呢?其实大部分的中间件或者框架都有一些共性的部分,例如网络编程、多线程、反射和类加载等技术。所以深入研究透了一两个中间件的话,那么再回过头来看...原创 2020-04-21 15:25:02 · 485 阅读 · 0 评论 -
工作5年了还说不清bean生命周期?大厂offer怎么可能给你!
第一,这绝对是一个面试高频题。比第一还重要的第二,这绝对是一个让人爱恨交加的面试题。为什么这么说?我觉得可以从三个方面来说:先说会不会。看过源码的人,这个不难;没看过源码的人,无论是学、硬背、还是说,绝对是一个坎。再说考察点。这个问题还是比较开放的。可以用三五句话讲出来,也可以揪着面试官聊半个小时。最后说效果。说的不好,绝对“狠减分”;说的好了,也绝对“狠加分”。所以说,遇到这个问题,要...原创 2020-04-20 17:29:29 · 124 阅读 · 0 评论 -
还不懂 ConcurrentHashMap ?这份源码分析了解一下
这次谈谈ConcurrentHashMap ,作为线程安全的HashMap ,它的使用频率也是很高。那么它的存储结构和实现原理是怎么样的呢?ConcurrentHashMap 1.7存储结构Java 7 中 ConcurrentHashMap 的存储结构如上图,ConcurrnetHashMap 由很多个 Segment 组合,而每一个 Segment 是一个类似于 HashMap...原创 2020-04-19 22:03:52 · 153 阅读 · 0 评论 -
面试官:如何停止一个正在运行的线程,你这都不知道?等通知吧
停止不了的线程判断线程是否停止状态能停止的线程–异常法在沉睡中停止能停止的线程—暴力停止6.方法stop()与java.lang.ThreadDeath异常释放锁的不良后果使用return停止线程停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作。停止一个线程可以用Thread.stop()方法,但最好不要用它。虽然它确...原创 2020-04-15 16:14:09 · 192 阅读 · 0 评论