自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

猿人谷

个人主页:yuanrengu.com/

  • 博客(59)
  • 收藏
  • 关注

原创 面试官,不要再问我三次握手和四次挥手

三次握手和四次挥手是各个公司常见的考点,也具有一定的水平区分度,也被一些面试官作为热身题。很多小伙伴说这个问题刚开始回答的挺好,但是后面越回答越冒冷汗,最后就歇菜了。见过比较典型的面试场景是这样的:面试官:请介绍下三次握手求职者:第一次握手就是客户端给服务器端发送一个报文,第二次就是服务器收到报文之后,会应答一个报文给客户端,第三次握手就是客户端收到报文后再给服务器发送一个报文,三次握手就...

2019-10-08 09:56:12 367895 419

原创 程序猿菜鸟打怪升级—一路火花带闪电

各位小伙伴,大家好!我是猿人谷,一名搬砖老菜鸟。蓦然回首这几年的打怪升级历程,不再是之前的年轻气盛,也没有百感交集,内心却像湖面躺着那株莲花一般,平静,荡不起半点涟漪。总结从事搬砖行业的这几年,感觉就是:平台白发银披风,一生都在征战中。初入行时,真的连菜鸟都算不上,顶多是只菜虫。当时听到什么c++,Objective-c,大数据,神经网络。。。。。。真的明白自己就两件事不会:这也不会,那也不会。...

2019-09-16 10:25:40 8345 47

转载 Code Review 是一场苦涩但有意思的修行

来源:阿里巴巴中间件作者:孤尽前言最近 CodeReview(以下简称CR )心态相当的平和,代码是一个讲道理的东西,是就是,否就否。在 CR 时,沟通特别轻松,问题讨论也特别聚焦,因为它是量化和定向的。CR 的过程不是恃强凌弱,也不是一言堂,大家看着代码,当作是一种灵魂的交流,那么每一次的 CR 也是同事间提升和谐度的一种方式。优良的 CR 传统可以体现团队温度,体现高年级同学传帮带的技术文化。平时,大家抬头看 PRD ,低头写代码,很少有时间静心气闲地交流一下业务流程、业务逻辑、业务未来扩展,.

2020-12-07 16:17:18 504

转载 Redis为什么变慢了?常见延迟问题定位与分析

推荐好友的一篇文章,介绍的非常到位!!!作者:Kaito来源:http://kaito-kidd.com/2020/07/03/redis-latency-analysis/Redis作为内存数据库,拥有非常高的性能,单个实例的QPS能够达到10W左右。但我们在使用Redis时,经常时不时会出现访问延迟很大的情况,如果你不知道Redis的内部实现原理,在排查问题时就会一头雾水。很多时候,Redis出现访问延迟变大,都与我们的使用不当或运维不合理导致的。这篇文章我们就来分析一下Redis在使用过.

2020-08-14 17:35:16 2340

转载 告别空指针,优雅的处理空值

来源:https://lrwinx.github.io/导语在笔者几年的开发经验中,经常看到项目中存在到处空值判断的情况,这些判断,会让人觉得摸不这头绪,它的出现很有可能和当前的业务逻辑并没有关系。但它会让你很头疼。有时候,更可怕的是系统因为这些空值的情况,会抛出空指针异常,导致业务系统发生问题。此篇文章,我总结了几种关于空值的处理手法,希望对读者有帮助。业务中的空值场景存在一个UserSearchService用来提供用户查询的功能:public interface UserSearchS

2020-07-10 11:33:56 707

原创 别总说CMS、G1,该聊聊ZGC了

在开始介绍前,我们可以剧透几点:根据不同分代的特点,收集器可能不同。有些收集器可以同时用于新生代和老年代,而有些时候,则需要分别为新生代或老年代选用合适的收集器。一般来说,新生代收集器的收集频率较高,应选用性能高效的收集器;而老年代收集器收集次数相对较少,对空间较为敏感,应当避免选择基于复制算法的收集器。在垃圾收集执行的时刻,应用程序需要暂停运行。可以串行收集,也可以并行收集。如果能做到...

