自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序新视界

每一步成长都与你分享。公众号:程序新视界

  • 博客(942)
  • 资源 (11)
  • 问答 (4)
  • 收藏
  • 关注

原创 @PostConstruct注解是Spring提供的?今天讲点不一样的

前言我们在讲《Spring的Lifecycle》时提到,在Spring的使用中可以通过Lifecycle接口实现一些基于Spring容器生命周期逻辑。与此对照的就是通过@PostConstruct和@PreDestroy在Bean初始化或销毁时执行一些操作。很明显Spring的Lifecycle是基于容器的生命周期来处理逻辑,而@PostConstruct和@PreDestroy是基于Bean的生命周期来处理业务逻辑。这里很多朋友就产生了一个误解,以为@PostConstruct注解也是Spring提

2021-06-01 06:50:36 1081

原创 再聊面试,这次关于钱,关于培训,关于内卷

前言上周写了一篇《筛选了几百份简历,明白了为什么大厂要设学历门槛了》,讲的是关于面试简历筛选与面试者真实经验判断。没想到这篇文章在CSDN和掘金上获得了不少的阅读、点赞、评论和收藏。今天这篇继续来聊聊跟大家关系更紧密的,关于薪资、关于培训机构、关于内卷的一些看法。故事从那位哽咽者开始故事从远程面试一位简历包装的面试者开始。有一次面试一个姑娘,连续问了两个项目实现逻辑的问题,对方因为答不上来,说话都开始哽咽了。于是赶紧问了一个简单的问题,缓解对方情绪,快速结束面试。经过这件事之后,对面试者的情绪真是

2021-05-29 16:44:07 451 4

原创 Spring的Lifecycle和SmartLifecycle,可以没用过,但不能不知道!

前言在使用Spring的过程中,我们通常会用@PostConstruct和@PreDestroy在Bean初始化或销毁时执行一些操作,这些操作属于Bean声明周期级别的。那么,就存在一些遗漏的场景,比如我们想在容器本身的生命周期(比如容器启动、停止)的事件上做一些工作,很典型的就是Spring Boot中启动内嵌的Web容器。该怎么办?这就需要用到Spring提供的另外一个接口Lifecycle。这篇文件就介绍一下Lifecycle接口,以及比它更聪明(Smart)的SmartLifecycle。L

2021-05-27 21:39:27 2670 1

原创 一个实例,轻松演示Spring Cloud集成Nacos实例

前言学习一个技术框架,最快速的手段就是将其集成到项目中,体验一下它的功能。在这个过程中,你还踩到很多坑。而排坑的过程,又是一次能力的提升。前面我们写了一些列Nacos的文章,经过《学习Nacos?咱先把服务搞起来,实战教程》的介绍,我们已经可以把Nacos Server给启动起来了。这篇文章,我们就来学习一下如何将Nacos集成到Spring Cloud项目中,同时实例演示一下,基于Nacos的微服务之间的两种调用形式。集成与版本为了演示这个案例,大家首先要将Nacos Server跑起来。同时会

2021-05-25 06:34:05 1451

原创 筛选了几百份简历,明白了为什么大厂要设学历门槛了

最近一直在为公司招聘前端工程师,前前后后筛选了几百份简历,面试了大几十人,这过程中也发生了很多奇特的事情。渐渐明白,为什么大厂招聘时会在学历上设置门槛。这篇文章就给大家聊聊,从筛选简历到最终面试中发生的一些故事,很奇葩也很有意思。文章中涉的事大多与培训机构的速成与简历包装有关。关于培训机构的一些看法在开始之前,先声明一下自己对培训机构的看法。培训机构可以让刚出校门的学子快速学习到进入职场应该具备的基本技术,在这一方面它的作用不可否认。大多数大牛也都是从培训机构出来的。但从另外一方面来说,培训机构为了

2021-05-22 21:23:48 5664 31

原创 学习Nacos?咱先把服务搞起来,实战教程~

