自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 idea - 插件之 codeium(安装篇)

由于目前有很多博客文章没有对 Idea 安装进行详细的讲解和遇到问题的处理讲解,所以我经过踩坑后,记录下安装记录。codeium 插件需要注册账户授权才能使用,所以这一步应该是去官网注册授权。这里千万不要下载错了,一定是浅绿色图标的才行,另外一个是企业版的,需要花钱。打开刚刚登录 codeium 官网使用的浏览器。关于插件作用就不多做介绍,接下来开始正文。Idea 版本:2021.3.2。会出现以下这个弹窗,复制里面的。账号,也可以直接授权登录。填写好自己的信息,点击。

2023-06-29 16:12:38 13818 16

原创 Delay - 如何用 Redis 打造一个延迟队列、广播 (目录)

目录概要文章1:系统概要设计,及数据结构的使用:https://editor.csdn.net/md/?articleId=124813414文章2:分析将会遇到的问题,及针对问题合理的解决和方案:https://blog.csdn.net/qq_38800175/article/details/124828534文章3:软件架构的设计概述: https://blog.csdn.net/qq_38800175/article/details/124840738文章4:开发阶段,为解决一些问题

2022-05-19 10:14:06 646 1

原创 Delay - 如何用 Redis 打造一个延迟队列、广播(附加工具)

Delay - 如何用 Redis 打造一个延迟队列、广播(附加描述)1. 工具当然在写一个项目的时候肯定是会造一些工具类的轮子的,在 Redis 延迟队列中,涉及到的工具如下:1.1 智能睡眠工具睡眠工具是根据搬运线程每次搬运之后返回队列中剩余的元素个数,来判断本次睡眠的时间长短,每次搬运完毕一次后,会调用 sleep(long) 方法,具体的睡眠时间是根据配置而定:区间(个数)睡眠时间(秒)051-1000.5101-5000.2> 5000

2022-05-18 17:59:05 627

原创 Delay - 如何用 Redis 打造一个延迟队列、广播(软件架构的设计)

Delay - 如何用 Redis 打造一个延迟队列、广播(软件架构的设计)文章1:设计概述文章2:风险、问题、方案通过前两篇文章的描述,将数据结构的使用和将会出现的问题及解决方案有所阐述,那么在本文中将会继续软件架构的设计,软件架构设计要满足设计原则,那么在这里就将从以下几个方面开始对架构的设计进行阐述:1. 面向用户1.1. 消息添加入口/** * 生产者定义 * * @author zyred * @since v 0.1 * @since v 1.0 更名 */public

2022-05-18 16:23:45 566

原创 Delay - 如何用 Redis 打造一个延迟队列、广播(风险、问题、方案)

Delay - 如何用 Redis 打造一个延迟队列、广播(风险、问题、方案)从 上一篇文章中 的描述,知道了数据结构与线程之间的关系,那么就针对延迟队列暴露的问题进行探讨和解决方案。1. 消息确认机制使用过消息队列的同学都知道消息队列都是需要消息确认的,那么消息确认的目的就是为了告诉服务器延迟队列中,这个消息已经被成功消费,可以进行删除消息了,对于 Redis 而言,所有的数据都是存储在内存中,而内存是非常稀缺的资源,数据不能一直占用内存,从而影响其他的应用程序正常的运行在 Redis 延迟队列中

2022-05-18 16:21:37 377

原创 Delay - 如何用 Redis 打造一个延迟队列、广播(设计概述)

如何用 Redis 打造一个延迟队列、广播(设计概述)前言:何为延迟队列?这个话题我相信在阅读本文的时候就已经有很明确的答案了,那么想要实现一个延迟队列,应该具备哪些条件,如何做到更加灵活,且拥有高扩展能力?下面开始一一分析1. Redis 数据结构的选择在此,大多数人都知道使用 Zset 可以做延迟队列,也有很多博客当中描述了相关的使用和设计,在这里我也会做详细的解释:1.1. Zset 的使用(超时列表)## 添加元素Zadd key score member# Zadd zyred

