自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 来自一个十年 Java开发者百度、阿里、腾讯的面试心经

前言我觉得有一个能够找一份大厂的 offer的想法,这是很正常的,这并不是我们的饭后谈资而是每个技术人的追求。像阿里、腾讯、美团、字节跳动、京东等等的技术氛围与技术规范度还是要明显优于一些创业型公司 / 小公司,如果说能够在这样的公司锻炼几年,相信对自己能力的提升还是非常大的。不论是校招还是社招都避免不了各种面试、笔试,如何去准备这些东西就显得格外重要。不论是笔试还是面试都是有章可循的。因...

2019-02-16 16:34:08 261

原创 消息队列的消费语义和投递语义

引言所谓的消费语义,指的就是如下三种情况如何保证消息最多消费一次 如何保证消息至少消费一次 如何保证消息恰好消费一次其实类似还有一个投递语义如何保证消息最多投递一次 如何保证消息至少投递一次 如何保证消息恰好投递一次说句实在话,其实还是老问题,只是换了一种问法!OK,开始我们的正文正文我们先做如下约定Producer代表生产者 Consumer代表消费者 ...

2019-06-19 14:44:15 247

原创 手动实现 SpringMVC

先看整体架构因为我们这个 MVC 框架要依赖 IOC/DI 容器,所以我们在 pom 文件里要将自己的 Spring 框架引入进来。实现 MVC 的整体功能首先我们定义两个 MVC 专用的注解,RequestMapping 用来做 url 匹配,RequestParam 做参数转换:package com.paul.annotation;import java.lan...

2019-06-17 17:23:36 89

原创 Java虚拟机内存分配与回收策略

内存分配与回收策略Minor GC 和 Full GC Minor GC:发生在新生代上,因为新生代对象存活时间很短,因此 Minor GC 会频繁执行, 执行的速度一般也会比较快。 Full GC:又称Major GC,发生在老年代上,老年代对象其存活时间长, 因此 Full GC 很少执行,执行速度会比 Minor GC 慢很多。 内存分配策略堆内存:分...

2019-05-13 16:02:12 74

原创 面试题:给我说一下你项目中的单点登录是如何实现的?

一、单系统登录机制1、http无状态协议web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系。但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服务器的某些资源,必须限制浏览器请求;要限制浏览器请求,必...

2019-05-07 16:20:33 4000 1

原创 使用MQ消息队列的优缺点

1、前言公司的项目一直都是在使用MQ的,但是由于使用的功能很简单,所以一直都是知其然不知其所以然,作为一个程序猿有必要了解每一个使用的技术,为什么使用它?它的优点是什么?缺点是什么?等等。。。2.0使用mq的好处2.1解耦与复用系统A要发送一个消息到多个系统,如果此时每增加一个系统,系统A都需要通过修改源码来增加接口,此时耦合非常高,但是如果中间使用消息队列的话,系统只需要发送一次...

2019-05-07 15:44:19 307

原创 redis做分布式锁可能不那么简单

一、为什么需要分布式锁 随着互联网的兴起,现代软件发生了翻天覆地的变化,以前单机的程序,已经支撑不了现代的业务。无论是在抗压,还是在高可用等方面都需要多台计算机协同工作来解决问题。现代的互联网系统都是分布式部署的,分布式部署确实能带来性能和效率上的提升,但为此,我们就需要多解决一个分布式环境下,数据一致性的问题。 当某个资源在多系统之间共享的时候,为了保证大家访问这个资源数据是一...

2019-05-05 20:41:45 274

原创 福利来了,现“免费”赠送Spring微服务实战书籍

本书适合拥有构建分布式应用程序的经验、拥有Spring的知识背景以及对学习构建基于微服务的应用程序感兴趣的Java开发人员阅读。本书籍赠送活动详情,请识别上图二维码☝☝☝☝☝ 书籍推荐本书教读者如何使用Java和Spring平台构建基于微服务的应用程序。在构建和部署dy个Spring Cloud应用程序时,读者将学习如何进行微服务设计。在本书中,精心挑选的真实案例展示了基于...

2019-02-24 14:05:23 60

原创 BATJ面试必备指南

