自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2018-12-29 15:21:03 119

原创 RabbitMQ 延时消息设计

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

2018-12-28 21:29:09 323

原创 RabbitMQ 高可用之镜像队列

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

2018-12-28 14:07:37 435

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

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

2018-12-27 22:21:41 6745

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

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

2018-12-26 14:38:05 398

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

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

2018-12-24 22:23:50 112

原创 Java当中的JVM

01在使用控制面板时的实质:Hello.java使用javac,然后变成为Hello.class通过运行java这个命令,在类加载器中(含有加载,验证,准备,解析,初始化,使用,卸载),到jvm为Java虚拟机中运行,在jvm中有方法区,堆内存,线程栈,本地方法栈,PC计数器。 类加载器:加载, 验证,class文件的版本是否能兼容当前的Java虚拟机版本,然后class...

2018-12-24 17:06:38 92

原创 深入浅出告诉你Redis的高级特性

Redis 数据结构Redis 常用的数据类型主要有以下五种:StringHashListSetSorted setRedis 内部使用一个 redisObject 对象来表示所有的 key 和 value。String 在 redis 内部存储默认就是一个字符串,被 redisObject 所引用,当遇到 incr,decr 等操作时会转成数值型进行计算,此时...

2018-12-23 17:15:19 152

原创 资深架构师300行代码手写Spring 让面试官膜拜

首先,我们先来介绍一下Spring的三个阶段,配置阶段、初始化阶段和运行阶段(如图): 配置阶段:主要是完成application.xml配置和Annotation配置。初始化阶段:主要是加载并解析配置信息,然后,初始化IOC容器,完成容器的DI操作,已经完成HandlerMapping的初始化。运行阶段:主要是完成Spring容器启动以后,完成用户请求的内部调度,并返回响应结...

2018-12-21 16:15:56 1066

原创 百亿数据量下,掌握这些Redis技巧你就能Hold全场

一、Redis封装架构讲解实际上NewLife.Redis是一个完整的Redis协议功能的实现,但是Redis的核心功能并没有在这里面,而是在NewLife.Core里面。这里可以打开看一下,NewLife.Core里面有一个NewLife.Caching的命名空间,里面有一个Redis类,里面实现了Redis的基本功能;另一个类是RedisClient是Redis的客户端。Redis...

2018-12-21 13:40:55 1166

原创 常被问到的十个 Java 面试题

在这篇文章中,我试图收录最有趣和最常见的问题。此外,我将为您提供正确的答案。接下来,就让我们来看看这些问题。1. 以满分十分来评估自己——你有多擅长 Java?如果你并不完全确信你自己或是你对 Java 的熟练程度,那么这会是一个非常棘手的问题。如果有这种情况,你应该把打分调低一点。之后,你大概会得到与你承认的水平相符的问题。因此,假如你给自己满分,却不能回答一个有点难的问题,那将会对...

2018-12-20 19:09:16 369

原创 Java后端的学习之Spring基础

如果要学习spring,那么什么是框架,spring又是什么呢?学习spring中的ioc和bean,以及aop,IOC,Bean,AOP,(配置,注解,api)-springFramework.各种学习的知识点:spring expression languagespring integrationspring web flowspring securityspring...

2018-12-20 13:47:32 1054

原创 redis 分布式锁

最近抽空优化了之前已有的redis分布式锁,主要用于解决高并发的问题,比如抢红包,多个人同时操作红包库存,当在库存只剩下1个的时候,一个人的减库存的操作事务没提交,另一个人的查库存操作刚好同步执行,这样就会出现很尴尬的事情,1个红包会被2个人抢走,这个时候,我们就要依托锁,将请求入口锁住,当然锁有很多种方式,这边就记录一下比较好用的redis分布式锁。 方式有很多setNX 、set、incr...

2018-12-19 15:43:48 239 1

原创 年底了,2019最新大厂面试必备资料

一、源码阅读常用设计模式Spring5源码Mybatis源码二、分布式架构总纲  消息通信分布式缓存 后台服务高性能框架分布式应用场景解决方案三、微服务架构纲要Spring BootSpring CloudDocker 四、并发编程并发编程  ...

2018-12-18 21:07:21 526

原创 成为优秀的Java程序员要具备哪些技能?

Java是热门的编程语言,热衷技术,掌握一门语言,我们最重要的是知识的积累和运用,那我们需要掌握哪些技能才能成为优秀的Java程序员呢?小编来为大家解答一波。1.拥有扎实的基础和深刻理解能力Java 程序员,深刻理解 Object Oriented Programming(面向对象编程)这一概念是必须的。像 Java 这些面向对象编程语言的美。光学习 OO 原则的定义用处不大,关键是要学会...

