自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL数据库中查出两张表中不同

方法二:使用LEFT JOIN方法三:使用NOT IN

2025-03-21 14:31:23 167

原创 MySQL索引机制

更糟糕的是,如果数据页已经满了,则需要新申请一个新的数据页,然后挪动数据,这就是页分裂。如果MySQL数据表中你创建了一个整数类型的索引,这个N差不多是1200,树高是4时,整棵树可以存储1200的3次方,也就是17亿数据,查找一个数据只需要访问3次磁盘,很nice~对于一个业务写完之后立即就要访问,将更新操作记录在change buffer之后,由于马上访问这个数据页,会立即出触发merge操作,增加随机访问IO次数,此时,change buffer反而起到了反作用,增加了维护代价,可以使用唯一索引。

2025-03-14 11:45:05 528

原创 CommandLineRunner 在执行过程中报错,导致 Spring 容器关闭,应用停止服务。

发现是SpringApplication类中的callRunners() 调用了该方法,callRunners()中并没有try-catch callRuner()方法中可能抛出的异常,所以异常继续向上抛。3.4 发现在SpringApplication类中的run(String... args)方法调用了callRunners()方法,并try-catch了异常,对异常做了处理。3.2 callRunner() 方法中try-catch 了异常,并把异常抛出。模拟服务启动时要初始化一些资源。

2025-03-12 12:15:00 323

原创 java 创建对象有几种方式?

通过序列化(Serialization)和反序列化(Deserialization),你可以将对象的状态保存到文件中,并在需要时重新创建对象。它允许你使用多个简单的对象通过组合的方式来构造所需的复杂对象。如果一个类实现了 Cloneable 接口并重写了 Object 类的 clone() 方法,你可以通过调用该对象的 clone() 方法来创建对象的一个副本。这通常用于需要动态加载类或者在不直接访问源代码的情况下创建对象的情况。通过使用 new 关键字,你可以直接调用类的构造函数来创建对象。

2025-03-07 09:42:00 189

原创 java.util.concurrent包之ScheduledExecutorService

是的一个子接口。它主要用于在给定的延迟之后或周期性地执行任务。这个接口提供了一种方便的方式来处理异步任务的调度,相比于传统的Timer和TimerTask,它具有更好的灵活性和可靠性,特别是在处理多线程环境下的任务调度时。我们可以通过,更有效地管理和调度多个异步任务,这些任务可以是一次性执行的,也可以是周期性重复执行的。

2025-02-28 17:18:18 340

原创 java.util.concurrent包概览

包提供了丰富的并发工具和数据结构,使得编写高性能、高可靠性的多线程应用程序变得更加容易。通过合理使用这些工具,可以显著提高程序的并发性能和可维护性。

2025-02-28 17:11:28 964

原创 RabbitMQ 入门

MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是 message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常见的上下游 “逻辑解耦+物理解耦” 的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不用依赖其他服务。

2025-02-18 17:38:42 998

原创 Java 并发编程知识点

进程:程序的一次执行过程。一个 Java 程序的运行一般是 main 线程和多个其他线程同时运行。线程:比进程更小的执行单位。同类的多个线程共享进程的堆和方法区,但每个线程有自己的程序计数器、虚拟机栈、本地方法栈。程序计数器私有主要是为了线程切换后能恢复到正确的执行位置。为了保证线程中的局部变量不被别的线程访问到,虚拟机栈和本地方法栈是线程私有的。程序计数器:记录java代码下一条指令的地址,字节码解释器通过改变程序计数器来依次读取指令,从而实现代码的流程控制;

2025-02-14 14:37:04 790

原创 MySQL 联合索引的最左匹配原则

环境:MySQL 版本:8.0.27。

2025-02-13 17:39:03 400

原创 磁盘与mysql的故事

mysql 查找 MmoMartin 字符串,首先通过 B+ 树找到索引的盒子,然后通过盒子直接去找分流的盒子,然后遍历分流盒子的数据,由于 mysql 是行式存储(因为每列都带有数据类型,建表的列时需要指定大小,如下图),按照每列指定的的大小进行偏移就可以将带有 MmoMartin 的该行数据读取,输出,这样就提升了查找的能力,这也是设计数据库时为啥要尽量的设计列字段的大小合适的原因,大的在偏移过程中是需要时间的。由于索引列的数据也是放在盒子的,为了在查找索引的盒子的速度再提升,就有了。

2025-02-13 15:27:35 482

原创 jvm知识点

即只有当前正在执行的方法的栈帧(栈顶栈帧)是有效的,这个栈帧被称为当前栈帧(Current Frame),与当前栈帧相对应的方法就是当前方法(Current Method),定义这个方法的类就是当前类(Current Class)。堆针对一个JVM进程来说是唯一的,也就是一个进程只有一个JVM,但是进程包含多个线程,他们是共享同一堆空间的,一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域,Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。

2025-02-06 15:38:06 1126

原创 springBoot tomcat

【代码】springBoot tomcat。

2025-01-21 16:42:42 482

原创 线程池 ThreadPoolExecutor

