自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

学习笔记

学习笔记

  • 博客(233)
  • 资源 (3)
  • 收藏
  • 关注

原创 java线程通信 生产者消费者,synchronized,,ReentrantLock,Condition(笔记备份)

本文介绍了Java线程通信的实现方式。首先通过生产者-消费者案例展示了使用synchronized和wait/notify机制实现线程间通信的基本模板:线程操作资源类,资源类负责判断条件、执行操作和通知其他线程。当线程数量增加时,会出现虚假唤醒问题,解决方法是将if判断改为while循环。随后介绍了更灵活的Condition机制,它配合Lock使用,可以创建多个等待队列,实现更精确的线程唤醒控制。代码示例展示了如何使用ReentrantLock和Condition改造原有实现,解决了多线程环境下的同步问题。

2025-12-23 15:56:42 632

原创 ThreadPool,execute,submit,threadpoolexecutor,BlockingQueue(笔记备份)

​ 在《阿里巴巴java开发手册》中指出了线程资源必须通过线程池提供,不允许在应用中自行显示的创建线程,这样一方面是线程的创建更加规范,可以合理控制开辟线程的数量;另一方面线程的细节管理交给线程池处理,优化了资源的开销。

2025-12-23 15:49:15 1549 1

原创 Lock,ReentrantLock,ReentrantReadWriteLock,锁降级,死锁发现 (笔记备份)

Java并发编程中的Lock锁机制 摘要:Java并发包(JUC)提供了强大的Lock接口及实现类,相比synchronized更加灵活。ReentrantLock是可重入互斥锁,支持公平锁策略和限时等待功能。可重入性允许同一线程多次获取锁,避免死锁发生。公平锁确保等待时间最长的线程优先获取锁。tryLock方法可实现限时等待,有助于解决死锁问题。Lock锁机制为Java并发编程提供了更精细的控制能力。

2025-12-20 11:31:24 706

原创 synchronized的8锁问题(区分默认用的是那把锁) 笔记云备份

本文摘要: 文章首先介绍了并发与并行的核心概念,并发是任务轮流推进(如抢票场景),而并行是真正同时执行(如多人协作)。接着讲解了同步(顺序执行)和异步(非阻塞执行)的区别。重点阐述了Java线程的6种状态(新建、就绪、阻塞、等待、限时等待、终止)及其源码定义。通过卖票案例展示了多线程编程模板:创建资源类→实现同步方法→多线程调用。最后提出"synchronized八锁问题",通过8个具体场景考察对同步锁机制的理解,包括普通方法与静态方法的锁对象差异、单实例与多实例情况下的锁行为等核心知识

2025-12-19 09:41:11 811

原创 ShardingSphere-JDBC读写分离入门,(笔记备份)

本文介绍了使用ShardingSphere-JDBC实现MySQL读写分离的方案。主要内容包括: 读写分离架构原理:主库处理写操作,从库处理查询操作,通过SQL语义分析自动路由 环境准备:使用Docker搭建MySQL一主二从(3307主库,3308/3309从库) SpringBoot项目配置: 添加ShardingSphere-JDBC 5.4.0等依赖 配置shardingsphere.yaml定义数据源和读写分离规则 支持随机、轮询和权重三种负载均衡算法 测试验证:通过MyBatis-Plus操作数

2025-12-17 10:04:08 909

原创 mysql主从复制搭建

MySQL主从同步原理是通过slave从master读取binlog日志实现数据同步。主服务器记录数据变更到二进制日志,从服务器通过IO线程获取并保存到中继日志,再由SQL线程解析执行。本文详细介绍了使用Docker配置一主一从环境的步骤:1) 配置主服务器my.cnf,创建复制账号;2) 配置从服务器my.cnf,建立主从关系;3) 启动同步并验证状态。测试表明在主库创建数据库和表后,从库能成功同步数据。关键配置包括server-id设置、binlog格式选择以及正确指定主库日志位置。

2025-12-15 09:16:11 802

原创 mysql锁机制入门笔记(备份)

MySQL锁机制是保证数据库事务隔离性的关键技术,主要用于解决并发事务带来的数据一致性问题。文章首先介绍了锁的基本概念,指出锁是协调并发访问资源的机制,对数据库性能和数据一致性至关重要。然后详细分析了并发事务可能导致的四种问题:脏读、丢失修改、不可重复读和幻读。针对这些问题,MySQL提供了四种隔离级别解决方案:读未提交(存在脏读问题)、读已提交(存在不可重复读问题)、可重复读(MySQL默认级别,可解决不可重复读但可能出现幻读)和串行化(最高隔离级别)。通过SQL演示展示了不同隔离级别下事务的行为差异,重

