SQL sever中用户管理

news2024/11/25 7:48:15

目录

一、用户管理常见方法       

二、用户管理方法示例 

2.1. 创建登录账户:

2.1.1 检查是否创建账户成功:

2.2. 创建数据库用户:

 2.2.1检查用户是否创建成功:

2.3. 授予权限:

2.3.1授予 SELECT、INSERT 和 UPDATE 权限:

2.3.1.1检查权限-使用系统函数:

切换用户方法:

2.3.1.2检查权限--使用系统视图:

2.3.1.3. 使用 SQL Server Management Studio (SSMS):

2.3.1.4. 使用视图和查询:

2.3.2授予 EXECUTE 权限

2.3.3授予所有权限:

2.4. 收回权限

2.4.1撤回特定权限:

2.4.2撤回所有权限

2.4.3撤回特定角色中的权限:

2.5. 修改用户信息:

2.5.1修改用户信息的步骤:

2.5.2修改登录名:

2.5.3修改密码:

2.5.4修改默认数据库:

2.5.5修改默认语言:

2.5.6修改其他设置:

2.6. 删除用户:

2.6.1使用 SQL Server Management Studio (SSMS)

2.6.2使用 Transact-SQL 查询

2.7. 禁用用户:

2.7.1禁用登录:

2.7.2撤销禁用:

2.7.3禁用用户在数据库中的操作权限:

三、使用SSMS创建用户和账户(补充)

3.1创建账户:

3.2创建用户:


一、用户管理常见方法       

在 Microsoft SQL Server 中,用户管理是数据库管理员的一项重要任务。用户管理涉及到创建、修改、删除用户,授予用户权限等操作。以下是一些在 SQL Server 中进行用户管理的常见方法:

1.创建登录账户:

在 SQL Server 中,首先需要创建登录账户,这是用户连接数据库的凭证。使用以下 T-SQL 命令创建登录账户:

CREATE LOGIN [login_name] WITH PASSWORD = 'password';

2. 创建数据库用户:

登录账户只是用来登录 SQL Server,要在数据库中创建用户,需要将登录账户映射到数据库用户。使用以下 T-SQL 命令创建数据库用户:

 USE [database_name];
   CREATE USER [user_name] FOR LOGIN [login_name];

3. 授予权限:

要让用户能够执行特定操作,需要授予适当的权限。例如,使用以下 T-SQL 命令授予 SELECT 权限:

  GRANT SELECT ON [schema_name].[table_name] TO [user_name];

授予一个数据库用户对特定表的 SELECT 权限。以下是对这条语句的解析:

  • - `GRANT`: 这是 SQL 关键字,表示你要授予权限。
  • - `SELECT`: 这是权限类型,表示你要授予用户对表的 SELECT 权限,即允许用户查询表中的数据。
  • - `ON [schema_name].[table_name]`: 这部分指定了你要授予权限的表,使用数据库模式名称和表名称来标识表。`[schema_name]` 应该替换为实际的数据库模式名称,`[table_name]` 应该替换为实际的表名称。
  • - `TO [NewUser]`: 这部分指定你要将权限授予的用户,即数据库用户。`[NewUser]` 应该替换为实际的数据库用户名称。

因此,含义是:将对特定数据库模式中的特定表的 SELECT 权限授予给指定的数据库用户。这将允许该用户能够查询该表中的数据,但不会允许进行插入、更新或删除操作。

注意:

在实际使用时,需要替换方括号中的部分(例如,`[schema_name]`、`[table_name]` 和 `[NewUser]`)为实际使用的名称。另外,为了执行这条语句,需要拥有足够的权限。

4. 修改用户信息:

若要修改用户的属性或权限,可以使用 ALTER USER 命令。例如,修改用户密码:

ALTER LOGIN [login_name] WITH PASSWORD = 'new_password';

5. 删除用户:

如果要删除用户,首先需要从数据库中删除用户,然后再删除登录账户。使用以下 T-SQL 命令删除用户:

 USE [database_name];
   DROP USER [user_name];

   然后,使用以下 T-SQL 命令删除登录账户:

  DROP LOGIN [login_name];

