自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Maven版本统一管理

拉取快照版本是根据 maven-metadata.xml中的版本号来拉取的,所以 拉取不到2.0-20250000.1000128-2,因为实际的版本号是2.0-20250000.1000128-2。但是,远程仓库中的 maven-metadata.xml中的版本号是 2.0-20250000.1000128-2。因为快照版本打包后,会有一个时间戳,比如 生成的版本是 2.0-20250000.100127-2。多模块的项目,怎么方便管理 模块的版本号呢?如果 使用了快照版本,发现有一个问题。

2025-03-28 19:09:03 413

原创 Mysql Char vs Varchar

SELECT c_char,CHAR_LENGTH(c_char) 字符个数,BIT_LENGTH(c_char) bit个数,LENGTH(c_char) 字节个数 , HEX(c_char) 16进制,c_varchar,LENGTH(c_varchar) 字节个数,HEX(c_varchar) 16进制 FROM `t_char`这很好理解,如果设置了长度,但是长度如果是 字节,在插入数据的时候,插入的都是 字符,不可能 先计算这个字符的字节是多少,有没有超过设置的长度。但是 可以知道字符的长度。

2025-03-27 14:56:12 420

原创 理一理Mysql日期

4. **TIMESTAMP**: 存储日期和时间,格式为 `YYYY-MM-DD HH:MM:SS`,并且会根据时区进行转换,通常用于记录数据的创建和修改时间。3. **DATETIME**: 存储日期和时间,格式为 `YYYY-MM-DD HH:MM:SS`,例如 `2023-10-31 14:30:00`。2. **TIME**: 仅存储时间部分,格式为 `HH:MM:SS`,例如 `14:30:00`。5. **YEAR**: 存储年份,格式为 `YYYY`,例如 `2023`。

2025-03-19 16:16:25 333

原创 坑之 navicat 导数

解决的办法,就是将 表结构的日期字段 从 日期类型 改成 varchar 类型,再导入之后就没问题。遇到一次,将数据导入之后 ,表中的日期字段 和 源文件中的值 不一致。navicat 可以从 文件中 将数据 导入到mysql。

2025-03-18 19:33:46 104

原创 not in & not exists

2. 检查存在性:NOT EXISTS 子查询的目的是检查子查询是否返回任何行。如果子查询不返回任何行,则 NOT EXISTS 返回 TRUE。即使子查询结果中包含 NULL 值,NOT EXISTS 仍然可以正常工作,因为它只检查是否存在行,而不关心具体的值。,则 整个查询 不返回任何结果。1. 相关子查询:NOT EXISTS 子查询通常是一个相关子查询,这意味着它会引用外部查询中的字段。第一步: 执行 子查询 select id2 from test2, 子查询 返回一个。,则表示不存在结果集中,

2025-03-14 17:55:53 285

原创 读取jar包属性文件

使用用 EnvironmentPostProcessor。第一种,使用 ApplicationListener。

2025-03-11 11:31:21 120

原创 Mysql系统表

4. **`table_io_waits_summary_by_table`**:存储表 I/O 等待事件的汇总信息,包括表名、等待次数、等待时间等。5. **`table_lock_waits_summary_by_table`**:存储表锁等待事件的汇总信息,包括表名、等待次数、等待时间等。4. **`PROCESSLIST`**:显示当前正在执行的线程信息,包括线程 ID、用户、主机、数据库、命令、时间、状态、信息等。1. **`user`**:存储数据库用户的信息,包括用户名、主机、密码、权限等。

2025-02-28 13:14:40 322

原创 spring security

SecurityFilterChain,只有一个实现类DefaultSecurityFilterChain。spring security 开箱即用,主要是做一些配置,下面是基本的配置,指定登录需要的配置。DefaultLoginPageGeneratingFilter 生成默认的登录页。SecurityContextPersistenceFilter 持久化登录信息。只有当 登录请求、登录错误、退出登录成功时,才返回登录页面。系统认证方式 可以存在多个。认证管理器,管理认证流程。

2025-02-27 17:00:43 415

原创 com.alibaba.fastjson2.JSONException: level too large : 2048

使用 JSON.toJSONString 时报 错:com.alibaba.fastjson2.JSONException: level too large : 2048。是序列号的对象有 非 set/get 方法,把 非 get、set方法 设置为不序列化就行了。

2025-02-25 19:34:29 482

原创 lombok不起作用

需要再 idea的 compiler 中加入 -Djps.track.ap.dependencies=false。启动项目 报这个错,各种配置都正确。这应该是idea的配置问题了。

2025-02-13 16:22:50 410

原创 Java泛型

