未分类 – Wasting_Misaka.Blog https://forelink.top Hso! Tue, 10 Sep 2024 16:57:11 +0000 zh-Hans hourly 1 https://wordpress.org/?v=6.7.1 Linux 系统创建符号连接 https://forelink.top/index.php/2024/09/11/linux-%e7%b3%bb%e7%bb%9f%e5%88%9b%e5%bb%ba%e7%ac%a6%e5%8f%b7%e8%bf%9e%e6%8e%a5-2/ https://forelink.top/index.php/2024/09/11/linux-%e7%b3%bb%e7%bb%9f%e5%88%9b%e5%bb%ba%e7%ac%a6%e5%8f%b7%e8%bf%9e%e6%8e%a5-2/#respond Tue, 10 Sep 2024 16:57:10 +0000 https://forelink.top/?p=533 为新添加的程序,创建符号链接(软链接)是一个良好习惯(类似于WIndows系统中的快捷方式)。 要创造一个符号链接,需要用ln -s命令。

ln -s /path/to/file /path/to/symbol

ln是用于 创建链接 的命令 -s 表示创造一个符号链接 而非硬链接 中间的部分表示符号链接的目标文件路径,指向的是想要快速打开的文件。 最后的部分表示符号链接的存放路径

删除符号链接

要到符号链接存储的位置中使用rm指令移除掉软链接即可

]]>
https://forelink.top/index.php/2024/09/11/linux-%e7%b3%bb%e7%bb%9f%e5%88%9b%e5%bb%ba%e7%ac%a6%e5%8f%b7%e8%bf%9e%e6%8e%a5-2/feed/ 0
MySQL索引 https://forelink.top/index.php/2024/09/05/2-mysql%e7%b4%a2%e5%bc%95x/ Wed, 04 Sep 2024 19:40:14 +0000 https://forelink.top/?p=495 简介:

索引(index)是帮助MySQL高效获取数据的数据结构(有序)

全表扫描性能极低。 建立索引,就是建立一个二叉树并维护。

有索引的位置,查询效率非常高效。

提高数据检索的效率,降低数据库IO压力,用空间换时间。 虽然查询效率很高,但如果进行更删改操作时,会产生额外维护树的成本。

索引结构:

在存储引擎层实现,不同存储引擎有不同的结构:

image-20240904172446832

B+树是最常见的索引类型,大部分引擎都支持B+树索引。 B+tree索引对于三个常用存储引擎都是支持的(InnoDB、MyISAM、Memory)

B树:

B树为存取数据设计的多路平衡搜索树。B树类似于红黑树,但B树在降低磁盘I/O方面更好一些。许多数据库都用B树或者B树变种来存储数据。

B树可以在O(lg(n))时间内完成一些动态集合的操作。

B树根据最小度数t≥2,对包含n个关键字,高度为h的B树有:

image-20240904191844336

层级相较于红黑树少,更适合于大数据量IO $$ h≤log _{t} \frac{n+1}{2} $$

B+树:

最常见的B树变种之一,它把所有卫星数据都存储在叶节点中,内部结点只存放关键字和孩子指针,因此最大化了内部结点的分支因子。

MySQL对B+树进行了优化,增加了一个指向相邻叶子节点的链表指针,形成了有序指针的B+Tree,提高了区间访问的性能。

image-20240904194346540

Hash:

哈希索引采用hash算法,将key-value换算成新的hash值,映射到对应的槽位上,存储在hash表。出现hash冲突时,将hash表的value改造成链表。

Hash索引查询效率高,理想情况的时间复杂度为O(1)。

Hash索引只能用于匹配(=),不支持范围查询(between, < , > ) 且Hash索引无法完成排序操作。

除了Memory外,InnoDB有自适应hash索引的功能。

索引分类:

聚集索引和二级索引:

InnoDB中: 聚集索引:将数据与索引共同存储,索引结构的叶子节点保存了行数据。 二级索引:数据与索引分开存储,索引结构的叶子节点关联的是对应的主键