前言前面已经写不少Nacos相关的文章了,比如《Spring Cloud集成Nacos服务发现源码解析?翻了三套源码,保质保鲜!》,而且目前也计划写一个Spring Cloud的技术解析专栏,一个技术框架一个技术框架的为大家拆解分析原理和实现。既然拿Nacos作为一个开始,那么我们这篇文章就来补充一下Nacos Server的部署以及Nacos Client的调用,直观的了解一下Nacos都包含了什么功能。这是使用Nacos的基础,也是后续进行深度剖析的依据。强烈建议一起学习一下。Nacos Serv

2021-05-21 06:19:46 775 8

原创 Spring Cloud集成Nacos服务发现源码解析?翻了三套源码,保质保鲜!

前面文章我们介绍了Nacos的功能及设计架构,这篇文章就以Nacos提供的服务注册功能为主线,来讲解Nacos的客户端是如何在Spring Cloud进行集成和实现的。本会配合源码分析、流程图整理、核心API解析等维度来让大家深入浅出、系统的来学习。Spring Boot的自动注册故事要从头Spring Boot的自动注入开始。很多朋友大概都了解过Spring Boot的自动配置功能,而Spring Cloud又是基于Spring Boot框架的。因此,在学习Nacos注册业务之前,我们先来回顾一下

2021-05-18 19:56:06 663 4

原创 REST API返回结果对象设计

基于REST API的项目返回的数据结构题都是统一的,这样方便接口对接和使用。因此,对结果对象的设计会有一定的要求:一个结果对象要能够同时支持成功和失败的数据结构;要能够处理多种类的返回结果对象;能够很轻易的判断出结果是成功还是失败;能够存储错误编码和错误信息;下面就基于Spring Boot项目来设计一下对应的统一结果返回对象。这里定义对应的类为ApiResponse:import com.fasterxml.jackson.annotation.JsonCreator;import c

2021-05-13 09:40:45 1094 3

原创 String拼接出现null?你看到的分析可是错的

前言String类型真是个神奇的存在,动不动就会出现一些迷惑人的错误。今天看到一篇文中提到当String的值为null时,进行字符串相加拼接,会出现把null当做字符串拼接的现象。比如下面这段代码:String s = null;s = s + "hello";System.out.println(s + " world");你预期的结果可能是“hello world”,但实际的结果是“nullhello world”,神奇吧。其实这倒没什么,实践一下就可以看到结果。但当你好奇心作祟,在网上

2021-05-12 09:16:06 6397 5

原创 你也对阅读源码感兴趣,说说我是如何阅读Nacos源码的

前言最近写了一些列的Nacos源码相关文章,很多朋友都感兴趣的在问:你最近在阅读什么源码,如何阅读源码?今天这篇文章就以Nacos源码阅读来展开聊聊。对阅读源码或技术感兴趣的朋友,也可以添加微信交流(微信号:zhuan2quan)。在读这篇文章的时候呢,要看你想获得什么了。因为这篇文章亦是在写如何阅读Nacos源码,也是在写如何阅读源码。不要被技术栈所束缚,要提炼属于自己的方法。看你所欲,取你所需。阅读源码的目的不清楚大家为什么要阅读源码,就聊聊个人阅读源码的目的,或许可以拿来借鉴。学习底层原理与

2021-05-11 09:25:24 640 1

原创 Nacos中已经有Optional使用案例了,是时候慎重对待这一语法了

前言Java 8提供了很多新特性,但很多朋友对此并不重视,依旧采用老的写法。最近个人在大量阅读开源框架的源码,发现Java 8的很多API已经被频繁的使用了。以Nacos框架为例,已经有很典型的Optional使用案例了,而且场景把握的非常好。如果此时你还没意识到要学习了解一下,以后看源代码可能都有些费劲了。今天这篇文章我们就基于Nacos中对Optional的使用作为案例,来深入讲解一下Optional的使用。老规矩,源码、案例、实战,一样不少。Nacos中的Optional使用在Nacos中有

2021-05-10 06:52:56 5196 3

原创 要学习微服务的服务发现?先来了解一些科普知识吧

