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

MySQL 存储函数及调用

1.mysql 存储函数及调用

在MySQL中,存储函数(Stored Function)是一种在数据库中定义的特殊类型的函数,它可以从一个或多个参数返回一个值。存储函数在数据库层面上封装了复杂的SQL逻辑,使得在应用程序中调用时更加简单和高效。

下面是一个具体的MySQL存储函数的示例,该函数接受一个整数参数并返回该整数的平方值。

1.1创建存储函数

首先,我们需要在MySQL数据库中创建一个存储函数。这里我们使用CREATE FUNCTION语句来定义存储函数。

DELIMITER //  
CREATE FUNCTION square_number(num INT) RETURNS INT  
BEGIN  DECLARE result INT;  SET result = num * num;  RETURN result;  
END //  
DELIMITER ;

在这个示例中:

(1)DELIMITER //DELIMITER ; 是用来改变MySQL语句的结束符的,因为存储函数的定义中可能包含多个分号,这会导致MySQL解释器在存储函数定义内部错误地结束语句。

(2)CREATE FUNCTION square_number(num INT) RETURNS INT 声明了一个名为square_number的存储函数,它接受一个整数参数num,并返回一个整数结果。

(3)在BEGIN ... END块中,我们定义了存储函数的主体逻辑。这里我们声明了一个变量result,并计算num的平方值,然后将结果赋值给result

(4)RETURN result; 语句将计算得到的result值返回给调用者。

1.2调用存储函数

一旦存储函数被创建,我们就可以在SQL查询中像调用普通函数一样调用它。下面是一个示例,展示如何在SELECT语句中调用square_number函数:

sql复制代码
​
SELECT square_number(5);  -- 返回 25

在这个示例中,我们调用了square_number函数并传入参数值5,函数返回了25作为结果。

1.3删除存储函数

如果我们不再需要某个存储函数,可以使用DROP FUNCTION语句来删除它:

sql复制代码
​
DROP FUNCTION square_number;

这个语句将删除名为square_number的存储函数。

1.4注意事项

(1)存储函数只能返回单一的值,而存储过程(Stored Procedure)可以返回多个值或结果集。

(2)存储函数可以在SQL语句的任何地方调用,就像调用内置函数一样。

(3)存储函数通常用于执行计算、数据转换或复杂的业务逻辑,这些逻辑在多个地方被重复使用。

2.MySQL存储函数的示例

以下是一些关于MySQL存储函数的示例,这些示例涵盖了不同的场景和功能。

2.1示例1:计算两个数的和

假设我们想要创建一个存储函数来计算两个数的和。

DELIMITER //  
CREATE FUNCTION add_numbers(num1 INT, num2 INT) RETURNS INT  
BEGIN  DECLARE sum_result INT;  SET sum_result = num1 + num2;  RETURN sum_result;  
END //  
DELIMITER ;  -- 调用存储函数  
SELECT add_numbers(3, 5);  -- 返回 8

2.2示例2:获取字符串的长度

虽然MySQL已经有一个内建的LENGTH()函数来获取字符串的长度,但我们可以为了示例目的创建一个类似的存储函数。

DELIMITER //  
CREATE FUNCTION my_string_length(input_string VARCHAR(255)) RETURNS INT  
BEGIN  RETURN LENGTH(input_string);  
END //  
DELIMITER ;  -- 调用存储函数  
SELECT my_string_length('Hello, World!');  -- 返回 13

2.3示例3:将整数转换为字符串

我们可以创建一个将整数转换为字符串的存储函数。

DELIMITER //  
CREATE FUNCTION int_to_string(num INT) RETURNS VARCHAR(255)  
BEGIN  RETURN CAST(num AS CHAR);  
END //  
DELIMITER ;  -- 调用存储函数  
SELECT int_to_string(123);  -- 返回 '123'

2.4示例4:判断是否为闰年

我们可以创建一个存储函数来判断一个给定的年份是否为闰年。

