bmp 10.27 范鲁艳

ROS学习【11】-----基于ubuntu16.04上Gazebo机器人环境搭建的传感器仿真(camera、kinect、Lidar),并通过Rviz进行数据显示 ROS学习-----基于ubuntu16.04上Gazebo机器人环境搭建的传感器仿真目录一、Gazebo环境搭建前的准备1、将搭建模型下载到我们的gazebo环境下2、升级我们的gazebo版本二、创建配置launch文件参数的world文件1、进入工程包mbot_gazebo2、创建文件夹worlds3、进入该文件夹4、创建playground.world文件5、创建room.world文件三... 阅读详情

      这几天一直都在忙关于 BMP 的操作问题,以前从来不知道它是个什么东东,所以感觉很吃力。到现在为止很多东西还是不明白,期间也怀疑自己能否胜任这样的学习,但是想想做什么容易那,做任何事情都是需要付出努力的啊。所以就把这些天一些微小的收获拿出来和大家共享。

     之前听祝勇讲过一次关于BMP 的课,但是那时云里雾里的不知所云,只知道是图象的一种格式包含几个部分:文件头/信息头/颜色表/位图数据。

下面把我找到的一些资料归结一下:

1. BMP文件组成
BMP
文件由文件头、位图信息头、颜色信息和图形数据四部分组成。
2. BMP
文件头
BMP
文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。

其结构定义如下:

typedef struct tagBITMAPFILEHEADER
{
WORD   bfType; //
位图文件的类型,必须为BM
DWORD  bfSize; //
位图文件的大小,以字节为单位
WORD   bfReserved1; //
位图文件保留字,必须为0
WORD   bfReserved2; //
位图文件保留字,必须为0
DWORD  bfOffBits; //
位图数据的起始位置,以相对于位图
//
文件头的偏移量表示,以字节为单位
} BITMAPFILEHEADER;

3.
位图信息头

BMP
位图信息头数据用于说明位图的尺寸等信息。
typedef   struct  tagBITMAPINFOHEADER{
DWORD   biSize; //
本结构所占用字节数
LONG     biWidth; //
位图的宽度,以像素为单位
LONG     biHeight; //
位图的高度,以像素为单位
WORD   biPlanes; //
目标设备的级别,必须为1
WORD    biBitCount//
每个像素所需的位数,必须是1(双色),
                                   // 4(16
色),8(256色)或24(真彩色)之一
DWORD  biCompression; //
位图压缩类型,必须是 0(不压缩),
                                   // 1(BI_RLE8
压缩类型)或2(BI_RLE4压缩类型)之一
DWORD   biSizeImage; //
位图的大小,以字节为单位
LONG      biXPelsPerMeter; //
位图水平分辨率,每米像素数
LONG      biYPelsPerMeter; //
位图垂直分辨率,每米像素数
DWORD    biClrUsed;//
位图实际使用的颜色表中的颜色数
DWORD    biClrImportant;//
位图显示过程中重要的颜色数
} BITMAPINFOHEADER;

4.
颜色表
颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD类型的结构,定义一种颜色。RGBQUAD结构的定义如下:

typedef struct tagRGBQUAD {
BYTE   rgbBlue;//
蓝色的亮度(值范围为0-255)
BYTE   rgbGreen; //
绿色的亮度(值范围为0-255)
BYTE   rgbRed; //
红色的亮度(值范围为0-255)
BYTE   rgbReserved;//
保留,必须为0
} RGBQUAD;
颜色表中RGBQUAD结构数据的个数有biBitCount来确定:
当biBitCount=1,4,8时,分别有2,16,256个表项;
当biBitCount=24时,没有颜色表项。
位图信息头和颜色表组成位图信息,BITMAPINFO结构定义如下:
typedef struct tagBITMAPINFO {
BITMAPINFOHEADER bmiHeader; //
位图信息头
RGBQUAD bmiColors[1]; //
颜色表
} BITMAPINFO;


5.
位图数据
位图数据记录了位图的每一个像素值,记录顺序是在扫描行内是从左到右,扫描行之间是从下到上。位图的一个像素值所占的字节数:

当biBitCount=1时,8个像素占1个字节;
当biBitCount=4时,2个像素占1个字节;
当biBitCount=8时,1个像素占1个字节;
当biBitCount=24时,1个像素占3个字节;
Windows
规定一个扫描行所占的字节数必须是
4
的倍数(即以long为单位),不足的以0填充,
一个扫描行所占的字节数计算方法:
DataSizePerLine= (biWidth* biBitCount+31)/8;
//
一个扫描行所占的字节数
DataSizePerLine= DataSizePerLine/4*4; //
字节数必须是4的倍数
位图数据的大小(不压缩情况下):
DataSize= DataSizePerLine* biHeight;

     看了这些以后又对位图有了一些更加深入的理解,也算是收获把。

  关于位图的打开与显示问题有下面这些了解:

 


