自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

✈ 正在努力 の 寒江(StudiousTiger) ✌ 呐 ✈

✈ ❀ 希望平凡の我,可以给你不凡の体验 ☂ ✿

  • 博客(589)
  • 问答 (4)
  • 收藏
  • 关注

原创 【Java】今天我们来讲一下DriverManager,分析一下JDBC是如何对数据库驱动进行加载、选择和注册的

近些年来,对于 Java 开发,大家大多基于现有的框架(如 Spring 系列)进行开发,都不会去关注一些细枝末节的东西,我认为这对个人的技术理解与沉淀而言是有弊的。当然我也一样,这也是对我自己的反思与劝谏。我们步入正题,我为什么想要分享 DriverManager 相关的内容,这绝对不是因为我太闲了,而是 BUG 使然,原因是我们团队近期在使用 Seatunnel 作为数据采集的中间件,在测试使用中我们遇到了一个关于驱动的问题。

2024-05-12 22:15:31 794 2

原创 【Java】搞懂 Java IO 流

从上面的介绍我们不难发现,IO 流的使用并不复杂,重点在于我们在什么场景下使用什么流。上面介绍的 15 个 IO 流大概可以分为如下的 3 大模块 6 种类型。输入流 & 输出流输入流:xxxInputStream 、xxxReader输出流:xxxOutputStream 、xxxWriter字节流 & 字符流字节流:xxxStream字符流:xxxReader、xxxWriter节点流 & 处理流。

2024-03-26 23:45:00 712

原创 【Java】4万字解读Java多线程,这一篇文章就够了

所谓的不公平锁就是多个线程抢锁是一拥而上的,谁抢到是谁,这样会造成某个线程可能会一直抢锁成功,某个线程会一直抢不到锁,对于线程层面的执行时不公平的。当多个线程在竞争执行同一块代码时,因为有 synchronize 的存在,所以所有的线程都会去查看 locker 的指定位置是否已经被填充了信息,如果没有被填充信息,那么线程就会尝试填充自己的信息,填充自己信息的线程就是获取锁成功的线程,其他线程会不断的检查并竞争 locker 对象,知道将自己的信息填充到 locker 的指定位置,自己采拿回了代码的执行权。

2024-03-03 19:08:16 1101 1

原创 【Java】万字解读Java的动态代理(JDK原生动态代理、CGLIB动态代理)

动态代理在Java中有着广泛的应用,比如 Spring AOP、RPC 远程调用、Java 注解对象获取、日志、用户鉴权、全局性异常处理、性能监控,甚至事务处理等。JDK原生动态代理和CGLIB 动态代理。

2024-02-22 18:48:55 879

原创 【Java】关于Java泛型,为你做最全面的泛型介绍

泛型(Generics)是Java语言中的一个重要特性,它提供了类型安全和代码重用的机制。泛型起到的作用包括类型安全、代码重用、程序设计抽象、集合框架的增强、减少强制类型转换。在面向对象编程和设计模式中有广泛的应用。

2024-02-19 22:45:00 851

原创 【MySQL】MySQL-SQL语句执行顺序

SQL的执行顺序与书写顺序是有较大的不同的,二者不能混为一谈,接下来主要谈一下参数的执行顺序以及其中涉及的一些细节。

2024-02-18 21:20:00 164

原创 【springboot】实现动态数据源(在线切换、新增、删除、编辑)的方案,拒绝多数据源硬编码方案

想要实现灵活的动态数据源,我们肯定不能如传统动态数据源一样将数据源配置文件中,更加灵活的方式是基于数据库中数据源配置的持久化。

2024-02-18 20:44:09 499

原创 注册中心,微服务网关,API网关的含义(是什么)、功能以及存在的意义

API 网关对接口的细粒度控制与业务系统对用户的菜单控制很像,用户的菜单控制一般是,用户获得一(多)个角色,一(多)个角色分配多(一)个菜单,当想给用户添加(减少)菜单权限时,只需要重新勾选角色的菜单分配即可。等客户端的附庸属性。有更高性能的传输,grpc 的请求与响应的数据格式不同于传统的 http(文本格式),其使用的是二进制格式的请求与响应,并支持多路复用与流式传输。,我们通过动态配置提供给第三方新的接口(该接口只是对服务接口的代理),实现接口代理的方案有很多,不是我们讨论的主题,不过多赘述。

2024-02-17 22:43:16 910

原创 Springboot中多线程数据库操作下的事务一致性问题的解决方案