为什么要使用服务发现功能?当调用REST API 或Thrift API的服务时,我们在构建请求时通常需要知道服务实例的IP和端口。在传统应用中,服务实例的地址信息相对固定,可以从配置文件中读取。而这些地址也只是只会偶尔更新。但在现代应用程序中,往往是基于云的微服务架构,此时获取服务实例的IP和端口便是一个需要解决的难题。如下图所示:上图中,服务实例实例的IP是动态分配。同时,还面临着服务的增减、故障以及升级等变化。这对于客户端程序来说,就需要使用更精确的服务发现机制。目前,服务发现模式主要有两种

2021-05-09 11:05:05 517 2

原创 微服务的灵魂摆渡者——Nacos,来一篇原理全攻略

前言Nacos在微服务系统的服务注册和发现领域,势头迅猛是肉眼可见的。在微服务系统中,服务的注册和发现又是一个灵魂的存在。没有注册中心的存在,成百上千服务之间的调用复杂度不可想象。如果你计划或已经在使用Nacos了,但仅停留在使用层面,那这篇文章值得你一读。本文我们先从服务发现机制说起,然后讲解Nacos的基本介绍、实现原理、架构等,真正做到深入浅出的了解Nacos。服务注册与发现说起Nacos,不得不先聊聊微服务架构中的服务发现。关于服务发现其实已经在《要学习微服务的服务发现?先来了解一些科普知

2021-05-09 10:42:44 4553

原创 SpringBoot集成Swagger3,还想来份离线文档?真酷炫

前言随着项目架构的演化,前后端分离是不可阻挡的趋势。这种模式的协作在实践的过程中经常会遇到的一个问题就是文档。在《一位CTO告诉我,项目中至少需要这3类文档》一文我们已经描述了文档的重要性,而接口文档便是其中之一,可以说是必不可少的。但编写接口文档对开发人员来说是一大难题,而且接口还在不断的变化,还要花费精力去维护接口文档的更新。既然存在痛点,那么必须会出现解决此痛点的产品,这就是Swagger,目前已经更新到Swagger3版本了。如果你还停留在Swagger2,建议升级到Swagger3,整体U

2021-05-08 19:17:58 900

原创 String最大长度是多少?涉及知识面太多,不要错过!

前言当你看到这个问题“String长度限制是多少”时是不是感觉很无聊?的确,这就是我第一眼看到时的感觉。但当深入追踪该问题时,才发现String的长度限制本身的意义并不重要,重要的是在此过程中会将大量知识点串联起来,简直是一个完美的问题。难怪在高阶段的面试中会出现类似的问题。本篇文章就来带大家追寻String长度的限制,需要提醒读者的是,结论并不重要,重要的是分析的过程,以及涉及到的知识储备。比如,String的底层实现、int类型的范围、《Java虚拟机规范》、Java编译器源码实现等大量知识点。

2021-05-07 09:20:46 9099 3

原创 你给HashMap初始化了容量,却让性能变加更糟?

前言项目中,看到大家已经意识到初始化HashMap时给Map指定初始容量大小,甚是欣慰。但仔细一看,发现事情好像又有一些不对头。虽然指定了大小,却让性能变得更加糟糕了。可能你也是如此,看了《阿里巴巴Java开发手册》感觉学到了很多,于是在实践中开始尝试给Map指定初始大小,并感觉自己写的代码高大上了一些。的确,当你意识到指定初始化值时,已经比普通人更进了一步,但是如果这个值指定的不好,程序的性能反而不如默认值。这篇文章就来从头到尾分析一下,读者多注意分析的方法和底层的原理实现。阿里开发规范我们先

2021-05-05 08:55:52 5585 5

原创 一位CTO告诉我,项目中至少需要这3类文档

前言在项目管理中,不可避免的会涉及到技术文档。当讨论文档时往往会纠结于“要”还是“不要”这种是非选择中。而忽略了,如何最小化技术文档的同时,又能体现出文档的价值。看到了一位CTO写的文章,才发现,我们讨论的出发点可能就错了。在我们习以为常当中,很多项目已经为我们展示了文档的魅力。为了让开发人员快速的了解一个项目,帮助新加入者快速接手,项目中通常需要提供这三类文档:README文档、架构文档和API文档。下面逐一展开聊聊它们通常包含哪些内容。README文档看看GitHub上的开源项目,基于上都包含

2021-05-05 08:39:18 1024 6

原创 Spring Boot集成Druid异常discard long time none received connection.

