- 博客(39)
- 收藏
- 关注

原创 面试中必须掌握的15道《Spring Boot 高频面试题》
做 Java 开发,没有人敢小觑 Spring Boot 的重要性,现在出去面试,无论多小的公司 or 项目,都要跟你扯一扯 Spring Boot,扯一扯微服务,不会?没用过? Sorry ,我们不合适!今天就给大家整理了 15 道高频 Spring Boot 面试题,希望能够帮助到刚刚走出校门的小伙伴以及准备寻找新的工作机会的小伙伴。一、什么是 Spring Boot ?...
2019-06-19 15:32:56
223

原创 《从程序员到领导者之间的微妙之处》
前段时间读到一篇关于程序员、领导力和领导者的好文章,感觉很不错,就翻译过来分享下。借用文中一句话:“好吧,我只是个程序员,为什么需要领导?”。 做一个优秀的领导者可能不是大部分程序员会立即认同的东西。许多人的脑海里立即浮现出这样一种形象:宏大的讲台与高昂的演讲。然而,让我们看看塞斯·高汀(Seth Godin)对领导力的定义:肯定自己生...
2019-04-09 16:46:24
8435
原创 Java高性能:干货分享——让你快速掌握《NIO》
一、概述NIO主要有三大核心部分:Channel(通道)、Buffer(缓冲区)、 Selector。NIO和传统IO(一下简称IO)之间第一个最大的区别是,IO是面向流的,NIO是面向缓冲区的。 Java IO面向流意味着每次从流中读一个或多个字节,直至读取所有字节,它们没有被缓存在任何地方。此外,它不能前后移动流中的数据。如果需要前后移动从流中读取的数据,需...
2019-06-27 16:07:38
289
原创 干货篇:一篇文章让你——《深入解析MySQL索引原理 》
概述最近一段时间重新深入研究了一遍MySQL的内容,今天主要分享分析MySQL索引原理,后续会输出一些关于MySQL方面的干货,希望各位小伙伴喜欢。一、什么是索引、为什么要建立索引?关于索引的理解,个人更加喜欢将其比喻为字典里面的目录,根据字典来进行查询的速度远大于每一页逐个逐个字排查的速度。索引主要用于快速找出在某个列中有特定值的行,倘若不使用索引,MySQ...
2019-06-26 15:39:49
338
原创 一遍文章带你看懂:《MyBatis 源码分析》
【MyBatis 运行过程】传统的 JDBC 编程查询数据库的代码和过程总结:(一)、加载驱动。(二)、创建连接,Connection 对象。(三)、根据 Connection 创建 Statement 或者 PreparedStatement 来执行 sql 语句。(四)、返回结果集到 ResultSet 中。(五)、手动将 ResultSet 映射...
2019-06-25 16:28:10
483
原创 算法很难:《那是因为你没看过这篇文章》
算法很难?那是你没找到方法“算法是特定问题求解步骤的描述算法是独立存在的一种解决问题的方法和思想,算法很重要,但算法也是学起来最难,最令人生畏的。”一、说说算法刷题方面的、一些经验和技巧小伙伴们在刷题的时候不知道有没有遇到以下情况,拿到题目后就开始想着怎么写代码,结果写了大半天,发现越写越乱,最后就写不下去了,又或者是看到题目后,一脸懵逼,完全不知道怎么...
2019-06-24 16:03:55
342
原创 《1-5年的JAVA程序员该怎么规划自己的职业》看完你就知道了
很多小伙伴从一踏上JAVA程序员这条路开始,总是感觉Java多线程在实际的业务中很少使用,以至于不会花太多的时间去学习,技术债不断累积!整日深陷在创造Bug和修改Bug的无限循环中,上班来得最早的是你,下班走得最晚的还是你,经常回家之后还得继续加班,偶尔遇上赶项目的时候还要在公司打地铺。但是过了几年之后却发现自己依然奋斗在开发的第一线,依然是开发团队中可有可...
2019-06-21 19:42:21
1163
原创 微服务架构之旅——《走进SpringCloud》
近十年国内互联网行业飞速发展,我们对软件系统的需求已经不再是过去”能用就行”这种很low的档次了,像618、双十一这样的活动 不断逼迫我们去突破软件系统的性能上限,传统的IT企业”能用就行”的开发思想已经不能满足互联网 高并发、大流量的性能要求 。系统架构 走向分布式 已经是服务器开发领域解决该问题唯一的出路,然而分布式系统由于天生的复杂度,并不像开发单体应用一样...
2019-06-21 15:20:03
224
原创 离《“架构师”还有多远》——看完这篇文章你就会知道
一、如何定义架构师一个优秀的Java架构师,首先一定是一个出色的程序员,不编程的架构师的职业生涯是短暂的,得熟练使用各种框架,并知道它们实现的原理。有人谈到技术高手与架构师的区别就在于,架构师不光是着眼于现在,不仅仅局限于开发细节,比如如何调用,如何并发等等。而是跳出三界外,考虑一下面向未来问题和潜在风险的应对之道。作为一名卓越的程序员,熟练使用各种数据结构和算法,数组、哈希、链...
2019-06-20 22:29:00
449
1
原创 《Spring源码深度解析—Spring的整体架构和环境搭建》
概述Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。一、spring的整体架...
2019-06-19 17:26:02
193
原创 阿里P8大牛:教你如何定制JAVA程序员的学习及职业规划
1-3年Java程序员学习的非常重要的年份将影响你的职业生涯和工资水平的方向,这几年是至关重要的,如何从初级阶段转向高级阶段,这是一种技巧、一个难点、一个方向。但我们绝大部分工作的时间都是增删改查,开始前几年就是在为了达成增删改查而努力,大部分的程序员具备这种能力之后就开始相对安逸的状态了,开始觉得这项工作没什么技术含量,增删改查的功能如果对于简单的工程代码来讲就...
2019-06-17 16:27:40
216
原创 温柔的陷阱——《谁是代码界3%的王者?》
在Java代码界有些陷阱外表看起来是个青铜实际上是王者据说97%工程师会被“秒杀”不信?这有五道“基础题”堪称5个温柔的陷阱似是而非,雾里看花考验真功夫的时候到了!01这段代码输出的结果是:A: trueB: falseC: 由硬件指令决定02这段代码输出的结果是:...
2019-06-17 13:45:03
279
原创 《JAVA——帮你解决高并发秒杀》
【准备】首先我们要考虑的是为什么要解决高并发,高并发瓶颈出现在哪里,有了解过的朋友肯定知道是在数据库,因为在大量请求去操作数据库时会出现数据的错乱,超卖,系统崩溃,mysql死锁等现象。【思路】(一)、 页面静态化:就是将整个页面存储到redis中,下次访问时去读取redis中的页面值(二)、主要对整个网站的静态资源文件进行加...
2019-06-16 14:34:53
143
原创 《程序员迷茫:30岁以上的“大龄程码农”出路在哪》
边工作边迷茫这可能是我们大多数职场人的常态。一边觉得这份工作不适合自己,另一边又不知道能去做什么。喜欢的工作,却又不知道如何提升。长此以往,内心难免产生焦躁,尤其随着年龄的增长,内心更是希望能够在事业上有所发展。很多互联网人都喜欢说,程序员就是吃青春饭的,HR在招聘时非常在意程序员的年龄,稍微大龄点的程序员直接都会pass。所以大龄程序员一旦离职找工作就会变得艰难,...
2019-06-14 19:18:22
433
原创 《从Servlet、Dubbo、Mybatis聊聊责任链究竟怎么用 》
责任链模式的定义:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系, 将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。这里就不再过多的介绍什么是责任链模式,主要来说说java中如何编写。主要从下面3个框架中的代码中介绍。servlet中的filterdubbo中的filtermybatis中的pluginservlet中的Filter...
2019-06-14 16:21:05
202
1
原创 《SpringBoot+Dubbo+Zookeeper整合搭建简单的分布式应用》
为什么要使用分布式系统?容错减少延迟/提高性能可用性负载均衡总而言之,其实目的只有一个,”用户体验“。什么是分布式系统?分布式系统是由使用分发中间件连接的自治计算机组成的网络。它们有助于共享不同的资源和功能,为用户提供单一且集成的连贯网络。搭建一个简单的分布式系统一、在服务器(虚拟机)上安装Zookeeper(我这里使用Docker安装)(一)、去docke...
2019-06-14 14:54:49
176
原创 微服务架构与领域驱动设计应用实践
本篇文章一共分为三个部分,分别是微服务架构的演进过程、具体实践微服务的应用技术和领域驱动设计的意识转变。微服务架构已经渗透到互联网应用的方方面面,而领域驱动设计也逐渐被业界所接收。微服务架构几乎都是从 ALL IN ONE 的单体架构演进而来,中间又经历了分布式架构、面向服务架构的演进过程。...
2019-06-13 16:10:22
146
原创 面试官们“爱不释手”的分布式系统架构到底是个什么鬼?
目录:一、什么是分布式系统?二、为什么要走分布式系统架构?三、系统如何进行拆分?四、分布式之后带来的技术挑战?一、什么是分布式系统? 在谈分布式系统架构前,我们先来看看,什么是分布式系统?假设原来我们有一个系统,代码量30多万行。现在拆分成20个小系统,每个小系统1万多行代码。原本代码之间都是直接基于Spring框架走JVM内存调用,现在拆开来,...
2019-06-13 14:15:36
132
转载 《一遍文章让你看懂的SpringCloud、错过你会后悔》
目前公司使用的 Spring Cloud 整个技术组件,基本包含了上面图中所包含的,不得不说,Spring Cloud 整个生态真的很强大,使用起来也很方便有效。后面有时间再针对每个组件进行使用解读,这篇文章主要说下 Spring Cloud 架构的链路图,顺便把自己的思路整理下来,以备查阅。阅读目录:一、 网关请求流程 二、Eureka 服务治理 三、...
2019-06-12 19:34:30
109
转载 Redis实战之限制操作频率
场景场景1留言功能限制,30秒 内只能评论 10次,超出次数不让能再评论,并提示:过于频繁场景2点赞功能限制,10秒 内只能点赞 10次,超出次数后不能再点赞,并禁止操作 1个小时,提示:过于频繁,被禁止操作1小时场景3上传记录功能,限制一天只能上传 100次,超出次数不让能再上传,并提示:超出今日上线抽离本质在业务开发的过程中,我们不断的参与各种业务场...
2019-06-12 17:06:07
417
原创 《一遍文章让你快速了解JAVA---并发编程基础》
现代操作系统在运行一个程序时,会为其创建一个进程。例如,启动一个Java程序,操作系统就会创建一个Java进程。线程是现代操作系统调度的最小单元,也叫轻量级进程,在一个进程里可以创建多个线程,这些线程都拥有各自的计算器、堆栈和局部变量等属性,并且能够访问共享的内存变量。处理器在这些线程上高速切换,让使用者感觉到这些线程在同时执行。今天主要以两个方面让大家更快的了解并发编程!一、基本概念与方法...
2019-06-12 14:49:44
132
原创 什么是分布式系统!以及分布式系统架构的优缺点!
现在的架构很多,各种各样的,如高并发架构、异地多活架构、容器化架构、微服务架构、高可用架构、弹性化架构等,还有和这些架构相关的管理型的技术方法,如 DevOps、应用监控、自动化运维、SOA 服务治理、去 IOE 等等,还有很多。那什么是分布式系统?分布式系统是支持分布式处理的软件系统,是由通信网络互联的多处理机体系结构上执行任务的系统。包括分布式操作系统、分布式程序设计语言及...
2019-06-10 16:07:27
620
原创 《迷茫中的我们该如何突破瓶颈——成长为一名架构师》
如何成长为一名架构师?架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。一个架构师得需要足够的想像力,能把各种目标需求进行不同维度的扩展,为目标客户提供更为全面的需求清单。很多程序员想成为一名架构师,但是对于其中的技能掌握程度,以及编程功底的要求?设计能力的要求有哪些?我简要从以下6点经验来谈,从技能的角度抛砖引玉。一、编程基本...
2019-04-28 15:53:41
200
原创 深入解析:《JVM结构体系》
一个虚拟机是一个软件实现物理机。Java是在WORA(Write Once Run Anywhere)基础上开发的,它运行在虚拟机上。该编译器编译Java文件转换成一个Java 的.class文件,那么 的.class文件输入到JVM,它加载并执行类文件。以下是JVM的体系结构图:一、基础知识(一) JVM实例:JVM实例对应了一个独立运行的java程序,它是进程级别。...
2019-04-16 21:44:00
288
原创 动图解析:《JAVA中的数据结构及原理》
编程好比是一辆汽车,而数据结构和算法是汽车内部的变速箱。一个开车的人不懂变速箱的原理也是能开车的,同理一个不懂数据结构和算法的人也能编程。但是如果一个开车的人懂变速箱的原理,比如降低速度来获得更大的牵引力,或者通过降低牵引力来获得更快的行驶速度。最近在整理数据结构方面的知识, 系统化看了下Java中常用数据结构, 突发奇想用动态图来绘制数据流转过程。本篇文章主要基于jdk8, 可能会有些特性与jd...
2019-04-15 18:54:15
441
原创 该如何编写“高性能 Java 代码的实践”
介绍首先将介绍如何定义可度量的性能指标,然后看看有哪些工具可以用来度量和监控应用程序性能,以及确定性能瓶颈。我们还将看到一些常见的Java代码优化方法以及最佳编码实践。现在我们看看用于提升Java应用程序性能的JVM调优技巧和架构调整,性能优化是一个很宽泛的话题,本文只是对JVM调优相关的一些技巧。性能指标在开始优化应用程序的性能之前,我们需要理解诸如可扩展性、性能、可用性...
2019-04-14 20:09:39
230
原创 《成为顶级JAVA架构师的必备书籍》
一、技术类: JAVA、WEB、架构Java Web,是用Java技术来解决相关web互联网领域的技术总和。web包括:web服务器和web客户端两部分。今天将JAVA、WEB、架构相关的书籍做了一个整理,希望可以帮助大家,提升业务技能。《分布式Java应用——基础与实践》《深入分析Java Web技术内幕》《大型网站系统与Java中间件实践》《分布式服务框架原...
2019-04-13 20:12:38
4224
3
原创 Java后端技术栈,该如何深入学习?
Java,是现阶段中国互联网公司中,覆盖度最广的研发语言。很多人做Java开发4,5年后,都会感觉自己遇到瓶颈。感觉什么都会,又什么都不会,如何改变困境,因为在工作中太多被动是因为不懂底层原理。公司的工作节奏又比较快,难有机会学习架构原理,也没人教,所以这个时候,学习架构原理,扩展思维,对自己以后职业生涯尤为重要。同样公司的两个新人,一个新人一点就通,学东西很快,有的人,学东西很慢,也很痛...
2019-04-12 16:41:10
576
原创 一个离开学校三年java架构师
曾经有一份真诚的大学放在我面前,我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。如果上天能够给我一个再来一次的机会,我会对java那个说三个字:我爱你。如果非要在这份爱上加上一个期限,我希望是……一辈子!随着时间渐渐的流逝,我们总会对以前的事有些许后悔,但世上又哪有后悔药,工作近三年,回首大学,可谓满满的都是后悔。早知道当初该好好上课,早知道当初就该好好学...
2019-04-11 16:21:34
286
原创 《关于微服务》
今年有人提出了2018年微服务将疯狂至死,可见微服务的争论从未停止过。在这我将自己对微服务的理解整理了一下,希望对大家有所帮助。1)一组小的服务(大小没有特别的标准,只要同一团队的工程师理解服务的标识一致即可)2)独立的进程(java的tomcat,nodejs等)3)轻量级的通信(不是soap,是http协议)4)基于业务能力(类似用户服务,商品服务等等)5)独...
2019-04-09 17:46:33
201
转载 ThreadLocal用法及原理
与Synchonized的对照:ThreadLocal和Synchonized都用于解决多线程并发訪问。可是ThreadLocal与synchronized有本质的差别。synchronized是利用锁的机制,使变量或代码块在某一时该仅仅能被一个线程訪问。而ThreadLocal为每个线程都提供了变量的副本,使得每个线程在某一时间訪问到的并非同一个对象,这样就隔离了多个线程对数据的数据共享。而...
2019-04-09 17:14:11
184
转载 5步教你成功求职进入BAT
有读者朋友希望我能写一部分关于BAT内部的文章,比如,怎么进入BAT,BAT内部的项目的流程,有挑战性的项目实践,大概是怎么样的?我希望用这篇文章开启整个进入BAT系列篇,让大家更好的了解BAT内部的实践项目过程和技术挑战。是的,BAT项目实践,大写的重点!如何写简历一 什么是好的简历简历是突出自我亮点的工作或学习经历和自我介绍。所以写简历要把握两个重点,工作经历要突出重点...
2019-04-08 21:40:21
264
原创 dubbo项目实战
一、案例说明相信有很多小伙伴都知道,dubbo是一个分布式、高性能、透明化的RPC服务框架,提供服务自动注册、自动发现等高效服务治理方案,dubbo的中文文档也是非常全面的,如下图所示:二、Dubbo基础介绍与环境搭建 1.Dubbo基础介绍 Dubbo管理架构的变化如图:通过dubbo监控中心和后台管理可以很好的监控dubbo服务,监控服务端服务和客户...
2019-04-08 20:40:27
991
转载 高性能服务端优化之路
业务场景达达是全国领先的最后三公里物流配送平台。 达达的业务模式与滴滴以及Uber很相似,以众包的方式利用社会闲散人力资源,解决O2O最后三公里即时性配送难题。 达达业务主要包含两部分:商家发单,配送员接单配送,如下图所示。达达的业务规模增长极大,在1年左右的时间从零增长到每天近百万单,给后端带来极大的访问压力。压力主要分为两类:读压力、写压力。读压力来源于配送员在APP中抢单,...
2019-04-03 20:29:12
246
原创 【JVM体系结构】
一、基础知识1. JVM实例:JVM实例对应了一个独立运行的java程序,它是进程级别。2. JVM执行引擎实例:JVM执行引擎实例则对应了属于用户运行程序的线程,它是线程级别的。3. JVM生命周期:JVM实例的诞生:当启动一个Java程序时,一个JVM实例就产生了。 JVM实例的运行: main()作为该程序初始线程的起点,任何其他线程均由该线程启动。 JVM实例的消亡:当...
2019-04-03 17:52:36
184
原创 【Java性能优化思路方向】
概述: Java是目前软件开发领域中使用最广泛的编程语言之一。Java应用程序在许多垂直领域(银行、电信、医疗保健等)中都有广泛使用。Refcard的目的是,帮助开发者通过专注于JVM内部,性能调整原则和最佳实践,以及利用现有监测和故障诊断工具,来提升应用程序在商业环境中的性能。它能以不同的方式定义“optimalperformance(最佳性能)”,但基本要素是:Java...
2019-04-03 16:37:02
957
原创 【JavaScript 算法与数据结构】
README.mdJavaScript 算法与数据结构本仓库包含了多种基于 JavaScript 的算法与数据结构。每种算法和数据结构都有自己的 README 并提供相关说明以及进一步阅读和 YouTube 视频。数据结构数据结构是在计算机中组织和存储数据的一种特殊方式,它可以高效地访问和修改数据。更确切地说,数据结构是数据值的集合,它们之间的关系、函数或操作可以应用于数据...
2019-04-03 15:13:47
345
转载 看完你还敢说你懂JVM吗?
在一些物理内存为8g的服务器上,主要运行一个Java服务,系统内存分配如下:Java服务的JVM堆大小设置为6g,一个监控进程占用大约 600m,Linux自身使用大约800m。从表面上,物理内存应该是足够使用的;但实际运行的情况是,会发生大量使用SWAP(说明物理内存不够使用 了),如下图所示。由于SWAP和GC同时发生会致使JVM严重卡顿,所以我们要追问:内存究竟去哪儿了?...
2019-04-02 15:05:06
177
原创 分布式事务原理及解决方案
上传到服务器1 引言分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在这几年越来越火的微服务架构中,几乎可以说是无法避免,本文就围绕单机事务,分布式事务以及分布式事务的处理方式来展开。2 事务事务提供一种“要么什么都不做,要么做全套(All or Nothing)”的机制,她有ACID四大特性 原子性(Atomicity):事务作为一个...
2019-04-02 14:49:45
237
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人