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

青少年编程与数学 02-002 Sql Server 数据库应用 13课题、函数的编写

青少年编程与数学 02-002 Sql Server 数据库应用 13课题、函数的编写

  • 课题摘要:
  • 一、函数
      • 内置函数
      • 用户定义的函数 (User-Defined Functions, UDFs)
      • 使用示例
      • 主要特点
  • 二、内置函数
      • 数学函数(Mathematical Functions)
      • 字符串函数(String Functions)
      • 日期时间函数(Date and Time Functions)
  • 三、自定义函数
      • 标量函数(Scalar Functions)
      • 表值函数(Table-Valued Functions)
        • 内联表值函数(ITVs)
        • 多语句表值函数(MSTVs)
      • 注意事项
  • 四、自定义函数与存储过程的区别
  • 五、自定义函数中的限制
  • 六、自定义函数的修改和删除
      • 修改函数
      • 删除函数
      • 注意事项
  • 七、应用示例
      • 步骤 1: 创建必要的表结构
      • 步骤 2: 插入一些测试数据
      • 步骤 3: 创建自定义函数
      • 步骤 4: 使用自定义函数

本课题介绍了SQL Server中函数的概念、类型和应用。函数是预定义的SQL代码块,用于数据处理并返回结果。它们分为内置函数和用户定义函数(UDFs),后者包括标量函数、内联表值函数和多语句表值函数。

课题摘要:

本课题介绍了SQL Server中函数的概念、类型和应用。函数是预定义的SQL代码块,用于数据处理并返回结果。它们分为内置函数和用户定义函数(UDFs),后者包括标量函数、内联表值函数和多语句表值函数。内置函数涵盖数学、字符串和日期时间处理等,而UDFs允许自定义以满足特定需求。函数的主要特点包括返回值、参数、确定性、用途和重用性。与存储过程相比,函数更适用于计算和数据转换,而存储过程适合执行一系列数据库操作。自定义函数可以简化复杂逻辑,提高代码可读性和可维护性。在使用自定义函数时,需要注意它们受到一系列限制,以确保确定性和性能。最后,介绍了如何修改和删除函数,以及一个计算订单总价的自定义函数示例。


一、函数

在 SQL Server 中,函数是一种预定义的 SQL 代码块,用于执行特定的数据处理任务并返回一个结果或一系列结果。SQL Server 提供了多种内置函数来处理各种常见任务,同时它也支持用户自定义函数以满足更具体的需求。

内置函数

内置函数是由 SQL Server 自带的一系列函数,这些函数可以处理数据类型转换、数学计算、字符串操作、日期时间处理等多种任务。例如:

  • 数学函数ABS(x)(返回 x 的绝对值)、FLOOR(x)(返回不大于 x 的最大整数)等。
  • 字符串函数LEN(str)(返回字符串长度)、SUBSTRING(str, start, length)(从字符串 str 的 start 位置开始截取 length 镕度的子字符串)等。
  • 日期时间函数GETDATE()(获取当前日期和时间)、DATEDIFF(part, startdate, enddate)(返回两个日期之间的差异)等。
  • 聚合函数SUM(column)(返回 column 列的总和)、AVG(column)(返回 column 列的平均值)等。

用户定义的函数 (User-Defined Functions, UDFs)

除了内置函数外,SQL Server 还允许用户根据需要创建自己的函数。这些函数可以是标量函数、内联表值函数 (Inline Table-Valued Function) 或者多语句表值函数 (Multi-Statement Table-Valued Function)。

  • 标量函数:返回单一的标量值,如 int 或 varchar 类型。
  • 内联表值函数:返回表或表表达式的引用,通常在查询中作为从句使用。
  • 多语句表值函数:可以包含多个 SQL 语句,返回一个表类型的对象。

函数可以通过调用其名称并传递所需的参数来执行。函数的定义通常包括输入参数列表、函数体(即要执行的 SQL 语句)以及返回类型。

使用示例

下面是一个简单的标量函数的例子,该函数接受一个整数作为输入参数,并返回该整数的平方:

CREATE FUNCTION dbo.GetSquare (@n int)
RETURNS int
AS
BEGINRETURN (@n * @n);
END;

之后可以在查询中调用这个函数:

SELECT dbo.GetSquare(5);

这将返回 25,即 5 * 5 的结果。

通过使用 SQL Server 的内置函数或创建用户定义的函数,可以简化复杂的查询逻辑,提高代码的可读性和可维护性。