聚集索引有且仅有一个 二级索引可以存在多个

聚集索引选取规则: 如果存在主键,主键索引就是聚集索引。 如果不存在主键,将使用第一个唯一索引(UNIQUE)作为聚集索引。 如果没有合适的唯一索引,InnoDB会自动生成一个隐藏的rowid作为聚集索引

聚集索引:叶节点存放行数据。

image-20240904194346540

二级索引:叶节点存放主键

image-20240904194523710

用二级索引查到的主键值,在聚集索引中查询行数据值,这种操作叫回表查询。 大部分SQL优化,都依赖于聚集索引和二级索引结构和原理的理解。

索引操作语法:

创建索引:

// 不指定索引类型 默认创建常规索引
CREATE [UNIQUE|FULLTEXT] INDEX index_name ON [table_name] (col_name...)

查看索引:

SHOW INDEX FROM table_name;

删除索引:

DROP INDEX [index_name] ON [table_name];

例:

name字段为姓名字段,该字段的值可能会重复,为该字段创建索引。

phone手机号字段的值,非空,唯一。为该段建立唯一索引。

job,age 设联合索引。

// 联合索引的字段顺序 
create index [index_name] on [table_name] (字段1,字段2...)

SQL性能分析:

做SQL分析,需要做SQL性能分析。

SQL执行频率:

查看当前服务器状态信息

show [session|global] status;

常用的命令

// 七个下划线
show [session|global] status like 'com_______';
image-20240904203907968

反悔了所有操作的访问频次,为SQL性能优化提供决策基础。

慢查询日志:

慢查询时间记录了所有执行时间超过指定参数long_query_time的所有SQL语句的日志(默认10秒)

数据库的慢查询日志,默认没有开启,需要在MySQL的配置文件(如:/etc/mysql/my.cnf)中添加以下配置信息:

#分配一个配置组
[mysqld]
#开启MySQL慢日志查询开关
slow_query_log = 1
#设置慢日志时间 SQL语句执行时间超过time,就会被记录到慢查询日志中
long_query_time = time
#设置慢日志存储位置和慢日志文件名
slow_query_log_file = /var/lib/mysql/xxx-slow.log

输入 show variables like ‘slow_query_log’ 查看当前慢日志开启情况

image-20240904212051965

日志文件默认生成在 /var/lib/mysql 目录下

用tail -f xxx-slow.log 来监视文件变动,可以测试慢查询日志,来定位执行效率比较低的SQL。

image-20240905162241638

profile详情:

如果我们想关注比慢查询日志略慢的SQL语句

show profiles能在做SQL优化前,让我们知道时间

// 查看是否支持profiles
SELECT @@have_profiling;
// 查看是否开启profiling
SELECT @@profiling;
// 开启profiling
set profiling = 1;
image-20240904212632560

说明支持profile,但profiling默认是关闭的,需要我们手动的打开。

image-20240904212752806

image-20240904212847209

通过show profiles命令可以查看所有命令的耗时情况。

// 查询profiles
show profiles;
// 查询一条命令的具体耗时 profile没有s
// 加入cpu后 可以查看每个阶段的cpu占用情况
show profile [cpu] for query [Query_ID];
image-20240904213152056

同时也可以查询一条命令的具体耗时:

image-20240904213402224

explain执行计划:

EXPLAIN 或者 DESC命令获取MySQL如何

EXPLAIN和DESC效果是一样的

image-20240904214316209

各字段含义:

Id: 表示查询的表顺序,表示了操作表的执行顺序。 (id相同,执行顺序从上到下。id不同,值越大越先执行。)

select_type: 表示SELECT的类型,常见的取值有 Simple (简单表,即不用表连接或子查询) Primary (主查询,即最外层的查询) Union (UNION中第一个之后的查询语句) Subquery (SELECT/WHERE 之后的子查询)