Java并发编程面试题汇总线程线程是一个独立执行的调用序列,同一个进程的线程在同一时刻共享一些系统资源(比如文件句柄等)也能访问同一个进程所创建的对象资源(内存资源)。java.lang.Thread对象负责统计和控制这种行为。每个程序都至少拥有一个线程-即作为Java虚拟机(JVM)启动参数运行在主类main方法的线程。在Java虚拟机初始化过程中也可能启动其他的后台线程。这种线程的...

2019-02-15 15:58:14 149

原创 你真的懂redis的数据结构了吗?

Redis有哪些数据结构?字符串String、字典Hash、列表List、集合Set、有序集合SortedSet。很多人面试时都遇到过这种场景吧?其实除了上面的几种常见数据结构,还需要加上数据结构HyperLogLog、Geo。可是很多人不知道redis 不仅有上面的几种数据结构,还内藏了内部的数据结构。即redis可以分为外部数据结构和内部数据结构。1. 如何查看redis的...

2019-02-14 17:17:03 89

原创 2019年最新Java面试真题,通往BATJ的必经之路!

前言跳槽时时刻刻都在发生,但是我建议大家跳槽之前,先想清楚为什么要跳槽。切不可跟风,看到同事一个个都走了,自己也盲目的开始面试起来,期间也没有准备充分,到底是因为技术原因,影响自己的发展,偏移自己规划的轨迹,还是钱给少了,不受重视。准备不充分的面试,完全是浪费时间,更是对自己的不负责。今天给大家分享下整理的Java面试大纲,其中大部分都是面试过程中的面试题,可以对照这查漏补缺,当然了,这里所列...

2019-02-13 21:40:50 495

原创 一文带你认识Spring事务

Spring事务管理我相信大家都用得很多,但可能仅仅局限于一个@Transactional注解或者在XML中配置事务相关的东西。不管怎么说,日常可能足够我们去用了。但作为程序员,无论是为了面试还是说更好把控自己写的代码,还是应该得多多了解一下Spring事务的一些细节。这里我抛出几个问题,看大家能不能瞬间答得上:如果嵌套调用含有事务的方法,在Spring事务管理中,这属于哪个知识点?我...

2019-01-31 14:31:33 120

原创 【源码分析】HashMap源码再读

最近工作不是太忙,准备再读读一些源码,想来想去,还是先从JDK的源码读起吧,毕竟很久不去读了,很多东西都生疏了。当然,还是先从炙手可热的HashMap,每次读都会有一些收获。当然,JDK8对HashMap有一次优化一、一些参数我们首先看到的,应该是它的一些基本参数,这对于我们了解HashMap有一定的作用。他们分别是:参数 说明 capacity 容量,默认为16,最大...

2019-01-30 17:25:12 64

原创 RabbitMQ消息可靠性分析和应用

RabbitMQ流程简介(带Exchange)       RabbitMQ使用一些机制来保证可靠性,如持久化、消费确认及发布确认等。       先看以下这个图:        P为生产者,X为中转站(Exchange),红色部分为消息队列,C1、C2为消费者。       整个流程分成三部分:第一,生产者生产消息,发送到中转站;第二,中转站按定义的规则转发消息到消息队列...

2019-01-28 15:18:53 115

原创 Java工程师应该如何逆袭冲进BAT?

目录(1)80% Java工程师都有的迷茫(2)你的技术为啥十年八年都无法进步?(3)追求卓越,自己设立技术挑战(4)幻想一步登天?那只是你的黄粱美梦(5)不断提升自己,最后进入BAT(6)最后的寄语(1)80% Java工程师都有的迷茫这篇文章,跟大家聊一聊很多很多很多人问我的一个问题:中小公司的Java工程师应该如何规划准备,才能跳槽进入BAT这类一线互联网公司...

2019-01-27 20:36:31 102

原创 SpringBoot入门——属性文件读取