2022-05-18 16:20:24 499

原创 Redis - Springboot中集成多个Redis客户端统一管理

Springboot中集成多个Redis客户端统一管理前言: 我们都知道 springboot 中要么是集群管理,要么是对单个 Redis 管理,但是维度没有对多个 Redis 管理。在工作中我们都发现 Redis 如果是用集群存储,那每个 Redis 服务器上保存的数据都是相同,其实这并不是我想要的,而我想要的是每个 Redis 上存储的内容是不相同的。例如 Redis1 上存储 1、2、3 的 key,Redis2 上存储 4、5、6 的数据,客户端只通过一套统一的代码获取到对应的值,那么这种我们该怎

2021-12-20 10:49:39 1800 3

原创 HashMap - 核心原理与知识点记录(下)

HashMap get 方法执行逻辑分析HashMap - 核心原理与知识点记录(上)HashMap - 核心原理与知识点记录(中)1. get 方法的源码分析public V get(Object key) { Node<K,V> e; // 计算出 hash 值 return (e = getNode(hash(key), key)) == null ? null : e.value;}final Node<K,V> getNode(int

2021-10-15 16:27:21 173

原创 HashMap - 核心原理与知识点记录(中)

HashMap resize 方法执行逻辑及部分问题的分析HashMap - 核心原理与知识点记录(上)本文主要通过一下几个问题进行探讨:如何进行扩容的,扩容大小为什么总是2的幂次大小 ?为什么链表转红黑树的阈值是 8 ?1. 如何进行扩容的 ?HashMap 无论是扩容还是初始化,在 Java8 版本中,都是用的同一个方法 resize(),那么接下来进入代码:final Node<K,V>[] resize() { Node<K,V>[] oldTab

2021-10-15 13:43:22 227

原创 HashMap - 核心原理与知识点记录(上)

HashMap 核心原理与知识点记录数据结构可视化网站: https://www.cs.usfca.edu/~galles/visualization/Algorithms.html本文主要通过一下几个问题进行探讨:什么是 HashMap?HashMap为什么要使用这样的数据结构?解决了什么问题?1.8 版本中hashcode 为什么要和 hash高16位做异或运算 ?HashMap 执行 put() 内部做了些什么事情 ?如何进行扩容的,扩容大小为什么总是2的幂次大小 ?采用红黑树的目的

2021-10-14 17:09:23 247 2

原创 Mybatis - 一文搞懂 Mybatis 究竟是如何解析SQL语句(下)

一文搞懂 Mybatis 究竟是如何解析SQL语句(下)前言:上一篇文章(一文搞懂 Mybatis 究竟是如何解析SQL语句(上)) 由于篇幅的问题,将下半部分挪到了本文中,那么本文将会接着上一篇文章进行详细分析 SQL 解析的过程,此文中会伴随着 DEBUG 模式的调试截图,通过图文的方式来描述表达一、解析 ${} 占位符紧接着上一篇文章,末尾 textSqlNode.isDynamic() 方法的解析,代码如下:public boolean isDynamic() { // 创建一个动态令

2021-07-23 08:23:58 599 3

原创 Mybatis - 一文搞懂 Mybatis 究竟是如何解析SQL语句(上)

一文搞懂 Mybatis 究竟是如何解析SQL语句(上)前言:本文紧接着 Mybatis是如何创建出SqlSessionFactory 一文进行详细分析,在上一篇文章中主要描述了 SqlSessionFactory 被创建的执行逻辑,那么在本文中,我们将详细探讨在创建出 SqlSessionFactory 的逻辑中,是如何解析 SQL 语句进行绑定的。那么本文中主要讲解上一篇文章 6 小节中 mapperElement(root.evalNode("mappers")); 这一句代码执行的逻辑,那么如果

2021-07-22 11:33:19 1917 2

原创 RabbitMQ - 网络单向畅通的情况进行数据同步

RabbitMQ - RabbitMQ同步两个SpringBoot服务数据参考:RabbitMQ整合SpringBoot API使用教程前言:在开发公司项目的时候,客户要求将两台服务的数据进行同步,条件是一台服务器在内网,一台服务器在外网,** 两台服务器上部署的代码完全一致 **, 内网可以访问外网,但是外网访问不了内网,在此条件下,诞生了本文将要描述的功能。思考1:数据同步中间件的采用方案1:数据库主从备份使用数据库主从备份,那么B服务器想要同步A服务器的就比较简单,但是A服务器同步B服务

2021-07-12 22:22:43 1147 7

原创 自定义表单开发过程及思路笔记

前言:由于公司项目中有一个自定义表单的需求,而本人却无类似开发经验,在朋友和同事的努力下,依然没有找到最佳的解决方案,后来自己根据自己对业务的了解和别人的思路借鉴,最终设计出了现在这款自定义表单的逻辑。项目环境:king base V8 (人大金仓数据库) ,Mybatis-Plus v3.4.2 ,spring-boot-2.2.5.RELEASE在本文中,主要阐述结合 VUEJS 动态表格的数据结构进行设计接口和数据库,在此之前,需要了解一下 VUEJS 动态表格核心思想 自定义的

2021-06-09 19:03:26 5248 9

原创 springboot - 自定义配置项实现boot项目的组件开启和关闭开发思路和开发过程记录

自定义配置项实现 boot 项目的组件开启和关闭开发思路和开发过程记录需求描述:由于 spring boot 项目拥有自动配置 (AutoConfiguration) 的功能,但是开发者不清楚 spring boot 配置原理的情况下,很难掌握到关闭某个组件在 spring boot 项目中自动配置。所以,在这种情况下,诞生了自定义配置项,来开启和关闭某个组件在 spring boot 项目中自动配置的功能该想法来自于项目开发中,多数项目组使用同一个脚手架进行二开的情况,很多项目根本就使用不到某些组

2021-04-20 10:04:50 1125 2

原创 Oauth2 - FastJson对Oauth2结果序列化问题的处理过程记录

问题的暴露起因: 在工作中,授权框架从 Spring Security 更换为 Oauth2,授权获取 token 的时候,发现登录后,使用 FastJson 和采用默认的Jackson2 颁发 token 返回结果格式完全不同,按照 Oauth2 官网提供的示例中的返回结果,对比使用 FastJson 返回结果完全不同,于是在这个情况下,决定先探一下 Jackson2 为什么会返回正确格式,而 FastJson 却存在问题。FastJson 错误格式{ "additionalInform

2021-04-15 15:33:56 1284 6

原创 J.U.C - CAS 操作 ABA 问题及解决方案

CAS 操作 ABA 问题及解决方案注意: 本文是博主自己的拙见,如发现描述或理解问题,可以联系博主随时修改。在上一篇文章中 《一篇文章看懂CAS》 描述到了 CAS 的工作原理,那么这篇文章来说一下 CAS 存在的 ABA 问题及如何解决什么是 ABA 问题 ?主内存中变量为 10,正常线程 t1 线程和错误线程 t2 线程同时 -5 那么 t1和t2 期望的值都是5,正常情况下只有 t1 才会正确执行,t2 会更新失败当线程 t1, t2 同时启动,并将主内存中的变量拷贝到自己工作空间

2021-01-08 14:19:04 148

原创 J.U.C - 一篇文章看懂CAS

一篇文章看懂CAS注意: 本文是楼主自己的拙见,如发现描述或理解问题,可以联系博主随时修改。什么是CAS?CAS (compare And Swap) 及比较和交换,那么问题来了。是什么和什么比较,又是什么和什么进行交换的,接下来一个简单例子进入正题:public class CasDemo { static int a = 0; public static void increment (){ a ++; } public static v

2021-01-08 11:41:21 214 1

原创 Mybatis(九) - 手写Mybatis简单版本 - V1

手写Mybatis简单版本本篇文章是通过看视频学习总结的内容, 如有错误的地方请谅解,并联系博主及时修改,谢谢您的阅读.前言: 根据之前八篇博客的讲述,现在搞明白了 MyBatis 一系列的工作原理,那么就可以参照 MyBatis 自己写一个 半 ORM 框架,接下来先做分析,看看需要哪些对象、配置文件等等。开始前的准备项目依赖statementId 和 sql 的映射关系(mybatis 中是 mapper.xml),这里使用properties代替实体类全局配置对象 Configu

2020-12-31 15:39:40 165

原创 Mybatis(八) - Mybatis插件原理

Mybatis插件原理本篇文章是通过看视频学习总结的内容, 如有错误的地方请谅解,并联系博主及时修改,谢谢您的阅读.回顾上一篇文章:《Mybatis手写分页插件》前言: 根据上一篇博客《mybatis手写分页插件》已经参与过一次手写插件的过程,那么在本篇文章中,主要讲解 mybatis 是如何实现插件对四大对象的不同方法进行拦截的...

2020-12-31 15:39:28 193

原创 Mybatis(七) - Mybatis手写分页插件

Mybatis手写分页插件本篇文章是通过看视频学习总结的内容, 如有错误的地方请谅解,并联系博主及时修改,谢谢您的阅读.官网的解释mybatis 官网前言: 在官网中描述,Mybatis只支持拦截四大对象Executor、ParameterHandler、ResultSetHandler、StatementHandler 且每个对象被拦截的方法是有限的,具体参照官网,在本篇博客中主要讲解对 Executor 对象的 query 方法进行拦截,在官网中提供了一个小 dome,本篇博客则是根据小 d

2020-12-31 15:39:08 655 1

原创 Mybatis(六) - Mybatis是如何将结果封装成Java bean的

Mybatis是如何将结果封装成Java bean的本篇文章是通过看视频学习总结的内容, 如有错误的地方请谅解,并联系博主及时修改,谢谢您的阅读.前五篇博客地址:Mybatis(五) - Mybatis是如何执行一条sqlMybatis(四) - Mybatis是如何对Mapper接口进行代理的Mybatis(三) - Mybatis是如何通过SqlSessionFactory得到SqlSession的Mybatis(二) - Mybatis是如何创建出SqlSessionFactory的

2020-12-31 15:38:53 1334

原创 Mybatis(五) - Mybatis是如何执行一条sql

Mybatis(五) - Mybatis是如何执行一条sql本篇文章是通过看视频学习总结的内容, 如有错误的地方请谅解,并联系博主及时修改,谢谢您的阅读.注意: 本篇博客接着前四篇博客,主要是从第一篇博客的测试例子中开始延申,直到到源码的分析。前四篇博客地址:Mybatis(四) - Mybatis是如何对Mapper接口进行代理的Mybatis(三) - Mybatis是如何通过SqlSessionFactory得到SqlSession的Mybatis(二) - Mybatis是如何创建出

2020-12-31 15:38:31 398

原创 Mybatis(四) - Mybatis是如何对Mapper接口进行代理的

Mybatis(四) - Mybatis是如何对Mapper接口进行代理的本篇文章是通过看视频学习总结的内容, 如有错误的地方请谅解,并联系博主及时修改,谢谢您的阅读.注意: 本篇博客接着前三篇博客,主要是从第一篇博客的测试例子中开始延申,直到到源码的分析。前三篇博客地址:Mybatis(三) - Mybatis是如何通过SqlSessionFactory得到SqlSession的Mybatis(二) - Mybatis是如何创建出SqlSessionFactory的Mybatis(一) -

2020-12-31 15:38:15 521

原创 Mybatis(三) - Mybatis是如何通过SqlSessionFactory得到SqlSession的

Mybatis(三) - Mybatis是如何通过SqlSessionFactory得到SqlSession的本篇文章是通过看视频学习总结的内容, 如有错误的地方请谅解,并联系博主及时修改,谢谢您的阅读.《Mybatis(二) - Mybatis是如何创建出SqlSessionFactory的》《Mybatis(一) - Mybatis 最原始是使用方式》从 《Mybatis(一) - Mybatis 最原始是使用方式》 中 Junit 测试方法开始,通过 SqlSession session

2020-12-31 15:37:59 1072

原创 Mybatis(二) - Mybatis是如何创建出SqlSessionFactory的

Mybatis(二) 如何创建出SqlSessionFactory本篇文章是通过看视频学习总结的内容, 如有错误的地方请谅解,并联系博主及时修改,谢谢您的阅读.从Junit 测试类进入Mybatis 源码中@Beforepublic void prepare() throws IOException { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResource

2020-12-31 15:37:29 536 2

原创 Mybatis(一) - Mybatis 最原始是使用方式

Mybatis使用及其执行流程本篇文章是通过看视频学习总结的内容, 如有错误的地方请谅解,并联系博主及时修改,谢谢您的阅读.在项目开发中,使用Springboot整合Mybatis做数据库操作是一件非常简单的事情,这只是Mybatis为我们做了封装集成到Spring,把Mybatis的一系列对象交给Spring管理。通常使用JDBC做数据库操作的时候,我们的代码变得非常的臃肿,里面包含了Connection对象的创建销毁等等。总而言之,Mybatis都帮忙完成了很多功能,下面就看看Mybatis最初

2020-12-31 15:37:05 548

原创 Pattern(笔记) - 组合模式

组合模式本篇文章是通过看视频学习总结的内容, 如有错误的地方请谅解,并联系博主及时修改,谢谢您的阅读.何为组合模式?它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。适用场景:部分——整体场景,树形菜单,文件、文件夹的管理组合模式的优点:客户端调用简单节点数量自由控制组合模式的缺点:组合模式中,并不是面向得接口编程,而是面向抽象类编程如果采用透明写法来实现,那么不满足最少知道原则

2020-09-09 15:17:38 403

原创 Pattern(笔记) - 享元模式

享元模式本篇文章是通过看视频学习总结的内容, 如有错误的地方请谅解,并联系博主及时修改,谢谢您的阅读.何为享元模式?享元模式借名之意就是指,通过设计模式来对数据的共享适用场景:数据库连接池、线程池、包装数据类型的 cache,String字符串常量池等,都属于享元模式的使用享元模式的优点:享元模式起到了对象的复用,减少内存中对象的数量,省去了创建对象消耗的时间,节约内存,提高性能享元模式的缺点:享元模式存在一定的隐秘性,如果在不了解享元模式的情况下你根本不知道 Integer.v

2020-09-08 17:26:04 139

原创 Pattern(笔记) - 原型模式

原型模式本篇文章是通过看视频学习总结的内容, 如有错误的地方请谅解,并联系博主及时修改,谢谢您的阅读.何为原型模式?原型模式可以客观的理解为对象的复制,通过原型模式对原有对象进行复制,对象的复制分为浅克隆和深克隆 。适用场景:初始化资源比较多...

2020-09-04 17:10:41 162 1

原创 Pattern(笔记) - 装饰器模式

装饰器模式本篇文章是通过看视频学习总结的内容, 如有错误的地方请谅解,并联系博主及时修改,谢谢您的阅读.何为装饰器模式?装饰器模式,从字面意义上可以理解为对某个对象进行装饰、增强。在Java中,装饰器模式主要是对类的功能在不改变原有基础功能上进行功能的扩展,扩展是透明公开的,由客户端自定义扩展,装饰器模式在增强一个类的时候,提供了比继承增强更为灵活,更加有弹性。装饰器模式属于行为型模式适用场景:对某个类的功能进行弹性增强。装饰器的优点:装饰器模式满足软件设计原则中的开闭原则装饰器模式增

2020-09-04 15:32:24 158

原创 pattern(笔记) -静态代理,动态(jdk、cglib)代理

静态代理和动态代理什么是代理?什么是静态代理?什么是动态代理?一、 使用静态代理,该案例用找工作的方式来列举。新建二、 使用JDK动态代理三、 使用CGLIB动态代理

2020-05-27 11:01:41 185

原创 Redis - Linux中下载并安装redis-5.0.8

Redis - Linux中下载安装1. 到官网下载redis源码cd /home/idea/source/wget http://download.redis.io/releases/redis-5.0.8.tar.gz2. 解压tar.gz包tar zvxf redis-5.0.8.tar.gz## 修改文件名称为redis-5 因为后续可能会安装redis-6所以命名使用应用-版本的方式mv ./redis-5.0.8 ./redis-53. 安装 gcc## 这一步如果安装了g

2020-05-23 13:57:54 2050

原创 SpringBoot - starter mysql dome

SpringBoot starter1. 使用maven创建两个项目enable-common 为了测试 mysql-starter2. mysql-starter 项目添加pom.xml内容 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> &

2020-05-22 16:37:20 840

原创 Mysql(Docker) -Mysql5.7版本表名大小写

Mysql(Docker) -Mysql5.7版本表名大小写背景: 公司做项目,最开始使用的是 Windows 作为开发环境,由于个人爱好,选择了 deepin V20 作为了主开发环境,在使用 Docker 启动 Mysql 的时候完全正常,一旦在系统中使用,就发现表名大小写有问题,于是我找了博客阅读,得到的结果都是修改参数 lower_case_table_name=1 但是我的问题最终还是没有解决最终参考了 https://www.cnblogs.com/smallmin/p/11582954.h

2020-05-18 16:58:14 962 2

原创 IDEA - Error:Internal error

IDEA: Error:Internal error错误内容:Error:Internal error: (java.lang.ClassNotFoundException) com.android.repository.api.ProgressIndicatorjava.lang.ClassNotFoundException: com.android.repository.api.ProgressIndicator at java.net.URLClassLoader.findClass(URLC

2020-05-18 15:59:18 3078 1

原创 pattern(笔记)-策略模式优化if -else

pattern-策略模式优化if -else避开闲谈,直入主题1、创建接口,提供公共方法2、创建 `Context`,提供对于条件的逻辑3、为了减少在`Controller` 中的逻辑,增加一个工厂类 `Factory`4、`Service`避开闲谈,直入主题开发中,常常会遇到大量的 if else 判断,如果 if else 太多了,就会导致代码层级、阅读性变差,在此基础上,我利用了空余时间...

2020-04-27 13:05:02 256

原创 Hutool - 结合163邮箱发送邮件

使用Hutool结合163邮箱发送邮件 进入163设置邮箱POP3/SMTP/IMAP 引入Hutool依赖 地址:https://www.hutool.cn/docs/#/extra/%E9%82%AE%E4%BB%B6%E5%B7%A5%E5%85%B7-MailUtil <dependency> <groupId>javax.m...

2020-02-28 23:01:30 2575 2

原创 Thread - 多线程基本原理及分析

一 、synchronized关键字所修饰的范围之间的差别:对象锁 | 类锁 : 是否跨对象、跨线程去保护锁的大小: 无锁 < {偏向锁 < 轻量级锁 (无锁状态)} < 重量级锁 (真正意义上的锁)什么是重量级锁: 重量级锁就是当一个线程占用了该锁的时候,另外线程访问了该锁时,该线程会被挂起,直到拿到锁的线程释放锁后才会唤醒挂起的线程保证数据安全和性能的同时优...

2020-02-16 21:31:03 619

原创 Java - 从.java文件到类加载

一、权威机构如何描述JDK地址:https://docs.oracle.com/javase/8/docs/index.html在图中可以看出Jdk,Jre,Jvm三者的关系,Jdk包含了Jre,而Jre包含了Jvm。从最初开始学习java,直到开始了解jvm,这一个过程是漫长的,首先看看为什么要学习Jvm,学习Jvm后能给我们带来什么样的好处。从Java的入门,到Web的开发...

2019-12-09 13:07:27 416

空空如也

空空如也

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

TA关注的人

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