主要特点

函数的主要特点包括:

  1. 返回值:函数必须返回一个值,可以是标量值(如整数、字符串等)或表类型(表值函数)。

  2. 参数:函数可以定义零个或多个输入参数,这些参数用于传递数据给函数进行处理。

  3. 确定性:函数的结果应该是确定的,即对于给定的输入参数,函数总是返回相同的结果。

  4. 用途:函数可以在SQL语句中像内置函数一样使用,例如在SELECTWHERE子句中。

  5. 类型:SQL Server提供了多种类型的函数,包括标量函数、内联表值函数、多态表值函数和聚合函数。

  6. 作用域:函数可以定义在数据库级别,也可以定义在架构级别。

  7. 重用性:函数可以被数据库中的多个查询和存储过程重用,提高了代码的可维护性和重用性。

  8. 优化:函数可以提高查询性能,因为它们可以被优化和预先编译。

二、内置函数

SQL Server 提供了大量的内置函数来帮助开发者处理数据。这些内置函数可以根据它们的功能进行分类。以下是 SQL Server 中一些常见的内置函数及其分类:

数学函数(Mathematical Functions)

数学函数用于执行数学运算。

  • ABS(x): 返回 x 的绝对值。
  • ACOS(x): 返回 x 的反余弦值。
  • ASIN(x): 返回 x 的反正弦值。
  • ATAN(x): 返回 x 的反正切值。
  • ATN2(y, x): 返回 y/x 的角的反正切值。
  • CEILING(x) / CEIL(x): 返回不小于 x 的最小整数。
  • COS(x): 返回 x 的余弦值。
  • COT(x): 返回 x 的余切值。
  • DEGREES(x): 将弧度转换为度数。
  • EXP(x): 返回 e 的 x 次方。
  • FLOOR(x): 返回不大于 x 的最大整数。
  • LOG(x): 返回 x 的自然对数。
  • LOG10(x): 返回 x 的常用对数(基 10)。
  • POWER(x, y): 返回 x 的 y 次方。
  • RADIANS(x): 将度数转换为弧度。
  • RAND([seed]): 返回介于 0 和 1 之间的随机浮点数。
  • ROUND(x, length[, function]): 返回 x 四舍五入到 length 位数的结果。
  • SIGN(x): 返回 x 的符号(-1, 0, +1)。
  • SIN(x): 返回 x 的正弦值。
  • SQRT(x): 返回 x 的平方根。
  • TAN(x): 返回 x 的正切值。

字符串函数(String Functions)

字符串函数用于处理文本数据。

  • CHARINDEX(expression, expression [,start_location]): 返回子字符串在字符串中的起始位置。
  • CONCAT(string,...): 连接多个字符串。
  • CONCAT_WS(separator,string,...): 带有分隔符的字符串连接。
  • DIFFERENCE(expression, expression): 返回两个字符串的相似度级别。
  • LEFT(string, length): 返回从字符串左边开始的指定长度的子字符串。
  • LEN(string): 返回字符串的长度。
  • LOWER(string): 将字符串转换为小写。
  • LTRIM(string): 删除字符串左侧的空白。
  • PATINDEX('pattern', expression): 返回模式在表达式中的起始位置。
  • QUOTENAME(name): 返回带有转义字符的名称。
  • REPLACE(string, old_string, new_string): 替换字符串中的旧子串为新子串。
  • REPLICATE(string, number): 复制字符串指定次数。
  • REVERSE(string): 反转字符串。
  • RIGHT(string, length): 返回从字符串右边开始的指定长度的子字符串。
  • RTRIM(string): 删除字符串右侧的空白。
  • SPACE(number): 返回指定数量的空格组成的字符串。
  • STR(number, total_length[, decimal_length]): 返回数字转换成的字符串。
  • STUFF(string, start, length, replace_with): 从字符串的指定位置替换一段字符串。
  • SUBSTRING(string, start, length): 返回从字符串指定位置开始的子字符串。
  • UCASE(string): 将字符串转换为大写。

日期时间函数(Date and Time Functions)

日期时间函数用于处理日期和时间数据。

  • DATEADD(interval, number, date): 在指定的日期上加上或减去时间间隔。
  • DATEDIFF(interval, date1, date2): 返回两个日期之间的时间间隔。
  • DATEPART(interval, date): 返回指定日期的日期部分。
  • DATENAME(interval, date): 返回指定日期的日期部分的名称。
  • DAY(date): 返回日期中的天数。
  • MONTH(date): 返回日期中的月份。
  • YEAR(date): 返回日期中的年份。
  • GETDATE(): 返回当前的系统日期和时间。
  • GETUTCDATE(): 返回当前的系统日期和时间(协调世界时)。