显示一张位图,基本的有以下三种形式:  
   
 
一、位图资源的显示(设资源ID为IDB——BITMAP1程序如下)  
   
  {  
   
          CBitmap   bitmap;  
   
          CBitmap*   pOldBitmap;  
   
          CDC   MemDC;  
   
          MemDC.CreateCompatibleDC(&dc);   ///
建立与显示设备兼容的内存设备场境  
   
          bitmap.LoadBitmap(IDB_BITMAP1);   ///
取出位图资源  
   
          pOldBitmap=MemDC.SelectObject(&bitmap);   ///
将位图选入内存场境  
   
          dc.BitBlt(50,50,48,48,&MemDC,0,0,SRCCOPY);   ///
显示它  
   
          MemDC.SelectObject(pOldBitmap);  
   
  }  
 
二、创建位图,然后在里面画上图形,再显示它  
   
  {  
   
          CBitmap   bitmap;  
   
          CBitmap*   pOldBitmap;  
   
          CDC   MemDC;  
   
          int   i;  
   
          CPen   pen;  
   
          CPen*   oldpen;  
   
          MemDC.CreateCompatibleDC(&dc);   ///
建立与显示设备兼容的内存设备场境  
   
          bitmap.CreateCompatibleBitmap(&dc,100,100);///
建立与显示设备兼容的位图  
   
          pOldBitmap=MemDC.SelectObject(&bitmap);   ///
将位图选入内存场境  
   
          for(i=0;i<100;i++)  
   
          {   ///
画100根线  
   
                pen.CreatePen(PS_SOLID,1,   RGB(0,0,i*2+55));          
   
                oldpen=MemDC.SelectObject(&pen);  
   
                MemDC.MoveTo(0,i);  
   
                MemDC.LineTo(100,i);  
   
                MemDC.SelectObject(oldpen);  
   
                pen.DeleteObject();  
   
          }  
   
          dc.BitBlt(50,50,100,100,&MemDC,0,0,SRCCOPY);   ///
显示它  
   
          MemDC.SelectObject(pOldBitmap);  
   
  }  
 
三、显示磁盘上的外部BMP文件  
   
  {  
   
        HBITMAP   bitmap;  
   
        /////
读取位图文件SAMPLE.BMP  
   
        bitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),"SAMPLE.BMP",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);  
   
        ASSERT(bitmap);  
   
        HBITMAP   OldBitmap;  
   
        CDC   MemDC;CRect   rect;  
   
        MemDC.CreateCompatibleDC(&dc);  
   
        GetClientRect(rect);  
   
        OldBitmap=(HBITMAP)MemDC.SelectObject(bitmap);  
   
        ///
显示它  
   
        dc.BitBlt(20,20,rect.Width()-20,rect.Height()-20,&MemDC,0,0,SRCCOPY);  
   
        MemDC.SelectObject(OldBitmap);  
   
  }
 
 

 

 但是又查了一些资料说打开位图用的多的方法还有建立一个 cdib类,类里面封装了所需要的函数:

#if !defined(AFX_FG_DIB_H__873E62A0_D6E8_4151_9F0F_815768446735__INCLUDED_)
#define AFX_FG_DIB_H__873E62A0_D6E8_4151_9F0F_815768446735__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class CFG_DIB : public CObject 
{
public:
 //默认构造函数
 CFG_DIB();
 //构造函数,根据图象宽和高,以及记录每个象素所需字节数来初始化
 CFG_DIB(int width, int height, int nBitCounts);
 virtual ~CFG_DIB();

public:
 HBITMAP m_hBitmap;
 LPBYTE m_lpDIBits;     //DIB位的起始位置
 LPBITMAPINFOHEADER m_lpBMPHdr;  //BITMAPINFOHEADER信息
 LPVOID m_lpvColorTable;    //颜色表信息
 HPALETTE m_hPalette;    //调色板
 int m_nMode;      //内存模式,0为普通模式,1为内存映射模式

private:
 DWORD m_dwImageSize;    //非BITMAPINFOHEADER或BITMAPFILEHEADER的位
 int m_nColorEntries;    //颜色表项的个数

 HANDLE m_hFile;
 HANDLE m_hMap;
 LPVOID m_lpvFile;

//显示参数
public:
 CPoint m_Dest;      //目的矩形域的左上角坐标
 CSize m_DestSize;     //显示矩形的宽度和高度
 CPoint m_Src;      //原矩形左下角坐标
 CSize m_SrcSize;     //原矩形宽度和高度

public:
 void InitDestroy();       //初始化变量
 void ComputePaletteSize(int nBitCounts); //计算调色板大小
 void ComputeImage();      //计算图象大小

 //从BMP文件中读入DIB信息
 BOOL ReadFile(CFile* pFile);
 //从BMP文件中读入DIB信息,与ReadFile不同的是使用CreateSection创建位图位
 BOOL ReadSection(CFile* pFile, CDC* pDC = NULL);
 //将DIB写入文件,保存成BMP图片格式
 BOOL WriteFile(CFile* pFile);
 //创建新的位图文件,根据参数width,height,nBitCounts分配内存空间
 BOOL NewFile(int width, int height, int nBitCounts);
 //关闭位图文件
 BOOL CloseFile();

 //显示位图
 BOOL Display(CDC* pDC);

 HBITMAP CreateBitmap(CDC* pDC);    //用DIB创建DDB
 HBITMAP CreateSection(CDC* pDC = NULL);  //创建位图位数据,即象素数据
 //如果DIB没有颜色表,可以用逻辑调色板
 BOOL SetLogPalette(CDC* pDC);
 //如果DIB有颜色表,可以创建系统调色板
 BOOL SetWinPalette();
 //把DIB对象的逻辑调色板选进设备环境里,然后实现调色板
 UINT UseLogPalette(CDC* pDC);

 //得到BitmapInfoHeader的大小,包含颜色表数据
 int GetHeaderSize()
 {
  return sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorEntries;
 }
 //得到图像的高度
 int GetHeight()
 {
  if(m_lpBMPHdr == NULL) return 0;
  return m_lpBMPHdr->biHeight;
 }
 //得到图像的宽度
 int GetWidth()
 {
  if(m_lpBMPHdr == NULL) return 0;
  return m_lpBMPHdr->biWidth;
 }
 //得到图像的大小
 int GetImageSize()
 {
  return m_dwImageSize;
 }
 long GetLineBit();  //得到一行的象素数
 void SetMode(int mode); //设置内存模式
 void ReleaseMapFile(); //释放内存映射文件
};

#endif // !defined(AFX_FG_DIB_H__873E62A0_D6E8_4151_9F0F_815768446735__INCLUDED_)

心里很郁闷啊任务还没有完成,不说了 ,今天就写到这里!!希望大家多帮助!!在此先谢过了!!

 

第十六篇:Camx IFE 、OPE 各 port口功能定义 需要注意的是,类似 CSLTFEPortIdRawDump 是没有downscale功能的,所以如果遇到fov不正确的问题,可以排除下TFE这边的 output port是否被接到了 CSLTFEPortIdRawDump 上面来。我们知道Camx 的IFE 、OPE有不少的output port,各个port是有哪些功能的呢?老一点的框架平台,采用的TEF、OPE。 阅读详情

相关推荐

电子工程师日记:用STM32F4的DCMI接口驱动OV2640时,那些数据同步的坑我都踩过了

本文分享了使用STM32F4的DCMI接口驱动OV2640摄像头时,在数据同步方面遇到的典型问题与解决方案。作者通过示波器分析PCLK相位、纠正DCMI_CR寄存器中同步信号极性的配置误区,并排查DMA传输瓶颈与FIFO溢出,最终实现了稳定的图像采集。文章为嵌入式工程师提供了宝贵的硬件调试经验与配置清单。

weixin_29189377的博客 156

【数据结构】基于比较的排序算法 - 交换排序

本文介绍交换排序中的冒泡排序与快速排序。冒泡排序通过相邻元素比较交换,实现升序,时间复杂度最坏为O(N²),空间复杂度O(1),稳定且适合小规模有序数据。快速排序采用分治思想,以基准值划分区间,平均时间复杂度O(N log N),空间复杂度O(log N),但不稳定,实际应用中性能优异,可通过随机基准、小区间优化等提升效率。

careathers的博客 327

AI工程化之生成式UI & A2UI(二)

