自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 华为员工:内部转岗承诺做java结果变前端开发,我不挑活但……

一般从事web开发的程序员,后端开发也是会一点前端开发的工作,比如写一些html,css,js之类的也是没有什么问题的,除非是一些高难度前端效果,实现起来可能会比较费劲,但是大部分前端开发程序员很少有懂后端开发的(可能也有例外),近期,有一名华为的程序员网友给我们分享了他个人的一个情况。据这名华为程序员网友说,他属于内部转岗的情况,转岗前承诺他做java开发,可是转岗后安排他的却是前端开发的活...

2019-01-05 11:50:10 4102

原创 Kafka查看topic、consumer group状态命令,你也是这样的吗

最近工作中遇到需要使用kafka的场景,测试消费程序启动后,要莫名的过几十秒乃至几分钟才能成功获取到到topic的partition和offset,而后开始消费数据,于是学习了一下查看kafka broker里topic和consumer group状态的相关命令,这里记录一下。命令参考自《Kafka: The Definitive Guide》 Chapter 9 Administrating...

2019-07-05 19:35:03 4983

转载 「面试」如果把线程当作一个人来对待,所有问题都瞬间明白了,你懂吗

多线程的问题都曾经困扰过每个开发人员,今天将从全新视角来解说,希望读者都能明白。强烈建议去运行下文章中的示例代码,自己体会下。要是喜欢的点点关注,点点赞。对Java技术,架构技术感兴趣的朋友,欢迎加QQ群728821520,一起学习,相互讨论。问题究竟出在哪里?一个线程执行,固然是安全的,但是有时太慢了,怎么办?老祖宗告诉我们,“一方有难,八方支援”,那不就是多叫几个线程来帮忙嘛,好办...

2019-07-04 20:36:31 559

原创 「JVM系列」一步步解析java执行内幕

对于任何一门语言,要想达到精通的水平,研究它的执行原理(或者叫底层机制)不失为一种良好的方式。在本篇文章中,将重点研究java源代码的执行原理,即从程序员编写JAVA源代码,到最终形成产品,在整个过程中,都经历了什么?每一步又是怎么执行的?执行原理又是什么?…当然,本篇文章的粒度可能稍微侧重于宏观方面,更细粒度的技术分析,需要在接下来的该系列文章中与大家分享…一 编写java源程序jav...

2019-07-03 17:51:22 459

原创 Java 程序员必备的 10 个开源工具!你有几个?

JIRAGitJenkinsSeleniumGroovySpockMavenGradleDockerLinux本文主要介绍Java程序员应该在2018年学习的一些基本和高级工具。如果你是一位经验丰富的Java开发人员,拥有5到10年的经验,你可能对这些工具很熟悉,但如果不是,现在就是是开始学习这些工具的好时机。Java世界中存在许多工具,从Eclipse,NetBeans...

2019-07-02 16:20:08 919

原创 面试问:Kafka为什么速度那么快?