这只是 SQL Server 中可用的一些内置函数的概述。实际上,SQL Server 包含更多的内置函数来支持不同的需求,如位操作、加密、文件 I/O 等。对于具体的函数列表和详细文档,可以查阅 SQL Server 的官方文档。

三、自定义函数

在 SQL Server 中,自定义函数(User-Defined Functions, UDFs)是由用户创建的函数,用于扩展 SQL Server 的内置功能。自定义函数可以用于执行复杂的数据处理任务,并且可以被存储过程、触发器或其他 SQL 查询调用。SQL Server 支持几种不同类型的自定义函数:

标量函数(Scalar Functions)

标量函数返回一个单一的标量值。这类函数通常用于执行简单的计算或者基于某些条件返回一个值。例如,你可以创建一个标量函数来计算折扣价格:

CREATE FUNCTION dbo.GetDiscountedPrice (@OriginalPrice money, @DiscountRate float)
RETURNS money
AS
BEGINDECLARE @DiscountedPrice money;SET @DiscountedPrice = @OriginalPrice * (1 - @DiscountRate);RETURN @DiscountedPrice;
END;

标量函数在 SQL 查询中可以像内置函数一样被调用:

SELECT dbo.GetDiscountedPrice(100.00, 0.20) AS DiscountedPrice;

表值函数(Table-Valued Functions)

表值函数返回一个表。这种类型的函数非常有用,因为它们可以返回一个记录集,而不是单一的值。表值函数有两种主要类型:内联表值函数(Inline Table-Valued Functions, ITVs)和多语句表值函数(Multi-Statement Table-Valued Functions, MSTVs)。

内联表值函数(ITVs)

内联表值函数直接在一个 SELECT 语句中定义,并且该 SELECT 语句必须是单条语句。内联表值函数可以嵌入到其他查询中,就像一个真正的表一样。

CREATE FUNCTION dbo.GetOrdersByCustomer (@CustomerID char(5))
RETURNS TABLE
AS
RETURN (SELECT OrderID, OrderDate, ShipNameFROM Sales.OrdersWHERE CustomerID = @CustomerID
);

然后可以在查询中直接使用这个函数:

SELECT * FROM dbo.GetOrdersByCustomer('ALFKI');
多语句表值函数(MSTVs)

多语句表值函数可以包含多条 SQL 语句,并且通常涉及到创建一个临时表或表变量来保存结果。这类函数可以包含更复杂的逻辑。

CREATE FUNCTION dbo.GetOrdersWithDetails (@CustomerID char(5))
RETURNS @OrderTable TABLE(OrderID int, OrderDate datetime, ShipName nvarchar(40), ProductName nvarchar(40), UnitPrice money)
AS
BEGININSERT INTO @OrderTable(OrderID, OrderDate, ShipName, ProductName, UnitPrice)SELECT o.OrderID, o.OrderDate, o.ShipName, p.ProductName, od.UnitPriceFROM Sales.Orders oINNER JOIN Sales.OrderDetails od ON o.OrderID = od.OrderIDINNER JOIN Production.Products p ON od.ProductID = p.ProductIDWHERE o.CustomerID = @CustomerID;RETURN;
END;

调用方式类似内联表值函数:

SELECT * FROM dbo.GetOrdersWithDetails('ALFKI');

注意事项

  • 在设计自定义函数时,应该考虑到性能问题。如果函数涉及复杂的查询或大量数据处理,可能会影响整体系统的性能。
  • 函数不应该修改数据库的状态(如插入、更新或删除数据),除非这是函数的设计目的。
  • 对于复杂的业务逻辑,考虑使用存储过程而不是函数,因为存储过程可以包含更复杂的事务控制逻辑。

通过使用自定义函数,你可以封装复杂的逻辑,使 SQL 查询更加清晰易读,并且可以重复使用相同的代码段。

四、自定义函数与存储过程的区别

