自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 从Java码农到年薪八十万的架构师

Java是现阶段中国互联网公司中,覆盖度最广的研发语言,掌握了Java技术体系,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能有立足之地。有不少朋友问,成为Java架构师除了掌握Java语法,还要系统学习哪些Java相关的技术,今天分享一个,互联网Java技术学习路线图。一、构成架构师的技能体系二、阅读源码,分析源码知识点总汇这张图详细介绍了源码中所用到的经典设计思想及常用设计模式,先打好内功基础,了解大牛是如何写代码的,从而吸收大牛的代码功力。结合Spring5和MyBatis

2020-08-31 16:05:19 262

转载 Java总结:Java多线程

多线程作为Java中很重要的一个知识点,在此还是有必要总结一下的。Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。多线程是多任务的一种特别的形式,但多线程使用了更小的资源开销。这里定义和线程相关的另一个术语 - 进程:一个进程包括由操作系统分配的内存空间,包含一个或多个线程。一个线程不能独立的存在,它必须是进程的一部分。一个进程一直运行,直到所有的非守护线程都结束运行后才能结束。多线程能满足程序员编写高效率的

2020-08-30 17:35:08 220

转载 什么是架构?架构的本质和作用!

提起企业架构很多朋友都不明白其与数字化转型之间的关系,其实可以这样了解:将数字化转型的本质当成技术对业务的重塑,那么为了达到重塑的目标,就需要企业具备数字化的核心力量。而企业架构就相当于技术实现与业务模式之间的桥梁,可以帮助提高数字化转型的核心力量,因此企业架构在数字化转型中承担着非常重要的助力作用。下面我们来聊聊架构。1、什么是架构和架构本质架构一个系统在其所处环境中所具备的各种基本概念和属性,具体体现为其所包含的各个元素、他们之间的关系以及架构的设计和演进原则之中。架构的本质就是对系统进行有序化地

2020-08-30 15:59:25 5722

转载 一文Get所有 Redis 性能问题分析手段

Redis 性能的基本面优化网络延时警惕执行时间长的操作优化数据结构、使用正确的算法考虑操作系统和硬件是否影响性能考虑持久化带来的开销使用分布式架构 —— 读写分离、数据分片后话参考资料在一些网络服务的系统中,Redis 的性能,可能是比 MySQL 等硬盘数据库的性能更重要的课题。比如微博,把 热点微博 [1],最新的用户关系,都存储在 Redis 中,大量的查询击中 Redis,而不走 MySQL。那么,针对 Redis 服务,我们能做哪些性能优化呢?或者说,应该避免哪些性能浪费呢?

2020-08-29 19:49:01 324

转载 一位阿里P7的面试题经验分享,希望能帮助到你

大厂的牛人多,普通人也多,虽然他们不是每一个人都能达到令人仰望的技术水平,但毕竟平台高,所以眼光也会变得宽阔,代码要求更为严格,所以普通的程序员也会被逼的变得更优秀;身边的牛人多,普通的程序员也会受到影响,提升的更快。在这里插入图片描述下面是阿里P7的面试题————————————————Java多线程线程池的原理,为什么要创建线程池?线程的生命周期,什么时候会出现僵死进程;什么实现线程安全,如何实现线程安全;创建线程池有哪几个核心参数?如何合理配置线程池的大小?synchronized、

2020-08-29 15:24:35 196

转载 Java注解是如何玩转的,面试官和我聊了半个小时

作者:wind瑞 来自:JavaQ面试官:自定义的Java注解是如何生效的?小白:自定义注解后,需要定义这个注解的注解解析及处理器,在这个注解解析及处理器的内部,通过反射使用Class、Method、Field对象的getAnnotation()方法可以获取各自位置上的注解信息,进而完成注解所需要的行为,例如给属性赋值、查找依赖的对象实例等。面试官:你说的是运行时的自定义注解解析处理,如果要自定义一个编译期生效的注解,如何实现?小白:自定义注解的生命周期在编译期的,声明这个注解时@Retentio.