type: 表示连接类型,性能由高到低的连接类型为 NULL , system , const , eq_ref , ref , range , index , all NULL在一般业务操作中一般不太可能出现。 all代表全表扫描,是性能最差的查表方式。 其余各连接类型现查即可。

possible_key: 显示可能应用在这张表上的索引。

Key: 实际使用的索引,为NULL时没有使用索引

Key_len: 表示索引中使用的字节数,为索引字段最大可能长度,并非实际使用长度。 在不损失精确性的前提下,长度越短越好。

rows: MySQL预估必需要执行查询的行数,在InnoDB引擎的表中是一个估计值。

filtered: 表示返回结果的行数占需读取行数的百分比,filtered的值越大越好。

Extra: 额外的值,前面没有展示出来的值会在此显示。

type,possible_keys,key,key_len,是最重要的返回值。

索引使用:

验证索引效率:

使用主键查询和非主键查询时,性能会有很大的差异。 主键默认有主键索引,其他key需要自行创建索引。

创建索引需要构建一个B+树的数据结构。需要较长的时间。

未创建索引:

在数据量为1e7时,无索引查询时间约为8.92s

image-20240905162434927

已创建索引:

创建索引后,查询时间为0.01s。验证了索引查询的效率。

image-20240905162549795

同时用explain语句查询SQL执行计划:

image-20240905162805558

使用的key为索引。

使用规则:

最左前缀法则:

最左前缀法则指的是,查询从创建索引时的最左列开始,并且不跳过索引中的列 如果索引了多列(联合索引),要遵循最左前缀法则。

在创建联合索引时,假设字段的顺序为 (i1,i2,i3)

// SQL会使用索引
select * from t1 where i1 = 'a' and i2 = 'a' and i3 = 'a';
select * from t1 where i1 = 'a' and i2 = 'a';
select * from t1 where i1 = 'a';

// 下面的SQL索引会失效
select * from t1 where i2 = 'a',i3 = 'a';
select * from t1 where i2 = 'a';
select * from t1 where i3 = 'a';

// 下面的SQL,索引会部分失效
select * from t1 where i1 = 'a' and i3 = 'a'; // i3字段的索引会失效

MySQL语法优化器会为我们优化。

如果使用范围查询(>,<),使用了范围查询右侧(后续列)的字段索引失效。

覆盖索引:

查询所有字段可以将所有索引都用上的情况。(?) 尽量使用覆盖索引,减少select * 的使用。

如果使用二级索引查找时,有二级索引中不存在的字段。 则还需要回表查询,在聚集索引中查找整列以获取字段的值。

联合索引 可以解决多字段查询时回表查询的问题。

前缀索引:

当字段类型为字符串(varchat , text等)时,有时候需要索引很长的字符串,会让索引变得很大。 查询时会造成大量磁盘I/O,影响查询效率。 使用模拟哈希索引,反而可能导致索引变得更长。

此时可以只将字符串的一部分前缀,建立索引,这样可以大大节约索引空间,提高索引效率(字典树?)

语法:

// 根据该字段的前缀长度n 设置索引,只记录该字段的前n位
CREATE index idx_xxx on table_name(字段(n))

前缀长度 可以根据索引的选择性来决定。 求取索引的选择性,需要知道字段不重复的值,和表中记录行的总数。

// 字段去重后不重复的总计数 C
select count(distinct 字段) from t1;
// 表中行总数 T
select count(*) from t1;

// 截取前n个值的索引的选择性为 C/T in n;
select count(distinct Left(X,n))/count(*) from T1;

可以得到不同前缀长度时的索引选择性。当性能提升不明显时,选择一个较短,选择性够高的截取度作为前缀长度即可。

image-20240905174228333

引入概念 索引的选择性
记c为字段不重复的值,T为数据表的记录总数
索引的选择性为 c/T (1/T ~1)
索引的选择性越高,查询效率越高,因为选择性高可以MySQL在查找时过滤掉更多的行。
唯一索引的选择性为1时,性能是最好的。

单列索引和联合索引:

单列索引:一个索引只包含单个列 容易涉及回表查询。

