LVGL学习笔记 21 - 图像Image

2023-11-12

目录

1. 图像来源

1.1 图片源文件

1.2 颜色格式

1.2.1 LV_IMG_CF_ALPHA_1/2/4/8BIT

1.2.2 LV_IMG_CF_INDEXED_1/2/4/8BIT

1.2.3 LV_IMG_CF_RAW/_ALPHA/_CHROME_KEYED

1.2.4 LV_IMG_CF_TRUE_COLOR/_ALPHA/_CHROMA_KEYED

1.2.5 LV_IMG_CF_RGB565A8

2. 显示图片

2.1 创建

2.2 申明

2.3 设置源

3. 样式

3.1 设置x/y方向上的偏移

3.2 设置支点

3.3 旋转

3.4 放大缩小

3.5 抗锯齿

3.6 设置图像大小模式


图像是显示来自闪存(作为数组)或来自文件的图像的基本对象。

1. 图像来源

和字库类似,可以通过在线转换工具将图片转换为LVGL支持的C数组或二进制文件。

Online image converter - BMP, JPG or PNG to C array or binary | LVGLhttps://lvgl.io/tools/imageconverter

离线版本(因为网络的问题,建议用这种方式)的使用方法:

a. 安装nodejs

nodejs安装及环境配置_Mr.羽猫君的博客-CSDN博客https://blog.csdn.net/qq_57210034/article/details/124823972

b. 进入CMD运行‘npm install’和'npm install -g typescript'

最好在运行前改一下镜像的地址,例如:

npm config set registry http://registry.cnpmjs.org/
npm config set registry https://registry.npmjs.org/

c. 通过git clone克隆离线工具

git clone https://github.com/lvgl/lv_img_conv.git

d. 在CMD界面进入文件夹lib中,运行'npm install -g ts-node'

e. 在lib文件中运行命令转换图片,例如:

ts-node cli.ts logo_lvgl.png -f -c CF_TRUE_COLOR_ALPHA

也可以在文件夹内建立bat文件,例如:

1.1 图片源文件

支持的格式有BMP, JPG, PNG和SVG,可以一次选择多个文件。为了便于理解格式问题,新建一个像素8x8的bmp文件,用画图软件打开编辑:

输出格式选择C数组。

1.2 颜色格式

为了节约空间,图像需要选择合适的格式,LVGL支持5大类颜色格式。

1.2.1 LV_IMG_CF_ALPHA_1/2/4/8BIT

存储 1、2、4 或 8 位的 Alpha 值,源图像必须是 Alpha 通道,整个图像是一种可以更改的颜色。

如果用windows的画图软件编辑保存,即第一个像素为黑色,其他颜色是白色,如下图。这时会发现转换工具转换出来的数据都是0xFF,这是因为需要原图像要有Alpha通道。

可以使用GIMP(或PS)的图像处理软件,将白色改为透明色,再导出为png图片。

 LV_IMG_CF_ALPHA_8BIT格式生成的数组如下:

const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_E uint8_t e_map[] = {
  0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
};

在图片上再增加一个点判断工具扫描方向

const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_E uint8_t e_map[] = {
  0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
};

可以看出扫描方向是从左到右,再从上到下。

将格式改为CF_ALPHA_1_BIT,生成的数组为:

const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_E uint8_t e_map[] = {
  0x80, 
  0x80, 
  0x00, 
  0x00, 
  0x00, 
  0x00, 
  0x00, 
  0x00, 
};

1.2.2 LV_IMG_CF_INDEXED_1/2/4/8BIT

使用2、4、16或256色调色板,并以1、2、4或8位存储每个像素。同样,以第一个像素为黑色的8x8图片为例,生成CF_INDEXED_1_BIT格式的数据如下:

const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_E uint8_t e_map[] = {
  0x00, 0x00, 0x00, 0x00, 	/*Color of index 0*/
  0x00, 0x00, 0x00, 0xff, 	/*Color of index 1*/

  0x80, 
  0x00, 
  0x00, 
  0x00, 
  0x00, 
  0x00, 
  0x00, 
  0x00, 
};

可以看到前面8个字节就是Index,Index 0表示白色或者透明色,Index 1表示黑色。

1.2.3 LV_IMG_CF_RAW/_ALPHA/_CHROME_KEYED

RAW表示数组是图片的原始数据。把图片导出为bmp文件,格式为CF_RAW(好像是和CF_RAW_CHROME_KEYED一样,生成的格式变量是LV_IMG_CF_RAW_CHROMA_KEYED)

可以看到数组就是图片的二进制文件。