2020-08-28 17:21:45 120

转载 面经分享:如何一招破解 Java 集合类面试题?

Java集合类面试题:Java集合类绝对是我们的老朋友了,Java技术江湖里,谁人不知,谁人不晓,它的使用率非常高,使用难度却也不大,这也导致了很多人对它不屑一顾,殊不知其中却暗藏玄机,今天我们不妨一起来破解一下Java集合类的面试题。面试官常用招式:1.Java集合框架的基础接口有哪些?Collection为集合层级的根接口。一个集合代表一组对象,这些对象即为它的元素。Java平台不提供这个接口任何直接的实现。Set是一个不能包含重复元素的集合。这个接口对数学集合抽象进行建模,被用来代表集合.

2020-08-27 21:23:29 389

转载 JVM源码分析之jstat工具原理完全解读

概述jstat是hotspot自带的工具,和java一样也位于JAVA_HOME/bin下面,我们通过该工具可以实时了解当前进程的gc,compiler,class,memory等相关的情况,具体我们可以通过jstat -options来看我们到底支持哪些类型的数据,譬如JDK8下的结果是:-class-compiler-gc-gccapacity-gccause-gcmetacapacity-gcnew-gcnewcapacity-gcold-gcoldcapacity-gcuti

2020-08-27 15:31:18 236

转载 Spring 异步实现原理与实战分享

最近因为全链路压测项目需要对用户自定义线程池 Bean 进行适配工作,我们知道全链路压测的核心思想是对流量压测进行标记,因此我们需要给压测的流量请求进行打标,并在链路中进行传递,那么问题来了,如果项目中使用了多线程处理业务,就会造成父子线程间无法传递压测打标数据,不过可以利用阿里开源的 ttl 解决这个问题。全链路压测项目的宗旨就是不让用户感知这个项目的存在,因此我们不可能让用户去对其线程池进行改造的,我们需要主动去适配用户自定义的线程池。在适配过程的过程中无非就是将线程池替换成 ttl 去解决,可通过

2020-08-26 22:05:56 267

转载 好文推荐:微服务架构下的分布式事务基础入门

前言众所周知,数据库能实现本地事务,也就是在同一个数据库中,你可以允许一组操作要么全都正确执行,要么全都不执行。这里特别强调了本地事务,也就是目前的数据库只能支持同一个数据库中的事务。但现在的系统往往采用微服务架构,业务系统拥有独立的数据库,因此就出现了跨多个数据库的事务需求,这种事务即为“分布式事务”。那么在目前数据库不支持跨库事务的情况下,我们应该如何实现分布式事务呢?本文首先会为大家梳理分布式事务的基本概念和理论基础,然后介绍几种目前常用的分布式事务解决方案。废话不多说,那就开始吧~1. 什么是

2020-08-26 17:21:48 167

转载 面试官都爱问的Spring源码:Spring与Mybatis高级整合