RUNNING:在这个状态的线程池能判断接受新提交的任务,并且也能处理阻塞队列中的任务;SHUTDOWN:处于关闭的状态,该线程池不能接受新提交的任务,但是可以处理阻塞队列中已经保存的任务,在线程处于RUNNING状态,调用shutdown()方法能切换为该状态;STOP:线程池处于该状态时既不能接受新的任务也不能处理阻塞队列中的任务,并且能中断现在线程中的任务。当线程处于RUNNING和SHUTDOWN状态,调用shutdownNow()方法就可以使线程变为该状态;

2025-01-17 10:51:09 895

原创 Java String源码笔记

..1、实现Serializable,可以实现序列化。序列化是指将对象的状态信息转换为可以存储或传输的形式的过程。2、使用final表示不能被继承,里面的方法不能被重写,使用char数组来存储字符串元素。3、hash储存字符串的hash码,首次调用 hashCode() 方法时,会计算并存储哈希码值,之后再次调用 hashCode() 时直接返回缓存的值,避免重复计算,提高性能。

2025-01-10 10:35:47 260

原创 SpringBoot自动配置之@EnableAutoConfiguration

自动配置类通过添加 @AutoConfiguration 注解实现。因为 @AutoConfiguration 注解本身是以 @Configuration 注解的,所以自动配置类可以算是一个标准的基于 @Configuration 注解的类。@Conditional 注解可以用于声明自动配置启用条件,通常,我们可以使用 @ConditionalOnClass、@ConditionalOnMissingBean 注解。

2025-01-07 15:31:51 441

原创 mysql 数据库锁及解锁办法

通过SELECT * FROM information_schema.innodb_trx查询未提交事务,查到一个一直没有提交的只读事务(trx_state=”LOCK WAIT”),找到对应线程,执行:kill 线程ID。如果这行和 TRX_IS_READ_ONLY 都为1的话,InnoDB会优化事务,以减少事务改变表数据的开销。INNODB_TRX表提供了当前在InnoDB内部执行的所有事务信息,包含事务是否在等待锁,事务何时开始以及事务正在执行的SQL语句(如果有的话,sql语句阻塞就可以显示)。

2025-01-03 14:49:51 711

原创 使用aop的方式,自定义实现一个权限注解

【代码】使用aop的方式,自定义实现一个权限注解。

2024-08-22 11:18:56 783 1

原创 liunx 安装 emqx

在开始安装wget之前,您需要先确认系统是否已经安装了wget。在绝大多数Linux系统上,wget已经默认安装。服务器开放18083和1883端口。

2024-07-04 10:52:02 663

原创 mysql查询异常之Communications link failure

1.查了一下网络是没有问题的,后来发现是这张表的数据量太大,又是连表查询,查询时间超过了配置的最大等待时间而报错,因此对查询语句进行了优化,满足在最大等待时间内。

2024-05-15 11:53:54 412

原创 JSONObject 转String null值转换规则。

调用public static String toJSONString(Object object, SerializerFeature... features)方法,输入null的序列化规则,可以输出值为null的字段。当使用alibaba的fastjson工具类序列化实体类时,默认其会自动过滤掉null空的字段属性,在序列化的时候不会进行展示。

2024-04-25 10:24:42 1094

原创 Java 查看bean注入到 BeanFactory时的组件名称

对象实现ApplicationContextAware接口,重写setApplicationContext()方法,添加断点可以查看这个对象。导致调用的通过@Resource注入到该bean中的bean都为null。注册的时候时@17586,通过方法调用的时候为@26421。通过debug调试发现调用的使用和注册的时候不一样。

2024-04-23 18:53:01 266

原创 Java的反射简单快速上手应用

反射 (Reflection) 是 Java 的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性。通过反射,我们可以在运行时获得程序或程序集中每一个类型的成员和成员的信息。程序中一般的对象的类型都是在编译期就确定下来的,而 Java 反射机制可以动态地创建对象并调用其属性,这样的对象的类型在编译期是未知的。所以我们可以通过反射机制直接创建对象,即使这个对象的类型在编译期是未知的。

2024-04-23 16:36:36 328

原创 @AutoWired spring对多线程Bean无法注入的原因

在spring中,如果需要在异步线程中注入bean,会发现bean是空的情况。原因据说是spring bean 出于线程安全考虑,不得注入bean至线程类(Runnable接口的派生类),报空指针异常。Spring API 中有ApplicationContextAware 这个接口,实现了这个接口的类,可以在IOC容器初始化完成后获得容器,从而可以获得容器中所有的bean。前提是对应的类要带上组件(如@Component)2、通过在spring配置文件中定义Bean属性(这里有一些细节问题后面会讲到)

2024-04-22 10:21:57 343

原创 自己用到的一些方法

【代码】自己用到的一些方法。

2024-04-16 15:54:27 106

原创 MySql数据库实现数据存则删除、更新,不存在则插入

如上语句的意思的意思是如果字段1不存在(主键,索引或者唯一条件不存在),则执行插入语句,存在则执行更新语句,该更新是将该条存在的记录删除,然后再插入,所以其他的字段的值都是NULL。如上语句的意思是如果字段1不存在(主键,索引或者唯一条件不存在),则执行插入语句,如果存在,直接忽略不修改任何数据,不会报错。如上语句的意思的意思是如果字段1不存在(主键,索引或者唯一条件不存在),则执行。,存在则执行更新语句,该更新只更新需要的字段,不影响其他字段的值;:多线程并发会导致死锁的可能。

