찾다
데이터 베이스MySQL 튜토리얼한 기사로 MySQL 인덱스 푸시다운 이해하기

이 글에서는 mysql에 대한 관련 지식을 소개하는데, 인덱스 푸시다운에 대한 관련 내용을 주로 소개하고 있습니다. 인덱스 조건 푸시다운은 Index Condition Pushdown, 줄여서 ICP라고도 합니다. 데이터 쿼리를 최적화하는 것이 모든 사람에게 도움이 되기를 바랍니다.

추천 학습: mysql 비디오 튜토리얼

SELECT 문 실행 프로세스

MySQL 데이터베이스는 Server 레이어와 Engine으로 구성됩니다. > 레이어 구성: MySQL 数据库由 Server 层和 Engine 层组成:

  • Server 层:SQL 分析器、SQL 优化器、SQL 执行器,用于负责 SQL 语句的具体执行过程。
  • Engine 层: 负责存储具体的数据,如最常使用的 InnoDB 存储引擎,还有用于在内存中存储临时结果集的 TempTable 引擎。

  • 通过客户端/服务器通信协议与 MySQL 建立连接。

  • 查询缓存:

    • 如果开启了 Query Cache 且在查询缓存过程中查询到完全相同的 SQL 语句,则将查询结果直接返回给客户端;
    • 如果没有开启 Query Cache 或者没有查询到完全相同的 SQL 语句则会由解析器进行语法语义解析,并生成解析树。
  • 分析器生成新的解析树。

  • 查询优化器生成执行计划。

  • 查询执行引擎执行 SQL 语句,此时查询执行引擎会根据 SQL 语句中表的存储引擎类型,以及对应的 API 接口与底层存储引擎缓存或者物理文件的交互情况,得到查询结果,由 MySQL Server 过滤后将查询结果缓存并返回给客户端。

    若开启了 Query Cache,这时也会将 SQL 语句和结果完整地保存到 Query Cache 中,以后若有相同的 SQL 语句执行则直接返回结果。

TipsMySQL 8.0 已去掉 query cache(查询缓存模块)。

因为查询缓存的命中率会非常低。 查询缓存的失效非常频繁:只要有对一个表的更新,这个表上所有的查询缓存都会被清空。

什么是索引下推?

索引下推(Index Condition Pushdown): 简称 ICP,通过把索引过滤条件下推到存储引擎,来减少 MySQL 存储引擎访问基表的次数 和 MySQL 服务层访问存储引擎的次数。

索引下推 VS 覆盖索引: 其实都是 减少回表的次数,只不过方式不同

  • 覆盖索引: 当索引中包含所需要的字段(SELECT XXX),则不再回表去查询字段。

  • 索引下推: 对索引中包含的字段先做判断,直接过滤掉不满足条件的记录,减少回表的行数。

要了解 ICP 是如何工作的,先从一个查询 SQL 开始:

举个栗子:查询名字 la 开头、年龄为 18 的记录

SELECT * FROM user WHERE name LIKE 'la%' AND age = 18;

有这些记录:

不开启 ICP 时索引扫描是如何进行的:

  • 通过索引元组,定位读取对应数据行。(实际上:就是回表)
  • WHERE 中字段做判断,过滤掉不满足条件的行。