上述讲到了多线程之间的事务隔离(孤岛)的问题,所以多线程下实现事务一致性的问题,其实就转变成了如何解决多线程之间的事务孤岛的问题,解决事务孤岛的问题有演变成如何实现多线程下的数据库事务的统一提交与统一回滚。另一方面,因为多线程的事务一致性问题一般要求,当一个线程出现异常,那么所有的线程中的数据库写操作都需要进行回滚的,显然在。因为多线程事务的统一提交和统一回滚是在主线程中完成的,我们知道每个线程会维护器自己的事务状态与资源。实现的,所以对于多线程来说,主线程的事务管理器是无法控制子线程中的事务状态的。

2023-11-22 15:48:54 5145 1

原创 【踩坑】基于注解的AOP失效。内部方法使用this调用方式时,导致AOP生效的问题

方案一是不适合在自定义的starter进行使用的,其实 @EnableAspectJAutoProxy是@Import的高级注解,熟悉springboot启动流程的朋友应该知道是在主启动类的run方法中进行解析的,所在对应自定义的starter,是不生效的。通过上述的代码我们可以发现,集群模式的@Retry属于类的内部方法的调用,在spring中AOP是通过代理对象来实现,而在springboot中,内部方法的调用时通过实例对象来调用的,这也就意味着内部方法的@Retry不会被代理到。

2023-06-30 10:07:49 5615

原创 基于springboot实现动态定时任务,包括添加、删除、启动、关闭、日志

实现定时任务的动态控制com.studioustiger.job.entitycom.studioustiger.job.mappercom.studioustiger.job.servicecom.studioustiger.job.executorcom.studioustiger.job.configcom.studioustiger.job.scheduledcom.studioustiger.job.con

2023-05-17 11:59:02 9349 2

转载 【Nginx】nginx的Rewrite,nginx重写请求

版权声明:本文为CSDN博主「微笑着敲代码」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

2022-12-28 11:34:01 4031

原创 在KubeSphere中部署微服务(阡陌)+ DevOps

在KubeSphere中部署微服务(阡陌)+ DevOps,主要给自己看,写的优点粗糙,见谅~

2022-11-19 23:30:20 5376

原创 【vue】原创Vue组件 - Hunit (开发中...)

原创Vue组件库 - Hunit (持续更新中...)

2022-11-12 00:52:03 2753

原创 【Docker】docker推送镜像到harbor

首先你需要有一个Harbor的账号,并在harbor中创建一个项目。

2022-11-10 15:49:05 3991

原创 【Kettle】kettle循环遍历数据库中的表,并进行SQL操作

背景:通过kettle循环遍历数据中的所有的表,并且对每张表执行转换。

2022-10-12 19:33:10 1973

原创 【Docker】镜像的保存(save)到文件 与 加载(load)到宿主机

背景:我们制作好的镜像会存储在宿主机上,那么在迁移的过程中,我们应该如何 保存自定义的镜像到宿文件 或 加载自定义的镜像到宿主机呢?

2022-10-12 19:12:10 1232

原创 【Linux】项目shell启动脚本简单模本

背景:启动 tomcat + jar工程

2022-10-12 19:07:55 254

原创 【Linux】shell语法规则

最近在写一些项目的启动脚本,时间长了shell我都忘记了,温故了一下,分享给大家。如有错误,请大家指正。

2022-10-12 18:59:19 423

原创 【Dockerfile】Dockerfile 入门模板

背介绍:通过 Dockerfile将 centos7 + tomcat + jdk + jar工程 + 启动脚本 制作成一个可执行镜像。通过 docker build 命令构建镜像

2022-10-12 18:54:57 4775 1

原创 【Dockerfile】Dockerfile的语法规则

最近使用Dockerfile打镜像,简单总结了一下语法规则,分享给大家,如有错误,请大家即时指正。

2022-10-12 18:48:15 202

原创 【个人原创项目】开发问答社区-V1.0

个人原创项目-开发问答社区(BIDEA)

2022-06-30 14:38:07 326 1

原创 【MySQL-height】表的结构在文件系统中的显示