6. 禁用用户:

有时候不想删除用户,而是想暂时禁用他们的访问权限。可以使用 ALTER LOGIN 命令来禁用登录账户:

ALTER LOGIN [login_name] DISABLE;

     这些是 SQL Server 中基本的用户管理方法。在实际操作中,还可能涉及更多高级操作,如角色分配、资源限制等。务必在执行这些操作之前备份数据库,以防不必要的数据丢失。

二、用户管理方法示例 

以下是一些示例操作来创建用户、删除用户以及授予权限的方法:

首先要明白账户和用户的区别,如下所述:

在 SQL Server 中,术语“登录账户”(Login Account)和“数据库用户”(Database User)是两个相关但不同的概念。它们在数据库系统中扮演不同的角色,以下是它们之间的区别:

  • 登录账户(Login Account):

   - 登录账户是用于连接到 SQL Server 实例的凭证。它可以是 SQL Server 登录账户(由 SQL Server 管理)或 Windows 登录账户(由 Windows 管理)。
   - 登录账户用于验证用户的身份,允许用户访问 SQL Server 实例。
   - 登录账户的范围是整个 SQL Server 实例,它不限于特定数据库。
   - 登录账户的创建和管理通常由系统管理员或具有适当权限的用户执行。

  • 数据库用户(Database User):

   - 数据库用户是连接到数据库的凭证。每个登录账户可以在一个或多个数据库中具有一个或多个相关联的数据库用户。
   - 数据库用户用于控制用户在特定数据库中的访问权限和操作。
   - 数据库用户的范围仅限于特定的数据库。一个登录账户在不同的数据库中可以拥有不同的数据库用户。
   - 数据库用户的创建和管理由数据库管理员或具有适当权限的用户执行。

总结来说,登录账户是用于连接到 SQL Server 实例的凭证,它允许用户访问整个实例,而数据库用户是用于连接到数据库的凭证,它控制用户在数据库中的访问权限和操作。登录账户是更高层次的概念,用于实例级别的访问控制,而数据库用户是更具体的概念,用于数据库级别的访问控制。

2.1. 创建登录账户:

CREATE LOGIN [NewLogin] WITH PASSWORD = 'StrongPassword123';

2.1.1 检查是否创建账户成功:

使用 SQL Server Management Studio (SSMS)

使用 SQL Server Management Studio 连接到 SQL Server 实例,可以在“Security”节点下的“Logins”文件夹中查看已创建的登录账户列表。这提供了一个图形化的界面,可以轻松地查看和管理登录账户。如下操作找到左侧状态栏【安全性】-【登录名】,存在即创建成功;

 

使用系统视图

可以查询系统视图 sys.server_principals 来查找已创建的登录账户。这个视图包含了 SQL Server 实例的登录账户信息。

USE master;
SELECT name, type_desc
FROM sys.server_principals
WHERE type IN ('S', 'U', 'G');

在上面的查询中,type 列代表不同类型的登录账户,其中:

  • 'S' 表示 SQL Server 登录账户
  • 'U' 表示 Windows 用户登录账户
  • 'G' 表示 Windows 组登录账户

上述命令是查询出所有的账户,执行命令结果如图所示: 

 

也可以如下命令查询:

SELECT name, type_desc
FROM sys.server_principals
WHERE type = 'S' AND name = 'NewLogin';

 输出结果如下:

2.2. 创建数据库用户:

USE [YourDatabase];
CREATE USER [NewUser] FOR LOGIN [NewLogin];

 2.2.1检查用户是否创建成功:

①使用系统视图

可以查询 sys.server_principalssys.database_principals 系统视图来检查登录账户和数据库用户是否成功创建。

USE master;
SELECT name, type_desc
FROM sys.database_principals
WHERE type IN ('S', 'U') AND name = 'NewUser';

②使用 SQL Server Management Studio (SSMS): 

