Bitmap(BMP)图像信息验证
Bitmap BMP图像信息验证
- 参考文章
- 例程目的
- 一、Bitmap图像结构
- 二、获取文件大小
- 三、获取应用程序路径
- 四、获取目录中所有内容(包括子目录)
- 五、Bitmap图像信息验证
- 六、主函数测试
- 七、测试结果
参考文章
- 在Windows下C语言获取当前应用程序运行路径并获取指定目录下所有文件
- Bitmap(BMP)图像信息分析主要说明带压缩的形式
例程目的
BMP进过压缩以后可能会出现各种各样的问题,比如所图像大小、偏移位置出错,文件大小出错等等问题。因此在使用BMP图片前需要验证BMP图像信息是否有误
一、Bitmap图像结构
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <math.h>
#include <errno.h>
#include <dirent.h>
#include <sys/stat.h>/* 字节对齐 */
#pragma pack(1)/* 位图文件头 */
typedef struct
{u16 FileType; /* 文件类型标记 */u32 FileSize; /* 文件大小 */u16 Reserve1; /* 保留1 */u16 Reserve2; /* 保留2 */u32 ImgDataOffset; /* 图像数据偏移 */
}BitMapFileHeader_TypeDef, * pBitMapFileHeader_TypeDef;/* 位图信息头 */
typedef struct
{u32 InfoHeaderSize; /* 信息头大小 */u32 ImgWidth; /* 图像宽度 */u32 ImgHeight; /* 图像高度 */u16 ColorPlanes; /* 颜色平面数 */u16 PixelsBits; /* 像素位数 */u32 CompresType; /* 压缩类型 */u32 ImgDataSize; /* 图像数据大小 */u32 HorResolut; /* 水平分辨率 */u32 VerResolut; /* 垂直分辨率 */u32 ColorPalette; /* 调色板大小 */u32 ColorImportant; /* 重要颜色数 */
}BitMapInfoHeader_TypeDef, * pBitMapInfoHeader_TypeDef;/* 调色板结构 */
typedef struct
{u8 B;u8 G;u8 R;u8 A;
}BitmapARGB_TypeDef;typedef struct
{BitMapFileHeader_TypeDef FileHeader; /* 位图文件头 */BitMapInfoHeader_TypeDef InfoHeader; /* 位图信息头 */
}BitMapInfo_TypeDef, * pBitMapInfo_TypeDef, * BitMapInfo_TypeDef_t;/* FileSize : 可能和右键属性看到的不一样 */
/* ImgDataSize : 可能不对,ImgDataSize = FileSize - 54 - ColorPalette * 4 */
/* ImgDataOffset : 54 + ColorPalette * 4 */
#pragma pack()
序号 | 地址范围 | 名称 | 大小(Byte) | 说明 |
---|---|---|---|---|
1 | 0000~0001 | 文件标识 | 2 | 文件类别标识符,Windows下为"BM" |
2 | 0002~0005 | 文件大小 | 4 | 整个文件的大小,单位字节 |
3 | 0006~0007 | 保留1 | 2 | 保留1,默认为0 |
4 | 0008~0009 | 保留2 | 2 | 保留2,默认为0 |
5 | 000A~000D | 图像数据偏移地址 | 4 | 从文件开始到图像数据的偏移 |
6 | 000E~0011 | 信息头大小 | 4 | 位图信息头大小,Windows下为40 |
7 | 0012~0015 | 图像宽度 | 4 | 图像宽度,单位像素 |
8 | 0016~0019 | 图像高度 | 4 | 图像高度,单位像素 |
9 | 001A~001B | 颜色平面数 | 2 | 目标设备的平面数,必须为1 |
10 | 001C~001D | 像素位数 | 2 | 每像素的位数,必须为1、2、4、8、24、32 |
11 | 001E~0021 | 压缩类型 | 4 | 压缩类型,必须为0、1、2、3 |
12 | 0022~0025 | 图像数据大小 | 4 | 整个图像数据大小,单位字节,必须为4的倍数 |
13 | 0026~0029 | 水平分辨率 | 4 | 图像水平分辨率,单位像素/米 |
14 | 002A~002D | 垂直分辨率 | 4 | 图像垂直分辨率,单位像素/米 |
15 | 002E~0031 | 调色板大小 | 4 | 色彩表中颜色的索引数,有压缩才有调色板 |
16 | 0032~0035 | 重要颜色数 | 4 | 有压缩时与调色板大小相等,0表示都重要 |
17 | 0036~00xx | 调色板数据 | 4 * N | 调色板规范,每项用四字节ARGB表示,Byte0蓝色,Byte1绿色分量,Byte2红色分量,Byte3填充符(设置为0) |
18 | 00mm~00nn | 图像数据 | N | 该区域大小取决于压缩方式,包含图像所有数据,颜色数量和调色板索引 |
二、获取文件大小
/* 获取文件大小(单位字节) */
static u32 ulGetFileSize(const u8 * fileName)
{struct stat fileSta = {0};u32 size = 0;/* 打开文件 */FILE * readFileHandler = fopen((const char *)fileName, "rb");/* 打开文件失败 */if (readFileHandler == NULL) return 0;/* 移动文件指针到文件末尾位置*/if (fseek(readFileHandler, 0, SEEK_END)) return 0;/* 获取文件流当前的文件位置指针 */size = ftell(readFileHandler);// printf("File Size1:%d\r\n", size);/* 关闭文件 */fclose(readFileHandler);/* 获取文件的状态信息 */if (stat(fileName, &fileSta)) return 0;// printf("File Size2:%d\r\n", fileSta.st_size); /* 两次文件大小的对比 */ if (fileSta.st_size != size) return 0;return size;
}
三、获取应用程序路径
/* 获取应用程序路径 */
static u16 usGet_AppExeDir(u8 * pCurDir, u16 num)
{u8 dir[MAX_PATH] = {0};u16 x = 0, i = 0, len = GetModuleFileName(NULL, dir, MAX_PATH);if (!len) return 0;//dir ==> F:\Project\Demo\AlgoVerify\xDemo-AlgoVerify\AlgoVerify.exefor (i = len - 1; i > 0; i--) {/* 最后一个‘/’为结束符号 */if (dir[i] == '\\' || dir[i] == '/') {dir[i] = '\0';break;}}//pCurDir ==> F:\Project\Demo\AlgoVerify\xDemo-AlgoVerify/* 拷贝路径 */i = (num > i) ? i : num;for (x = 0; x < i; ++x){*pCurDir++ = dir[x];}return i;
}
四、获取目录中所有内容(包括子目录)
/* 获取目录中所有内容(包括子目录) */
static void vGet_DirContent_RecurDirSub(const u8 * pDir, u8 (* pFilesName)[MAX_PATH], u16 * pFileCount, u16 * pMaxMemCount)
{WIN32_FIND_DATA findFileData;HANDLE SeekHandler = INVALID_HANDLE_VALUE; u8 seekDir[MAX_PATH] = {0};u8 fullDir[MAX_PATH] = {0};/* 构造搜索路径,添加"/*"来查找所有文件 */snprintf(seekDir, sizeof(seekDir), "%s\\*", pDir);/* 获取目录中的第一个文件或子目录 */SeekHandler = FindFirstFile(seekDir, &findFileData);if (SeekHandler == INVALID_HANDLE_VALUE) return;do {/* 忽略"."和".."文件目录 */if ((!strcmp(findFileData.cFileName, ".")) || (!strcmp(findFileData.cFileName, ".."))) continue;/* 构建当前文件或目录的完整路径 */snprintf(fullDir, sizeof(fullDir), "%s\\%s", pDir, findFileData.cFileName);/* 目录 */if (findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {/* 递归读取子目录 */vGet_DirContent_RecurDirSub(fullDir, pFilesName, pFileCount, pMaxMemCount);} else {if (*pFileCount < *pMaxMemCount) strcpy(pFilesName[*pFileCount], fullDir);/* 是文件,打印文件路径 */*pFileCount += 1;// printf("%-2u File:%s\r\n", *pFileCount, fullDir);}} while (FindNextFile(SeekHandler, &findFileData) != 0);/* 关闭目录句柄 */FindClose(SeekHandler);
}
五、Bitmap图像信息验证
主要验证的信息如下:
- 文件类型
- 文件大小
- Bitmap 图像数据偏移
- Bitmap 图像数据大小
/* 图像验证 */
static void vBitmapVerify(const u8 * pDir, u8 (* pFilesName)[MAX_PATH], u16 * pFileCount, u16 * pMaxMemCount)
{BitMapInfo_TypeDef BitMapInfo = {0};u8 curExeDir[MAX_PATH] = {0};FILE * imgFileHandler = NULL;u16 i = 0, count = 0;u32 size = 0, temp = 0;/* 获取应用程序路径 */if (usGet_AppExeDir(curExeDir, (sizeof(curExeDir) / sizeof(curExeDir[0]))) < 2){printf("Get Application Directory Fail......\r\n");return;}/* 拼接目录 */strcat(curExeDir, pDir);//strncatprintf("Get Directory Content : %s\r\n\r\n", curExeDir);/* 获取目录中所有内容(包括子目录) */*pFileCount = 0;vGet_DirContent_RecurDirSub((const u8 *)curExeDir, pFilesName, pFileCount, pMaxMemCount);if (!(*pFileCount)){printf("Directory Content Is Empty......\r\n");return;}/* 验证图像信息 */count = *pFileCount;for (i = 0; i < count; ++i){/* 显示文件全路径 */printf("%05u/%05u ==> %s\r\n", (i + 1), count, pFilesName[i]);memset((void *)(&BitMapInfo), 0, sizeof(BitMapInfo_TypeDef));/* 验证文件类型 */if ((strstr(pFilesName[i], ".bmp") == NULL) && (strstr(pFilesName[i], ".BMP") == NULL)){printf("Not Bitmap File......\r\n");continue;}/* 关闭文件 */if (imgFileHandler) fclose(imgFileHandler);imgFileHandler = NULL;/* 打开文件 */imgFileHandler = fopen(pFilesName[i], "rb");if (imgFileHandler == NULL){printf("Open File Fail......\r\n");continue;}/* 读取图像信息头 */if (!fread(&BitMapInfo, sizeof(BitMapInfo_TypeDef), 1, imgFileHandler)){printf("Read BitMap Info Fail......\r\n");continue;}/* 获取图像大小 */size = ulGetFileSize((const u8 *)pFilesName[i]);if (!size){printf("Get BitMap Size Error......\r\n");continue;}/* 图像大小验证 */if (BitMapInfo.FileHeader.FileSize != size){printf("BitMap Size Error......%u %u\r\n", BitMapInfo.FileHeader.FileSize, size);continue;}/* 图像数据偏移验证 */temp = sizeof(BitMapInfo_TypeDef) + (BitMapInfo.InfoHeader.ColorPalette << 2);if (temp != BitMapInfo.FileHeader.ImgDataOffset){printf("BitMap Data Offset Fail......%u %u\r\n", BitMapInfo.InfoHeader.ImgDataSize, temp);continue;}/* 图像数据大小验证 */temp = BitMapInfo.FileHeader.FileSize - sizeof(BitMapInfo_TypeDef) - (BitMapInfo.InfoHeader.ColorPalette << 2);if (BitMapInfo.InfoHeader.ImgDataSize != temp){printf("BitMap Data Size Fail......%u %u\r\n", BitMapInfo.InfoHeader.ImgDataSize, temp);continue;}}/* 关闭文件 */if (imgFileHandler){fclose(imgFileHandler);}
}
六、主函数测试
int main(int argc, char *argv[])
{u16 FileCount = 0, MaxMemCount = 0;u8 FilesName[500][MAX_PATH] = {0};MaxMemCount = sizeof(FilesName) / sizeof(FilesName[0]);vBitmapVerify((const u8 *)"\\xDemoUI", FilesName, &FileCount, &MaxMemCount);printf("\r\n\r\n\r\n");printf("Compiler Date : %s %s\r\n", __DATE__, __TIME__);while(1);return 0;
}
七、测试结果
相关文章:
Bitmap(BMP)图像信息验证
Bitmap BMP图像信息验证 参考文章例程目的一、Bitmap图像结构二、获取文件大小三、获取应用程序路径四、获取目录中所有内容(包括子目录)五、Bitmap图像信息验证六、主函数测试七、测试结果 参考文章 在Windows下C语言获取当前应用程序运行路径并获取指定目录下所有文件Bitmap…...
Faster R-CNN
文章目录 摘要Abstract1. 引言2. 框架2.1 RPN2.1.1 网络结构2.1.2 损失函数2.1.3 训练细节 2.2 训练过程 3. 创新点和不足3.1 创新点3.2 不足 参考总结 摘要 Faster R-CNN是针对Fast R-CNN缺点改进的目标检测模型。为了解决候选区域生成耗时长的问题,Faster R-CNN提…...
MySQL数据库锁
MySQL中读写不互斥(前提是没有使用串行化隔离级别),但是写写操作要互斥才行,MySQL中使用锁机制来实现写写互斥。 按照锁的粒度可以分为:全局锁、表锁、行锁以及其他位于二者之间的间隙锁。 全局锁 锁定整个数据库&…...
树莓派A+安装lnmp-第一步,安装mariadb
20:26 2024/12/27 第一件事情,当然是超频!!! raspi-config 4 Performance Options,选择P1 Overclock,可配置超频 不要贪心,选择900就可以!!! rootpia4:~#…...
C++:单例模式
创建自己的对象,同时确保对象的唯一性。 单例类只能有一个实例☞静态成员static☞静态成员 必须类外初始化 单例类必须自己创建自己的唯一实例 单例类必须给所有其他对象提供这一实例 静态成员类内部可以访问 构造函数私有化☞构造函数私有外部不能创建&#x…...
【数据结构】数据结构整体大纲
数据结构用来干什么的?很简单,存数据用的。 (这篇文章仅介绍数据结构的大纲,详细讲解放在后面的每一个章节中,逐个击破) 那为什么不直接使用数组、集合来存储呢 ——> 如果有成千上亿条数据呢ÿ…...
网页数据的解析提取之Beautiful Soup
前面博客介绍了正则表达式的相关用法,只是一旦正则表达式写得有问题,得到的结果就可能不是我们想要的了。而且每一个网页都有一定的特殊结构和层级关系,很多节点都用id或 class 作区分所以借助它们的结构和属性来提取不也可以吗? 本篇博客我…...
Ai写作人工智能官网模板源码
Mortal是响应式的Tailwind CSS 模板,适用于AI写作和文案智能生成网站。 可用于撰写博客内容、数字广告文案、技术写作、SEO内容、登陆页面文案、社交媒体内容、电子邮件营销、网站文案等。使用世界上流行的响应式CSS框架Tailwind CSS、HTML5、CSS3 和 Javascript构…...
VSCode 插件开发实战(七):插件支持了哪些事件,以及如何利用和监听这些事件
前言 VSCode 作为现代开发者的首选编辑器之一,其核心优势在于其高度可扩展性。通过自定义插件,开发者可以根据自己的需求对编辑器进行功能扩展和优化。在这些插件开发过程中,事件处理和监听机制尤为重要,它们允许插件在特定事件发…...
现货量化合约跟单系统开发策略指南
随着加密货币市场的日益发展,量化交易和合约跟单已经成为了投资者在市场中获取稳定收益的重要手段。现货量化合约跟单系统作为一种自动化交易工具,可以帮助用户自动执行交易策略,同时也能跟随成功的交易者进行复制交易,从而降低投…...
Flink的Watermark水位线详解
一、Flink的时间语义 Flink有如下三种时间语义: Flink的三种时间语义-CSDN博客 在实际应用中,一般会采用事件时间语义。而正如前面所说的,事件时间语义需要等窗口的数据全部到齐了,才能进行窗口计算。那么,什么时候数…...
香港 GPU 服务器托管引领 AI 创新,助力 AI 发展
在当今科技飞速发展的时代,中国人工智能市场呈现出蓬勃发展的态势,对高性能计算资源的需求日益增长,而香港 GPU 服务器托管服务凭借其卓越的优势,成为众多企业的首选,同时其三地灾备方案更是为企业数据安全和业务连续性…...
FFmpeg来从HTTP拉取流并实时推流到RTMP服务器
当使用FFmpeg来从HTTP拉取流并实时推流到RTMP服务器时,你可以使用以下命令: ffmpeg -i http://输入流地址 -c:v copy -c:a copy -f flv rtmp://RTMP服务器地址/应用名称/流名称 这是一个基本的命令示例,其中: - -i http://输入流地…...
vue 集成 webrtc-streamer 播放视频流 - 解决阿里云内外网访问视频流问题
资料: 史上最详细的webrtc-streamer访问摄像机视频流教程-CSDN博客 webrtc目录 前端集成 html文件夹里的webrtcstreamer.js,集成到前端,可以访问webrtc,转换rtsp为webrtc视频流,在前端video中播放 <videoref&quo…...
Spring创建异步线程池方式
在Java 11中,可以通过多种方式创建异步线程池,包括使用原生的ExecutorService和Spring的异步支持(如Async注解结合线程池)。以下是具体实现方式。 方式 1:使用原生ExecutorService Java 11 的ExecutorService提供灵活…...
《PHP MySQL 插入数据》
《PHP MySQL 插入数据》 介绍 PHP是一种广泛使用的服务器端脚本语言,而MySQL是一种流行的关系型数据库管理系统。在Web开发中,经常需要将用户输入的数据存储到数据库中。本文将详细介绍如何使用PHP和MySQL实现数据的插入操作。 环境准备 在开始之前&…...
2022博客之星年度总评选开始了
作者简介:陶然同学 专注于Java领域开发 熟练掌握Java、js等语言的“Hello World” CSDN原力计划作者、CSDN内容合伙人、Java领域优质作者、Java领域新星作者、51CTO专家、华为云专家、阿里云专家等 🎬 陶然同学🎥 由 陶然同学 原创&#…...
0055. shell命令--useradd
目录 55. shell命令--useradd 功能说明 语法格式 选项说明 选项 退出值 相关文件 /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/skel/ /etc/login.defs /etc/default/useradd 实践操作 注意事项 55. shell命令--useradd 功能说明 useradd 命令是 Lin…...
HTML5适配手机
要使 HTML5 网站适配手机设备,您可以遵循以下几个步骤和最佳实践: 1. 使用视口(Viewport) 在 HTML 文档的 <head> 部分添加视口元标签,以确保页面在移动设备上正确缩放和显示: <meta name"…...
网络安全 | 5G网络安全:未来无线通信的风险与对策
网络安全 | 5G网络安全:未来无线通信的风险与对策 一、前言二、5G 网络的技术特点2.1 超高速率与低延迟2.2 大容量连接与网络切片 三、5G 网络面临的安全风险3.1 网络架构安全风险3.2 设备终端安全风险3.3 应用场景安全风险3.4 用户隐私安全风险 四、5G 网络安全对策…...
Markov test笔记
补充知识 来源于数学之美第五章: 到了 19 世纪,概率论的发展从相对静止的随机变量的研究发展到随机变量的时间序列 ( s 1 , s 2 , s 3 , … ) (s_1, s_2, s_3, \dots) (s1,s2,s3,…),即随机过程(动态的)。这在…...
docker 搭建集群
准备3台机器: #dockermaster 192.168.31.150 sudo hostnamectl set-hostname dockermaster #初始化主节点 docker swarm init --advertise-addr 192.168.31.150 #查看集群是否搭建成功 docker node ls #dockernode1 192.168.31.151 sudo hostnamectl set-hostname …...
C# WPF读写STM32/GD32单片机Flash数据
1.安装jlink 下载你需要的Jlink版本 JLink-Windows-V792k-x86-64 JLink-Windows-V810k-x86-64 https://download.csdn.net/download/hmxm6/90178195 2.Visual Studio创建WPF项目 如果没有这个选项请看 https://blog.csdn.net/hmxm6/article/details/132914337 创建完…...
[图形渲染]【Unity Shader】【游戏开发】 Shader数学基础17-法线变换基础与应用
在计算机图形学中,法线(normal) 是表示表面方向的向量。它在光照、阴影、碰撞检测等领域有着重要作用。本文将介绍如何在模型变换过程中正确变换法线,确保其在光照计算中的正确性,特别是法线与顶点的变换问题。 1. 法线与切线的基本概念 法线(Normal Vector) 法线(或…...
MySQL外键类型与应用场景总结:优缺点一目了然
前言: MySQL的外键简介:在 MySQL 中,外键 (Foreign Key) 用于建立和强制表之间的关联,确保数据的一致性和完整性。外键的作用主要是限制和维护引用完整性 (Referential Integrity)。 主要体现在引用操作发生变化时的处理方式&…...
Axure10
如果还是不行就将字体图标安装在控制面板–字体下 打开原型了之后,icon没有 一定要将字体库放到–》控制面板\外观和个性化\字体 里面...
数据结构(单向循环链表)
循环单向链表 所谓的循环,指得是将链表末尾节点的后继指针指向头结点。比如,单向链表变成循环链表的示意 图如下所示: 循环链表的操作跟普通链表操作基本上是一致的,只要针对循环特性稍作修改即可。 sclist.h #ifndef __SCLIST_…...
springboot项目搭建
springboot搭建 问题描述不够清晰,无法提供具体的代码解决方案。"springboot搭" 这个表述不明确是要进行什么操作,比如搭建项目、搭建环境、搭建服务等。 如果你是想要创建一个基本的Spring Boot项目,可以使用Spring Initializr&…...
五模型对比!Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量时间序列预测
目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 光伏功率预测!五模型对比!Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量时间序列预测(Matlab2023b 多输入单输出) 1.程序已经调试好,替换数据集后,仅运…...
02-18.python入门基础一基础算法
(一)排序算法 简述: 在 Python 中,有多种常用的排序算法,下面为你详细介绍几种常见的排序算法及其原理、实现代码、时间复杂度以及稳定性等特点,并对比它们适用的场景。 冒泡排序(Bubble Sor…...
条款19 对共享资源使用std::shared_ptr
目录 一、std::shared_ptr 二、std::shared_ptr性能问题 三、control block的生成时机 四、std::shared_ptr可能存在的问题 五、使用this指针作为std::shared_ptr构造函数实参 六、std::shared_ptr不支持数组 一、std::shared_ptr<T> shared_ptr的内存模型如下图&…...
TCP-UDP调试工具推荐:Socket通信测试教程(附详细图解)
前言 在网络编程与应用开发中,调试始终是一项不可忽视的重要环节。尤其是在涉及TCP/IP、UDP等底层网络通信协议时,如何确保数据能够准确无误地在不同节点间传输,是许多开发者关注的核心问题。 调试的难点不仅在于定位连接建立、数据流控制及…...
算法练习——模拟题
前言:模拟题的特点在于没有什么固定的技巧,完全考验自己的代码能力,因此有助于提升自己的代码水平。如果说一定有什么技巧的话,那就是有的模拟题能够通过找规律来简化算法。 一:替换所有问号 题目要求: 解…...
Windows下播放文件作为麦克风声源的一种方式
近期测试一种外语的ASR识别成功率,样本素材是懂这门语言的同事录制的mp3文件。测试client端原本是从麦克风拾音生成媒体流的。 这样,就需要想办法把mp3文件转换为测试client的输入声音。物理方式上,可以用一根音频线,把电…...
微信流量主挑战:用户数30!新增文档转化功能,解决docker运行jar包报错SimSun找不到的问题(新纪元5)
哎呀,今天忙到飞起,文章晚点更新啦!不过好消息是,我们的小程序用户终于突破30啦,感谢大家的支持!而且,大家期待已久的文档转化功能明天就要上线啦,目前支持word转pdf,pdf…...
BUU LFI COURSE 1
BUU LFI COURSE 1 启动环境 isset函数检查输入是否为空,使用GET传参file,然后赋值给$str 在调用传参内容 我们是找flag那我们输入?file/flag试试 输入后就得到了flag flag{8c108da2-a579-4ec4-b447-92d9265b8dd4}...
Spark SQL DML语句
【图书介绍】《Spark SQL大数据分析快速上手》-CSDN博客 《Spark SQL大数据分析快速上手》【摘要 书评 试读】- 京东图书 Spark本地模式安装_spark3.2.2本地模式安装-CSDN博客 DML(Data Manipulation Language,数据操作语言)操作主要用来对…...
逻辑控制语句
一、逻辑控制语句 条件判断 if循环 for、while 二、条件判断 if 1、语法 if 条件:条件为真的操作条件为真的操作 else:条件为假的操作条件为假的操作 data_01 int(input("数字: "))if data_01 > 10:print("ok!!!")print("正确!!!")prin…...
PlasmidFinder:质粒复制子的鉴定和分型
质粒(Plasmid)是一种细菌染色体外的线性或环状DNA分子,也是一种重要的遗传元素,它们具有自主复制能力,可以在细菌之间传播,并携带多种重要的基因(如耐药基因与毒力基因等)功能。根据质粒传播的特性…...
OSCP打靶大冒险之Solidstate:多端口获取信息,shell逃逸,计划任务提权
声明! 学习资源来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&a…...
【Java-tesseract】OCR图片文本识别
文章目录 一、需求二、概述三、部署安装四、技术细节五、总结 一、需求 场景需求:是对识别常见的PNG,JPEG,TIFF,GIF图片识别,环境为离线内网。组件要求开源免费,并且可以集成Java生成接口服务。 二、概述 我不做选型对比了,我筛选测试了下Tesseract(v…...
sqlserver 数据库误删-用mdf和ldf文件恢复
1.准备好需要恢复的文件 2.安装sqlserver数据库,安装设置的实例目录要记清 3.将需要恢复的文件拷到实例所在目录下的DATA文件夹下 D:\安装时的实例目录\MSSQL10_50.MSSQLSERVER\MSSQL\DATA 4.打开 SQL Server Management Stadio执行以下命令 CREATE DATABASE 数…...
机器学习算法基础知识1:决策树
机器学习算法基础知识1:决策树 一、本文内容与前置知识点1. 本文内容2. 前置知识点 二、场景描述三、决策树的训练1. 决策树训练方式(1)分类原则-Gini(2)分类原则-entropy(3)加权系数-样本量&am…...
使用EasyExcel来动态生成表头
本文记录下使用EasyExcel来动态生成表头 文章目录 概述 概述...
梳理你的思路(从OOP到架构设计)_介绍Android的Java层应用框架03
目录 1、认识Android框架的实践技术 4个嫡系基类 誰來創建子類的對象呢? 2、Intent-based Programming 技术 嫡系应用子类之间如何互相沟通呢? 1、认识Android框架的实践技术 4个嫡系基类 • Android框架里提供了4个嫡系的基类,包括:…...
Html——10 关键字和描述
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>淘宝网</title><meta name"keywords" content"我要自学网,自学HTML,自学CSS"/><meta name"description" content"要设置…...
汇编学习笔记
汇编 1. debug指令 -R命令(register) 查看、改变CPU寄存器的内容 r ax 修改AX中的内容 -D命令(display) 查看内存中的内容 -E命令(enter) 改写内存中的内容 -U命令(unassenble反汇编) 将内存中的机器指令翻译成汇编指令 -T命令(trace跟踪) 执行一条机器指令 -A命令…...
【C++】统计正整数的位数:题目解析与代码优化
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目描述**题目要求:统计正整数的位数** 💯我的代码实现**核心逻辑解析** 💯老师的代码实现**老师代码逻辑解析** 💯我的代码…...
CF2043b-B. Digits
题目链接 题意:给定两个整数n、d,要求找出排列成n!个d之后的数可以被1-9中奇数整除的数 题解: 主要是考察分类讨论: 被3整除,当d能被3整除时一定成立或者n > 3,当n > 3时n!一定包含因数3 被5整除&a…...
[文献阅读]ReAct: Synergizing Reasoning and Acting in Language Models
文章目录 摘要Abstract:思考与行为协同化Reason(Chain of thought)ReAct ReAct如何协同推理 响应Action(动作空间)协同推理 结果总结 摘要 ReAct: Synergizing Reasoning and Acting in Language Models [2210.03629] ReAct: Synergizing Reasoning an…...