自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 资源 (2)
  • 收藏
  • 关注

原创 详解优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器

Spring中的ThreadPoolTaskExecutor是借助于JDK并发包中的java.util.concurrent.ThreadPoolExecutor来实现的

2024-03-16 20:49:49 1080

原创 解决:InheritableThreadLocal与线程池共用的问题

InheritableThreadLocal 是 ThreadLocal 的一个子类,它不但继承了ThreadLocal的所有特性,父线程中的 InheritableThreadLocal 变量的值可以被子线程继承。

2024-03-16 18:40:28 986

原创 InheritableThreadLocal和ThreadLocal的区别和使用场景

快人快语,先说结论,InheritableThreadLocal 是 ThreadLocal 的一个子类,它包含ThreadLocal 的所有功能并且扩展了 ThreadLocal 的功能,允许父线程中的 InheritableThreadLocal 变量的值被子线程继承。这意味着,当创建一个新的线程时,这个新线程可以访问其父线程中 InheritableThreadLocal 变量的值。

2024-03-15 20:40:46 831

原创 这样用线程池才优雅-企业级线程池示例

企业级线程池定义示例,拿走直接用

2024-03-12 10:30:00 652

原创 这样写脱敏工具方法类才优雅-利用枚举和注解优雅脱敏

优雅的实现报文脱敏

2024-03-12 09:30:00 1014

原创 【redission分布式锁】到底要用lock还是tryLock

如果想实现分布式锁请看上一篇文章【上一篇文章留了一个小尾巴,redission的lock方法是会阻塞的,具有一定的风险,意思就是说,这是一个获取锁的方法,但是如果锁已经存在会进行等待。这个等待是没有时间限制的,有兴趣可以看一下源码,利用的是while(true)循环。注解意思是,获取锁,获取不到就等待,但是waitTime耗尽的时候就不再等待,并返回false。跟lock的区别有两个,一是不会无限等待,甚至可以不等待(waitTime设置为0);二是有返回值,代表是否占用锁成功。

2024-03-09 15:50:34 364

原创 这样写redission分布式锁才优雅-自定义redission分布式锁注解(含spel表达式)

一个优雅的分布式锁实现方法,开箱即用

2024-03-09 15:00:13 698

原创 用大白话举例子讲明白云计算

用大白话讲明白云计算

2023-12-23 22:35:08 1536 1