通过连接到 SQL Server 实例并在 SSMS 的“对象资源管理器”中导航到“Security”文件夹下的“Logins”或“YourDatabase”文件夹下的“Users”来查看登录账户或数据库用户列表。如果用户成功创建,将在列表中看到相应的登录账户或数据库用户。

按照如下操作查看新建用户:

注意 :

刚开始学习的时候我遇到个问题,就是SSMS一直找不到自己刚创建好的用户,明明数据库中执行命令已经创建成功,使用方法一系统视图查看是存在的,但是SSMS却查不到用户。经过多方查找才知道原因,由于我的数据库待机很久(前一天晚上结束后没有退出登录,电脑是开机状态一直持续到第二天下午) ,需要我退出重新登录数据库,然后刷新SSMS的用户就找到了刚创建的用户。

如果你在 SQL Server 中创建了一个新的登录账户或数据库用户,但无法在相应的地方找到它,就考虑以下几个可能的原因和解决方法:

  • 1. 刷新对象资源管理器:

   在 SQL Server Management Studio (SSMS) 中,对象资源管理器可能需要手动刷新才能显示最新的更改。右键单击相关的节点(例如“Logins”或“Users”),然后选择“刷新”选项,看看新创建的账户或用户是否出现。

  • 2. 确认使用正确的数据库:

   确保你在正确的数据库中查看数据库用户。如果你创建了一个数据库用户,但切换到了不同的数据库,你将无法看到该用户。

  • 3. 检查登录账户和数据库用户的名称:

   确保你在查询或查看时使用了正确的登录账户或数据库用户的名称。大小写敏感可能会影响查询结果。

  • 4. 重新登录到 SSMS:

   有时候,重新登录到 SQL Server Management Studio 可能会解决一些缓存问题,使新创建的账户或用户能够显示。

  • 5. 权限问题:

   如果你不具备足够的权限,可能无法看到特定的登录账户或数据库用户。确保你拥有足够的权限来查看相关信息。

  • 6. 检查创建语句是否成功执行:

   确保在创建账户或用户时没有遇到任何错误。如果创建语句执行失败,账户或用户可能并未成功创建。

  • 7. 系统视图查询:

   使用系统视图如 `sys.server_principals` 和 `sys.database_principals` 来查询登录账户和数据库用户的列表,确认是否成功创建。

  • 8. 检查错误日志:

   如果在创建账户或用户时遇到错误,错误日志可能会提供有关发生了什么问题的信息。

如果你仍然无法找到新创建的账户或用户,可能需要仔细检查上述因素,同时可以在问题解决后尝试重新连接到数据库实例或刷新对象资源管理器。

2.3. 授予权限:

2.3.1授予 SELECT、INSERT 和 UPDATE 权限:

授予权限给用户,以便他们可以在特定表上执行 SELECT ,INSERT,UPDATE操作:

--1.授予select权限:
USE master;
GRANT SELECT ON dbo.banji TO [NewUser];

--2.授予 INSERT 和 UPDATE 权限:
USE master;
GRANT INSERT, UPDATE ON dbo.banji TO [NewUser];

检查是否权限授予成功,有以下方法:

2.3.1.1检查权限-使用系统函数

SQL Server 提供了系统函数 fn_my_permissions,该函数可以用于检查当前用户在指定对象上的权限。以下是一个示例:

SELECT *
FROM fn_my_permissions('schema_name.table_name', 'OBJECT');

使用系统函数 `fn_my_permissions` 来检查当前用户对指定对象的权限。以下是对这段代码的解析:

  • - `SELECT *`: 这是 SQL 查询的一部分,它指示从结果集中选择所有列。
  • - `FROM fn_my_permissions('schema_name.table_name', 'OBJECT')`: 这部分指定了要查询的函数和参数。`fn_my_permissions` 函数返回当前用户在指定对象上的权限信息。
  •   - `'schema_name.table_name'`: 这是一个字符串参数,用于指定对象的完全限定名称,即包括数据库模式和表名称。你需要将它替换为实际的数据库模式和表名称。
  •   - `'OBJECT'`: 这是 `fn_my_permissions` 函数的第二个参数,指示你希望检查的是一个对象的权限。可以使用 `'OBJECT'`、`'DATABASE'` 或 `'SERVER'`。

