自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(826)
  • 收藏
  • 关注

原创 一张Java学习路线图告诉你,从零基础到就业你都需要掌握什么技能。(最新版)

Java作为稳坐当下互联网行业龙头老大位置的热门语言,被广泛应用于Android、网站开发、金融服务、高频金融空间等众多领域。因此,一直以来,Java也是新人入行、跳槽转行者的首要选择。什么才是学习Java最合适的方法?实践会产生完全不同的结果。实践的好处不胜枚举:实践会带来专业精神通过反复不断练习。 实践能帮助学习知识应用实际可以增强您的能力。 练得越多,发现越多,包括您尚未发觉的知识。 实际动手编码比起花哨的工具和框架,实践能提供更多技能。让您更好地理解代码逻辑。 解决实际问题.

2020-08-24 11:09:27 210

原创 透彻,在SpringBoot项目中使用Netty实现远程调用

前言众所周知我们在进行网络连接的时候,建立套接字连接是一个非常消耗性能的事情,特别是在分布式的情况下,用线程池去保持多个客户端连接,是一种非常消耗线程的行为。那么我们该通过什么技术去解决上述的问题呢,那么就不得不提一个网络连接的利器——Netty.正文NettyNetty是一个NIO客户端服务器框架:它可快速轻松地开发网络应用程序,例如协议服务器和客户端。它极大地简化和简化了网络编程,例如TCP和...

2021-07-20 10:40:56 2

原创 面试官:Redis用过是吧?那你讲讲Redis都有哪些监控指标?

监控指标性能指标: Performance内存指标: Memory基本活动指标:Basic activity持久性指标: Persistence错误指标: Error性能指标:Performance| Name| Description| -------- | -------- | -------- || latency |Redis响应一个请求的时间| instantaneous_ops_per...

2021-07-13 11:05:22 12

原创 【非广告】2021 入门级的 Java 程序员学习路线图 1.0

Hello,大家好,我是阿粉,最近看文章发现一个 Java 学习路线图的资料,觉得很不错就拿过来分享给大家,目前这个版本是 1.0 的,之所以说这个是 1.0 的版本主要是因为还有一些高级内容没有加进去,比如 JVM,容器,消息队列,云原生等都还没有提到,不过对于初学者来说这个路线图已经可以上手完成工作了。作为 Java 程序员的阿粉不得不说,现在的小伙伴们是真的很幸福,互联网如此的发达,网上各种...

2021-07-10 11:09:14 6 1

原创 Java 线程池原理及最佳实践(1.5W字,面试必问)

1. 概述1.1 线程池是什么线程池(Thread Pool)是一种基于池化思想管理线程的工具,经常出现在多线程服务器中,如MySQL。创建线程本身开销大,反复创建并销毁,过多的占用内存。所以有大量线程创建考虑使用线程池。线程池不用反复创建线程达到线程的复用,更具配置合理利用cpu和内存减少了开销,性能会得到提高,还能统一管理任务比如服务器收到大量请求,每个请求都分配线程去处理,对服务器性能考验就...

2021-07-06 10:57:56 10

原创 反射和多态的实现原理详解以及区别

反射和多态事实上,反射和多态这两种技术并无直接联系,之所以把它们放在一起说,是因为,在Java技术体系中所提供的能够让我们在运行时识别对象和类的类型信息的方式,一共有两种:即反射和多态关键技术RTTIRTTI,即run-Time Type Identification运行时类型判定,它的作用是在我们不知道某个对象的确切的类型信息时,即某个对象是哪个类的实例的时候,可以通过RTTI相关的机制帮助我们...

2021-06-29 10:34:44 13

原创 批处理框架 Spring Batch 这么强,你会用吗?

spring batch简介spring batch是spring提供的一个数据处理框架。企业域中的许多应用程序需要批量处理才能在关键任务环境中执行业务操作。这些业务运营包括:无需用户交互即可最有效地处理大量信息的自动化,复杂处理。这些操作通常包括基于时间的事件(例如月末计算,通知或通信)。在非常大的数据集中重复处理复杂业务规则的定期应用(例如,保险利益确定或费率调整)。集成从内部和外部系统接收的...

2021-06-26 11:08:11 17

原创 Redis和Mysql如何保证数据一致?面试可以这样说自己的看法