函数(Function)和存储过程(Stored Procedure)都是SQL Server中用于封装SQL逻辑的数据库对象,但它们之间有一些关键的区别:

  1. 返回值

    • 函数必须返回一个单一的值或者一个表值。
    • 存储过程不返回值,或者可以返回零个、一个或多个结果集,以及一个可选的返回值(通过RETURN语句)。
  2. 使用方式

    • 函数可以在SQL语句中直接使用,例如在SELECT子句、WHERE子句或者作为条件表达式的一部分。
    • 存储过程通常需要使用EXECEXECUTE语句单独调用,不能直接嵌入到其他SQL语句中。
  3. 参数

    • 函数存储过程都可以接受输入参数和输出参数,但函数的使用方式限制了它们不能像存储过程那样灵活地处理参数。
  4. 结果集

    • 函数只能返回单一的结果集(对于表值函数)或单一的标量值(对于标量函数)。
    • 存储过程可以返回多个结果集,这使得它们在需要返回复杂或多个数据集时更加有用。
  5. 调用上下文

    • 函数通常用于计算单个值或转换数据。
    • 存储过程更适合执行一系列数据库操作,如数据插入、更新、删除等。
  6. 性能

    • 函数通常会被SQL Server优化,因为它们是确定性的,这意味着对于相同的输入总是返回相同的输出。
    • 存储过程虽然也可以被优化,但它们的执行路径可能不如函数那样可预测,尤其是在涉及多个结果集或复杂的业务逻辑时。
  7. 事务处理

    • 函数不能直接包含BEGIN TRANSACTIONCOMMITROLLBACK语句。
    • 存储过程可以在其内部管理事务,提供更复杂的数据一致性保障。
  8. 重用性

    • 函数由于可以在SQL语句中直接使用,因此可以被视为SQL查询的一部分,易于重用。
    • 存储过程由于其独立性,也可以在不同的上下文中被重用。
  9. 安全性

    • 函数存储过程都可以提高数据库安全性,通过封装复杂的逻辑和限制对底层数据的直接访问。

选择使用函数还是存储过程通常取决于特定的需求、预期的使用方式以及性能考虑。在某些情况下,函数和存储过程可以一起使用,以实现更高效的数据处理和查询优化。

五、自定义函数中的限制

在SQL Server中,函数的操作受到一系列限制,以确保函数的确定性和优化执行。以下是函数中的一些主要限制:

  1. 副作用限制:函数不能对数据库进行修改,例如不能更新、插入或删除表中的数据。这意味着所有对数据库的写操作都是不允许的。

  2. 游标使用限制:函数中不能使用FETCH语句将数据返回给客户端。只允许使用FETCH子句为局部变量赋值的INTO语句。

  3. 控制流语句限制:除了TRY...CATCH语句之外,函数中不能使用控制流语句,如WHILE循环或IF条件语句,这些通常在存储过程中使用。

  4. 返回值限制:标量函数只能返回单一的标量值,而不能返回结果集。表值函数可以返回一个表类型的结果集。

  5. 并行执行限制:查询中的Transact-SQL用户定义函数(UDF)只能针对单个线程执行(串行执行计划),因此使用UDF会阻止并行查询处理。

  6. 确定性限制:如果函数是确定性的,即对于相同的输入总是返回相同的输出,那么它们必须是架构绑定的。这意味着一旦函数被创建,它所引用的所有数据库对象(如表、视图等)都不能被修改或删除,除非先移除函数的架构绑定。

  7. 资源副作用限制:函数不能有任何对函数外部有影响的操作,如发送电子邮件、修改目录等。

  8. 数据类型限制:函数不能返回某些数据类型,如textntextimagecursortimestamp

  9. 执行次数限制:在查询优化过程中,函数的执行次数可能不同,这取决于优化器选择的访问路径。例如,在WHERE子句中的子查询调用的函数,其执行次数可能会因优化器选择的访问路径不同而异。

  10. 不确定性函数限制:某些不确定性内置函数,如NEWIDNEWSEQUENTIALIDRANDTEXTPTR,不能在Transact-SQL用户定义函数中使用。

遵守这些限制有助于确保函数的可预测性、性能和安全性。

六、自定义函数的修改和删除

在SQL Server中,修改和删除函数是两个不同的操作,它们都涉及到使用SQL Server的Transact-SQL(T-SQL)语句。

修改函数

如果你需要修改一个已经存在的函数,你可以使用ALTER FUNCTION语句。这允许你更改函数的定义,比如修改函数的参数、逻辑或返回类型。

ALTER FUNCTION function_name
(@param1 datatype,@param2 datatype-- 更多参数
)
RETURNS datatype
AS
BEGIN-- 新的函数体RETURN computed_value
END