2025-11-16 10:56:15 906

原创 mysql日志相关设置和查看 ,基础日志,redo log, undo log,刷盘策略 (备份自用笔记)

MySQL日志系统与事务机制摘要 一、MySQL日志分类 错误日志:记录启动错误和运行异常 查询日志:记录所有SQL操作(需谨慎开启) 慢查询日志:记录执行超时的SQL(默认10秒) 二进制日志:记录数据变更,用于复制恢复 事务日志:包括redo和undo日志 二、事务特性实现 原子性(Atomicity):通过undo日志回滚 一致性(Consistency):由redo+undo共同保证 隔离性(Isolation):通过锁机制实现 持久性(Durability):依赖redo日志持久化 三、关键机制

2025-11-16 10:47:01 872

原创 jvm内存模型新手入门

JVM快速入门摘要:JVM运行于操作系统之上,不直接与硬件交互。其核心结构包括类加载器(Bootstrap、Extension、Application三类)、执行引擎、本地接口和本地方法栈等模块。类加载器采用双亲委派机制确保安全性,防止重复加载。程序计数器为线程私有,存储指令地址。本地接口支持调用C/C++等外部代码,但现代应用已较少使用。通过层次化的类加载机制,JVM实现了对不同来源字节码的安全加载和管理。

2025-11-12 10:02:04 380

原创 Redis 从安装到 Spring Boot 整合:新手入门一篇全搞定

Redis是一个高性能键值对内存数据库,支持多种数据结构(如String,List,Set,Zset,Hash)和持久化方案(RDB快照和AOF日志)。它具备高并发、线程安全、原子性操作等特性,适合作为缓存层使用,常见于秒杀、热点数据、计数器等场景。在Linux下可通过yum安装Redis服务端和客户端工具,配置包括端口、密码、持久化策略等。Redis提供了丰富的指令集,如String类型的SET/GET/INCR,List类型的LPUSH/RPOP等,满足不同业务需求。

2025-10-26 21:17:17 761

原创 MyBatis-Plus 代码生成器入门保姆级教程:一键生成实体、Mapper、Service!

本文介绍了MyBatis-Plus代码生成器的两种工程模式:正向工程和逆向工程。正向工程是从代码生成数据库结构,适合初期设计阶段;逆向工程则是从数据库生成代码,适用于已有数据库项目。重点讲解了MyBatis逆向工程的具体实现步骤:1)创建数据库表;2)新建专用Module并导入相关依赖;3)编写生成器Java类进行配置。通过FastAutoGenerator可以快速生成实体类、Mapper接口、Service等代码文件,提高开发效率。文章最后提供了官网链接以获取更多配置功能。

2025-10-13 11:19:54 1150

原创 Spring Boot + JWT + jjwt 实现前后端分离登录认证(详细教程 + 工具类封装)入门教程

本文介绍了Token的基本概念及其应用场景,Token是一种加密字符串,用于替代传统Session机制,作为客户端请求的通行令牌。重点讲解了JWT(JSON Web Token)的结构,包含Header、Payload和Signature三部分,并详细说明了标准字段和自定义字段的用途。通过jjwt组件实现JWT的生成与解析,包括密钥生成、Token签发和验证流程,并提供了完整的Java工具类代码示例。文章还涵盖了JWT的配置管理,包括密钥存储和过期时间设置,适用于接口限制、用户登录等常见场景。

2025-10-13 11:16:10 746

原创 Typora 配置 PicGo 使用 Gitee 图床实现图片自动上传(Mac 详细教程)

本文介绍了在Mac上使用Typora+PicGo+Gitee搭建个人图床的方法。通过创建Gitee公开仓库作为图片存储空间,生成访问令牌后配置PicGo插件实现图片自动上传,并同步设置Typora实现粘贴图片自动上传功能。该方案解决了多平台发布时图片处理的痛点,具有访问速度快、操作简单、兼容性好等优点,但也存在仓库需公开、空间有限等限制。文章详细说明了配置步骤,并分析了不同使用场景下的推荐方案,同时指出CSDN等平台会自动替换外部图片链接的特性。

2025-10-10 21:18:36 1125