使用 ICP,索引扫描如下进行:

  • 获取索引元组。
  • WHERE 中字段做判断,在索引列中进行过滤。
  • 对满足条件的索引,进行回表查询整行。
  • WHERE
    • 서버 레이어: SQL 분석기, SQL 최적화 있음 실행자, SQL 실행자는 SQL 문의 특정 실행 프로세스를 담당합니다.
  • 엔진 레이어: 가장 일반적으로 사용되는 InnoDB 스토리지 엔진과 같은 특정 데이터를 저장하고 임시 결과를 메모리 세트에 저장하는 역할을 담당합니다. TempTable 엔진.

    🎜🎜
    • 🎜고객별 클라이언트/서버 통신 프로토콜을 사용하여 MySQL과 연결을 설정합니다. 🎜🎜
    • 🎜🎜쿼리 캐시:🎜
      • 쿼리 캐시가 활성화되어 있고 쿼리 중에 정확히 동일한 SQL가 쿼리되는 경우 캐시 프로세스 코드> 문을 실행하면 쿼리 결과가 클라이언트에 직접 반환됩니다. 🎜
      • 쿼리 캐시가 활성화되지 않거나 동일한 SQL 문이 활성화되지 않은 경우; 프로세서는 구문 및 의미 구문 분석을 수행하고 구문 분석 트리를 생성합니다. 🎜🎜🎜
      • 🎜파서는 새로운 구문 분석 트리를 생성합니다. 🎜🎜
      • 🎜쿼리 최적화 프로그램은 실행 계획을 생성합니다. 🎜🎜
      • 🎜쿼리 실행 엔진은 SQL 문을 실행합니다. 이때 쿼리 실행 엔진은 SQL에 있는 테이블의 스토리지 엔진 유형을 기반으로 합니다. 명령문 및 해당 API 인터페이스는 기본 스토리지 엔진 캐시 또는 실제 파일과 상호 작용하여 MySQL Server로 필터링한 후 쿼리 결과를 캐시하여 반환합니다. 클라이언트. 🎜
        🎜Query Cache가 켜져 있으면 이때 SQL 문과 결과가 완전히 Query Cache에 저장됩니다. 동일한 SQL 문이 실행되면 결과가 직접 반환됩니다. 🎜
        🎜🎜🎜🎜: MySQL 8.0에서는 쿼리 캐시(쿼리 캐시 모듈)가 제거되었습니다. 🎜
        🎜쿼리 캐시의 적중률이 매우 낮기 때문입니다. 쿼리 캐시 무효화는 매우 자주 발생합니다. 테이블이 업데이트될 때마다 해당 테이블의 모든 쿼리 캐시가 지워집니다. 🎜
        🎜인덱스 푸시다운이란 무엇인가요? 🎜🎜🎜인덱스 조건 푸시다운(인덱스 조건 푸시다운): ICP라고도 하며, 인덱스 필터링 조건을 스토리지 엔진. 스토리지 엔진이 기본 테이블에 액세스하는 횟수와 MySQL 서비스 계층이 스토리지 엔진에 액세스하는 횟수입니다. 🎜🎜🎜인덱스 푸시다운 VS 포함 인덱스: 실제로 둘 다 🎜테이블 반환 수를 줄이지만 방식은 다릅니다 🎜
        • 🎜🎜포함 인덱스: 색인 생성에 필수 필드(SELECT XXX)가 포함되어 있으면 필드를 쿼리하기 위해 테이블로 돌아갈 필요가 없습니다. 🎜🎜
        • 🎜🎜인덱스 푸시다운: 인덱스에 포함된 필드를 먼저 판단하고 🎜조건을 충족하지 않는 레코드를 직접 필터링하여 반환되는 행 수를 줄입니다. 테이블. 🎜🎜🎜🎜🎜 ICP 작동 방식을 이해하려면 SQL 쿼리로 시작하세요.🎜🎜예: la 레코드라는 이름을 쿼리하세요. 및 연령 18 🎜
          -- 表创建
          CREATE TABLE IF NOT EXISTS `user` (
          `id` VARCHAR(64) NOT NULL COMMENT '主键 id',
          `name` VARCHAR(50) NOT NULL COMMENT '名字',
          `age` TINYINT NOT NULL COMMENT '年龄',
          `address` VARCHAR(100) NOT NULL COMMENT '地址',
          PRIMARY KEY (id)
          ) ENGINE=InnoDB DEFAULT CHARSET utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT '用户表';
          
          -- 创建索引
          CREATE INDEX idx_name_age ON user (name, age);
          
          -- 新增数据
          INSERT INTO user (id, name, age, address) VALUES (1, 'tt', 14, 'linhai');
          INSERT INTO user (id, name, age, address) VALUES (2, 'lala', 18, 'linhai');
          INSERT INTO user (id, name, age, address) VALUES (3, 'laxi', 30, 'linhai');
          INSERT INTO user (id, name, age, address) VALUES (4, 'lawa', 40, 'linhai');
          
          -- 查询语句
          SELECT * FROM user WHERE name LIKE 'la%' AND age = 18;
          🎜🎜에는 다음 기록이 있습니다: 🎜🎜🎜🎜🎜 ICP가 켜져 있지 않을 때 색인 스캔이 수행되는 방법:🎜
          • 찾고 및 인덱스 튜플을 통해 해당 데이터 행을 읽습니다. (실제로는 테이블만 반환) 🎜
          • WHERE의 필드를 판단하고 조건에 맞지 않는 행을 필터링합니다. 🎜🎜🎜🎜🎜🎜ICP 사용 code>에서 인덱스 스캔은 다음과 같이 진행됩니다:🎜<ul> <li>인덱스 튜플을 가져옵니다. 🎜</li> <li> <code>WHERE의 필드를 판단하고 인덱스 열에서 필터링합니다. 🎜
          • 조건을 충족하는 인덱스의 경우 전체 행을 테이블에 다시 쿼리합니다. 🎜
          • WHERE의 필드를 판단하고 조건을 충족하지 않는 행을 필터링합니다. 🎜🎜🎜🎜🎜

            动手实验:

            实验:使用 MySQL 版本 8.0.16

            -- 表创建
            CREATE TABLE IF NOT EXISTS `user` (
            `id` VARCHAR(64) NOT NULL COMMENT '主键 id',
            `name` VARCHAR(50) NOT NULL COMMENT '名字',
            `age` TINYINT NOT NULL COMMENT '年龄',
            `address` VARCHAR(100) NOT NULL COMMENT '地址',
            PRIMARY KEY (id)
            ) ENGINE=InnoDB DEFAULT CHARSET utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT '用户表';
            
            -- 创建索引
            CREATE INDEX idx_name_age ON user (name, age);
            
            -- 新增数据
            INSERT INTO user (id, name, age, address) VALUES (1, 'tt', 14, 'linhai');
            INSERT INTO user (id, name, age, address) VALUES (2, 'lala', 18, 'linhai');
            INSERT INTO user (id, name, age, address) VALUES (3, 'laxi', 30, 'linhai');
            INSERT INTO user (id, name, age, address) VALUES (4, 'lawa', 40, 'linhai');
            
            -- 查询语句
            SELECT * FROM user WHERE name LIKE &#39;la%&#39; AND age = 18;

            新增数据如下:

            • 关闭 ICP,再调用 EXPLAIN 查看语句:
            -- 将 ICP 关闭
            SET optimizer_switch = 'index_condition_pushdown=off';
            -- 查看确认
            show variables like 'optimizer_switch';
            
            -- 用 EXPLAIN 查看
            EXPLAIN SELECT * FROM user WHERE name LIKE &#39;la%&#39; AND age = 18;

            • 开启 ICP,再调用 EXPLAIN 查看语句:
            -- 将 ICP 打开
            SET optimizer_switch = 'index_condition_pushdown=on';
            -- 查看确认
            show variables like 'optimizer_switch';
            
            -- 用 EXPLAIN 查看
            EXPLAIN SELECT * FROM user WHERE name LIKE &#39;la%&#39; AND age = 18;

            由上实验可知,区别是否开启 ICP Exira 字段中的 Using index condition

            更进一步,来看下 ICP 带来的性能提升:

            通过访问数据文件的次数

            -- 1. 清空 status 状态
            flush status;
            -- 2. 查询
            SELECT * FROM user WHERE name LIKE &#39;la%&#39; AND age = 18;
            -- 3. 查看 handler 状态
            show status like '%handler%';

            对比开启 ICP 和 关闭 ICP 关注 Handler_read_next 的值

            -- 开启 ICP
            flush status;
            SELECT * FROM user WHERE name LIKE &#39;la%&#39; AND age = 18;
            show status like '%handler%';
            +----------------------------|-------+
            | Variable_name              | Value |
            +----------------------------|-------+
            | Handler_commit             | 1     |
            | Handler_delete             | 0     |
            | Handler_discover           | 0     |
            | Handler_external_lock      | 2     |
            | Handler_mrr_init           | 0     |
            | Handler_prepare            | 0     |
            | Handler_read_first         | 0     |
            | Handler_read_key           | 1     |  
            | Handler_read_last          | 0     |
            | Handler_read_next          | 1     |  <---重点
            | Handler_read_prev          | 0     |
            | Handler_read_rnd           | 0     |
            | Handler_read_rnd_next      | 0     |
            | Handler_rollback           | 0     |
            | Handler_savepoint          | 0     |
            | Handler_savepoint_rollback | 0     |
            | Handler_update             | 0     |
            | Handler_write              | 0     |
            +----------------------------|-------+
            18 rows in set (0.00 sec)
            
            
            -- 关闭 ICP
            flush status;
            SELECT * FROM user WHERE name LIKE &#39;la%&#39; AND age = 18;
            show status like '%handler%';
            +----------------------------|-------+
            | Variable_name              | Value |
            +----------------------------|-------+
            | Handler_commit             | 1     |
            | Handler_delete             | 0     |
            | Handler_discover           | 0     |
            | Handler_external_lock      | 2     |
            | Handler_mrr_init           | 0     |
            | Handler_prepare            | 0     |
            | Handler_read_first         | 0     |
            | Handler_read_key           | 1     |
            | Handler_read_last          | 0     |
            | Handler_read_next          | 3     |  <---重点
            | Handler_read_prev          | 0     |
            | Handler_read_rnd           | 0     |
            | Handler_read_rnd_next      | 0     |
            | Handler_rollback           | 0     |
            | Handler_savepoint          | 0     |
            | Handler_savepoint_rollback | 0     |
            | Handler_update             | 0     |
            | Handler_write              | 0     |
            +----------------------------|-------+
            18 rows in set (0.00 sec)

            由上实验可知:

            • 开启 ICPHandler_read_next 等于 1,回表查 1 次。
            • 关闭 ICPHandler_read_next 等于 3,回表查 3 次。

            这实验跟上面的栗子就对应上了。

            索引下推限制

            根据官网可知,索引下推 受以下条件限制:

            • 当需要访问整个表行时,ICP 用于 rangerefeq_refref_or_null

            • ICP可以用于 InnoDBMyISAM 表,包括分区表 InnoDBMyISAM 表。

            • 对于 InnoDB 表,ICP 仅用于二级索引。ICP 的目标是减少全行读取次数,从而减少 I/O 操作。对于 InnoDB 聚集索引,完整的记录已经读入 InnoDB 缓冲区。在这种情况下使用 ICP 不会减少 I/O

            • 在虚拟生成列上创建的二级索引不支持 ICPInnoDB 支持虚拟生成列的二级索引。

            • 引用子查询的条件不能下推。

            • 引用存储功能的条件不能被按下。存储引擎不能调用存储的函数。

            • 触发条件不能下推。

            • 不能将条件下推到包含对系统变量的引用的派生表。(MySQL 8.0.30 及更高版本)。

            小结下:

            • ICP 仅适用于 二级索引
            • ICP 目标是 减少回表查询
            • ICP 对联合索引的部分列模糊查询非常有效。

            拓展:虚拟列

            CREATE TABLE UserLogin (
            userId BIGINT,
            loginInfo JSON,
            cellphone VARCHAR(255) AS (loginInfo->>"$.cellphone"),
            PRIMARY KEY(userId),
            UNIQUE KEY idx_cellphone(cellphone)
            );

            cellphone :就是一个虚拟列,它是由后面的函数表达式计算而成,本身这个列不占用任何的存储空间,而索引 idx_cellphone 实质是一个函数索引

            好处: 在写 SQL 时可以直接使用这个虚拟列,而不用写冗长的函数。

            举个栗子: 查询手机号

            -- 不用虚拟列
            SELECT * FROM UserLogin WHERE loginInfo->>"$.cellphone" = &#39;13988888888&#39;
            
            -- 使用虚拟列
            SELECT * FROM UserLogin WHERE cellphone = &#39;13988888888&#39;

            推荐学习:mysql视频教程