本文介绍了生成式UI框架A2UI的架构设计与核心实现。项目采用AI协作开发模式,通过ATDD(AI驱动的测试驱动开发)确保代码质量。前端SDK基于zustand实现框架无关的状态管理,包含协议解析器、存储管理、渲染器等核心模块。重点展示了基础store构建、A2UI协议解析器的实现过程,包括mock数据准备、测试用例生成和可视化调试。项目采用monorepo管理,利用vite实现高效开发构建。整个系统设计遵循模块化原则,通过清晰的接口定义实现各组件解耦,为后续功能扩展打下基础。

qq_34306228的博客 405

pandas 深度入门:从数据结构到一份真实销售报表

本文系统讲解Pandas核心应用,从三分钟安装到完整月度报表生成,涵盖数据读取、清洗、筛选、分组聚合、表连接、透视表与时间序列等13个关键环节。强调“先看数据再动手”,掌握Series/DataFrame/Index结构本质,熟练运用loc/iloc、merge校验、agg/transform区别,通过真实案例实现高效报表自动化,告别手动Excel操作。最后提供性能优化与高频报错解决方案,助力读者快速上手,真正实现“写二十行代码,跑三秒出结果”。

信息安全领域优质创作者|操作系统领域专家 264

MATLAB计算干旱指标:SPI、SRI、SWAP、DWAAI、EDI等

简介各种干旱指数以及其MATLAB代码实现

WW、forever的博客 2万+

数学建模之0—1规划(Python)

目录 1、概述 (1)知识框架 (2)线性整数规划模型 (3)分支定界法 2、案例 (1)案例1​ (2)案例2 3、遗传算法—sko-GA包实现 (1)代码 (2)结果 4、PuLp实现 (1)代码 (2)结果 5、致谢 1、概述 (1)知识框架 (2)线性整数规划模型 (3)分支定界法 2、案例 (1)案例1 (2)案例2 3、遗传算法—sko-GA包...

weixin_46039719的博客 4108

工单系统的数据结构化:故障分类体系设计与报表可用性

很多团队上完工单系统半年,会发现一个尴尬的事实:单子照常在走,报表却始终出不来。导出的 Excel 几千行,看不出趋势、算不出口径、答不了"哪类故障占大头"。问题几乎都不在系统,而在数据模型的第一层——。这篇文章把这件事拆开讲:自由文本为什么会失效、分类体系怎么分层、表怎么建、老数据怎么迁、上线前怎么验收。

ITyunwei0987的博客 278

龙虾机器人(OpenClaw)本地部署完全技术指南

在开始部署之前,我们需要明确部署的对象。通常所说的“龙虾机器人”指的是开源项目 OpenClaw(曾用名:Clawdbot、Moltbot)。它由程序员彼得·斯坦伯格开发,是一个开源的、可本地部署的通用型AI代理系统。与ChatGPT等对话式AI不同,OpenClaw被赋予了操作系统的权限:它可以执行终端命令、读写文件、操控浏览器、安装软件,甚至通过MCP协议调用外部工具。

huanghm88的专栏 2万+

数据结构:9.Map和Set

有的讲解会说这里key是标识作用,这种说法其实没有太大意义,就算知道了他是标识value的作用又如何,在实际的使用过程中,我们只会根据具体的效果选择使用的方法等,不会执着于“标识”这种说法。2.由于哈希函数的设计原则太过理论,它仅仅是在认为:这些通过关键码算出来的index不同 的情况下设计的,然而这种理论化的设计原则在遇到冲突时,恰恰就出现了问题,而我们能做的,就是降低冲突率。虽然哈希表的使用过程中存在冲突,但是在实际的使用过程中,哈希表的冲突率是不高的,冲突的个数是可控的。

2602_95646088的博客 191

在 ABAP 平台配置 OAuth 2.0 Client(OA2C_CONFIG):一份可落地的全景实践

本文详细介绍了在ABAP平台中配置OAuth 2.0客户端的完整流程。重点讲解了四种授权类型(Client Credentials、Authorization Code、SAML 2.0 Bearer Assertion、Resource Owner Password Credentials)的适用场景和配置要点,以及客户端认证的三种方式(Client Secret、Client Certificate、mTLS)。文章提供了操作步骤、排错建议和工程实践指导,包括端点配置、回调地址管理、scopes设置等关

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 354

基于Simulink环境,提供一个关于如何对DC-DC变换器进行效率分析的仿真建模