因此,这个查询的目的是获取当前用户对指定表的权限。执行查询后,结果集将包含关于当前用户在该表上的权限信息,如 SELECT、INSERT、UPDATE、DELETE 等。

要使用这个查询,将 `'schema_name.table_name'` 替换为你要查询的具体表的模式和名称。查询的结果将显示当前用户在该表上的权限列表。

切换用户方法:

执行该命令查看是否权限授予成功,首先需要切换到该用户。切换用户的方法有多种,我在这里只列举一种,比如:

使用 EXECUTE AS 语句EXECUTE AS 语句允许你切换到另一个用户的身份,以执行特定的操作。以下是一个示例:

EXECUTE AS USER = 'username';
-- 在此处执行需要切换用户身份的操作
REVERT;

在上述代码中,将 'username' 替换为要切换到的用户名。在 REVERT 语句之后,就可以返回到之前的身份。 

然后对应于我需要检查的用户:

--用户切换
EXECUTE AS USER = 'NewUser';
-- 在此处执行需要切换用户身份的操作
REVERT;

 然后再执行 如下命令:

SELECT *
FROM fn_my_permissions('dbo.banji', 'OBJECT');

输出结果为:

 

注意:

只有切换用户后才能注意到授予权限,否则将会看到很多内容,导致自己无法判定是否授予成功。就比如下图所示:

 

 列举其他几种切换用户的方法,可自行尝试:

  • **使用连接字符串**:

   如果是使用连接字符串连接到数据库,可以在连接字符串中指定用户名和密码来登录不同的用户。让你以指定用户身份连接到数据库。

 

Data Source=ServerName;Initial Catalog=DatabaseName;User ID=Username;Password=Password;

   将上面的 `ServerName`、`DatabaseName`、`Username` 和 `Password` 替换为实际的值。

  • **使用 SQL Server Management Studio (SSMS)**:

   在 SSMS 中,可以在连接到数据库时使用不同的凭据。在连接窗口中的“连接到服务器”部分,选择“使用 SQL Server 验证”并提供用户名和密码。这将使用指定的凭据连接到数据库。

  • **使用 Windows 身份**:

   如果是使用 Windows 身份连接到数据库,可以在 Windows 账户之间切换。在 Windows 中注销并以不同的 Windows 用户登录,然后使用 Windows 身份连接到 SQL Server。

特别注意:

无论使用哪种方法,切换用户的能力取决于你拥有的权限。确保在切换用户身份时遵循安全最佳实践,并只在必要的情况下执行。同时,要小心在生产环境中切换用户,以避免出现意外问题。

2.3.1.2检查权限--使用系统视图:

查询 `sys.database_permissions` 系统视图可以查看当前用户在数据库中的权限。以下是一个示例:

   SELECT *
   FROM sys.database_permissions
   WHERE grantee_principal_id = DATABASE_PRINCIPAL_ID();

   这个查询会显示当前用户被授予的数据库权限。

2.3.1.3. 使用 SQL Server Management Studio (SSMS):

如果你使用 SQL Server Management Studio 连接到数据库,你可以右键单击对象(例如表、视图、存储过程等),然后选择“属性”或“权限”选项,从而查看当前用户对该对象的权限。

2.3.1.4. 使用视图和查询:

可以查询系统视图如 `sys.fn_my_permissions` 或 `sys.database_permissions`,结合其他相关的系统视图,来获取更详细的权限信息。

特别注意:

权限检查的能力取决于你所使用的权限。如果你是数据库管理员或拥有足够权限的用户,你将能够查看其他用户的权限。如果你是普通用户,你只能查看自己的权限。确保你在进行任何权限查询时遵循安全最佳实践,并只查看你有权查看的信息。 

2.3.2授予 EXECUTE 权限

 这个示例将授予用户 `Alex` 对数据库中的存储过程 `sp_GetProductInfo` 的 EXECUTE 权限,允许他执行该存储过程。