2024-04-16 15:24:11 517

原创 mysql解决插入根据某条件判断是否插入

exists :如果子查询查询到了列那么就为真。not exists : 如果子查询查询不到结果则返回值为真。如果配合 insertinto、select、update、delete的where 条件使用,就能根据某些条件,先判断条件是否满足在做相应的操作。示例:用户做报警插入时,需要要传入一个报警周期时间filterTime,在这个周期内不存在同样的一条记录才做新增,否则不需要新增,避免频繁报警。

2024-04-16 15:05:35 787

原创 MySQL查询结果为null,返回0,或者其他表达式。

函数是MySQL控制流函数之一,它接受两个参数,如果不是NULL,则返回第一个参数。函数返回第二个参数,两个参数可以是文字值或表达式。

2024-04-16 14:29:38 1261

原创 天气预测网站

MSN

2024-04-13 22:55:27 403

原创 mybatis 条件查询 in 的用法及传参

【代码】mybatis 条件查询 in 的用法及传参。

2024-04-12 17:35:16 431

原创 使用 mybatis-plus 拦截器对项目的所有执行的sql做监控和修改。

项目中使用了别人封装好的jar包,使用的是逻辑删除,但是在我们的数据库中由于唯一索引的存在,必须使用物理删除,因此需要对使用到逻辑删除的sql做监控,并且求改这些sql。最终运行起来还是满足了对sql的监控和修改功能。

2024-04-11 20:04:10 1050

原创 java1.8关于 List .Stream()常用的方法

java 处理list集合常用到的方法

2024-04-09 09:55:29 1157

原创 MySQL 在聚合函数查询的结构中继续过滤

HAVING 关键字和 WHERE 关键字都可以用来过滤数据,且 HAVING 支持 WHERE 关键字中所有的操作符和语法,如果想要从 GROUP BY 分组中进行筛选的话,不是用 WHERE 而是使用 HAVING 来进行。GROUP BY <列名1>, <列名2>, <列名3>, ……SELECT <列名1>, <列名2>, <列名3>,HAVING <分组结果对应的条件>。

2024-03-05 17:34:25 331

原创 mybatis 将查询到的结果作为表再查询

【代码】mybatis 将查询到的结果作为表再查询。

2024-03-05 17:22:52 370

原创 maven手动导jar包

maven 手动导包

2024-01-09 09:41:08 524

原创 mongodb 笔记

MongoTemplate是数据库和代码之间的接口,对数据库的操作都在它里面。

2024-01-02 23:15:10 422

原创 springboot 项目新建流程

三、在src文件夹下,新建文件夹src/main/java,src/main/resources两个目录。六、在resources文件夹下创建application.yml 文件。二、工程建好后,在pom文件中加入springboot 依赖。四、在创建一个包路径。例如com.test.mongodb。完成以上六步既可以运行启动springboot项目了。五、在以上包路径下创建spring boot启动类。

2023-12-30 15:51:36 700

原创 nacos 使用笔记

【代码】nacos 使用笔记。

2023-12-30 13:57:48 549

原创 influxdb 入门避坑

以下是使用的window influxdb cli 客户端,管网下载cli直接解压,influx.exe 不能直接双击打开,需要使用管理员开打power shell,进入该目录下后使用命令行打开。1.网上查出来的命令不一定适用,也需要注意版本的差异;最好在自己的webUI系统中去查看自己需要的命令。例如:我在网站上找的命令换行符使用的是“\”,但是我实际操作需要是“ ` ”,才能执行成功。influxdb2.0以上的版本变化较大,需要注意版本问题。3.3 查看组织列表。

2023-12-28 23:56:24 808

原创 Windows 系统服务器部署jar包时,推荐使用winsw,将jar包注册成服务,并设置开机启动。

2、使用计划任务,写一个bat处理文件,里面写java -jar运行程序,然后把bat文件作为一个计划任务运行;1、Spring Boot生成的jar包,可以直接用java -jar运行,但是前提是需要登录用户,而且注销用户后会退出程序,所以不可用。rotate(旋转模式,推荐)当日志文件大小达到10兆(默认值),winsw会将日志重新输出到另外一份日志文件,默认最多保留8个。1. 在ruoyiAdminService.exe的所处目录中输入cmd,进入命令行模式,执行服务注册命令。2.下载对应的版本。

2023-11-06 16:57:32 2461

原创 RestTemplate 使用,多种示例

包括请求头和响应头,请求头:它是 HTTP 头的一种,它可在 HTTP 请求中使用,并且和请求主体无关。是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。响应头:与请求头类似,不过是接口返回数据的时候,由服务器设置的,比如里面会带上,服务器想要设置的一些cookie信息。然后交由服务器写入到客户端。2.2 需要传递cooke。对返回给客户端浏览器(

2023-10-30 14:46:37 730

空空如也

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

TA关注的人

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