自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 GitHub上标星75k《Java面试突击版》,分享PDF离线版

运气暂且不谈,就拿心态来说,千万不要因为面试失败而气馁或者说怀疑自己的能力,面试失败之后多总结一下失败的原因,后面你就会发现自己会越来越强大。2. 能有一个上得了台面的项目也非常重要,这很可能是面试官会大量发问的地方,所以在面试之前好好回顾一下自己所做的项目;(你可千万这样介绍: “我叫某某,性别,来自哪里,学校是哪个,自己爱干什么”,记住:多说点简历_上没有的,多说点自己哪里比别人强!2.和面试官聊基础知识比如设计模式的使用、多线程的使用等等,可以结合具体的项目场景或者是自己在平时是如何使用的;

2022-10-09 15:33:06 531 1

原创 麻了,Spring Boot 从 2.2.5 升级到 2.7.2 之后,一堆BUG

这篇文章分享一下Spring Boot 升级到2.7的踩坑总结,还是挺全面的,希望对大家有所帮助~

2022-10-09 14:00:52 797

原创 一张图看懂微服务架构路线

今天这篇文章分享一下微服务架构路线,希望对大家有所帮助~

2022-10-09 13:56:04 652

原创 聊聊Spring中最常用的11个扩展点

我们一说到spring,可能第一个想到的是IOC(控制反转) 和AOP(面向切面编程)。没错,它们是spring的基石,得益于它们的优秀设计,使得spring能够从众多优秀框架中脱颖而出。除此之外,我们在使用spring的过程中,有没有发现它的扩展能力非常强。由于这个优势的存在,让spring拥有强大的包容能力,让很多第三方应用能够轻松投入spring的怀抱。比如:rocketmq、mybatis、redis等。今天跟大家一起聊聊,在Spring中最常用的11个扩展点。

2022-10-09 13:49:21 359

原创 没有二十年功力,写不出这一行“看似无用”的代码

我们可以不用管具体的代码逻辑,只是单单看这个 for 循环。在循环里面,专门有个变量 j,来记录当前循环次数。第一次循环以及往后每 1000 次循环之后,进入一个 if 逻辑。在这个 if 逻辑之上,标注了一个注释:prevent gc.prevent,这个单词如果不认识的同学记一下,考试肯定要考的:这个注释翻译一下就是:防止 GC 线程进行垃圾回收。具体的实现逻辑是这样的:核心逻辑其实就是这样一行代码:这样就能实现 prevent gc 了?懵逼吗?

2022-10-09 13:41:19 200

原创 公司新来了一个同事,把权限系统设计的炉火纯青

RBAC 全称为用户角色权限控制,通过角色关联用户,角色关联权限,这种方式,间阶的赋予用户的权限,如下图所示对于通常的系统而言,存在多个用户具有相同的权限,在分配的时候,要为指定的用户分配相关的权限,修改的时候也要依次的对这几个用户的权限进行修改,有了角色这个权限,在修改权限的时候,只需要对角色进行修改,就可以实现相关的权限的修改。这样做增加了效率,减少了权限漏洞的发生。权限是资源的集合,这里的资源指的是软件中的所有的内容,即,对页面的操作权限,对页面的访问权限,对数据的增删查改的权限。举个栗子。

2022-10-09 13:33:06 288

原创 java面试核心知识点原理篇文档,逆袭进大厂

前言每个技术人都有个大厂梦,我觉得这很正常,并不是饭后的谈资而是每个技术人的追求。像阿里、腾讯、美团、字节跳动、京东等等的技术氛围与技术规范度还是要明显优于一些创业型公司/小公司,如果说能够在这样的公司锻炼几年,相信对自己能力的提升还是非常大的。本文是对Java程序员面试必备知识点的总结,详细讲解了JVM原理、多线程、数据结构和算法、分布式缓存、设计模式等内容,希望读者能通过阅读本书对Java的基础原理有更深入、全面的理解。

2022-10-09 09:41:17 285

转载 Spring Security系列教程-Spring Security核心API讲解

经过前面几个章节的学习,一一哥带大家实现了基于内存和数据库模型的认证与授权,尤其是基于自定义的数据库模型更是可以帮助我们进行灵活开发。但是前面章节的内容,属于让我们达到了"会用"的层级,但是"为什么这么用",很多小伙伴就会一脸懵逼了。对于技术学习来说,我们追求的不仅要"知其然",更要"知其所以然"!本篇文章中,壹哥就跟各位小伙伴一起来了解剖析Spring Security源码内部,实现认证授权的具体过程及底层原理。

2022-10-09 09:22:54 497

原创 吃透JAVA的Stream流操作,多年实践总结

好啦,关于JAVA Stream的理解要点与使用技能的阐述就先到这里啦。那通过上面的介绍,各位小伙伴们是否已经跃跃欲试了呢?快去项目中使用体验下吧!当然啦,如果有疑问,也欢迎找我一起探讨探讨咯。作者:架构悟道链接:https://juejin.cn/post/7118991438448164878来源:稀土掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2022-10-08 15:21:55 226

原创 2022年Java集合高频面试题,看完面试成功率百分之99

这不是秋招马上开始了嘛,这个月我每天会分享一个技术栈的高频面试题,而这些面试题都是取自于我五月份时整理的一些面试文档,希望对最近有面试或者有跳槽打算的同学有所帮助。共包含 208 道面试题,本文的宗旨是为读者朋友们整理一份详实而又权威的面试清单,下面一起进入主题吧。JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境。JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境。

2022-10-08 15:14:16 188

原创 Java程序员2022必看面试题(含答案)

优先队列PriorityQueue是Queue接口的实现,可以对其中元素进行排序优先队列中元素默认排列顺序是升序排列但对于自己定义的类来说,需要自己定义比较器...peek()//返回队首元素poll()//返回队首元素,队首元素出队列add()//添加元素size()//返回队列元素个数isEmpty()//判断队列是否为空,为空返回true,不空返回false1.基于优先级堆2.不允许null值3.线程不安全4.出入队时间复杂度O(log(n))

2022-10-08 14:53:45 525

原创 Java程序员必会Synchronized底层原理剖析

synchronized作为Java程序员最常用同步工具,很多人却对它的用法和实现原理一知半解,以至于还有不少人认为synchronized是重量级锁,性能较差,尽量少用。但不可否认的是synchronized依然是并发首选工具,连volatile、CAS、ReentrantLock都无法动摇synchronized的地位。synchronized是工作面试中的必备技能,今天就跟着一灯一块深入剖析synchronized的底层原理。

2022-10-08 14:07:50 242

原创 不允许还有Java程序员不了解BlockingQueue阻塞队列的实现原理

ArrayBlockingQueue基于数组实现的阻塞队列,创建队列时需指定容量大小,是有界队列。ArrayBlockingQueue底层采用循环队列的形式,保证数组位置可以重复使用。ArrayBlockingQueue存取都采用ReentrantLock加锁,保证线程安全,在多线程环境下也可以放心使用。使用ArrayBlockingQueue的时候,预估好队列长度,保证生产者和消费者速率相匹配。

2022-10-08 13:52:25 205

原创 Java比较两个对象是否相同并获取值不同的属性

最近项目中要加操作日志,同时要把用户修改了那些字段记录下来,在更新的时候就需要比较之前的数据和现在的数据有哪些不同,这么多类一个一个的比较就太麻烦了,所以打算写一个工具类。主要思想还是通过反射获取类的属性的getter方法,调用getter方法获取值并比较是否相同,相同就忽略不同就返回属性信息,方法都不复杂,主要是利用反射思想。这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,代码如下: 定义一个类保存比较后的返回值信息。2、跟另一个对象的所有属性值比较。1、获取对象的属性属性值。

2022-10-08 13:39:43 1796 1

原创 Java程序员不得不会的面试题(含答案)

优先队列PriorityQueue是Queue接口的实现,可以对其中元素进行排序优先队列中元素默认排列顺序是升序排列但对于自己定义的类来说,需要自己定义比较器...peek()//返回队首元素poll()//返回队首元素,队首元素出队列add()//添加元素size()//返回队列元素个数isEmpty()//判断队列是否为空,为空返回true,不空返回false1.基于优先级堆2.不允许null值3.线程不安全4.出入队时间复杂度O(log(n))

2022-10-08 13:34:39 292

原创 再有人说synchronized是重量级锁,就把这篇文章扔给他看

synchronized锁经过多次迭代优化,已经不像以前那么重了,在JDK1.8的ConcurrentHashMap源码中已经大量使用synchronized做同步控制,大家在日常开发中可以放心使用了。

2022-10-08 10:02:25 376

原创 【面试精讲】Java:Exception 和 Error 有什么区别?

众所周知,没有 BUG 的程序只会出现在程序员的梦里,异常情况如影随形地纠缠着我们,只有正确处理好意外情况,才能保证程序的可靠性。Java 语言在设计之初就提供了相对完善的异常处理机制,这也是 Java 得以大行其道的原因之一,因为这种机制大大降低了编写和维护可靠程序的门槛。如今,异常处理机制已经成为现代编程语言的标配。

2022-10-08 09:50:51 236

原创 Java面试题大全(整理版)附答案详解最全面看完稳了

文末有彩蛋进大厂是大部分程序员的梦想,而进大厂的门槛也是比较高的,所以这里整理了一份阿里、美团、滴滴、头条等大厂面试大全,其中概括的知识点有:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux 等技术栈共有1000+道面试题。对于Java后端的朋友来说应该是最全面最完整的面试备战仓库,为了更好地整理每个模块,我也参考了很多网上

2022-10-07 14:54:09 1407 1

原创 Java 核心面试题全解析

每个技术人都有个大厂梦,我觉得这很正常,并不是饭后的谈资而是每个技术人的追求。像阿里、腾讯、美团、字节跳动、京东等等的技术氛围与技术规范度还是要明显优于一些创业型公司/小公司,如果说能够在这样的公司锻炼几年,相信对自己能力的提升还是非常大的。JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境。JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境。

2022-10-07 14:49:35 222

原创 Java程序员需看的面试题

详解,这两部分内容相辅相成,前面的核心知识点介绍让后面的面试题更容易理解,后面的面试题加深了读者对于 Java 核心点的掌握。如此一来,让你所学及所用,不仅能够应付面试,更能学习到更多有价值的 Java 技术点,让你在面试中和工作中都能展示的更加出色。

2022-10-07 14:38:33 171

原创 JAVA高级技术-多线程11(创建线程的5种方式)

JDK1.8新加入的一个实现类CompletableFuture,实现了Future, CompletionStage两个接口。

2022-10-07 13:32:43 254

原创 作为Android Coder,你了解注解吗?

在日常开发中,经常使用注解,很多开源框架都提供了丰富的注解给开发者使用,如ARouter的、的等等,那你有没有自定义过注解,编写过注解处理器呢?本篇就来讲讲...注解在开发中的应用是很常见的,本篇总结了注解相关知识,常见的应用场景。

2022-10-07 13:20:23 88

原创 聊一聊线程是如何运行的

理清线程整个生命周期中状态的变化过程,对于多线程环境出现的问题我们就能够快速的去定位分析并解决问题,特别是阻塞中的线程被提前中断要如何处理,阻塞状态的线程必须被唤醒才会继续下一步操作,这就很容易理解为什么要在捕获异常后再次发起中断信号。

2022-10-07 13:18:31 241

原创 解决接口返回数据脱敏 竟如此简单

自定义 Serializer,参考 jackson 的 StringSerializer,下面的示例只针对 String 类型进行脱敏。思来想去,定义数据脱敏注解和数据脱敏逻辑的接口, 在返回类上,对需要进行脱敏的属性加上,并指定对应的脱敏策略操作。需求是某些接口返回的信息,涉及到敏感数据的必须进行脱敏操作,我思考一反,表示小意思,马上安排。当返回对象比较复杂,需要递归去反射,性能一下子就会降低,于是换种思路,我想到平时使用的。,跟我现在的场景很类似,通过自定义注解跟字段解析器,对字段进行自定义解析。

2022-10-07 09:49:08 620

原创 Sentinel源码10-熔断降级DegradeSlot

是用于服务降级熔断:在执行entry的过程中,对于处于熔断open状态的情况则判断是否已经过了熔断期且设置半开成功,那么就通过.否则不通过报对于处于降级状态即half-open的时候,则直接抛出.

2022-10-07 09:26:41 694 1

原创 开发利器Hutool之MapProxy的妙用

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。目前公司项目中主要采用Hutool作为项目的工具包,相对于google的guava, hutool的工具类采用中文注释,更加符合国人使用。所谓知己知彼,我们需要了解Hutool都具有什么样的功能,才能够最大化发挥它的价值。本文主要就hutool 5.8.8版本中MapProxy的使用。

2022-10-07 09:23:22 253

原创 腾讯内产 Spring Boot 核心知识及源码分析手册笔记

为了让更多的 “SpringBoot” 能深入的了解 SpringBoot 中的一些精髓,小编故在此准备了一份市面上极少见的【Spring Boot 核心知识及源码分析手册笔记】,本笔记共分为两份笔记,全文 666 页,如有需要的朋友+V MXD202007 即可来获取免费领取方式了!它咋利用 Spring 的呢?尽管 Spring Boot 没有特别的特殊之处(它只是您可以使用的另-个库) , 但有一些建议,如果遵循这些建议,您的开发过程会更容易-些。在这里,您可以了解您可能想要使用和定制的关键功能。

2022-10-06 15:13:47 176

原创 Java岗最全面试攻略,吃透25个技术栈Offer拿到手软

我分享的这份春招 Java 后端开发面试总结包含了 JavaOOP、Java 集合容器、Java 异常、并发编程、Java 反射、Java 序列化、JVM、Redis、Spring MVC、MyBatis、MySQL 数据库、消息中间件 MQ、Dubbo、Linux、ZooKeeper、 分布式 &数据结构与算法等 25 个专题技术点,都是小编在各个大厂总结出来的面试真题,已经有很多粉丝靠这份 PDF 拿下众多大厂的 offer,今天在这里总结分享给到大家!Dao 接口里的方法,参数不同时,方法能重载吗?

2022-10-06 15:02:19 238

原创 行为型设计模式之解释器模式

解释器模式属于行为型模式。它是指给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。是一种按照规定的语法(文法)进行解析的模式编译器可以将源码编译解释为机器码,让CPU能进行识别并运行。解释器模式的作用与编译器一样,都是将一些固定的文法(即语法)进行解释,构建出一个解释句子的解释器。简单理解,解释器是一个简单语法分析工具,它可以识别句子语义,分离终结符号和非终结符号,提取出需要的信息,让我们能针对不同的信息做出相应的处理。其核心思想是识别文法,构建解释。

2022-10-06 14:43:45 377

原创 Java反射详解,学以致用,实战案例(AOP修改参数、Mybatis拦截器实现自动填充)

需求如下:我现在引入了一个第三方 jar 包,里面有一个 MyBatis-Plus 查询构造器,其中构造LIKE条件查询的条件是当前端传过来的参数带有逗号时,拼接为LIKE查询条件。关键代码:标识在对象的某个成员属性上​}​复制代码标识在Controller层上,以此来判断那些请求是需要被切入的。​​}复制代码一个非常简单的Javabean@Data​​​}​}}​复制代码Controller 类@Slf4j​}​}复制代码重点重点,切面类。