USE YourDatabase;
   GRANT EXECUTE ON dbo.sp_GetProductInfo TO Alex;

2.3.3授予所有权限:

这个示例将授予用户 `Admin` 对数据库中的表 `Products` 的所有权限,包括 SELECT、INSERT、UPDATE 和 DELETE。

USE YourDatabase;
   GRANT ALL PRIVILEGES ON dbo.Products TO Admin;

注意:

权限的授予是一个敏感的操作,应谨慎进行。确保只为需要的用户授予必要的权限,以确保数据库的安全性。权限的授予需要有足够的权限,通常由具有系统管理员或数据库管理员权限的用户执行。在实际操作中,你需要将示例中的数据库名称、表名称、用户名称等替换为实际的值。

2.4. 收回权限

要撤回用户的权限,可以使用 `REVOKE` 语句。以下是撤回用户权限的几种常见方法:

2.4.1撤回特定权限:

使用以下语法可以撤回特定权限:

REVOKE permission_type
   ON object_name TO user_name;

  其中,`permission_type` 是要撤回的权限类型(如 SELECT、INSERT、UPDATE 等),`object_name` 是权限所在的对象(如表、视图、存储过程等),`user_name` 是要撤回权限的用户。

  示例:

--收回权限
REVOKE insert
ON dbo.banji TO NewUser;

2.4.2撤回所有权限

如果要撤回用户在一个对象上的所有权限,可以使用以下语句:

REVOKE ALL PRIVILEGES
   ON object_name TO user_name;

   示例:

 REVOKE ALL PRIVILEGES ON dbo.Table1 TO John;

   这会撤回用户在指定对象上的所有权限。

2.4.3撤回特定角色中的权限:

如果你的用户是通过角色分配的权限,你可以从角色中撤回权限。首先需要从角色中撤回权限,然后角色中的用户也会丧失相应的权限。

   示例:

REVOKE SELECT ON dbo.Table1 FROM RoleName;

撤回角色 `RoleName` 在表 `dbo.Table1` 上的 SELECT 权限。

注意:

执行 `REVOKE` 操作需要有足够的权限。通常,只有拥有相应权限的用户(如数据库管理员、系统管理员)才能执行这些操作。在执行权限撤回操作之前,请确保你理解其影响,并谨慎操作,以防止意外的数据访问问题。

2.5. 修改用户信息:

在 SQL Server 中,可以修改用户的多个信息,包括登录名、密码、默认数据库、默认语言等。以下是修改用户信息的一般步骤:

2.5.1修改用户信息的步骤:

  • 1. 打开 SQL Server Management Studio (SSMS) 或使用 Transact-SQL。
  • 2. 在 SSMS 中,展开 "Security" 节点,然后选择 "Logins"。
  • 3. 找到要修改的登录,并右键单击该登录。
  • 4. 选择 "Properties"。
  • 5. 在相应的选项卡中,进行所需的更改。
  • 6. 确认更改,并应用。

以下是常见的用户信息修改操作:

2.5.2修改登录名:

①在 "General" 选项卡中,可以更改登录名。

②使用 Transact-SQL 操作

ALTER LOGIN [old_login_name] WITH NAME = [new_login_name];

2.5.3修改密码:

①在 "General" 选项卡中,可以更改密码。

②使用 Transact-SQL 操作

ALTER LOGIN [login_name] WITH PASSWORD = 'new_password';

比如:

ALTER LOGIN [NewLogin] WITH PASSWORD = 'NewStrongPassword456';

2.5.4修改默认数据库:

①在 "General" 选项卡中的 "Default database" 部分,可以选择新的默认数据库。

②使用 Transact-SQL 操作

ALTER LOGIN [login_name] WITH DEFAULT_DATABASE = [new_default_database];

2.5.5修改默认语言:

①在 "General" 选项卡中的 "Default language" 部分,可以选择新的默认语言。

②使用 Transact-SQL 操作