CF_RAW_ALPHA格式表示为每个像素添加了Alpha字节。

 CF_RAW_CHROME_KEYED格式表示如果像素具有LV_COLOR_TRANSP(在lv_conf.h中设置)颜色,则该像素将是透明的。

通过同样的图片对比三种格式,没发现三者生成的数据有差别。

1.2.4 LV_IMG_CF_TRUE_COLOR/_ALPHA/_CHROMA_KEYED

LV_IMG_CF_TRUE_COLOR:只存储RGB颜色(使用LVGL配置的任何颜色深度)。 如果采用之前的图片,得到的结果相反,每个像素得到的值都是0x00,即没有参考ALPHA。

#if LV_COLOR_DEPTH == 1 || LV_COLOR_DEPTH == 8
  /*Pixel format: Red: 3 bit, Green: 3 bit, Blue: 2 bit*/
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
#endif

如果把黑色改为红色就可以看到数据变化。 

LV_IMG_CF_TRUE_COLOR_ALPHA:每个像素添加了Alpha字节,如下,每个像素变为2个字节

#if LV_COLOR_DEPTH == 1 || LV_COLOR_DEPTH == 8
  /*Pixel format: Alpha 8 bit, Red: 3 bit, Green: 3 bit, Blue: 2 bit*/
  0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
#endif

LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED:如果像素具有LV_COLOR_TRANSP(在lv_conf.h中设置)颜色,则该像素将是透明的。

1.2.5 LV_IMG_CF_RGB565A8

这种格式是数组有RGB565+Alpha8两组数据组合。例如:

const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_E uint8_t e_map[] = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  /*alpha channel*/
  0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  
};

2. 显示图片

将工具转换出来的c文件加载到工程中。

以下图为例,文件名为imgSnowFlake.png,生成imgSnowFlake.c,图像结构体名为imgSnowFlake

2.1 创建

使用lv_img_create创建图像对象句柄。

lv_obj_t* img = lv_img_create(lv_scr_act());

2.2 申明

使用LV_IMG_DECLARE申明。

LV_IMG_DECLARE(imgSnowFlake);

注意,因为VisualStudio模拟器是C++环境,这里要加上extern "C",否则会链接错误,如下:

extern "C" {
    LV_IMG_DECLARE(imgSnowFlake);
}

2.3 设置源

通过函数lv_img_set_src设置图像的源。

void lv_img_set_src(lv_obj_t * obj, const void * src)

而源有3种情况,分别为文件,结构体指针,Symbol,程序会判断是哪种情况。

lv_img_set_src(img, &imgSnowFlake);

 不同格式显示效果如下:

CF_ALPHA_2_BIT: 

CF_ALPHA_4_BIT:

CF_ALPHA_8_BIT(data_size = 65536):

CF_INDEXED_1_BIT(data_size = 8200): 

CF_INDEXED_2_BIT(data_size = 16400): 

CF_INDEXED_4_BIT(data_size = 32832): 

CF_INDEXED_8_BIT(data_size = 66560):

CF_TRUE_COLOR(data_size = 262144):

CF_TRUE_COLOR_ALPHA(data_size = 262144):

CF_RGB565A8(data_size = 196608):显示错误,怀疑是工具有问题,生成的数据是全0。

3. 样式

3.1 设置x/y方向上的偏移

这个偏移是图片内的偏移,不是在屏幕上的偏移。

void lv_img_set_offset_x(lv_obj_t * obj, lv_coord_t x)
void lv_img_set_offset_y(lv_obj_t * obj, lv_coord_t y)

例如x方向偏移-128,可以试试偏移128,显示结果是类似的。

lv_obj_align(img, LV_ALIGN_CENTER, 0, 0);
lv_img_set_offset_x(img, -128);

lv_img_set_offset_y(img, 128);

 

3.2 设置支点

设置图片旋转等操作时的支点,坐标值是以图片的左顶点为原点。

void lv_img_set_pivot(lv_obj_t * obj, lv_coord_t x, lv_coord_t y)

3.3 旋转

void lv_img_set_angle(lv_obj_t * obj, int16_t angle)

角度angle有0.1度精度,所以45.8°设置为458,默认是以图片中心旋转。

lv_img_set_angle(img, 36 * 10);

注意,有些格式不支持旋转,例如INDEXED。

3.4 放大缩小

void lv_img_set_zoom(lv_obj_t * obj, uint16_t zoom)

参数zoom为256时,图片是原始大小,小于256表示缩小,大于256表示放大。

lv_img_set_zoom(img, 128);