环境linux-centos7mysql8.0.24mysql 存储引擎 innodb存储位置查看mysql的数据的存储位置 切换到数据的存储目录: 切换到一个数据库下: 文件说明在 mysql57 版本中,一张表对应的是两个文件,例如:对于上述的 表,在 mysql57 中对应的是应该是量文件,分别是 和 。在 mysql80 版本中将原本的 与 文件进行了整合,整合到 .idb文件中。如果你觉得不是,那么你可以通过 命令生成一个 文档。(你可以将 文件和生成的 文件类

2022-06-21 20:06:15 278

原创 【mysql-height】mysql服务中的字符集

查看当前mysql数据库的所有属性的字符编码:character-set-client:设置客户端使用的字符集。character-set-connect:设置链接数据库时的字符集。character-set-result:服务器安装时指定的编码格式。对于 、 、 在mysql服务器中的处理过程如下图:从上图我们可以发现,如果 的字符集与 的字符集不一致,必出错;如果 的字符集与对应的表中的 的字符集不一致,必出错;如果 的字符集与 的字符集不一致,并出错。character-set

2022-06-19 22:09:06 177

原创 【设计模式】模板模式

什么是模板模式在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。模板模式的优缺点优点: 1、封装不变部分,扩展可变部分。 2、提取公共代码,便于维护。 3、行为由父类控制,子类实现。缺点:每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。例子一个抽象的 Car 类,,模板方法(drive())设置为 final,这样它就不会被重

2022-04-08 14:57:48 113

原创 【设计模式】工厂模式

什么是工厂模式工厂模式就像是 现实生活中的工厂一样,只要是工厂中可以制造的东西,你需要什么工厂就可以给你制造什么。在制造的过程中工厂并不会对用户暴露制造的细节。所以在工厂模式中,工厂在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。工厂模式的优缺点优点: 1、一个调用者想创建一个对象,只要知道其名称就可以了。 2、扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。 3、屏蔽产品的具体实现,调用者只关心产品的接口。缺点:每次增加一个产品时,都需要增加一个具体

2022-04-08 14:13:09 115

原创 【设计模式】组合模式

什么是组合模式组合模式是一种树形结构,一个父节点下面会有多个子节点,子节点下面会有多个子节点。如果把上述的节点表示为类那么就会说组合模式。我们常见的组合模式就是文件系统(文件夹),一个根(root)文件夹下有多个子文件夹,一个子文件夹下又有多个子文件夹。组合模式的优缺点因为是一种树形结构,我们可以很方面的找到我们的目标类,以及它的层级关系,结构清晰,逻辑完整。如果是有缺点的话, 那么可能是违背了依赖导致原则,因为我们是对一个一个的实现类进行操作的,而不是接口,这样显得是非的臃肿。例子我们就以文

2022-04-08 11:54:21 162

原创 【设计模式】命令模式

什么是命令模式将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。命令模式的优缺点优点: 降低了系统耦合度,新的命令可以很容易添加到系统中去。缺点:使用命令模式可能会导致某些系统有过多的具体命令类。举例我们就以增删改查为例,首先我们需要定义一个 CRUD 的接口,然后定义四个 CRUD 的实现类,最后定义一个 Command 类,该类的作用是将所有的指令插入到该类中的 arrayList 中去,最后依次执行 arrayList

2022-04-07 22:25:59 266

原创 【设计模式】适配器模式

什么是适配器模式适配器的作用是将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。举个例子,比如说,现在提供了一个接口 adapter(String str) ,当我们输入中文的时候它会进行一些中文的操作,当我们输入英文的时候,它会进行一些英文的操作。这就属于适配器模式。适配器模式的优缺点适配器的优点很明显就是使得两个或多个原本无关联的类可以一起运行。这样使得我们不需要重新编写代码就可以实现代码的整合,提高了代码的复用性,因为只是对外暴露了

2022-04-07 21:47:44 234

原创 【设计模式】装饰器模式

什么是装饰器模式装饰器模式从字面意思来说就是对某一个事物进行装饰的一种模式。从代码层面而言,是对类的一个扩展或者是修饰,从传统方法而言,我们可以使用继承来对某一个类进行扩展,但是往往会导致会出现非常多的子类,如果我们要想避免这种情况,那么我们就可以使用设计模式中的——装饰器模式。装饰器模式的优缺点装饰器模式是在不改变现有对象结构的情况下,动态地给该对象增加一些职责,即增加其额外功能。但是如果对于一个类型装饰的类的扩展功能太多,那么将会导致有很多的小类,我们在选择使用装饰器设计模式的时候要根据实际情况

2022-04-07 17:55:14 5942 4

原创 【设计模式】观察者模式

什么是观察者模式当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。观察者模式的优点1、观察者和被观察者是抽象耦合的。2、建立一套触发机制。举例当 int 类型的数据 state 发生改变后,要求其对应的 ascll 、二进制 、十进制 都要发生改变主题(发布者、被观察者)import java.util.ArrayList;import java.util.List; publ

2022-04-04 21:45:46 72

原创 【设计模式】代理模式

什么是代理模式代理模式是给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。代理模式的优点中介隔离作用:在某些情况下,一个客户类不想或者不能直接引用一个委托对象,而代理类对象可以在客户类和委托对象之间起到中介的作用,其特征是代理类和委托类实现相同的接口。开闭原则,增加功能:代理类除了是客户类和委托类的中介之外,我们还可以通过给代理类增加额外的功能来扩展委托类的功能,这样做我们只需要修改代理类而不需要再修改委托类,符合代码设计的开闭原则。代理

2022-04-04 20:48:56 543

原创 【设计模式】策略模式

什么是策略模式在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。简单的来说,就是我们定义一系列的算法,提供统同一个接口,不同的是算法的实现逻辑不同,系统可以通过你选择的策略实现不同的算法逻辑。值得注意的是,策略模式的重心不是如何来实现算法,而是如何组织、调用这些算法,从而让程序结构更灵活、具有更好的维护性和扩展性。为什么要有策略模式,阅读一些博客发现,大部分说是为了避免使用 if-else , 这种说明本身是

2022-04-04 20:17:37 534

原创 【设计模式】单例模式

一、什么是 单例模式从字面意思上来说,单例模式就是 只存在一个实例 的模式。只存在一个实例的好处是 内存中只存在一个实例,减少了内存的开销,避免了对象的频繁的创建于销毁。可以帮助我们控制实例的数目,节约系统资源。二、常用的三种单例模式第一种:线程安全-懒汉式所谓的懒汉式,从字面意思上而言是一种慵懒的方式(被动)创建实例,即当你需要的时候且没有所需要是实例时,系统才去创建实例。因为用被动的方式创建实例,在创建实例的过程中存在线程安全的问题,这里所说的线程安全问题是指存在多个实例被创建的情况,所以我

2022-04-04 17:43:00 367

原创 【面试】面试复盘

1、数据库的查询优化SQL语言–语句优化总结2、redis的之持久化与非持久化的区别redis-cli -h localhost -p 6379redis的持久化有两种模式:RDB(Redis DataBase):默认开启此模式,会在redis的相关目录(在redis的命令行模式下可以通过 config get dir 获取)下面存储 dump.rdb 文件,当redis启动的之后就会读取这个配置文件。优点:RDB对外 redis对外提供的读写服务 影响较小,使得redis的性能更高。相对AO

2022-04-02 11:45:24 941

原创 【Nginx】Nginx 快速入门

文章目录一、简介二、Docker 安转 Nginx三、反向代理1、介绍2、实操步骤一步骤二步骤三四、负载均胜1、介绍2、负载均衡的策略3、实操步骤一步骤二步骤三五、动静分离1、介绍六、高可用一、简介ginx (engine x) 是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了IMAP/POP3/SMTP 服务。Nginx 是由伊戈尔·赛索耶夫为俄罗斯访问量第二的 Rambler.ru 站点(俄文:Рамблер)开发的,公开版本1.19.6发布于2020年12月15日。其将源代码以

2022-04-01 23:40:42 5186 2

原创 【数据结构】翻转二叉树的三种方式

什么是反转二叉树反转二叉树的实现方式方式一:使用栈实现方式二:使用堆实现方式三:使用递归来实现

2022-04-01 16:33:26 4134

原创 【JVM】浅谈JVM

文章目录一、JMV的位置二、JVM的体系结构(简单)三、类加载器1、加载过程:① 加载② 连接③ 初始化2、类加载器① 启动类(根)加载器:② 扩展类加载器:③ 应用程序类加载器:④ 自定义类加载器四、双亲委派机制五、沙箱安全机制一、JMV的位置二、JVM的体系结构(简单)三、类加载器加载指的是将类的class文件读入到内存,并为之创建一个java.lang.Class对象,也就是说,当程序中使用任何类时,系统都会为之建立一个java.lang.Class对象.类的加载由类加载器完成,类加载器

2022-03-25 20:15:18 903

原创 【踩坑分享】springboot 中 @autowired 注解注入为 null

有时候我们会发现我们通过 @autowired 注解注入为 null,此时我们就要手动注入了。我们可以写一个手动注入工具类,如下:工具类:package com.tiger.Utils;import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAw

2022-03-20 23:10:04 679

原创 【踩坑分享】滚动条保持在最底部的方法,做聊天室的时候会用到

最近在做一个聊天室,结果新发送的消息不能【置于底部】,找了很多方法,最后总结出最完美(主观)的方法,给大家分享一下核心代码: 目标div.scrollTop = 目标div.scrollHeight;例子:<!DOCTYPE html><html lang="en"><head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <titl

2022-03-19 22:36:59 5294 1

空空如也

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

TA关注的人

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