原创 【解决】org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.choose(Ljava/lang/String……

本质上是jar包冲突,nacosnacos依赖的ribbon和springcloud的ribbon存在同个方法的不同实现,导致了不兼容。主要原因是还是jar包冲突,nacos依赖的ribbon和springcloud的ribbon存在同个方法的不同实现,不兼容。开发环境:本地SpringCloud项目升级SpringCloud版本,调用Feign接口,通过ribbon配置负载均衡。mvn重新编译,项目再次启动,问题解决。

2023-12-23 17:48:16 634 1

原创 用大白话举例子讲明白区块链

用大白话说清楚什么是区块链

2023-12-19 22:22:10 1271

原创 【文心一言实践】使用文心一言创建MYSQL表及实体模型和Mapper

文心一言协助编程实践,问答式编程创建mysql数据表及其dao层接口

2023-12-04 22:04:41 494 3

原创 文心一言代码能力测试:文心一言能否取代程序员?

文心一言代码协助能力使用体验,这篇博客基本上就是文心一言帮忙写的,素材是我和文心一言的对话,国产大语言模型确实取得了巨大的成就,在和文心一言对话的过程中感到未来已来,确实和之前的自动问答机器人不一样。我连续指正两次问题,但是文心一言还是没有get到点,文心一言的知识储备是没有问题,代码本身也是可以运行,对于方法的封装、代码风格都是可圈可点,只是没有解决问题。问:上面生成的代码,仅仅更新了redis中的库存变量,但是库存的更改也应该同时修改数据库中的数据,并且保证redis和数据库的一致性。

2023-09-16 17:34:22 1070

转载 SQL开窗函数over()的用法实例

最近用到了开窗函数,但我在本地想要学习用法时,本地的MySql服务器版本太低不支持该函数,故转载其他人的博客记录一下,待以后再详细还原。

2022-08-07 15:32:48 3047

原创 SpringBoot+HibernateValidator优雅的接口入参校验(代码实例)

SpringBoot+HibernateValidator优雅的接口入参校验(代码实例)

2022-03-28 20:56:51 357

原创 Spring/SpringBoot统一异常处理@RestControllerAdvice(ExceptionHandleAdvice)

Spring/SpringBoot统一异常处理@RestControllerAdvice(ExceptionHandleAdvice)异常的友好化处理

2021-11-30 22:57:15 879

原创 使用Spring AOP实现方法入参日志打印/请求响应日志打印

在实际的项目中对外暴露的接口通常需要打印请求日志,以下就是使用切面做一个请求日志打印的功能:首先先导入AOP相关的包,SpringBoot的项目启动类需要添加@EnableAspectJAutoProxy 注解<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></de

2021-11-28 18:43:46 986

原创 解决:同一个类中方法调用,导致@Transactional失效(AopContext.currentProxy())

我前面有一个文章讲了当调用本类方法时,被调用方法的@Transactional注解会失效,所以建议大家用编程式事务。Spring/SpringBoot实现编程式事务然而今天,自己推翻我自己,分享一个怎么在调用当前类带有事务注解的方法时,还能强制使事务生效的方式。((YourClass) AopContext.currentProxy()).withTransactionMethod(keyword);这种写法相当于用AOP的方式调用同类的方法,使得@Transactional注解生效。spring

2021-11-28 18:05:16 4033 1

原创 SpringBatch-Mysql建表和初始化语句

SpringBatch-Mysql建表和初始化语句CREATE TABLE `batch_job_instance` ( `JOB_INSTANCE_ID` bigint(20) NOT NULL COMMENT '主键。作业实例ID编号,根据BATCH_JOB_SEQ自动生成', `VERSION` bigint(20) DEFAULT NULL COMMENT '版本号', `JOB_NAME` varchar(100) NOT NULL COMMENT '作业名称。即在配置文件中定义的

2021-10-05 23:07:21 791 1

原创 Spring/SpringBoot实现编程式事务

首先需要了解的是为什么需要编程式事务?声明式事务(@Transactional)明明更简洁好用。声明式事务的缺陷声明式事务表面上简洁好用,但是实际上是牺牲了一些灵活性的,@Transactional注解并不是用在哪里都能生效,@Transactional生效的条件:@Transactional注释的方法,不能是private修饰@Transactional注释的方法,必须是有接口的方法实现(通用的Spring面向接口编程的套路)@Transactional注释的方法,必须要通过接口的方式调用,才

2021-10-05 16:14:48 1507

原创 详解:被人误解的ScheduledThreadPoolExecutor定时器

总所周知,ScheduledThreadPoolExecutor是更优于Timer的JDK定时任务,该类支持多线程执行定时任务,能够保证更加准确的时间间隔。该类有三个核心方法,他们分别是:schedule 创建并执行在给定延迟后启用的单次操作。public ScheduledFuture<?> schedule(Runnable command,long delay,TimeUnit unit)scheduleAtFixedRate 创建并执行在给定的初始延迟之后,随后以给定的时间段

2020-12-29 22:21:51 663

原创 Java定时器之JDK自带的定时器实现方式

既然要详细说说定时器,就由浅入深,先从最简单的说起。我首先接触到的定时器就是根据线程的Thread.sleep()方法实现的,最开始学习java的时候,会用这个方法实现一些简单的动画效果,今天就来回顾一下当初的小动画!1. 利用Thread.sleep();方法实现定时任务首先 Thread.sleep(times)方法是干嘛的呢,它是用来阻塞当前线程运行的一个方法,按字面意思就是让当前线程睡一会,把CPU资源让给其他线程……你给它传入一个long参数,就是你希望她睡多久的时间值。随便一提,我旁边的

2020-12-25 00:21:36 809

原创 详解Redis集群配置哨兵模式(redis-sentinel)

哨兵模式详解背景在哨兵模式出现之前,如果redis主从复制集群的主服务器宕机,那么运维人员需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,哨兵模式出现之后,这种方式基本已经被替代。什么是哨兵模式哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。这里的哨兵有两个作用:通过发送命令,让R

2020-11-16 17:59:20 662

原创 搭建Redis简易集群实现主从复制和读写分离

redis不禁支持去中心化的集群模式,也可以实现主从复制集群。下面我将一步步搭建一套简易的主从复制集群,帮助大家理解主从复制和哨兵模式。1. Redis的下载安装请参考:Linux(centos7)安装配置并启动Redis全过程及make报错问题解决2. 主从复制模型我画了个草图,这是一个一主二从的简易集群模型,master用来写入,slave用来读数据,实现读写分离。我们接下来就是要实现这样一个集群系统。3. 集群环境搭建我这里使用了一台centos7的虚拟机来搭建这个demo,所需环境.

2020-11-11 19:32:54 717 2

原创 解密Redis事务(redis事务有没有原子性)

事务是什么意思事务:是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作;这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行;事务是一组不可再分割的操作集合(工作逻辑单元);事务的四大特性:原子性事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做一致性事 务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统 运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事

2020-11-11 11:52:54 2666

原创 解决:连接远程redis服务失败(在linux部署)

问题描述:我在远程linux上部署了redis服务并在linux本地连接成功,但是在远程windows上用Jedis(或redis客户端)连接失败。代码如下: public static void main(String[] args) { Jedis jedis = new Jedis("192.168.31.150", 6379); System.out.println(jedis.ping()); }错误日志如下(*是为了隐藏真实信息)Excepti

2020-11-05 11:28:37 1767

原创 Redis常用命令及用法大全

最近面试了很多java开发,简历上清一色的写着熟练使用redis,但是只能回答redis是什么,缓存雪崩、缓存穿透是什么意思等常见面试问题,就连redis常用命令都说不上来。现在很多框架或者工具都已经封装的很完美,用起来也只是傻瓜式操作,但是作为一个开发者,不能仅仅当一个傻瓜。PS: redis所有命令不区分大小写1. 联通测试启动服务端和客户端之后,首先要进行客户端是否连通服务端,命令如下命令描述ping收到‘pong’说明联通成功2. KEY命.

2020-11-04 18:49:47 348

原创 Linux(centos7)安装配置并启动Redis全过程及make报错问题解决

下载并将压缩包传到虚拟机,下载地址:https://redis.io/然后通过xftp将压缩包传到虚拟机/opt 目录下解压官网压缩包cd /opt 到压缩包所在目录下执行解压缩命令tar -zxvf redis-6.0.5.tar.gz安装gcc(redis6版本及以上请往下看)yum -y install gcc-c++进入解压文件夹,执行make因为make命令执行的,其实是一个名为baimakefile,或者是名du为Makefile(Linux是大小写敏感的)的文件里的

2020-10-30 14:58:16 1612 1

原创 Linux安装JDK8并配置环境变量

1.下载jdk去Oracle官网下载最新jdk8https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html我这里选择下载 jdk-8u271-linux-x64.rpm注意:i586是32位的,x64是64位的,根据Linux系统位数来选择。2.登录Linux系统,切换root用户在终端输入“su root”命令,回车,再输入root用户密码。(获取最大权限)3.安装JDK不管你用啥子方式,在这一步之

2020-10-29 15:48:58 789

原创 将Idea中的项目上传到github报错:refusing to merge unrelated histories

问题描述:问题出现于我将本地写的项目上传到github时。本地git仓库已经初始化,并进行了add和commit到本地仓库的操作。当我直接执行push到origin/master(main)操作时会报错:Push rejected: Push to xxx/master was rejected具体错误日志如下:Pushing to xxx.gitTo xxx.git ! [rejected] master -> master (non-fast-forward)er

2020-10-10 16:52:12 717

原创 设置GitIgnore 避免不必要的文件上传到git

将自己的本地项目提交到github的时候,往往会将一些乱七八糟的本地配置文件上传到远程仓库,有的文件还会导致clone下来的项目报错,这些文件诸如:我们可以通过idea设置GitIgnore:常见的忽略文件设置:*.hprof;*.pyc;*.pyo;*.rbc;*.yarb;*~;.DS_Store;.git;.hg;.svn;CVS;__pycache__;_svn;vssver.scc;vssver2.scc;*.mvn;*.md;mvnw;*.cmd;*.gitignore;*.log;

2020-10-10 15:48:29 567

原创 Log4j.properties实例

### 设置###log4j.rootLogger = debug,stdout,D,E### 输出信息到控制抬 ###log4j.appender.stdout = org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target = System.outlog4j.appender.stdout.layout = org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.Co

2020-10-03 21:17:57 221

原创 Mybatis:解决属性名和字段名不一致的问题

问题描述常见的mybatis语句:<select id="getAllUsers" resultType="com.term.model.User"> select * from user </select>当数据库中的字段名和实体类的属性名一致的时候,类型映射器将自动赋值,并返回一个完整的User对象。而当有属性名和字段名不一致的时候,自动赋值无法完成,会出现属性值为空的情况。解决方法1、Sql语句使用别名<select id="get

2020-10-03 18:27:25 730

原创 Idea自定义设置/常用配置

每次重装系统或者升级工作环境,都要面临重装开发工具重新配置的苦恼,记录一下我的idea常用配置1、常规设置更改字体大小Editor–>Font中 修改字体大小更改主题Appearance&Behavior -> Appearance -> Theme 设置为 Darcula创建文件时 增加注释信息Editor–>File and Code Templates–>includes–>File Header设置文件编码Editor–>File

2020-10-03 17:33:07 455

原创 用Idea搭建一个Mybatis项目

什么是 MyBatis?MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。官方文档https://mybatis.org/mybatis-3/zh/index.html最好的官方文档之一,一篇文档读懂,根

2020-10-03 15:53:25 1051 2

原创 Jackson简介

Java生态圈中有很多处理JSON和XML格式化的类库,Jackson是其中比较著名的一个。虽然JDK自带了XML处理类库,但是相对来说比较低级,使用本文介绍的Jackson等高级类库处理起来会方便很多。引入类库由于Jackson相关类库按照功能分为几个相对独立的,所以需要同时引入多个类库,为了方便我将版本号单独提取出来设置,相关Gradle配置如下。ext { jacksonVersion = '2.9.5'}dependencies { compile group: 'co

2020-09-18 21:14:09 1001

原创 图解用idea搭建一个Gradle+Spring的web工程(建项目)

上一篇文章详细介绍了下载gradle之后环境的配置,已经gradle仓库的基本配置,接下来我们聊聊实战,怎么用gradle搭建一个WEB项目。环境:Windows10、JDK8开发工具:Idea框架:Spring、Gradle新建webapp文件夹打开idea,找到上篇文章我们一起新建的空白项目(没看上一篇的现在看也行,很短的)现在它只是一个java项目,并不是javaweb项目,我们先给它注入web项目的灵魂:在项目的main文件夹下创建一个叫webapp的文件夹,然后再在webapp下面创

2020-08-17 21:22:30 926

原创 图解用idea搭建一个Gradle+Spring的web工程(搭环境)

第一步 必需环境1、 安装JDK,并配置JAVA_HOME环境变量2、 安装idea,社区版即可3、 安装Gradle在座的各位都是大神,以上步骤请自行完成第二步 Gradle配置环境变量配置1、以gradle5.0,下载解压到你想要的目录,随手复制一下路径:2、 以windows10为例,右键我的电脑 - 属性 - 高级系统设置 - 环境变量:3、打开环境变量页面之后,在系统变量下面点击新建,创建一个名为GRADLE_HOME的变量名,变量值就是刚才你复制的gradle安装路径,我

2020-08-10 21:42:12 328

翻译 Testng框架简介

文档参考自官方地址:http://testng.org/doc/documentation-main.html#testng-listeners1. 介绍TestNG是一个设计用来简化广泛的测试需求的测试框架,从单元测试(隔离测试一个类)到集成测试(测试由有多个类多个包甚至多个外部框架组成的整个系统,例如运用服务器)。编写一个测试的过程有三个典型步骤:* 编写测试的 业务逻辑并在代码中插入TestNG annotation* 将测试信息添加到testng.xml文件或者build.xml中

2020-08-03 21:40:04 743

原创 Java菜鸟笔记:String.format()

在开发项目打印日志的时候,需要记一些带有变量的日志,经常会用到String.format(),什么?你没用过?那我猜你一定是这样打印的://以System.out代替日志打印作为事例:int a = 10;System.out.println(“这里有一个变量值:” + a + “,后续文字”);控制台输出:这里有一个变量:10,后续文字。如果你用String.format()就可以这样写:int a = 10;System.out.println(String.format("这里有

2020-08-02 18:24:29 961

原创 Java菜鸟笔记:JAVA中常用容器概述(List,Set,Map)

本章开启java容器介绍篇章,这一节只是简单介绍,之后会有每种容器的详细介绍以及常见场景和问题,还会一起复习数据结构的知识,深知涉及一些搜索算法等,敬请期待

2020-08-01 17:02:37 203

简约灰样式,简洁商务风格程序员求职简历模板一份

简约灰样式,简洁商务风格程序员求职简历模板一份

2023-12-24

SpringCloud全家桶+Springboot+Mybatis+MySql项目pom.xml文件开箱即用开箱即用

比较新又稳定的SpringCloud版本,具体依赖版本如下: SpringCloud版本2020.0.6 SpringBoot版本2.5.2 这是SpringCloud2020.0.6版本对应的各组件版本: Spring Cloud Netflix 3.0.6 Spring Cloud Config 3.0.7 Spring Cloud Sleuth 3.0.6 (issues) Spring Cloud Gateway 3.0.8 Spring Cloud Cloudfoundry 3.0.3 Spring Cloud Contract 3.0.6 (issues) Spring Cloud Kubernetes 2.0.6 Spring Cloud Zookeeper 3.0.5 Spring Cloud Cli 3.0.4 Spring Cloud Task 2.3.5 Spring Cloud Starter Build 2020.0.6 Spring Cloud Openfeign 3.0.7 Spring Cloud Vault 3.0.5

2023-12-24

飞机大战/雷霆战机 全部Java源代码,可运行

飞机大战/雷霆大战 全部Java源代码,可运行。 飞机大战代码挥泪大甩卖,学Java面向对象必备小游戏。 加入了子弹奖励模式,和最终Boss,画面优美,可玩性强。可学习,可直接作为游戏玩

2019-03-05

高可靠性的Apache负载均衡服务器组的搭建 Apache集群

How To Set Up A Loadbalanced High-Availability Apache Cluster 详细介绍了如何搭建一套基于Apache的服务器集群组 实现服务器负载均衡

2018-09-15

空空如也

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

TA关注的人

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