可以理解为一种语法糖,对于开发人员来说,比较方便的一种语法,但是实际上 编译后的文件是不存在泛型的,都是Object 然后做了强制类型转换。数组类型 (Array Types):表示数组的类型,如 int[] 或 String[]。但是,编译后的.class文件,不会保存泛型,而是List,这是类型擦除。类型变量 (Type Variables):用于泛型声明中的占位符,如 T 或 E。比如容器类,List,可以存储不同类型的对象。类型擦除,获取不到具体类型的。

2025-02-11 11:28:51 204

原创 安装centos7之后问题解决

【代码】安装centos7之后问题解决。

2025-01-22 14:35:39 250

原创 项目中常用中间件的使用及配置

等等,基本都是固定的配置写法。

2025-01-10 17:51:47 125

原创 负载均衡概述

另一种是硬件负载均衡,像F5等。客户端负载均衡,服务消费者从注册中心拿到服务提供者集群,自己决定使用何种算法找到目标服务,这个过程就是客户端负载均衡,即主动权掌握在自己手里。通过 serviceName 的方式调用,走的是客户端负载均衡,通过serviceName 到注册中心获取到具体的服务的ip,然后再调用。服务端负载均衡,就是消费者把请求交给服务端,由服务端来负责找到目标服务提供者,即主动权掌握在被人手里。一般通过域名或者具体的ip:port 的方式调用的,都是走的服务端负载均衡。

2025-01-09 17:56:15 578

原创 新年第一坑:xxl-job 任务结果丢失,标记失败

xxl-job服务 发起 任务调度后, 客户端 会将 任务执行结果 通过回调接口 通知给 xxl-job服务。服务端 处理回调时,会从请求参数中 获取ExecuteResult,客户端再发起回调时,并没有ExecuteResult。问题:xxljob 总是报 任务结果丢失,标记失败。查看客户端日志,显示 报空指针异常。各种配置都没问题,到底是什么原因?服务端版本是 2.2.0。客户端版本是2.3.0。

2025-01-07 10:34:30 720

原创 浅谈如何学习编程技术

计算机底层只能识别0和1,但是编程相关的技术栈纷繁复杂,变化多端,无穷无尽。可能再这个行业里需要这种技术,那么就好好学习这个技术,如果 换了一个行业,需要的是另一种技术,那么又得好好学习另一种技术。毕竟一个人的精力是有限的,不可能掌握所有的技术,像百科全书一样。不过,行业需要的技术应该是有限的,把行业需要的技术掌握好,假以时日,那么 在这个行业里,你就是专家。在不同的行业,需要解决的问题也不一样,那么需要用到的技术 也就不同。学习什么技术,应该根据 实际的行业需要解决什么样的问题来决定。

2025-01-02 14:28:41 197

原创 mysql排序问题

mysql 会根据 主键的 排序 来插入数据的,因此,如果主键不是 自增的,那么再插入的时候就会 存在 分页等问题。另外,如果 查询语句 不指定排序字段,默认是用主键升序排序的。虽然是 d 先插入表中,a后插入表中,但是 在 表中存储的数据 是 a 在 d 之前,这就是 排序规则的作用。mysql 建数据库时,需要指定 字符集 和 排序规则。安照下面的sql顺序执行插入,它们的排序是什么样的?也可以指定具体的字段。

2024-12-12 10:48:55 197

原创 ES面试题

2022最新ES面试题整理(Elasticsearch面试指南系列)-优快云博客

2024-11-26 19:35:44 116

原创 spring @Async

1. 需要在类路径存在 ThreadPoolTaskExecutor,这个类是 是spring context模块下的类,也就是 需要引入 spring context 依赖,这个基本都会引入。如果不存在TaskExecutorBuilder类型的bean,这在这里注册默认的TaskExecutorBuilder。这个Executor 是 jdk中的线程池的顶级父类,也就是 如果 容器中存在这个线程池bean,就不构建了。此时,不论是 用默认的 还是 自定义的,线程容器中已经存在了 一个 线程池。

2024-11-22 15:47:50 496

原创 应用服务可以接收的连接数是多少

tcp全连接队列大小 由 应用程序 指定的 和 操作系统两个参数 取最小。Linux操作系统 默认 128。当全连接队列满了之后,新的连接 发起tcp连接 是再半连接队列中保存,如果半连接队列 过小 也会影响并发连接。操作系统tpc全连接队列中会有 7个 连接 等待tomcat accept取出。现有使用spring boot项目,tomcat设置如下。这个配置理论上,可以同时并发 9 个连接。一个服务启动后,最大可以并发多少个连接?tomcat 会处理 2个连接。

2024-11-13 13:52:44 236

原创 BIO是怎么实现的