原创 RabbitMQ入门整合springboot,死信,延迟队列,延迟插件,故障,消费端限流,消息超时,优先级

本文是RabbitMQ学习笔记,主要介绍了消息队列的作用、RabbitMQ的基本概念及其在SpringBoot中的应用。 消息队列的作用: 提高系统响应速度 控制并发流量 符合开闭原则(扩展开放、修改关闭) RabbitMQ核心概念: 生产者(Producer)和消费者(Consumer) 虚拟主机(Virtual Host)用于项目隔离 交换机(Exchange)负责消息路由,不存储消息 类型:Fanout(广播)、Direct(定向)、Topic(通配符) 队列(Queue)存储消息 部署方式: 使用D

2025-09-27 10:26:23 1981 1

原创 nginx配置防盗链入门

Nginx防盗链技术解析:通过Referer验证保护静态资源 本文介绍了Nginx实现防盗链的技术方案。防盗链可防止他人直接引用服务器上的图片、视频等静态资源,避免带宽和服务器资源被滥用。文章详细展示了如何在Nginx中配置动静分离架构,并通过valid_referers指令实现基于Referer验证的防盗链机制。具体实现包括:1)允许指定域名访问;2)对非法请求返回403状态码;3)替换为自定义图片。还提供了curl测试方法和多服务器环境下的验证方案,帮助开发者有效保护网站资源。

2025-09-21 19:57:01 281

原创 docker安装mysql8, 字符集,SQL大小写规范,sql_mode

本文详细介绍了如何使用Docker安装MySQL 8.0.30,并解释了相关命令参数的作用,如端口映射、数据持久化、密码设置等。安装完成后,文章还提供了测试远程连接的步骤,包括终端连接和Navicat连接,并解决了MySQL 8版本中可能出现的加密规则问题。此外,文章还介绍了MySQL的字符集设置、SQL大小写规范以及sql_mode的配置,帮助用户更好地管理和优化MySQL数据库。

2025-05-13 14:26:42 1090

原创 docker及docker-compose安装及使用

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具,通过一个 YAML 文件简化多容器的管理与协调。它能够提升团队协作效率,加快开发迭代,并具有良好的可移植性。Docker Compose 通过一条命令即可根据 YAML 文件创建或管理多容器应用。安装 Docker 时,Compose 插件已自动附带,可通过命令 docker compose version 验证安装。入门案例展示了如何使用 Docker Compose 部署 Redis 和 MySQL,通过 docke

2025-05-13 14:22:17 1753

原创 SpringBoot项目容器化进行部署,meven的docker插件远程构建docker镜像

要将Spring Boot项目容器化部署,首先需要将项目打包为可执行的JAR文件,并通过Dockerfile构建镜像。步骤如下:项目打包:在pom.xml中引入spring-boot-maven-plugin插件,执行mvn install生成可执行JAR文件,并确保在本地运行无误后上传至服务器。编写Dockerfile:在JAR文件同级目录下创建Dockerfile,指定基础镜像(如mycentos-jdk17),暴露端口,复制JAR文件到容器内,并设置启动命令。构建镜像:使用docke

2025-05-10 16:56:30 1469

原创 dockerfile编写入门

本文介绍了如何使用Dockerfile构建自定义镜像,以满足特定需求。Dockerfile是一个文本文件,包含基础镜像信息、维护者信息、镜像操作指令和容器启动时执行的指令。常用指令包括FROM、MAINTAINER、RUN、ENV、ADD和ENTRYPOINT。文章通过一个具体案例,展示了如何构建一个包含JDK17的CentOS7镜像。步骤包括准备环境、创建Dockerfile、使用docker build命令构建镜像、查看镜像构建情况,以及测试镜像中的JDK17安装情况。最终,用户可以通过自定义镜像创建容

2025-05-10 16:55:28 947

原创 docker安装nginx,基础命令,目录结构,配置文件结构

Nginx是一款轻量级的Web服务器(动静分离)/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强.🔗官网。

2025-04-10 20:41:20 927

原创 nginx入门,部署静态资源,反向代理,负载均衡使用

早期的网站流量和业务功能都比较简单,单台服务器就可以满足基本需求,但是随着互联网的发展,业务流量越来越大并且业务逻辑也越来越复杂,单台服务器的性能及单点故障问题就凸显出来了,因此需要多台服务器组成应用集群,进行性能的水平扩展以及避免单点故障出现。**应用集群:**将同一应用部署到多台机器上,组成应用集群,接收负载均衡器分发的请求,进行业务处理并返回响应数据**负载均衡器:**将用户请求根据对应的负载均衡算法分发到应用集群中的一台服务器进行处理。

