
Java后端工程师
文章平均质量分 75
Java后端体系
程光CS
Auf dem Wasser zu singen, Op.72, D.774 - Auf dem Wasser zu singen, Op.72, D.774
展开
-
Git如何将多个commit合并一个commit
问题场景:我在fork的仓库提交多个commit后,准备向原仓库提交pr,但是原仓库要求一个pr一个commit,因此需要先将这些commit合并为一个。#### 1.先拿到要合并的commit中最早的一个的commit id,然后进入仓库,使用如下git log命令拿到这个commit的前一个commit的id(打印出的第二个,如下图)```bashgit log --pretty=format:"%H %P" -n 1 ```原创 2024-01-05 19:05:22 · 2030 阅读 · 0 评论 -
Linux中安装了openjdk后jps command not found
### 一、问题场景在Linux中用yum安装了openjdk-17,也在.bashrc中配置了环境变量JAVA_HOME以及bin目录的PATH。但是在运行jps命令时依然报错找不到命令。### 二、原因分析进入到$JAVA_HOME/bin目录查看,发现只有寥寥几个命令,压根没有jps命令,这是什么情况呢?再次确认安装的jdk版本,并使用yum info命令查看软件包的详细信息。发现安装的软件包并不是jdk,而是jre,jre只是Java运行时环境,是不包含jps命令工具的,jps是jdk(Jav原创 2023-12-27 19:15:26 · 2432 阅读 · 1 评论 -
Java中的函数式编程
从宏观的角度说,面向对象编程思想是抽象出一个个对象,使用这些对象互相协作来达成目的。而函数式编程是定义一种处理规则,就像数学里面定义的函数,我接收一个输入,并针对相同的输入产生一个固定的输出。函数式编程就是使用这些独立的函数来组合达成目的。从具体的角度说,函数式编程中可以将一个函数像变量一样定义或传递,可以在方法中接收一个函数作为参数,或者说接收一种处理规则,然后在方法中就可以使用这个函数来接收输入并产生输出。原创 2023-08-27 12:18:22 · 372 阅读 · 0 评论 -
Dubbo与微服务架构简介
微服务架构就是将所有服务模块都拆分出来单独开发部署,模块之间通过RPC通信优势1. 可针对模块的热度精准弹性扩容或缩容,扩展性好。2. 拆分模块使得模块之间耦合度降低,不会因为一个模块出问题导致整个应用都无法使用。3. 维护成本低,在发布某个模块时只需要发布这个模块就行了,不需要发布整个应用系统。4. 开发技术栈更灵活,不同的模块可以采用不同的编程语言实现,由RPC框架进行服务桥接。微服务代表框架:Spring Cloud,DNS(Dubbo、Nacos、Sentinel)微服务架构框架转载 2023-08-26 21:10:58 · 287 阅读 · 0 评论 -
Spring中什么是Bean及其生命周期
SpringBoot中是通过三级缓存来解决循环依赖的,这三级缓存都是一个Map:1. 一级缓存singletonobjects:就是前面的单例池map,用于存储已经创建完成的Bean对象。2. 二级缓存earlySingletonObjects:用于缓存提前创建的Bean对象。3. 三级缓存singletonFactories:用于缓存提前创建Bean对象的lambda表达式。解决循环依赖的步骤:- 比如说在创建A类的Bean对象前,会将其放到一个**creatingSet**中,表示这个类的B原创 2023-08-16 20:35:18 · 260 阅读 · 0 评论 -
Spring中AOP原理与使用案例
AOP (Aspect Oriented Programming) ,意为: 面向切面编程,可以通过预编译方式或运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。AOP的编程思想就是把很多类对象中的横切问题点,从业务逻辑中分离出来,从而达到解耦的目的增加代码的重用性,提高开发效率。SpringBoot项目导入spring-boot-starter-aop依赖编写切面类类上加@Aspect注解,表明这是一个切面类。转载 2023-08-07 18:12:21 · 163 阅读 · 0 评论 -
幂等性问题 —— 如何防止重复创建订单
幂等性:对接口多余重复调用的结果和单次调用的结果一致。## 二、幂等性实现方案**核心思想**:首先要根据业务判断什么是重复相同的请求,然后相同的请求都携带或生成一个唯一的识别码,这样在服务端就可以进行判别处理### 1. 基于token机制实现在允许一次独立的接口调用前先向服务端请求生成一个唯一token并存放在redis,当发起接口请求调用时携带上这个token,服务端进行校验,请求成功就删除这个token,后续的重复请求就无效了。例如在防止订单重复提交时,除了在前端设置请求加载蒙版原创 2023-08-03 20:40:25 · 626 阅读 · 0 评论 -
Tomcat整体架构解析
Tomcat是一个开源的轻量级web应用服务器。Tomcat中最顶层的容器是Server,即代表一个Tomcat服务器,一个Server中可以有多个Service,对外提供不同的web服务。Service是对Connector和Container的封装,一个Service中有一个或多个连接器,和一个Container容器。连接器Connector负责监听端口接收请求并按照设定的协议进行解析数据,将解析后的请求交给容器处理。原创 2023-05-02 21:21:38 · 2494 阅读 · 0 评论 -
maven项目(非Spring boot)中配置使用redis(使用jedis库)
前言:最近有个Java项目需要用到redis,但在网上找了一圈基本都是写在Spring boot项目中怎么配置的,那其实和在纯Java项目中配置还是有些区别的,因为Spring boot会帮忙做一些配置工作,而且有些配置属性名还和JedisPool原属性名还不一样,因此在这里记录一下吧redis是一个支持高并发的非关系型数据库(key-value存储),常用来做缓存系统,怎么安装这里就不赘述了网上很多教程,直接进入正题——使用jedis库在maven项目中连接redis旁白:jedis是一个用来维.原创 2022-03-30 11:13:36 · 5498 阅读 · 7 评论