2020-04-20 15:43:09 2187

原创 【黑魔法】Covering Indexes、STRAIGHT_JOIN

今天给大家介绍两个黑魔法,这都是压箱底的法宝。大家在使用时,一定要弄清他们的适用场景及用法,用好了,就是一把开天斧,用不好那就是画蛇添足。自从看过耗子哥(左耳朵耗子)的博客,都会给对相应专题有兴趣的小伙伴列出几篇拓展文章,我觉得这种方式还是非常不错,所以这篇文章我也会列出几篇扩展的文章,供想更深入思考的小伙伴查阅。可能有人会认为这两个用法会比较冷门,但是在跨系统调用api的过程中,表的数据量比较...

2020-03-17 15:43:21 365

转载 synchronized、Lock、ReentrantLock介绍

来源: http://www.cnblogs.com/dolphin0520/p/3923167.html一.synchronized的缺陷synchronized是java中的一个关键字,也就是说是java语言内置的特性。那么为什么会出现Lock呢?如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,等待获取锁的线程释放锁,...

2020-03-11 15:40:25 507

转载 通过jstack与jmap分析一次线上故障

来源:https://www.cnblogs.com/kingszelda/p/9034191.html一、发现问题下面是线上机器的cpu使用率,可以看到从4月8日开始,随着时间cpu使用率在逐步增高,最终使用率达到100%导致线上服务不可用,后面重启了机器后恢复。二、排查思路简单分析下可能出问题的地方,分为5个方向:系统本身代码问题内部下游系统的问题导致的雪崩效应上游系统调...

2020-03-05 11:08:51 4407

原创 内存泄漏与内存溢出

不管哪种编程语言的内存分配方式,都需要返回所分配内存的真实地址,也就是返回一个指针到内存块的首地址。java中对象可以采用new或反射或clone或反序列化的方法创建,这些对象的创建都是在堆(Heap)中分配的,所有对象的回收都是由java虚拟机通过垃圾回收机制完成的。GC为了能够正确释放对象,会监控每个对象的运行状况,对他们的申请、引用、被引用、赋值等状况进行监控,java会使用有向图的方法来管...

2020-02-26 14:58:57 677

原创 【ZooKeeper系列】3.ZooKeeper源码环境搭建及源码解读

前文阅读:【ZooKeeper系列】1.ZooKeeper单机版、伪集群和集群环境搭建【ZooKeeper系列】2.用Java实现ZooKeeper API的调用在系列的前两篇文章中,我们介绍了ZooKeeper环境的搭建(包括单机版、伪集群和集群),对创建、删除、修改节点等通过命令行的方式进行测试,让大家对ZooKeeper的环境搭建及常用命令行有了初步的认识,也为搭建ZooKeeper的...

2019-12-31 12:47:11 1173

转载 JAVA设计模式之单例模式

文章目录1 懒汉式单例1.1 在getInstance方法上加同步1.2 双重检查锁定1.3 静态内部类2 饿汉式单例3 登记式单例(可忽略)4 饿汉式和懒汉式区别从名字上来说,饿汉和懒汉:另外从以下两点再区分以下这两种方式:懒汉式中的1.1,1.2,1.3实现有什么区别:什么是线程安全?5 应用转自:https://blog.csdn.net/jason0539/article/detail...

2019-12-19 14:27:44 563

原创 【ZooKeeper系列】2.用Java实现ZooKeeper API的调用

zookeeper apiAPI客户端异常:org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /zk_demo 。完整的报错信息如下:09:33:52.139 [main-SendThread(106.12.111.172:2181)] DEBUG...

2019-12-17 14:36:54 1365

原创 【Apollo系列】1.Apollo本地运行环境搭建