联合索引:一个索引包含多个列,叶节点存储卫星数据 如果存在多个查询条件,考虑针对查询字段建立联合索引。 来避免回表查询的额外性能开销。

索引失效规则:

字符串:

格式不规范,条件查询字符串类型字段时不加单引号。涉及类型转换,导致索引失效。 尾部模糊匹配,索引不会失效。头部模糊匹配,索引会失效。

// 索引生效
select * from t1 where phone = '123';
select * from t1 where phone like '12%';
// 索引失效
select * from t1 where phone = 123;
select * from t1 where phone = '%23';

or 连接条件:

用 | (or) 分割开的条件,如果 or 前的条件中的列有索引,而后面的列中没有索引,涉及的索引都不会被用到

select * from t1 where indexed = 1 or notindexed = 1;
image-20240905165247414

数据分布影响:

如果MySQL评估使用索引比全表扫描更慢,则不会使用索引。 在rows一栏里,如果返回的结果预估为一张表的大部分,索引扫描加上随机磁盘访问的代价比顺序读取整张表的代价要高,优化器就会执行全表扫描,就会出现索引失效的情况。

MySQL使用基于成本的优化器,它会预测一个查询使用某种执行计划时的成本,并选择其中成本最小的一个。
优化器在评估成本的时候并不考虑任何层面的缓存,它假设读取任何数据都需要一次磁盘I/O
MySQL依赖存储引擎提供的统计信息来评估成本,而InnoDB因为其MVCC的架构,并不能维护一个数据表行数的精确统计信息。
所以MySQL的最优不一定是最理性的最优情况。
---《高性能MySQL(第3版)》 6.4.3查询优化处理

SQL提示:

如果有多个索引,MySQL在默认情况下会用优化器选择一个索引使用。 通过在SQL语句中加入一些人为的提示,来指定索引的使用和忽视。

SQL提示,是优化数据库的一个重要手段。

分为使用索引,忽视索引和强制使用索引 在表名后面添加相关的语句。

use index: // 加入索引(MySQL可能不用)
select * from t1 use index(index) where ...;

ignore index: // 忽略索引
select * from t1 ignore index(index) where ...;

force index: // 强制使用索引
select * from t1 force index(index) where ...;

索引设计原则:

image-20240905174957302

总结:

索引是一种数据结构,用以高效获取数据 常用的索引结构是 B+树和Hash B+树适合数据的持久化,Hash适合快速匹配。

索引的类别: 主键索引、唯一索引、常规索引、全文索引 聚集索引、二级索引

索引语法:

​ create [unique|fulltext] INDEX index_name ON [table_name] (col_name…); ​ show index from [table_name]; ​ drop index [index_name] on [table_name];

SQL性能分析: 执行频次 慢查询日志 profile explain 其中最常用的是explain

索引使用: 联合索引 索引失效(函数运算、字符串转换、尾部模糊匹配、OR索引) SQL提示 覆盖索引(一种创建索引的思想,避免回表查询) 前缀索引 单列/联合索引

索引设计原则: 在哪建,建立什么索引。

]]>
20240716 temp https://forelink.top/index.php/2024/07/16/20240716-temp/ Tue, 16 Jul 2024 10:00:41 +0000 https://forelink.top/?p=332 oracle odikit
如果没有connect as 点calncel,tool-首选项-connection-oci library-找到oracle客户端里oci.dll配置进去-重启PL/SQL
连上后数据库是粗体的
要使用ruoyi数据库得先配好
java:controller service dao
resource:jsp,配置文件

山海关 使用了:
SpringBoot
Mybatis
Shiro
Thymeleaf
Bootstrap

]]>
temp https://forelink.top/index.php/2024/07/13/temp/ https://forelink.top/index.php/2024/07/13/temp/#respond Sat, 13 Jul 2024 06:53:18 +0000 https://forelink.top/?p=316 前端学习html,css,js,nodejs,vue,bootstrap,Jquery