위 내용은 한 기사로 MySQL 인덱스 푸시다운 이해하기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 脚本之家에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
MySQL : 세계에서 가장 인기있는 데이터베이스 소개MySQL : 세계에서 가장 인기있는 데이터베이스 소개Apr 12, 2025 am 12:18 AM

MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템으로, 주로 데이터를 신속하고 안정적으로 저장하고 검색하는 데 사용됩니다. 작업 원칙에는 클라이언트 요청, 쿼리 해상도, 쿼리 실행 및 반환 결과가 포함됩니다. 사용의 예로는 테이블 작성, 데이터 삽입 및 쿼리 및 조인 작업과 같은 고급 기능이 포함됩니다. 일반적인 오류에는 SQL 구문, 데이터 유형 및 권한이 포함되며 최적화 제안에는 인덱스 사용, 최적화 된 쿼리 및 테이블 분할이 포함됩니다.

MySQL의 중요성 : 데이터 저장 및 관리MySQL의 중요성 : 데이터 저장 및 관리Apr 12, 2025 am 12:18 AM

MySQL은 데이터 저장, 관리, 쿼리 및 보안에 적합한 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 1. 다양한 운영 체제를 지원하며 웹 응용 프로그램 및 기타 필드에서 널리 사용됩니다. 2. 클라이언트-서버 아키텍처 및 다양한 스토리지 엔진을 통해 MySQL은 데이터를 효율적으로 처리합니다. 3. 기본 사용에는 데이터베이스 및 테이블 작성, 데이터 삽입, 쿼리 및 업데이트가 포함됩니다. 4. 고급 사용에는 복잡한 쿼리 및 저장 프로 시저가 포함됩니다. 5. 설명 진술을 통해 일반적인 오류를 디버깅 할 수 있습니다. 6. 성능 최적화에는 인덱스의 합리적인 사용 및 최적화 된 쿼리 문이 포함됩니다.