DELIMITER //  
CREATE FUNCTION is_leap_year(year_value INT) RETURNS BOOLEAN  
BEGIN  IF (year_value % 4 = 0 AND year_value % 100 != 0) OR (year_value % 400 = 0) THEN  RETURN TRUE;  ELSE  RETURN FALSE;  END IF;  
END //  
DELIMITER ;  -- 调用存储函数  
SELECT is_leap_year(2020);  -- 返回 1(TRUE)  
SELECT is_leap_year(2021);  -- 返回 0(FALSE)

请注意,MySQL的BOOLEAN类型实际上是TINYINT(1)的一个别名,所以TRUE返回1,FALSE返回0。

2.5示例5:计算字符串中某个字符的出现次数

这个示例展示了如何计算一个字符串中某个字符的出现次数。

DELIMITER //  
CREATE FUNCTION char_count(input_string VARCHAR(255), search_char CHAR(1)) RETURNS INT  
BEGIN  DECLARE char_count_result INT DEFAULT 0;  DECLARE str_len INT DEFAULT LENGTH(input_string);  DECLARE i INT DEFAULT 1;  WHILE i <= str_len DO  IF SUBSTRING(input_string, i, 1) = search_char THEN  SET char_count_result = char_count_result + 1;  END IF;  SET i = i + 1;  END WHILE;  RETURN char_count_result;  
END //  
DELIMITER ;  -- 调用存储函数  
SELECT char_count('hello world', 'o');  -- 返回 2

这些示例涵盖了从简单到稍微复杂的存储函数功能,并且应该能够帮助我们理解如何在MySQL中创建和使用存储函数。

3.如何在MySQL中创建存储函数

在MySQL中创建存储函数,我们需要使用CREATE FUNCTION语句。以下是一个基本的步骤和示例,说明如何创建一个简单的存储函数。

3.1创建存储函数的步骤

(1)选择数据库(如果尚未选择):

sql复制代码
​
USE your_database_name;

(2)编写存储函数: 使用CREATE FUNCTION语句,指定函数名、参数、返回类型和函数体。

(3)执行创建语句: 在我们的MySQL客户端(如MySQL命令行、MySQL Workbench等)中执行上述SQL语句。

(3)测试存储函数: 在SELECT语句或其他SQL语句中调用存储函数,以验证其是否按预期工作。

3.2创建存储函数的示例

以下是一个简单的示例,展示如何创建一个存储函数来计算一个整数的平方:

DELIMITER //  
CREATE FUNCTION square(num INT) RETURNS INT  
BEGIN  RETURN num * num;  
END //  
DELIMITER ;

在这个示例中:

(1)DELIMITER //DELIMITER ; 用于更改默认的语句结束符,以便在函数定义中使用分号(;)。

(2)CREATE FUNCTION square(num INT) RETURNS INT 定义了一个名为square的函数,它接受一个整数参数num,并返回一个整数。

(3)在BEGIN ... END块中,我们定义了函数的主体,它返回num的平方。

3.3调用存储函数

一旦存储函数被创建,我们就可以在SQL查询中像调用内置函数一样调用它:

sql复制代码
​
SELECT square(5);  -- 返回 25

3.4删除存储函数

如果我们不再需要某个存储函数,可以使用DROP FUNCTION语句来删除它:

sql复制代码
​
DROP FUNCTION square;

这个语句将删除名为square的存储函数。请注意,在删除存储函数之前,确保没有其他的数据库对象(如表或视图)依赖于该函数,否则可能会导致错误。

4.存储函数和函数有什么区别

在MySQL的上下文中,当我们提到“存储函数”(Stored Function)时,我们通常指的是在数据库中定义的、可以像内置函数一样在SQL查询中调用的特殊函数。这些存储函数通常用于封装复杂的SQL逻辑,以便在多个地方重复使用。

然而,当我们提到“函数”(Function)时,这个术语可能具有更广泛的意义,它取决于上下文。在编程和数据库领域,函数通常指的是一个可以接收输入(参数)并返回输出的代码块。这个术语可以应用于多种不同的环境和语言,包括编程语言(如C、Java、Python等)、数据库(如MySQL、PostgreSQL等)以及数学和逻辑运算。

在MySQL的特定上下文中,我们可以将“函数”分为两种主要类型:

(1)内置函数(Built-in Functions):这些是MySQL数据库管理系统提供的预定义函数,用于执行各种常见的数据库操作,如字符串操作、日期和时间计算、数值计算等。例如,CONCAT()函数用于连接两个或多个字符串,NOW()函数返回当前日期和时间。

(2)存储函数(Stored Functions):这些是用户定义的函数,它们使用CREATE FUNCTION语句在数据库中创建,并像内置函数一样在SQL查询中调用。存储函数封装了复杂的SQL逻辑,可以在多个地方重复使用,从而提高了代码的可维护性和重用性。

(3)存储函数和内置函数的区别

  • 定义者:内置函数是由数据库管理系统提供的,而存储函数是由数据库用户定义的。

  • 可定制性:内置函数的功能是固定的,用户无法更改它们的行为。而存储函数允许用户定义自己的逻辑,并根据需要进行修改。

  • 使用场景:内置函数通常用于执行常见的、简单的数据库操作。而存储函数则更适用于封装复杂的SQL逻辑,以便在多个地方重复使用。

(4)存储函数和存储过程(Stored Procedures)的区别

  • 返回值:存储函数必须返回一个值,而存储过程可以返回多个值或结果集,也可以不返回任何值。

  • 调用方式:存储函数可以在SELECT语句中直接调用,并像其他列一样在结果集中显示。而存储过程通常需要使用CALL语句来调用,并且它们的输出通常需要通过输出参数或结果集来获取。

  • 语法和用途:存储函数的语法类似于其他编程语言中的函数,而存储过程则更类似于一组为了完成特定功能的SQL语句集合。在用途上,存储函数通常用于计算或转换数据,而存储过程则更适用于执行复杂的数据库操作或事务处理。

5.触发器和函数的区别

触发器和函数在MySQL中有显著的不同,主要体现在以下几个方面:

(1)用途:

  • 函数(Function):通常用于封装可重复使用的逻辑,这些逻辑可以在多个地方被其他过程或触发器主动调用。函数体现的是一个独立的功能,它们封装了用于执行特定任务的代码,并返回一个值。

  • 触发器(Trigger):通常用于在数据库发生特定事件时自动执行一些逻辑。触发器与表相关联,并在表的数据发生变化(如INSERT、UPDATE、DELETE操作)时触发执行。它们主要用于实现数据完整性、审计、日志记录等自动化操作。

(2)触发方式:

  • 函数:可以由其他过程主动调用,是显式的执行方式。

  • 触发器:只能在特定条件下自动触发执行,是隐式的执行方式。它们不需要手动调用,而是在满足定义的条件时自动执行。

(3)执行时机:

  • 函数:在具体需要时被调用执行。

  • 触发器:在触发条件满足时自动执行。它们可以在数据库操作之前或之后触发,具体取决于触发器的定义。

(4)返回值:

  • 函数:必须返回一个值,这个值可以是任何数据类型,取决于函数的定义。

  • 触发器:不直接返回值。它们通过执行一系列的动作来影响数据库的状态,如修改表中的数据、插入数据到其他表、调用其他存储过程等。

(5)应用场景:

  • 函数:常用于封装复杂的逻辑运算、数据转换等任务,以提高代码的复用性和可维护性。

  • 触发器:常用于实现数据完整性约束、日志记录和审计、数据的备份和同步等自动化操作。它们可以在数据发生变化时自动执行相应的逻辑,以确保数据的准确性和一致性。

触发器和函数在MySQL中各有其独特的作用和应用场景。函数主要用于封装可重复使用的逻辑并返回结果值,而触发器则用于在数据库发生特定事件时自动执行相应的逻辑。

6.如何在MySQL中创建触发器

在MySQL中,触发器(Trigger)是一种特殊的存储过程,它会在指定的表上进行INSERT、UPDATE或DELETE操作之前或之后自动执行。要使用触发器,我们需要使用CREATE TRIGGER语句。

以下是创建触发器的基本步骤和示例:

6.1创建触发器的步骤

(1)选择数据库(如果尚未选择):

sql复制代码
​
USE your_database_name;

