js定时任务
js定时任务
12345678910111213141516171819202122232425262728const tasks = []const scheduledTasks = () => { const add = (task, time) => { // 使用任务的字符串表示(或者任务的唯一标识符)来判断任务是否已存在 if (tasks.some((t) => t.task.name === task.name)) { console.log("Task already added."); return; } const intervalId = setInterval(() => { task(); }, time); tasks.push({task, intervalId}); ...
linux脚本
Linux 脚本(Bash)基础教程
1. 什么是 Linux 脚本?
Linux 脚本是用来自动化执行一系列命令的文本文件。
常用的脚本语言是 Bash(Bourne Again SHell)。
脚本通常以 .sh 结尾,但不强制。
2. 第一个脚本:Hello World
123#!/bin/bashecho "Hello, Linux scripting!"
#!/bin/bash :告诉系统用 bash 来执行脚本
echo :打印输出
保存为 hello.sh,然后运行:
12chmod +x hello.sh # 给执行权限./hello.sh # 执行脚本
3. 变量和基本运算
123456789#!/bin/bashname="orange"echo "Hello, $name"num1=10num2=5sum=$((num1 + num2))echo "Sum: $sum"
变量赋值不能有空格。
使用 $(( )) 进行算术运算。
变量引用时前面加 $ ...
logback配置文件
<logger name="org.springframework.boot.autoconfigure" level="INFO"/>
<!-- 指定日志输出的位置,ConsoleAppender表示输出到控制台 -->
<appender name="STDOUT"
class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- 日志输出的格式 -->
<!-- 按照顺序分别是:时间、日志级别、线程名称、打印日志的类、日志主体内容、换行 -->
<pattern>[%d{HH:mm:ss.SSS}] [%-5level] [%thread] [%logger] [%msg]%n</pattern>
<charset>UTF- ...
redis
redis
常见5种数据类型:string(字符串),list(列表),hash(哈希),set(集合),zset(有序集合)
第一节 key操作的相关命令
语法
功能
keys *
查看当前库所有key (匹配:keys *1)
exists key
判断某个key是否存在
type key
查看你的key是什么类型
del key
删除指定的key数据
unlink key
非阻塞删除,仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作
expire key 10
10秒钟:为给定的key设置过期时间
ttl key
查看还有多少秒过期,-1表示永不过期,-2表示已过期
select
命令切换数据库
dbsize
查看当前数据库的key的数量
flushdb
清空当前库
flushall
清空全部库
第二节 字符串类型(String)
2.1 简介
1 String是Redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
2 String类型是二进制安全的 ...
spring boot自动配置原理
spring boot自动配置原理
导入场景:导入依赖和bean对象
默认的扫描包规则
@SpringBootApplication(scanBeanPackages="online.zorange")
默认扫描启动类所在的包,以及子包
绑定配置
配置文件的配置项和java类的对象进行一一绑定
按需加载自动配置
spring.boot.autoconfiguration 在spting-boot-start包中,它包含各种技术的配置类,来生产对应技术bean对象。
导入哪个场景就开启哪个自动配置,如果没有引入对应技术的场景启动器,则不会引入。
SpringBootApplication在启动时会,拿到所有技术的XXXautoconfiguration.class【spi技术】【META-INF/spring/org.springframework.boot.autoconfiqure.AutoConfiguration.imports里面的技术】。只有在引入对应的启动器,才会加载,并不会直接全部加载。
@SpringBootAppl ...
spring 监听器
实现方式:
1️⃣ Spring 框架自带的ApplicationListener
2️⃣ 使用Spring Boot 框架封装的SpringApplicationRunListener
具体使用流程:
1. ApplicationListener
用于监听 Spring 应用上下文事件的机制。通过实现 ApplicationListener 接口,你可以在应用启动、停止等生命周期事件发生时执行特定的逻辑
常见事件: ContextRefreshedEvent 和 ContextClosedEvent \ ApplicationStartedEvent
事件类型
触发时机
用途
ApplicationStartedEvent
应用启动时(SpringApplication.run())
记录启动日志、监控启动过程
ApplicationEnvironmentPreparedEvent
Environment 初始化后,ApplicationContext 启动前
修改环境变量、添加配置源
ApplicationContextInitializedEvent
Ap ...
seata 分布式事务
事务回顾
概述: 就是由多个操作组成的一个逻辑单元,组成这个逻辑单元的多个操作要么都成功要么都失败。
ACID四大特性
A:原子性(Atomicity)
一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前
的状态,就像这个事务从来没有执行过一样。
C:一致性(Consistency)
事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。
如果事务成功地完成,那么系统中所有变化将正确地应用,系统处于有效状态。
如果在事务中出现错误,那么系统中的所有变化将自动地回滚,系统返回到原始状态。
I:隔离性(Isolation)
指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。事务查看
数据更新时,数据所处的状态要么是另一事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看到中间状态的数据。
D:持久性(Durability)
指的是只要事务成功结 ...
spring相关注解
IoC (控制反转) 和 依赖注入
Spring 核心注解:
123456789101112131415161718// 标记类为 Spring 容器管理的 Bean,其默认的 Bean 名称由类名派生而来。@Component// 这不是一个标准的 Spring 注解。@Service// 持久层注解@Repository// 标记类为一个控制器 Bean。通常用于 Web 层的组件。@Controller// JDK提供的依赖注入注解,默认根据name@Resource// 标记依赖注入,是 Spring 框架中最常用的依赖注入方式。@Autowired// 若一个接口有多个实现类,可以通过指定name来注入@Qualifier("name")
1234567891011121314151617181920212223// 指定要扫描的包以发现带有 @Component 等注解的类。@ComponentScan(basePackages = {"online.zorange.define_components"})// ...
ssh
Linux 安装 Git + 生成 SSH 公钥 + 配置公钥 + 自定义 SSH 名称连接服务器教程
1. 安装 Git
大部分 Linux 发行版默认自带 Git,如果没有,执行下面命令安装:
Debian/Ubuntu 系统:
12sudo apt updatesudo apt install git -y
CentOS/RHEL 系统:
1sudo yum install git -y
Fedora 系统:
1sudo dnf install git -y
安装完成后,验证:
1git --version
2. 生成 SSH 公钥和私钥
执行以下命令,生成 SSH 密钥对:
1ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
-t rsa 表示使用 RSA 算法
-b 4096 表示密钥长度 4096 位(更安全)
-C 添加注释,一般填写邮箱
过程示例:
123456Generating public/private rsa key pair.Enter file in which to sa ...
swap
swap
📚 Linux 创建 swap 详细指南
⚙ 适用系统:
CentOS / RHEL / Rocky / AlmaLinux
Ubuntu / Debian
1️⃣ 查看当前 swap 情况
12345678# 查看 swap 总体使用情况free -h# 查看 swap 设备列表swapon -s# 查看详细cat /proc/swaps
2️⃣ 创建 swap 文件
这里以 创建 4G swap 文件 为例。
➡️ 2.1 创建 swap 文件
12345# 在 /swapfile 创建大小为 4G 的 swap 文件sudo fallocate -l 4G /swapfile# 如果 fallocate 不可用,可使用 dd (更兼容)# sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
➡️ 2.2 修改权限
1sudo chmod 600 /swapfile
➡️ 2.3 设置为 swap 格式
1sudo mkswap /swapfile
3️⃣ 启用 swap
1sudo swapon /sw ...