ALTER LOGIN [login_name] WITH DEFAULT_LANGUAGE = [new_default_language];

2.5.6修改其他设置:

根据需要,还可以在不同的选项卡中修改其他设置,如服务器角色、数据库角色等。

上述示例只是一些常见的修改操作,具体情况可能因需求而异。在执行这些操作之前,请确保理解其影响并进行适当的备份,因为一些修改可能会导致用户失去对特定资源的访问权限。

2.6. 删除用户:

在 SQL Server 中,可以使用不同的方法来删除用户。以下是删除用户的两种常见方法以及相应的操作步骤:

2.6.1使用 SQL Server Management Studio (SSMS)

  • 1. 打开 SQL Server Management Studio (SSMS) 并连接到相应的 SQL Server 实例。
  • 2. 在 "Object Explorer" 中,展开目标数据库,然后选择 "Security" 节点。
  • 3. 在 "Security" 节点下选择 "Users"。
  • 4. 找到要删除的用户,右键单击该用户。
  • 5. 选择 "Delete"(删除)。
  • 6. 系统将提示您确认删除操作,确认后用户将被删除。

2.6.2使用 Transact-SQL 查询

  • 1. 打开 SQL Server Management Studio (SSMS) 并连接到相应的 SQL Server 实例。
  • 2. 打开一个新的查询窗口。
  • 3. 在查询窗口中,使用以下 Transact-SQL 查询来删除用户:

首先从数据库中删除用户:

USE [YourDatabase]; -- 切换到目标数据库
DROP USER [NewUser];

然后,从登录账户中删除用户:

DROP LOGIN [NewLogin];

在执行删除操作之前,请务必谨慎操作,并确保已经备份了相关数据。删除用户将同时删除其在数据库中的权限和资源,可能会影响到其他相关对象。

无论哪种方法,删除用户都需要谨慎处理,因为一旦删除,用户的数据和权限将不可恢复。在进行删除操作之前,请确保您已经了解其影响,并已经进行了充分的测试和备份。 

2.7. 禁用用户:

禁用用户是指限制该用户对数据库的访问和操作权限,从而防止其登录和执行特定操作。禁用用户的操作可以通过以下步骤完成:

2.7.1禁用登录:

  • 1. 打开 SQL Server Management Studio (SSMS) 或使用 Transact-SQL。
  • 2. 在 SSMS 中,展开 "Security" 节点,然后选择 "Logins"。
  • 3. 找到要禁用的登录,并右键单击该登录。
  • 4. 选择 "Properties"。
  • 5. 在 "General" 选项卡中,找到 "Login:" 部分,选择 "Disabled" 选项。或者使用 Transact-SQL 查询:
ALTER LOGIN [login_name] DISABLE;

2.7.2撤销禁用:

  • 1. 若要撤销禁用,可以重复上述步骤,但在第 5 步中选择 "Enabled" 选项。
  • 2. 或者使用 Transact-SQL 查询:
ALTER LOGIN [login_name] ENABLE;

注意:

禁用用户只会影响其登录权限,不会直接影响其数据库内的权限。如果需要限制用户在数据库中的操作权限,还需要进行以下操作:

2.7.3禁用用户在数据库中的操作权限:

  • 1. 在 SSMS 中,展开目标数据库,选择 "Security" 节点,然后选择 "Users"。
  • 2. 找到要禁用的用户,并右键单击该用户。
  • 3. 选择 "Properties"。
  • 4. 在 "General" 选项卡中,取消勾选 "Login name" 下方的复选框,这将阻止用户登录到数据库。
  • 5. 在 "Membership" 选项卡中,取消用户与角色的关联,以撤销用户在数据库中的特定权限。

或者使用 Transact-SQL 查询:

USE [database_name];
ALTER USER [user_name] DISABLE;

要重新启用用户的操作权限,使用以下 Transact-SQL 查询:

USE [database_name];
ALTER USER [user_name] ENABLE;