(2)编写触发器: 使用CREATE TRIGGER语句,指定触发器的名称、触发时间(BEFORE或AFTER)、触发事件(INSERT、UPDATE或DELETE)、关联的表和要执行的SQL语句。

(3)执行创建语句: 在我们的MySQL客户端(如MySQL命令行、MySQL Workbench等)中执行上述SQL语句。

6.2创建触发器的示例

假设我们有一个名为orders的表,每当有新订单(即插入新行)时,我们想要记录一条日志到另一个名为order_logs的表中。

首先,确保我们有order_logs表,其结构可能如下:

CREATE TABLE order_logs (  log_id INT AUTO_INCREMENT PRIMARY KEY,  order_id INT,  log_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,  action VARCHAR(50) NOT NULL  
);

然后,我们可以创建一个触发器,当在orders表中插入新行时,向order_logs表中插入一条日志记录:

DELIMITER //  
CREATE TRIGGER after_order_insert  
AFTER INSERT ON orders  
FOR EACH ROW  
BEGIN  INSERT INTO order_logs (order_id, action) VALUES (NEW.order_id, 'Order inserted');  
END;  
//  
DELIMITER ;

在这个示例中:

  • after_order_insert 是触发器的名称。

  • AFTER INSERT ON orders 指定触发器在orders表上插入新行之后触发。

  • FOR EACH ROW 表示触发器会对受影响的每一行执行一次。

  • BEGIN ... END块中,我们定义了触发器要执行的SQL语句,即向order_logs表中插入一条记录。注意,我们使用NEW.order_id来引用新插入的orders表中的order_id值。

6.3注意事项

  • 触发器中的SQL语句通常是对数据表进行增删改查的操作,但不能调用存储过程。

  • 触发器中的SQL语句可以引用被触发表中的列,但只能引用被触发行的列(使用NEWOLD关键字,具体取决于触发时间)。

  • 触发器是基于表的,不是基于整个数据库的。每个触发器只能和一个表关联。

  • 触发器不能通过直接调用执行,只能通过触发事件隐式触发。

  • 如果触发器中的SQL语句执行失败,那么原始操作(INSERT、UPDATE或DELETE)也会被回滚。

  • 触发器可以嵌套使用,即一个触发器可以调用另一个触发器,但嵌套的最大层数取决于MySQL服务器的配置。

6.4删除触发器

如果我们不再需要某个触发器,可以使用DROP TRIGGER语句来删除它:

sql复制代码
​
DROP TRIGGER after_order_insert;

这个语句将删除名为after_order_insert的触发器。请注意,删除触发器时不需要指定数据库名称,只需要指定触发器的名称。

相关文章:

MySQL 存储函数及调用

1.mysql 存储函数及调用 在MySQL中&#xff0c;存储函数&#xff08;Stored Function&#xff09;是一种在数据库中定义的特殊类型的函数&#xff0c;它可以从一个或多个参数返回一个值。存储函数在数据库层面上封装了复杂的SQL逻辑&#xff0c;使得在应用程序中调用时更加简单…...

设计模式七大原则-单一职责原则SingleResponsibility

七大原则是在设计“设计模式”的时候需要用到的原则&#xff0c;它们的存在是为了保证设计模式达到以下几种目的&#xff1a; 1.代码重用性 2.可读性 3.可拓展性 4.可靠性&#xff08;增加新的功能后&#xff0c;对原来的功能没有影响&#xff09; 5.使程序呈现高内聚、低耦合的…...

msfconsole利用Windows server2008cve-2019-0708漏洞入侵

一、环境搭建 Windows系列cve-2019-0708漏洞存在于Windows系统的Remote Desktop Services&#xff08;远程桌面服务&#xff09;&#xff08;端口3389&#xff09;中&#xff0c;未经身份验证的攻击者可以通过发送特殊构造的数据包触发漏洞&#xff0c;可能导致远程无需用户验…...

Reinforcement Learning学习(三)

前言 最近在学习Mujoco环境,学习了一些官方的Tutorials以及开源的Demo,对SB3库的强化学习标准库有了一定的了解,尝试搭建了自己的环境,基于UR5E机械臂,进行了一个避障的任务,同时尝试接入了图像大模型API,做了一些有趣的应用,参考资料如下: https://mujoco.readthedo…...

