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

将古老的ASP项目转换为PHP初探

ASP 是一种服务器端脚本语言,主要用于开发动态 Web 应用程序。ASP 可以在服务器上执行代码,并将结果返回给客户端浏览器,实现动态生成 Web 页面的功能。

ASP 代码通常包含在 <% %> 标记中,以下是一个简单的 ASP 程序示例:

<%
Response.Write "Hello, ASP!"
%>

上面的代码将在浏览器中输出 "Hello, ASP!"。

ASP 中还提供了一些内置对象,如 Request、Response、Session 等,这些对象可以帮助我们与客户端交互,并处理用户请求和返回响应。以下是一个使用 Request 对象获取 GET 请求参数的示例:

<%
Dim name
name = Request.QueryString("name")
Response.Write "Hello, " & name & "!"
%>

上面的代码将从 URL 中获取名为 name 的参数,并将其输出到页面中。

除了 ASP 之外,还有 ASP.NET 这个更加现代的版本,它使用 C# 或 VB.NET 等面向对象语言编写,可以使用更多的现代化技术和框架来开发 Web 应用程序。

转换概论

将 ASP 项目转换为 PHP 项目通常需要进行以下步骤,这也是项目代码转换的必经之路。

  1. 将 ASP 代码转换为 PHP 代码可以使用文本编辑器或 IDE 将 ASP 代码转换为 PHP 代码。由于 ASP 和 PHP 之间的语法和语义存在一些差异,因此需要仔细阅读代码并根据 PHP 的规范进行修改。

  1. 将 ASP 内置对象转换为 PHP 内置对象ASP 中提供了一些内置对象,如 Request、Response、Session 等,而 PHP 中的内置对象有所不同。在转换过程中,需要将 ASP 内置对象转换为 PHP 内置对象,以确保代码能够正常运行。

  1. 将数据库访问方式转换为 PHP 适用的方式在 ASP 项目中,可能使用了 ADO 和 ODBC 等方式访问数据库,而在 PHP 项目中,可以使用 PDO、mysqli 或者 mysql 等方式进行数据库访问。需要根据实际情况选择合适的方式,并将数据库访问代码进行相应修改。

  1. 调试和测试转换完成后,需要对 PHP 代码进行调试和测试,确保代码能够正常运行,并修复可能存在的问题。

需要注意的是,ASP 和 PHP 之间存在一些差异,因此在转换过程中需要耐心仔细,确保代码的正确性和可靠性。同时,如果 ASP 项目比较复杂,转换的难度可能会比较大,因此可以考虑使用现成的 ASP 转 PHP 工具进行转换。

基本代码转换

以下是一些常见的 ASP 代码示例及其对应的 PHP 代码:

  1. 输出文本

ASP 代码:

<% Response.Write "Hello, world!" %>

PHP 代码:

<?php
echo "Hello, world!";
?>
  1. 声明变量

ASP 代码:

<%
Dim strName
strName = "John"
%>

PHP 代码:

<?php
$strName = "John";
?>
  1. 读取请求参数

ASP 代码:

<%
strName = Request.QueryString("name")
%>

PHP 代码:

<?php
$strName = $_GET["name"];
?>
  1. 包含文件

ASP 代码:

<!--#include file="header.asp"-->

PHP 代码:

<?php
include "header.php";
?>
  1. 定义函数

ASP 代码:

<%
Function GetFullName(strFirstName, strLastName)GetFullName = strFirstName & " " & strLastName
End Function
%>

PHP 代码:

<?php
function GetFullName($strFirstName, $strLastName) {return $strFirstName . " " . $strLastName;
}
?>
  1. 控制结构

  1. 条件语句

ASP 代码:

<%
If intScore >= 90 ThenResponse.Write "A"
ElseIf intScore >= 80 ThenResponse.Write "B"
ElseIf intScore >= 70 ThenResponse.Write "C"
ElseIf intScore >= 60 ThenResponse.Write "D"
ElseResponse.Write "F"
End If
%>

PHP 代码:

<?php
if ($intScore >= 90) {echo "A";
} elseif ($intScore >= 80) {echo "B";
} elseif ($intScore >= 70) {echo "C";
} elseif ($intScore >= 60) {echo "D";
} else {echo "F";
}
?>
  1. 循环语句

ASP 代码:

<%
For i = 1 To 10Response.Write i & "<br>"
Next
%>

PHP 代码:

<?php
for ($i = 1; $i <= 10; $i++) {echo $i . "<br>";
}
?>
  1. 数组操作

  1. 定义数组

ASP 代码:

<%
Dim arrNames(3)
arrNames(0) = "Tom"
arrNames(1) = "Jerry"
arrNames(2) = "Mickey"
arrNames(3) = "Donald"
%>

PHP 代码:

<?php
$arrNames = array("Tom", "Jerry", "Mickey", "Donald");
?>
  1. 访问数组元素

ASP 代码:

<%
Dim arrNames(3)
arrNames(0) = "Tom"
arrNames(1) = "Jerry"
arrNames(2) = "Mickey"
arrNames(3) = "Donald"Response.Write arrNames(1) ' 输出 "Jerry"
%>

PHP 代码:

<?php
$arrNames = array("Tom", "Jerry", "Mickey", "Donald");echo $arrNames[1]; // 输出 "Jerry"
?>
  1. 数组操作

ASP 中的数组操作:

myarray = Array("apple", "banana", "cherry")
Response.Write myarray(1) '输出 "banana"

对应的 PHP 代码:

$myarray = array("apple", "banana", "cherry");
echo $myarray[1]; // 输出 "banana"
  1. 字符串操作

  1. 查询字符串参数

ASP 代码:

<%
strName = Request.QueryString("name")
strAge = Request.QueryString("age")Response.Write "Your name is " & strName & " and your age is " & strAge
%>

PHP 代码:

<?php
$strName = $_GET["name"];
$strAge = $_GET["age"];echo "Your name is " . $strName . " and your age is " . $strAge;
?>
  1. 字符串操作

ASP 中的字符串操作:

mystring = "hello world"
Response.Write Left(mystring, 5) '输出 "hello"

对应的 PHP 代码:

$mystring = "hello world";
echo substr($mystring, 0, 5); // 输出 "hello"
  1. 数据库操作

  1. 连接数据库

ASP 代码:

<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydb.mdb;"Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM customers", connDo Until rs.EOFResponse.Write rs("name") & "<br>"rs.MoveNext
Looprs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
%>

PHP 代码:

<?php
$conn = new COM("ADODB.Connection");
$conn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydb.mdb;");$rs = new COM("ADODB.Recordset");
$rs->Open("SELECT * FROM customers", $conn);while (!$rs->EOF) {echo $rs->Fields("name") . "<br>";$rs->MoveNext();
}$rs->Close();
$conn->Close();
?>
  1. 数据库查询

ASP 代码:

<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydata.mdb"
Set rs = conn.Execute("SELECT * FROM Customers")
While Not rs.EOFResponse.Write rs("CustomerName") & "<br>"rs.MoveNext
Wend
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
%>

PHP 代码:

<?php
$conn = new mysqli("localhost", "username", "password", "mydata");
$result = $conn->query("SELECT * FROM Customers");
while ($row = $result->fetch_assoc()) {echo $row["CustomerName"] . "<br>";
}
$result->free();
$conn->close();
?>
  1. 表单处理

ASP 中的表单处理:

<%
If Request.Form("username") = "admin" And Request.Form("password") = "123456" ThenResponse.Redirect "success.asp"
ElseResponse.Write "Username or password is incorrect"
End If
%>

对应的 PHP 代码:

<?php
if ($_POST["username"] == "admin" && $_POST["password"] == "123456") {header("Location: success.php");exit;
} else {echo "Username or password is incorrect";
}
?>

以下是更多的 ASP 代码和相应的 PHP 代码示例:

  1. 日期和时间

ASP 中的日期和时间操作:

mydate = Now()
Response.Write Year(mydate) '输出当前年份

对应的 PHP 代码:

$mydate = date("Y-m-d H:i:s");
echo date("Y", strtotime($mydate)); // 输出当前年份
  1. 文件操作

ASP 中的文件操作:

Set fs = Server.CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile("myfile.txt", ForReading)
mytext = f.ReadAll
f.Close

对应的 PHP 代码:

$myfile = fopen("myfile.txt", "r");
$mytext = fread($myfile, filesize("myfile.txt"));
fclose($myfile);
  1. 异常处理

ASP 中的异常处理:

On Error Resume Next
'执行可能抛出异常的代码
If Err.Number <> 0 ThenResponse.Write "Error: " & Err.Description
End If
On Error GoTo 0

对应的 PHP 代码:

try {// 执行可能抛出异常的代码
} catch (Exception $e) {echo "Error: " . $e->getMessage();
}
  1. Session 和 Cookie

ASP 中的 Session 和 Cookie 操作:

Session("myvar") = "myvalue"
Response.Cookies("mycookie") = "myvalue"

对应的 PHP 代码:

session_start();
$_SESSION["myvar"] = "myvalue";
setcookie("mycookie", "myvalue", time() + (86400 * 30), "/");
  1. 邮件发送

ASP 中的邮件发送:

Set mail = Server.CreateObject("CDO.Message")
mail.From = "sender@example.com"
mail.To = "recipient@example.com"
mail.Subject = "Test email"
mail.TextBody = "This is a test email."
mail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.example.com"
mail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
mail.Configuration.Fields.Update
mail.Send

对应的 PHP 代码:

$to = "recipient@example.com";
$subject = "Test email";
$message = "This is a test email.";
$headers = "From: sender@example.com" . "\r\n" ."Reply-To: sender@example.com" . "\r\n" ."X-Mailer: PHP/" . phpversion();
mail($to, $subject, $message, $headers);

以上是一些常见的 ASP 代码和相应的 PHP 代码示例,但需要注意的是,不同的编程语言具有不同的特性和语法,因此在进行 ASP 转 PHP 时,需要仔细检查代码并根据具体情况进行调整。

内置对象的转换

将 ASP 内置对象转换为 PHP 内置对象需要注意 ASP 和 PHP 语言的差异,下面是一些常见的 ASP 内置对象及其 PHP 对应的内置对象:

  1. Request 对象

ASP 中的 Request 对象用于获取客户端提交的 HTTP 请求数据,PHP 中可以使用 $_REQUEST 超全局变量来实现同样的功能。

在 ASP 中:

<%
Dim myValue
myValue = Request.Form("myInput")
%>

在PHP中:

<?php
$myValue = $_REQUEST["myInput"];
?>
  1. Response 对象

ASP 中的 Response 对象用于向客户端发送 HTTP 响应数据,PHP 中可以使用 echo 和 print 语句来输出数据。

在 ASP 中:

<%
Response.Write "Hello World!"
%>

在PHP中:

<?php
echo "Hello World!";
?>
  1. Server 对象

ASP 中的 Server 对象提供了一些常用的方法和属性,如 Server.MapPath、Server.Execute 等,PHP 中可以使用相应的函数来实现同样的功能。

在 ASP 中:

<%
Dim myPath
myPath = Server.MapPath("myFile.txt")
Set myFile = Server.CreateObject("Scripting.FileSystemObject").OpenTextFile(myPath, 1)
myContent = myFile.ReadAll
myFile.Close
%>

在PHP中:

<?php
$myPath = $_SERVER["DOCUMENT_ROOT"] . "/myFile.txt";
$myFile = fopen($myPath, "r");
$myContent = fread($myFile, filesize($myPath));
fclose($myFile);
?>
  1. Session 对象

ASP 中的 Session 对象用于在不同页面之间保存和共享数据,PHP 中可以使用 $_SESSION 超全局变量来实现同样的功能。

在 ASP 中:

<%
Session("myVar") = "myValue"
myValue = Session("myVar")
%>

