Spring面试攻略:如何展现你对Spring的深入理解Spring面试攻略:如何展现你对Spring的深入理解
什么是Spring?谈谈你对IOC和AOP的理解。
Spring是一种Java开发框架,旨在简化企业级应用程序的开发和部署。它具有以下优点:
对象托管:Spring能够管理和赋值所有对象,使开发人员不再需要手动管理对象的创建和依赖关系。
动态代理:Spring的动态代理功能可以实现大部分可复用...[2023/8/16]
微服务面试必读:拆分、事务、设计的综合解析与实践指南
谈谈你对微服务的理解,微服务有哪些优缺点?
首先,微服务是对传统单体架构的一种优化。当一个单体架构随着业务的增加而变得臃肿时,微服务通过将业务拆分成小的独立单元来进行优化。
微服务的优点有以下几点:
业务清晰:拆分微服务后,每个服务只负责一个独立的业务,没有与其他业务耦合,使新员工能够快速理...[2023/8/14]
SpringBoot3安全管理
目录一、简介二、工程搭建1、工程结构2、依赖管理三、配置管理1、核心配置类2、认证数据源3、认证流程4、身份过滤器四、核心功能1、登录退出2、权限校验五、参考源码
标签:Security.登录.权限;
一、简介
SpringSecurity组件可以为服务提供安全管理的能力,比如身份验证...[2023/8/14]
SpringBoot3数据库集成
标签:Jdbc.Druid.Mybatis.Plus;
一、简介
项目工程中,集成数据库实现对数据的增晒改查管理,是最基础的能力,而对于这个功能的实现,其组件选型也非常丰富;
通过如下几个组件来实现数据库的整合;
Druid连接池:阿里开源的数据库连接池,并且提供SQL执行的监控能力;...[2023/8/14]
产品代码都给你看了,可别再说不会DDD(一):DDD入门
这是一个讲解DDD落地的文章系列,作者是《实现领域驱动设计》的译者滕云。本文章系列以一个真实的并已成功上线的软件项目——码如云(https: www.mryqr.com)为例,系统性地讲解DDD在落地实施过程中的各种典型实践,以及在面临实际业务场景时的诸多取舍。
本系列包含以下文章:
D...[2023/8/14]
产品代码都给你看了,可别再说不会DDD(二):DDD概念大白话
这是一个讲解DDD落地的文章系列,作者是《实现领域驱动设计》的译者滕云。本文章系列以一个真实的并已成功上线的软件项目——码如云(https: www.mryqr.com)为例,系统性地讲解DDD在落地实施过程中的各种典型实践,以及在面临实际业务场景时的诸多取舍。
本系列包含以下文章:
...[2023/8/14]
Jenkins 配置邮件通知(腾讯企业邮箱)
开通企业邮箱SMTP服务
登录企业微信邮箱,然后打开设置,在里面找到 收发信设置,在开启服务里面将 开启IMAP/SMTP服务 勾选
保存后回到邮箱绑定页签下,将安全设置里的安全登录开关打开
在下面的客户端专用密码中点击生成新密码
点击生成新密码后会...[2023/8/14]
Java不能操作内存?Unsafe了解一下
前言
C++可以动态的分类内存(但是得主动释放内存,避免内存泄漏),而java并不能这样,java的内存分配和垃圾回收统一由JVM管理,是不是java就不能操作内存呢?当然有其他办法可以操作内存,接下来有请Unsafe出场,我们一起看看Unsafe是如何花式操作内存的。
Unsafe介绍
Un...[2023/8/11]
spring多数据源动态切换的实现原理及读写分离的应用
简介
AbstractRoutingDataSource是Spring框架中的一个抽象类,可以实现多数据源的动态切换和路由,以满足复杂的业务需求和提高系统的性能、可扩展性、灵活性。
应用场景
多租户支持:对于多租户的应用,根据当前租户来选择其对应的数据源,实现租户级别的隔离和数据存储。
分库分...[2023/8/11]
SpringBoot3文件管理
目录一、简介二、工程搭建1、工程结构2、依赖管理三、上传下载1、配置管理2、上传下载四、Excel文件1、Excel创建2、Excel读取3、解析监听4、导入导出五、参考源码
标签:上传.下载.Excel.导入.导出;
一、简介
在项目中,文件管理是常见的复杂功能;
首先文件的类型比...[2023/8/11]
Jenkins服务开机自启动Jenkins服务开机自启动
最近因为护网行动,每天都要对服务器进行开、关机操作。为了省事儿,对Jenkins服务进行开机自动启动服务改造。实现如下:
1. 通过chkconfig --list命令列出系统中已安装的服务及其启动状态
[root@qy-ggyf-zyl-32 ~]# chkconfig --list
...[2023/8/11]
quarkus依赖注入之十二:禁用类级别拦截器
欢迎访问我的GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https: github.com/zq2599/blog_demos
本篇概览
本篇是《quarkus依赖注入》系列的第十二篇,继续学习拦截器的另一个高级特性:禁用类级别拦截器
本篇由以下内容构成
编码验证类拦截...[2023/8/11]
SpringBoot3分库分表
标签:ShardingSphere5.分库.分表;
一、简介
分库分表的设计和实现方式,在之前的内容中总结过很多,本文基于SpringBoot3和ShardingSphere5框架实现数据分库分表的能力;
不得不提ShardingSphere5文档中描述的两个基本概念:
垂直分片
...[2023/8/11]
SpringBoot3基础用法
目录一、背景二、环境搭建1、工程结构2、框架依赖3、环境配置三、入门案例1、测试接口2、全局异常3、日志打印3.1 日志配置3.2 日志打印四、打包运行五、参考源码
技术和工具「!喜新厌旧」
一、背景
最近在一个轻量级的服务中,尝试了最新的技术和工具选型;
即SpringBoot3,...[2023/8/9]
Spring Boot 最佳实践
本文翻译自国外论坛 medium,原文地址:https: medium.com/@raviyasa pring-boot-best-practices-for-developers-3f3bdffa0090
Spring Boot 是一种广泛使用且非常流行的企业级高性能框架。以下是一些最佳实践...[2023/8/9]
C#.NET 国密SM2 签名验签 与JAVA互通 ver:20230807
C#.NET 国密SM2 签名验签 与JAVA互通 ver:20230807
.NET 环境:.NET6 控制台程序(.net core)。
JAVA 环境:JAVA8(JDK8,JAVA 1.8),带maven 的JAVA控制台程序。
1.最好要到对方源...[2023/8/9]
quarkus依赖注入之十:学习和改变bean懒加载规则
欢迎访问我的GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https: github.com/zq2599/blog_demos
本篇概览
本篇是《quarkus依赖注入》系列的第十篇,来看一个容易被忽略的知识点:bean的懒加载,咱们先去了解quarkus框架下的懒加载规则...[2023/8/9]
SpringBoot3之Web编程
标签:Rest.拦截器.swagger.测试;
一、简介
基于web包的依赖,SpringBoot可以快速启动一个web容器,简化项目的开发;
在web开发中又涉及如下几个功能点:
拦截器:可以让接口被访问之前,将请求拦截到,通过对请求的识别和校验,判断请求是否允许通过;
页面交互:...[2023/8/9]
C#.NET 国密SM2 加密解密 与JAVA互通 ver:20230805
C#.NET 国密SM2 加密解密 与JAVA互通 ver:20230805
.NET 环境:.NET6 控制台程序(.net core)。
JAVA 环境:JAVA8,带maven 的JAVA控制台程序。
简要解析: 1.最好要到对方源码(DEMO+JAR...[2023/8/7]
Java程序员的MacBookPro(14寸M1)配置备忘录
欢迎访问我的GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https: github.com/zq2599/blog_demos
本篇概览
欣宸的月俸虽然很低,但还是咬着牙攒够银子,入手了最低配置的MacBook Pro 14(M1芯片,刘海屏,丐版),经过一段时间折腾,终于...[2023/8/7]
C#.NET 国密SM3 HASH 哈希 与JAVA互通 ver:20230803
C#.NET 国密SM3 HASH 哈希 与JAVA互通 ver:20230803
.NET 环境:.NET6 控制台程序(.net core)。
JAVA 环境:JAVA8,带maven 的JAVA控制台程序。
简要解析:
1:明文输入参数都需要stri...[2023/8/7]
三万字盘点Spring 9大核心基础功能
大家好,我是三友~~
今天来跟大家聊一聊Spring的9大核心基础功能。
其实最近有小伙伴私信问我怎么不写文章了,催更来了
其实我不是不写,而是一直在写这篇文章,只不过令我没想到的是,从前期的选题、准备、翻源码、动手到写完,前后跨度接近一个月的时间,花了好几个周末,写了三万字,最终才算完...[2023/8/4]
protoc-gen-doc 自定义模板规则详解
protoc-gen-doc 自定义模板规则详解
配套演示工程
此项目中所用 proto 文件位于 ./proto 目录下,来源于 官方proto示例
此项目中所列所有模板case文件位于 ./tmpl 目录下
此教程均基于 markdown 文本演示
前言
最近有通过 proto 文件...[2023/8/4]
简述分布式链路追踪工具——Jaeger
1、简介
1.1 Jaeger是什么
Jaeger 是受到 ? ?Dapper??? 和 ? ?OpenZipkin??? 启发的由 ? ?Uber Technologies?? 作为开源发布的分布式跟踪系统,兼容 OpenTracing ...[2023/8/4]
quarkus依赖注入之六:发布和消费事件
欢迎访问我的GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https: github.com/zq2599/blog_demos
本篇概览
本文是《quarkus依赖注入》系列的第六篇,主要内容是学习事件的发布和接收
如果您用过Kafka、RabbitMQ等消息中间件,对消息...[2023/8/4]
【高并发】SimpleDateFormat类到底为啥不是线程安全的?(附六种解决方案,建议收藏)【高并发】SimpleDateFormat类到底为啥不是线程安全的?(附六种解决方案,建议收藏)
大家好,我是冰河~~
首先问下大家:你使用的SimpleDateFormat类还安全吗?为什么说SimpleDateFormat类不是线程安全的?带着问题从本文中寻求答案。
提起SimpleDateFormat类,想必做过Java开发的童鞋都不会感到陌生。没错,它就是Java中提供的日期时间...[2023/8/2]
面试再也不怕问ThreadLocal了面试再也不怕问ThreadLocal了
要解决多线程并发问题,常见的手段无非就几种。加锁,如使用synchronized,ReentrantLock,加锁可以限制资源只能被一个线程访问;CAS机制,如AtomicInterger,AtomicBoolean等原子类,通过自旋的方式来尝试修改资源;还有本次我们要介绍的ThreadLoca...[2023/8/2]
NativeBuferring,一种零分配的数据类型[下篇]
上文说到Unmanaged、BufferedBinary和BufferedString是NativeBuffering支持的三个基本数据类型,其实我们也可以说NativeBuffering只支持Unmanaged和IReadOnlyBufferedObject<T>两种类型,Buff...[2023/8/2]
C#.NET 国密SM4对称加解密 与JAVA互通 ver:20230731
C#.NET 国密SM4对称加解密 与JAVA互通 ver:20230731
.NET 环境:.NET6 控制台程序(.net core)。
JAVA 环境:JAVA8,带maven 的JAVA控制台程序。
简要解析:
1:加密的KEY、明文等输入参数都需...[2023/8/2]
为什么list.sort()比Stream().sorted()更快?为什么list.sort()比Stream().sorted()更快?
昨天写了一篇文章《小细节,大问题。分享一次代码优化的过程》,里面提到了list.sort()和list.strem().sorted()排序的差异。
说到list sort()排序比stream().sorted()排序性能更好。
但没说到为什么。
有朋友也提到了这一点。
本文重新开始,...[2023/8/2]
quarkus依赖注入之四:选择注入bean的高级手段
欢迎访问我的GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https: github.com/zq2599/blog_demos
本篇概览
本文是《quarkus依赖注入》系列的第四篇,在应用中,一个接口有多个实现是很常见的,那么依赖注入时,如果类型是接口,如何准确选择实现呢...[2023/8/2]
Builder 生成器模式简介与 C# 示例【创建型2】【设计模式来了_2】
〇、简介
1、什么是生成器模式?
一句话解释:
??在构造一个复杂的对象(参数多且有可空类型)时,通过一个统一的构造链路,可选择的配置所需属性值,灵活实现可复用的构造过程。
生成器模式的重心,在于分离构建算法和具体的构造实现,从而使得构建算法可以重用。采用不同的构建实现,产生不同的产品。所以...[2023/8/2]
【手写系列】手把手教你如何实现 列表转树-树转列表
这个应该算是前端中经常出现的业务场景,不过大部分都是由组件库帮助你做好了这些事情
如果要是让你自己来实现,你又会如何实现呢?
今天,我们就来好好讲解下这两个需求该如何去写,在知道如何用的情况下,也要知道如何实现它们。
从这篇文章你能学到(复习)什么东西
JS中Map的用法
递归解法
h...[2023/7/31]
是时候丢掉BeanUtils了
前言
为了更好的进行开发和维护,我们都会对程序进行分层设计,例如常见的三层,四层,每层各司其职,相互配合。也随着分层,出现了VO,BO,PO,DTO,每层都会处理自己的数据对象,然后向上传递,这就避免不了经常要将一个对象的属性拷贝给另一个对象。
例如我有一个User对象和一个UserVO对象,...[2023/7/31]
JVM调优篇:探索Java性能优化的必备种子面试题JVM调优篇:探索Java性能优化的必备种子面试题
JVM内存模型
首先面试官会询问你在进行JVM调优之前,是否了解JVM内存模型的基础知识。这是一个重要的入门问题。JVM内存模型主要包括程序计数器、堆、本地方法栈、Java栈和方法区(1.7之后更改为元空间,并直接使用系统内存)。
正常堆内存又分为年轻代和老年代。在Java虚拟机中,年轻代...[2023/7/31]
记一次线上问题 → Deadlock 的分析与优化记一次线上问题 → Deadlock 的分析与优化
开心一刻
今天女朋友很生气
女朋友:我发现你们男的,都挺单纯的
我:这话怎么说
女朋友:脑袋里就只想三件事,搞钱,跟谁喝点,还有这娘们真好看
我:你错了,其实我们男人吧,每天只合计一件事
女朋友:啥事呀?
我:这娘们真好看,得搞钱跟她喝点
问题复现
...[2023/7/31]
体验IntelliJ IDEA的远程开发(Remote Development)
欢迎访问我的GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https: github.com/zq2599/blog_demos
本篇概览
IDEA的远程开发功能,可以将本地的编译、构建、调试、运行等工作都放在远程服务器上执行,而本地仅运行客户端软件进行常规的开发操作即可,官...[2023/7/31]
SpringBoot 启动流程分析(寻找扩展点) - M-Anonymous
1、SpringBoot maven 依赖版本
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http: maven.apache.org/POM/4.0.0"
xmlns:xsi="http:...[2023/7/31]
浅析访问者模式
0. 前言
在阅读 Kubernetes: kubectl 源码时看到有关访问者设计模式的运用。访问者模式是行为型设计模式的一种,本篇文章将对访问者模式做一个介绍。
1. 访问者模式
1.1 示例
首先,给出一个比较粗糙的示例。
实现程序,功能如下:
当男人成功时,显示我有一个好老婆;当...[2023/7/31]
java基础——泛型
泛型的引入
看下面这段代码:
private static int add(int a, int b) {
System.out.println(a + "+" + b + "=" + (a + b));
return a + b;
}
private static floa...[2023/7/31]
quarkus依赖注入之二:bean的作用域
欢迎访问我的GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https: github.com/zq2599/blog_demos
关于bean的作用域(scope)
官方资料:https: lordofthejars.github.io/quarkus-cheat-she...[2023/7/31]
并发编程-CompletableFuture解析
1、CompletableFuture介绍
CompletableFuture对象是JDK1.8版本新引入的类,这个类实现了两个接口,一个是Future接口,一个是CompletionStage接口。
CompletionStage接口是JDK1.8版本提供的接口,用于异步执行中的阶段处理,C...[2023/7/28]
策略模式+Spring配置类优化多if..else思路
图示
1. 现状
场景: 假设设备上报不同类型的消息,我们要对不同类型的消息做不同的处理。如果我们通过if..else的方式处理的话会显得比较冗余。
例如:
if("alarmEvent".equals(msg)){
处理告警消息逻辑 ...
}else if("devi...[2023/7/28]
JVM 常见错误汇总
栈内存溢出
栈内存错误包括:栈帧过多(StackOverflowError)、栈帧过大(OutOfMemoryError)
StackOverflowError:如果线程请求的栈深度大于虚拟机所允许的最大深度;
OutOfMemoryError:如果虚拟机的占内存允许动态扩展,当扩展容量无法申...[2023/7/28]
Java并发篇:6个必备的Java并发面试种子题目
线程创建和生命周期
线程的创建和生命周期涉及到线程的产生、执行和结束过程。让我们继续深入探索这个主题:
线程的创建方式有多种,你可以选择适合你场景的方式:
继承Thread类: 创建一个类,继承自Thread类,并重写run()方法。通过实例化这个类的对象,并调用start()方法,系统会自...[2023/7/28]
Jenkins-Pipline实现原理
Jenkins-Pipline原理
本文仅探讨jenkins pipline 的原理,是流水线的一个demo版本实现,不能代表Jenkins pipline的具体实现,仅供参考。
1. Jenkins流水线介绍
Jenkinsfile流水线是Jenkins CI/CD工具中用来定义、构建和...[2023/7/28]
Java8 函数式编程stream流
开篇介绍
Java 8 中新增的特性旨在帮助程序员写出更好的代码,其中对核心类库的改进是很关键的一部分,也是本章的主要内容。对核心类库的改进主要包括集合类的 API 和新引入的流(Stream),流使程序员得以站在更高的抽象层次上对集合进行操作。下面将介绍stream流的用法。
1.初始环境准备...[2023/7/28]
quarkus实战之八:profilequarkus实战之八:profile
欢迎访问我的GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https: github.com/zq2599/blog_demos
本篇概览
本文是《quarkus实战》系列的第八篇,经过前面的学习,咱们对配置有了足够了解,但问题也随之而来:如何让应用以最小的改动同时运行在不同...[2023/7/28]
你真正了解Spring的工作原理吗
Spring
1.1 什么是Spring IOC 和DI ?
① 控制反转(IOC):Spring容器使用了工厂模式为我们创建了所需要的对象,我 们使用时不需要自己去创建,直接调用Spring为我们提供的对象即可,这就是控 制反转的思想...[2023/7/26]
源码解析Collections.sort ——从一个逃过单测的 bug 说起
本文从一个小明写的bug 开始,讲bug的发现、排查定位,并由此展开对涉及的算法进行图解分析和源码分析。
事情挺曲折的,因为小明的代码是有单测的,让小明更加笃定自己写的没问题。所以在排查的时候,也经历了前世的500年,去排查排序后的list改动(主要是小明和同事互相怀疑对方的代码,不多说了)。...[2023/7/26]