8 何勇刚

钱大妈农产品有限公司 - 高级软件工程师

我要认证

【欢迎关注微信公众号:猿人谷】技术成长没有捷径,唯有积累。没有啥大佬,代码写多了,坑踩多了,想多了,写代码自然就顺手了。

等级
TA的排名 9k+

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

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

2020-07-10 11:33:56

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

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

2020-04-20 15:43:09

【黑魔法】Covering Indexes、STRAIGHT_JOIN

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

2020-03-17 15:43:21

synchronized、Lock、ReentrantLock介绍

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

2020-03-11 15:40:25

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

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

2020-03-05 11:08:51

内存泄漏与内存溢出

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

2020-02-26 14:58:57

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

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

2019-12-31 12:47:11

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

【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

【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

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

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

2019-12-06 11:52:56

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

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

2019-11-28 16:49:40

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

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

2019-11-22 14:57:50

HashMap在Jdk1.7和1.8中的实现

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

2019-11-21 18:01:30

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

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

2019-10-25 15:33:06

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

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

2019-10-18 16:16:34

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

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

2019-10-08 09:55:58

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

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

2019-09-23 10:46:35

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

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

2019-09-18 16:47:41

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

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

2019-09-16 10:24:55

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证(专家版)
    技术圈认证(专家版)
    博客专家完成年度认证,即可获得
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。