在PHP中:

<?php
session_start();
$_SESSION["myVar"] = "myValue";
$myValue = $_SESSION["myVar"];
?>
  1. Application 对象

ASP 中的 Application 对象用于在整个应用程序范围内保存和共享数据,PHP 中可以使用全局变量或者文件缓存等方式来实现同样的功能。

在 ASP 中:

<%
Application.Lock
Application("myVar") = "myValue"
Application.Unlock
myValue = Application("myVar")
%>

在PHP中:

<?php
$myPath = $_SERVER["DOCUMENT_ROOT"] . "/myFile.txt";
$myFile = fopen($myPath, "r");
$myContent = fread($myFile, filesize($myPath));
fclose($myFile);
?>

由于ASP 和 PHP 的语法和语义有很大的不同,转换过程中需要根据具体情况进行调整和改写,以确保程序的正确性和可靠性。

数据库语句的转换

将 ASP 的 ADO 和 ODBC 访问数据库转换为 PHP 的 PDO、mysqli 或者 mysql 访问数据库,需要进行以下的语法转换:

  1. 连接数据库

ASP 的 ADO 连接数据库的语法:

set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Provider=SQLOLEDB;Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;"

PHP 的 PDO 连接数据库的语法:

$servername = "myServerAddress";
$username = "myUsername";
$password = "myPassword";
$dbname = "myDataBase";try {$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);// 设置 PDO 错误模式为异常$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);echo "连接成功"; 
} catch(PDOException $e) {echo "连接失败: " . $e->getMessage();
}
  1. 查询数据

ASP 的 ADO 查询数据的语法:

set rs = Server.CreateObject("ADODB.Recordset")
rs.CursorLocation = 3
rs.Open "SELECT * FROM myTable", conn, 1, 3

PHP 的 PDO 查询数据的语法:

$sql = "SELECT * FROM myTable";
foreach ($conn->query($sql) as $row) {print $row['id'] . "\t";print $row['name'] . "\t";print $row['age'] . "\n";
}
  1. 插入数据

ASP 的 ADO 插入数据的语法:

sql = "INSERT INTO myTable (name, age) VALUES ('John Doe', 30)"
conn.Execute sql

PHP 的 PDO 插入数据的语法:

$sql = "INSERT INTO myTable (name, age) VALUES ('John Doe', 30)";
$conn->exec($sql);
echo "新记录插入成功";
  1. 更新数据

ASP 的 ADO 更新数据的语法:

sql = "UPDATE myTable SET name='Jane Doe' WHERE id=1"
conn.Execute sql

PHP 的 PDO 更新数据的语法:

$sql = "UPDATE myTable SET name='Jane Doe' WHERE id=1";
$conn->exec($sql);
echo $stmt->rowCount() . " 条记录被更新";
  1. 删除数据

ASP 的 ADO 删除数据的语法:

sql = "DELETE FROM myTable WHERE id=1"
conn.Execute sql

PHP 的 PDO 删除数据的语法:

$sql = "DELETE FROM myTable WHERE id=1";
$conn->exec($sql);
echo $stmt->rowCount() . " 条记录被删除";

代码的调试

在 ASP 转 PHP 后,如果代码存在错误或需要调试,可以使用以下方法进行调试:

  1. 使用 PHP 的错误报告机制。在 PHP 代码中加入以下代码可以开启错误报告:

error_reporting(E_ALL); 
ini_set('display_errors', 1);

这样可以将所有错误信息输出到屏幕上,帮助开发者定位错误。

  1. 在 PHP 代码中加入调试信息。可以在代码中使用 echo 或者 var_dump 等函数输出变量或对象的值,帮助开发者了解代码的运行状态。

  1. 使用 PHP 调试工具。PHPStorm、Xdebug、Zend Debugger 等都是常用的 PHP 调试工具,可以帮助开发者在 IDE 中进行代码调试。

  1. 使用日志工具。可以在代码中加入日志输出功能,将运行日志输出到日志文件中,帮助开发者查看代码运行状态。

