【Java】
文章平均质量分 69
当年的春天
目前就职于阿里巴巴,六年大型互联网后端(Java)研发经验,坐标北京;擅长微服务和中间件。
展开
-
GitHub中文排行榜,帮助你发现高分优秀中文项目(二)-Java
榜单设立目的???????? GitHub中文排行榜,帮助你发现高分优秀中文项目;各位开发者伙伴可以更高效地吸收国人的优秀经验、成果;中文项目只能满足阶段性的需求,想要有进一步提升,还请多花时间学习高分神级英文项目;榜单设立范围设立1个总榜(所有语言项目汇总排名)、18个分榜(单个语言项目排名);榜单入选规则一个小小的要求:项目的 Description 和 README.md 都要包含中文说明;更新越持续越好:最近半年内有更新过的项目才有机会入选(拥抱活跃,远离僵尸);Star转载 2021-01-31 00:08:05 · 5175 阅读 · 1 评论 -
内存溢出+CPU占用过高:问题排查+解决方案+复盘(超详细分析教程)
前言最近刚上线了一款社交项目,运行十多天后(运营持续每天推量),发现问题:系统OOM(资源不能被释放)导致服务器频繁且长时间FGC导致服务器CPU持续飚高日志中内存溢出:java.lang.OutOfMemoryError: Java heap space程序十分卡顿,严重影响用户使用从以下方面,为大家分享此次问题解决流程问题出现现象临时解决方案复现问题定位问题发生原因优化代码优化后进行压测,上线复盘学完本博文,你的收获排查内存溢出的思路排查内存溢出过程中用到的命原创 2020-10-24 10:57:06 · 17840 阅读 · 35 评论 -
Java线上排错---反编译文件
【前言】 有时候经常会遇到一些诡异的问题:明明在本地运行代码没有问题,服务器代码和本地一样,请求的参数和所连接的数据源都一样为啥服务器上不行那? 如果在测试环境我们可以进行远程调试(参考《idea远程调试》),但是线上应该如何排查? 博主遇到很多次这种情况,最后确定都是由于服务器上代码并没有更新导致的,没有更新原因有很多种比如:运维的部署脚...原创 2019-11-23 19:00:07 · 1660 阅读 · 5 评论 -
SpringBoot实战(十一):MultipartException: Could not parse multipart servlet request
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 有个在线上跑了一段时间的上传文件的程序报错,查了些资料,最终通过设置上传文件的临时路径解决此问题,在此与大家共享。【问题解决之路】 一、报错信息 org.springframework.web.multipart.Multi...原创 2019-07-01 22:38:22 · 6078 阅读 · 1 评论 -
SpringBoot实战(十):统一异常处理
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 处理好异常对系统有很好的保护作用同时会大大提高用户的体验,对异常统一处理是一个非常实用的技巧,接下来介绍一下如何在系统中对异常进行统一处理;【统一异常处理】 一、未加统一异常处理时 启动程序,并访问http://...原创 2019-06-21 21:53:19 · 1010 阅读 · 0 评论 -
SpringBoot实战(九):标准化json返回值
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 前后端分离是现在系统开发主流模式,上篇博文《SpringBoot集成Swagger》介绍了利器Swagger;这篇接着定义返回Json格式的规范;无规矩,不成方圆;有了好的规范前后端的开发效率将大大提高;【返回Json结果规范化】 一、规范化的...原创 2019-06-19 21:18:50 · 2607 阅读 · 2 评论 -
SpringBoot实战(八):集成Swagger
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 前后端分离是现在系统的主流,前端人员更多专注于前端功能,后端人员更加关注后端极大提高开发效率;一般情况下前后端由不同的开发团队进行开发;所以免不了要有一份接口文档,手写接口文档,维护接口文档团队间沟通,调试等也是需要花费一定的时间,Swagger就在一定程度上解决了以...原创 2019-06-13 22:28:26 · 1038 阅读 · 0 评论 -
SpringBoot实战(七):替代if的优雅方案,提高程序扩展性
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 最近业务由一个国家扩展到多个国家,维护的通知平台也要进行相应的扩展;在扩展的时候应用一个技巧使得程序的扩展性大大提高;【if的优雅替代方案】 一、业务需求 在此以通知平台中短信业务中的校验手机号前缀为例;...原创 2019-06-12 20:19:01 · 2103 阅读 · 0 评论 -
SpringBoot实战(六):Redis Pipeline 轻松实现百倍性能提升
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 今天在优化通知平台的路由部分时发现每次当路由初始化到Redis时异常慢,早就听闻Pipeline是redis批量操作的利器,正好这次用Pipeline进行优化;【整合Redis实战】 一、原理分析 1、单个命...原创 2019-05-28 21:50:12 · 7167 阅读 · 2 评论 -
BigDecimal 转 String
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 最近遇到一个需求,是给用户发送带钱的短信,本来自己以为挺简单,很快可以搞定,不过在实现的时候遇到一些小问题,自己辗转查和实验最终解决该问题,在此记录一下。【BigDecimal如何转成String】 一、业务需求 ...原创 2019-07-28 23:55:05 · 19885 阅读 · 1 评论 -
BigDecimal 校验格式
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 最近收到一个需求,在管理后台对系统中的金额进行操作时,对操作的金额需要进行相关校验,如果不校验,在进行相关的计算时就可能会出问题。【BigDecimal 校验格式】 一、业务需求 前端接收到金额传给后端时需要对金...原创 2019-07-29 21:31:32 · 16126 阅读 · 2 评论 -
Required request body is missing
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 最近对代码进行统一日志处理,通过拦截器,打印请求日志,方便排查问题,通过拦截器取参数后遇到一个问题:Required request body is missing;在进行了相关实验后最终解决此问题。【解决问题】 一、问题复现 ...原创 2019-08-07 16:07:29 · 21822 阅读 · 8 评论 -
logback 日志输出格式
【前言】 日志对一个系统的重要性不言而喻;日志通常是在排查问题时给人看,一个友好的输出样式让人看到后赏心悦目,排查效率通常也会随之提高;下面为大家共享一下通过设置logback日志输出格式,打印出令人欣喜的日志样式。【搞一下日志格式】 一、未指定日志格...原创 2019-09-24 11:17:20 · 5661 阅读 · 1 评论 -
SpringBoot实战(十二):集成 Spring Boot Admin 监控
【前言】 程序开发完实现相应的功能只是一个部分,如何让系统在线上运行更好创造更高的价值是另外一个部分;监控是一个生产级项目避不可少重要组成部分;最近研究一下针对SpringBoot的监控项目---Spring Boot Admin,并集成项目中,在此与大家共享;【Sprin...原创 2019-09-24 13:29:56 · 4365 阅读 · 5 评论 -
SpringBoot实战(十三):Spring Boot Admin 动态修改日志级别
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 之前关于线上输出日志一直有个困惑:如何可以动态调整的日志级别,来保证系统在正常运行时性能同时又能在出现问题时打印详细的信息来快速定位问题;最近研究一下Spring Boot Admin中动态日志级别调整,并集成项目中,在此与大家共享;【动态修改日志级别】 ...原创 2019-09-24 14:53:31 · 5125 阅读 · 6 评论 -
SpringBoot实战(十四):Spring Boot Admin 集成安全模块
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 Spring Boot Admin做为生产级的监控工具,必然不能随便让人去操作以免误操作导致线上问题,所以有必要集成Security组件;Spring Boot Admin可以十分简单的集成这安全组件;已集成项目中,在此与大家共享;【集成安全模块】 ...原创 2019-09-28 09:23:15 · 2389 阅读 · 1 评论 -
SpringBoot实战(十五):Spring Boot Admin 集成告警模块
【前言】 Spring Boot Admin做为生产级的监控工具,必然自动化告警必不可少;Spring Boot Admin可以十分简单的集成告警组件;最近研究一下集成邮件告警到项目中,在此与大家共享;【集成告警模块】 一、集成告警模块(在此以邮件告警为...原创 2019-09-28 10:04:05 · 6712 阅读 · 1 评论 -
Error while extracting response for type [class xxx] and content type application/xml;charset=UTF-8
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 最近在用restTemplate进行一次http请求时发现了报错(Error while extracting response for type [class xxx] and content type application/xml;charset=UTF-8)...原创 2019-04-07 17:39:43 · 54362 阅读 · 4 评论 -
SpringBoot实战(五):配置健康检查与监控
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 众所周知,系统预警是一件十分重要的事情,系统一旦出现宕机很有可能许多真金白银就进去了;做好系统的监控预警是一件十分有必要的事情;接下来分享一下SpringBoot自带的健康检查与监控的配置。【配置】 一、说明 ...原创 2019-04-07 15:54:24 · 9344 阅读 · 0 评论 -
SpringBoot实战(二):SpringMvc接收xml请求
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 最近在对接一个第三方系统,需要接收第三方系统的回调,而且格式为XML形式,之前自己一般接收的参数是Json形式,于是乎做个实验验证一下使用SpringMvc接收xml参数请求;【实战】 一、Pom中引入相应的Jar包<depende...原创 2019-01-08 21:09:13 · 9989 阅读 · 4 评论 -
Java实现图片无损任意角度旋转
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 在做项目的时候遇到一个业务需要对图片进行旋转,于是找到一个工具类,亲测有效;在此与大家共享,需要用时可以直接用哈!【实战】 一、旋转工具类代码:package zh.test.utils;import java.awt.*;im...原创 2018-01-28 19:21:55 · 68022 阅读 · 23 评论 -
Java8中String.join方法,让我们的代码更优美
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 距Java8(14年3月19日)发布马上就四年了;相信接触过java8的人,会对它的很多新的特性新的方法有感觉;自然我也不例外;今天就一起给大家分享一个java8中的方法。【善用新语法,让代码更优美】 一、简洁:最近自己在做项目的时候学习到很多技巧...原创 2018-01-16 23:21:26 · 62989 阅读 · 15 评论 -
Java集合总结
【前言】 最近自己将Java基础进行了复习,当然Java集合中做为Java基础中的一个非常重要的组成部分,自己又学习了一遍同时整理一下,在此与大家共享。【我眼中Java集合】 说到Java集合不得不提的是它的两大体系分别以Collection和Map接口为根的; 一、Collection集合体系 1、经典的Co...原创 2017-08-26 20:11:42 · 20274 阅读 · 19 评论 -
J2SE:Java环境搭建&探究环境变量
【前言】 经过将近半年的学习将BS学习完,经过之前的教训(拖拉不是病,拖起来要了命),于是乎总结完BS后就马不停蹄的奔向了Java的世界。说实话自己还是挺兴奋滴。怎么说那?之前的学习阶段无论是CS还是BS都是在.Net的世界中漫游;抱着世界这么大,我想去看看的心态进入Java世界还是蛮不错滴。【基础环境搭建】 毫无疑问接触一个新的开发模式的时候,首先是要将环境给搭建起...原创 2016-02-20 12:56:15 · 20797 阅读 · 26 评论 -
J2SE:总结—基础很重要哈!
【前言】 最近刚把网上商城学完,翻阅着自己的博客,发现J2SE的阶段,自己还没有总结!俗话说:出来混的迟早要还的!于是乎又将当时自己学习J2SE时记录的笔记溜了一遍总结一下。【内容】 将视频中的内容归了归类整理出一张导图: 阐述: 1.准备:(1)基本环境的配置【可参考:《J2S...原创 2016-05-15 10:33:39 · 20403 阅读 · 20 评论 -
J2EE:赛迪网J2EE视频总结
【前言】 刚开始的时候以为J2EE是具体的编程实现,边学视频边去网上查相关的资料,才发现不是这样的;J2EE其实是一组解决企业级问题的规范,也就是说它只描述了如何解决某类问题,不同的公司根据此规范有不同的实现方式。首先把这个基本定义搞明白了下面的讲解才有意义。【内容】 J2EE是怎么来的那?在企业级开发的过程中经常会遇到一些问题,比如分布式等!一些有心得大牛逐渐的总结...原创 2016-05-29 23:47:37 · 20489 阅读 · 26 评论 -
SSH网上商城:回首网上商城
【前言】进入Java的世界已经学习了两个阶段(J2SE、J2EE),这两个材料都是偏重于理论和基础知识;真正开始项目练习的就是这网上商城;实战经验还是蛮有用滴,一方面可以巩固基础知识,另外可以在项目中学习一些新东西比如:调试、SSH框架等等。【内容】 老规矩,首先来个总结的图: 阐述: 这个项目主要是一个网上购物付款的项目,老师的思路还...原创 2016-06-05 10:50:45 · 19549 阅读 · 18 评论 -
DRP:基本环境安装中遇到那些事儿
【前言】 DRP是一个非常不错的Java入门材料,三个月前小编跟着视频学习,当时记得跟着视频将环境给配置好;后来由于某些原因,就停了一段时间;时隔三个月又将DRP重新给捡起来,如获至宝,为何这么说?在这三个月小编参加一个项目SCPPO,经过项目的洗礼再回头看这些东西自然而然会产生许多共鸣。【那些趣事】 正所谓工欲善其事必先利其器,由于这次参加项目之前重新装系...原创 2016-09-05 23:19:47 · 21024 阅读 · 24 评论 -
Java ==和Equals方法的比较
【前言】 最近抽时间将Java基础又进行了学习,经过这段时间发现将许多之前自己模糊的地方,又清晰了许多,这次主要为大家分享一下对==和Equals重新认识;【比一比】 1、Java中分为基本类型和对象类型两种; 2、对于基本类型来说equals和==都只是判断的是值是否相同; 3、对于对象类型分两种情况: ...原创 2017-05-06 09:57:45 · 18478 阅读 · 14 评论 -
Java妙用枚举
【前言】 对于一个合格的开发人员来说,过硬的基础是十分有必要的,最近在整理一些工作中常用的Java基础的东西,本次分享关于枚举类。【妙用枚举】 一、使用枚举的好处: 1、统一,更改一处全部更改; 2、确定性,比如现在传参需要一个值可能是0,1,2的整型,如果用Integer,可能调用方会传4等非法数值,...原创 2018-02-28 22:59:38 · 20748 阅读 · 5 评论 -
SpringBoot实战(一):使用Lombok简化你的代码
【前言】 Lombok是一个十分不错的工程,项目中引入它后可以使用注解来简化代码,比如最为常见的get、set、tostring等等;【如何使用】 一、项目POM中引入相应的Jar包 <dependency> <groupId>org.projectlombok</groupId> <...原创 2019-01-08 20:41:31 · 4796 阅读 · 2 评论 -
SpringBoot实战(四):SpringBoot整合Redis
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 最近自己在整理过去搭建过的框架,将用到的各个组件进行了梳理并融入自己新建的项目中(https://github.com/dangnianchuntian/springboot),一是对过去项目的整理;二是在整理的过程中查漏补缺;三是以后可以拿过去就用;【整合Re...原创 2019-01-12 17:32:34 · 7957 阅读 · 2 评论 -
SpringBoot实战(三):整合Mybatis配置多数据源
【前言】 最近接到一个新需求,经过分析后做了相应的设计;其中需要在一个项目中操做不同的数据源;于是进行了相关验证;在此记录一下验证过程。【实战多数据源】 一、Pom中引入相应的Jar包<!-- mysql 基础服务--><dependency> <groupId>mysql</group...原创 2019-01-12 16:56:31 · 3941 阅读 · 1 评论 -
Java 巧用占位符
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 最近自己负责设计和开发一套公司的通知系统,比如:短信提醒,推送通知等等;在设计的时候采用了消息模版和变量的方式来组装内容从而提高系统的扩展性。【经典案例】 一、场景简介 1、通知系统一般有模版,比如一个通知模版为 ...原创 2019-01-02 23:19:10 · 12700 阅读 · 2 评论 -
用Java8中Stream实现不同集合过滤
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 从开源中国的对Java各个版本使用投票可以看出,目前Java8还是以67%的压倒性优势遥遥领先(Java 11 已正式发布,你在使用 Java 的哪个版本?);众所周知,Stream是Java8中的一大亮点,现在分享一下自己在工作中用它解决一个需求。【业务场景及实...原创 2018-11-10 22:57:06 · 17423 阅读 · 0 评论 -
logback实现日志按天和大小切分
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 项目中每天会打印很多日志,有时候进行排错打开一个大的日志文件(我们有一个系统的线上日志文件大小已经超过20G)是一件很可怕的事情;对日志进行按天的切分是一件非常有必要的事情。【日志按天切分】 一、在application.properties中...原创 2018-07-29 08:43:50 · 24317 阅读 · 8 评论 -
Java发送邮件
【前言】 前段时间做一个紧急的功能,其中有部分需求是需要发邮件通知;通过查阅以及实验,很快的写了个发送邮件的功能;现在整理一下记录下来。【发送邮件】 一、在pom中引入相关依赖 <dependency> <groupId>javax.mail</groupId> <artifa...原创 2018-07-28 21:51:35 · 28697 阅读 · 5 评论 -
Java检查字符串是否包含中文字符
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】 最近项目的短信服务对接外国的第三方发短信通道,第三方对短信内容有限制,不能含中文字符(如果含调用结果肯定失败),所以在发送之前需要对短信内容做校验,看是否含有中文,如果含有则直接将短信发送状态改为失败,不用再去调用第三方;【探索之旅】 站在巨人的肩...原创 2018-04-22 15:34:10 · 39024 阅读 · 9 评论 -
Jvm内存分析入门篇
【前言】 最近将Java的内存分析进行了再次学习并进行了总结;Java内存分析一方面对现有系统的优化有着十分重要的指导意义,同时可以让我们以后在进行开发时写出高性能的代码有着重要的借鉴意义。【内容】 一、代码在内存中一步一步是如何执行的? 在进行内存分析学习的时候,自己脑海首先出现便是这个疑问;通过在网上查找以及参考一...原创 2017-01-08 10:45:52 · 17082 阅读 · 23 评论