hw meta10 adb back up DCIM

1. centos install adb 2. HW enable devlepment mode & enalbe adb debug 3. add shell root/zt/adb-sync python3 ./adb-sync --reverse /sdcard/DCIM/Camera /root/zt/meta10...

Unity2D游戏制作入门 | 12(之人物受伤和死亡的逻辑动画)

上期链接&#xff1a;Unity2D游戏制作入门 | 11(之人物属性及伤害计算)-CSDN博客 上期我们聊到了人物的自身属性和受伤时的计算&#xff0c;我们先给人物和野猪挂上属性和攻击属性的代码&#xff0c;然后通过触发器触发受伤的事件。物体&#xff08;人物也好敌人也行&#xff…...

从河流到空气,BL340工控机助力全面环保监测网络构建

在环保监测领域&#xff0c;智能化、高效率的监测手段正逐步成为守护绿水青山的新常态。其中&#xff0c;ARMxy工业计算机BL340凭借其强大的处理能力、高度的灵活性以及广泛的兼容性&#xff0c;在水质监测站、空气质量检测、噪音污染监控等多个环保应用场景中脱颖而出&#xf…...

零拷贝技术

背景 磁盘可以说是计算机系统重最慢的硬件之一&#xff0c;读写速度相对内存10以上&#xff0c;所以针对优化磁盘的技术非常的多&#xff0c;比如&#xff1a;零拷贝、直接I/O、异步I/O等等&#xff0c;这些优化的目的就是为了提高系统的吞吐量&#xff0c;另外操作系统内核中的…...

Flutter_Android上架GooglePlay_问题

上架GooglePlay权限问题 问题描述 REQUEST_INSTALL_PACKAGES 权限问题解决方式 方式1 找到所有使用该权限的库修改删除该权限引用 方式2 打开项目 ~/andoird/app/src/main/AndroidMainfest.xml 添加文本<uses-permission android:name"android.permission.REQUES…...

【Java】解决Java报错:NumberFormatException

文章目录 引言1. 错误详解2. 常见的出错场景2.1 字符串包含非数字字符2.2 空字符串或 null 字符串2.3 数值超出范围 3. 解决方案3.1 验证字符串格式3.2 使用异常处理3.3 处理空字符串和 null 4. 预防措施4.1 数据验证4.2 编写防御性代码4.3 单元测试 结语 引言 在Java编程中&a…...

视觉大模型(VLLM)学习笔记

视觉多模态大模型&#xff08;VLLM&#xff09; InternVL 1.5 近日&#xff0c;上海人工智能实验室 OpenGVLab 团队、清华大学、商汤科技合作推出了开源多模态大语言模型项目InternVL 1.5&#xff0c;它不仅挑战了商业模型巨头例如 GPT-4V 的霸主地位&#xff0c;还让我们不禁…...

【软考的系统分析师的考题考点解析2025】

2024-2025系统分析师考试&#xff08;简称软考&#xff09;是计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试中的高级资格考试&#xff0c;主要考察考生在系统分析、系统设计、项目管理等方面的知识和技能。以下是软考系统分析师的常见考点、考题和重点&#x…...

JavaScript前端技术入门教程

引言 在前端开发的广阔天地中&#xff0c;JavaScript无疑是最耀眼的一颗明星。它赋予了网页动态交互的能力&#xff0c;让网页从静态的文本和图片展示&#xff0c;进化为可以与用户进行实时交互的丰富应用。本文将带您走进JavaScript的世界&#xff0c;为您提供一个入门级的教…...

类和对象(上续)

前言&#xff1a;本文介绍类和对象中的一些比较重要的知识点&#xff0c;为以后的继续学习打好基础。 目录 拷贝构造 拷贝构造的特征&#xff1a; 自定义类型的传值传参 自定义类型在函数中的传值返回 如果返回值时自定义的引用呢&#xff1f; 在什么情况下使用呢&#…...

【C++初阶学习】第十三弹——优先级队列及容器适配器