2025-04-10 20:40:00 1904 1

原创 @SentinelResource注解,sentinel限流,熔断自定义返回 ,配合nacos完成持久化

Data//返回码//返回消息//返回数据// 私有化构造// 返回数据/*** value 资源标识的符号* blockHandler 是用户自定义的限流和熔断兜底方法,* 如果不加blockHandlerClass 是在本类中找,加了之后会到指定的类中去找对应的方法* 加了是到指定类中找* @return*/return Result.build(user,200,"查询成功");操作的时候 注意点。

2025-04-08 19:12:03 1170

原创 sentinel熔断降级

熔断降级是解决雪崩问题的重要手段。其思路是由统计服务调用的异常比例、异常数、慢请求比例,如果超出阈值则会该服务。即拦截访问该服务的一切请求;而当服务恢复时,断路器会放行访问该服务的请求。Sentinel 熔断降级基于熔断器模式 (circuit breaker pattern) 实现。熔断器内部维护了一个熔断器的状态机,状态机的转换关系如下图所示:状态机包括三个状态:1、closed(初始状态):关闭状态,断路器放行所有请求,并开始统计异常比例、异常数、慢请求比例。超过阈值则切换到open状态。

2025-04-08 19:06:07 1430

原创 Nacos配置中心使用

nacos配置文件

2025-04-06 20:03:36 1181

原创 sentinel新手入门安装和限流,热点的使用

在添加限流规则时,点击高级选项,可以选择三种流控模式1、直接:统计当前资源的请求,触发阈值时对当前资源直接限流,也是默认的模式2、关联:统计与当前资源相关的另一个资源,触发阈值时,对当前资源限流3、链路:统计从指定链路访问到本资源的请求,触发阈值时,对指定链路限流。

2025-04-06 19:58:58 991

原创 Openfeign入门使用教程

概述:feign是一个声明式的http客户端其作用就是帮助我们优雅的实现http请求的发送。官方地址类型作用说明修改日志级别包含四种不同的级别:NONE、BASIC、HEADERS、FULL响应结果的解析器http远程调用的结果做解析,例如解析json字符串为java对象请求参数编码将请求参数编码,便于通过http请求发送支持的注解格式默认是SpringMVC的注解失败重试机制请求失败的重试机制,默认是没有,不过会使用Ribbon的重试。

2025-04-05 09:44:50 1365

原创 SpringCloudGateWay

概述上述的过滤器是gateway中提供的默认的过滤器,每一个过滤器的功能都是固定的。但是如果我们希望拦截请求,做自己的业务逻辑,默认的过滤器就没办法实现。此时就需求使用全局过滤器,全局过滤器的作用也是处理一切进入网关的请求和微服务响应,与GatewayFilter的作用一样。区别在于GatewayFilter通过配置定义,处理逻辑是固定的;而GlobalFilter的逻辑需要自己写代码实现。

2025-04-05 09:41:13 1011

原创 Nacos入门安装和注册分中心使用案例

【代码】Nacos入门安装和使用案例。

2025-03-30 10:36:07 680

原创 docker部署redis

配置文件的内容为注意安全提示:如果在公网环境部署Redis,建议启用安全认证(如设置密码),并严格控制访问IP,避免安全隐患。解释一下docker run这条命令整体含义: 此命令会启动一个名为redis的Redis容器,持久化数据,并挂载配置文件,容器运行在后台,并且在Docker或主机重启后总是自动启动。⸻参数详细解释: • docker run • 表示创建并运行一个新容器。• -d • 容器以后台模式(detached mode)运行,不占用终端。

2025-03-30 10:26:41 839

原创 SpringBoot整合redis报错

错误分析Spring Boot 应用在执行 Redis 写操作时遇到了 RedisReadOnlyException,提示 “READONLY You can’t write against a read only replica.”,意思是 当前 Redis 实例是只读的,从库(replica)无法执行写操作。⸻这是 Lettuce(Spring Boot 默认的 Redis 客户端)抛出的异常,表示应用试图在 只读的 Redis 副本(replica)上执行写入操作,但被拒绝。gener

2025-03-23 11:31:06 1063

原创 javaStream流中map方法和filter方法 ,sorted排序

【代码】javaStrem流中map方法实战应用,返回值不相同的集合。