lv_img_set_zoom(img, 512);

3.5 抗锯齿

抗锯齿开关通过lv_img_set_antialias开关。启用反锯齿后,转换的质量会更高,但速度会更慢。

void lv_img_set_antialias(lv_obj_t * obj, bool antialias)

3.6 设置图像大小模式

当图像大小和对象大小不同时,主要影响缩放时的显示效果

void lv_img_set_size_mode(lv_obj_t * obj, lv_img_size_mode_t mode)

LV_IMG_SIZE_MODE_VIRTUAL: 缩放不会影响对象的坐标,默认。

LV_IMG_SIZE_MODE_REAL:如果对象大小设置为size_CONTENT,则对象大小等于缩放的图像大小。如果显式设置了对象大小,则放大时将裁剪图像

lv_img_set_zoom(img, 128);
lv_img_set_size_mode(img, LV_IMG_SIZE_MODE_REAL);

lv_img_set_zoom(img, 512);
lv_img_set_size_mode(img, LV_IMG_SIZE_MODE_REAL);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LVGL学习笔记 21 - 图像Image 的相关文章

  • Qt——用于表格QTableView的模型

    如果想使用表格来呈现数据 Qt提供了一个方便的部件QTableWidget 但是直接用它实现一些功能可能比较困难 这里将介绍一种强大 灵活的方式来操作表格 一 模型 视图架构 在这个架构中 模型用于存储数据 视图用于呈现数据 除此之外 还有
  • unity制作血条

    unity制作血条 在hierarchy中create gt UI gt image 重命名为border 将血条框拖入Source Image Set Native Size 防止变形 在Canvas下create empty 命名为He
  • UI设计师有钱途还是平面设计师或者是网页设计师呢?

    UI设计 平面设计和网页设计 哪个前景更好呢 其实ui和网页设计都属于平面设计里的一个分支 举个例子 设计一份饭店的点菜单 一样的图案 印刷出来是传统平面设计 放网站上是网页设计 放手机上显示是UI 其实都是一样的平面美术设计 那么有人要问
  • AFNetwork 作用和使用方法具体解释

    转自 http www maxiaoguo com clothes 269 html AFNetworking是一个轻量级的iOS网络通信类库 它建立在NSURLConnection和NSOperation等类库的基础上 让非常多网络通信功
  • Unity中Shader实现UI去色功能的实现思路

    文章目录 前言 一 在开发过程中 在UI中会涉及一些需要置灰UI的需求 有很多实现的方法 1 做两套纹理 通过程序控制切换 2 使用shader实现对纹理去色 二 这里主要记录用shader实现的思路 1 基础纹理的采样 2 支持组件中的调
  • UE4命令行使用,解释

    命令行在外部 从命令行运行编辑项目 1 导航到您的 LauncherInstall VersionNumber Engine Binaries Win64 目录中 2 右键单击上 UE4Editor exe 的可执行文件 并选择创建快捷方式
  • element ui的el-tree多选树(复选框)父子节点关联不关联的问题,选中当前节点,他的子节点和父节点是否被选中,非常详细

    element ui的el tree多选树 复选框 父子节点关联不关联的问题 选中当前节点 他的子节点和父节点是否被选中 非常详细 属性check strictly 官方文档提供属性check strictly 在显示复选框的情况下 是否严
  • ESP32C3 移植ST7735 LVGL

    关于lvgl LVGL是一个C语言编写的免费的开源图形库 其提供了用于嵌入式GUI的各种元素 用户可以利用丰富的图形库资源 在消耗极低内存的情况下构建视觉效果丰富多彩的GUI 只需 64kB 闪存和 8kB RAM 就足以满足简单的用户界面
  • Qt 不规则窗口,不规则按钮,不规划控件 不规则界面

    有一些特殊情况 需要使用不规则窗口或按钮 看起来非常炫酷 类似 Qt 实现 不规则样式设置 不是视觉欺骗 是真正的不规则 点击外面不会触发按钮的点击信号 Part1 不规则窗口 效果 显示成一张图片中的图形 使用带有透明区域的png图片 i
  • android Scroller

    参考 http www linuxidc com Linux 2016 01 127276 htm 以前只知道怎么使用scroller 照猫画虎 复制粘贴 今天遇到使用scroller 还是要去搜索 这样不行 要搞懂原理 上面的博客写的很漂
  • LVGL V8应用——实现互斥

    按键互斥 void language setup lv obj t cont lv obj create page lv obj set size cont 320 160 lv obj t ch cb lv checkbox create
  • 探索创意无限的Photoshop CC 2020Mac/Win版

    作为一款功能强大的图像处理软件 Photoshop CC 2020 简称PS 2020 在全球范围内备受设计师 摄影师和艺术家的喜爱和推崇 它不仅为用户提供了丰富多样的工具和功能 还不断推出新的创意特效和改进的功能 让用户的创意无限延展 首
  • 296_C++_一个dialog对话框在执行exec向系统发送一个延后销毁事件时,另一个对话框立刻接管了上一个对话框的销毁事件,导致死UI

    1 根因分析 根因分析 当有新版本并且grade等级是2的时候 点击ptz的时候使用的是RSDialog WA DeleteOnClose属性默认是为true的 并且是栈上的变量 当关闭ptz的时候 diolog的exec结束会向系统发送延
  • UI 易用性测试 以及自动化实现!

    GUI 是指图形用户界面 UI 是指用户界面 对于纯软件系统 这两者没有本质的区别 GUI易用性测试与 UI 易用性测试内容一致 但是如果测试的对象是一个产品 这两者则存在区别 对于产品 UI 则不仅仅包括 GUI 还包括产品硬件部分的测试
  • 独立搭建UI自动化测试框架分享

    今天给大家分享一个selenium testng maven ant的UI自动化 可以用于功能测试 也可按复杂的业务流程编写测试用例 今天此篇文章不过多讲解如何实现CI CD 只讲解自己能独立搭建UI框架 如果有其他好的框架也可以联系我 分
  • 创意无限,绘图轻松——Sketch for Mac矢量绘图软件全面介绍

    在现代设计领域 矢量绘图软件是设计师们必不可少的工具之一 而在众多矢量绘图软件中 Sketch for Mac凭借其强大的功能和友好的用户界面脱颖而出 成为众多设计师的首选 Sketch for Mac是一款专为Mac用户开发的矢量绘图软件
  • Mac版 Photoshop 2021---PS2021

    Adobe Photoshop 2021是一款强大的图像处理软件 它可以帮助用户进行各种图像编辑 修饰和合成工作 这款软件拥有先进的图像处理技术 支持多种图像格式 可以轻松实现各种复杂的图像处理任务 它还提供了丰富的滤镜和工具 使用户可以自
  • Vue + Element-ui组件上传图片报错问题解决方案

    在使用Vue和Element ui组件上传图片时 可能会遇到一些报错问题 以下是一些常见的问题及解决方案 报错 TypeError Cannot read property name of undefined 解决方案 这个错误通常是因为在
  • 界面控件DevExpress WPF属性网格 - 让应用轻松显示编辑各种属性事件

    DevExpress WPF Property Grid 属性网格 灵感来自于Visual Studio Visual Studio启发的属性窗口 对象检查器 让在WPF应用程序显示和编辑任何对象的属性和事件变得更容易 P S DevExp
  • UI自动化测试之Jenkins配置

    背景 团队下半年的目标之一是实现自动化测试 这里要吐槽一下 之前开发的测试平台了 最初的目的是用来做接口自动化测试和性能测试 但由于各种原因 接口自动化测试那部分功能整个废弃掉了 其中和易用性有很大关系 另外 也和我们公司的接口业务也有关