Kafka的消息是保存或缓存在磁盘上的,一般认为在磁盘上读写数据是会降低性能的,因为寻址会比较消耗时间,但是实际上,Kafka的特性之一就是高吞吐率。即使是普通的服务器,Kafka也可以轻松支持每秒百万级的写入请求,超过了大部分的消息中间件,这种特性也使得Kafka在日志处理等海量数据场景广泛应用。针对Kafka的基准测试可以参考,Apache Kafka基准测试:每秒写入2百万(在三台廉价机...

2019-07-01 14:47:31 549

原创 阿里支付宝架构师:谈谈我眼中的高并发架构。

前言高并发经常会发生在有大活跃用户量,用户高聚集的业务场景中,如:秒杀活动,定时领取红包等。为了让业务可以流畅的运行并且给用户一个好的交互体验,我们需要根据业务场景预估达到的并发量等因素,来设计适合自己业务场景的高并发处理方案。在电商相关产品开发的这些年,我有幸的遇到了并发下的各种坑,这一路摸爬滚打过来有着不少的血泪史,这里进行的总结,作为自己的归档记录,同时分享给大家。服务器架构业务从...

2019-06-30 17:02:23 916

原创 面试我还是想说一下:面试中常问的List去重问题,你都答对了吗?

面试中经常被问到的list如何去重,用来考察你对list数据结构,以及相关方法的掌握,体现你的java基础学的是否牢固。我们大家都知道,set集合的特点就是没有重复的元素。如果集合中的数据类型是基本数据类型,可以直接将list集合转换成set,就会自动去除重复的元素,这个就相对比较简单。如下示例:输出结果为:我们可以看到去重成功了。在面试中被问到list去重问题,大部分回答都会是li...

2019-06-28 17:12:42 369 1

原创 我的面试心得与总结:BAT、网易、蘑菇街

先说一下LZ的基本情况,LZ是四川某985学校通信专业的研究生(非计算机),大学阶段也就学了C语言,根本没想过最后要成为码农。大四才开始学Java,研一下开始学Android,所以LZ觉得自己开始就是一个小白,慢慢成长起来的。一、心态心态很重要!心态很重要!心态很重要!重要的事情说三遍,这一点我觉得是必须放到前面来讲。找工作之前,有一点你必须清楚,就是找工作是一件看缘分的事情,不是你...

2019-06-25 15:24:16 601

原创 微服务架构之「 容错隔离 」

我们知道,在单体应用的架构下一旦程序发生了故障,那么整个应用可能就没法使用了,所以我们要把单体应用拆分成具有多个服务的微服务架构,来减少故障的影响范围。但是在微服务架构下,有一个新的问题就是,由于服务数变多了,假设单个服务的故障率是不变的,那么整体微服务系统的故障率其实是提高了的。比如:假设单个服务的故障率是0.01%,也就是可用性是99.99%,如果我们总共有10个微服务,那么我们整体的可用性...

2019-06-24 14:27:58 221

原创 面试官问你为什么要用Spring,你是怎么答的了

相信每个读者在工作中,学习中都了解Spring怎么使用,对于一个初级的开发工程师来说,仅仅了解怎么使用,能够很快的通过Spring来完成任务,这应该是足够了,但是呢,如果你还想向更高的级别去前进,系统的学习,掌握它的底层原理是必不可少的。每个人在面试的时候,Spring应该都是逃不过的关卡,能够熟练的使用,这并不难,知道它的底层原理才是高出别人一步的地方。这篇文章就说简单说下Spring的一些...

2019-06-21 17:03:50 3829 1

原创 放下手中的事情,来了解下什么是分布式锁?

————— 第二天 —————分布式锁的实现有哪些?1.Memcached分布式锁利用Memcached的add命令。此命令是原子性操作,只有在key不存在的情况下,才能add成功,也就意味着线程得到了锁。2.Redis分布式锁和Memcached的方式类似,利用Redis的setnx命令。此命令同样是原子性操作,只有在key不存在的情况下,才能set...

2019-06-19 16:24:22 365 2

原创 如何用Zookeeper实现分布式锁?

在上一篇漫画中,小灰介绍了如何使用redis实现分布式锁。那么,如何用Zookeeper来实现分布式锁呢?这一次我们会为大家详细讲述。什么是临时顺序节点?让我们来回顾一下Zookeeper节点的概念:Zookeeper的数据存储结构就像一棵树,这棵树由节点组成,这种节点叫做Znode。Znode分为四种类型:1.持久节点 (PERSISTENT)默认的节点类型。创建节点的客户...

2019-06-18 14:51:36 308

原创 「阿里面试系列」搞懂并发编程,轻松应对80%的面试场景

作为一个合格的Java程序员,必须要对并发编程有一个深层次的了解,在很多互联网企业都会重点考察这一块。可能很多工作3年以上的Java程序员对于这一领域几乎没有太多研究。所以在接下来内容中,我会将并发编程整个领域由浅到深做非常全面的分析。内容导航从操作系统的发展了解进程、线程模型线程的优势线程的生命周期线程的应用场景了解进程、线程模型每次学习一个新技术,我会先去了解这个技术的背景,这个...

2019-06-17 15:43:01 183

原创 面试中考官会问:Kafka为什么速度那么快?

Kafka的消息是保存或缓存在磁盘上的,一般认为在磁盘上读写数据是会降低性能的,因为寻址会比较消耗时间,但是实际上,Kafka的特性之一就是高吞吐率。即使是普通的服务器,Kafka也可以轻松支持每秒百万级的写入请求,超过了大部分的消息中间件,这种特性也使得Kafka在日志处理等海量数据场景广泛应用。针对Kafka的基准测试可以参考,Apache Kafka基准测试:每秒写入2百万(在三台廉价机...

2019-06-14 16:48:44 256

原创 记录Spring Cloud应用在阿里云架构部署

常用的Spring Cloud体系架构系统部署采用阿里云平台,采用的技术架构为SpringCloud.采用在线阿里云架构制图工具: Freedgo Design 地址:https://www.freedgo.com, 具体架构如下:整体架构主要居于Spring Cloud的分布式微服务架构。主要功能包括:服务注册发现中心(Eureka server)通过服务发现可以抽象出部署服务的物...

2019-06-13 17:45:45 3833 1

原创 面试中的 ThreadLocal 原理和使用场景你遇到过吗

相信大家不管是在网上做题还是在面试中都经常被问过 ThreadLocal 的原理和用法,虽然一直知道这个东西的存在但是一直没有好好的研究一下原理,没有自己的知识体系。今天花点时间好好学习了一下,分享给有需要的朋友。ThreadLocal 是什么ThreadLocal 是 JDK java.lang 包中的一个用来实现相同线程数据共享不同的线程数据隔离的一个工具。 我们来看下 JDK 源码中是如...

2019-06-12 16:57:11 356

原创 阿里大佬带你,深入理解线程池底层原理

线程池为什么要使用线程池在实际使用中,线程是很占用系统资源的,如果对线程管理不善很容易导致系统问题。 因此,在大多数并发框架中都会使用线程池来管理线程,使用线程池管理线程主要有如下好处:(1)降低资源消耗。通过复用已存在的线程和降低线程关闭的次数来尽可能降低系统性能损耗(2)提升系统响应速度。通过复用线程,省去创建线程的过程,因此整体上提升了系统的响应速度(3)提高线程的可管理性。线程是...

2019-06-11 16:25:50 303

转载 从事Java工作两年了,工作高不成低不就,如何快速的提升自己?

本文列出了当今计算机软件开发和应用领域最重要十种关键技术排名,如果你想保证你现在以及未来的几年不失业,那么你最好跟上这些技术的发展。虽然你不必对这十种技术样样精通,但至少应该对它们非常熟悉,另外,小编还给大家准备了一套烛光学院VIP的Java提升课程,有助于那些从事Java工作人员在职场上遇到瓶颈,或者想往更高的层次提升自己,都是可以看看下面的这系列的视频,视频讲课老师都是之前在ABT公司做过技术...

2019-06-10 16:39:47 1838

原创 《Kafka的权威指南》——写数据

不管是把 Kafka 作为消息队列、消息、总线还是数据存储平台来使用 ,总是需要有一个可以往 Kafka 写入数据的生产者和一个可以从 Kafka读取数据的消费者,或者一个兼具两种角 色的应用程序。例如,在一个信用卡事务处理系统里,有一个客户端应用程序,它可能是一个在线商店, 每当有支付行为发生时,它负责把事务发送到 Kafka上。另一个应用程序根据规则引擎检 查这个事务,决定是批准还是拒绝。 ...

2019-06-10 16:09:11 248

原创 互联网架构,究竟为啥要做服务化?

“微服务架构”的话题非常之火,很多朋友都在小窗我,说怎么做服务化?解答“怎么做”之前,先得了解“为什么做”。画外音:做技术千万不能是这种思路,“别人都在做,所以我们也要搞”。并不是所有的业务都适合“服务化”,互联网高可用架构,到底为什么要服务化?服务化之前,高可用架构是什么样的?在服务化之前,互联网的典型高可用架构如下:(1)客户端,APP,H5,小程序,PC浏览器;(2)后端入口,...

2019-06-04 15:54:24 266

原创 死磕 java集合之DelayQueue源码分析

问题(1)DelayQueue是阻塞队列吗?(2)DelayQueue的实现方式?(3)DelayQueue主要用于什么场景?简介DelayQueue是java并发包下的延时阻塞队列,常用于实现定时任务。继承体系从继承体系可以看到,DelayQueue实现了BlockingQueue,所以它是一个阻塞队列。另外,DelayQueue还组合了一个叫做Delayed的接口,Delay...

2019-06-03 21:28:27 205

原创 一个简单的管理系统 Springmvc 一不留神就躺坑

前言好久没有用springmvc写项目了,抽时间写一个简单的springmvc项目是什么(what)为什么(why)怎么做(how)1.读书破万卷下笔如有神(理清思路,知识储备和前期整理)2.遇到问题,多方面寻找解决的思路及方法3.总结,回顾写过的坑1.初始化数据库数据库的话可以选择mysql,oracle 最近oracle用得比较多所以选用oracle(1).查看数据文件存储路径...

2019-06-02 15:31:17 447

原创 作为一技术人员,面试前都需要做哪些准备?

前言面试前对目标公司,岗位要求及面试流程有所了解,这样才可以有针对性的突破,我们来看以下几个方面,相信可以帮助大家解决大部分求职迷茫的问题。第一,常见的技术人员发展路径/和竞争要求。第二,技术面试一般都有哪些流程?第三,如何去选择一个高命中率的岗位?第四,面试前要怎么准备?第五,面试都有哪些考察点?常见的技术人员发展路径?能谈谈你对未来的职业规划吗?相信很多人面试都被问过这个问题...

2019-05-29 19:15:51 999

原创 死磕 java同步系列之自己动手写一个锁Lock

问题(1)自己动手写一个锁需要哪些知识?(2)自己动手写一个锁到底有多简单?(3)自己能不能写出来一个完美的锁?简介本篇文章的目标一是自己动手写一个锁,这个锁的功能很简单,能进行正常的加锁、解锁操作。本篇文章的目标二是通过自己动手写一个锁,能更好地理解后面章节将要学习的AQS及各种同步器实现的原理。分析自己动手写一个锁需要准备些什么呢?首先,在上一章学习synchronized的...

2019-05-28 16:59:21 195

原创 SpringCloud之旅第一篇-微服务概念

目录一、单体架构的问题二、微服务出现三、微服务架构图四、优缺点五、技术点六、解决方案回到顶部一、单体架构的问题微服务为什么会出现?在学习Springboot的时候知道Springboot极大的简化了我们的开发,我们可以快速的进行业务开发,Springboot单体应用在项目的开发初期能够满足我们需求,这种单体架构优点非常的明显:容易测试:本地就可以起完整的系统,不需要外部依赖。...

2019-05-24 16:15:00 178

原创 Dubbo 2.7.1 踩坑的我,你踩过吗?

Dubbo 2.7 版本增加新特性,新系统开始使用 Dubbo 2.7.1 尝鲜新功能。使用过程中不慎踩到这个版本的 Bug。系统架构Spring Boot 2.14-Release + Dubbo 2.7.1现象Dubbo 服务者启动成功,正常提供服务,消费者调用偶现失败的情况。错误如下图:可以看出,主要原因为 cause: message can not send, because...

2019-05-23 15:11:55 2756

原创 Java的内部类真的那么难以理解

01 前言昨天晚上,我把车停好以后就回家了。回家后才发现手机落在车里面了,但外面太冷,冷到骨头都能感受到寒意——实在是不想返回一趟去取了(小区的安保还不错,不用担心被砸车玻璃),于是打定主意过几个小时的“世外桃源”生活——别人找不到我,我也找不到别人,这种与世隔绝的状态非常适合读书写作。把厚厚的《Java编程思想》摆在桌子上,正襟危坐,认认真真地读起了第十章——内部类。尽管我已经非常耐心和用...

2019-05-22 16:29:08 209

原创 杂谈 什么是伪共享(false sharing)?

问题(1)什么是 CPU 缓存行?(2)什么是内存屏障?(3)什么是伪共享?(4)如何避免伪共享?CPU缓存架构CPU 是计算机的心脏,所有运算和程序最终都要由它来执行。主内存(RAM)是数据存放的地方,CPU 和主内存之间有好几级缓存,因为即使直接访问主内存也是非常慢的。如果对一块数据做相同的运算多次,那么在执行运算的时候把它加载到离 CPU 很近的地方就有意义了,比如一个循环计...

2019-05-21 15:18:25 265

原创 微服务技术选型之路

本文以笔者个人经历讲述关于微服务方面的技术选型和相关知识点。微服务模式的项目从初建到上线部署应用,每一个环节都会涉及到相当多的技术细节(上线后的性能调优更需要)。本文着重介绍一套微服务搭建流程中面临的一些技术选型,战略性的技术方案及相关技术的简要介绍,不做每一项技术的深入说明。微服务简介微服务是指开发一个单个小型的但有业务功能的服务,每个服务都有自己的处理和轻量通讯机制,可以部署在单个或多个...

2019-05-16 17:38:09 236

原创 数据库语句优化

在MySQL数据库怎么加快查询速度,优化查询效率,主要原则就是应尽量避免全表扫描,应该考虑在where及order by 涉及的列上建立索引。建立索引不是建的越多越好,原则是:第一:一个表的索引不是越多越好,也没有一个具体的数字,根据以往的经验,一个表的索引最多不能超过6个,因为索引越多,对update和insert操作也会有性能的影响,涉及到索引的新建和重建操作。第二:建立索引的方法论为:...

2019-05-15 16:47:29 257

原创 如何提高使用Java反射的效率?

前言在我们平时的工作或者面试中,都会经常遇到“反射”这个知识点,通过“反射”我们可以动态的获取到对象的信息以及灵活的调用对象方法等,但是在使用的同时又伴随着另一种声音的出现,那就是“反射”很慢,要少用。难道反射真的很慢?那跟我们平时正常创建对象调用方法比慢多少? 估计很多人都没去测试过,只是”道听途说“。下面我们就直接通过一些测试用例来直观的感受一下”反射“。正文准备测试对象下面先定义一个...

2019-05-09 15:10:58 252

原创 处理异常是一门学问吗?

01、你有没有这样的印象,当你想要更新一款 APP 的时候,它的更新日志里总有这么一两句描述:修复若干 bug杀了某程序员祭天,并成功解决掉他遗留的 bug作为一名负责任的程序员,我们当然希望程序不会出现 bug,因为 bug 出现的越多,间接地证明了我们的编程能力越差,至少领导是这么看的。事实上,领导是不会拿自己的脑袋宣言的:“我们的程序绝不存在任何一个 bug。”但当程序出现 bu...

2019-05-08 15:23:22 314

原创 SpringMVC-方法四种类型返回值总结,你用过几种?

SpringMVC 现在算是 Java 领域的一个基础性框架了,很多人天天用,可是对于 SpringMVC 方法的返回值,你又是否完全清楚呢?今天松哥就来和大家聊一聊 SpringMVC 中四种不同类型的返回值,看看有没有 get 到你的知识盲点?ModelAndView以前前后端不分的情况下,ModelAndView 应该是最最常见的返回值类型了,现在前后端分离后,后端都是以返回 JSON...

2019-05-07 14:23:08 251

原创 MyBatis事务管理机制

MyBatis作为Java语言的数据库框架,对数据库的事务管理是其非常重要的一个方面。本文将从事务的分类、配置和实现分析MyBatis的事务管理的实现机制。MyBatis事务的分类对数据库的事务而言,应该具有以下几点:创建(create)、提交(commit)、回滚(rollback)、关闭(close)。对应地,MyBatis将事务抽象成了Transaction接口:其接口定义如下:...

2019-04-29 15:16:23 592

原创 Spring boot学习(六)Spring boot实现AOP记录操作日志

前言在实际的项目中,特别是管理系统中,对于那些重要的操作我们通常都会记录操作日志。比如对数据库的CRUD操作,我们都会对每一次重要的操作进行记录,通常的做法是向数据库指定的日志表中插入一条记录。这里就产生了一个问题,难道要我们每次在 CRUD的时候都手动的插入日志记录吗?这肯定是不合适的,这样的操作无疑是加大了开发量,而且不易维护,所以实际项目中总是利用AOP(Aspect Oriented ...

2019-04-26 16:07:03 978

原创 Java 多态的特性和概念

多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作,如图所示:image多态性是对象多种表现形式的体现。现实中,比如我们按下 F1 键这个动作:如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档; 如果当前在 Word 下弹出的就是 Word 帮助; 在 Windows 下弹出的就是 Windows ...

2019-04-25 16:52:51 1728

原创 java中什么是继承,和继承的接口的关系?

继承的概念继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。面试题:一个接口可以继承多个接口.interface C extends A, B {}是可以的.一个类可以实现多个接口:class D implements A...

2019-04-24 15:29:51 907

原创 Java大神进阶之路!每一位程序员值得借鉴!

既然励志在java路上走的更远,那就必须了解java的路径。先看图更加细化的细节如下一: 编程基础不管是C还是C++,不管是Java还是PHP,想成为一名合格的程序员,基本的数据结构和算法基础还是要有的。下面几篇文章从思想到实现,为你梳理出常用的数据结构和经典算法。1-1 常用数据结构数组、链表、堆、栈、队列、Hash表、二叉树等1-2 算法思想算法时间复杂度...

2019-04-23 16:01:43 985

原创 高级Java开发面试常用题的答案2

三、JVM· JVM堆的基本结构。java_heap_struct.jpg参考阅读:JVM内存堆布局图解分析· JVM的垃圾算法有哪几种?CMS垃圾回收的基本流程?基本的算法有:标记-清除算法 等待被回收对象在被标记后直接对对象进行清除,会带来另一个新的问题——内存碎片化。如果下次有比较大的对象实例需要在堆上分配较大的内存空间时,可能会出现无法找到足够的连续内存...

2019-04-22 17:03:16 347

空空如也

空空如也

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

TA关注的人

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