综上,调试 ASP 转 PHP 后的代码,需要多加注意错误报告、日志输出、调试信息等方面,多使用工具和技巧帮助开发者定位问题,提高调试效率。

相关文章:

将古老的ASP项目转换为PHP初探

ASP 是一种服务器端脚本语言&#xff0c;主要用于开发动态 Web 应用程序。ASP 可以在服务器上执行代码&#xff0c;并将结果返回给客户端浏览器&#xff0c;实现动态生成 Web 页面的功能。ASP 代码通常包含在 <% %> 标记中&#xff0c;以下是一个简单的 ASP 程序示例&…...

数据结构复习(七)模板类封装实现不带头结点的单链表

一、代码 二、总结 一、代码 #include<iostream> using namespace std;template<class T> struct ListNode {T _data;ListNode* next;ListNode(const T& data T()){_data data;next nullptr;}~ListNode(){next nullptr;} };template<class T> class…...

IDEA插件 RestfulTool插件——Restful服务开发辅助工具集

IDEA插件 RestfulTool插件——Restful服务开发辅助工具集 目录IDEA插件 RestfulTool插件——Restful服务开发辅助工具集1.插件介绍2.安装方式3.使用方法1.插件介绍 RestfulTool插件。一套 Restful 服务开发辅助工具集&#xff1a; 提供了一个 Services tree 的显示窗口 双击 …...

2023年全国最新会计专业技术资格精选真题及答案1

百分百题库提供会计专业技术资格考试试题、会计考试预测题、会计专业技术资格考试真题、会计证考试题库等&#xff0c;提供在线做题刷题&#xff0c;在线模拟考试&#xff0c;助你考试轻松过关。 11.下列各项中&#xff0c;影响企业利润表“利润总额”项目的是&#xff08;&…...

Linux 配置RAID组

目录 配置RAID&#xff08;软件RAID&#xff09; 创建RAID组 RAID中出现坏盘如何操作 RAID 添加热备盘 删除RAID组 RAID所解决的问题 提升硬盘的I/O吞吐率 提高硬盘的读写能力 提高硬盘的安全性 进行备份 减少硬盘成本 RAID级别 存储RAID——RAID级别_静下心来敲木鱼的博…...

【2021/推荐/社交网络】Socially-Aware Self-Supervised Tri-Training for Recommendation

部分公式、图表和排版等显示可能异常,可在个人公众号(码农的科研笔记)进行全文免费阅读。 【2021/推荐/社交网络】Socially-Aware Self-Supervised Tri-Training for Recommendation 原文:https://dl.acm.org/doi/10.1145/3447548.3467340 源码:[伯乐 SEPT]、https://git…...

Django搭建个人博客Blog-Day06

展示所有文章Django提供的分页功能说明import os os.environ.setdefault(DJANGO_SETTINGS_MODULE, blog.settings.dev) import django django.setup() # 这个时候才有django的环境 所以导入django中的模块必须写在这句话的后面才有效 from articles.models import Articles #…...

DQL 多表查询

1、多表关系 一对多&#xff08;多对一&#xff09; 案例: 部门 与 员工的关系 关系: 一个部门对应多个员工&#xff0c;一个员工对应一个部门 实现: 在从表的一方建立外键&#xff0c;指向主表一方的主键 多对多 案例: 学生 与 课程的关系 关系: 一个学生可以选修多门课程&am…...

BUUCTF Reverse xor

题目&#xff1a;BUUCTF Reverse xor 一些犯傻后学到了新东西的记录 查壳&#xff0c;没壳&#xff0c;IDA打开 main函数很好理解&#xff0c;输入一个长度为33的字符串&#xff0c;1-32位与前一位异或后与global相等&#xff0c;则判定flag正确 找global 在strings window直…...

vite和esbuild/roolup的优缺点

esbuild 优点 基于go语言&#xff0c;go是纯机器码不使用 AST&#xff0c;优化了构建流程多线程并行 缺点 esbuild 没有提供 AST 的操作能力。所以一些通过 AST 处理代码的 babel-plugin 没有很好的方法过渡到 esbuild 中&#xff08;比如babel-plugin-import&#xff09;。…...