Spring Boot集成Druid异常在Spring Boot集成Druid项目中,发现错误日志中频繁的出现如下错误信息:discard long time none received connection. , jdbcUrl : jdbc:mysql://******?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8, version : 1.2.3, last

2021-04-29 07:12:10 6378

原创 Nacos源码中为什么使用了String.intern方法?

前言面试的时候经常被问到String的intern方法的调用及内存结构发生的变化。但在实际生产中真正用到过了吗,看到过别人如何使用了吗?最近阅读Nacos的源码,还真看到代码中使用String类的intern方法,NamingUtils类中有这样一个方法: public static String getGroupedName(final String serviceName, final String groupName) { // ...省略参数校验部分 final String

2021-04-28 07:16:03 484

原创 ThreadLocal全攻略:使用实战,源码分析,内存泄露分析

前言说起ThreadLocal即便你没有直接用到过,它也间接的出现在你使用过的框架里,比如Spring的事物管理,Hibernate的Session管理、logback(和log4j)中的MDC功能实现等。而在项目开发中,比如用到的一些分页功能的实现往往也会借助于ThreadLocal。正是因为ThreadLocal的无处不在,所以在面试的时候也经常会被问到它的实现原理、核心API使用以及内存泄露的问题。而且基于这些问题还可以拓展到线程安全方面、JVM内存管理与分析、Hash算法等等知识点。可见Thr

2021-04-24 08:33:27 1070 3

原创 来来来,聊聊7种内存泄露场景和13种解决方案

前言Java通过垃圾回收机制,可以自动的管理内存,这对开发人员来说是多么美好的事啊。但垃圾回收器并不是万能的,它能够处理大部分场景下的内存清理、内存泄露以及内存优化。但它也并不是万能的。不然,我们在实践的过程中也不会出现那么多因内存泄露导致的生产事件了。但很多内存泄露时间也是因为开发人员使用不当导致的。本篇文章我们就来聊聊内存泄露的原因是什么,如何识别内存泄露,以及如果在应用程序中进行处理。什么是内存泄露什么是内存泄露,通俗的来说就是堆中的一些对象已经不会再被使用了,但垃圾收集器却无法将它们从内存

2021-04-22 07:51:14 1629 5

原创 通过这一篇文章,可以把Java中的类加载器了解的七七八八了

对于每个开发人员来说,java.lang.ClassNotFoundExcetpion这个异常几乎都遇到过,而追求其该异常的来源的话,就免不了谈一谈Java的类加载器了。本文就基于启动类加载器、扩展类加载器、系统类加载器和自定义类加载器来为大家补充一下这方面的知识。类加载器简介Java程序被编译器编译之后成为字节码文件(.class文件),当程序需要某个类时,虚拟机便会将对应的class文件进行加载,创建出对应的Class对象。而这个将class文件加载到虚拟机内存的过程,便是类加载。类加载器负责在

2021-04-20 07:29:22 1068 3

原创 没有监控过JVM内存的职场生涯,是不完美的

前言如果你从事Java开发多年,还没用过JVM分析工具,还没尝试着通过对JVM的dump日志来进行故障定位和性能调优,那么可以说是你职场生涯中的一大遗憾,也是一种能力的缺失。这篇文章就基于一款JDK自带的工具(VisualVM),然后编写内存溢出的案例,带大家体验一下JVM分析的入门。文中涉及到多个知识点的融合与实战经验分享,读者可留意一下。VisualVM简介VisualVM是Netbeans的profile子项目,在JDK6.0 update 7 中自带,能够监控线程,内存情况,查看方法的CPU

2021-04-17 18:20:30 1296 7

原创 基于SpringBoot实现让日志像诗一样有韵律(日志追踪)

前言在传统系统中,如果能够提供日志输出,基本上已经能够满足需求的。但一旦将系统拆分成两套及以上的系统,再加上负载均衡等,调用链路就变得复杂起来。特别是进一步向微服务方向演化,如果没有日志的合理规划、链路追踪,那么排查日志将变得异常困难。比如系统A、B、C,调用链路为A -> B -> C,如果每套服务都是双活,则调用路径有2的三次方种可能性。如果系统更多,服务更多,调用链路则会成指数增长。因此,无论是几个简单的内部服务调用,还是复杂的微服务系统,都需要通过一个机制来实现日志的链路追踪。让

2021-04-14 06:37:12 1154 2

原创 与面试官聊try-catch-finally关闭资源,你的答案还是10年前的?

有编程经验的朋友都知道,在程序运行中如果打开了一些资源,那么当发生异常或程序结束时都需要进行资源的关闭,不然会造成内存溢出的问题。曾经,关于try-catch-finally的使用也是面试题中的一个热点问题。随着JDK7的发布,情况好像有些变化了,处理资源关闭的方式更加方便了。但如果你的使用方式依旧停留在十年前,那这篇文章中讲到的知识点值得你一读。最重要的是底层原理分析部分。try-catch-finally传统处理模式在JDK7之前,我们对异常和资源关闭的处理,通常是通过下面的形式来实现的:@Te

2021-04-12 07:32:59 1038 1

原创 SpringBoot多环境配置,旧的已过时,新的有人还不知道

如果你使用Spring Boot 2.4及以上版本,你会发现Spring Boot中对多环境支持的配置项spring.profiles.active已经被废弃。而Spring Boot也一直在逐步推新的配置方式,可能很多人还不知道,本文就带大家一探究竟。Spring Boot的多环境配置在学习新的配置方式之前,先回顾一下通常的多环境配置形式。在项目中我们经常会遇到一个项目部署到多个环境,比如开发环境、测试环境、生产环境。而不同的环境又有不同的配置文件。因此,Spring Boot提供了基于spring.

2021-04-08 22:17:26 4282 4

原创 GC时对象地址变了,hashCode如何保持不变?

前言前几天跟朋友交流,引出了一篇文章《GC复制存活对象,它内存地址变了么?》,我们得知在Hotspot虚拟机下,当GC发生时,对象的地址是会发生变化的。同时我们也知道,无论何时调用同一对象的hashCode方法,都必须返回相同的值,也就是说一个对象的hashCode值要在生命周期中保持不变。同时,网传“hashCode是根据对象地址生成的”。那么,问题来了,当对象地址变化了,hashCode如何保持不变呢?HashCode的约定在继续研究之前,我们先来看一下对hashCode方法的一些约定和说明。

2021-04-07 22:22:05 1663 4

原创 GC复制存活对象,它内存地址变了么?

前些天与一位朋友技术交流,朋友在招人面试时想到一个问题,JVM垃圾回收时,会复制存活的对象到不同的区域。比如从新生代复制到老年代,在此过程中,被复制的对象的地址是否变了呢?对他提出的这个问题很感兴趣,深入研究了一下,便有了这篇文章。更新引用是JVM的职责任何一款JVM的设计,采用任何一种GC算法进行对象的移动操作时,如何更新对象引用都是JVM的基本职责。也就是说,当移动对象时,必然会涉及到对象引用的变更,只不过这部分操作JVM已经帮我们做了。作为开发者来说,可以将引用理解为存储对象的抽象句柄,而不必担

2021-04-07 06:19:49 7914 2

原创 启动Spring Boot时,如果不设置内存参数会如何?

最近正在进行从Spring Boot往Spring Cloud上改造升级。之前部署的应用程序比较少,还没什么问题。当Spring Cloud项目逐步新增之后,问题就爆发了,服务器内存不够用了。而现有的用户体量也没必要对服务器再次进行升级,于是就开始着手Spring Boot启动时JVM内存配置的优化。服务现状由于之前服务比较少,服务器资源充足,许多服务启动时都未添加JVM参数(遗留问题)。结果就是每个服务启动都占用了1.5G-2G的内存,有些服务的体量根本用不了这么多。那么,在Spring Boot中如

2021-04-01 21:50:38 2469

原创 Mac下安装多个版本的JDK并随意切换

最近在学习JDK9的一些新特性,但是日常使用基本上都是基于JDK8,因此,需要在Mac环境下安装多个版本的JDK,并且确保能够随意切换。JDK9下载JDK9下载地址:https://www.oracle.com/java/technologies/javase/javase9-archive-downloads.html选择MAC的dmg:勾选同意协议,并登录账号进行下载。安装直接点击对应的dmg,即可进行安装。此时在/Library/Java/JavaVirtualMachines目录下

2021-03-28 16:55:31 18001 4

原创 大佬也hashcode方法上翻船了,不小心秀了一把!

前些天写了几篇面试题的文章,其中包括《重写equals方法为什么通常会重写hashcode方法?》,有朋友可能会说,这类面试题都是“面试造火箭,工作拧螺丝”。不可否认,有些面试题的确如此。但就在今天,因为懂了这篇文章中的知识竟然在大佬面前秀了一把,帮大佬解决了疑问,还换来了一个赶明儿请吃饭的“口头支票”,哈哈~~下面就来聊聊大佬遇到的奇怪问题以及排查解决过程。大佬的疑惑大佬在项目中写了类似这样的一段代码:List<ProjectId> list = new ArrayList<&

2021-03-25 06:20:37 517

原创 面试题:将字符串反转的8种方法,你能想到几种?

面试中,经常会遇到这样的问题,给定字符串“abc123”,你能够想到几种方式将该字符串进行反转,得到“321cba”?本文就带大家展示几种常见的字符串反转的方法。准备知识在学习字符串反转的方法之前,先了解几个背景知识点:String类被final修饰,是不可变的;String类并未提供reverse()方法,但StringBuilder/StringBuffer提供了reverse()方法;StringBuilder没有toCharArray()方法,但String有toCharArray()

2021-03-20 20:58:46 9403 9

原创 面试题:重写equals方法为什么通常会重写hashcode方法?

最近在面试的时候,当问完了HashMap的数据结构之后,通常会再多问一个问题,就是:重写equals方法时通常为什么也要重写一下hashcode方法?其实这个问题,本质上又回到HashMap的应用场景了,就是想看一下面试者是否真的融会贯通。今天这篇文章就带大家了解一下equals方法和hashcode方法之间的关系,以及相关的知识点。equals与hashcode的存在其实每个类都有一个equals方法和hashcode方法。因为所有的类都继承自Object类。Object类中定义如下:public

2021-03-19 06:56:28 976

原创 架构01-什么是反向代理,什么又是正向代理?

说起Nginx,我们都知道它可以用来做反向代理。那么,到底什么是反向代理,对应的正向代理又是什么呢?这篇文章就带大家来了解一下。其中反向代理也是系统架构的重要组成部分。说起代理其本质上可以理解为中介。当A和B不方便进行交互时,往往会引入一个中间角色C,那么C便是中介,便是代理。正向代理正向代理服务器通常位于客户端和服务器之间,类似一个跳板机,通过代理服务器可以访问到目标服务器。正向代理时,通常,客户端发送对目标服务器的请求,代理服务器在中间将请求转发给目标服务器,并将结果返回给客户端。正向代理时客

2021-03-16 21:29:17 508 2

原创 Java中的枚举,竟然有这么多不为人知的知识点

Java枚举,也称作Java枚举类型,是一种字段由一组固定常量集合组成的类型。枚举的主要目的是加强编译时类型的安全性。enum关键字是Java中的保留关键字。在编译或设计时,当我们知道所有变量的可能性时,尽量使用枚举类型。本篇文章就带大家全面系统的了解枚举的使用,以及会遇到的一些问题。Java中的枚举枚举通常是一组相关的常量集合,其他编程语言很早就开始用枚举了,比如C++。从JDK1.5起,Java也开始支持枚举类型。枚举是一种特殊的数据类型,它既是一种类(class)类型却又比类类型多了些特殊的约

2021-03-13 11:36:49 512

原创 面试题:聊聊TCP的粘包、拆包以及解决方案

TCP的粘包和拆包问题往往出现在基于TCP协议的通讯中,比如RPC框架、Netty等。如果你的简历中写了类似的技术或者你所面试的公司使用了相关的技术,被问到该面试的几率会非常高。今天这篇文章就带大家详细了解一下TCP的粘包和拆包以及解决方案。什么是粘包?在学习粘包之前,先纠正一下读音,很多视频教程中将“粘”读作“nián”。经过调研,个人更倾向于读“zhān bāo”。如果在百度百科上搜索“粘包”,对应的读音便是“zhān bāo”,语义解释为:网络技术术语。指TCP协议中,发送方发送的若干包数据到

2021-03-10 07:55:14 2395 1

原创 JDK9对String字符串的新一轮优化,不可不知

String类可以说是Java编程中使用最多的类了,如果能对String字符串的性能进行优化,那么程序的性能必然能大幅提升。这不JDK9就对String字符串进行了改进升级,在某些场景下可以让String字符串内存减少一半,进而减少JVM的GC次数。String的底层存储在面试的时候我们通常会说String字符串有不可变的特性,每次都要创建新的字符串。那么,为什么String字符串是不可变的呢?先来看一下String字符串的底层存储结构:public final class String

2021-03-08 21:54:54 18836 11

原创 再一次实战策略模式,太好用了

前言之前做三方支付系统的时候经常用到策略模式,比如用户会选择不同的支付方式,不同的支付方式又有不同的实现方法或银行接口调用。现在做物联网系统,基于MQTT协议(TCP层面的协议)来传输数据,根据不同的请求(不同的Topic)处理不同的业务逻辑,也同样用到策略模式。顿时感觉策略模式非常好用,而且结合Spring的实例化和注入功能,更加方便了。今天就聊聊基于Spring(Boot)下策略模式的使用。未使用策略模式时的处理以物联网为例大家可能不够熟悉,下面就以支付场景为例。比如在支付的过程中我们可能会

2021-03-03 09:22:27 1655

原创 Java自动拆箱空指针异常,救火队员上线

公司搬迁,临时充当装修工,提前两个小时到公司忙着拆卸设备。结果接到客户反映,某部分功能偶尔不能用。于是参与救火,与写这段代码的小伙伴一起排查原因。最终发现导致业务偶尔不能使用是由Long类型自动拆箱导致空指针异常引起的。下面就带大家分析一下Java中基础类型的包装类在拆箱和装箱过程中都做了什么,为什么会出现空指针异常,以及面试过程中会出现的相关面试题。问题重现下面通过一个简单的示例才重现一下异常出现的场景。public class BoxTest { public static void

2021-03-03 09:17:58 853 1

原创 只用这一篇Java泛型的文章,保证你面试对答如流

最近技术交流群里,有朋友问:Object和泛型T有啥区别。回答完问题,不禁在想,面试在即,还有那么多朋友不了泛型?是时候给大家整理一篇泛型相关的文章了,一篇文章全面搞定泛型,让大家再也不愁面试或实践中泛型相关的问题了。什么是泛型泛型是在JDK 5时就引入的新特性,也就是“参数化类型”,通俗来讲就是将原来的具体类型通过参数化来定义,使用或调用时再传入具体的类型(类型实参)。泛型的本质是为了参数化类型(在不创建新类型的前提下,通过泛型指定的不同类型来控制形参具体的类型)。在泛型使用过程中,操作的数据类型被

2021-02-26 06:58:08 10997 16

技术顾问协议模板,word版本

技术顾问协议模板,word版本

2022-08-01

从Drools规则引擎到风控反洗钱系统v0.3.2.pdf

从Drools规则引擎到风控反洗钱系统v0.3.2.pdf ,此版本文档在不断刚更新升级中。

2017-08-22

从Drools规则引擎到风控反洗钱系统V0.2.3

从Drools规则引擎到风控反洗钱系统V0.2.3

2017-08-03

springboot集成drools实现重新加载规则

springboot集成drools实现重新加载规则

2017-08-02

drools calendar 使用demo

drools calendar 使用demo

2017-07-28

drools集成springboot demo

drools集成springboot demo

2017-07-18

建模工具StarUML的使用手册

StarUML的使用手册

2017-05-19

node-v4.5.0-linux-x64.tar.xz

官网下载是在太慢,好不容易下载下来了,索性分享在这里。

2016-11-08

kie-drools 6.4.0 依赖jar包

kie-drools 6.4.0 依赖jar包

2016-09-09

pdf格式文件阅读器

pdf格式文件阅读器pdf格式文件阅读器

2011-06-22

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

TA关注的人

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