Java进阶
文章平均质量分 81
qq_41534566
这个作者很懒,什么都没留下…
展开
-
阿里P8资深架构师专家的学习之路(末尾福利分享)
本文要点阅读和理解是不够的,你还需要记住你学的内容。进行主动阅读——你的大脑充分理解这些概念并将它变成你自己的东西。放慢你的大脑,做有创意的笔记,而且反复阅读是没有用的,测验才有效。经常反思你读过的东西并进行联想。“他忘记的比你知道的还要多?”,那个人指的就是我。我成为一名开发者已经十多年了,忘记过不少知识。但问题是:我现在知道的,或者说,我记得的,和千禧一代的人(是指1980年代初到2000年代...转载 2018-05-07 17:32:56 · 1887 阅读 · 1 评论 -
大牛实战归纳——Kafka架构原理
对于kafka的架构原理我们先提出几个问题?1.Kafka的topic和分区内部是如何存储的,有什么特点?2.与传统的消息系统相比,Kafka的消费模型有什么优点?3.Kafka如何实现分布式的数据存储与数据读取?一、Kafka架构图 1.kafka名词解释在一套kafka架构中有多个Producer,多个Broker,多个Consumer,每个Producer可以...原创 2018-07-25 21:23:46 · 2276 阅读 · 0 评论 -
看京东系统架构师如何让笨重的架构变得灵巧
随着业务的复杂性增大、系统吞吐量增长,所有功能统一部署难度加大,各个功能模块相互影响,使系统变的笨重且脆弱;因此需要对业务进行拆分、对系统进行解耦、对系统内部架构升级,来提升系统容量及健壮性。 接下来主要分两部分介绍:系统拆分与结构演变; 系统拆分 系统拆分从资源角度分为:应用拆分和数据库拆分; 从采用的先后顺序可分为:水平扩展、垂直拆分、业务拆分、水平拆分;...转载 2018-07-30 19:29:01 · 159 阅读 · 0 评论 -
如果让你自评一下,你能成为一个好的架构师吗
架构师,这个title就和总监之类的title一样,已经彻底被用烂了,但在一个软件产品的生命周期中,架构师是实实在在的一个极度重要的角色,这篇文章就来讲讲我觉得的架构师的画像,到底具备什么素质的同学是贴合架构师形象的,同时欢迎大家回复下在你心目中NB的架构师的画像是怎么样的呢。 业务理解和抽象能力 架构师的第一职责是理解业务,并转换为可被研发理解的实现方案,因此业务理解能力是架构师...原创 2018-07-27 16:49:58 · 845 阅读 · 0 评论 -
常见的14道面试题,查漏补缺一下吧
1. synchronized 和 reentrantlock 异同相同点 都实现了多线程同步和内存可见性语义 都是可重入锁 不同点 实现机制不同 synchronized 通过 java 对象头锁标记和 Monitor 对象实现 reentrantlock 通过 CAS、ASQ(AbstractQueuedSynchronizer)和 locksupport(用于阻...转载 2018-07-31 15:50:52 · 204 阅读 · 0 评论 -
架构闲谈
一、架构的定义 所谓一千个架构师中有一千种“最好的架构”模式。 “架构”是我们这行业种一个很常见的词,表明其必然也是经历了很长的岁月打磨所形成的一个词。架构的这个词出现的意义是什么?为了解决什么问题?只有把这2个问题想明白了,才能设计出一个良好的项目架构。 我认为 架构类似于画房屋设计图,在刚开始我们盖一层楼的小房子的时候,拍拍脑门想一下,脑子里有个大概的样子就开始动工了,...原创 2018-08-06 16:30:34 · 141 阅读 · 0 评论 -
Java面试中常问的Spring方面问题(55道含答案)
Spring Framework 现在几乎已成为 Java Web 开发的标配框架。那么,作为 Java 程序员,你对 Spring 的主要技术点又掌握了多少呢?不妨用本文的问题来检测一下。1、一般问题1.1. 不同版本的 Spring Framework 有哪些主要功能?VersionFeatureSpring 2.5发布于 2007 年。这是第一个支持注解的版本。Spring 3....转载 2018-08-14 15:31:34 · 4602 阅读 · 0 评论 -
为什么开发人员必须要了解数据库锁?
1.锁?1.1何为锁锁在现实中的意义为:封闭的器物,以钥匙或暗码开启。在计算机中的锁一般用来管理对共享资源的并发访问,比如我们java同学熟悉的Lock,synchronized等都是我们常见的锁。当然在我们的数据库中也有锁用来控制资源的并发访问,这也是数据库和文件系统的区别之一。1.2为什么要懂数据库锁?通常来说对于一般的开发人员,在使用数据库的时候一般懂点DQL(select)...转载 2018-08-11 17:51:21 · 115 阅读 · 0 评论 -
垃圾回收算法与 JVM 垃圾回收器综述
首先,文章有点长,但是没办法。你得学那就一定得去看,不要加入你收藏不看系列里面了垃圾回收算法与 JVM 垃圾回收器综述我们常说的垃圾回收算法可以分为两部分:对象的查找算法与真正的回收方法。不同回收器的实现细节各有不同,但总的来说基本所有的回收器都会关注如下两个方面:找出所有的存活对象以及清理掉所有的其它对象——也就是那些被认为是废弃或无用的对象。Java 虚拟机规范中对垃圾收集器应该如何实...原创 2018-08-26 17:47:52 · 109 阅读 · 0 评论 -
简单定义多线程
1 说到线程,首先来说下进程,以下是进程的定义:进程是操作系统结构的基础,是程序的一次执行,是一个程序及其数据结构在处理机上顺序执行时所发生的活动,是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。简单来说一个任务管理器中列表的一个exe文件就可以理解成进程,如QQ.exe就是一个进程,进程是受系统管理的基本运行单元。1.1 什么是线程?线程是操作系统能够...原创 2018-07-24 17:06:04 · 433 阅读 · 0 评论 -
深入理解负载均衡经典案例
前言闲来无事写篇文章总结下负载均衡。正文负载均衡负载均衡是高可用架构的一个关键组件,主要用来提高性能和可用性,通过负载均衡将流量分发到多个服务器,同时多服务器能够消除这部分的单点故障。当然负载均衡器本身就是一个单点故障隐患,可以考虑文章后面说的负载均衡双机热备或其他方案消除单点故障提高可用性。一个没有使用负载均衡的Web架构一般会长得像这样:没有负载均衡的架构在这个例子里面,用户直接通过yourd...原创 2018-07-04 19:31:40 · 1479 阅读 · 0 评论 -
搞开发你的知识死角不能否定你的技术能力
有些事情你不知道,但你一定能解决。有些人通过我账号资料加我,然后问我一些所谓“怎么办”的问题,不是我不告诉你,而是我确实不知道。我确实有很高的title,也确实有很多的技术积累,但我并没有达到知识的“百宝盒”的水平。换个角度重新说这句话“这么简单的问题你都不知道,你配得上你的title吗?”技术能力我们放下技术先不谈,只说能力。当你同时面对工作进度紧张,家里事务繁琐,你是如果做时间管理的?当你面对...原创 2018-06-03 15:07:33 · 474 阅读 · 0 评论 -
解析一些java复杂面试题的简单操作
java虚拟机什么时候会触发full gcSystem.gc()方法的调用老年代空间不足永生区空间不足(JVM规范中运行时数据区域中的方法区,在HotSpot虚拟机中又被习惯称为永生代或者永生区,Permanet Generation中存放的为一些class的信息、常量、静态变量等数据)GC时出现promotion failed和concurrent mode failure统计得到的Minor ...原创 2018-06-05 16:00:54 · 222 阅读 · 0 评论 -
中国人自己的RPC——蚂蚁金服RPC框架分析
蚂蚁金服近期开源了研发多年的SOFA一篮子框架,其中就有一个非常核心的RPC框架,它叫SOFA-BOLT。小编今天花了近一天的时间仔细阅读研究它的源码,阅读过程中遇到了不少问题,蚂蚁金服的相关技术人员都非常耐心的及时解答了我的疑难。这里将我从中学到的知识点一并分享给大家。SOFA-BOLT基于开源的Netty框架,同时提供了服务器和客户端的实现。它的源码非常值得一读,结构简单,考虑周全,绝不是一个...原创 2018-06-20 20:24:41 · 1034 阅读 · 1 评论 -
亿级用户下的新浪微博平台架构
序言新浪微博在2014年3月公布的月活跃用户(MAU)已经达到1.43亿,2014年新年第一分钟发送的微博达808298条,如此巨大的用户规模和业务量,需要高可用(HA)、高并发访问、低延时的强大后台系统支撑。微博平台第一代架构为LAMP架构,数据库使用的是MyIsam,后台用的是php,缓存为Memcache。随着应用规模的增长,衍生出的第二代架构对业务功能进行了模块化、服务化和组件化,后台系统...转载 2018-06-06 15:13:41 · 221 阅读 · 0 评论 -
Spring Cloud Stream应用与自定义RocketMQ原理解析
概述Spring Cloud Stream 简介Spring Cloud Stream 是一个用来为微服务应用构建消息驱动能力的框架。它可以基于Spring Boot 来创建独立的,可用于生产的Spring 应用程序。他通过使用Spring Integration来连接消息代理中间件以实现消息事件驱动。Spring Cloud Stream 为一些供应商的消息中间件产品提供了个性化的自动化配置实现...原创 2018-06-23 14:16:38 · 3969 阅读 · 0 评论 -
JVM内存-GC策略
在思考GC时通常需要完成3件事情:哪些内存需要回收?什么时候回收?如何回收?引用计数器算法GC存在的问题是?描述:引用计数器法给对象中添加一个引用计数器,没当一个地方引用它,计数器就加一,引用失效时减一,任何引用计数器为0的对象就是不可能再被使用的对象。引用计数器算法的效率也比较高,主流的JVM里面并没有选用引用计数器来管理内存,其中最主要的问题是不能解决对象之间循环引用的问题。jvm可达性分析算...转载 2018-06-26 16:26:59 · 100 阅读 · 0 评论 -
可能是把Docker的概念讲的最清楚的一篇文章
本文只是对Docker的概念做了较为详细的介绍,并不涉及一些像Docker环境的安装以及Docker的一些常见操作和命令。阅读本文大概需要15分钟,通过阅读本文你将知道一下概念:容器什么是Docker?Docker思想、特点Docker容器主要解决什么问题容器 VS 虚拟机Docker基本概念: 镜像(Image),容器(Container),仓库(Repository)Docker 是世界领先的...转载 2018-06-27 14:40:18 · 151 阅读 · 0 评论 -
java的多线程详解
java的多线程的概念,向来都是很复杂、笼统、抽象的。现实世界只有将知识点抽象过后才能有效的传播,但是传播的过程中,只有将抽象的知识点具象化,我们才能习得。所以我们会将个别内容点进行一个具象化进而解剖。当我们理解完了之后最终将其抽象成一个个名词:多线程、资源、锁等。本文仅从以下的范围内容来谈谈java的多线程。何为线程,线程的作用 资源的控制,锁的介绍 线程池的作用 多线程的常用工具...原创 2018-08-23 17:47:18 · 123 阅读 · 0 评论 -
一文了解数据库高可用容灾方案的设计与实现
一个系统可能包含很多模块,如数据库、前端、缓存、搜索、消息队列等,每个模块都需要做到高可用,才能保证整个系统的高可用。对于数据库服务而言,高可用的实现可能更加复杂,对用户的服务可用,不仅仅是能访问,还需要有正确性保证,因此讨论数据库的高可用方案时,在容灾之外,还要同时考虑方案中数据一致性问题。本文将通过介绍一些业界主流的数据库高可用架构、每种方案的特性和优缺点,以及数据库高可用架构的自动化运维...原创 2018-08-28 17:10:34 · 1267 阅读 · 0 评论 -
什么样的简历不会被丢进回收站
前言从去年校招开始到现在负责部门的面试,从我手上流走的简历多多少少也有上百封了。同时最近秋招又要开始了,就想着把我这一年来筛选简历的经验分享给大家,多少还是能提高一些命中率。突出优势「简历」自然是突出简单的好,相信大部分面试官都不是全职做面试工作;多数都是工作之余筛选简历。就我的情况来说,每天都需要在工作中挤出一部分时间从 10 几份简历中挑选出比较靠谱的。总共大概花费 5...转载 2018-08-21 17:06:40 · 161 阅读 · 0 评论 -
如何设计一个麻雀般的微型分布式架构?
序言(初衷)设计该系统初衷是基于描绘业务(或机器集群)存储模型,分析代理缓存服务器磁盘存储与回源率的关系。系统意义是在腾讯云成本优化过程中,量化指导机房设备扩容。前半部分是介绍背景,对CDN缓存模型做一些理论思考。后半部分会实际操作搭建一个微型但是五脏俱全的分布式通用系统架构,最后赋予该系统一些跟背景相关的功能,解决成本优化中遇到的实际问题。缓存服务器存储模型架构(背景): ...转载 2018-09-07 14:18:46 · 190 阅读 · 0 评论 -
金九银十分享一个阿里天猫面试的历程
天猫一面 Quartz是如何实现的 如果有多台机器,一台机挂了,咋办 ElasticSearch有什么用,是基于什么的,相对于MySQL的like有什么区别,为什么不直接用lucene呢 项目中统计网站的pv和uv是怎么做的 为什么不直接将nginx的日志存到es而要使用kafka list和set的区别 hashset是如何保证不...原创 2018-09-10 22:25:54 · 240 阅读 · 0 评论 -
金九银十面完阿里,百度,腾讯,360之后我总结了这些面试知识点
线程并发这就是一天坑,基本问不完,难度也是拉满的那种...Q:进程和线程的区别?进程是资源分配的基本单位,线程是程序执行的最小单位 进程有独立的地址空间,线程依托于进程存在,线程切换的开销小 多进程组成的服务更稳定,一个进程挂了不会对另一个进程造成影响,相反,一个线程挂了,依托该进程的所有线程都会崩溃Q:进程间通信方式?管道 信号量 消息队列 共享内存(IPC) so...原创 2018-09-14 19:38:07 · 1197 阅读 · 1 评论 -
深究分布式缓存的九个点
一、 redis 简介Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。...原创 2018-09-25 16:07:27 · 730 阅读 · 0 评论 -
分布式系统消息中间件——RabbitMQ的使用基础篇
前言我是在解决分布式事务的一致性问题时了解到RabbitMQ的,当时主要是要基于RabbitMQ来实现我们分布式系统之间对有事务可靠性要求的系统间通信的。关于分布式事务一致性问题及其常见的解决方案,可以看我另一篇博客。提到RabbitMQ,不难想到的几个关键字:消息中间件、消息队列。而消息队列不由让我想到,当时在大学学习操作系统这门课,消息队列不难想到生产者消费者模式。(PS:操作系统这门课程...原创 2018-09-26 14:10:07 · 162 阅读 · 0 评论 -
教你用 3 台机器搞定一个 Redis 高可用架构
基于内存的 Redis 应该是目前各种 Web 开发业务中最为常用的 key-value 数据库了。我们经常在业务中用其存储用户登陆态(Session 存储),加速一些热数据的查询(相比较 MySQL 而言,速度有数量级的提升),做简单的消息队列(LPUSH 和 BRPOP)、订阅发布(PUB/SUB)系统等等。规模比较大的互联网公司,一般都会有专门的团队,将 Redis 存储以基础服务的...原创 2018-09-27 17:41:52 · 603 阅读 · 0 评论 -
干货分享!价值6亿的代码到底长什么样子?
价值6亿美刀的代码量是多少?如果一个工程师写代码要赚6亿美元,那他大概需要写多少代码呢?前段时间,Google工程师RaymondFarias在社交媒体说道,一名高效的谷歌工程师每天大概会写 100-150行代码。倘若以这个谷歌工程师为例,全年无休不间断写代码,一年时间写的代码量预估为54750行。而据领英数据统计,谷歌工程师薪酬一般在20万-100万美元不等。倘若这个工程师是10...原创 2019-08-16 14:10:13 · 635 阅读 · 0 评论 -
金九银十并发编程看着篇就够了
Java并发编程在实际的工作中应用广泛,有时候需要通过多线程去异步做一些事情,有时候需要通过多线程提升一个任务执行的效率。最近又是一波面试的高峰期,给大家分享一下关于面试中并发问题的一些概念。关键概念上下文切换概念:CPU通过时间片算法,给可运行的线程分配运行时间,在不同线程之间的切换时需要将当前线程的状态保存并回复将要执行的线程状态信息,这个过程就是上下文切换。 如何减少或避免上下...原创 2018-09-10 17:06:31 · 186 阅读 · 0 评论 -
年薪50w年薪的架构师他的学习体系是什么
Web应用,最常见的研发语言是Java和PHP。后端服务,最常见的研发语言是Java和C/C++。大数据,最常见的研发语言是Java和Python。 可以说,Java是现阶段中国互联网公司中,覆盖度最广的研发语言,掌握了Java技术体系,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能有立足之地。 有不少朋友问,除了掌握Java语法,还要系统学习哪些Java相关...原创 2018-09-12 22:10:59 · 1134 阅读 · 0 评论 -
这几道Java集合框架面试题在面试中几乎必问
Arraylist 与 LinkedList 异同1. 是否保证线程安全: ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全; 2. 底层数据结构: Arraylist 底层使用的是Object数组;LinkedList 底层使用的是双向循环链表数据结构; 3. 插入和删除是否受元素位置的影响: ① ArrayList 采用数组存储,所以插入和删除元素的时间...原创 2018-08-24 19:18:05 · 124 阅读 · 0 评论 -
浅谈常见的NoSQL技术方案和选型
前言在互联网和大数据的背景下,越来越多的网站、应用系统需要支撑 海量数据存储、高并发请求、高可用、高可扩展性 等特性要求。传统的 关系型数据库 已经难以应对类似的需求,各种各样的 NoSQL(Not Only SQL)数据库因此而产生。 本文将分析 传统数据库 的存在的问题,以及几类 NoSQL 如何解决这些问题。在不同的 业务场景 下,作出正确的 数据存储 技术选型。...原创 2018-08-29 17:28:23 · 282 阅读 · 0 评论 -
金九银十阿里HR教你如何躲避那些面试的坑(分享一下面试的技巧)
起因,某日电话面试之后满心郁闷的我发了两条微博:面试的时候问个css的position属性能刷掉一半的人这是啥情况……其实这问题我本来打算的是可以顺着一路扯到normal flow、containing block、bfc、margin collapse,base line,writing mode,bidi,这样一路问下去的,奈何第一个问题(亲我真的只问了position有哪些取值和行...原创 2018-09-08 14:24:24 · 684 阅读 · 0 评论 -
数据库事务隔离发展历史
事务隔离是数据库系统设计中根本的组成部分,本文主要从标准层面来讨论隔离级别的发展历史,首先明确隔离级别划分的目标;之后概述其否定之否定的发展历程;进而引出 Adya给出的比较合理的隔离级别定义,最终总结隔离标准一路走来的思路。目标事务隔离是事务并发产生的直接需求,最直观的、保证正确性的隔离方式,显然是让并发的事务依次执行,或是看起来像是依次执行。但在真实的场景中,有时并不需要如此高的正确性...转载 2018-09-05 20:31:36 · 154 阅读 · 0 评论 -
以Java后端高级开发为例,讲述面试前的准备点
由于我做了比较长时间的技术面试官,根据我的面试体会,不少同学收到面试后,什么准备也不会做,到时候就来了。 这样做的后果是:不知彼,不知己,每战必殆。哪怕侥幸面试成,工资一定会被压得很低。 其实公司肯花时间让你去面试,前提条件一定是通过你的简历,一定发现了你和公司的匹配点,也就是说,一定是有录用意向的。 在技术面试的时间段里(最长1个小时),你如果能展现...原创 2018-09-03 21:36:25 · 190 阅读 · 0 评论 -
不懂高性能的负载均衡设计?没关系,架构师带你飞
在软件系统的架构设计中,对集群的负载均衡设计是作为高性能系统优化环节中必不可少的方案。负载均衡本质上是用于将用户流量进行均衡减压的,因此在互联网的大流量项目中,其重要性不言而喻。一、什么是负载均衡?早期的互联网应用,由于用户流量比较小,业务逻辑也比较简单,往往一个单服务器就能满足负载需求。随着现在互联网的流量越来越大,稍微好一点的系统,访问量就非常大了,并且系统功能也越来越复杂,那么单台服...原创 2018-09-06 16:59:19 · 82 阅读 · 0 评论 -
金九银十总结面试套路为你收割BAT大厂offer
先总结一下技术面流程:让你做自我介绍(准备好) 看看你简历,说你对这个比较熟?balabla...你问的简单就熟,问的难不好意思不太了解 看看你实习经历,让你介绍实习干啥了,有没有什么大项目能拿得出手,干聊10-20分钟的 问问职业规划。这里表现出你态度的虔诚,不会乱跳槽,踏踏实实的干,让他感受到你想进这家公司,两眼能放光就更好了... 大佬们可以海吹一波 你有啥子问题。我一般预备两个...原创 2018-09-16 15:05:39 · 465 阅读 · 0 评论 -
消息队列mq总结
一、消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ 二、消息队列应用场景以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景。...原创 2018-09-16 17:41:07 · 149 阅读 · 0 评论 -
《人工智能(第二版)》入门新人必读的一本神书(文末送书)
直接进入主题,今天送书!对于支持咕泡人工智能的粉丝,我们向来是忠诚的。今天要送的这本书叫《人工智能(第二版)》作者简介:史蒂芬·卢奇(Stephen Lucci) 拥有纽约市立大学的博士学位,目前在纽约市立大学教授计算机科学课程。他曾在高性能计算领域发表了多篇论文,并且是NASA发起的MU-SPIN项目的学术带头人。MU-SPIN项目旨在为NASA培养下一代*尖的科...原创 2019-08-16 22:01:08 · 1556 阅读 · 4 评论 -
美团点评广告实时索引的设计与实现
背景在线广告是互联网行业常见的商业变现方式。从工程角度看,广告索引的结构和实现方式直接决定了整个系统的服务性能。本文以美团点评的搜索广告系统为蓝本,与读者一起探讨广告系统的工程奥秘。领域问题广告索引需具备以下基本特性:层次化的索引结构实时化的索引更新层次投放模型一般地,广告系统可抽象为如下投放模型,并实现检索、过滤等处理逻辑。该层次结构的上下层之间是一对多的关系。一个广告主通常创建若干个推广计划,...转载 2018-05-13 19:27:40 · 381 阅读 · 0 评论