第五章 SQLite数据库:6、SQLite 常用语法1
SQLite Insert 语句
SQLite 的 INSERT INTO 语句用于向数据库的某个表中添加新的数据行。
语法
INSERT INTO 语句有两种基本语法,如下所示:
INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]
VALUES (value1, value2, value3,...valueN);
在这里,column1, column2,…columnN 是要插入数据的表中的列的名称。
如果要为表中的所有列添加值,您也可以不需要在 SQLite 查询中指定列名称。但要确保值的顺序与列在表中的顺序一致。SQLite 的 INSERT INTO 语法如下:
INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);
实例
假设您已经在 testDB.db 中创建了 COMPANY表,如下所示:
sqlite> CREATE TABLE COMPANY(ID INT PRIMARY KEY NOT NULL,NAME TEXT NOT NULL,AGE INT NOT NULL,ADDRESS CHAR(50),SALARY REAL
);
现在,下面的语句将在 COMPANY 表中创建六个记录:
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Paul', 32, 'California', 20000.00 );INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2, 'Allen', 25, 'Texas', 15000.00 );INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (5, 'David', 27, 'Texas', 85000.00 );INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (6, 'Kim', 22, 'South-Hall', 45000.00 );
您也可以使用第二种语法在 COMPANY 表中创建一个记录,如下所示:
INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00 );
上面的所有语句将在 COMPANY 表中创建下列记录。下列是显示 COMPANY 表数据的命令。
-- 打开表头显示,查询结果第一行会显示字段名(列名)
.headers on
-- 设置输出模式为“列”模式,这样结果会按列整齐对齐显示
.mode column
-- 查询 COMPANY 表中所有数据,* 表示所有列
SELECT * FROM COMPANY;
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
使用一个表来填充另一个表
您可以通过在一个有一组字段的表上使用 select 语句,填充数据到另一个表中。下面是语法:
INSERT INTO first_table_name [(column1, column2, ... columnN)] SELECT column1, column2, ...columnN FROM second_table_name[WHERE condition];
您暂时可以先跳过上面的语句,可以先学习后面章节中介绍的 SELECT 和 WHERE 子句。
SQLite Select 语句
SQLite 的 SELECT 语句用于从 SQLite 数据库表中获取数据,以结果表的形式返回数据。这些结果表也被称为结果集。
语法
SQLite 的 SELECT 语句的基本语法如下:
SELECT column1, column2, columnN FROM table_name;
在这里,column1, column2…是表的字段,他们的值即是您要获取的。如果您想获取所有可用的字段,那么可以使用下面的语法:
SELECT * FROM table_name;
实例
假设 COMPANY 表有以下记录:
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
下面是一个实例,使用 SELECT 语句获取并显示所有这些记录。在这里,前两个命令被用来设置正确格式化的输出。
-- 打开表头显示,查询结果第一行会显示字段名(列名)
.headers on
-- 设置输出模式为“列”模式,这样结果会按列整齐对齐显示
.mode column
-- 查询 COMPANY 表中所有数据,* 表示所有列
SELECT * FROM COMPANY;
最后,将得到以下的结果:
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
如果只想获取 COMPANY 表中指定的字段,则使用下面的查询:
sqlite> SELECT ID, NAME, SALARY FROM COMPANY;
上面的查询会产生以下结果:
ID NAME SALARY
---------- ---------- ----------
1 Paul 20000.0
2 Allen 15000.0
3 Teddy 20000.0
4 Mark 65000.0
5 David 85000.0
6 Kim 45000.0
7 James 10000.0
设置输出列的宽度
有时,由于要显示的列的默认宽度导致 .mode column,这种情况下,输出被截断。此时,您可以使用 .width num, num… 命令设置显示列的宽度,如下所示:
sqlite>.width 10, 20, 10
sqlite>SELECT *FROM COMPANY;
上面的 .width 命令设置第一列的宽度为 10,第二列的宽度为 20,第三列的宽度为 10。因此上述 SELECT 语句将得到以下结果:
ID NAME AGE ADDRESS SALARY
---------- -------------------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
Schema 信息
因为所有的点命令只在 SQLite 提示符中可用,所以当您进行带有 SQLite 的编程时,您要使用下面的带有 sqlite_master 表的 SELECT 语句来列出所有在数据库中创建的表:
sqlite> SELECT tbl_name FROM sqlite_master WHERE type = 'table';
假设在 testDB.db 中已经存在唯一的 COMPANY 表,则将产生以下结果:
tbl_name
----------
COMPANY
您可以列出关于 COMPANY 表的完整信息,如下所示:
sqlite> SELECT sql FROM sqlite_master WHERE type = 'table' AND tbl_name = 'COMPANY';
假设在 testDB.db 中已经存在唯一的 COMPANY 表,则将产生以下结果:
CREATE TABLE COMPANY(ID INT PRIMARY KEY NOT NULL,NAME TEXT NOT NULL,AGE INT NOT NULL,ADDRESS CHAR(50),SALARY REAL
)
SQLite 运算符
SQLite 运算符是什么?
运算符是一个保留字或字符,主要用于 SQLite 语句的 WHERE 子句中执行操作,如比较和算术运算。
[!info] ##### SQLite 运算符
运算符用于指定 SQLite 语句中的条件,并在语句中连接多个条件。
- 算术运算符
- 比较运算符
- 逻辑运算符
- 位运算符
SQLite 算术运算符
假设变量 a=10,变量 b=20,则:
实例
下面是 SQLite 算术运算符的简单实例:
sqlite> .mode line
sqlite> select 10 + 20;
10 + 20 = 30sqlite> select 10 - 20;
10 - 20 = -10sqlite> select 10 * 20;
10 * 20 = 200sqlite> select 10 / 5;
10 / 5 = 2sqlite> select 12 % 5;
12 % 5 = 2
SQLite 比较运算符
假设变量 a=10,变量 b=20,则:
运算符 | 描述 | 实例 |
---|---|---|
== | 检查两个操作数的值是否相等,如果相等则条件为真。 | (a == b) 不为真。 |
= | 检查两个操作数的值是否相等,如果相等则条件为真。 | (a = b) 不为真。 |
!= | 检查两个操作数的值是否相等,如果不相等则条件为真。 | (a != b) 为真。 |
<> | 检查两个操作数的值是否相等,如果不相等则条件为真。 | (a <> b) 为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是则条件为真。 | (a > b) 不为真。 |
< | 检查左操作数的值是否小于右操作数的值,如果是则条件为真。 | (a < b) 为真。 |
>= | 检查左操作数的值是否大于等于右操作数的值,如果是则条件为真。 | (a >= b) 不为真。 |
<= | 检查左操作数的值是否小于等于右操作数的值,如果是则条件为真。 | (a <= b) 为真。 |
!< | 检查左操作数的值是否不小于右操作数的值,如果是则条件为真。 | (a !< b) 为假。 |
!> | 检查左操作数的值是否不大于右操作数的值,如果是则条件为真。 | (a !> b) 为真。 |
实例
假设 COMPANY 表有以下记录:
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
下面的实例演示了各种 SQLite 比较运算符的用法。
在这里,我们使用 WHERE 子句,这将会在后边单独的一个章节中讲解,但现在您需要明白,WHERE 子句是用来设置 SELECT 语句的条件语句。
下面的 SELECT 语句列出了 SALARY 大于 50,000.00 的所有记录:
sqlite> SELECT * FROM COMPANY WHERE SALARY > 50000;
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
下面的 SELECT 语句列出了 SALARY 等于 20,000.00 的所有记录:
sqlite> SELECT * FROM COMPANY WHERE SALARY = 20000;
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
3 Teddy 23 Norway 20000.0
下面的 SELECT 语句列出了 SALARY 不等于 20,000.00 的所有记录:
sqlite> SELECT * FROM COMPANY WHERE SALARY != 20000;
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
2 Allen 25 Texas 15000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
下面的 SELECT 语句列出了 SALARY 不等于 20,000.00 的所有记录:
sqlite> SELECT * FROM COMPANY WHERE SALARY <> 20000;
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
2 Allen 25 Texas 15000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
下面的 SELECT 语句列出了 SALARY 大于等于 65,000.00 的所有记录:
sqlite> SELECT * FROM COMPANY WHERE SALARY >= 65000;
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
SQLite 逻辑运算符
下面是 SQLite 中所有的逻辑运算符列表。
运算符 | 描述 |
---|---|
AND | AND 运算符允许在一个 SQL 语句的 WHERE 子句中的多个条件的存在。 |
BETWEEN | BETWEEN 运算符用于在给定最小值和最大值范围内的一系列值中搜索值。 |
EXISTS | EXISTS 运算符用于在满足一定条件的指定表中搜索行的存在。 |
IN | IN 运算符用于把某个值与一系列指定列表的值进行比较。 |
NOT IN | IN 运算符的对立面,用于把某个值与不在一系列指定列表的值进行比较。 |
LIKE | LIKE 运算符用于把某个值与使用通配符运算符的相似值进行比较。 |
GLOB | GLOB 运算符用于把某个值与使用通配符运算符的相似值进行比较。GLOB 与 LIKE 不同之处在于,它是大小写敏感的。 |
NOT | NOT 运算符是所用的逻辑运算符的对立面。比如 NOT EXISTS、NOT BETWEEN、NOT IN,等等。它是否定运算符。 |
OR | OR 运算符用于结合一个 SQL 语句的 WHERE 子句中的多个条件。 |
IS NULL | NULL 运算符用于把某个值与 NULL 值进行比较。 |
IS | IS 运算符与 = 相似。 |
IS NOT | IS NOT 运算符与 != 相似。 |
| | 连接两个不同的字符串,得到一个新的字符串。 |
UNIQUE | UNIQUE 运算符搜索指定表中的每一行,确保唯一性(无重复)。 |
实例
假设 COMPANY 表有以下记录:
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
下面的实例演示了 SQLite 逻辑运算符的用法。
下面的 SELECT 语句列出了 AGE 大于等于 25 且工资大于等于 65000.00 的所有记录:
sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000;
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
下面的 SELECT 语句列出了 AGE 大于等于 25 或工资大于等于 65000.00 的所有记录:
sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000;
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
下面的 SELECT 语句列出了 AGE 不为 NULL 的所有记录,结果显示所有的记录,意味着没有一个记录的 AGE 等于 NULL:
sqlite> SELECT * FROM COMPANY WHERE AGE IS NOT NULL;
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
下面的 SELECT 语句列出了 NAME 以 ‘Ki’ 开始的所有记录,‘Ki’ 之后的字符不做限制:
sqlite> SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%';
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
6 Kim 22 South-Hall 45000.0
[!NOTE] LIKE用法
LIKE
用于模糊匹配字符串。%
➜ 匹配 任意长度 的 任意字符(包括零个字符)。_
➜ 匹配 任意单个字符。
🌰 示例
条件 | 匹配结果示例 |
---|---|
LIKE 'K%' | Kevin 、Kate 、K (只要以 K 开头都行) |
LIKE 'K____' | Kevin (K 后面跟着正好4个任意字符) |
下面的 SELECT 语句列出了 NAME 以 ‘Ki’ 开始的所有记录,‘Ki’ 之后的字符不做限制: |
sqlite> SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*';
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
6 Kim 22 South-Hall 45000.0
[!NOTE]
GLOB
语法
GLOB
是一种 Unix 风格的通配符匹配(更接近文件名匹配)。
*
➜ 匹配 任意长度 的 任意字符(包括零个字符),相当于LIKE
的%
。
?
➜ 匹配 单个字符,相当于LIKE
的_
。
GLOB
是 区分大小写 的!
➜LIKE
默认 不区分大小写(除非你加COLLATE
)。
🌰 示例
条件 | 匹配结果示例 |
---|---|
GLOB 'K*' | Kevin 、Kate 、K |
GLOB 'K????' | Kevin (必须是K开头、正好5个字符) |
下面的 SELECT 语句列出了 AGE 的值为 25 或 27 的所有记录: |
sqlite> SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 );
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
2 Allen 25 Texas 15000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
下面的 SELECT 语句列出了 AGE 的值既不是 25 也不是 27 的所有记录:
sqlite> SELECT * FROM COMPANY WHERE AGE NOT IN ( 25, 27 );
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
3 Teddy 23 Norway 20000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
下面的 SELECT 语句列出了 AGE 的值在 25 与 27 之间的所有记录:
sqlite> SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27;
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
2 Allen 25 Texas 15000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
下面的 SELECT 语句使用 SQL 子查询,子查询查找 SALARY > 65000 的带有 AGE 字段的所有记录,后边的 WHERE 子句与 EXISTS 运算符一起使用,列出了外查询中的 AGE 存在于子查询返回的结果中的所有记录:
sqlite> SELECT AGE FROM COMPANY WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);
AGE
----------
32
25
23
25
27
22
24
下面的 SELECT 语句使用 SQL 子查询,子查询查找 SALARY > 65000 的带有 AGE 字段的所有记录,后边的 WHERE 子句与 > 运算符一起使用,列出了外查询中的 AGE 大于子查询返回的结果中的年龄27的所有记录:
sqlite> SELECT * FROM COMPANY WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000);
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
SQLite 位运算符
位运算符作用于位,并逐位执行操作。真值表 & 和 | 如下:
p | q | p & q | p | q |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 1 | 1 | 1 |
1 | 0 | 0 | 1 |
假设如果 A = 60,且 B = 13,现在以二进制格式,它们如下所示:
A = 0011 1100
B = 0000 1101
A&B = 0000 1100
A|B = 0011 1101
~A = 1100 0011
下表中列出了 SQLite 语言支持的位运算符。假设变量 A=60,变量 B=13,则:
运算符 | 描述 | 实例 |
---|---|---|
& | 如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中。 | (A & B) 将得到 12,即为 0000 1100 |
| | 如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中。 | (A | B) 将得到 61,即为 0011 1101 |
~ | 二进制补码运算符是一元运算符,具有"翻转"位效应,即0变成1,1变成0。 | (~A ) 将得到 -61,即为 1100 0011,一个有符号二进制数的补码形式。 |
<< | 二进制左移运算符。左操作数的值向左移动右操作数指定的位数。 | A << 2 将得到 240,即为 1111 0000 |
>> | 二进制右移运算符。左操作数的值向右移动右操作数指定的位数。 | A >> 2 将得到 15,即为 0000 1111 |
实例
下面的实例演示了 SQLite 位运算符的用法:
--用于将查询结果的输出格式切换为行模式
sqlite> .mode line
-- 进行按位“或”运算,60(111100)与13(000011)按位“或”后的结果是61(111101)
select 60 | 13;
-- 进行按位“与”运算,60(111100)与13(000011)按位“与”后的结果是12(000011)
select 60 & 13;
-- 对60进行按位取反运算,60(111100)取反后的结果是-61(补码表示)
select (~60);
-- 对60进行左移操作(<<),将60的二进制位向左移动2位,结果是240(11110000)
select (60 << 2);
-- 对60进行右移操作(>>),将60的二进制位向右移动2位,结果是15(00001111)
select (60 >> 2);
SQLite 表达式
表达式是一个或多个值、运算符和计算值的SQL函数的组合。
SQL 表达式与公式类似,都写在查询语言中。您还可以使用特定的数据集来查询数据库。
语法
假设 SELECT 语句的基本语法如下:
SELECT column1, column2, columnN
FROM table_name
WHERE [CONDITION | EXPRESSION];
有不同类型的 SQLite 表达式,具体讲解如下:
SQLite - 布尔表达式
SQLite 的布尔表达式在匹配单个值的基础上获取数据。语法如下:
SELECT column1, column2, columnN
FROM table_name
WHERE SINGLE VALUE MATCHING EXPRESSION;
假设 COMPANY 表有以下记录:
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
下面的实例演示了 SQLite 布尔表达式的用法:
sqlite> SELECT * FROM COMPANY WHERE SALARY = 10000;
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
4 James 24 Houston 10000.0
SQLite - 数值表达式
这些表达式用来执行查询中的任何数学运算。语法如下:
SELECT numerical_expression as OPERATION_NAME
[FROM table_name WHERE CONDITION] ;
在这里,numerical_expression 用于数学表达式或任何公式。下面的实例演示了 SQLite 数值表达式的用法:
sqlite> SELECT (15 + 6) AS ADDITION;
ADDITION = 21
有几个内置的函数,比如 avg()、sum()、count(),等等,执行被称为对一个表或一个特定的表列的汇总数据计算。
sqlite> SELECT COUNT(*) AS "RECORDS" FROM COMPANY;
RECORDS = 7
SQLite - 日期表达式
日期表达式返回当前系统日期和时间值,这些表达式将被用于各种数据操作。
sqlite> SELECT CURRENT_TIMESTAMP;
CURRENT_TIMESTAMP = 2013-03-17 10:43:35
相关文章:
第五章 SQLite数据库:6、SQLite 常用语法1
SQLite Insert 语句 SQLite 的 INSERT INTO 语句用于向数据库的某个表中添加新的数据行。 语法 INSERT INTO 语句有两种基本语法,如下所示: INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)] VALUES (value1, value2, value3,...…...
JVM考古现场(二十二):降维打击·用二向箔优化内存模型
"警报!三维堆内存正在经历二维化坍缩!" 我腰间的玄铁令突然震动,在蜀山剑派的量子剑阵中投射出诡异的曼德博分形——这是三体文明发动降维打击的铁证! 楔子:二向箔奇点降临 昆仑镜监控日志: // …...
eclipse常用快捷键
Eclipse 是一款功能强大的 Java 集成开发环境(IDE),熟练掌握其快捷键可以显著提高开发效率。下面是一些常用的 Eclipse 快捷键分类介绍: 编辑相关快捷键 操作快捷键说明内容辅助Alt /调出代码提示和自动补全功能,根…...
TAS(Thin-Agent服务)的先决条件与安装指南
TAS(Thin-Agent服务)的先决条件与安装指南 2.1 支持的操作系统 TAS支持以下操作系统环境: Windows 服务器 • Windows Server 2008 R2 SP1 • Windows Server 2012 R2 • Windows Server 2016 Linux 发行版 • Red Hat Enterprise Linux (RHE…...
无线uniapp调试设备
创作灵感来自某篇博客 uniapp安卓手机无线真机调试教程_uniapp无线真机调试-CSDN博客...
TAS启动与卸载
3. 启动TAS(Thin-Agent服务) TAS在安装完成后通常会自动启动,并在系统重启时自启。如需手动启动,请按以下步骤操作:  3.1 在Windows上启动TAS 1. 打开 Windows服务管理器: ◦ 按下 Win R&…...
Oracle测试题目及笔记(多选)
所有题目来自于互联网搜索 在以下概要文件的陈述中,哪两个是正确的? (D 和 E) A. 概要文件不能被用来为账户加锁 B. 概要文件不能被用来控制资源使用 C. 数据库管理员可以使用概要文件更改用户密…...
定制化突围:遨游防爆手机的差异化竞争策略
在石油、化工、矿山等危险作业场景中,随着工业智能化与安全生产需求的升级,行业竞争逐渐从单一产品性能的比拼转向场景化解决方案的深度较量。遨游通讯以九重防爆标准为技术底座,融合多模稳控系统与全景前瞻架构,开辟出"千行…...
c#清理释放内存
虽然c#具有内存管理和垃圾回收机制,但是在arcobjects二次开发嵌入到arcgis data reviewet还会报内存错误。需要强制清理某变量内存方法如下: 1设置静态函数ReleaseCom函数 public static void ReleaseCom(object o) { try{System.Runtime.InteropServices.Marsh…...
从入门到精通【MySQL】 JDBC
文章目录 📕1. 什么是JDBC📕2. JDBC的使用原理📕3. 使用JDBC具体步骤✏️3.1 标题获取MySQL驱动包并修改pom.xml文件✏️3.2 建立数据库连接✏️3.3 创建Statement✏️3.4 执行SQL语句✏️3.5 处理返回结果✏️3.6 释放资源和关闭连接 &#…...
Sigfox技术|独特的运营模式 + 超窄带技术 + 非授权频谱
在物联网(IoT)通信技术的快速发展中,低功耗广域网(LPWAN)成为了推动智能设备连接的重要基础技术之一。作为LPWAN中的一种专有通信协议,Sigfox以其低功耗和广覆盖的特点脱颖而出,在物联网应用中占…...
【Dify 前端源码解读系列】MDX 让 API 文档焕发生机
什么是 MDX? MDX 是一种强大的文档格式,它允许在 Markdown 内容中使用 JSX。这意味着你可以在 Markdown 的简洁语法中嵌入交互式组件,使文档不再局限于静态内容。MDX 完美地将 Markdown 的简单与 JSX 的灵活性结合在一起,特别适合需要丰富交互体验的文档场景。 MDX 的优势…...
docker能用来干什么的
最近项目像简快部署docker,但是发现源被隔离,暂时先记下,以后有机会再研究。 下面摘抄的网文网址如下:Docker能用来干什么的 ?_超级码客_海量程序员面试题库 | 笔试题库 | 面试求职考试神器 docker能用来干什么的 docker能用来做…...
dispaly: inline-flex 和 display: flex 的区别
display: inline-flex 和 display: flex 都是 CSS 中用于创建弹性盒子布局(Flexbox)的属性值,但它们之间有一些关键的区别,主要体现在元素如何在页面上被渲染和它们对周围元素的影响。 主要区别 1,块级 vs 行内块级 d…...
AI Agent系列(九) -Data Agent(数据分析智能体)
AI Agent系列【九】 前言一、Data Agent场景二、Data Agent核心因素2.1 数据源2.2 大模型2.3 应用及可视化 三、Data Agent应用场景 前言 Data Agent就是在大模型基础上构建一个数据分析的智能体,是一种基于人工智能技术,特别是大模型技术的数据分析智…...
【工具】视频翻译、配音、语音克隆于一体的一站式视频多语言转换工具~
Krillin AI 是全能型音视频本地化与增强解决工具。这款简约而强大的工具,集音视频翻译、配音、语音克隆于一身,支持横竖屏格式输出,确保在所有主流平台(哔哩哔哩,小红书,抖音,视频号,…...
api护照查验-GO国内护照查验接口-身份安全卫士
在全球化浪潮汹涌的当下,跨境电子商务蓬勃发展,国际旅游持续升温,留学热潮也未曾减退。在这些跨越国界的活动背后,护照作为国际旅行的关键凭证,其真伪核验的重要性愈发凸显。护照查验接口,宛如一颗璀璨的新…...
在 Tailwind CSS 中优雅地隐藏滚动条
在开发中,我们经常需要隐藏滚动条但保持滚动功能,这在构建现代化的用户界面时很常见。 本文将介绍两种在 Tailwind CSS 项目中实现这一目标的方法,方便同学们记录和查阅。 方法一:使用 tailwind-scrollbar-hide 插件 这是一种更…...
【C++】深入浅出之继承
目录 继承的概念及定义继承的定义继承方式和访问限定符protected与private的区别 默认继承方式继承类模板基类和派生类对象赋值兼容转换继承中的作⽤域(隐藏关系)相关面试题⭐ 派生类的默认成员函数⭐构造函数拷贝构造赋值重载析构函数 继承与友元继承与静态成员继承的方式菱形…...
Linux软件仓库
Linux常见软件包类型: dbdDebian家族及Ubuntu等基于Debian的Linux操作系统所使用的软件包管理格式rpmRed Hat Linux、Fedora、openSUSE、Mandriva和Mageia等使用的标准软件包管理格式源代码软件包一般为“.tar.gz”、“.tar.bz2”等格式的压缩包包含程序的原始代码…...
Git创建分支操作指南
1. 创建新分支但不切换(仅创建) git branch <分支名>示例:创建一个名为 new-feature 的分支git branch new-feature2. 创建分支并立即切换到该分支 git checkout -b <分支名> # 传统方式 # 或 git switch -c <分支名&g…...
从基础概念到前沿应用了解机器学习
一、机器学习基础概念 1.机器学习定义与核心价值 机器学习是人工智能的重要分支,通过算法让计算机系统能够从数据中自动学习并改进性能。其核心价值在于: 自动化决策:无需显式编程即可完成复杂任务 持续进化:随着数据积累不断…...
跨平台嵌入式音视频开发指南:EasyRTC音视频通话的多场景适配与AI扩展能力
在数字化通信技术飞速发展的今天,实时音视频通信已成为众多智能设备和应用的核心功能。从智能家居到远程办公,从在线教育到智能安防,音视频通信技术的应用场景不断拓展,对低延迟、高稳定性和跨平台兼容性的需求也在持续增长。在这…...
停止回答 docker启动redis
在Docker中启动Redis服务器是一个相对直接的过程。下面是一些步骤和示例,帮助你在Docker容器中运行Redis。 步骤 1: 安装Docker 确保你的系统上已经安装了Docker。你可以从Docker官网下载并安装Docker。 步骤 2: 拉取Redis镜像 首先,你需要从Docker Hu…...
2025年4月16日华为留学生笔试第二题200分
📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 02. 图书馆借阅管理系统 问题描述 卢小姐是一家大学图书馆的管理员,她需要开发一个简单的图书借阅管理系统来处理日常的图书流通操作。系统需要支持以下四种操作: in s:表示一本…...
0417 Langchain
Langchain就是,帮助大模型和外部计算、数据结合起来。 pip install langchain pip install langchain-openai 文档 登录并获取LangSmish(监控)的API key: 根据AI框架:Langchain的环境和监控_哔哩哔哩_bilibili htt…...
SQL Server 游标介绍
SQL Server 游标是用于对查询结果集进行逐行处理的数据库对象。下面从基本概念、使用步骤、示例代码、优缺点等方面详细介绍: 基本概念 游标提供了一种对从表中检索出的数据进行逐行操作的机制,它允许开发者在结果集中向前或向后移动,一次处…...
Linux:显示 -bash-4.2$ 问题(CentOS 7)
文章目录 一、原因二、错误示例三、解决办法 一、原因 在 CentOS 7 系统中,如果你看到命令行提示符显示为 -bash-4.2$,一般是 Bash shell 正在运行,并且它没有找到用户的个人配置文件,或者这些文件有问题而未能成功加载。这个提示…...
小数点舍入,round与Decimal的区别
两者对中间值(5)的处理不同 主要是精度问题 表面上是2.675 但是实际上不一定是2.675。 from decimal import Decimal, ROUND_HALF_UPprint(f{2.675:.20f}) print(f"{Decimal(f{2.675}):.20f}")# 使用 Python 内置的 round 函数进行四舍五入 …...
【华为】OSPF震荡引起CPU占用率高怎么解决?
原创:厦门微思网络 现象描述 如图所示,Switch_1、Switch_2、Switch_3和Switch_4配置了OSPF协议,发现Switch_1设备的CPU占用率高,ROUT任务占用率明显高于其他任务并且产生路由震荡。 故障组网图 原因分析 网络中IP地址冲突导致…...
2025年4月16日华为留学生笔试第三题300分
📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 03. 智慧城市网络优化 问题描述 K小姐是一家智慧城市服务提供商的网络架构师。她负责规划城市边缘计算节点的布局,以提供更快速、稳定的网络服务。 城市内有 n n...
禁用USB接口的电脑管理软件推荐
软件介绍 还在为同事随意插U盘拷贝文件而头疼?这款「USB守门员」堪称办公室数据防泄漏神器!不到100KB的迷你体积,却能让你瞬间掌控电脑的USB权限,操作简单到连小白都能秒变“技术大佬”! 禁用/启用,一键掌…...
FreeRTOS任务创建和删除简要概述
任务创建 函数原型:xTaskCreate()是创建任务的主要函数,其原型通常如下: BaseType_t xTaskCreate(TaskFunction_t pxTaskCode,const char * const pcName,const uint16_t usStackDepth,void * const pvParameters,UBaseType_t uxPriority,T…...
【C++初阶】第14课—缝合怪deque和优先队列、仿函数
文章目录 1. 双端队列deque1.1 认识deque1.2 deque的迭代器1.3 deque的常用接口1.4 deque的优缺点 2. 优先队列priority_queue2.1 认识priority_queue2.2 模拟实现优先队列priority_queue 3. 仿函数 在学习deque之前,回顾一下vector和list各自的优缺点 数据结构优点…...
通过helm在k8s中安装mysql 8.0.37
使用 Helm 在 Kubernetes 中安装 MySQL 8.0.37 是一个相对简单的过程。以下是详细步骤: 下载helm包 #添加 Helm 仓库 helm repo add bitnami https://charts.bitnami.com/bitnami#搜索mysql helm search repo mysql --versions NAME CHAR…...
人工智能 - browser-use:重新定义浏览器自动化的 AI 新范式
在浏览器自动化领域,Selenium 和 Playwright 等工具已成为开发者的标配。但随着网页复杂度的提升(如动态渲染、反爬虫机制、验证码等),传统工具逐渐暴露出效率低、扩展性差的缺陷。browser-use 的出现,通过深度融合人…...
Langchain-简单Demo
支持的模型 官方示例: #OpenAI pip install -qU langchain-openai import getpass import os os.environ["OPENAI_API_KEY"] getpass.getpass() from langchain_openai import ChatOpenAI model ChatOpenAI(model"gpt-4") #Anthropic pip ins…...
怎样才能设计好的自动化测试用例
设计一个好的自动化测试用例,就像写一段“自解释的、高质量的代码”——它应该清晰、可靠、独立、易维护,而且对测试目标有价值。 ✅ 好的自动化测试用例应具备的 8 大特性: 特性解释示例🎯 目标明确一个用例只验证一个点&#…...
NFC 碰一碰发视频源码搭建全流程详解,支持OEM
在移动互联网时代,便捷的数据传输方式备受关注。NFC(近场通信)技术以其操作简单、连接迅速的特点,为数据交互提供了新的可能。通过搭建 NFC 碰一碰发视频功能,用户只需将设备轻轻靠近,就能快速完成视频传输…...
vue入门:路由 router
文章目录 介绍安装配置路由模式嵌套路由路由传参编程式导航路由懒加载 底层原理 介绍 vue2 vue router API vue3 vue router API Vue Router 是 Vue.js 的官方路由管理器,它允许你通过不同的 URL 显示不同的组件,从而实现单页面应用(SPA&a…...
运营商二要素认证 API 接口具有哪些的好处?
目录 一、提高认证准确性 1.数据真实性可靠 2.实时验证效率高 3.双重验证更精准 4.多场景适用性强 5.动态更新数据准 二、增强安全性 1.防止身份冒用 2.抵御欺诈行为 3.保障数据安全 4.强化业务安全 5.支持安全审计与追溯 三、提升用户体验 1.操作简便快捷 2.认…...
从GPT到Gemini 大模型进化史
从GPT到Gemini:大模型进化史 在过去的几年里,人工智能领域经历了翻天覆地的变化,其中最引人注目的莫过于大规模语言模型的发展。从最初的GPT系列到最近的Gemini,这些模型不仅在技术上取得了重大突破,还在实际应用中展…...
大模型时代下全场景数据消费平台的智能BI—Quick BI深度解析
一、前言 在数字化转型浪潮中,BI工具已成为企业数据驱动决策的核心引擎。Quick BI作为阿里云旗下的全场景数据消费平台,以其"让业务决策触手可及"的理念在市场中占据一席之地。通过Quick BI可以让企业的数据资产快速的流动起来,通…...
高防ip的原理
高防IP(高防御IP地址)是一种专门用于抵御大规模网络攻击的防护服务,其核心原理是通过流量清洗、协议分析与智能调度等技术,将恶意流量与正常业务流量分离,保障目标服务器或应用的可用性。以下是其核心技术原理…...
微服务4--服务网关
网关 在微服务架构中,一个系统会被拆分为很多个微服务,那么作为客户端要如何去调用 这么多的微服务呢?如果没有网关的存在,我们只能在客户端记录每个微服务的地址,然后分别去调用。 这样的架构,会存在着诸…...
容器docker入门学习
这里写目录标题 容器容器的软件厂商 dockerdocker引擎 虚拟化虚拟化技术 docker安装详解1、安装检查2、安装yum相关的工具3、安装docker-ce软件4、查看docker版本5、启动docker服务6、设置docker开机启动7、查看有哪些docker容器运行进程8、查看容器里有哪些镜像9、下载nginx软…...
Flink调优面试题及参考答案20道
1. 如何优化Flink的Checkpoint机制? 答案: 增大Checkpoint间隔:减少对作业吞吐量的影响(如从1分钟调整为5分钟)。 使用增量Checkpoint(RocksDB状态后端):仅上传变化的文件,降低IO压力。 调整超时时间:checkpointTimeout避免因短暂反压导致失败。 对齐优化:使用非对…...
【音视频】MP4解封装
一、概述 实现了读取mp4文件,提取出h264和aac文件,可以直接播放 二、实现过程 准备文件 在build路径下添加mp4文件 同时,添加main函数参数,表示输入文件和输出文件 打开文件 打开输入文件,初始化格式上下文 char…...
全球6G大会 | 紫光展锐用“芯”推动空天地一体创新纪元
近日,全球6G技术与产业生态大会(简称“全球6G技术大会”)在南京召开。紫光展锐应邀出席“空天地一体化与数字低空”平行论坛,并从6G通信、感知、定位等多方面分享了紫光展锐在6G前沿科技领域的创新理念及在空天地一体化技术方面的…...
C++学习:六个月从基础到就业——面向对象编程:虚函数与抽象类
C学习:六个月从基础到就业——面向对象编程:虚函数与抽象类 本文是我C学习之旅系列的第十四篇技术文章,主要探讨C中的虚函数与抽象类,这是实现多态性的核心机制。查看完整系列目录了解更多内容。 引言 多态性是面向对象编程的三大…...