MySQL을 사용하는 이유는 무엇입니까? 혜택과 장점MySQL을 사용하는 이유는 무엇입니까? 혜택과 장점Apr 12, 2025 am 12:17 AM

MySQL은 성능, 신뢰성, 사용 편의성 및 커뮤니티 지원을 위해 선택됩니다. 1.MYSQL은 효율적인 데이터 저장 및 검색 기능을 제공하여 여러 데이터 유형 및 고급 쿼리 작업을 지원합니다. 2. 고객-서버 아키텍처 및 다중 스토리지 엔진을 채택하여 트랜잭션 및 쿼리 최적화를 지원합니다. 3. 사용하기 쉽고 다양한 운영 체제 및 프로그래밍 언어를 지원합니다. 4. 강력한 지역 사회 지원을 받고 풍부한 자원과 솔루션을 제공합니다.

InnoDB 잠금 장치 (공유 잠금, 독점 잠금, 의도 잠금, 레코드 잠금, 갭 잠금, 차세대 자물쇠)를 설명하십시오.InnoDB 잠금 장치 (공유 잠금, 독점 잠금, 의도 잠금, 레코드 잠금, 갭 잠금, 차세대 자물쇠)를 설명하십시오.Apr 12, 2025 am 12:16 AM

InnoDB의 잠금 장치에는 공유 잠금 장치, 독점 잠금, 의도 잠금 장치, 레코드 잠금, 갭 잠금 및 다음 키 잠금 장치가 포함됩니다. 1. 공유 잠금을 사용하면 다른 트랜잭션을 읽지 않고 트랜잭션이 데이터를 읽을 수 있습니다. 2. 독점 잠금은 다른 트랜잭션이 데이터를 읽고 수정하는 것을 방지합니다. 3. 의도 잠금은 잠금 효율을 최적화합니다. 4. 레코드 잠금 잠금 인덱스 레코드. 5. 갭 잠금 잠금 장치 색인 기록 간격. 6. 다음 키 잠금은 데이터 일관성을 보장하기 위해 레코드 잠금과 갭 잠금의 조합입니다.