效率定义:变换器效率通常定义为输出功率与输入功率之比,即 η=PoutPinη=Pin​Pout​​。重要性:高效率意味着更少的能量损失和更好的热管理,对于便携式设备、电动汽车等应用至关重要。挑战开关损耗:高频操作带来的开关器件损耗。导通损耗:电流流过电阻性元件(如MOSFET导通电阻)造成的能量损失。控制策略:优化控制算法以减少损耗。首先明确要模拟的任务内容。设计一个能够支持特定输入输出电压比的DC-DC变换器。根据工作频率和谐振元件值确定合适的电路参数。

xiaoheshang_123的博客 155

[C++高阶数据结构·图论下] 最短路径:为什么“挑最小的”一定正确?

本文系统对比最小生成树与最短路径的核心差异,聚焦三类最短路算法:Dijkstra(非负权、贪心确认)、Bellman-Ford(可负权、反复松弛)、Floyd(全源、分层中转)。核心区别在于:MST 关注“连通所有点”的最小代价(边数固定),而最短路关注“两点间路径最短”(边数可变)。关键反直觉点是:负权对 MST 无害,却使 Dijkstra 失效——因“绕远更近”破坏贪心前提。算法本质反映三种处理不确定性的策略:确认式(Dijkstra)、迭代修正(Bellman-Ford)、分层逼近(Floyd)。强

Tairitsu_青云 510

【camera-radar】基于ROS的多传感器融合感知系统实现(雷达+相机)(2)

实现功能:代码下载地址:下载地址 1)基于深度学习的目标检测;2)基于雷达的距离估计和预测;3)多传感器感知结果融合模块。 相机感知模块解析 4. Run nodes: python3 fusion_node/main.py python3 gps_node/main.py python3 radar_node/main.py python3 2d_detection_node/main.py #(additional instructions in 2d_detection_node/README.m

踟蹰横渡口,彳亍上滩舟。 9950

[C++高阶数据结构·图论上] 最小生成树:为什么“选边”和“选点”是两条路?

本文系统讲解最小生成树(MST)的核心思想与两大算法:Kruskal与Prim。强调MST目标是用最小权值总和连接所有顶点形成一棵树,而非单边最小。通过三条构造准则(用图中边、恰n-1条边、无环)统一框架。Kruskal按边贪心,依赖并查集判环,适合稀疏图;Prim按点扩张,利用割集特性天然避免成环,需起点,适合稠密图。两算法本质差异在于“判环”机制与数据结构选择,且与最短路径问题在连通性、负权处理上截然相反,需分篇厘清。

Tairitsu_青云 219

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Vue3 低代码移动表单设计器实战(二):缩放画布下的拖拽系统与树状级联数据结构

本文深入剖析Vue3低代码表单设计器在缩放画布下的拖拽失效问题,揭示SortableJS在CSS Transform下坐标崩溃的数学根源。通过自研独立视觉克隆壳层与逆向几何补偿算法,实现精准拖拽;采用扁平数据存储+运行时树状计算结构,解决级联依赖与深克隆难题,确保逻辑一致性与性能优化,为复杂低代码系统提供可复用的工程范式。

NanChen的博客 337

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

排序算法深度笔记(上):比较类排序的思想演进与代码实现

与。本文聚焦前者 —— 也就是通过元素间两两比较来确定相对顺序的排序算法,从最朴素的 O (n²) 基础排序,到工业级主流的 O (nlogn) 进阶排序,逐层拆解设计思想、带注释的代码实现与边界细节。当我们理解了比较排序的性能边界,也就自然引出了非比较排序的存在意义。所有代码均遵循统一的实现规范:入口函数前置空数组与单元素边界校验,基于数组原地修改,主函数附带可直接运行的测试用例,与练习代码风格完全对齐。

2401_87069538的博客 606

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

数据结构:双向链表实现,链表与顺序表的对比

本节讲解数据结构双向链表,链表和顺序表的特点对比,顺便解释了一下什么是CPU缓存和内存碎片

lei_jiale的博客 369

【数据结构】树和二叉树(下):讲透四种遍历、递归返回值与经典题

🔥 星光编译者📚 学习专栏:《C/C++ 成长笔记》《Linux 实践手册》《数据结构与算法》🌄 向云端飞扬,编译属于自己的代码星河。☕ 写在开篇你好,这里是星光编译者。这里记录我在C/C++、Linux、数据结构与算法学习中遇到的真实问题、亲手验证过的代码,以及那些容易被忽略的实现细节。比起简单罗列结论,我更愿意从问题出发,把一个知识点的来由讲清楚,把“为什么会这样”和“应该怎样解决”说明白,让每一次踩坑都沉淀成可以复用的经验。如果这篇记录能帮你少绕一点路。