请注意,ALTER FUNCTION语句会替换现有的函数定义。在修改函数时,你需要确保新的函数定义不违反任何依赖于该函数的数据库对象,比如视图或存储过程。

删除函数

如果你想要删除一个函数,可以使用DROP FUNCTION语句。这将从数据库中完全移除该函数。

DROP FUNCTION function_name;

在删除函数之前,你应该确保没有数据库对象依赖于这个函数。如果有,你可能需要先修改或删除那些依赖于该函数的对象。

注意事项

  • 权限:确保你有足够的权限来修改或删除函数。通常,你需要有对该数据库的ALTERDROP权限。
  • 依赖性:在修改或删除函数之前,检查是否有其他数据库对象(如视图、触发器或其他存储过程)依赖于它。否则,修改或删除函数可能会破坏这些对象的功能。
  • 备份:在删除函数之前,考虑是否需要备份函数的代码,特别是如果你不确定未来是否还需要它。
  • 测试:在生产环境中修改或删除函数之前,建议在测试环境中进行测试,以确保修改或删除操作不会对数据库的其他部分产生不良影响。

使用ALTER FUNCTIONDROP FUNCTION语句可以有效地管理数据库中的函数,保持数据库的整洁和高效。

七、应用示例

下面通过一个具体的例子来展示如何编写和使用 SQL Server 中的自定义函数。我们将创建一个数据库应用程序,其中包含一个自定义函数,该函数用于计算某个客户的订单总价,并且能够处理订单中可能出现的折扣情况。

假设我们有一个数据库,其中包含以下表格:

  • Customers: 包含客户信息。
  • Orders: 包含订单信息。
  • OrderDetails: 包含订单详情(每个订单项)。
  • Products: 包含产品信息。

步骤 1: 创建必要的表结构

首先,我们需要创建这些表格的基本结构(这里仅为示例,实际应用中应包含更多字段):

CREATE TABLE Customers (CustomerID int IDENTITY PRIMARY KEY,CustomerName nvarchar(100),ContactName nvarchar(50),Country nvarchar(50)
);CREATE TABLE Orders (OrderID int IDENTITY PRIMARY KEY,CustomerID int,OrderDate datetime,FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);CREATE TABLE OrderDetails (OrderDetailID int IDENTITY PRIMARY KEY,OrderID int,ProductID int,Quantity int,UnitPrice money,FOREIGN KEY (OrderID) REFERENCES Orders(OrderID)
);CREATE TABLE Products (ProductID int IDENTITY PRIMARY KEY,ProductName nvarchar(100),UnitPrice money
);

步骤 2: 插入一些测试数据

接下来,我们需要向这些表中插入一些测试数据:

INSERT INTO Customers (CustomerName, ContactName, Country)
VALUES ('Company A', 'John Doe', 'USA');INSERT INTO Orders (CustomerID, OrderDate)
VALUES (1, '2024-01-15');INSERT INTO OrderDetails (OrderID, ProductID, Quantity, UnitPrice)
VALUES (1, 1, 5, 100.00);INSERT INTO Products (ProductName, UnitPrice)
VALUES ('Product X', 100.00);

步骤 3: 创建自定义函数

现在,我们将创建一个自定义函数来计算订单总价,并考虑到可能存在的折扣。假设我们的折扣规则是订单金额超过 $500 时,可以获得 10% 的折扣。

CREATE FUNCTION dbo.GetTotalOrderAmount (@OrderID int)
RETURNS money
AS
BEGINDECLARE @TotalAmount money;-- 计算订单总价SELECT @TotalAmount = SUM(od.Quantity * od.UnitPrice)FROM OrderDetails odWHERE od.OrderID = @OrderID;-- 应用折扣IF @TotalAmount > 500SET @TotalAmount = @TotalAmount * 0.9; -- 应用 10% 折扣RETURN @TotalAmount;
END;

步骤 4: 使用自定义函数

最后,我们可以编写一个查询来使用上面创建的自定义函数:

SELECT o.OrderID, o.OrderDate, c.CustomerName, dbo.GetTotalOrderAmount(o.OrderID) AS TotalAmount
FROM Orders o
JOIN Customers c ON o.CustomerID = c.CustomerID;

这个查询将返回每个订单的订单号、下单日期、客户名称以及订单的总价(已经应用了折扣)。