32-Golang中的map

Golang中的map基本介绍基本语法map声明的举例map使用的方式map的增删改查操作map的增加和更新map的删除map的查找map的遍历map切片基本介绍map排序map的使用细节基本介绍 map是key-value数据结构&#xff0c;又称为字段或者关联数组。类似其它编程语言的集合&#xff0c;在编程…...

LeetCode-384-打乱数组

1、列表随机 为了能够初始化数组&#xff0c;我们使用nums保存当前的数组&#xff0c;利用orignal保存初始化数组。为了实现等可能随机打乱&#xff0c;考虑到随机数本质上是基于随机数种子的伪随机&#xff0c;我们采用如下的方式实现等可能随机&#xff1a;我们将所有元素压…...

九龙证券|重大利好!期货公司打新再“解绑”:可直接参与首发网下配售!

时隔近7年&#xff0c;期货公司及其财物办理子公司参加首发证券网下询价和配售事务再次“解绑”。 2月17日&#xff0c;为适应全面实行股票发行注册制变革需求&#xff0c;中国证券业协会&#xff08;以下简称中证协&#xff09;发布《初次公开发行证券网下出资者办理规矩》&am…...

信号完整性设计规则之串扰最小化

本文内容从《信号完整性与电源完整性分析》整理而来&#xff0c;加入了自己的理解&#xff0c;如有错误&#xff0c;欢迎批评指正。 1. 对于微带线和带状线&#xff0c;保持相邻信号路径的间距至少为线宽的2倍。 减小串扰的一种方式就是增大线间距&#xff0c;使线间距等于线…...

Windows Ubuntu双系统 设置时间同步方式

文章目录0 前言1 系统时间机制1.1 Windows时间机制1.2 Ubuntu时间机制2 设置Ubuntu的时间机制3 参考0 前言 在安装windows与ubuntu的双系统之后&#xff0c;会发现两个系统的时间不一致&#xff0c;如果使用了Ubuntu之后&#xff0c;再使用windows就会发现时间变早。原因是两个…...

【python】英雄联盟电竞观赛引擎 掉落提示 CapsuleFarmerEvolved 「Webhook」「钉钉」

介绍 本项目链接 Github本项目链接 Gitee本项目链接 最近在github上发现一个可以用来自动帮你挂英雄联盟(除国服)电竞引擎(可以开出头像和表情)的项目,CapsuleFarmerEvolved,github原项目链接简单来说就是本来是通过看比赛获取奖励的,它帮助你进行观看. 对这个活动有兴趣的话…...

加油站会员管理小程序实战开发教程11

我们已经用了10篇的篇幅讲解了首页的功能,首页主要是用来展示信息的。那么接下来就要进入我们的功能页面了,会员管理一个比较重要的功能是充值的功能。 要想实现充值功能,首先需要办一张会员卡,那什么时候办理会员卡呢?需要先注册成为会员,然后进行开卡的动作。这里要注…...

Python量化入门:投资的风险有哪些?

‍ 在金融资产中,风险是指获得收益的不确定性,通常以实际收益与期望收益的偏离来表示。 影响资产收益的因素有很多,而且不同资产面对的风险也不尽相同,在详细介绍风险度量之前,我们有必要了解一下风险的来源。 资产风险的来源 1. 市场风险 市场风险就是我们常说的系统…...

AV1编码标准整体概述

本专栏预计将从如下几方面详细介绍AV1 (1)从AV1的发展历史,AV1与MPEG、AVS系列的异同。 (2)AV1标准支持的传统编码工具及引入的机器学习工具 (3)开源的AV1编码器及解码器原理详解 (4)AV1的生态 一、AV1产生背景 2010年,谷歌收购了一家叫On2 Technologies的公司。那时VP8…...

基于springboot+vue的药物咨询平台

基于springbootvue的药物咨询平台 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...