열악한 MySQL 쿼리 성능의 일반적인 원인은 무엇입니까?열악한 MySQL 쿼리 성능의 일반적인 원인은 무엇입니까?Apr 12, 2025 am 12:11 AM

MySQL 쿼리 성능이 좋지 않은 주된 이유는 인덱스 사용, 쿼리 최적화에 의한 잘못된 실행 계획 선택, 불합리한 테이블 디자인, 과도한 데이터 볼륨 및 잠금 경쟁이 포함됩니다. 1. 색인이 느리게 쿼리를 일으키지 않으며 인덱스를 추가하면 성능이 크게 향상 될 수 있습니다. 2. 설명 명령을 사용하여 쿼리 계획을 분석하고 Optimizer 오류를 찾으십시오. 3. 테이블 구조를 재구성하고 결합 조건을 최적화하면 테이블 설계 문제가 향상 될 수 있습니다. 4. 데이터 볼륨이 크면 분할 및 테이블 디비전 전략이 채택됩니다. 5. 높은 동시성 환경에서 거래 및 잠금 전략을 최적화하면 잠금 경쟁이 줄어들 수 있습니다.

Composite Index와 여러 단일 열 인덱스를 언제 사용해야합니까?Composite Index와 여러 단일 열 인덱스를 언제 사용해야합니까?Apr 11, 2025 am 12:06 AM