2022-10-06 14:39:24 323 1

原创 HashMap源码,看我这篇就够了

HashMap基于哈希表的Map接口实现,是以key-value存储形式存在,即主要用来存放键值对。HashMap的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。数组 + 链表数组 + 链表 / 红黑树思考:为什么1.8之后,HashMap的数据结构要增加红黑树?

2022-10-06 14:36:30 152 1

原创 字符编码的处理和BeanUtils组件的使用

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第2天,

2022-10-06 14:28:18 603

原创 ExecutorService、Callable、Future实现有返回结果的多线程原理解析

以上就是执行线程任务run方法后,如何将线程任务结果返回给主线程,其实,还少一个地方补充,就是如何将FutureTask任务丢给线程执行,我们这里用到了线程池, 但是execute(ftask)底层同样是使用一个了线程通过执行start方法开启一个线程,这个新运行的线程最终会执行FutureTask的run方法。因此,我自定义了一个实现Callable接口的类,该类的重写了call方法,我们在执行多线程时希望返回什么样的结果,就可以在该重写的call方法定义。

2022-10-06 13:53:55 178

原创 CompletableFuture实现原理分析

通过异步回调的方式,解决了开发过程中异步调用获取结果的难点。开发人员只需接触到对象,以及任务的执行结果,无需设计具体异步回调的实现,并可通过自定义线程池进一步优化任务的异步调用。