后端学习java,mysql,jdbc,servlet-jsp,thymeleaf(jsp的替代),maven,ssm,springboot

ssm基本取代了jdbc,servlet-jsp

一般用springboot,在学springboot前,先学SSM,然后再学springboot

全栈 springboot+vue

其他重要基础知识:Linux

再学微服务部署,分布式(如何部署微服务),高并发(处理请求,保证数据一致安全)

]]>
https://forelink.top/index.php/2024/07/13/temp/feed/ 0
1.AOP入门案例 https://forelink.top/index.php/2024/07/12/1-aop%e5%85%a5%e9%97%a8%e6%a1%88%e4%be%8b/ https://forelink.top/index.php/2024/07/12/1-aop%e5%85%a5%e9%97%a8%e6%a1%88%e4%be%8b/#respond Fri, 12 Jul 2024 04:19:38 +0000 https://forelink.top/?p=309 案例设定:测定接口执行效率 简化设定:在接口执行输出当前系统时间

开发模式:XML or 注解 思路分析:

  1. 导入aspect依赖(pom.xml)

  1. 制作连接点方法
    空方法后加入切入点注释

    ​ 且需要再配置文件中启动Aspect功能

    1. 制作共性功能(通知类与通知)


    2. 定义切入点


    3. 绑定切入点与通知关系(切面)

]]>
https://forelink.top/index.php/2024/07/12/1-aop%e5%85%a5%e9%97%a8%e6%a1%88%e4%be%8b/feed/ 0
Maven的配置 https://forelink.top/index.php/2024/07/09/maven%e7%9a%84%e9%85%8d%e7%bd%ae/ Tue, 09 Jul 2024 10:24:48 +0000 https://forelink.top/?p=287 概念:

Maven是一个项目管理和构建工具,广泛用于JAVA项目。
实现了自动化项目构建,核心特点是 依赖管理项目构建
1. 依赖管理
Maven读取pom.xml后会自动从中央仓库下载并添加依赖项
2. 自动化构建
Maven 提供了命令,完成代码编译、测试、打包等一系列操作
3. 生命周期管理
Maven定义了一系列的生命周期,每个阶段可以绑定特定的插件和任务
4. 插件机制
Maven的功能通过插件实现,插件可以完成从编译、测试到打包、部署的各种任务
5. 多模块项目支持
Maven支持将一个大模块项目分成多个子模块,方便单独构建和管理

安装与配置:

首先到MAVEN官网下载最新版本的MAVEN二进制压缩包并解压
Maven – Download Apache Maven
(解压避免解压到包含空格 或是有特殊字符的路径)

将MAVEN解压到的文件夹的路径复制

打开系统环境变量,在下方系统变量中点击“新建”
变量名填
%MAVEN_HOME%
变量值将刚刚复制的文件路径粘贴进去后点击确定,如:
E:\B_Tools\apache-maven-3.9.8

然后在系统变量中,找到 Path变量并双击

点击“新建”,填入
%MAVEN_HOME%\bin
然后退出输入保存

打开命令行,输入

mvn -v

如果出现如下图MAVEN的版本,则配置正确

修改本地仓库 和 镜像仓库

打开Maven文件夹下的 /conf/setting.xml 配置文件
修改本地仓库,需要找到localRepository注释的位置,并在注释后面加上Maven本地仓库的路径
格式为

<localRepository>本地仓库路径</localRepository>

配置镜像仓库位置,从国内下载jar包速度会更快,此处使用阿里云的maven仓库

!!重要:在默认镜像前增加aliyun的镜像,可在此复制

<mirror>
	<id>alimaven</id>
	<mirrorOf>central</mirrorOf>
	<name>aliyun maven</name>
	<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>

测试:

在配置 setting.xml 后,可以在cmd中执行命令来测试配置效果

mvn help:system