需要注意的是,这里accept 和 socket的读写操作都是 阻塞型的,也就是 会消耗掉一个 线程。这也就是 BIO 效率低的原因。操作系统 此时 仍然在 1440 上监听 连接请求,如果有新的连接过来,会再返回一个 新的数字,比如 1880,以此类推。操作系统就会在 1440 上监听 连接请求,当接收到连接请求时,会返回一个 新的数字,比如 1864。1440 是固定的 一个用于服务端监听连接的,新的连接生成的 是 随机的。一个网络连接,就是 一个 int 型的 数字,一个数字 代表一个连接。

2024-11-07 15:59:18 174

原创 源码级梳理Web服务流程

ServletContextInitializer接口好像不是 servlet规范里的接口,纯粹是 spring boot 2.3.12自己定义的接口,方便扩展。WebApplicationInitializer接口好像不是 servlet规范里的接口,纯粹是 spring web模块自己定义的接口,方便扩展。web服务的规范,不得不提Servlet,Servlet指定了web应用的规范,其中定义了servlet相关的接口和filter相关的接口。

2024-11-02 22:25:11 651

原创 Java项目结构简要说明

6. 在 main / test 文件夹下 再建两个文件夹,名为 java / resources ,java 文件夹下 存放 java源码文件,resources 文件夹下存放 资源文件。5. 在src 文件夹下,建立两个文件夹,名为 main / test ,main 文件夹 放源码文件,test文件夹放测试相关的源码文件。3. 再当前文件夹下建立一个 src 名字的 文件,所有 源码相关的都是再这个文件夹下,包括 java文件 和 属性文件。在开发一个Java项目时,项目文件是如何组织的?

2024-11-01 17:36:42 547

原创 VMWare NAT 模式下 虚拟机上不了网原因排查

编辑网卡配置:/etc/sysconfig/network-scripts/ifcfg-ens33。vmware 按照了Linux之后 无法上网,搞定后,记录一些信息。VMnet1 对应的是 Host-Only(仅主机模式)另外,一个原因是,VMware 的 NAT服务没有启动。VMnet8 对应的是 NAT(网络地址转换模式)在NAT模式中,需要设置NAT和DHCP。理论上,走到这里,是可以通的。需要保证这两个服务是启动的才行。window有两个虚拟网卡。

2024-10-16 13:24:30 2393

原创 linux 安装docker

【代码】linux 安装docker。

2024-08-14 21:09:33 169

原创 kotlin简介

Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。上述 定义了 main 方法, 和一个 普通的方法。在 kotlin 文件下 创建 一个名为 FirstKotlin.kt 的文件。新建一个 名为 kotlin 的 文件夹,作为 kotlin 代码的目录。可以看到,使用的 jdk 来运行的。

2024-08-08 17:11:49 606

原创 protobuf protostuff 区别

如果你正在构建一个需要跨语言通信的大型系统,或者你希望在编译时就定义好数据结构,那么protobuf可能是更好的选择。如果你正在寻找一个更轻量级、更灵活的解决方案,或者你的应用程序需要在运行时动态定义数据结构,那么Protostuff可能更适合你。protobuf 在 进行反序列化时,如果是 String -> long ,那么得到的是 0protostuff 在进行反序列化时,如果是 String -> long ,那么得到的是 string 最后一个 char 的 ASCII吗。

2024-07-23 15:48:58 629

原创 cglib

在AOP框架中,如Spring AOP,默认情况下使用JDK动态代理,但若目标对象没有实现接口,则转而使用CGlib来创建代理对象,实现在方法前后插入自定义逻辑(如日志记录、事务管理等)。不同于ASM库直接操作字节码,CGlib采取了更高层次的抽象,使得开发者可以以面向对象的方式创建代理类或者子类,而无需了解底层字节码的细节。操控和分析框架,它允许开发者在运行时或者编译时期动态地生成、改变或者分析类。(仅能代理实现了接口的类)时,CGlib可以创建目标类的子类作为代理,因此适用于没有实现接口的类的增强。

2024-07-03 21:59:50 384

原创 AOP基本概念

AOP(Aspect-Oriented Programming,面向切面编程)是一种编程范式,用于将横切关注点(如日志记录、安全检查、事务管理等)从业务逻辑中分离出来,以提高代码的模块化程度和可维护性。(顾问)是一个关键的概念,它代表了一个切面(Aspect)的配置信息,决定了切面应该在何时何地执行(即匹配的切入点Pointcut)以及如何执行(即通知Advice)):在连接点上执行的具体操作,如前置通知(Before)、后置通知(After)、环绕通知(Around)等,用于实现切面的具体逻辑。

2024-07-03 10:47:00 365

原创 java.util.Optional<T>

这个filter 跟 Stream的filter不一样。这个filter 返回的是 Optional对象实例。ofNullable : 如果value为空,则返回 带有空值的 实例。of : 如果 value 为空,则抛异常。通过两个静态方法来获取实例。