2022-10-06 13:21:21 869

原创 Spring Boot + Prometheus + Grafana 打造可视化监控,一目了然

现在可以启动Prometheus了,命令行输入:prometheus.exe --config.file=prometheus.yml 访问http://localhost:9090/targets,查看Spring Boot采集状态是否正常。由于开启了安全认证,所以访问这个URL的需要提示输入账号/密码,如果提示404请检查下你的请求地址是否正确,如果不设置management.context-path则默认地址是http://ip:port/prometheus。

2022-10-05 15:08:33 376

原创 数据库索引:索引并不是万能药

因此,这种情况也叫作索引覆盖。这里,我再额外提一下,页中的记录都是按照索引值从小到大的顺序存放的,新增记录就需要往页中插入数据,现有的页满了就需要新创建一个页,把现有页的部分数据移过去,这就是页分裂;如图所示,记录中最前面的小方块中的数字,代表的是当前分组的记录条数,最小和最大的槽指向2个特殊的伪记录。比如,我们要搜索PK=4的数据,通过根节点中的索引可以知道数据在第一个记录指向的2号页中,通过2号页的索引又可以知道数据在5号页,5号页就是实际的数据页,然后再通过二分法查找页目录马上可以找到记录的指针。

2022-10-05 15:05:37 95

原创 连接池:别让连接池帮了倒忙