出现绿色的 BUILD SUCCESSED 可认为配置成功。

]]>
Java(泛型) https://forelink.top/index.php/2024/07/08/java%ef%bc%88%e6%b3%9b%e5%9e%8b%ef%bc%89/ Mon, 08 Jul 2024 04:16:04 +0000 https://forelink.top/?p=247 定义类,接口,方法时,可以用<>在编译阶段确定多种数据类型。

分为泛型类、泛型接口、泛型方法

//没有使用泛型 可以添加一切类型数据
ArrayList list1 = new ArrayList();
//使用了泛型 只能接受String类型的数据
//ArrayList<String> list2= new ArrayList<String>();
ArrayList<String> list2= new ArrayList<>();//jdk 1.7后后面可以不声明

泛型的原理

在声明泛型后,将<类型>传给了<E>,让这个只能接受和返回对应类型的数据。

泛型类

格式

//类型变量可以是任何字母 主要是表达一个可变参数
修饰符 class 类名 <类型变量, 类型变量>{
    
}

示例

public class MyArrayList<E> {
    private Object[] arr = new Object[10];
    private int size;
    public boolean add(E e){
        arr[size++] = e;
        return true;
    }
    public E get(int index){
        //alt + enter 强制类型转换
        return (E) arr[index];
    }
}

泛型接口

(保存数据和根据索引查询数据用)

public interface Container<E>{
public void add(E item); // 添加一个E
E get(int index); // 根据索引获得某个E
E remove(int index);// 根据索引删除某个E
}

泛型方法

// 泛型方法可以在方法返回类型之前声明类型参数。
public class lister {
    public static void main(String[] args) {
        String[] Stringlist={"1","b","e"};
        Integer[] intlist={1,2,3};
        printArray(Stringlist);
        printArray(intlist);
    }
    public static <E> void printArray(E[] list){
        for(E e : list){
            System.out.print(e+" ");
        }
        System.out.println();
    }
}

使用泛型方法,可以建立数据通用的缓存池,并对不同类型的数据进行处理。

通配符

通配符用于处理类型不确定的情况,如处理具有不同类型参数的集合。

public void printList(List<?> list) {
    for (Object obj : list) {
        System.out.println(obj);
    }
}

限制类型参数

通过使用 ?、extend 和 super 关键字,可以限制泛型类型参数的范围,以增强泛型安全性

通配符主要有三种类型:
无限制通配符(?
上界通配符(A extends B)
保证获取的对象是B或者是B的子类,适用于读取数据的场景,保证至少是B类型
如:接受Number类型或其子类
下界通配符(A super B)
保证获取的对象是B或者是B的父类,适用于写入数据的场景,保证至少是B类型
如:写入Interger类型或其父类

// 上界通配符
public void printNumber(List<? extends Number> list){
    // 只接受存入Number类型及其子类的list集合。
}

// 下界通配符
public void addNumber(List<? super Integer> list){
    // 只接受写入Integer类型及其父类的list集合
}

总结

泛型的好处:
类型安全:在编译时进行类型检查,减少运行时类型错误。
消除强制类型转换:不需要显式的类型转换,提高代码可读性。
代码重用性:通过泛型,可以编写与类型无关的通用代码。

]]>
MobaXterm给Linux传输文件提示Error#3 Permission Denied的解决方法 https://forelink.top/index.php/2024/06/17/mobaxterm%e7%bb%99linux%e4%bc%a0%e8%be%93%e6%96%87%e4%bb%b6%e6%8f%90%e7%a4%baerror3-permission-denied%e7%9a%84%e8%a7%a3%e5%86%b3%e6%96%b9%e6%b3%95/ https://forelink.top/index.php/2024/06/17/mobaxterm%e7%bb%99linux%e4%bc%a0%e8%be%93%e6%96%87%e4%bb%b6%e6%8f%90%e7%a4%baerror3-permission-denied%e7%9a%84%e8%a7%a3%e5%86%b3%e6%96%b9%e6%b3%95/#respond Mon, 17 Jun 2024 08:19:49 +0000 https://forelink.top/?p=263 先贴方法:给 /S1/S2 中的S2文件夹传输文件提示请求拒绝,则要到S1文件夹中以root身份执行如下指令