在介绍Spring整合Mybatis原理之前,我们得先来稍微介绍Mybatis的工作原理。Mybatis的基本工作原理在Mybatis中,我们可以使用一个接口去定义要执行sql,简化代码如下:定义一个接口,@Select表示要执行查询sql语句。public interface UserMapper { @Select(“select * from user where id =#{id}”) User selectById(Integer id); }以下为执行sql代码:In

2020-08-25 16:51:00 119

转载 爱了,这篇Java并发编程技术点总结的太详细了,建议收藏再看

前言并发编程技术在Java中属于重要知识点,对于以下内容你有了解多少?进程、线程、协程关系概述进程:本质上是一个独立执行的程序,进程是操作系统进行资源分配和调度的基本概念,操作系统进行资源分配和调度的一个独立单位。​线程:操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一个进程中可以并发多个线程,每条线程执行不同的任务,切换受系统控制。​协程:又称为微线程,是一种用户态的轻量级线程,协程不像线程和进程需要进行系统内核上的上下文切换,协程的上下文切换是由用户自己决

2020-08-25 16:36:39 201

转载 面试官问:高并发下,你都怎么选择最优的线程数?

为了加快程序处理速度,我们会将问题分解成若干个并发执行的任务。并且创建线程池,将任务委派给线程池中的线程,以便使它们可以并发地执行。在高并发的情况下采用线程池,可以有效降低线程创建释放的时间花销及资源开销,如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存以及“过度切换”(在JVM中采用的处理机制为时间片轮转,减少了线程间的相互切换) 。但是有一个很大的问题摆在我们面前,即我们希望尽可能多地创建任务,但由于资源所限我们又不能创建过多的线程。那么在高并发的情况下,我们怎么选择最优的线程数量呢?.

2020-08-24 22:11:44 196

转载 你还在为面试老问你JVM发愁?来看看阿里P7大佬的JVM笔记吧

1、知识点汇总JVM是Java的运行的基础,也基本是互联网公司以及一线大厂必问的一个知识点。下面先用思维导图画一个整体概念。然后,在进行拓展说明。先上图,如下:图上都是重点,都要理解和记。如果非要说重点,内存模式、类加载、GC被问的频率比较高。性能调优偏向应用实践。场景应用被问的几率也很高。总之,都是重点。2、知识点详解2-1类加载2-1-1类的加载过程加载:通过类的全限定名(包路径+类名),查找该类的字节码文件,利用字节码创建Class对象。验证:确保字节码是正确安全可被虚拟机执行,不会

2020-08-24 21:33:07 198

转载 Tomcat是如何实现异步Servlet的

前言通过我之前的Tomcat系列文章,相信看我博客的同学对Tomcat应该有一个比较清晰的了解了,在前几篇博客我们讨论了Tomcat在SpringBoot框架中是如何启动的,讨论了Tomcat的内部组件是如何设计以及请求是如何流转的,那么我们这篇博客聊聊Tomcat的异步Servlet,Tomcat是如何实现异步Servlet的以及异步Servlet的使用场景。手撸一个异步的Servlet我们直接借助SpringBoot框架来实现一个Servlet,这里只展示Servlet代码:@WebServl

2020-08-23 17:12:42 339

转载 关于Java序列化的问题你真的会吗?

引言在持久化数据对象的时候我们很少使用Java序列化,而是使用数据库等方式来实现。但是在我看来,Java 序列化是一个很重要的内容,序列化不仅可以保存对象到磁盘进行持久化,还可以通过网络传输。在平时的面试当中,序列化也是经常被谈及的一块内容。谈到序列化时,大家可能知道将类实现Serializable接口就可以达到序列化的目的,但当看到关于序列化的面试题时我们却常常一脸懵逼。1)可序列化接口和可外部接口的区别是什么?2)序列化时,你希望某些成员不要序列化?该如何实现?3)什么是 serialVers

2020-08-23 16:22:18 173

转载 分享:首席架构师眼里的架构本质

架构的本质目前讨论架构实操(术)的文章较多,讨论架构理念(道)的较少,本文基于作者在大型电商系统架构方面的一些实践和思考,和大家聊聊架构理念性的东西,希望能够抛砖引玉,推进大家对架构的认识。什么是道,什么是术?道是事物发展的本质规律,术是事物发展的具体途径。规律只有一个,途径很多,条条大路通罗马,罗马是道,大路是术。道为本,术为途,如果事先知道罗马在哪里,那么遍地是路,路路相通。架构也是如此,如果能领悟架构的本质,就不会拘泥于现有的实践和理论框框,而以最直接的方式解决问题,无招胜有招。架构的本质任

2020-08-21 20:27:30 175

转载 面试官:来,讲讲Spring事务有哪些坑?