文章目录1 环境搭建1.1 本地运行环境1.2 导入数据库信息1.2.1 创建ApolloPortalDB1.2.2 创建ApolloConfigDB2 本地启动2.1 Apollo Config Service和Apollo Admin Service2.1.1 新建运行配置2.1.2 配置Application2.2 Apollo-Portal参考Apollo官方文档的介绍其实已经很详细,...

2019-12-13 16:36:05 2779

原创 【ZooKeeper系列】1.ZooKeeper单机版、伪集群和集群环境搭建

1 单机版(Standalone模式)安装ZooKeeper官网下载地址:http://zookeeper.apache.org/releases.html#download如图所示进行操作:注意一点,如果不想当小白鼠,请务必下稳定版(stable release),非稳定版安装时可能出各种未知的异常。以3.4.14版本为例进行安装,之前写一些软件的安装教程时,有人留言说希望把安装的步...

2019-12-06 11:52:56 949

原创 获取对象属性类型、属性名称、属性值的研究:反射和JEXL解析引擎

先简单介绍下反射的概念:java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。反射是java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以在运行时装配。在实际的业务中,可能会动态根据属性去获取值。工具类如下:package com...

2019-11-28 16:49:40 787

原创 Integer和Integer比较以及Integer和Int的比较分析

发现做项目的过程中,在数值类型的比较上容易犯错,特别是Integer和Integer的比较,Integer和int的比较。虽然这些都是些基础语法,但稍不留意就容易犯错,在实际开发过程中如果出现这类失误,很容易失之毫厘谬以千里。在这里,总结下这些基础知识点。java虽然宣称一切都是对象,但原始数据类型是例外。int是整形数字,是java的9个原始数据类型(Primitive Types)(bool...

2019-11-22 14:57:50 2753 5

原创 HashMap在Jdk1.7和1.8中的实现

Java集合类的源码是深入学习Java非常好的素材,源码里很多优雅的写法和思路,会让人叹为观止。HashMap的源码尤为经典,是非常值得去深入研究的,jdk1.8中HashMap发生了比较大的变化,这方面的东西也是各个公司高频的考点。网上也有很多应对面试的标准答案,我之前也写过类似的面试技巧(,应付一般的面试应该是够了,但个人觉得这还是远远不够,毕竟我们不能只苟且于得到offer,更应去勇敢的追求...

2019-11-21 18:01:30 1301

原创 性能对比:Count(字段)、Count(主键)、Count(1)、Count(*)

说明:此篇文章的内容绝大部分来源于《极客时间》专栏。以下讨论是基于InnoDB引擎。至于分析性能差别的时候,可以记住以下几个原则:server层要什么就给什么InnoDB只给必要的值现在的优化器只优化了count(*)的语义为“取行数”,其它“显而易见”的优化并没有做。接下来,我们一个个来进行分析。对于count(主键id)来说,InnoDB引擎会遍历整张表,把每一行的id值都...

2019-10-25 15:40:11 724

原创 Mysql中Left Join、Right Join、Inner Join的区别

left join(左联接) :返回包括左表中的所有记录和右表中联结字段相等的记录right join(右联接) :返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接): 只返回两个表中联结字段相等的行举例如下:表A记录如下:aID     aNum1     a200501112     a200501123     a200501134   ...

2019-10-18 16:16:53 2990 11

原创 【面试必备】小伙伴栽在了JVM的内存分配策略。。。

周末有小伙伴留言说上周面试时被问到内存分配策略的问题,但回答的不够理想,小伙伴说之前公号里看过这一块的文章的,当时看时很清楚,也知道各个策略是干嘛的,但面试时脑子里清楚,心里很明白,但嘴里就是说不清楚,说出来的就是像云像雾又像风,最后面试官说他应该是不清楚这一块的内容这里给小伙伴要再次说明下,任何知识点,先抓主干,再摸细节。对于面试来说,能把各个主干捋清楚,只要面试官要求不是太高,都是能过...

2019-09-23 10:46:35 6141 4

原创 JDK13都出了,你还再玩勺子把(jdk1.7)?

JDK13发布了,你知道吗?官方是这么描述的:带来了5个新特性:350: Dynamic CDS Archives351: ZGC: Uncommit Unused Me...

2019-09-18 16:47:41 1877 8

原创 【不做标题党】创建对象及对象的访问定位

《JVM从小白学成大佬》系列推出到现在,收到了很多小伙伴的好评,也收到了一些小伙伴的建议,在此表示感谢。有几个小伙伴提出了希望出一篇介绍对象的创建及访问,猿人谷向来是没有...

2019-09-11 09:59:22 574

原创 【JVM从小白学成大佬】6.创建对象及对象的访问定位

《JVM从小白学成大佬》系列推出到现在,收到了很多小伙伴的好评,也收到了一些小伙伴的建议,在此表示感谢。有几个小伙伴提出了希望出一篇介绍对象的创建及访问,猿人谷向来是没有原则的,小伙们要求啥,咱就尽力满足,毕竟文章就是对自己学习的一个总结及和各位小伙伴交流学习的机会。话不多说,直接开撸!1 创建对象在Java程序运行过程中无时无刻都有对象被创建出来,java中对象可以采用new或反射或clo...

2019-09-04 11:31:01 1566

原创 【JVM从小白学成大佬】3.深入解析强引用、软引用、弱引用、幻象引用

关于强引用、软引用、弱引用、幻象引用的区别,在很多公司的面试题中经常出现,可能有些小伙伴觉得这个知识点比较冷门,但其实大家在开发中经常用到,如new一个对象的时候就是强引用的应用。在java语言中,除了原始数据类型(boolean、byte、short、char、int、float、double、long)的变量,其他所有都是所谓的引用类型,指向各种不同的对象。理解这些引用的区别,对于掌握jav...

2019-09-03 15:04:08 688

转载 有了这篇Dubbo RPC面试题,让天下没有难的面试题!

RPC非常重要,很多人面试的时候都挂在了这个地方!你要是还不懂RPC是什么?他的基本原理是什么?你一定要把下边的内容记起来!好好研究一下!特别是文中给出的一张关于RPC的...

2019-09-03 10:36:54 623

原创 【JVM从小白学成大佬】5.垃圾收集器及内存分配策略

前面介绍了垃圾回收算法,接下来我们介绍垃圾收集器和内存分配的策略。有没有一种牛逼的收集器像银弹一样适配所有场景?很明显,不可能有,不然我也没必要单独搞一篇文章来介绍垃圾收集器了。熟悉不同收集器的优缺点,在实际的场景中灵活运用,才是王道。在开始介绍垃圾收集器前,我们可以剧透几点:根据不同分代的特点,收集器可能不同。有些收集器可以同时用于新生代和老年代,而有些时候,则需要分别为新生代或老年代选用...

2019-08-29 09:57:49 937

原创 【JVM从小白学成大佬】4.Java虚拟机何谓垃圾及垃圾回收算法

在Java中内存是由虚拟机自动管理的,虚拟机在内存中划出一片区域,作为满足程序内存分配请求的空间。内存的创建仍然是由程序猿来显示指定的,但是对象的释放却对程序猿是透明的。就是解放了程序猿手动回收内存的工作,交给垃圾回收器来自动回收。在虚拟机中,释放哪些不再被使用的对象所占空间的过程称为垃圾收集(Garbage Collection,GC)。负责垃圾收集的程序模块,成为垃圾收集器(Garbage...

2019-08-26 10:02:10 950

转载 【大厂精品】Java 函数优雅之道

Photo @mariascrivan.com文|陈昌毅导读随着软件项目代码的日积月累,系统维护成本变得越来越高,是所有软件团队面临的共同问题。持续地优化代码,提高代...

2019-08-23 09:35:28 597

原创 深入浅出Mysql索引的那些事儿

文章目录一.索引的作用二.索引的创建、删除(1)使用ALTER TABLE语句创建索性(2)使用CREATE INDEX语句对表增加索引(3)删除索引(4) 组合索引与前缀索引三.索引的使用及注意事项使用索引时,有一些技巧一.索引的作用一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,所以查询语句的优化...

2019-08-22 10:45:33 658

原创 Mysql字符串截取总结:Left()、Right()、Substring()、Substring_index()

在实际的项目开发中有时会有对数据库某字段截取部分的需求,这种场景有时直接通过数据库操作来实现比通过代码实现要更方便快捷些,mysql有很多字符串函数可以用来处理这些需求,如Mysql字符串截取总结:left()、right()、substring()、substring_index()。一.从左开始截取字符串用法:left(str, length),即:left(被截取字符串, 截取长度)...

2019-08-21 17:53:52 2280

原创 【JVM从小白学成大佬】1.开篇

JVM的重要性毋庸置疑,可以毫不夸张的说Java虚拟机是整个Java平台的基石。 JVM方面的知识,也一直是BAT等大厂面试考核的重点。特别是JVM调优,故障排查性能调优,你知道该从哪些方面入手吗?此专栏结合自己对JVM的理解,从java运行时数据区、java内存模型(JMM)、什么是垃圾回收,垃圾回收算法、垃圾收集器、内存分配与回收策略等,也会介绍安全点、安全区域等知识点,还有什么是“卡带”?...

2019-08-19 10:49:48 917

原创 【JVM从小白学成大佬】2.Java虚拟机运行时数据区

目录1.运行时数据区介绍2.堆(Heap)是否可能有两个对象共用一段内存的事故?3.方法区(Method Area)4.程序计数器(Program Counter Register)5.虚拟机栈(VM Stack)6.本地方法栈(Native Method Stack)7.扩展知识点7.1 栈上分配和逃逸分析7.2 栈帧7.3 Java对象是不是都创建在...

2019-08-19 10:42:50 1031 4

原创 JVM从小白学成大佬

Java虚拟机的重要性毋庸置疑,可以毫不夸张的说Java虚拟机是整个Java平台的基石。JVM方面的知识,也一直是BAT等大厂面试考核的重点。特别是JVM调优,故障排查性...

2019-08-18 12:31:05 640

转载 【面试必备】怎么保证缓存与数据库的双写一致性?

作者:你是我的海啸来源:https://blog.csdn.net/chang384915878/article/details/86756463面试题如何保证缓存与数...

2019-08-13 15:00:19 569

转载 网易云音乐的消息队列改造之路

图片源自网络十年文案老司机,不如网易评论区。网易云音乐自2013年上线后,业务保持了高速增长。云音乐除了提供好听的音乐外,还留下了我们在乐和人上的美好回忆。本文整理自网易...

2019-08-04 09:10:03 542

原创 Lombok介绍、使用方法和总结

Lombok介绍、使用方法和总结

2019-08-01 14:38:29 976

转载 有赞零售财务中台架构设计与实践

文 | 汤师爷 on 零售一、背景传统模式下,企业的经营活动会产生大量的业务数据。财务人员需要根据业务数据,进行会计核算,并输出财务数据。通过这些财务数据,企业可以进行财...

2019-08-01 12:59:17 924

转载 头一回见!提升10倍效率,阿里给业务校验平台插上了AI的翅膀

@Franki Chamaki摘要:实时业务校验平台作为阿里集团老牌的业务审计系统,覆盖了集团绝大部分的业务对账场景,在线上问题及时发现以及减少集团资损上发挥着巨大作用,...

2019-07-30 17:01:14 979

转载 面试 | MySQL 中 InnoDB 和 MyISAM 的联系与区别

很多同学在面试中会被问到数据库的问题,而常被问到的一个问题就是:MySQL 中的 InnoDB 和 MyISAM 之间是什么关系,分别有什么特点?许多同学都把 MySQL...

2019-07-26 11:09:03 804

空空如也

空空如也

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

TA关注的人

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