2018-12-18 14:21:46 2178

原创 搞懂这6点,阿里、京东不是梦

话不多说,提高你的编程技能,认真 + 严肃,走起!我在这里分享 “6” 个专项来帮助你顺利提高你的编程技能。一:架构师审美观学习Java技术体系,设计模式,流行的框架与组件,常见的设计模式,编码必备,Spring5,做应用必不可少的最新框架,MyBatis,玩数据库必不可少的组件......  二:DevOps(架构师工具箱)工欲善其事必先利其器,选择好的工具,提升...

2018-12-17 21:35:10 223

原创 微服务为什么一定要用docker

引言早在2013年的时候,docker就已经发行,然而那会还是很少人了解docker。一直到2014年,Martin Fowler提出了微服务的概念,两个不相干的技术终于走在了一起,创造了今天的辉煌!近几年来,很多互联网关系开始跟风,构建docker+微服务的架构体系。然而,根据笔者观察发现,有些童鞋在使用过程中,只是会用,而根本不了解为什么使用docker,反正对他们来说,公司让用就用!而某...

2018-12-17 14:23:23 274

原创 设计微服务的最佳实践

你是否曾想过,什么是微服务?以及大规模的互联网行业,例如社交,电商,物流,金融等领域,如何使用微服务构建互联网应用以满足用户需求。要了解微服务是什么,你必须了解如何将单体应用程序,拆解为独立打包和部署的微型应用程序。本文章将帮助你清晰化的理解,开发者如何根据需求使用微服务来构建他们的应用程序。下面,从以下几个维度进行阐述为何选择微服务?什么是微服务?微服务架构的功能微服务架...

2018-12-16 19:25:46 283

原创 分库分表后如何部署上线

引言我们先来讲一个段子面试官:“有并发的经验没?”应聘者:“有一点。”面试官:“那你们为了处理并发,做了哪些优化?”应聘者:“前后端分离啊,限流啊,分库分表啊。。”面试官:"谈谈分库分表吧?"应聘者:“bala。bala。bala。。”面试官心理活动:这个仁兄讲的怎么这么像网上的博客抄的,容我再问问。面试官:“你们分库分表后,如何部署上线的?”应聘者:“这...

2018-12-14 22:07:09 318

原创 如何构建高性能MySQL索引