2024-07-02 15:55:31 237

原创 spring aop 初探

JDK动态代理的 InvocationHandler 的实现类为 JdkDynamicAopProxy,其增强功能由 advised 完成。获取 注解的value值,通常返回的是 标记有 @Pointcut 注解的 方法名。针对每个bean,找到所有 没有标记 @Pointcut 注解的方法。对每个方法查找对应的切面,标记 标记 @Around等注解的方法。第一部分,直接查找所有的 Advisor类型的bean。根据切面的类型,返回不同的Advice类型的对象。第二个参数,调用的代理的接口中的方法。

2024-06-28 16:45:25 1138

原创 AbstractApplicationContext#refresh

因为 spring boot 启动 servlet模式使用的是 org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext 继承自 org.springframework.web.context.support.GenericWebApplicationContext,因此 这里实际基本等于啥都没做。而 beanfactory 在实例化 时构造。

2024-06-26 18:47:17 1213

原创 ConfigurationClassPostProcessor

这个类很复杂。

2024-06-26 15:30:32 440

原创 spring cache

org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration 完成了 缓存的 自动配置。最终会将缓存信息写到 org.springframework.cache.support.AbstractCacheManager#cacheMap。在使用时,需要加入 org.springframework.cache.annotation.EnableCaching 注解。缓存类型的枚举顺序,就是使用的优先级。用于生产缓存的key。

2024-06-25 14:19:17 374

原创 简单了解雪花算法

ID 由多个数据组合拼接成64位,分别是 时间戳 + 服务器节点ID + 序列号,每个数据项占的位数不固定,可以根据实际需求设置。所以,时间戳移位 的结果 和 服务器节点ID 移位的结果 进行 按位或运行。将时间戳,节点ID,序列号 三个 long 型的 数字 进行 移位 和 按位或 运算,就得到最终的UID。移位 和 按位或 操作 都是 二进制 位操作,操作的对象 是 一个 二进制位 0或者1。对于十进制的 long 型 数值,移位操作 是 先转为 二进制数 再进行移位操作。

2024-06-21 18:01:24 270

原创 Nacos配置中心不可用会有什么影响

基本上不会配置这个JM.XX.XX,所以 配置存储在磁盘中的目录就是 user.home 目录下。当服务中的配置中心使用的是Nacos时,如果Nacos不可用,那么微服务应用会报异常吗?1. 微服务应用在读取配置时,首先读取的是本地数据。本地数据是存储在 磁盘文件中的。2. 如果本地缓存文件不存在,则读取Nacos配置中心的配置。当读取到配置文件后,会把数据写到本地文件中。

2024-06-18 20:53:24 905

原创 spring boot接入nacos 配置中心

注意, nacos-config-spring-boot-starter 的版本内 引入了 nacos-client,需要注意引入的版本 是否与nacos服务端匹配。这里使用的 nacos 服务端 是 1.x版本,所有引入的包也是1.x的才可以。1. spring boot 版本 (spring boot 2.x )这种方式 只是简单的拉去配置中心的内容,需要自己解析 配置内容和监听更新。2. nacos 配置中心 服务端 版本 (1.1.4)1. 启动 nacos 服务端,这里不做解释。

2024-06-17 17:53:20 3148

原创 Nacos启动报错

启动nacos,发现问题原因,就是下面这个方法报的空指针,Nacos 1.1.4引入的 mysql客户端版本是5.1.34。而我本地使用的 mysql 数据库版本是 8.0.26。mysql 客户端版本 和 服务器版本 不一致导致的。

2024-06-14 15:32:37 632

原创 开窗函数!

开窗函数(Window Function)是SQL中的一种高级功能,允许你在一组相关行(一个“窗口”)上执行聚合操作,而不像传统聚合函数(如SUM(), AVG(), COUNT())那样将所有匹配行合并成单个汇总行。分析函数:如LEAD(), LAG(), FIRST_VALUE(), LAST_VALUE(),用于访问同一窗口内的其他行数据。聚合函数:如SUM(), AVG(), COUNT(), MIN(), MAX(),但它们在每个窗口内计算,而不是整个结果集。

2024-06-03 14:11:42 432

原创 vs code 搭建 vue 开发环境

vue-cli : 输入 npm install -g @vue/cli。nodejs:官网下载安装后 输入 node -v 验证是否安装成功。以管理员身份打开 vs code ,导入 vue 项目。-project-name ,创建vue 项目。安装后,vue --versoin 验证。终端执行 npm run serve。vs code 环境准备好。进入目标文件夹,输入。现在开发越来越简单了。

2024-06-01 19:26:06 1453

空空如也

空空如也

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

TA关注的人

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