以上就是一个完整的自定义函数的应用示例。通过这种方式,我们可以更好地组织和复用代码,并且保持数据库逻辑的清晰。

相关文章:

青少年编程与数学 02-002 Sql Server 数据库应用 13课题、函数的编写

青少年编程与数学 02-002 Sql Server 数据库应用 13课题、函数的编写 课题摘要:一、函数内置函数用户定义的函数 (User-Defined Functions, UDFs)使用示例主要特点 二、内置函数数学函数(Mathematical Functions)字符串函数(String Functions…...

关于LaTeX的floatrow包导入后标题无法直接放到浮动体上方

排版一个文章,标题怎么弄都弄不到表格上方,经过阅读帮助文档才发现问题。又是一个坑。 标题位置控制 使用floatrow包之后,类似 \begin{table}[htbp]\caption{xxx。}\label{table1}\centering\begin{tabular}{lcccc}\toprule& \multicol…...

Flutter Image和Text图文组件实战案例

In this section, we’ll go through the process of building a user interface that showcases a product using the Text and Image widgets. We’ll follow Flutter’s best practices to ensure a clean and effective UI structure. 在本节中,我们将使用“Te…...

使用 xlrd 和 xlwt 库进行 Excel 文件操作

使用 xlrd 和 xlwt 库进行 Excel 文件操作 在数据分析和处理的过程中,Excel 文件是最常用的数据存储格式之一。Python 提供了多种库来处理 Excel 文件,其中 xlrd 和 xlwt 是两个经典的库,分别用于读取和写入 Excel 文件。本文将详细介绍如何使用这两个库进行 Excel 文件的操…...

03.04、化栈为队

03.04、化栈为队 1、题目描述 实现一个 MyQueue 类,该类用两个栈来实现一个队列。 2、解题思路 本题要求使用两个栈来实现一个队列。队列遵循先进先出(FIFO)的原则,而栈遵循后进先出(LIFO)的原则。因此…...

Coppelia Sim (v-REP)仿真 机器人3D相机手眼标定与实时视觉追踪 (二)

coppelia sim[V-REP]仿真实现 机器人于3D相机手眼标定与实时视觉追踪 二 zmq API接口python调用python获取3D相机的数据获取彩色相机的数据获取深度相机的数据用matpolit显示 python控制机器人运动直接控制轴的位置用IK运动学直接移动到末端姿态 相机内参的标定记录拍照点的位置…...

苏州金龙技术创新赋能旅游新质生产力

2024年10月23日,备受瞩目的“2024第六届旅游出行大会”在云南省丽江市正式开幕。作为客车行业新质生产力标杆客车,苏州金龙在大会期间现场展示了新V系V12商旅版、V11和V8E纯电车型,为旅游出行提供全新升级方案。 其中,全新15座V1…...

ceph pg stale 恢复

问题 如果 ceph -s 看到 ceph 有类似如下状态的 pg data:volumes: 1/1 healthypools: 5 pools, 113 pgsobjects: 6.94k objects, 22 GiBusage: 24 GiB used, 33 TiB / 33 TiB availpgs: 0.885% pgs not active366/13880 objects degraded (2.637%)...

Openlayers高级交互(8/20):选取feature,平移feature

本示例介绍如何在vue+openlayers中使用Translate,选取feature,平移feature。选择的时候需要按住shift。Translate 功能通常是指在地图上平移某个矢量对象的位置。在 OpenLayers 中,可以通过修改矢量对象的几何位置来实现这一功能。 效果图 配置方式 1)查看基础设置:http…...

uniapp renderjs页面传值

scrip标签里加 lang“renderjs” ,可以使用原生js的dom,但是我在使用中发现以下问题,导致数据不能动态获取 1. onLoad获取上级页面传值 // APP不会触发,h5可以 2. props不会触发 解决办法添加 script 逻辑层数据传入渲染层 ren…...

AI赋能R-Meta分析核心技术:从热点挖掘到高级模型、助力高效科研与论文发表

Meta分析是针对某一科研问题,根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法,对来源不同的研究成果进行收集、合并及定量统计分析的方法,现已广泛应用于农林生态,资源环境等方面,成为Science、Nature论文的…...

AMD锐龙8845HS+780M核显 虚拟机安装macOS 15 Sequoia 15.0.1 (2024.10)

最近买了机械革命无界14X,CPU是8845HS,核显是780M,正好macOS 15也出了正式版,试试兼容性,安装过程和之前差不多,这次我从外网获得了8核和16核openCore,分享一下。 提前发一下ISO镜像地址和open…...

