自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一文教你学会递归解题

前言递归是算法中一种非常重要的思想,应用也很广,小到阶乘,再在工作中用到的比如统计文件夹大小,大到 Google 的 PageRank 算法都能看到,也是面试官很喜欢的考点最近看了不少递归的文章,收获不小,不过我发现大部分网上的讲递归的文章都不太全面,主要的问题在于解题后大部分都没有给出相应的时间/空间复杂度,而时间/空间复杂度是算法的重要考量!递归算法的时间复杂度普遍比较难(需要用到归纳法等...

2019-12-06 21:24:26 493

原创 面试中经常被JAVA多线程虐的看过来!

前言Java多线程即时面试中进行被问及到的高阶知识点,也是衡量一名Java程序员是否资深的关键标准之一。今天这篇文章作者将对Java多线程进行一次全面的总结,希望能够对各位朋友进一步理解Java多线程起到帮助!正文如果对什么是线程、什么是进程仍存有疑惑,请先 Google 之,因为这两个概念不在本文的范围之内。用多线程只有一个目的,那就是更好的利用 CPU 的资源,因为所有的多线程代码都可...

2019-12-06 16:14:06 389

原创 Spring Cloud微服务运维神器之Consul Template?

Spring Cloud微服务架构浅析这篇文章中要和大家分享下的就是在Spring Cloud微服务架构模式中被运维小哥用的很爽的一个工具Consul Template?在具体介绍Consul Template是个什么东西之前,我们先来整体看一张微服务模式下的系统架构图,如下图所示:在上图中,我们看到在基于Spring Cloud的微服务体系中,所有的微服务都会被注册到统一服务注册中心进行...

2019-12-05 19:50:36 593

原创 如何利用缓存机制实现JAVA类反射性能提升30倍

前言在实际工作中的一些特定应用场景下,JAVA类反射是经常用到、必不可少的技术,在项目研发过程中,我们也遇到了不得不运用JAVA类反射技术的业务需求,并且不可避免地面临这个技术固有的性能瓶颈问题。通过近两年的研究、尝试和验证,我们总结出一套利用缓存机制、大幅度提高JAVA类反射代码运行效率的方法,和没有优化的代码相比,性能提高了20~30倍。本文将与大家分享在探索和解决这个问题的过程中的一些有...

2019-12-05 15:33:23 480 1

原创 Java对象为啥要实现Serializable接口?

导读最近这段时间一直在忙着编写Java业务代码,麻木地搬着Ctrl-C、Ctrl-V的砖,在不知道重复了多少次定义Java实体对象时“implements Serializable”的C/V大法后,脑海中突然冒出一个思维(A):问了自己一句“**Java实体对象为什么一定要实现Serializable接口呢?”,关于这个问题,脑海中的另一个思维(B)立马给出了回复“居然问这么幼稚和基础的问题,...

2019-12-04 20:45:36 231

原创 Sprint Boot如何基于Redis发布订阅实现异步消息系统的同步调用?

前言在很多互联网应用系统中,请求处理异步化是提升系统性能一种常用的手段,而基于消息系统的异步处理由于具备高可靠性、高吞吐量的特点,因而在并发请求量比较高的互联网系统中被广泛应用。与此同时,这种方案也带来了调用链路处理上的问题,因为大部分应用请求都会要求同步响应实时处理结果,而由于请求的处理过程已经通过消息异步解耦,所以整个调用链路就变成了异步链路,此时请求链路的发起者如何同步拿到响应结果,就需要...

2019-12-04 14:12:17 394

原创 为什么项目中用了JOOQ后大家都不愿再用Mybatis?

前言今天给大家介绍一个新的ORM框架->JOOQ,可能很多朋友还没有听说过这个框架,码农哥之前也是一直在使用Mybatis框架作为Java工程中的持久层访问框架,但是最近的一些项目采用JOOQ框架开发后,码农哥表示再也不想用Mybatis了!为什么这么说呢?因为JOOQ在代码层面要比Mybatis简洁得多,而且性能也非常优异。相信大家都有过这样的体会,我们在项目工程中使用Mybatis...

2019-12-03 19:41:46 361

原创 图解 SQL 中 JOIN 的各种用法

一、概要JOIN对于接触过数据库的人,这个词都不陌生,而且很多人很清楚各种JOIN,还有很多人对这个理解也不是很透彻,这次就说说JOIN操作。图片是很容易被接受和理解,所以尝试使用图片来说明一下。二、JOIN分类客官:小二,上JOIN分类!……小二:客官,新鲜出炉的JOIN分类图片来喽。三、JOIN分类详解客官:小二,速速详细道来!小二:现在让小二来给您详细介绍。INNER&...

2019-12-03 16:02:24 315

原创 写了10年JAVA代码,为何还是给人一种乱糟糟的感觉?

接触过不少号称写了10多年代码的程序员,可经常还是会发现他们的代码给人一种乱糟糟的感觉,那么如何才能写出让同事感觉不那么乱的代码呢?一、为什么要写这篇文章在开篇之前先说明下为什么要写这篇文章?在Java的世界里MVC软件架构模式绝对是经典的存在(PS:MVC是一种软件架构方式并不只有Java有),如果你是在最近十年前后进入Java的编程世界,那么你会发现自己这些年似乎从来没有逃离MVC架构...

2019-12-02 21:55:37 1150

原创 茴香豆的“茴”有几种写法?单例模式你知道有几种写法?

茴香豆的“茴”字有几种写法?有一回对我说道,“你读过书么?”我略略点一点头。他说,“读过书,……我便考你一考。茴香豆的茴字,怎样写的?”我想,讨饭一样的人,也配考我么?便回过脸去,不再理会。孔乙己等了许久,很恳切的说道,“不能写罢?……我教给你,记着!这些字应该记着。将来做掌柜的时候,写账要用。”我暗想我和掌柜的等级还很远呢,而且我们掌柜也从不将茴香豆上账;又好笑,又不耐烦,懒懒的答他道,“谁...

2019-12-02 15:29:37 4295

原创 慌了,大厂最后一面居然问我高并发系统下的限流?

开涛大神在博客中说过:在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。本文结合作者的一些经验介绍限流的相关概念、算法和常规的实现方式。缓存缓存比较好理解,在大型高并发系统中,如果没有缓存数据库将分分钟被爆,系统也会瞬间瘫痪。使用缓存不单单能够提升系统访问速度、提高并发访问量,也是保护数据库、保护系统的有效方式。大型网站一般主要是“读”,缓存的使用很容易被想到。在大型“写”系统中,缓...

2019-11-30 16:48:08 234 1

原创 来自互联网的悲哀:不是你选择加班,而是 KPI 驯化你

瑞银集团做了一个全世界国家工作时间的调查,发现:巴黎的职场人每周工作30.84小时,时间最短。就算榜单的第17位伦敦人,每周的平均工作时间也仅为33.46小时。而中国呢?香港人每周工作要50.12小时,上海人休假最少,每年仅7天。甚至连休假,也成为薛定谔的休假——不到假期过完,你永远不知道下一秒你会不会加班。马蜂窝发布的《中国上班族旅行方式研究报告2017》表明,88%的白领都需要在旅...

2019-11-30 14:10:42 279

原创 来自面试官的无奈:有一些话想对 Java开发 的同僚聊一聊

在上周,我密集面试了若干位Java后端的候选人,工作经验在3到5年间。我的标准其实不复杂:第一能干活,第二Java基础要好,第三最好熟悉些分布式框架,我相信其它公司招初级开发时,应该也照着这个标准来面的。我也知道,不少候选人能力其实不差,但面试时没准备或不会说,这样的人可能在进团队干活后确实能达到期望,但可能就无法通过面试,但面试官总是只根据面试情况来判断。但现实情况是,大多数人可能面试前没...

2019-11-29 21:56:26 203

原创 细谈八种架构设计模式及其优缺点概述

一、什么是架构我想这个问题,十个人回答得有十一个答案,因为另外的那一个是大家妥协的结果。哈哈,我理解,架构就是骨架,如下图所示:人类的身体的支撑是主要由骨架来承担的,然后是其上的肌肉、神经、皮肤。架构对于软件的重要性不亚于骨架对人类身体的重要性。二、. 什么是设计模式这个问题我问过的面试者不下于数十次,回答五花八门,在我看来,模式就是经验,设计模式就是设计经验,有了这些经验,我们就能在特...

2019-11-29 15:41:26 616

原创 听说优秀的程序员20%的时间都在写UT?

在今天的文章中打算和大家聊一聊关于测试的话题,也许有朋友会问,作为一名码农为什么要关注测试的问题?我们把代码开发完基本自测没问题了,扔给测试不就行了?有问题再改呗!也许有很多人都会这么想,的确,目前国内很多程序员并不太关注Unit Test,很多互联网公司也并没有强制要求开发人员必须编写Unit Test Case。究其原因,可能是国内公司都比较有钱,测试团队动辄几十人,甚至上百人的公司大有人在。...

2019-11-28 16:00:15 231 1

原创 Linux最常用命令:简单易学,但能解决95%以上的问题

Linux是目前应用最广泛的服务器操作系统,基于Unix,开源免费,由于系统的稳定性和安全性,市场占有率很高,几乎成为程序代码运行的最佳系统环境。linux不仅可以长时间的运行我们编写的程序代码,还可以安装在各种计算机硬件设备中,如手机、路由器等,Android程序最底层就是运行在linux系统上的。一、linux的目录结构bin (binaries)存放二进制可执行文件sbin ...

2019-11-27 22:13:47 170

原创 千道Java面试真题整理系列:微服务灵魂五十问,助你吊打面试官!

1、您对微服务有何了解?微服务:又称微服务 架构,是一种架构风格,它将应用程序构建为以业务领域为模型的小型自治服务集合 。通俗地说,你必须看到蜜蜂如何通过对齐六角形蜡细胞来构建它们的蜂窝状物。他们最初从使用各种材料的小部分开始,并继续从中构建一个大型蜂箱。这些细胞形成图案,产生坚固的结构,将蜂窝的特定部分固定在一起。这里,每个细胞独立于另一个细胞,但它也与其他细胞相关。这意味着对一个细胞的损...

2019-11-26 22:13:03 1935 1

原创 千道Java面试真题整理系列:MySQL灵魂五十问,在遇面试也不怕!

1、MySQL 中有哪几种锁?表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。2、MySQL 中有哪些不同的表格?共有 5 种类型的表格:MyISAMHeapM...

2019-11-26 16:47:58 5439 1

原创 面试官常问系列:Java虚拟机内存四大问题,都在这了!

题目JVM的内存区域是怎么划分的?OOM可能发生在哪些区域上?堆内存结构是怎么样的?常用的性能监控与问题定位工具有哪些?1.JVM的内存区域是怎么划分的?JVM的内存划分中,有部分区域是线程私有的,有部分是属于整个JVM进程;有些区域会抛出OOM异常,有些则不会,了解JVM的内存区域划分以及特征,是定位线上内存问题的基础。那么JVM内存区域是怎么划分的呢?首先是程序计数器(Pro...

2019-11-26 14:46:07 231

原创 不用找了,大厂在用的分库分表方案,都在这了!

一、数据库瓶颈不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。1、IO瓶颈第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 -> 分库和垂直分表。第二种:网络IO...

2019-11-25 20:15:27 165

原创 精心整理Java知识图谱,全部掌握,“金三银四”想去哪就去哪!

推荐一套目前互联网最新的进阶架构师的Java知识大纲体系, 合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!一、Java工程师知识图谱(思维导图版)二、Java工程师知识图谱(Xmind版)专题拓展1、框架源码解析专题应用框架springspring IOC源码解析spring Aop源码解析sp...

2019-11-25 15:42:27 926

原创 程序员的未来加班史!加班渐渐成为一种奢侈

在未来,加班情况泛滥成灾,人类生理及心理健康受到严重损害。专家预测,这种趋势如继续肆意发展,不久的未来,人类文明将彻底灭绝。在这紧要关头,联合国宣布:「禁止任何单位或个人出现加班行为!」...

2019-11-24 20:26:10 216

原创 Java 泛型示例 - 泛型方法,类,接口

Java Genrics 是 Java 5 中引入的最重要的功能之一。如果您一直在使用Java Collections并使用版本 5 或更高版本,那么我确定您已经使用过它。Java 中具有集合类的泛型非常容易,但是它提供了比仅创建集合类型更多的功能。我们将在本文中尝试学习泛型的功能。如果我们使用专业术语,对泛型的理解有时会变得混乱,因此,我将尽量保持其简单易懂。1. Java 中的泛型...

2019-11-24 16:46:34 208

原创 面试官:你们前后端分离的接口规范是什么?

1. 前言随着互联网的高速发展,前端页面的展示、交互体验越来越灵活、炫丽,响应体验也要求越来越高,后端服务的高并发、高可用、高性能、高扩展等特性的要求也愈加苛刻,从而导致前后端研发各自专注于自己擅长的领域深耕细作。然而带来的另一个问题:前后端的对接界面双方却关注甚少,没有任何接口约定规范情况下各自撸起袖子就是干,导致我们在产品项目开发过程中,前后端的接口联调对接工作量占比在30%-50%左右...

2019-11-22 21:28:55 415

原创 程序员工作六年仍是中级,同事三年成为高级,差距在哪如何突破?

作为程序员,你身边的同事有工作 6 年的中级程序员,也有工作 3 年的高级程序员。你可能会很疑惑,初级、中级和高级开发人员之间的差异究竟在哪里?你是初级、中级或高级开发人员,不仅仅取决于你的编程经验有多少年。初级开发人员甚至可以比高级开发人员年纪更大。归根结底都是由技术决定的。这并不意味着高级开发人员必须是全栈的专家,但可以肯定地说,高级开发人员远比初级和中级开发人员熟练。但是,高级开发人员...

2019-11-22 20:27:54 1249 1

原创 程序员放弃高薪去乡镇当公务员,晒出到手收入,还以为看错了

在很多人印象中,那些乡镇的公务员工资应该是不高的,尤其是那些经济不太发达的乡镇,每天事情也不多,工作非常轻松。但对于互联网从业者来说,公务员和程序员完全是两个不同的概念,虽然程序员收入要高一些,但加班太多,感觉都是拿命在工作,所以很多人宁愿去当个公务员,也不想继续在互联网工作了。最近在职场论坛上看到这样一个帖子:员工放弃北京工作去乡镇当公务员,晒出到手收入还以为看错了,网友:工资真高!这是怎么回...

2019-11-22 14:38:12 4013 4

原创 领导父亲过世,主管要求实习生给1020份子钱被拒,结果蒙了

现如今职场,我们经常会遇到很多红白喜事,对于员工来说,有时候也很无奈。因为遇到这样的事情就必须给份子钱,而且数目太小了还不太好意思;如果给多了,那自己也会很不爽,凭什么每次都要给份子钱呢?关键是这些钱还很难收回来。最近在职场论坛上看到这样一个帖子:领导父亲去世,主管要求实习生给1020份子钱被拒:凭什么,又不是我父亲过世,结果蒙了!这是怎么回事呢?该员工说自己是刚来公司不久的实习生,目前都不...

2019-11-22 14:36:58 856

原创 员工晒出60后、70后、80后、90后辞职原因,80后回复:我不服

对于离职,不知道大家都是怎么看待的。其实不同年代的人对于离职的理解都是不一样的,而且离职原因也会有 很大差别。这与社会因素有关,与个人也有关系。当然我们讨论的并不是个例,而是大多数情况。最近就有网友总结了60后、70后、80后、90后的辞职原因,有很多网友看到后就说太真实了。那么,网友到底是怎么总结的呢?60后离职原因:什么是离职?70后:为什么要离职呢?80后、收入不高我就离职;90后、领...

2019-11-22 14:33:32 5742

原创 为什么那么多人吐槽华为员工35岁就会被辞退?HR告诉你真实情况

华为最近可是出尽了风头,前段时间出现的HR胡某事件虽然给华为带来了一定的影响,但是很快事情就被处理完了。而这次华为又吸引了很多人的关注,那就是老板给所有员工发奖金了,足足有20个亿,每个员工收到工资的时候都是笑开了花。华为虽然是很伟大的企业,但其实也有很多让人不满意的地方,比如说大家讨论最多的地方,那就是很多华为老员工会被辞退,而35岁被优化就是从华为这里开始的。最近在职场论坛上看到这样一个...

2019-11-22 14:31:05 7614

原创 用简易例子讲Java中的回调机制

首先说点题外话。为什么要写这篇文章,因为在看J.U.C包的FutureTask源码的时候,有一个done()方法,这是个抽象方法,用户实现它之后,FutureTask会在执行完后调用这个方法。这就是回调机制,回调的思想就是:类A调用类B的b方法类B的b方法执行完毕主动调用类A的callback()方法给出思想过于抽象,所以我会举出一个简单的实例(虽然简单,但是能说明问题),并总...

2019-11-21 21:07:26 312

原创 一文教你Spring Cloud微服务如何实现熔断降级?

熔断限流概述在基于Spring Cloud的微服务架构体系下,按照系统功能边界的不同划分,原先大而全的系统会被拆分为多个不同的微服务,而相应的微服务会提供一组功能关联的服务接口,并向系统中的其他微服务提供服务。在正常情况下,各个微服务之间功能上相互解耦,从软件的设计上来讲会呈现出一个比较合理的状态,但是从调用链路上来看,这种拆分实际上也是拉长了外部服务请求的调用链路。举个例子,在创业公司的早期...

2019-11-21 16:46:12 1354

转载 99%的程序员都笑了!程序员的真实工作状态

维护老的代码搞定来一个BUGGoogle想干嘛?需求不明确前端VS后端客户描述客户资金最后产出刚学会一种新语言电脑突然蓝屏又改需求了重构后的第一次运行写完功能第一次测试交付现场这是需求的是10次改动演示没有BUG有bug项目交付会给投资人演示项目正式发版小问题,改完再说第二天到了转载自公众号:Java面试那些事...

2019-11-21 15:38:23 1926

原创 Spring Boot集成Flyway实现数据库版本控制?

今天给大家介绍一款比较好用的数据库版本控制工具Flyway。在通过Spring Boot构建微服务的过程中,一般情况下在拆分微服务的同时,也会按照系统功能的边界对其依存的数据库进行拆分。在这种情况下,微服务的数据库版本管理对于研发工程管理来说,就会是一个比较棘手的问题。在正常的代码管理流程中,从产品研发研发的过程看,一般会经历功能开发、研发测试、集成测试、预发布测试、上线等多个环节。而对于同一...

2019-11-20 19:45:55 462

原创 谁要是再问你单例模式,那就抛给他这7种写法吧!

单例设计模式是23种设计模式中,最基础也是最常用的设计模式之一,也是面试中关于设计模式知识点考察比较高频的问题之一。说起单例模式的写法,大多数情况下出现在我们脑海中的可能就是“饿汉式”,“懒汉式”这两种写法,但是今天小码哥今天要介绍的是单例模式的7种写法,以后面试官要是再问你单例模式,那就抛给他这七种写法吧!接下来,我们就言归正传,来一一介绍这七种单例模式的写法吧!1、饿汉式饿汉式是单例模...

2019-11-19 15:27:32 143

原创 一张图让你看懂JVM之垃圾回收器详解

前言感谢读者的反馈,在????图中更新了新生代Eden区以及两个Survivor区的默认空间占比的分配表示,这里按照10等份区分8/10、1/10、1/10分别表示8:1:1的关系,会更清晰点。新生代所采用的**“标记-复制-清除”的算法进行垃圾回收,以及分代回收算法中老年代如何为这种空间分配比所提供担保策略,**在前文《一张图让你看懂JVM之垃圾回收算法详解》中有比较详细的叙述,大家可以看下,这里...

2019-11-19 13:26:03 1261

原创 一张图让你看懂JVM之垃圾回收算法详解

前言从上面这个图我们总体上对JVM的结构特别是内存结构有了比较清晰的认识,虽然在JDK1.8+的版本中,JVM内存管理结构有了一定的优化调整。主要是方法区(持久代)取消变成了直接使用**元数据区(直接内存)**的方式,但是整体上JVM的结构并没有大改,特别是我们最为关心的堆内存管理方式并没有在JDK1.8+的版本中有什么变化,所以图中的结构整体上是没有什么不准确的,之所以将方法区以及持久代标注...

2019-11-18 22:01:08 793

原创 【Java】学习之路吐血整理技术书从入门到进阶最全180+本(珍藏版)

前言:技术书阅读方法论总结一.速读一遍(最好在1~2天内完成)人的大脑记忆力有限,在一天内快速看完一本书会在大脑里留下深刻印象,对于之后复习以及总结都会有特别好的作用。对于每一章的知识,先阅读标题,弄懂大概讲的是什么主题,再去快速看一遍,不懂也没有关系,但是一定要在不懂的地方做个记号,什么记号无所谓,但是要让自己后面再看的时候有个提醒的作用,看看第二次看有没有懂了些。二.精读一遍(在2周内...

2019-11-18 20:57:47 1254 1

原创 MysqlIO.readFully问题排查分析过程

问题描述支付清结算系统"外部对账"部分任务在早上6:00~7:00时间段内对账速度缓慢,且经常造成对账统计结果不准确问题,导致结转记账不准确。初步分析及处理过程由于外部对账是经过性能优化的,且在压测环境表现良好,所以最开始初步认为是由于数据库性能瓶颈导致,初步处理方式为将线上6:00~7:00之前的慢SQL进行了一番排查,并对涉及外部系统的慢SQL进行了优化,这个步骤理论上是可以解决此类问题...

2019-11-18 14:15:26 2385 1

原创 基于SpringCloud的微服务架构演变史?

前言一段时期以来 “微服务架构 ”一直是一个热门词汇,各种技术类公众号或架构分享会议上,关于微服务架构的讨论和主题也都非常多。对于大部分初创互联网公司来说,早期的单体应用结构才是最合适的选择,只有当业务进入快速发展期,在系统压力、业务复杂度以及人员扩展速度都快速上升的情况下,如何快速、稳妥有序的将整个互联网软件系统升级成微服务架构,以满足业务发展需要及技术组织的重新塑造,才是进行微服务架构的最主...

2019-11-17 16:59:18 190

原创 如何基于RocketMQ的事务消息特性实现分布式系统的最终一致性?

前言在这篇文章中我们将介绍RocketMQ的事务消息相关的内容,并通过一些实践和大家一起来探索下事务消息如何解决分布式系统中的分布式事务问题。事务消息原理事务消息特性可以看作是两阶段协议的消息实现方式,用以确保在以消息中间件解耦的分布式系统中本地事务的执行和消息的发送,可以以原子的方式进行。举个例子,以某互联网公司的用户余额充值为例,因为有充返活动(充值100元赠送20元),优惠比较大,用...

2019-11-17 16:05:48 594

空空如也

空空如也

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

TA关注的人

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