总之,禁用用户的操作包括禁用登录和限制数据库中的操作权限。具体步骤可能因 SQL Server 版本而异,但通常遵循类似的基本原则。在执行这些操作之前,请确保理解其影响并进行适当的备份。

三、使用SSMS创建用户和账户(补充)

3.1创建账户:

首先登录数据库,一般选择第二个登录,原因是为了方便移植连接:

右键登录名,点击新建登录名,选择第二个,输入用户名和密码,关闭强制密码过期,选择可以登录的数据库,最后点击确定;比如创建账户【张三】,如下所示:

然后登录刚设置的新账户,查看登录名:

 

如果在此账号再次创建用户会失败,因为普通用户权限不足,基本都是以系统用户进行创建 。如图所示:

3.2创建用户:

登录数据库,右键登录名,选择【新建登录名】:

输入登录名和密码,关掉强制密码过期,然后点击确定,创建成功:

 

切换用户,登录张三后再次创建用户,发现创建失败,原因是普通用户没有权限:

 

本节SQL sever用户管理的笔记和学习理解已经 整理完毕,其中内容如有错误劳请各位读者指出,然后我及时修改。感谢大家的查看,我会继续更新后续SQL sever学习总结!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/970182.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nacos 配置中心配置优先级

默认配置文件: 这的默认配置名为:com.tulingmall.order 名称的properties文件 如果不是properties需修改下图配置 默认配置文件只需名称对应 类型就算不为properties也无需加后缀名称 后面级别更低的为配置文件引入的多文件配置

机器人中的数值优化(八)——拟牛顿方法(上)

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,…

1.14 手工插入ShellCode反弹

PE格式是 Windows下最常用的可执行文件格式,理解PE文件格式不仅可以了解操作系统的加载流程,还可以更好的理解操作系统对进程和内存相关的管理知识,而有些技术必须建立在了解PE文件格式的基础上,如文件加密与解密,病毒分析,外挂技术等,本次的目标是手工修改或增加节…

【单片机】有人 WH-LTE-7S1 4G cat1 模块连接服务器,教程,记录。GPRS模块连接服务器教程。socket编程。

文章目录 4G cat1 模块封装引脚名称功能拓扑图串口模块调试WH-LTE-7S1公网服务器建立python程序服务服务器程序WH-LTE-7S1 模块连接服务器与多个模块建立TCP长连接的服务器程序 本文主要介绍了一个4G Cat1模块,该模块具有多种功能和特性。文章接下来展示了4G Cat1模…

手把手教你Typora大纲如何显示序号(支持六级标题栏序号)