데이터베이스 최적화에서 쿼리 요구 사항에 따라 인덱싱 전략을 선택해야합니다. 1. 쿼리에 여러 열이 포함되고 조건 순서가 수정되면 복합 인덱스를 사용하십시오. 2. 쿼리에 여러 열이 포함되어 있지만 조건 순서가 고정되지 않은 경우 여러 단일 열 인덱스를 사용하십시오. 복합 인덱스는 다중 열 쿼리를 최적화하는 데 적합한 반면 단일 열 인덱스는 단일 열 쿼리에 적합합니다.

MySQL에서 느린 쿼리를 식별하고 최적화하는 방법은 무엇입니까? (느린 쿼리 로그, Performance_schema)MySQL에서 느린 쿼리를 식별하고 최적화하는 방법은 무엇입니까? (느린 쿼리 로그, Performance_schema)Apr 10, 2025 am 09:36 AM

MySQL 느린 쿼리를 최적화하려면 SlowQueryLog 및 Performance_Schema를 사용해야합니다. 1. SlowQueryLog 및 Set Stresholds를 사용하여 느린 쿼리를 기록합니다. 2. Performance_schema를 사용하여 쿼리 실행 세부 정보를 분석하고 성능 병목 현상을 찾고 최적화하십시오.

MySQL 및 SQL : 개발자를위한 필수 기술MySQL 및 SQL : 개발자를위한 필수 기술Apr 10, 2025 am 09:30 AM

MySQL 및 SQL은 개발자에게 필수적인 기술입니다. 1.MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템이며 SQL은 데이터베이스를 관리하고 작동하는 데 사용되는 표준 언어입니다. 2.MYSQL은 효율적인 데이터 저장 및 검색 기능을 통해 여러 스토리지 엔진을 지원하며 SQL은 간단한 문을 통해 복잡한 데이터 작업을 완료합니다. 3. 사용의 예에는 기본 쿼리 및 조건 별 필터링 및 정렬과 같은 고급 쿼리가 포함됩니다. 4. 일반적인 오류에는 구문 오류 및 성능 문제가 포함되며 SQL 문을 확인하고 설명 명령을 사용하여 최적화 할 수 있습니다. 5. 성능 최적화 기술에는 인덱스 사용, 전체 테이블 스캔 피하기, 조인 작업 최적화 및 코드 가독성 향상이 포함됩니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.