本文的重点在于如何构建一个高性能的MySQL索引,从中你可以学到如何分析一个索引是不是好索引,以及如何构建一个好的索引。索引误区多列索引一个索引的常见误区是为每一列创建一个索引,如下面创建的索引: 1 2 3 4 5 6 7 8 CREATE TABLE `t` (   `c1` varch...

2018-12-14 15:39:38 151 1

原创 利用消息队列处理分布式事务

引言这篇说说分布式事务的问题。企业现在的架构都由传统的架构转向了微服务架构,如下图所示: 那么,都不可避免的会遇到跨数据库调用的,分布式事务问题!目前,业内解决分布式事务问题,都基本不用JTA这种强一致性的解决方案,基本是采用如下两套方案基于TCC的事务框架 消息队列OK,你们先记住两点(1)图中的服务A和服务B,如果是同步调用,要求一起成功,或者一起失败,那么此时...

2018-12-13 21:08:30 863

原创 聊聊Java内存模型

一、Java内存模型硬件处理电脑硬件,我们知道有用于计算的cpu、辅助运算的内存、以及硬盘还有进行数据传输的数据总线。在程序执行中很多都是内存计算,cpu为了更快的进行计算会有高速缓存,最后同步至主内存,大概的交互如下图 为了使处理器内部的运算单元能够被充分的利用,处理器可能会对输入代码进行乱序执行优化,然后将计算后的结果进行重组,保证该结果和顺序执行的结果是一致的(单位时间内...

2018-12-13 16:38:01 95

原创 去京东面试经验总结

 前情提要其实收到jd的面试邀请的时候,我真心有点小激动。因为在地理位置上,jd应该是最合适我也是最想去的。但是我在看到方向的时候其实心里有很多的问题,也做好了被拒的准备。在底层方向上我对于JVM原理解析+分布式架构+微服务架构+多线程并发原理或者Spring源码其实我是没有那么精通的。所以面试上我也没有任何对应准备,只是看了基本的概念就去了面试。面试过程及感受因为是开车去...

2018-12-11 16:37:28 6109 1

原创 redis实战之事务与持久化

1. 事务描述(1)什么是事务  事务,就是把一堆事情绑在一起,按顺序的执行,都成功了才算完成,否则恢复之前的样子  事务必须服从ACID原则,ACID原则分别是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)  原子性:操作这些指令时,要么全部执行成功,要么全部不执行。只要其中一个指令执行失败,所有的指令...

2018-12-10 17:36:16 98

原创 深入理解JVM——对象

对象的创建虚拟机遇到一条new指令时,首先检查指令的参数能否在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化过。如果没有,必须先执行相应的类加载过程。接下来虚拟机为新生对象分配内存。对象所需要的内存在类加载完成后可以被完全确定,所以只需要把一块确定大小的内存区域从堆中划分出来给这个对象即可: 如果堆的内存是规整的,所有使用的内存在一边,未使用...

2018-12-08 22:20:15 110

原创 程序员如何拨开云雾拿到高薪

初入这个行业的Java程序员是迷茫的,处在金字塔的最底端,拿可怜的薪水,无休止的加班,被“高薪”和“码农”的代名词交替映射着,亦步亦趋的行进着,什么职业规划都是飘渺的空虚的,月光族都是向钱看的。直到无意看到一篇针对Java程序员的文章,感觉收获颇丰。似乎有一种拨开云雾见月明的感觉 一、作为程序员,你首先要问自己一个问题:“我真的喜欢编程吗我能确定我当程序员不仅是为了养家糊口,而是为...

2018-12-08 17:26:50 118

原创 BAT面试官告诉你如何才能脱颖而出

每个程序员、或者说每个工作者都应该有自己的职业规划,如果你不是富二代,不是官二代,也没有职业规划,希望你可以思考一下自己的将来。程序员的三个阶段第一阶段—三年我认为三年对于程序员来说是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人。这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本上的内容迈向真正的企业级开发。我们知道如何团队协作、如何使用项目管理工具、项目版本如何控制、我们...

2018-12-07 19:18:31 238

原创 深入理解Java虚拟机

1、泛型出现之前存在的问题:所有对象的类型都继承自Object,虚拟机只有到运行时才能知道这个Object具体是什么类型,在编译期是无法检查这个Object是否强制转型成功,会将ClassCaseException的风险转移到程序运行期。2、泛型的作用:通过泛型,编译器可以在编译阶段发现类型不一致的问题3、泛型擦除:将Java代码编译成Class文件,通过反编译发现泛型都不见了...

2018-12-07 14:52:49 119

原创 BAT面试官告诉你如何回答你的职业规划

前言(Why)在面试中不论是在一面二面三面这种技术面,还是在最后的hr面,经常会被人问及,"谈谈你的职业规划"这种问题,我们回答的很可能会给我们的面试表现加分,如果回答地不好,对于一些面试官来说无伤大雅,但对于某些 面试官来说,可能直接就会给我们pass掉,可能有些人看到这里会说,“乔兄,你就在吓我吧,哪有这么严重,哼!”,我当初也是这么想的,直到我在秋招中付出了惨重的学费,才知道回答这类问题的...

2018-12-06 17:31:27 14168 2

原创 分布式缓存Redis集群配置使用

Redis 简介redis是一种开源的、基于内存的、可持久化的、高性能的Key-Value数据存储系统。 redis能做什么? 持久化存储 高速缓存 消息中间件 2.Redis 安装配置高性能(内存存储、仅在需要时持久化到硬盘)数据类型丰富 (string Hash List Set SortedSet)支持事务处理批量操作支持设置Key的有效期...

2018-12-04 17:44:03 115

原创 Java并发:线程池实现原理

一、总览线程池类ThreadPoolExecutor的相关类需要先了解:Executor:位于最顶层,只有一个 execute(Runnable runnable) 方法,用于提交任务。ExecutorService :在 Executor 接口的基础上添加了很多的接口方法,提交任务,获取结果,关闭线程池。AbstractExecutorService:实现了ExecutorServi...

2018-12-03 21:44:56 261

原创 多线程学习笔记二之JUC组件

概述为了对共享资源提供更细粒度的同步控制,JDK5新增了java.util.concurrent(JUC)并发工具包,并发包新增了Lock接口(以及相关实现类)用来实现锁功能,它提供了与synchronized关键字相似的同步功能,只是在使用时需要显式地获取和释放锁,还具备内置锁不具备的自由操作锁获取和释放、可中断地获取锁以及超时获取锁等多种synchronized关键字不具备的同步特性。  ...

2018-12-03 17:20:29 365

空空如也

空空如也

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

TA关注的人

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