Redis 和 MySQL 搭配使用在什么地方?缓存量大但又不常变化的数据也就是说,当我们在使用 Redis 和 MySQL 的时候,搭配使用的地方就是,数据量比较大,但是这个数据不会经常的变换的位置,比如说,某些商品信息的评论数据,也就是让 Redis 充当 MySQL 的缓存服务器,而要实现的目标也是比较简单的,当客户要查询数据的时候,先访问我们的 Redis ,当 Redis 里面没有数据的...

2021-06-23 10:34:07 11

原创 如何系统自学Java成功就业?

随着传统行业的没落,越来越多的人准备进军互联网行业,如何学好Java成功就业的问题在网上越来越热,在知乎上面看了好多介绍学习方法的文章和一些优秀答主的高赞回答。多数创作都是围绕着学习什么技术比较专业性的话题,虽然写的很专业,但是对于一个从来没接触过的小白来说,你去给他讲要学习SpringBoot、 SpringCloud这样的技术,这是市场主流,他根本就不知道是什么。罗列了一大堆专业的技术,专业的...

2021-06-22 11:05:16 10

原创 你为什么学不好Java?系统学习Java的七大因素

随着传统行业的没落,越来越多的人准备进军互联网行业,如何学好Java成功就业的问题在网上越来越热,在知乎上面看了好多介绍学习方法的文章和一些优秀答主的高赞回答。多数创作都是围绕着学习什么技术比较专业性的话题,虽然写的很专业,但是对于一个从来没接触过的小白来说,你去给他讲要学习SpringBoot、 SpringCloud这样的技术,这是市场主流,他根本就不知道是什么。罗列了一大堆专业的技术,专业的...

2021-06-18 17:07:49 6

原创 Java中关于内存泄漏分析和解决方案,都在这里了!

最近正在熟悉Java内存泄漏的相关知识,上网查阅了一些资料,在此做个整理算是对收获的一些总结,希望能对各位有所帮助,有问题可以文末留言探讨、补充。如下是整篇文章的结构,所需阅读时间大约20min1. 什么是内存泄漏?内存泄漏:对象已经没有被应用程序使用,但是垃圾回收器没办法移除它们,因为还在被引用着。在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个特点,首先,这些对象是可达的,即...

2021-06-17 10:00:20 8

原创 2021学Java如何进大厂?10年P8大佬透露方法!

本人普通二本国贸毕业生,大二开始自学Java,一路升级打怪,从实习9k薪资,到现在年薪55W,成功入职蚂蚁金服。这工资是不是少了点?没少哈,蚂蚁的工资和其他的不一样,一半银行卡一半支付宝,这也算是给自家产品拉业绩了~进入程序员这个行业,你会发现更多人会选择自学,作为过来人会告诉你,如果你自学的能够坚持,你反而比培训班出来的更容易获得大厂的青睐,因为自学的小伙伴大的基础更加扎实,而且更乐于动手操作。...

2021-06-16 10:39:30 25

原创 微服务架构设计总结实践

微服务架构介绍微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。你可以将其看作是在架构层次而非获取服务的类上应用很多SOLID原则。微服务架构是个很有趣的概念,它的主要作用是将功能分解到离散的各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。概念:把一个大型的单个应用程序和服务拆分为数个甚至数十个...

2021-06-10 11:41:15 30

原创 面试题:说说Redis的三大问题和解决方案

Redis经常用于系统中的缓存,这样可以解决目前IO设备无法满足互联网应用海量的读写请求的问题。一、缓存穿透缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起id为-1的数据或者特别大的不存在的数据。有可能是黑客利用漏洞攻击从而去压垮应用的数据库。1. 常见解决方案对于缓存穿透问题,常见的解决方案有以下三种:验证拦截:接口层进行校验,如鉴定用户权限,对ID之类的字段做基础的校验,如...

2021-06-10 11:09:56 56

原创 别再纠结线程池大小 + 线程数量了,没有固定公式的!