一 自定义属性  在application.properties文件中添加属性配置项 myapp.name=helloworld   可以使用@Value 注解来读取,在之前的helloworld工程的控制器中添加属性并读取,如下@RestControllerpublic class HelloController { @Value("${myapp.name}")...

2019-01-23 22:27:08 98

原创 阿里p8程序员吐槽:新来应届生都开卡宴上班,我真的是不甘心啊!

现在程序员作为一个热门职位在如今互联网时代属于高薪职业,但是也仅仅是相对于其他行业,这不就有一个阿里p8看到自己带的实习生都开卡宴来上班,当时就震惊了,心里顿时五味杂陈起来,自己开的只是一破代步车,人与人的差距就是这么明显啊。 开着网友原贴如下,坐标杭州阿里,刚看小公司校招生开着卡宴来上班。。。我等p8还开破宝来。这样看起来好像是有点另类,教一个土 豪赚钱?总之感觉怪怪的。 ...

2019-01-22 21:50:52 973

原创 【分布式缓存系列】Redis实现分布式锁的正确姿势

一、前言  在我们日常工作中,除了Spring和Mybatis外,用到最多无外乎分布式缓存框架——Redis。但是很多工作很多年的朋友对Redis还处于一个最基础的使用和认识。所以我就像把自己对分布式缓存的一些理解和应用整理一个系列,希望可以帮助到大家加深对Redis的理解。本系列的文章思路先从Redis的应用开始。再解析Redis的内部实现原理。最后以经常会问到Redist相关的面试题为结尾...

2019-01-21 14:08:50 143

原创 想要涨薪,这些坑你避开了

升职加薪永远都是职场人最为关注的话题。有人认为,会哭的孩子有奶吃,要时不时地向老板进言表现自己;也有人认为,只要认真努力,别人一定看得见,等时机成熟了,好运就会降临。其实,加薪与否并不取决于你是主动邀功还是被动等待,真正重要的是,当你拿出过去一阶段的成绩单放在老板面前时,他是否会认可你的努力。职场上,经常有些看不见的坑,让我们误以为会给自己带来升职加薪,实际上却拖了我们后腿,而那些一年内多...

2019-01-18 15:18:07 153

原创 蚂蚁金服面试经验分享

从7月分开始,打算找工作,一个偶然的机会,拉勾上一个蚂蚁金服的师兄找到我,说要内推,在此感谢姚师兄,然后就开始了蚂蚁金服的面试之旅。把简历发过去之后,就收到了邮件通知,10个工作日联系我,请耐心等待。 阿里一面没过2天就接到一个杭州的座机,说要约我进行电话面试,效率还是挺高,然后当天晚上就进行了一面。下班后,吃了饭,专门找了一条人比较少的小路,到了7点,电话准时打过来了。还...

2019-01-17 19:48:37 4485 1

原创 Redis客户端连接以及持久化数据

一、介绍之前我们讲解了Redis的结构与指令,其实很简单,我也没有过多的讲解,这次我们讲解一下Redis连接客户端以及持久化方案。1、上文中我们针对redis的数据操作都是在服务器中使用命令执行的,当然这个也是非常安全的处理方式,那么在开发的阶段为了方便我们可是使用可视化界面连接redis,比如RedisDesktopManager 这个软件等,方便我们快速的操作数据,下面的介绍也是依...

2019-01-17 14:39:09 99

原创 平时的你VS面试的你

引言大家在面试的时候,特别是最后一面HR面,是不是经常都说自己咳咳咳。博主特意总结了一下平时的你和面试的你区别在哪,整理成文,大家看看就好~正文面对HR问题:你是如何和你同事相处的?平时的你:卧槽,知不知道我很忙的,这点破事也来问我,能不能别来烦我!面试的你:我最大的优点就是古道热肠,积极帮助同事解决各方面的问题,同事都叫我大神!问题:你大概融入一个团队需要多久?平时的你:什么...

2019-01-16 14:07:10 169

原创 springmvc的面试知识点总结

新的一年,开启新的篇章,欧气满满,迎接未来.前几天回顾了spring相关的知识点,现在再来回顾下springmvc相关的知识点做一下总结.问题总结之前面试问题总结的那篇文章中,与springmvc相关的有哪些问题:springmvc的工作流程? springmvc dispatcherservlet与handleradapter如何关联? 有了springmvc的IOC容器,还需...

2019-01-15 14:16:40 161

原创 面试前必须要知道的Redis面试题

一、缓存雪崩1.1什么是缓存雪崩?回顾一下我们为什么要用缓存(Redis):现在有个问题,如果我们的缓存挂掉了,这意味着我们的全部请求都跑去数据库了。在前面学习我们都知道Redis不可能把所有的数据都缓存起来(内存昂贵且有限),所以Redis需要对数据设置过期时间,并采用的是惰性删除+定期删除两种策略对过期键删除。如果缓存数据设置的过期时间是相同的,并且Redis恰好将...

2019-01-14 14:28:55 591

原创 Java 线程池 实现原理与源码深度解析

正文史上最清晰的线程池源码分析鼎鼎大名的线程池。不需要多说!!!!!这篇博客深入分析 Java 中线程池的实现。总览下图是 java 线程池几个相关类的继承结构:  先简单说说这个继承结构,Executor 位于最顶层,也是最简单的,就一个 execute(Runnable runnable) 接口方法定义。ExecutorService 也是接口,在 Execut...

2019-01-13 15:01:05 581

原创 JAVA工程师-蚂蚁金服电话面试

今天5点半接到一个杭州的电话,是蚂蚁金服打来的,当时心里一阵发慌,由于还在上班,就和面试官约定6点下班之后再来。挂完电话,心里忐忑的不行,感觉自己这也没准备好,那也没准备好。剩下半个小时完全没有心思再工作了,把常问的HashMap,concurrentHashMap底层看了一下,算是临时抱佛脚吧。一下班,就收拾出发在公司楼下找了个地方等面试电话。     没一会儿,电话如期而至。先是聊了下大概...

2019-01-11 15:06:44 235

原创 如何打破僵局拿到高薪

每个程序员心里多多少少都有一个成为技术大牛的梦,毕竟梦想总是要有的,万一实现了呢?工作1-3年,当我们向老板提出加薪的时候,或者跳槽去“捡”offer的时候,我们底气够吗?敢不敢不给涨薪就“挥一挥衣袖,不带走一个bug”?是不是提出要求后你的主管、经理立刻同意,为了把你留住。然而,现实往往是...互联网公司面试道路又长且阻,技术面少的两轮,多的五六轮技术不过硬,其他的都免谈。...

2019-01-11 14:42:23 121

原创 Java面向对象概述及三大特征(封装,继承和多态)

一、面向对象思想Java是面向对象的高级语言,对于Java语言来说,万事万物皆对象!它的基本思想是使用类,对象,继承,封装,消息等基本概念进行程序设计。面向对象程序的最小单元是类,类代表了客观世界中具有某一特征的一类事物,封装了这类事物所具有的属性和行为。所以,类定义=成员变量(属性)+方法(行为)。面向对象程序设计与人类的思维习惯一致,比如希望完成“兔子吃草"这件事:在面向过...

2019-01-10 14:13:36 84

原创 职场晋升,别人为什么总比你走得快?

阅读前请先思考:你最重要的竞争力是什么?你为何焦虑?每个程序员心里多多少少都有一个成为技术大牛的梦,毕竟梦想总是要有的,万一实现了呢?奇葩说第五季里有一期辩题是《高薪不喜欢的还是低薪喜欢的工作,你选哪一个?》在所有人的发言中,蔡康永的一句话最让人触动:不管怎样,选一份能让自己持续成长的工作。如何才能持续成长,是每一个程序员都绕不开的话题。每年大量涌入刚毕业的年轻人以及培训机...

2019-01-09 16:30:06 232

原创 Java的四种线程池的使用,以及自定义线程工厂

四种线程池四种线程池分别是:newCachedThreadPool、newFixedThreadPool 、newScheduledThreadPool 和newSingleThreadExecutor ,下面对这几个线程池一一讲解。newCachedThreadPool:可缓存的线程池源码:public static ExecutorService newCachedThrea...

2019-01-07 14:31:12 532

原创 Java内存区域与内存溢出异常

Java的内存管理是一个老生常谈的问题,虽然Java号称可以自动管理自己的内存,使程序员从内存管理的围墙解放出来,但是一连串的内存泄漏和溢出方面的问题,使得我们不得不去深入了解Java的内存管理机制。本篇文章将从Java的内存区域开始剖析Jvm的内存机制,阐述内存溢出异常产生的原因以及解决办法。运行时数据区域众说周知,Java程序是运行在Java虚拟机中的,虚拟机顾名思义,就是一个虚拟的计...

2019-01-05 13:53:51 37

原创 Mysql高性能优化规范建议

数据库基本设计规范 1. 所有表必须使用Innodb存储引擎没有特殊要求(即Innodb无法满足的功能如:列存储,存储空间数据等)的情况下,所有表必须使用Innodb存储引擎(mysql5.5之前默认使用Myisam,5.6以后默认的为Innodb)Innodb 支持事务,支持行级锁,更好的恢复性,高并发下性能更好 2. 数据库和表的字符集统一使用UTF8兼容性更好,...

2019-01-04 14:21:55 124

原创 mybatis的扩展实现源码解读

最近项目中需要用到mybatis的扩展,就深入看了下mybatis的实现,对其灵活性和扩展性的设计思想还是非常佩服的 首先说一下mybatis的拦截器使用方法:继承其Intercepter接口,实现org.apache.ibatis.plugin.Interceptor#intercept方法,在其中或者对其要执行的方法进行拦截,或者对返回值进行解析同时基于org.apache.iba...

2019-01-03 13:59:24 152

原创 java设计模式之单例模式

单例模式属于java设计模式的一种,最常见实现方式有以下几种 懒汉、饿汉、双重检查单例、静态内部类单例。单例模式的特点:1:单例类只能有一个实例2:单例类的唯一实例化必须由自己完成3:单例类给其他对象提供唯一实例如何保证第一个和第三个特点呢->2个实例化的对象相等说明是同一实例化对象  1 public class SingletonTest { 2 ...

2019-01-02 21:12:54 42

原创 深入理解Java的三种工厂模式

一、简单工厂模式简单工厂的定义:提供一个创建对象实例的功能,而无须关心其具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体的类实现汽车接口public interface Car { String getName();}奔驰类public class Benz implements Car { @Override public String...

2018-12-29 15:21:03 64

原创 RabbitMQ 延时消息设计

问题背景所谓"延时消息"是指当消息被发送以后,并不想让消费者立即拿到消息,而是等待指定时间后,消费者才拿到这个消息进行消费。 场景一:客户A在十二点下了一个订单,我想半个小时后来检查一下这个订单的付款状态,根据付款状态来作下一步的处理。 a. 针对场景一,建议采用方案数据库保存+schedule的方式也许更合适。 场景二:mdc系统更新了一个A信息,我要通知给A门店信息发生了变化,通知他们...

2018-12-28 21:29:09 167

原创 RabbitMQ 高可用之镜像队列

如果RabbitMQ集群只有一个broker节点,那么该节点的失效将导致整个服务临时性的不可用,并且可能会导致message的丢失(尤其是在非持久化message存储于非持久化queue中的时候)。可以将所有message都设置为持久化,并且使用持久化的queue,但是这样仍然无法避免由于缓存导致的问题:因为message在发送之后和被写入磁盘并执行fsync之间存在一个虽然短暂但是会产生问题的时...

2018-12-28 14:07:37 304

原创 十年阿里面试官告诉你如何介绍自己的项目经验

虽时至年底,大多数小伙伴都知道,2018年是互联网行业最不平凡的一年。各类平台的倒闭、破产、清算,尤其是6、7月分全国大范围P2P集中爆雷跑路,再加上贸易战等,居多因素,裁员的、失业的大有人在,所以,虽近年底,找工作的伙伴应该还不在少数,所以,今天,给大家分享一些面试技巧文章。假如去面试要问10个问题,那么至少5个问题会根据你所介绍的项目背景来问。面试时7份靠能力,3份靠技能,而...

2018-12-27 22:21:41 4923

原创 什么是线程安全,以及并发需要知道的几个概念

众所周知,在Java的知识体系中,并发编程是非常重要的一环,也是面试的必问题,一个好的Java程序员是必须对并发编程这块有所了解的。为了追求成为一个好的Java程序员,我决定从今天开始死磕Java的并发编程,尽量弥补自己在这方面的知识缺陷。并发必须知道的概念在深入学习并发编程之前,我们需要了解几个基本的概念。同步和异步同步和异步用请求返回调用的方式来理解相对简单。同步:可以理解...

2018-12-26 14:38:05 312

原创 分布式之抉择分布式锁

引言为什么写这篇文章?目前网上大部分的基于zookeeper,和redis的分布式锁的文章都不够全面。要么就是特意避开集群的情况,要么就是考虑不全,读者看着还是一脸迷茫。坦白说,这种老题材,很难写出新创意,博主内心战战兢兢,如履薄冰,文中有什么不严谨之处,欢迎批评。博主的这篇文章,不上代码,只讲分析。(1)在redis方面,有开源redisson的jar包供你使用。(2)在zooke...

2018-12-24 22:23:50 47

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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