当事人单方委托专业机构或个人出具的书面意见,证据效力如何认定?

裁判要旨:当事人就专门性问题单方自行委托专业机构或者个人出具的书面意见,虽然不属于民事诉讼法上所称的由人民法院经由司法鉴定程序所获得的鉴定意见,但法律并未排除其作为证据的资格。对一方当事人就专门性问题自行委托有关机构或者人员出…...

AUTOSAR CP 中 BswM 模块功能与使用介绍(2/2)

三、 AUTOSAR BswM 模块详解及 ARXML 示例 BswM 模块的主要功能 BswM(Basic Software Mode Manager)模块在 AUTOSAR 架构中扮演着模式管理的核心角色。它负责管理车辆的各种模式(如启动、运行、停车等),并根据不同的…...

PCB电路板为什么大多是绿色的

PCB电路板为什么大多是绿色的 1.绿色油墨为什么最常用?1.1.性能角度1.2.经济和历史角度1.3.人文和环保角度 2.误区:黑色PCB板更高端?3.总结 PCB电路板上面的绿色是一层阻焊油墨(solder mask),主要作用&…...

Golang | Leetcode Golang题解之第508题出现次数最多的子树元素和

题目: 题解: func findFrequentTreeSum(root *TreeNode) (ans []int) {cnt : map[int]int{}maxCnt : 0var dfs func(*TreeNode) intdfs func(node *TreeNode) int {if node nil {return 0}sum : node.Val dfs(node.Left) dfs(node.Right)cnt[sum]if…...

【安全解决方案】深入解析:如何通过CDN获取用户真实IP地址

一、业务场景 某大型互联网以及电商公司为了防止客户端获取到真实的ip地址,以及达到保护后端业务服务器不被网站攻击,同时又可以让公安要求留存网站日志和排查违法行为,以及打击犯罪的时候,获取不到真实的ip地址,发现…...

git 免密的方法

方法一: 通过生成credential配置 git config --global credential.helper store 查看.gitconfig文件,发现多了一行 [credential] helper store 方法二: 修改仓库中.git/config文件 url http://账号:密码git.test.com.cn/test/xx.git或者带…...

如何用 obdiag 排查 OceanBase数据库的卡合并问题——《OceanBase诊断系列》14

1. 背景 卡合并在OceanBase中是一个复杂的问题,其产生可能源于多种因素。目前,对于卡合并的明确界定尚不存在统一标准,一方面,我们界定超过36小时未完成合并为合并超时,此时RS会记录ERROR日志;另一方面&am…...

hackme靶机渗透流程

一,搭建环境 本次测试使用hackme的靶机 攻击为kali(192.168.30.130)与物理机 二,信息收集 1.确定IP 先确定mac信息,再搭配主机扫描确定靶机的IP地址 00:0C:29:D0:F5:74 确定靶机地址为 192.168.30.133 2.扫描靶机…...

uniapp 常用的地区行业各种多选多选,支持回显,复制粘贴可使用

uniapp 常用的地区行业各种多选多选,支持回显 必须导入uni-popup 弹出层 该组件 1.目前项目开发中使用到这类似挺多的,记录一下,方便以后是使用 2.使用前提,目前不做无限级,只支持二维数组,模板里只循环了两…...

iOS 本地存储地址(位置)

前言: UserDefaults 存在沙盒的 Library --> Preferences--> .plist文件 CoreData 存在沙盒的 Library --> Application Support--> xx.sqlite 一个小型数据库里 (注:Application Support 这个文件夹已开始是没有的,只有当你写了存储代码,运行之后,目录里才会出…...

uni.showLoading 时禁止点击(防止表单重复提交) 小程序调取微信支付

在使用 uni.showLoading 时,如果需要禁用点击事件,可以在调用 uni.showLoading 之前设置全局的触摸事件为禁用状态,然后在 uni.hideLoading 之后再重新启用。 mask 选项是 uni.showLoading 的一个参数,当设置为 true 时,会显示遮罩,此时用户不能点击底层的任何内容。 // …...

OpenClash与Tailscale冲突得问题

1.问题描述:开了openclash之后,tailscale就用不了。tailscale ping XXX.XXX.XXX.XXX 可以成功。但是用cmd的ping就不通。 2.tailscale登录得时候,加上这两个参数:--accept-dnsfalse 和 --netfilter-modeoff 。 示例:t…...

day02|计算机网络重难点之HTTP请求报文和响应报文

day02|计算机网络重难点之HTTP请求报文和响应报文 3.HTTP请求报文和响应报文是怎样的,有哪些常见的字段? 3.HTTP请求报文和响应报文是怎样的,有哪些常见的字段? HTTP请求报文主要是由 请求行、请求头部、空行和请求体 四部分组成…...

Flutter之build 方法详解

前言 我们创建一个Flutter程序,入口文件内容如下 //导包,此行代码作用是导入了 Material UI 组件库。Material (opens new window)是一种标准的移动端和 web 端的视觉设计语言, Flutter默认提供了一套丰富的 Material 风格的 UI 组件。 impo…...

开源呼叫中心系统与商业软件的对比

开源呼叫中心系统与商业软件的对比 作者:FreeIPCC 在当今的商业环境中,呼叫中心系统已成为企业与客户之间沟通的重要桥梁。而在选择呼叫中心系统时,企业面临着两种主要的选择:开源呼叫中心系统和商业软件。这两种系统各有其独特的…...

【人工智能】——matplotlib教程

文章目录 1.matplotlib简介2.基本绘图功能2.1给图形添加辅助功能2.2在一个坐标系中绘制多个图像2.3多个坐标系显示图像 3.常见图像绘制 1.matplotlib简介 matplotlib 是一个用于创建二维图表和数据可视化的 Python 库,它提供了一种类似于 MATLAB 的绘图接口。matplo…...

【c++ gtest】使用谷歌提供的gtest和抖音豆包提供的AI大模型来对代码中的函数进行测试

【c gtest】使用谷歌提供的gtest和抖音豆包提供的AI大模型来对代码中的函数进行测试 下载谷歌提供的c测试库在VsCode中安装抖音AI大模型找到c项目文件夹,使用VsCode和VS进行双开生成gtest代码进行c单例测试 下载谷歌提供的c测试库 在谷歌浏览器搜索github gtest, 第…...

使用Angular构建动态Web应用

💖 博客主页:瑕疵的CSDN主页 💻 Gitee主页:瑕疵的gitee主页 🚀 文章专栏:《热点资讯》 使用Angular构建动态Web应用 1 引言 2 Angular简介 3 安装Angular CLI 4 创建Angular项目 5 设计应用结构 6 创建组件…...

做网站毕业答辩问题/百度地图3d实景地图

全球及中国气相硅粉市场产销调研及投资预测分析报告2022年版 【报告编号】: 414232 【出版时间】: 2022年2月 【出版单位】: 中商经济研究网 1 气相硅粉行业发展综述 1.1 气相硅粉行业概述及统计范围 1.2 气相硅粉行业主要产品分类 1.2.1 不同产品类型气相硅粉增长趋势2…...

北京市建设工程招投标/seo个人博客

一、LongAdder简介 1.下图是JDK-API文档的的截图信息 我们可以得知这两个类都是1.8开始提供的,并且都具有顶级的并发性。这两类的区别点主要在于LongAdder初始值为0,只能做累加操作,而LongAccumulator可以完成一些复杂的计算,本…...

顺的品牌网站建设/品牌营销推广方案怎么做

# 周围可能有东西能帮到你。 # 首先,移动到橱柜。 hero.moveUp() hero.moveRight(2) hero.moveDown(2) # 然后,使用while-true循环攻击"Cupboard"(橱柜)。 while True: hero.attack("Cupboard")...

建设银行网站适用浏览器/厦门seo全网营销

Java中的set是一个不包含重复元素的集合,确切地说,是不包含e1.equals(e2)的元素对。Set中允许添加null。Set不能保证集合里元素的顺序。 在往set中添加元素时,如果指定元素不存在,则添加成功。也就是说,如果set中不存在…...

网站搭建服务/百度站长平台链接

云原生技术的不断普及,不仅让使用Kubernetes部署应用成为了当下最主流的方式,而且标志着众多企业迈入了多集群时代。随着集群数量的不断增长,企业在集群管理和运维方面也迎来了诸如集群配置重复劳动、维护管理繁琐等等问题和挑战。01 多集群生…...

百度怎么搜索到自己的网站/文案代写

1、给出导致进程状态转换的事件: (1)运行→就绪,1种; (2)创建→就绪,1种; (3)运行→阻塞,3种; (4)阻塞→就绪,3种; (5)运行→终止,4种 答: …...