引言今天,我们接上文《面试官:谈谈你对mysql事务的认识》的内容,来讲spring中和事务有关的考题!因为事务这块,面试的出现几率很高。而大家工作中CRUD的比较多,没有好好总结过这块的知识,因此面试容易支支吾吾答不出来,于是乎接下来你就会接到一张好人卡,如"你很优秀,不适合我们公司!"由于《面试官:谈谈你对mysql事务的认识》篇幅所限,因此略过了spring事务相关常见面试题,今天给大家补上!主要题目如下:(1)spring事务的原理?(2)spring什么情况下进行事务回滚?(3)spri

2020-08-21 19:45:51 216

转载 十分钟带你了解Spring的七大知识点,程序员必了解

Spring框架自诞生以来一直备受开发者青睐,有人亲切的称之为:Spring 全家桶。它包括SpringMVC、SpringBoot、Spring Cloud、Spring Cloud Dataflow等解决方案。很多研发人员把spring看作心目中最好的java项目,没有之一。所以这是重点也是难点,工作中必须会,面试时肯定考。那么,今天花费10分钟,梳理Spring框架相关知识。一、Spring知识点-汇总spring系列包含非常多的项目,可以满足java开发中的方方面面。先来看常用框架的知识

2020-08-20 20:43:30 212

转载 这篇最全 Java 8 讲解,有没有之一先看后说!