chmod 777 S2

如果想要将文件传输到Linux系统中指定的文件夹,并希望使用图形化的方式来简化这个过程,很自然的就会将文件直接拖入MobaXterm左侧的文件夹视窗中

然而直接这么做,会得到一个报错

这是因为当前用户对文件的权限不够导致。
需要使用chmod 777命令
Linux chmod(change mode)命令能控制用户对文件的权限

Linux/Unix 的文件调用权限分三级:文件所有者(Owner)、用户组(Group)、其他用户(Other User)
所以chmod后面跟着三个数字,而不是77或7

Linux把对文件的操作分为三种R(read) W(write) X(execute),并给这三种操作分配了值r=1 w=2 x=4,这些巧妙的二进制数可以以唯一的方法组合出0-7的任意数字,能表示出任何一种权限组合。

如 7 的 二进制表达是 111 对应 读+写+执行

有了这些知识,我们就可以给特定的文件夹赋予权限了,方法正如开头所提到那样就可以提供权限了

//使用 chmod 777 [文件夹名/文件名]命令
chmod 777 S2
]]>
https://forelink.top/index.php/2024/06/17/mobaxterm%e7%bb%99linux%e4%bc%a0%e8%be%93%e6%96%87%e4%bb%b6%e6%8f%90%e7%a4%baerror3-permission-denied%e7%9a%84%e8%a7%a3%e5%86%b3%e6%96%b9%e6%b3%95/feed/ 0
DILEMMA https://forelink.top/index.php/2024/05/06/dilemma/ https://forelink.top/index.php/2024/05/06/dilemma/#respond Mon, 06 May 2024 07:35:35 +0000 https://forelink.top/?p=258 IKrkbCpEJ4Jo8K1UrOTUoHHJZXMCS6RuetdYpxYrJmw=(expired)

b42e5+YWwQ6Yv/x2usUC3y7W67j/JtFsPYIrM+a8c3s=

Saturnus 心灵 Soul

LEFT
xZAdKng0U5d82Np4PZsPww==
YHVny/woeNDh9DpM94BBOQ==
Muf/Frv5oLFRt6SyAiA6rQ==
ehr7Twl2OF1fIJBKPbmcMA==
lbc3yR4IWHSuZdbib3QdiA==
b2Hi5VfTA6Q6Rsz2zHAvuA==
RIGHT
U2FsdGVkX1+1O+ZmIgttJH8=
U2FsdGVkX1+SrIZIFMDVW2E=
U2FsdGVkX18JRzfoygn2Y20=
U2FsdGVkX18GDhU6ud+3DcQ=
U2FsdGVkX1/n51zyK28c4GI=
U2FsdGVkX18ugDFDV5lkglE=

Thunor 希望 Hope

LEFT
MBc4iLpcZDrfSjeqJJmLEA==
fkwuELhrHqQBeali2R+b8A==
lHr6MzT0fYzqArra4GYm+g==
AZkW78OLribXly+ApGJQgA==
WUxVtwiogwBgphfgHKwDzA==
zoDZNgmPTlEjZdXdpBM8tA==
RIGHT
U2FsdGVkX19rsWv2JfYRRb0=
U2FsdGVkX1+4rdZjmR3tgko=
U2FsdGVkX18ocJyAnLuozNE=
U2FsdGVkX1/AOyr4suOc4MQ=
U2FsdGVkX1+jD8DWwqTE910=
U2FsdGVkX1/+ncfXosXHwKY=


Tyr 智慧 (Wisdom)

LEFT
m0L/fmD3/jbh0AqJk71ehg==
NnBKYEFiiAHdovEgMw7bNg==
n+/VrL4x4OrWjJGVfDUSsW==
70x6io7OfXVBss8yP1D1tg==
VzBgGklGo66w7QEAZa0GAw==
sDwVmAR6JW/kEstlwZUdZg==
RIGHT
U2FsdGVkX1/4DZqbUtYRZx8=
U2FsdGVkX19czPjq8+/8UsE=
U2FsdGVkX1/6ZfI36gjoLA8=
U2FsdGVkX18V5valcsk1CsQ=
U2FsdGVkX1+xG6R0mlCkPTE=
U2FsdGVkX18g2+TuT4brgOk=