线程数和CPU利用率的小测试线程数和CPU利用率的小总结线程数规划的公式真实程序中的线程数附录Java 获取CPU核心数Linux 获取CPU核心数可能很多人都看到过一个线程数设置的理论:CPU 密集型的程序 - 核心数 + 1I/O 密集型的程序 - 核心数 * 2不会吧,不会吧,真的有人按照这个理论规划线程数?线程数和CPU利用率的小测试抛开一些操作系统,计算机原理不谈,说一个基本的理论(不用...

2021-06-08 11:26:01 10

原创 微服务架构及其最重要的 10 个设计模式

软件设计模式是解决软件设计中常见问题的通用、可复用的解决方案。设计模式让我们可以分享通用词汇并使用经实战检验的方案,以免重复造轮子。现在,我将介绍一系列设计模式来实现这些最佳实践。微服务架构的设计模式独享数据库(Database per Microservice)当一家公司将大型单体系统替换成一组微服务,首先要面临的最重要决策是关于数据库。单体架构会使用大型中央数据库。即使转移到微服务架构许多架构...

2021-06-04 11:17:16 11

原创 mybatis plus 看这篇就够了,一发入魂

MyBatis-plus 是一款 Mybatis 增强工具,用于简化开发,提高效率。下文使用缩写 mp来简化表示 MyBatis-plus,本文主要介绍 mp 搭配 Spring Boot 的使用。注:本文使用的 mp 版本是当前最新的3.4.2,早期版本的差异请自行查阅文档官方网站:http://baomidou.com/快速入门1. 创建一个Spring Boot项目,本教程是 mp 搭配 S...

2021-06-04 11:08:55 12

原创 图解Git,从原理上搞懂

基本用法上面的四条命令在工作目录、暂存目录(也叫做索引)和仓库之间复制文件。git add files 把当前文件放入暂存区域。git commit 给暂存区域生成快照并提交。git reset -- files 用来撤销最后一次git add files,你也可以用git reset 撤销所有暂存区域文件。git checkout -- files 把文件从暂存区域复制到工作目录,用来丢弃本地修...

2021-06-04 10:42:28 15

原创 你知道 Redis 服务器接收到一条命令是如何执行的吗?

Hello 大家好,我是阿粉,Redis 作为工作中不可缺少的缓存组件,相信很多小伙伴都会使用到,我们日常使用的时候都是通过代码或者客户端去链接 Redis 服务器来操作数据的。那么一条简单的set name ziyou 命令是如何执行的,中间都经历了哪些过程想必很少会有人去了解。今天阿粉就带大家看一下一条简单的set name ziyou 命令是如何执行的。我们可以看到在执行set name z...

2021-06-03 10:51:15 16

原创 SpringBoot整合websocket实现群聊

实现思路发送者向服务器发送大家早上好。其它客户端可以收到对应消息。项目展示通过springboot引入websocket,实现群聊,通过在线websocket测试进行展示。核心代码pom引入jar<parent> <groupId>org.springframework.boot</groupId> <artifactId&...

2021-06-03 10:23:54 15

原创 9道很棘手的面试题,大部分人只会3道

棘手的Java面试问题是那些有一些惊喜元素的问题。如果你试图用常识回答一个棘手的问题,你很可能会因为需要一些特定的知识而失败。大多数棘手的Java问题来自于令人困惑的概念,如函数重载和覆盖,多线程,掌握非常棘手,字符编码,检查与未检查的异常和Integer溢出等微妙的Java编程细节。回答棘手的Java问题最重要的是态度和分析思维,即使你不知道答案也会有所帮助。在这篇Java文章中,我们将看到下面...

2021-06-02 10:51:19 11

原创 面试官:Spring事务失效的场景有哪些?如何解决?

实际项目开发中,如果涉及到多张表操作时,为了保证业务数据的一致性,大家一般都会采用事务机制;好多小伙伴可能只是简单了解一下,遇到事务失效的情况,便会无从下手,溪源此篇文章给大家整理了一下常见Spring事务失效的场景,希望开发过程尽量避免踩坑,造成时间精力的浪费。溪源按照最基本的使用方式以及常见失效场景优先级整理,先简单介绍一下具体失效场景:注解@Transactional配置的方法非public...

2021-06-02 10:28:09 9

原创 SpringBoot实现登录拦截器(实战版)

对于管理系统或其他需要用户登录的系统,登录验证都是必不可少的环节,在SpringBoot开发的项目中,通过实现拦截器来实现用户登录拦截并验证。1、SpringBoot实现登录拦截的原理SpringBoot通过实现HandlerInterceptor接口实现拦截器,通过实现WebMvcConfigurer接口实现一个配置类,在配置类中注入拦截器,最后再通过@Configuration注解注入配置.1...

2021-05-31 10:39:54 32

原创 ​MyBatis-plus 从入门到入土(收藏夹吃亏)

MyBatis-plus 是一款 Mybatis 增强工具,用于简化开发,提高效率。下文使用缩写 mp来简化表示 MyBatis-plus,本文主要介绍 mp 搭配 Spring Boot 的使用。注:本文使用的 mp 版本是当前最新的3.4.2,早期版本的差异请自行查阅文档官方网站:http://baomidou.com/快速入门创建一个Spring Boot项目导入依赖<!-- pom....

2021-05-28 10:52:36 10

原创 产品高阶能力:架构图的设计与画法

今天作者和大家分享的是产品架构图的设计与画法,架构图将可视化的具象产品和服务,抽象成信息化、模块化、层次结构以及关联关系清晰的架构,并通过不同分层的交互关系、功能模块的组合、数据和信息的流转,来传递产品的业务流程、商业模式和设计思路。文章结构:基于抽象和复杂对产品架构图的一些思考;产品架构图的设计思考与画法。一、基于抽象和复杂对产品经理个人能力的一些思考日常的工作中,假如你身边坐了一个女程序猿,为...

2021-05-28 09:49:56 30

原创 Spring中毒太深,离开Spring我居然连最基本的接口都不会写了

随着 Spring 的崛起以及其功能的完善,现在可能绝大部分项目的开发都是使用 Spring(全家桶) 来进行开发,Spring也确实和其名字一样,是开发者的春天,Spring 解放了程序员的双手,而等到 SpringBoot出来之后配置文件大大减少,更是进一步解放了程序员的双手,但是也正是因为Spring家族产品的强大,使得我们习惯了面向 Spring 开发,那么假如有一天没有了 Spring,...

2021-05-25 10:58:38 16

原创 美团面试题:缓存一致性,我是这么回答的!

前言一道之前的面试题:如何保证缓存和数据库的一致性?下面介绍几种方案(大家回答的时候最好根据自己的业务,结合下面的方案)文章较长,可以点赞在看方案分析更新缓存策略方式常见的有下面几种:先更新缓存,再更新数据库先更新数据库,再更新缓存先删除缓存,再更新数据库先更新数据库,再删除缓存下面一一介绍!方案一:更新缓存,更新数据库这种方式可轻易排除,因为如果先更新缓存成功,但是数据库更新失败,则肯定会造成数...

2021-05-24 11:53:34 41

原创 使用Spring 原生注解来快速实现 策略模式 + 工厂模式

前言这阵子在做项目组重构的工作,工作中的一部分就是就目前代码库中与企业交互的逻辑抽离出来,单独做一个微服务,实现企业交互逻辑的关注点分离。在这里面我很自然而然的就用到了策略模式 + 工厂模式的方式,包装内部实现细节,向外提供统一的调用方式,有效的减少if/else的业务代码,使得代码更容易维护,扩展。之前看过一些文章,是使用自定义注解+自动BeanProcessor的方式来实现,个人感觉有点麻烦。...

2021-05-21 10:09:29 17

原创 还在写大量 if 来判断?试试用一个规则执行器来替代它

业务场景近日在公司领到一个小需求,需要对之前已有的试用用户申请规则进行拓展。我们的场景大概如下所示:if (是否海外用户) { return false;}if (刷单用户) { return false;}if (未付费用户 && 不再服务时段) { return false}if (转介绍用户 || 付费用户 || 内推用户) { return ...

2021-05-18 10:38:58 15

原创 Java中对象池的本质是什么?(实战分析版)

简介对象池顾名思义就是存放对象的池,与我们常听到的线程池、数据库连接池、http连接池等一样,都是典型的池化设计思想。对象池的优点就是可以集中管理池中对象,减少频繁创建和销毁长期使用的对象,从而提升复用性,以节约资源的消耗,可以有效避免频繁为对象分配内存和释放堆中内存,进而减轻jvm垃圾收集器的负担,避免内存抖动。Apache Common Pool2 是Apache提供的一个通用对象池技术实现,...

2021-05-18 10:25:44 34 1

原创 方法调用:一看就懂,一问就懵?

方法调用是不是很熟悉?那你真的了解它吗?今天就让我们来盘一下它。首先大家要明确一个概念,此处的方法调用并不是方法中的代码被执行,而是要确定被调用方法的版本,即最终会调用哪一个方法。class字节码文件中的方法的调用都只是符号引用,而不是直接引用(方法在实际运行时内存布局中的入口地址),要实现两者的转化,就不得不提到解析和分派了。解析我们之前说过在类加载的解析阶段,会将一部分的符号引用转化为直接引用...

2021-05-14 11:12:25 7

原创 MySQL分表时机:100w?300w?500w?都对也都不对!

导读以交友平台用户中心的user表为例,单表数据规模达到千万级别时,你可能会发现使用用户筛选功能查询用户变得非常非常慢,明明查询命中了索引,但是,部分查询还是很慢,这时候,我们就需要考虑拆分这张user表了。如果此时,我们才去做分表,可能已经太晚了,为什么呢?我以最典型的应用场景:用户筛选功能,以查询年龄在18到24岁的100位女性用户为例:在单表的情况下,我们的SQL是这么写的:SELECT *...

2021-05-14 10:49:55 16

原创 异步编程的几种方式,你知道几种?

近期尝试在搬砖专用语言 Java 上实现异步,起因和过程就不再详述了,总而言之,心中一万头草泥马奔过。但这个过程也没有白白浪费,趁机回顾了一下各种异步编程的实现。这篇文章会涉及到回调、Promise、反应式、async/await、用户态线程等异步编程的实现方案。如果你熟悉它们中的一两种,那应该也能很快理解其他几个。为什么需要异步?操作系统可以看作是个虚拟机(VM),进程生活在操作系统创造的虚拟世...

2021-05-13 11:17:41 27

原创 Switch竟然会报空指针异常,学到了!

前言前几天重新看 《阿里巴巴Java开发手册》有一条这样的规约:出于好奇,打算研究一下!,强迫症,没办法!我们先用一个案例测试一下:public class Test { public static void main(String[] args) { String param = null; switch (param) { cas...

2021-05-12 10:29:14 118

原创 在项目中使用c3p0作为数据库连接池,被技术总监怼了

一、介绍数据库连接是一项非常关键的、有限的、昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。记得之前做的一个项目,当时的应用程序配置的c3p0数据库连接池,最大允许的连接数是500,结果上线没多久,并发量直接上来了,导致大量的数据插入失败,当晚的心情可想而知~从那一次事故之后,让我对应用程序的数据库连接数有了一次深刻的认识,为了防止再次栽跟头,特意抽了一个时间来编写程序测试案例,用于测试...

2021-05-12 10:00:15 16

原创 SpringBoot中的线程池,你真的会用么?

前言前两天做项目的时候,想提高一下插入表的性能优化,因为是两张表,先插旧的表,紧接着插新的表,一万多条数据就有点慢了后面就想到了线程池ThreadPoolExecutor,而用的是Spring Boot项目,可以用Spring提供的对ThreadPoolExecutor封装的线程池ThreadPoolTaskExecutor,直接使用注解启用使用步骤先创建一个线程池的配置,让Spring Boot...

2021-05-12 09:36:08 23 1

原创 SpringCloud 微服务开发JWT认证流程

在微服务开发中中我们首先会通过认证中心获取JWT,然后每次发起后端请求都会将JWT放在请求头中,这时候我们后端需要对这个JWT进行验证判断是否合法及是否有对应请求权限,这一过程主要有两种方案:服务端自主验签方案API网关统一验签方案服务端自主验签方案首先咱们来看服务端验签的架构图。首先梳理下执行流程:第一步,认证中心微服务负责用户认证任务,在启动时从 Nacos 配置中心抽取 JWT 加密用私钥;...

2021-05-11 10:41:06 43

原创 害怕面试被问HashMap?这一篇就搞定了!

搞定HashMap作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java==集合中的精髓==了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白白的,没有足够的内力怕是一时半会...

2021-05-10 10:15:04 25

原创 关于主从延迟,一篇文章给你讲明白了!

生活中所受的苦,终会以一种形式回归!前言在实际的生产环境中,由单台MySQL作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面因此,一般来说都是通过集群主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力进行部署与实施总结MySQL主从集群带来的作用是:提高数据库负载能力,主库执行读写任务(增删...

2021-05-08 10:12:14 94 2

原创 面试现场:遇到不会回答的问题,如何力挽狂澜 ?

今天给大家讲讲面试过程当中最常遇到的窘境,也是最能体现一个候选人临场应变能力的地方,那就是当我们在面试的过程当中,遇到的问题回答不上来的时候,该怎么办。误区在开始讲解之前,先纠正一个误区,那就是对于一场面试而言,最后的结果好坏并不完全取决于面试当中的问题是否都回答了上来。能不能录取和是否回答出所有问题并没有直接的联系。换句话说,我自己经历过的,无论是面试也好,还是面别人也罢,问题没答上来通过的,都...

2021-05-08 10:00:20 12

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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