1 打开偏好设置 2 新建 base.user.css文件 3 复制代码(重启typora生效): /************************************** * Header Counters in TOC **************************************//* No link underlines in TOC */ .md-toc-inner { …

第四章:照相机模型与增强实现

文章目录 第四章:照相机模型与增强实现4.1 针孔照相机模型4.1.1 照相机矩阵4.1.2 三维点的投影4.1.3 照相机矩阵的分解4.1.4 计算照相机中心 4.2 照相机标定4.3 以平面和标记物进行姿态估计4.4 增强现实4.4.1 PyGame 和 PyOpenGL4.4.2 从照相机矩阵到 Open…

PMD 检查java代码:运行过程中只需要赋值一次的局部变量可以用final修饰(LocalVariableCouldBeFinal)

https://docs.pmd-code.org/pmd-doc-6.55.0/pmd_rules_java_codestyle.html#localvariablecouldbefinal 如果一个局部变量在运行过程中只需要赋值一次,那么可以定义为final的。 属性ignoreForEachDecl可以控制是否忽略对for-each声明中的局部变量的检查&#xff0c…

DBService基础原理

一、DBService简介 DBService是一个高可用性的关系型数据库存储系统,适用于存储小量数据(10GB左右),比如:组件元数据。DBService仅提供给集群内部的组件使用,提供数据存储、查询、删除等功能。 DBService是…

视频号如何插入带货商品链接进行变现

视频号目前是全腾讯的希望,视频号变现主要有6大模式 参与创作分成计划,也就是视频号底下广告分成,类似公众号文章的流量主,可以给大家看下收益,做的好的,收益还是非常可观的,只要作品有播放量&a…

一文讲清楚字符串搜索问题【朴素法】和【KMP算法】

文章目录 一、引入二、朴素解法2.1 朴素法介绍2.2 图解朴素法2.3 复杂度分析 三、KMP算法3.1 nextArr 数组介绍3.2 图解 KMP 算法3.2.1 原理3.2.2 实现 3.3 nextArr 数组求解3.4 复杂度分析 四、总结写在最后 一、引入 字符串搜索问题是字符串中重要的一类问题,该问…

C#通过ModbusTcp协议读写西门子PLC中的浮点数

一、Modbus TCP通信概述 MODBUS/TCP是简单的、中立厂商的用于管理和控制自动化设备的MODBUS系列通讯协议的派生产品,显而易见,它覆盖了使用TCP/IP协议的“Intranet”和“Internet”环境中MODBUS报文的用途。协议的最通用用途是为诸如PLC,I/…

什么是rem单位和em单位?它们有什么区别?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ rem 和 em 单位⭐ rem 单位(Root Em)⭐ em 单位⭐ 区别总结⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入…

.net core 上传文件大小限制

微软官网文档中给的解释是.net core 默认上传文件大小限制是30M&#xff0c;所以即便你项目里没有限制&#xff0c;这里也有个默认限制。 官网链接地址 总结了一下解决办法&#xff1a; 1.首先项目里添加一个web.config自定义配置文件 在配置文件中加上这段配置 <!--//…

2024年java面试--多线程(3)

系列文章目录 2024年java面试&#xff08;一&#xff09;–spring篇2024年java面试&#xff08;二&#xff09;–spring篇2024年java面试&#xff08;三&#xff09;–spring篇2024年java面试&#xff08;四&#xff09;–spring篇2024年java面试–集合篇2024年java面试–redi…

Echarts使用

Echarts使用 1.ECharts简介 ECharts是一个使用JavaScript实现的开源可视化库&#xff0c;可以流畅的运行在PC和移动设备上&#xff0c;兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等)&#xff0c;底层依赖矢量图形库ZRender,.提供直观&#xff0c;交互丰富&am…

Spring Cloud--从零开始搭建微服务基础环境【四】

&#x1f600;前言 本篇博文是关于Spring Cloud–从零开始搭建微服务基础环境【四】&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&#xff0c;…

自然语言处理: 第十一章BERT(Bidirectional Encoder Representation from Transformers)

论文地址:[1810.04805] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (arxiv.org) 理论基础 之前介绍GPT的搭建的方式的时候&#xff0c;将BERT与GPT进行了对比&#xff0c;我们可以知道BERT和GPT都是基于transformer架构下的分支&…

Android 1.2.1 使用Eclipse + ADT + SDK开发Android APP

1.2.1 使用Eclipse ADT SDK开发Android APP 1.前言 这里我们有两条路可以选&#xff0c;直接使用封装好的用于开发Android的ADT Bundle&#xff0c;或者自己进行配置 因为谷歌已经放弃了ADT的更新&#xff0c;官网上也取消的下载链接&#xff0c;这里提供谷歌放弃更新前最新…

PHP8数组的类型-PHP8知识详解

php 8 引入了对数组的类型提示&#xff0c;以帮助开发者更准确地定义和验证数组的结构。以下是 PHP 8 中支持的数组类型&#xff1a;索引数组、关联数组、混合类型数组。 1、索引数组 (Indexed arrays): PHP索引数组一般表示数组元素在数组中的位置&#xff0c;它由数字组成&a…

centos7关闭防火墙和selinux(内核防火墙)

centos7关闭防火墙和selinux&#xff08;内核机制或叫内核防火墙&#xff09; 小白教程&#xff0c;一看就会&#xff0c;一做就成。 1.关闭防火墙&#xff0c;centos7默认是firewalld #关闭 systemctl stop firewalld.service #关闭开机自启 systemctl disable firewalld.ser…