2025-11-05
Python
00

在Python开发过程中,你是否遇到过这样的困惑:明明定义了变量,为什么有时候能访问,有时候却报错?函数内部修改的变量,为什么在函数外部没有生效?这些问题的根源都指向一个重要概念——变量作用域

掌握Python的局部变量与全局变量,不仅能帮你避免90%的变量访问错误,更能让你的代码逻辑更清晰、维护性更强。本文将从实际问题出发,通过具体的代码示例,带你彻底理解Python变量作用域的机制和最佳实践。


🔍 问题分析:变量作用域常见痛点

💥 痛点一:函数内变量修改无效

Python
# 新手常见错误 count = 0 def increment(): count = count + 1 # UnboundLocalError: local variable referenced before assignment increment() print(count)

💥 痛点二:全局变量污染

Python
# 全局变量被意外修改 config_value = "default" def process_data(): config_value = "modified" # 这里创建了局部变量,并未修改全局变量 print(f"函数内: {config_value}") process_data() print(f"函数外: {config_value}")

image.png

2025-11-05
SQLSERVER
00

在处理敏感信息时,数据库的安全性变得至关重要。SQL Server提供了多种机制来保护数据,防止未授权访问和数据泄露。本文将探讨SQL Server中的数据加密和保护技术,并提供相应的脚本示例。

透明数据加密 (TDE)

透明数据加密是一种加密数据库存储的技术,它用于加密数据库中的数据文件。使用TDE后,即使攻击者获得了物理数据库文件,也无法读取数据,除非他们拥有正确的加密密钥。

image.png

示例脚本:启用TDE

SQL
USE master; GO -- 创建主密钥 CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'StrongMasterKeyPassword!23'; -- 创建证书 CREATE CERTIFICATE MyServerCert WITH SUBJECT = 'My DEK Certificate'; -- 使用证书保护数据库加密密钥 USE YourDatabase; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE MyServerCert; -- 开启透明数据加密 ALTER DATABASE YourDatabase SET ENCRYPTION ON; GO
2025-11-05
SQLSERVER
00

在SQL Server中,安全性是管理数据库系统时的重要组成部分。为了确保数据的安全性和完整性,管理员需要理解和配置登录名、用户和角色。本文将详细介绍如何在SQL Server中管理这些安全实体,并提供一些脚本示例。

登录名(Login)

登录名是连接到SQL Server实例的身份验证和授权的起点。登录名可以基于Windows身份验证或SQL Server身份验证来创建。Windows身份验证利用Windows用户帐户进行身份验证,而SQL Server身份验证则需要在创建登录名时指定用户名和密码。

示例脚本:创建SQL Server登录名

SQL
CREATE LOGIN SampleLogin WITH PASSWORD = 'StrongPassword!23';

image.png

2025-11-05
SQLSERVER
00

SQL Server 安全模型是 SQL Server 数据库管理系统中保护数据安全的核心组成部分。它提供了一系列的机制,用于管理谁可以访问数据库,以及他们可以执行哪些操作。这篇文章将详细介绍 SQL Server 的安全模型,并通过实例数据表和脚本示例来说明如何实现和管理这些安全特性。

SQL Server 安全体系结构

SQL Server 安全模型主要由以下几部分构成:

  • 登录名:在服务器级别创建的账户,用于控制对 SQL Server 实例的访问。
  • 用户:在特定数据库中创建的账户,与服务器级别的登录名相关联。
  • 角色:一组权限的集合,可以将一个角色分配给多个用户或其他角色。
  • 权限:定义了用户或角色可以对数据库对象(如表、视图、存储过程等)执行哪些操作。

实例数据表

为了演示安全模型的应用,我们创建一个简单的 Employees 表:

SQL
CREATE TABLE Employees ( EmployeeID INT PRIMARY KEY, Name NVARCHAR(50), Position NVARCHAR(50), Department NVARCHAR(50) );

示例脚本 1:创建登录名和用户

首先,我们需要在服务器级别创建一个登录名,然后在数据库级别创建一个用户,并将其关联。

SQL
-- 创建服务器级别的登录名 CREATE LOGIN LoginForEmployee WITH PASSWORD = 'Password123!'; -- 在数据库级别创建用户并关联至登录名 USE YourDatabase; CREATE USER EmployeeUser FOR LOGIN LoginForEmployee;

image.png

2025-11-05
SQLSERVER
00

在数据库系统中,索引是用于加速数据检索操作的数据结构。SQL Server中的索引类似于书的目录,可以快速定位到数据页,而不必扫描整个表。性能调优是数据库管理中的一个重要环节,涉及到查询优化、索引管理、系统配置等多个方面。

索引的类型

SQL Server主要提供两种类型的索引:

  • 聚集索引:表中数据行的物理排序与键值的逻辑(索引)顺序相同。一个表只能有一个聚集索引。
  • 非聚集索引:索引结构独立于数据行的物理存储顺序。一个表可以有多个非聚集索引。

实例数据表

假设我们有以下数据表 Orders

Orders 表

OrderIDCustomerIDOrderDateTotalAmount
110012023-01-01500.00
210022023-01-02300.00
310032023-01-03450.00
............
SQL
-- 创建Orders表 CREATE TABLE Orders ( OrderID INT IDENTITY(1,1) PRIMARY KEY, CustomerID INT, OrderDate DATE, TotalAmount DECIMAL(10, 2) ); -- 插入Orders表数据 INSERT INTO Orders (CustomerID, OrderDate, TotalAmount) VALUES (1001, '2023-01-01', 500.00), (1002, '2023-01-02', 300.00), (1003, '2023-01-03', 450.00);

image.png