C语言栈&#xff1a;数据结构——栈(C语言版)-CSDN博客 C语言队列&#xff1a;数据结构——队列&#xff08;C语言版&#xff09;-CSDN博客 C栈与队列&#xff1a;【C初阶学习】第十二弹——stack和queue的介绍和使用-CSDN博客 前言&#xff1a; 在前面&#xff0c;我们已经…...

Java(十七)---ArrayList的使用

文章目录 前言1.ArrayList的简介2. ArrayList使用2.1.ArrayList的构造2.2.ArrayList的扩容机制(JDK17) 3.ArrayList的常见操作4. ArrayList的具体使用4.1.[杨辉三角](https://leetcode.cn/problems/pascals-triangle/description/)4.2.简单的洗牌游戏 5.ArrayList的问题及思考 …...

实验六、IPv4 地址的子网划分,第 2 部分《计算机网络》

你有没有发现&#xff0c;困的时候真的清醒不了。 目录 一、实验目的 二、实验内容 三、实验小结 一、实验目的 完成本练习之后&#xff0c;您应该能够确定给定 IP 地址和子网掩码的子网信息。 知道 IP 地址、网络掩码和子网掩码后&#xff0c;您应该能够确定有关该 IP 地…...

定个小目标之刷LeetCode热题(12)

这是一道简单题&#xff0c;使用位运算中的异或运算即可&#xff0c;异或运算有以下性质&#xff1a; 1、任何数异或 0 结果仍然是原来的数&#xff0c;即 a⊕0a 2、任何数和其自身做异或运算&#xff0c;结果是 0 所以我们只需要让数组里的所有元素进行异或运算得到的结果就…...

MYSQL内存占用查询语句

可以通过以下 SQL 语句查询相关配置参数的当前值&#xff1a; InnoDB 缓冲池大小 (innodb_buffer_pool_size)&#xff1a; SHOW VARIABLES LIKE innodb_buffer_pool_size;最大连接数 (max_connections)&#xff1a; SHOW VARIABLES LIKE max_connections;临时表大小 (tmp_table…...

HikariCP连接池初识

HikariCP的简单介绍 hikari-光&#xff0c;hikariCP取义&#xff1a;像光一样轻和快的Connetion Pool。这个几乎只用java写的中间件连接池&#xff0c;极其轻量并注重性能&#xff0c;HikariCP目前已是SpringBoot默认的连接池&#xff0c;伴随着SpringBoot和微服务的普及&…...

LeetCode136只出现一次的数字

题目描述 给你一个 非空 整数数组 nums &#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题&#xff0c;且该算法只使用常量额外空间。 解析 需要想到异或运算&#…...

html5实现端午节网站源码

文章目录 1.设计来源1.1 端午首页页面1.2 端午由来页面1.3 端午图集页面1.4 端午活动页面1.5 给我留言页面 2.效果和源码2.1 动态效果2.2 目录结构 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/139524377 ht…...

echarts组件x轴坐标显示不全解决方法

1.旋转: 修改前: option {xAxis: {type: category,data: [Mon, Tue, Wed, Thu, Fri, Sat, Sun,Mon, Tue, Wed, Thu, Fri, Sat, Sun,Mon, Tue, Wed, Thu, Fri, Sat, Sun]},yAxis: {type: value},series: [{data: [120, 200, 150, 80, 70, 110, 130,120, 200, 150, 80, 70, 1…...

JS实现移动端的轮播图滑动事件

在移动端实现轮播图滑动事件&#xff0c;我们通常使用 touchstart、touchmove 和 touchend 这三个事件。下面是一个基本的示例&#xff0c;展示了如何使用原生JavaScript来创建一个简单的移动端轮播图滑动效果&#xff1a; HTML结构&#xff1a; <div id"carousel&qu…...

2024.6.10学习记录

1、代码随想录二刷 2、项目难点 review 3、计组复习...

RapidJSON

要在项目中使用 RapidJSON 库&#xff0c;需要首先下载并包含该库的头文件。以下是详细的步骤&#xff0c;包括如何下载、引用和使用 RapidJSON&#xff1a; 使用 CMake 引用 RapidJSON 如果你的项目使用 CMake 构建系统&#xff0c;可以按照以下步骤引用 RapidJSON&#xff…...

二叉树的创建

目录 一、二叉树的定义 二、代码定义 三、遍历二叉树 1、前序遍历 2、中序遍历 3、后序遍历 四、方法的使用 一、二叉树的定义 二叉树&#xff08;binary tree&#xff09;是指树中节点的度不大于2的有序树&#xff0c;它是一种最简单且最重要的树。二叉树的递归定义为&a…...

adb shell进入设备后的命令

目录 一、查看删除手机 /data/local/tmp/下的文件 二、设置权限 三、查看手机设备正在运行的服务 四、可能需要的adb 命令 一、查看删除手机 /data/local/tmp/下的文件 可以通过以下命令&#xff1a; adb shell # 进入设备 ls /data/local/tmp/ # 查看文件夹下的内容…...

【Android面试八股文】Java中静态内部类是什么?和非静态内部类的区别是什么?

文章目录 Java中静态内部类是什么?和非静态内部类的区别是什么?这道题想考察什么?考察的知识点考生应该如何回答什么是内部类,什么是静态内部类?静态内部类非静态内部类静态内部类和非静态内部类的区别静态内部类和普通内部类都有各自的用途和优势扩展一:使用静态内部类来…...

IDEA启动项目报java.lang.OutOfMemoryError: GC overhead limit exceeded

idea编译项目时报j ava.lang.OutOfMemoryError: GC overhead limit exceeded错误&#xff0c;教你两步搞定&#xff01; 第一步&#xff1a;打开help -> Edit Custom VM Options ,修改xms和xmx的大小&#xff0c;如下图&#xff1a; 第二步&#xff1a;File -> Settings…...

网站建设后压缩代码/云南百度推广开户

机器之心报道参与&#xff1a;思源你的模型到底有多少参数&#xff0c;每秒的浮点运算到底有多少&#xff0c;这些你都知道吗&#xff1f;近日&#xff0c;GitHub 开源了一个小工具&#xff0c;它可以统计 PyTorch 模型的参数量与每秒浮点运算数(FLOPs)。有了这两种信息&#x…...

wordpress 添加下载页面模板/长春seo排名公司

为什么80%的码农都做不了架构师&#xff1f;>>> Preface 最近这几天将自己笔记本操作系统彻底的换成了fedora&#xff0c;这一次决定要彻底的远离windows系统。最早接触linux系统还是大一那会&#xff0c;非常清晰的记得当时最先接触的是ubuntu&#xff0c;刚接触…...

城乡建设委员会网站/站长工具seo词语排名

广州疯狂软件学院拥有三大课程体系包括&#xff1a;java课程&#xff0c;android课程&#xff0c;ios课程&#xff0c;疯狂软件年终钜惠&#xff0c;报名java就业班&#xff0c;免费赠送基础班&#xff0c;名额有限&#xff0c;本月火热报名中&#xff0c;欢迎有志之士电话或者…...

网页设计跟网站建设的区别/广东的seo产品推广服务公司

&#xff08;1&#xff09;职业的程序员设计的时间长于编码的时间&#xff0c;业余程序员编码的时间长于设计的时间&#xff1b; &#xff08;2&#xff09;职业的程序员是设计程序&#xff0c;业余程序员是调试程序&#xff1b; &#xff08;3&#xff09;职业的程序员是预防B…...

官方网站链接如何做/磁力宅

1.汇编中的移位指令 算数移位指令 指令格式&#xff1a;SAL/SAR Reg/Mem, CL/ImmSAL(Shift Arithmetic Left):算数左移 SAR(Shift Arithmetic Right):算数右移 逻辑移位指令 指令格式&#xff1a;SHL/SHR Reg/Mem, CL/ImmSHL(Shift Left):逻辑左移 SHR(Shift Right):逻辑右移 循…...

做网站协调/友情链接

HTML与CSS二三事概述 HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,他是一种制作万维网页面标准语言(标记).相当于定义统一的一套规则,大家都来遵守他,这样就可以让浏览器 ...Tomcat 的三种&lpar;bio&comma;nio&period;apr&rpar; 高级 Connec…...