一、基础知识1)为什么要学习 Java8Java 8 所做的改变,在许多方面比Java 历史上任何一次改变都更加深远,这些改变会让你的编程更加容易例子:传统写法:List personList = Arrays.asList(new Person(21,50),newPerson(22,55),new Person(23,60)); Collections.sort(personList, newComparator() {@Overridepublic int compare(Pers

2020-08-19 20:54:33 621

转载 一个架构师谈什么是架构,以及怎么成为架构师

正文来点轻松的话题。我们调剂一下后再继续讲CAS SSO单点登录吧因为后面的内容全部和代码有关,大家会觉得枯燥。所以今天我们先来点”番外篇“,讲讲什么是架构师,什么是架构这个永恒的话题吧。此篇源出自我在公司内部写的一个PPT,它是用于在公司内部向广大技术人员做普及用的一个资料,而CSDN这边的编辑不支持图文混排的效果,因此一些章节我就直接截取自我的PPT里的内容了,这样可能对大家在阅读上会显得更加生动和活泼一些吧。架构的定义先来看看软件架构的普遍定义吧。一个程序和计算系统软件体系结构是指系统的一个或

2020-08-19 20:16:30 275

转载 阿里架构师十年心血,总结出的一套架构知识体系(内部学习使用)

一、阅读源码、分析源码程序员每天都和代码打交道。经过数年的基础教育和职业培训,大部分程序员都会「写」代码,或者至少会抄代码和改代码。但是,会读代码的并不在多数,会读代码又真正读懂一些大项目的源码的,少之又少。这种怪状,真要追究起来,怪不得程序员这个群体本身 —— 它是两个原因造成的。我们所有的教育和培训都在强调怎么写代码,并没有教大家如何读代码大多数工作场景都是一个萝卜一个坑,我们只需要了解一个系统的局部便能开展工作,读不相干的代码,似乎没用我常常把写代码和写作进行类比 —— 二者有很多相通之处;但

2020-08-18 19:47:44 1857 1

转载 git基本操作,一篇文章就够了!

1. git简介在实际开发中,会使用git作为版本控制工具来完成团队协作。因此,对基本的git操作指令进行总结是十分有必要的,本文对一些术语或者理论基础,不重新码字,可以参考廖雪峰老师的博文,本文只对命令做归纳总结。git的通用操作流程如下图(来源于网络)主要涉及到四个关键点:工作区:本地电脑存放项目文件的地方,比如learnGitProject文件夹;暂存区(Index/Stage):在使用git管理项目文件的时候,其本地的项目文件会多出一个.git的文件夹,将这个.git文件夹称之为版本库。其

2020-08-18 17:25:01 86

转载 2020年最全Java面试知识点(3年的工作总结)

这份Java面试题整整花了三个月的时间来整理,都是自己在工作中总结出来,记住多少就写多少,希望这份资料可以帮助你们。Redis12道面试题1.什么是Redis?答:Remote Dictionary Server(Redis)是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器2. Redis有哪些数据结构?字符串String、字典Hash、列表List、集合Set、有序集合SortedSet。

2020-08-16 15:06:22 173

转载 什么是真正的架构设计?十年Java经验让我总结出了这些,不愧是我

一. 什么是架构和架构本质在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。 此君说的架构和彼君理解的架构未必是一回事。因此我们在讨论架构之前,我们先讨论架构的概念定义,概念是人认识这个世界的基础,并用来沟通的手段,如果对架构概念理解不一样,那沟通起来自然不顺畅。Linux有架构,MySQL有架构,JVM也有架构,使用Java开发、MySQL存储、跑在Linux上的业务系统也有架构,应该关注哪一个?想要清楚以上问题需要梳理几个有关系又相似的概念:系统与子系统、模块与组建、框架与架构:1

2020-08-13 17:17:13 448

转载 Javascript中的异步编程

Javascript最开始是用于浏览器中的前端编程语言。Javascript是单线程的,为了能及时响应用户操作,javascript对耗时操作(如Ajax请求、本地文件读取等)的处理是异步进行的,也即是所谓的异步编程。除了快速响应用户操作之外,另外一个让javascript采用异步方式的原因是,程序无法预知用户会进行哪些操作。比如说程序无法提前知道用户是点“取消”按钮还是“确定”按钮。所以,Javascript采用了事件注册的方式来处理这个问题。在程序编写时,可以给用户点击“取消”按钮和“确认”按钮注册不同

2020-08-12 17:10:21 134

转载 30K成功入职京东:拿到京东offer经验分享

前言正逢金三银四,受到疫情影响,很多大型互联网公司都采用线上面试的方法来挑选人才,也有很多幸运的小伙伴也是拿到大厂的offer,今天给大家分享的是我一位幸运拿到京东offer的朋友的面试经历,疫情刚有好转,相信还有很多朋友是在线上办公的,我也闲来无事,问到了我朋友京东面试的一些真题,以及我整理的一些真题分享给大家。三面京东:一面:离职原因;Zookeeper在项目中的使用及原理;Springcloud的一些组件介绍;Redis实现方式:为什么使用setnx,或者说set 和setNx有什么

2020-08-11 16:05:46 790

转载 Mybatis成为Java互联网时代首选持久框架的原因

持久层可以将业务数据存储到磁盘,具备长期存储能力,只要磁盘不损坏(大部分的重要数据都会有相关的备份机制),在断电或者其他情况下,重新开启系统仍然可以读取这些数据。一般执行持久任务的都是数据库系统。持久层可以使用巨大的磁盘空间,也比较廉价,它的确定就是比较慢。Mybatis成为java互联网时代首选的持久框架原因:1. 不屏蔽SQL ,意味着可以更精确地定位sql语句,可以对其进行优化和改造,这有利于互联网系统性能的提高,符合互联网需要性能优化的特点。2. 提供强大、灵活的映射机制,方便java开发者

2020-08-11 15:39:25 221

转载 为什么公司宁愿 25K 重新招人,也不给你加到 20K?这就是原因

年底了,还有几天就要过年了,年后必定又是一波跳槽季,我们为什么要跳槽,为什么公司不能满足我们加薪的需求?说到这个话题,想必从事码农的各位都清楚的一个道理:工资都是跳出来的,其他行业我不太清楚,但在 IT 行业,这是铁定的事实。公司即使加薪,也只是普调、阳光普照、雨露均沾而已,特别人、特别岗位除外。有时候你可能真不想跳槽,被迫离开公司,你可能在公司干得非常好,工作很开心,同事关系也不错,但人都是要往上走的,都是要吃饭的,工作是为了啥,肯定不是为了情怀,而是为了让自己和家人有更好的生活。所以,今天栈长和

2020-08-10 17:33:43 143

转载 如何搭建合适的Web框架?

之前在Web开发框架推导一文中我们一步步的搭建了一个开发框架。在当时的情况下,还算满足需求。但是随着项目的逐渐完善,需求变更的频度逐渐变得比新增需求的频度高,原来框架的弊端越来越明显,所以需要对框架进行升级改进。我们先来看原来框架的问题,然后基于这些问题,来对框架进行改进。原框架的问题代码生成问题参数传递问题Service层问题测试依赖问题Mapper.xml的问题代码生成问题在原框架中,我们基于各种约束,编写了一个代码生成组件,通过这个组件,我们可以针对选中的表来生成Controll

2020-08-10 11:12:47 306

转载 Spring 和 Spring Boot 之间到底有啥区别?

相信很多小伙伴和我一样,常用Spring 和Spring Boot 但是就是没有研究二者之间到底有什么区别?今天就来大揭秘 ↓概述对于 Spring和 SpringBoot到底有什么区别,我听到了很多答案,刚开始迈入学习 SpringBoot的我当时也是一头雾水,随着经验的积累、我慢慢理解了这两个框架到底有什么区别,相信对于用了 SpringBoot很久的同学来说,还不是很理解 SpringBoot到底和 Spring有什么区别,看完文章中的比较,或许你有了不同的答案和看法!什么是Spring作为

2020-08-08 19:58:10 256

转载 现在最不缺的应该就是码农了,缺的是技术过硬又精通业务的工程师

现在最不缺的应该就是码农了,缺的是技术过硬又精通业务的工程师昨天,一位分析界的老前辈对我很无奈地摇摇头,“这帮程序员,不食人间烟火哪!”我也深有感触,全世界的码农都一个鸟样。这让我想起了,同样也是他,在多年之前,对我提了警醒——要重视业务。从那之后,我一直狂奔在技术+业务的双修道路上。放在以前,码农这个族群一定是稀罕动物。但在今天,这个世界最不缺的应该就是码农了,未来最廉价的也将是码农。仅有泛泛一技,在未来并不吃香,因为那是要被机器人所取代的。这个世界,缺的是技术过硬又精通业务的工程师,缺的.

2020-08-05 15:57:10 744

转载 阿里二面凉了,惨遭这些Spring面试题吊打,为什么大厂都爱问它

前言先说一下本人情况吧,末流985毕业,毕业之后一直在一家不大不小的公司里安稳上班。上半年因为疫情的原因公司调整了工资,我也是随波逐流跟随大家辞了职。辞职之后向阿里。字节这些都投了简历(但是只收到了阿里的回复)。结果被问倒了在Spring到底是怎么循环依赖问题的,这也是最近两年新出的面试频度较高的面试题!会去之后我也是恶补这方面的知识,现在我把我所学的分享给大家!作为一名Java方向的程序员,在面试大厂的时候,其实关于spring这一块是问的非常多的,尤其是源码这一块,几乎是逢面试必问,虽然说现在技术更

2020-08-05 15:07:05 126

转载 面试官:聊聊Spring源码的生命周期、循环依赖

前言Spring中的循环依赖一直是Spring中一个很重要的话题,一方面是因为源码中为了解决循环依赖做了很多处理,另外一方面是因为面试的时候,如果问到Spring中比较高阶的问题,那么循环依赖必定逃不掉。如果你回答得好,那么这就是你的必杀技,反正,那就是面试官的必杀技,这也是取这个标题的原因,当然,本文的目的是为了让你在之后的所有面试中能多一个必杀技,专门用来绝杀面试官!本文的核心思想就是,当面试官问:“请讲一讲Spring中的循环依赖。”的时候,我们到底该怎么回答?主要分下面几点什么是循环依

2020-08-05 14:46:29 290

转载 分布式系统的负载均衡 | 架构

一、 什么是负载均衡?什么是负载均衡?记得第一次接触 Nginx 是在实验室,那时候在服务器部署网站需要用 Nginx 。Nginx 是一个服务组件,用来反向代理、负载平衡和 HTTP 缓存等。那么这里的 负载均衡 是什么?负载均衡(LB,Load Balance),是一种技术解决方案。用来在多个资源(一般是服务器)中分配负载,达到最优化资源使用,避免过载。资源,相当于每个服务实例的执行操作单元,负载均衡就是将大量的数据处理操作分摊到多个操作单元进行执行,用来解决互联网分布式系统的大流量、高并发和

2020-08-03 15:58:04 328

转载 同是ZooKeeper,你和架构师的理解差在哪里?

前言提到ZooKeeper,相信大家都不会陌生。Dubbo,Kafka,Hadoop等等项目里都能看到它的影子。但是你真的了解 ZooKeeper 吗?如果面试官让你给他讲讲 ZooKeeper 是个什么东西,你能回答到什么地步呢?而且,同样是ZooKeeper,一线架构师和你的理解又有哪些不同呢?如何从一个问题及思考方式了解架构的本质?如何剖析ZooKeeper为什么这么设计?ZooKeeper到底能干嘛?如果你已经工作了2-3年,有没有思考过上述3个问题?——如果有,你的答案会是?——.

2020-08-03 10:27:49 159

转载 这可能是微服务写的最全的一篇文章了!!

1.什么是微服务1)一组小的服务(大小没有特别的标准,只要同一团队的工程师理解服务的标识一致即可)2)独立的进程(java的tomcat,nodejs等)3)轻量级的通信(不是soap,是http协议)4)基于业务能力(类似用户服务,商品服务等等)5)独立部署(迭代速度快)6)无集中式管理(无须统一技术栈,可以根据不同的服务或者团队进行灵活选择)ps:微服务的先行者Netflix公司,开源了一些好的微服务框架,后续会有介绍。2. 怎么权衡微服务的利于弊利:强模块边界 。(模块化的演化过程

2020-07-31 17:03:57 438 1

转载 如何学习分布式系统?一文全Get!

分布式系统在互联网公司中的应用已经非常普遍,开源软件层出不穷。hadoop生态系统,从hdfs到hbase,从mapreduce到spark,从storm到spark streaming, heron, flink等等,如何在开源的汪洋中不会迷失自己?本文将从基本概念、架构并结合自己学习工作中的感悟,阐述如何学习分布式系统。由于分布式系统理论体系非常庞大,知识面非常广博,笔者能力有限,不足之处,欢迎讨论交流。常见的分布式系统分为数据存储系统如hdfs,hbase;数据处理计算系统如storm、spark、

2020-07-31 14:25:44 943

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

一、什么是架构我想这个问题,十个人回答得有十一个答案,因为另外的那一个是大家妥协的结果。哈哈,我理解,架构就是骨架,如下图所示:人类的身体的支撑是主要由骨架来承担的,然后是其上的肌肉、神经、皮肤。架构对于软件的重要性不亚于骨架对人类身体的重要性。二、. 什么是设计模式这个问题我问过的面试者不下于数十次,回答五花八门,在我看来,模式就是经验,设计模式就是设计经验,有了这些经验,我们就能在特定情况下使用特定的设计、组合设计,这样可以大大节省我们的设计时间,提高工作效率。 作为一个工作10年以上的老码农

2020-07-31 14:08:25 265

转载 对JVM还有什么不懂的?资深架构师一篇文章带你深入浅出JVM!

本文跟大家聊聊JVM的内部结构,从组件中的多线程处理,JVM系统线程,局部变量数组等方面进行解析JVMJVM = 类加载器(classloader) + 执行引擎(execution engine) + 运行时数据区域(runtime data area)下面这幅图展示了一个典型的JVM(符合JVM Specification Java SE 7 Edition)所具备的关键内部组件。组件中的多线程处理多线程处理”或“自由线程处理”指的是一个程序同时执行多个操作线程的能力。 作为多线程应用程序的

2020-07-31 13:54:09 951

空空如也

空空如也

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

TA关注的人

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