随机推荐

  • vue 假期工作日设置_假期申请第8天2月25日

    vue 假期工作日设置 It s that time again project week 又是时候了 项目周 This time around the project week started on Monday August 24th
  • centos7换源

    1 首先备份系统自带yum源配置文件 etc yum repos d CentOS Base repo mv etc yum repos d CentOS Base repo etc yum repos d CentOS Base repo
  • import cv2出现“ImportError: DLL load failed: 找不到指定的模块”

    2 1 将cv2 cp36 win amd64 pyd 文件复制一份 防止一会儿改完不行 又不知道原来是什么了 更改内容如下 import importlib from cv2 import 前面去掉点之后变成这样 from data im
  • 一文让你彻底了解Linux内核文件系统

    一 文件系统特点 文件系统要有严格的组织形式 使得文件能够以块为单位进行存储 文件系统中也要有索引区 用来方便查找一个文件分成的多个块都存放在了什么位置 如果文件系统中有的文件是热点文件 近期经常被读取和写入 文件系统应该有缓存层 文件应该
  • 用Go构建一个简单的区块链

    在本教程中 我将尝试通过帮助你在Go中编写简单的区块链来揭开区块链的广义概念 在本教程中 你应该能够 理解区块链术语 创建自己的简单区块链 了解什么是区块以及如何创建块 了解如何维护区块链的完整性 区块链 一种数字分类帐 以较小的集合排列
  • 数据诊断模型,该怎么搭建?

    你会用数据下判断吗 你怎么确定你的判断是准确的 现在业务说你判断错了 你怎么应对 用数据下判断 是看似简单 实则极大影响数据分析结果的一个问题 同样是本月销售业绩1000万 如果判断是 业绩很好 那么下一步的分析就是总结成功经验 如果判断是
  • 悟空crm php 部署,悟空crm开源版本环境搭建

    安装步骤 JDK需要预先安装 下载后执行install sh 链接 link 硬件配置 因为只有一台机器所以安装在一台机器上了 cpu 内存 硬盘 系统 8核 32G ssd100G centos7 基础软件 mysql安装 1 卸载mar
  • DataGrip数据库连接失败:DBMS: MySQL (无版本)区分大小写: 普通形式=mixed, 分隔形式=exactConnection refused: connect.

    查看任务管理器 服务 mysql服务是否正在运行 右键可控制关闭运行
  • 如何查看视图的sql语句

    select text from syscomments s1 join sysobjects s2 on s1 id s2 id where name 视图名称 前提条件是视图没有被加密 有权限 转载于 https www cnblogs
  • Flink on Zeppelin-1

    准备工作 下载Zeppelin 0 9 0 preview1 或者下载 除了下载Flink的标准release 如果你要使用Flink on Yarn模式或者连接Hive 那么你还需要下载其他Flink组件 flink hadoop com
  • AutoGPT太火了,无需人类插手自主完成任务,ChatGPT 已经过时了?

    转载自 机器之心Pro 原文链接 AutoGPT太火了 无需人类插手自主完成任务 GitHub2 7万星 OpenAI 的 Andrej Karpathy 都大力宣传 认为 AutoGPT 是 prompt 工程的下一个前沿 近日 AI 界
  • Vue3 解决电脑分辨率及缩放导致页面变形的问题

    Vue3 解决电脑分辨率不同导致的页面变形问题 前言 电脑缩放问题解决 屏幕分辨率问题解决 前言 最近在做一个项目 突然发现由于调整电脑的分辨率导致页面变形的问题 正常电脑显示的是100 当调整电脑缩放至125 时 页面发生变形 由于css
  • springboot相关图形

    一 springboot的需求调研 需求分析 即应用场景 开发中如果使用spring springmvc spring集成第三方框架 如springmvc mybatis等 都需要编写大量的xml配置文件 二 框架的设计思想 不需要配置文件
  • Apache Kafka Deep 解析

    1 首先了解主题 经纪人 生产者和消费者等主要术语 下图说明了主要术语 表格详细描述了图表组件 在上图中 主题配置为三个分区 分区1具有两个偏移因子0和1 分区2具有四个偏移因子0 1 2和3 分区3具有一个偏移因子0 副本的id与承载它的
  • c++输出爱心小程序

    输入数值可以得到不同大小的爱心形状 include
  • STM32——FATFS文件基础知识

    一 探索者STM32开发板 通过底面的SD卡接口与SD卡连接 硬件连接原理图 PC8 9 11分时 二 SD卡驱动代码 1 SD Init初始化函数 2 SD ReadDisk读函数 3 SD WriteDisk写函数 1 文件系统是什么
  • @RequestHeader注解详解

    SpringMVC提供了 RequestHeader注解 可以将请求头中变量值映射到控制器的参数中 如下例子 将请求头中的变量值token映射到控制器参数token中 GetMapping checkUserLoginInfo public
  • Linux骚操作第十七话之PAM验证、sudo和开关机控制等

    文章目录 前言 一 PAM安全认证流程 二 提权 三 开关机安全控制 四 系统弱口令检测 五 网络端口扫描 总结 前言 在工作环境中 一些用户的权限都是由root系统管理员通过sudo放权给予 这样做的好处是防止某些用户存在故意之心 破坏系
  • Git:利用Git进行多人协作的场景模拟

    文章目录 场景一 场景二 解决一些后续问题 场景一 Git是一个多人协作下完成的操作 因此Git是需要进行一些多人协作的场景的 那么这里就使用Linux和Windows两个平台进行模拟实现两个用户进行的协作 首先把仓库克隆到本地 再加入两个
  • LVGL学习笔记 21 - 图像Image

    目录 1 图像来源 1 1 图片源文件 1 2 颜色格式 1 2 1 LV IMG CF ALPHA 1 2 4 8BIT 1 2 2 LV IMG CF INDEXED 1 2 4 8BIT 1 2 3 LV IMG CF RAW ALP