如果设置得太大,不仅仅是客户端需要耗费过多的资源维护连接,更重要的是由于服务端对应的是多个客户端,每一个客户端都保持大量的连接,会给服务端带来更大的压力。在真实情况下,只要数据库可以承受,你可以选择在遇到连接超限的时候先设置一个足够大的连接数,然后观察最终应用的并发,再按照实际并发数留出一半的余量来设置最终的最大连接。创建连接池的时候很可能一次性创建了多个连接,大多数连接池考虑到性能,会在初始化的时候维护一定数量的最小连接(毕竟初始化连接池的过程一般是一次性的),可以直接使用。

2022-10-05 15:00:37 107

原创 还在用Swagger?我推荐这款零代码侵入的接口管理神器

2.更麻烦的是这些工具数据格式不互通,无法互相导入,造成用 Swagger 定义和编写完成接口后,在 Postman, MockJS , Jmeter 等工具还要再去手动填写一遍才能开始工作,增加了无意义的工作量。真不是故意的,有时候任务比较急,就先改了代码,想着以后再同步文档,然后就给忘了。作为一款研发全流程,接口全周期的生产力工具,这款软件真正完成了数据流的打通,在一个软件上就能实现接口设计—接口文档—接口调试—接口修改—接口 mock —接口测试—接口自动化—接口迭代的工作流闭环;

2022-10-05 14:53:19 2027

原创 神器 SpringDoc 横空出世,最适合 SpringBoot 的API文档工具来了

Operation(summary = "获取所有品牌列表",description = "需要登录后访问") @RequestMapping(value = "listAll", method = RequestMethod.GET) @ResponseBody public CommonResult getBrandList() { return CommonResult.success(brandService.listAllBrand());

2022-10-05 14:50:51 397

原创 阿里出品,SpringBoot应用自动化部署神器,IDEA版Jenkins?

CloudToolkit是阿里出品的一款IDEA插件,通过它我们可以更方便地实现自动化部署,其内置的终端工具和文件上传功能,即使用来管理服务器也非常方便!体验了一把阿里出品的CloudToolkit,做好配置以后,基本可以实现一键部署应用到远程服务器,说它是IDEA版的Jenkins也不为过!当然CloudToolkit的功能远不止于此,它内置了终端工具,在IDEA中管理Linux服务器,用它就够了,直接通过底部面板,点击终端按钮即可打开;体验了一把这个终端工具,提示还挺全的,这下还要啥Xshell?

2022-10-05 14:49:18 302

空空如也

空空如也

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

TA关注的人

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