自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

MrCoderStack的博客

路漫漫其修远兮

原创 04. 就该这么学并发 - 线程的结束

前言 接上章“线程的阻塞”,我们继续讲线程的生命周期中最后一个状态“销毁” 销毁(Dead) 线程会以如下3种方式结束,结束后就处于死亡状态: - run()或call()方法执行完成,线程正常结束 - 线程抛出一个未捕获的Exception或Error - 直接调用该线程stop()(已废弃...

2020-06-29 14:57:51 21 0

原创 03. 就该这么学并发 - 线程的阻塞

前言 上章介绍了**线程生命周期的就绪和运行**状态 这章讲下线程生命周期中最复杂的**阻塞**状态 阻塞(Blocked) 在开始之前 我们先**科普**几个概念 阻塞,挂起,睡眠 区分 阻塞 在线程执行时,所需要的资源不能立马得到,则线程被“阻塞”,直到满足条件则会继续执行 阻塞是一种“被动...

2020-06-16 10:05:31 32 0

原创 一分钟,教你如何迅速定位OOM

如何迅速定位OOM 某Java服务(假设PID=10765)出现了OOM,如何快速定位? OOM常见原因分析 Java服务出现OOM,最常见的原因是: 内存确实分配过小,内存确实不够用; 某一个对象被频繁申请,却没有释放,内存不断泄漏,导致内存耗尽; 某一个资源被频繁申请,系统资源耗尽,例如:...

2020-07-01 10:16:00 39 0

原创 我和媳妇吵了一架后.....

前言 作为一个程序员(ps: 直男), 生活上难免会和媳妇为一些小事吵个架,拌个嘴什么的 (敢和媳妇吵架, 你怕是嫌活的久了……) (不过,你为啥会有媳妇???国家发的么?!) 言归正传, 和媳妇吵架了, 怎么办呢?! 此时, “直男癌” 晚期的我们, 不如尝试一点...

2020-06-29 15:49:35 59 0

原创 程序员撩妹指南-抖音爆火3D相册

前言 最近,  妹子突然转发了一个抖音小视频 如图,就是拿女朋友照片做了个酷炫的相册 搞起 好的, 我懂了,这不就是标准的 “你看看别人家的老公多浪漫的意思么?!!”. 小编顿时不舒服了,这不就是很简单的H5做的么! 同时暗自腹诽(写这个的是什么程序员!! 工作做完了么?饱和...

2020-06-29 15:48:40 29 0

原创 40. 从零开始学springboot-再谈参数合法性验证

​ 一、介绍 关于参数合法性验证的重要性就不多说了,即使前端对参数做了基本验证以外,后端依然还需要进行验证,以防不合规的数据直接进入后端,严重的甚至会造成系统直接崩溃! 本文结合自己在项目中的实际使用经验,主要以实用为主,对数据合法性验证做一次总结,不了解的朋友可以学习一下,同时可以立马实践到项目...

2020-06-09 16:02:17 53 0

原创 02. 就该这么学并发 - 线程的就绪与执行

前言 接上章“线程的创建”, 本章我们聊聊线程生命周期的“就绪”和“运行”状态. 就绪(Runnable) 线程对象的start()方法被调用后,该线程即进入就绪状态 - 此时JVM会为其创建方法调用栈和程序计数器; - 该状态的线程一直处于"线程就绪队列" 尽管是采用...

2020-06-09 16:01:01 28 0

原创 暗藏杀机? 不简单的三目运算符号!

最近,在一个业务改造中,使用三目运算符重构了业务代码,没想到测试的时候竟然发生 NPE (Null Pointer Exception)的问题。 重构代码非常简单,代码如下: // 方法返回参数类型为 Integer //  private In...

2020-06-03 11:06:33 71 0

原创 IP 如何存储?

前几天,一个朋友去面试,他回来告诉我, 面试官问他: IP 地址是怎么存在数据库的? 他当时也没多想,直接就回答: 存字符串啊 心想:这么简单的问题,怕不是看不起我吧 IP地址 本来就是一个字符串,存放在数据库作为字符穿类型,也是无可厚非的。 但是,换位思考,站在面试官的角度,你觉得我会问这么...

2020-06-03 11:04:18 75 0

原创 01. 就该这么学并发 - 线程的创建(多姿势)

本章开始,咸鱼君将开启一个新的专栏 就该这么学并发 来记录学习Java并发编程的相关内容~ 前言 说到**并发编程,就不得不先说多线程,因为并发的本质就是多线程的处理** 进程和线程 进程 (ps: 每一个程序就是一个进程) 进程指运行中的应用程序,每个程序运行时就会开启一个进程 进程是系统...

2020-06-03 11:00:43 55 0

原创 39. 从零开始学springboot-好用的开源工具类
原力计划

前言 不过最近 Review 代码的时候,咸鱼君发现之前的有些代码有些繁琐,现在看来, 可以用一些开源工具类实现,不需要自己重复实现。 所以,这里就分享几个常用的工具类,希望帮助到刚入行的同学们。其他编程老司机如果还有其他好用的工具类,欢迎评论区分享。 下文主要分享这几个方向的常用工具类: 字...

2020-05-28 10:33:41 92 0

原创 几段代码,带你理解RPC

RPC RPC 远程过程调用可以说是分布式系统的基础,本文将通过 Java 演示一次普通的 rpc 调用到底发生了什么。 咸鱼君曾经在网上看到有人提问,为什么 RPC 要叫作远程过程调用,而不叫作 RMC 远程方法调用。但咸鱼君为 RPC 的叫法才是合理的,远程调用的是某个过程,不一定是一个具体的...

2020-05-28 10:32:41 70 0

原创 两个对象List根据属性取交集和差集

背景介绍 咸鱼君最近做了个需求, excel导入功能, 其中 需要对已导入条目的做“更新” 未导入的条目做“新增” 其余的做“删除” 细品需求 无非是对excel的数据和数据库的数组做个差集, 交集的处理 打个比方: excel的数据我们定义为  newList 已导...

2020-05-16 11:07:13 424 4

原创 38. SpringBoot通用开发框架

SimpleFrame SpringBoot Bussiness Frame 这是一个通用SpringBoot 项目框架, 集成了很多常用的通用的依赖并且做好了配置 真正的只需关心业务,无需折腾项目结构的好框架 本项目是作者总结这些年的开发经验所得,花费了较多精力整理 如果你觉得好用,请务必给个 ...

2020-04-25 16:49:52 70 0

原创 37.SpringBoot集成EasyExcel读取Excel反射实体值为NULL问题

前言 小编最近使用springboot集成使用EasyExcel时发现了一个坑 EasyExcel EasyExcel是由阿里巴巴开发团队提供的一套操作excel的工具, 与常用的POI区别就在于如下 POI对大数据处理起来会引起OOM内存溢出, EasyExcel对此进行了优化, 对内存的占...

2020-04-25 16:48:45 689 5

原创 记一次生产升级事件(php)
原力计划

背景 咸鱼君所在公司的安全部门, 扫描出项目的生产服务安全漏洞,并且很负责任的提供了两份扫描文档, 一份针对nginx(1.1.6), 一份针对php(7.1.3), 并限期一周内改善完! 咸鱼君粗略一扫,全都是服务软件的漏洞, 于是乎, 两个选择摆在眼前: 1.根据文档,按图索骥, 一个补丁一个...

2020-04-25 10:53:36 116 0

原创 记一次生产升级事件(nginx)
原力计划

背景 咸鱼君所在公司的安全部门, 扫描出项目的生产服务安全漏洞,并且很负责任的提供了两份扫描文档, 一份针对nginx(1.1.6), 一份针对php(7.1.3), 并限期一周内改善完! 咸鱼君粗略一扫,全都是服务软件的漏洞, 于是乎, 两个选择摆在眼前: 1.根据文档,按图索骥, 一个补丁一个...

2020-04-25 10:52:33 55 0

原创 腾讯面试题, 2020年,让我们愉快的赛一次马!

最近, 有小伙伴去腾讯面试后, 给小编提了个问题: ​ 64匹马,8个赛道,找出前4名,最少比赛多少场? 好的, 逻辑算法题, 考验逻辑思维能力的时候到了!! 情况分析一:计时赛 根据题目, 我们很快发现, 这个题目其实很“发散”, 没有一堆“条条框框”的限制.(小声BB: 其实就是条件没给全)....

2020-01-16 10:27:03 228 0

原创 2019,UI革命,暗黑模式的崛起

前言 随着iOS 13和Android 10的正式发布,一个名词"暗黑模式(Dark Mode)"逐渐走入了大家的视野。 各大APP都将“暗黑模式”的适配列入了开发日程,舆情上用户们对“暗黑模式”支持的呼声也非常的高。 为什么要支持“暗黑模式”? “暗黑模式”的概念主要来源于M...

2020-01-06 14:23:00 168 0

原创 资源贴-Java架构师精品全套教程

资源介绍 本套资源为Java架构师精品全套教程,附带笔记图解,为学员内部视频,原价几千,现只需关注公众号即可免费领取! 本公众号也会发布其它进阶资源,欢迎大家交流学习. 关注公众号“CTO技术”, 回复“架构师”即可获取 请关注我的订阅号 ...

2019-12-30 15:57:50 1363 1

原创 资源贴-Python人工智能

资源介绍 本套资源为人工智能学习视频,附带笔记图解,为学员内部视频,原价几千,现只需关注公众号即可免费领取! 本公众号也会发布其它进阶资源,欢迎大家交流学习. 关注公众号“CTO技术”, 回复“人工智能”即可获取 请关注我的订阅号 ...

2019-12-30 15:56:56 58 0

原创 36.从零开始学springboot-事务失效问题详解

前言 小编最近使用springboot事务时,发现了点问题 问题 ServiceA @Transactional public void addStudent() { Student student = new Student(); student....

2019-12-30 15:24:46 80 1

原创 35.从零开始学springboot-数据库版本管理Flyway

前言 一个项目上线后,在不断的迭代过程中,总会出于这样那样的原因需要对数据库表做“增删改”这些“硬”操作. 事实上,在项目真正稳定运行前,对数据库的调整根本不可能停止. 那么,每次发版前,收集每个开发人员调整的SQL文件就慢慢的变成一件麻烦的事,大概会有如下痛点: 开发人员往往会遗忘SQL更改 ...

2019-12-26 09:51:51 60 0

原创 34.从零开始学springboot-mybatis查询字段null值不回显问题

前言 作者最近使用mybatis写sql查询,xml中查询某表记录,使用 <!-- 查询列表 --> <select id="queryList" parameterType="com.mrcoder.query" ...

2019-12-13 11:54:55 49 0

原创 33.2从零开始学springboot-一文读懂消息队列-生产消费(附redis实现)

前言 上一节我们使用Redis实现了发布订阅者模式,关于Redis实现的发布订阅模式的特点,我们也了解了 基于Redis服务主动推送消息,而非订阅者循环拉取. 消息即发即丢(就是消息一发布,就丢失了,不会保存) 那么,实际场景时,我们也会遇到如下的业务场景: 需要保存消息,按需取出 需要异步...

2019-12-13 11:54:24 48 0

原创 33.1从零开始学springboot-一文读懂消息队列-发布订阅(附redis实现)

前言 实际生产中,我们经常会碰到这样的场景: 业务方触发了某些预料之中的bug,(比如项目中调用了第三方的服务,但是第三方的服务出问题导致无法访问,这类错,我们往往不会直接提示用户,而是选择屏蔽此类错误,写入错误日志),我们处理此类bug往往需要去生产导出日志记录,然后排查,最后找到第三方服务的提...

2019-12-13 11:53:53 80 0

原创 32.从零开始学springboot-一篇搞定Schedule定时任务

前言 实际开发中,经常会碰到“定期定时去做一些重复操作”的需求,这个时候,定时任务显得是那么的方便.本章,我们来讲讲SpringBoot的定时任务如何使用. 分类 使用SpringBoot创建定时任务非常简单,目前主要有以下三种创建方式 基于注解(@Scheduled) 基于接口(Schedul...

2019-12-13 11:53:18 29 0

原创 31.从零开始学springboot-再谈切面“AOP”

前言 说起Java,就不得不提Spring,提到Spring,就不得不提IOC(控制反转)和AOP(切面), 本章就详细介绍一下AOP(切面)思想以及它在Spring中的应用. 概念 我们先看看百度此条对AOP的解释 在软件业,AOP为Aspect Oriented Programming的缩写...

2019-12-13 11:52:34 45 0

原创 30.从零开始学springboot-再谈控制反转“IOC”

前言 说起Java,就不得不提Spring,提到Spring,就不得不提IOC(控制反转)和AOP(切面), 本章就详细介绍一下IOC思想以及它在Spring中的应用. 概念 IOC:控制反转,一种设计思想,它是Spring的核心。 所谓IOC,对于Spring框架来说,就是由Spring来负责...

2019-12-13 11:51:44 36 0

原创 JavaBean-一个“豆子”的故事

前言 初学java,看到各位大佬的学习资料,总会不断提到一个单词“JavaBean”,新手会一脸蒙蔽,这个究竟是个神马? 类 在说JavaBean前,我们还是先说类吧,这个我相信大家都知道是什么!好吧,还是简单解释下吧. 什么是类? 百度词条的解释如下: 类(Class)是面向对象程序设计(OO...

2019-12-13 11:50:32 51 0

原创 29.从零开始学springboot-批量“覆盖导入”&“更新导入”

前言 作者之前做了个excel导入导出的功能。之前的实现思路是完全的"覆盖导入"。什么意思?意思就是,每次导入excel时按照一定的过滤条件, 把之前存储的数据的状态置为删除状态(在真实的环境中开发,几乎不存在"物理删除",也就是真正的把数据删除的应用场景,...

2019-09-20 14:55:26 40 0

原创 28.从零开始学springboot-详解金钱类BigDecimal

前言 作者最近开发项目, 需要用到java的金钱处理类BigDecimal. 为什么要BigDecimal而不用Float或Double 对此很多有和我一样,肯定有疑惑,一般的金钱用Double就行,怎么整出个BigDecimal类?why? 其实,这和计算机的设计有关,原因在于我们的计算机是二进...

2019-09-20 14:54:33 109 0

原创 27.2.从零开始学springboot-运行原理

前言 上章介绍了springboot入口类SpringApplication类的初始化流程,本章,我们分析介绍SpringApplication.run()方法的运行流程及原理。 SpringApplication实例run方法运行原理分析 public ConfigurableApplicati...

2019-09-20 14:53:06 34 0

原创 27.1.从零开始学springboot-运行原理

前言 SpringBoot作为目前最流行的 Java 开发框架,秉承“约定优于配置”原则,大大简化了 Spring MVC 繁琐的 XML 文件配置,基本实现零配置启动项目。 本文基于SpringBoot 2.1.4.RELEASE 版本,通过一步步追踪代码,详细探求 SpringBoot的运行原...

2019-07-05 09:24:17 103 0

原创 24.从零开始学springboot-swagger2文档自动生成

前言 在软件开发周期中,我们写完代码常常还要写文档,一方面给调用方提供调用文档,一方面也能归档。 其实,做开发的对于写文档这件事很是呵呵,占用了至少40%的开发时间,而且每当代码有调整,还得记得去修改对应的文档。 那么,springboot有没有哪种方法可以帮助我们自动生成文档呢,这样能解决我们开...

2019-06-13 16:17:52 83 0

原创 26.2.从零开始学springboot-数据校验

前言 对于任何一个应用而言,客户端做的数据有效性验证都不是安全有效的,而数据验证又是一个企业级项目架构上最为基础的功能模块,这时候就要求我们在服务端接收到数据的时候也对数据的有效性进行验证。 JSR-303 JSR 是Java Specification Requests 的缩写,是指向 JCP(...

2019-06-13 16:14:35 65 0

原创 26.1.从零开始学springboot-全局异常处理

前言 无论什么项目,异常处理和数据校验都显得尤其重要。作为一个开发,我们不应该不对数据检验就直接入库,我们也不应该傻乎乎的把乱糟糟的报错信息直接返回给用户。本章,我们就讲讲sprinboot的异常和数据校验处理。 异常处理流程 自定义异常类型 自定义错误代码及错误信息 对于可预知的异常由程序员在...

2019-06-13 13:50:50 71 0

原创 25.从零开始学springboot-springboot2.1.x报错循环依赖问题

前言 实际开发中,我们常常是基于模块分工开发的,也就是不同的人负责不同的模块。最后合并代码。这种方式适合多人协同,每个人只关心自己的业务模块实现(controller/model/service/mapper等),当碰到需要其它模块支持的功能时,只需引入其它模块的类即可调用其方法 循环依赖问题 B...

2019-06-10 13:52:47 270 0

原创 count(*)/count(1)/count(主键)统计效率对比

前言 在实际业务开发中,我们常常需要count数据表的记录条数。关于使用mysql的count统计函数,大多开发者都不会有疑问,但是就使用细节上,大家的观点可能就不一致了。一派认为count(1)比count(*)要快,说count(*)要全表扫描而count(1)则不用。另一派反之。针对coun...

2019-06-10 10:29:11 940 0

原创 23.从零开始学springboot-excel导入导出

前言 上一章作者分享了mybatis通用mapper的实用。在实际开发中,我们常常会用到excel导入导出相关的功能,本章,作者将分享一个实用的excel操作案例,实现excel的导入导出功能。 亮点: excel导入反射java实体 excel导出使用模版 这边简单解释下。 excel导入反...

2019-05-31 14:41:20 185 0

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