星光编译者的技术博客,专注 C/C++、Linux、数据结构与算法。 391

【数据结构-3】算法美学之降复杂度

在while循环的循环体内,首先用临时变量保存最后一个位置的数据,再通过for循环把所有元素往后移动一位,最后把tmp中保存的值放到下标为0的位置上去。方法二的思路是:创建新数组,让原数组中后k个数据移动到新数组中前面的位置,让原数组中前numsSize-k个数据移动到新数组中后面的位置,这。这段代码的思路是:三次逆置,第一次逆置前numsSize-k个数据,第二次逆置后k个数据,最后整体逆置。这篇博文分享一道解法不一的算法题,求解过程的目的在于降低算法的时间复杂度,题源力扣。,属于空间换时间的操作。

weixin_44218929的博客 80

【数据结构-2】顺序表的实现

线性表是一种数据结构,它分为逻辑结构和物理结构,在逻辑结构上线性表是呈线性的,数据是是连续存储的;在物理结构(物理空间)上,线性表不一定是连续存储的。线性表的实现,主要分为数组和链式结构。顺序表是线性表的一种实现方式,顺序表在逻辑结构和物理结构上都是连续的。顺序表的底层实现是数组。

weixin_44218929的博客 207

数据结构(2)

不同点顺序表链表(单链表)存储空间上物理上一定连续逻辑上连续,但物理上不一定连续随机访问支持:O(1)不支持:O(N)任意位置插入或删除元素可能需要搬移元素,效率低 O(N)只需修改指针指向插入动态顺序表,空间不够时需要扩容和空间浪费没有容量的概念,按需申请释放,不存在空间浪费应用场景元素高效存储 + 频繁访问任意位置高效插入和删除。

likexuec的博客 147

数据结构—B树

一棵m(m>2)阶的B树,是一棵平衡的M路平衡树,可以说空树或满足以下6点。1.根节点至少有两个孩子2.每个分支节点都包含k-1个关键字和k个孩子,ceil(m/2)<=k<=m;孩子比关键字多一个ceil向上取整3.每个叶子节点都包含k-1个关键字,ceil(m/2)<=k<=m;4.所有的叶子节点在同一层。5.每个节点中的关键字从小到大排列,节点当中k-1个元素正好是k个孩子包含元素的值域划分。6.节点的结构是{n,A0,K1,A1,K2,........Kn,An};

fish_xk的博客 128

数据结构:顺序表

顺序表是用一段地址连续的存储单元依次存储线性表的数据元素的线性结构。它是线性表的顺序存储实现,在C语言中通常用数组来实现。

2502_92937908的博客 339

LangGraph 的 State 深入解析:从数据结构到工程实践

LangGraph 支持多种方式定义 State 的 Schema,各有适用场景。维度关键点数据结构TypedDict / Pydantic / dataclass 三种定义方式更新语义增量返回,无 Reducer 覆盖,有 Reducer 合并合并机制Reducer 决定并行与多次写入的结果边界设计输入/内部/输出 Schema 分离持久化Checkpointer 支持续跑、人工介入、时间旅行。

张晨光老师的播客 302

数据结构:单链表

单链表是一种链式存储的线性表。它由一系列节点数据域:存放数据元素指针域:存放指向下一个节点的指针内存不连续,节点分散存储插入删除效率高(O(1),前提是已定位到位置)查找效率低(O(n)),不支持随机访问相比数组,多消耗指针域空间// 定义节点结构体int data;// 数据域// 指针域,指向下一个节点} Node;// 或者使用 typedef 简化int data;// LinkList 是指向 Node 的指针类型中必须写,因为此时 typedef 尚未生效,不能写Node。

2502_92937908的博客 475

Python 开发的实践:从数据结构选型到框架决策

规模多大?决定用list还是set,Pandas 还是 Polars。瓶颈在哪?I/O 密集用异步,CPU 密集用进程/自由线程,内存受限用列式与惰性执行。代价是什么?消除手动维护窗口的出错面,TaskGroup消除失败任务不被取消的泄漏,消除 N+1,Protocol消除为类型约束而引入的继承层级——每个选择都在消除某类代价,同时也引入新的约束。能回答这三个问题,比记住更多 API 更有用。愿你我都能在各自的领域里不断成长,勇敢追求梦想,同时也保持对世界的好奇与善意!

weixin_45809780的博客 367
上一篇: VC++ListCtrl控件(陆)
下一篇: 用分水岭算法实现图像分割 (祝勇)
TargetStudio
博客等级 码龄20年 3粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值