Mani 真实 (Truth)

LEFT
luPtED6ZqY5x7ZJaZmhxsQ==
2OiKS7E+SsE1I1SUX059qA==
yk6DUFyg/zACWi8HIm5nNA==
Iga0n7QFjo2cd9yqs3/HWA==
jDz4j363OvNa5RCNtySr/g==
vaukQua5jx7mOF5g+b76/w==
RIGHT
U2FsdGVkX19H6fCgY8RPxSQ=
U2FsdGVkX1968V7WtkgBfrU=
U2FsdGVkX1/8j4E7M4sVoog=
U2FsdGVkX1/f6pEN6sJBUvQ=
U2FsdGVkX1/gG/GRZhjmwYs=
U2FsdGVkX19TsTlfFVUGj8Q=

Woden 自由(Freedom)

LEFT
XgCdv4x43LN7vebkY+xRXQ==
ObTrRz3F0icCHIoPfkUnFw==
0iQqhVfCeoCd6W/ZbxhN7w==
M/ys4cHeVKy2qYVcJxE+cw==
QmLkwbIpGd2rkPj60ZwRJA==
oD+jhRQ6K/ZZkRvwFs0WHQ==
RIGHT
U2FsdGVkX1+KdFdcb3NqgaY=
U2FsdGVkX18Br8lgEsFjmBA=
U2FsdGVkX18vDxlTRm4Z9Js=
U2FsdGVkX18aHNvqpLWTqaM=
U2FsdGVkX1+JsdHsFrkdB1Q=
U2FsdGVkX1+rewGsemCVLr0=

Frigg 花朵 (Flower)

LEFT
Ci00hMTPHUE+DZ1A2n9P8Q==
zFd6wDC3Y96a9jwPjiBDWA==
biSeeU9U/wrLzExmmnsXcg==
4Oxci6J41CxUr4PADBTbwg==
IR+JGJ3LBJ+VjICMeZS7ig==
SM2lXjHoNatDExgSm5aXMA==
RIGHT
U2FsdGVkX188zDjnLuA7d8A=
U2FsdGVkX1+vq+nMSjZ/8Ic=
U2FsdGVkX1+F9lTwE15KW5g=
U2FsdGVkX1+sTinWf3I4Y5w=
U2FsdGVkX1+b0z1wmodi7JA=
U2FsdGVkX1+OInpxKfqXYZI=

Sol 梦想 Dream

LEFT
1DftH9R07L0YBteL/yUwXA==
e+NMY/ESTAfKALB9yaYCUg==
JcIn6q3yyysloZRgGljznA==
c5sk+xvJVevsv9D9XNIJKg==
dZi5+HpihevwGT2xgiME3w==
6Mqn5YyPwqPdYp/z/7oUgw==
RIGHT
U2FsdGVkX1+wWKew/Q7zUVo=
U2FsdGVkX18yB0dA7d7IOna=
U2FsdGVkX1/ljc4QQ9kjeU4=
U2FsdGVkX1+j47mDVGqVfCA=
U2FsdGVkX19WdnDS/Qe+qbs=
U2FsdGVkX19sOHx5jdTKNdU=
]]>
https://forelink.top/index.php/2024/05/06/dilemma/feed/ 0
b站直播源 https://forelink.top/index.php/2024/04/03/b%e7%ab%99%e7%9b%b4%e6%92%ad%e6%ba%90/ Wed, 03 Apr 2024 05:26:49 +0000 https://forelink.top/?p=251 直播间按F12打开控制台,在网络(Network)-文档(Doc) 中找到请求,搜索m3u8。

host+baseurl+extra。

注: \u002F 为 Unicode编码中的 /

]]>