2025-03-23 10:48:25 637

原创 Minio搭建并在SpringBoot中使用完成用户头像的上传

新手搭建minio, 并配合springboot 和vue 完成用户头像的上传

2025-03-02 20:48:43 1871

原创 easyExcel使用案例有代码

easyExcel的使用

2025-03-02 15:18:17 934

原创 springboot整合swagger

Swagger是一种基于OpenAPI规范的API文档生成工具,它可以根据Java代码中的注解自动生成API接口文档,并提供UI界面进行在线测试和调试。Swagger为开发人员提供了更加方便、直观的API管理方式,有助于提升API的可读性和可维护性。Swagger的主要特点包括:1、自动生成API文档:通过在Java代码中添加Swagger注解,Swagger能够自动地解析API接口的参数、响应等信息,并生成相应的API文档。

2025-01-20 09:16:56 650

原创 logback日志导入使用

logback使用

2024-10-27 16:00:31 491

原创 C语言简单图形编程 直角三角形 数字金字塔 c等腰三角形 99乘法表代码

c语言直角三角形 c语言打印数字金字塔 河北专接本c语言 c语言打印等腰三角形 c语言99乘法表代码

2023-03-09 18:06:19 1055

原创 c入门数的编程 拆数,构造数,c语言字符找出数字拼接,水仙花数 将一个多位数各位拆分

c语言水仙花数 c语言字符串找出数字 3+33+333+3333 1+12+123+1234 c语言字符转数字拼接 河北专接本c语言编程

2023-02-15 10:14:56 1673 6

原创 c语言递归 累和 ,累乘积,斐波那契数列,字符串长度

c语言递归求和 c语言用递归方法求n! c语言用递归求字符串长度 河北专接本计算机真题c语言递归求斐波那契

2023-02-11 10:14:23 1340

原创 c函数篇 入门 阶乘 ,素数(2019年)数列求和(2021年),完数,完全平方数,因子求和,x的y次方。

c语言求完全数 c语言求因子之和 c语言求完全平方数c语言求x的n次方函数 河北专接本c语言真题

2023-02-10 10:10:48 681

原创 C语言字符串长度,追加,赋值,逆序,回文数(拆数和拼数)

c语言求回文数 c语言求逆序数 c语言字符串拼接 c语言求字符串长度 c语言字符串复制

2023-02-07 10:12:36 791

Emby Mac端服务端

Emby Mac服务端

2025-10-26

PicGo-2.3.1-arm64.dmg Mac版

PicGo-2.3.1-arm64.dmg Mac版 M系列使用

2025-10-10

Harbor的安装和使用

linux环境下harbor的安装包

2025-05-11

apache-jmetere-5.6.1

apache-jmetere-5.6.1 Apache JMeter 是 Apache 组织基于 Java 开发的压力测试工具,用于对软件做**压力测试**

2025-04-06

编写好的Jmeter测试样例

编写好的Jmeter测试样例

2025-04-06

linux系统x86redis

linux系统x86redis

2025-03-23

思科模拟器安装包, 英文原版 ,CiscoPacketTracer

思科模拟器安装包

2025-03-15

汇编语言指令全称 比如,add、sub(substract)、adc(add with carry)、sbb(substrac

比如,add、sub(substract)、adc(add with carry)、sbb(substract with borrow)、inc(increase)、dec(decrease)、cmp(compare)、imul(integer multiplication)、idiv(integer divide)、aaa(ASCII add with adjust)二、算术运算指令 比如,add、sub(substract)、adc(add with carry)、sbb(substract with borrow)、inc(increase)、dec(decrease)、cmp(compare)、imul(integer multiplication)、idiv(integer divide)、aaa(ASCII add with adjust)等都是算术运算指令,这些指令实现寄存器和内存中的数据运算。它们的执行结果影响标志寄存器的sf、zf、of、cf、pf、af位。 三、逻辑指令 比如,and、or、not、xor(exclusive or)、test、shl(shift

2023-01-02

java日志配置文件,放在src文件夹下使用

java的logback配置文件

2022-07-11

java的Logback日志框架jar包

适用于java中的Logback日志框架

2022-07-11

java,api文档最新版zip

学习阅读英文的aip文档有助于提升我们的水平,很多小伙伴找不到,给大家上传了免费下载 把资源解压,然后会出现一个index为后缀的索引文件,直击单机或者选择,使用浏览器打开都可以,

2022-06-29

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

TA关注的人

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