图片转成oled使用的字模数据

目录

oled尺寸

如何生成用到的图片

图片转字模

1.首先用Img2Lcd转成bmp单色图片

2.然后用PCtoLCD2002把单色图片转字模


oled尺寸

我使用0.96寸oled模块,对应着的分辨率是128*64,对应着宽高像素比128*64。所以不是随意一张图片就能用的,必须用128*64.

如何生成用到的图片

通过视频获取一张图片

ffmpeg -i 1.mp4 -y -f image2 -vframes 1 -s 128x64 output.jpg

 -vframes 1 : 设置只提取 1 帧图像 , 也就是 第 2 秒后的 第一帧图像 ;

-s 128x64: 设置输出图片的大小为 128x64像素 ;

通过其他分辨率的图片获取图片

 ffmpeg -i QQ.jpg -y -f image2  -s 128x64 output.jpg

最后获取下图:

图片转字模

1.首先用Img2Lcd转成bmp单色图片

2.然后用PCtoLCD2002把单色图片转字模

一、点击文件,打开要用的图片,如下图

二、选择图形模式

三、点击设置按钮,设置如下图,然后点击确定按钮

四、最后点击生成字模,然后保存字模到txt文本文件

五、然后把数据复制到代码里,需要注意分辨率为128*64,表示有128*64个位,那么对应128*8个字节,也就是1024。

const uint8_t image[1024] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x40,
0x40,0x20,0x20,0x20,0x80,0x10,0x10,0x90,0x90,0x80,0x80,0x80,0x80,0xD0,0xD0,0xD0,
0xF0,0xA0,0xA0,0xA0,0xA0,0xC0,0xC0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xC0,0x40,0x60,0x78,0x6C,0xA2,0xA1,0x31,0x48,0xE4,0xF0,
0xFA,0xFC,0xFF,0x3E,0x1E,0x1F,0x3F,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFD,0xF9,0xF1,0xE1,0x83,0x03,0x07,0x1E,0xFC,0xF8,0xF0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x80,0xC0,0x60,0x90,0x58,0xA8,0x84,
0x74,0x02,0xE2,0x42,0x4F,0x18,0x30,0x20,0x20,0x60,0xB0,0x1F,0x06,0x10,0x3F,0x3F,
0x7F,0xFF,0xFF,0xFE,0xF2,0xF2,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0xF0,0x7C,0x3F,0x1F,0x0F,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x1E,0x12,0x01,0x11,0x18,0x38,0xC0,0x80,0x00,0x00,0x03,0x0E,0x05,0x07,0x87,0x98,
0xD0,0x60,0x63,0x6C,0x38,0x30,0x31,0x1F,0x30,0x60,0x41,0x81,0x82,0x86,0x80,0x80,
0x80,0x80,0x80,0xC1,0x43,0x7F,0x1F,0x1B,0x1B,0x1B,0x9B,0x9F,0xBF,0xBF,0x2F,0x4F,
0x4F,0x4F,0x8F,0x87,0xF7,0x0B,0x0B,0x07,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x61,0x39,0x18,0x06,0xC6,0xE3,0xF1,0xF1,0xF0,
0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x83,0x87,0x87,0x87,
0x87,0x03,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x03,0x03,
0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x04,0x0C,0x18,0x30,0x60,0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xF8,0xF0,0xC0,0xC0,0x80,0x81,0x80,0x80,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x0F,0x0F,0x0F,0x0F,0x0F,0x07,
0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0xFC,0xFC,0xFE,0x7E,0xBE,
0xFE,0xFE,0xFE,0xFE,0xFE,0xF8,0xE0,0x00,0x00,0x00,0x00,0x00,0x03,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,0x03,0x0F,0x1F,0x3B,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xE0,0xE0,0xE0,0xE0,0xE0,0xC0,0xE0,0xF0,0xF0,0xF0,
0xF8,0xF8,0xFC,0xFC,0xFC,0xFC,0xF8,0xF8,0xF0,0xC0,0xC0,0xC0,0xC0,0xC1,0xC1,0xC1,
0xE1,0xE3,0xE1,0xF1,0xF1,0xF0,0xF8,0xF8,0x68,0x34,0x1C,0x0E,0x07,0x01,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x03,0x07,
0x07,0x07,0x0F,0x0F,0x0F,0x1F,0x1F,0x1F,0x1F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,
0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x1F,0x1F,0x1F,0x1F,0x0F,0x0F,
0x0F,0x07,0x07,0x03,0x03,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};

 这里给出一个如何使用字模数据的案例:

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>
#include <string.h>#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>#include <linux/types.h>
#include <linux/spi/spidev.h>#include "font.h"#define OLED_IOC_INIT 			123
#define OLED_IOC_SET_POS 		124//为0 表示命令,为1表示数据
#define OLED_CMD 	0
#define OLED_DATA 	1static int fd_spidev;
static int dc_pin_num;
unsigned char OLED_DisplayBuf[8][128];void OLED_DIsp_Set_Pos(int x, int y);void oled_write_datas(const unsigned char *buf, int len)
{write(fd_spidev, buf, len);
}/*********************************************************************** 函数名称: OLED_DIsp_Clear* 功能描述: 整个屏幕显示数据清0* 输入参数:无* 输出参数: 无* 返 回 值: * 修改日期 	   版本号	 修改人		  修改内容* -----------------------------------------------* 2020/03/15		 V1.0	  芯晓		  创建***********************************************************************/
void OLED_DIsp_Clear(void)  
{unsigned char x, y;char buf[128];memset(buf, 0, 128);for (y = 0; y < 8; y++){OLED_DIsp_Set_Pos(0, y);oled_write_datas(buf, 128);}
}/*********************************************************************** 函数名称: OLED_DIsp_All* 功能描述: 整个屏幕显示全部点亮,可以用于检查坏点* 输入参数:无* 输出参数:无 * 返 回 值:* 修改日期 	   版本号	 修改人		  修改内容* -----------------------------------------------* 2020/03/15		 V1.0	  芯晓		  创建***********************************************************************/
void OLED_DIsp_All(void)  
{unsigned char x, y;char buf[128];memset(buf, 0xff, 128);for (y = 0; y < 8; y++){OLED_DIsp_Set_Pos(0, y);oled_write_datas(buf, 128);}}//坐标设置
/*********************************************************************** 函数名称: OLED_DIsp_Set_Pos* 功能描述:设置要显示的位置* 输入参数:@ x :要显示的column address@y :要显示的page address* 输出参数: 无* 返 回 值: * 修改日期 	   版本号	 修改人		  修改内容* -----------------------------------------------* 2020/03/15		 V1.0	  芯晓		  创建***********************************************************************/
void OLED_DIsp_Set_Pos(int x, int y)
{ 	ioctl(fd_spidev, OLED_IOC_SET_POS, x  | (y << 8));
}   	      	   			 
/*********************************************************************** 函数名称: OLED_DIsp_Char* 功能描述:在某个位置显示字符 1-9* 输入参数:@ x :要显示的column address@y :要显示的page address@c :要显示的字符的ascii码* 输出参数: 无* 返 回 值: * 修改日期		版本号	  修改人 	   修改内容* -----------------------------------------------* 2020/03/15		  V1.0	   芯晓		   创建
***********************************************************************/
void OLED_DIsp_Char(int x, int y, unsigned char c)
{int i = 0;/* 得到字模 */const unsigned char *dots = oled_asc2_8x16[c - ' '];/* 发给OLED */OLED_DIsp_Set_Pos(x, y);/* 发出8字节数据 *///for (i = 0; i < 8; i++)//	oled_write_cmd_data(dots[i], OLED_DATA);oled_write_datas(&dots[0], 8);OLED_DIsp_Set_Pos(x, y+1);/* 发出8字节数据 *///for (i = 0; i < 8; i++)//oled_write_cmd_data(dots[i+8], OLED_DATA);oled_write_datas(&dots[8], 8);
}/*********************************************************************** 函数名称: OLED_DIsp_String* 功能描述: 在指定位置显示字符串* 输入参数:@ x :要显示的column address@y :要显示的page address@str :要显示的字符串* 输出参数: 无* 返 回 值: 无* 修改日期 	   版本号	 修改人		  修改内容* -----------------------------------------------* 2020/03/15		 V1.0	  芯晓		  创建
***********************************************************************/
void OLED_DIsp_String(int x, int y, char *str)
{unsigned char j=0;while (str[j]){		OLED_DIsp_Char(x, y, str[j]);//显示单个字符x += 8;if(x > 127){x = 0;y += 2;}//移动显示位置j++;}
}
void OLED_Clear(void)
{uint8_t i, j;for (j = 0; j < 8; j ++)				//遍历8页{for (i = 0; i < 128; i ++)			//遍历128列{OLED_DisplayBuf[j][i] = 0x00;	//将显存数组数据全部清零}}
}void OLED_DIsp_Image(int X, int Y, int Width, int Height, const unsigned char *Image)
{int i = 0, j = 0;int Page, Shift;/*遍历指定图像涉及的相关页*//*(Height - 1) / 8 + 1的目的是Height / 8并向上取整*/for (j = 0; j < (Height - 1) / 8 + 1; j ++){/*遍历指定图像涉及的相关列*/for (i = 0; i < Width; i ++){if (X + i >= 0 && X + i <= 127)		//超出屏幕的内容不显示{/*负数坐标在计算页地址和移位时需要加一个偏移*/Page = Y / 8;Shift = Y % 8;if (Y < 0){Page -= 1;Shift += 8;}if (Page + j >= 0 && Page + j <= 7)		//超出屏幕的内容不显示{/*显示图像在当前页的内容*/OLED_DisplayBuf[Page + j][X + i] |= Image[j * Width + i] << (Shift);}if (Page + j + 1 >= 0 && Page + j + 1 <= 7)		//超出屏幕的内容不显示{					/*显示图像在下一页的内容*/OLED_DisplayBuf[Page + j + 1][X + i] |= Image[j * Width + i] >> (8 - Shift);}}}}/*遍历每一页*/for (int j = 0; j < 8; j ++){/*设置光标位置为每一页的第一列*///OLED_SetCursor(j, 0);OLED_DIsp_Set_Pos(0,j);	/*连续写入128个数据,将显存数组的数据写入到OLED硬件*///OLED_WriteData(OLED_DisplayBuf[j], 128);for(int t=0;t<128;t++){//显示上半截字符	oled_write_datas(&OLED_DisplayBuf[j][t], 1);}	}
}/*********************************************************************** 函数名称: OLED_DIsp_Test* 功能描述: 整个屏幕显示测试* 输入参数:无* 输出参数: 无* 返 回 值: 无* 修改日期 	   版本号	 修改人		  修改内容* -----------------------------------------------* 2020/03/15		 V1.0	  芯晓		  创建***********************************************************************/
void OLED_DIsp_Test(void)
{ 	int i;OLED_DIsp_Image(0,0,128,64,image);
} /* spi_oled /dev/100ask_oled */
int main(int argc, char **argv)
{	if (argc != 2){printf("Usage: %s /dev/100ask_oled\n", argv[0]);return -1;}fd_spidev = open(argv[1], O_RDWR);if (fd_spidev < 0) {printf("open %s err\n", argv[1]);return -1;}ioctl(fd_spidev, OLED_IOC_INIT);OLED_DIsp_Clear();OLED_DIsp_Test();return 0;
}

 以上案例代码主要在OLED_DIsp_Image中,把图片数据填充到OLED_DisplayBuf二维数组中,然后调用 oled_write_datas写入oled显示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/497536.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【通信网络】二层基础:03 二层转发基础

1. 二层转发概述 数据链路层&#xff0c;位于OSI模型中的第二层&#xff0c;所以称之为二层。本文我们讨论的转发过程&#xff0c;就是在数据链路层上的转发过程&#xff0c;即二层转发。 1.1 MAC地址 为了唯一的表示一台网络设备&#xff0c;网络设备都有自己的MAC地址。IE…

从0到100:基于Java的大学选修课选课小程序开发笔记(上)

背景 为学生提供便捷的课程选择方式&#xff0c;并帮助学校进行课程管理和资源调配&#xff1b;主要功能包括&#xff1a;课程展示&#xff0c;自主选课&#xff0c;取消选课&#xff0c;后台录入课程&#xff0c;统计每门课程报名情况&#xff0c;导出数据&#xff0c;用户管…

基于Springboot + vue实现的火锅店管理系统

&#x1f942;(❁◡❁)您的点赞&#x1f44d;➕评论&#x1f4dd;➕收藏⭐是作者创作的最大动力&#x1f91e; &#x1f496;&#x1f4d5;&#x1f389;&#x1f525; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;欢迎留言讨论 &#x1f525;&#x1f525;&…

基于Svelte 5的体检查询系统前端设计与实现探究

一、引言 1.1 研究背景与意义 在当今数字化时代&#xff0c;医疗信息化已成为医疗行业发展的重要趋势。随着人们对健康的重视程度不断提高&#xff0c;体检作为预防疾病、保障健康的重要手段&#xff0c;其相关信息的管理和查询需求也日益增长。传统的体检查询系统前端往往存…

科大讯飞在线语音合成(流式版)python版

1、进入自己的项目 复制APPID、APISecret、APIKey 2、添加好听发音人 复制vcn参数 3、需要替换代码部分&#xff1a; 换自己喜欢的发声人的参数 换上自己的APPID、APISecret、APIKey 4、完整代码&#xff1a; # -*- coding:utf-8 -*- import _thread as thread import base…

TCP 为什么采用三次握手和四次挥手以及 TCP 和 UDP 的区别

1. TCP 为什么采用三次握手和四次挥手 采用三次握手的原因&#xff1a; 确认双方的收发能力。第一次握手&#xff0c;客户端发送 SYN 报文&#xff0c;告诉服务器自身具备发送数据的能力&#xff0c;第二次握手&#xff0c;服务器回应 SYN ACK 报文&#xff0c;表名自己既能…

python-Flask:SQLite数据库路径不正确但是成功访问到了数据库,并对表进行了操作

出现了这个问题&#xff0c;就好像是我要去找在南方的人&#xff0c;然后我刚好不分南北&#xff0c;我认为的方向错了&#xff0c;实则方向对了。 在我针对复盘解决&#xff1a;sqlite3.OperationalError: unrecognized token: “{“-CSDN博客这个内容的时候&#xff0c;又出现…

2024-12-29-sklearn学习(25)无监督学习-神经网络模型(无监督) 烟笼寒水月笼沙,夜泊秦淮近酒家。

文章目录 sklearn学习(25) 无监督学习-神经网络模型&#xff08;无监督&#xff09;25.1 限制波尔兹曼机25.1.1 图形模型和参数化25.1.2 伯努利限制玻尔兹曼机25.1.3 随机最大似然学习 sklearn学习(25) 无监督学习-神经网络模型&#xff08;无监督&#xff09; 文章参考网站&a…

Spring ----深入理解AOP(面向切面编程)

给程序做增强 事务是最小的执行单元&#xff0c;转账&#xff0c;同时成功、同时失败 TxUtils类式事务管理类&#xff0c;有6个静态方法&#xff0c;可以直接通过类名来调用&#xff0c;threadlocal线程池&#xff0c;还有一个静态代码块&#xff0c;来加载链接 从数据源中获取…

vue源码分析(十)—— 生命周期

文章目录 前言一、关键方法 callHook二、详细的钩子函数说明1.beforeCreate和create2.beforeMount & mounted注意点组件&#xff08;非根组件&#xff09;的渲染节点&#xff08;1&#xff09;invokeInsertHook函数&#xff08;2&#xff09;insert方法&#xff08;3&#…

docker离线安装及部署各类中间件(x86系统架构)

前言&#xff1a;此文主要针对需要在x86内网服务器搭建系统的情况 一、docker离线安装 1、下载docker镜像 https://download.docker.com/linux/static/stable/x86_64/ 版本&#xff1a;docker-23.0.6.tgz 2、将docker-23.0.6.tgz 文件上传到服务器上面&#xff0c;这里放在…

【WIN11新机/重装系统 把尿级系统设置优化】

目录 一、更改鼠标样式二、更改显示器刷新率三、常规文件存储路径0.存储感知1.保存新内容的地方2.快捷访问的文件路径3.Edge浏览器下载路径 四、通知关闭五、开机自启动关闭六、隐私关闭七、性能优化1.开机优化2.用户账控制关闭 八、关闭Windows自动更新九、任务栏设置十、必装…

7.若依参数设置、通知公告、日志管理

参数设置 对系统中的参数进行动态维护。 关闭验证码校验功能 打开页面注册功能 需要修改前端页面代码 通知公告 促进组织内部信息传递 若依只提供了一个半成品&#xff0c;只实现了管理员可以添加通知公告。 日志管理 追踪用户行为和系统运行状况。 登录日志 和操作日志…

修改网络ip地址方法有哪些?常用的有这四种

在数字时代&#xff0c;IP地址作为网络设备的唯一标识&#xff0c;对于网络连接和通信至关重要。然而&#xff0c;有时候我们可能需要修改设备的IP地址&#xff0c;以满足特定的网络需求或解决网络问题。本文将为您详细介绍几种修改网络IP地址的常用方法&#xff0c;无论是对于…

【Java项目】基于SpringBoot的【外卖点餐系统】

【Java项目】基于SpringBoot的【外卖点餐系统】 技术简介&#xff1a;本系统使用JSP技术&#xff0c;采用B/S架构、Spring Boot框架、MYSQL数据库进行开发设计。 系统简介&#xff1a;管理员&#xff1b;首页、个人中心、用户管理、商家管理、菜品分类管理、骑手管理、系统管理…

Spring Boot教程之三十九: 使用 Maven 将 Spring Boot 应用程序 Docker 化

如何使用 Maven 将 Spring Boot 应用程序 Docker 化&#xff1f; Docker是一个开源容器化工具&#xff0c;用于在隔离环境中构建、运行和管理应用程序。它方便开发人员捆绑其软件、库和配置文件。Docker 有助于将一个容器与另一个容器隔离。在本文中&#xff0c;为了将Spring B…

计算机网络|数据流向剖析与分层模型详解

文章目录 一、网络中的数据流向二、计算机网络通信模型1.OSI 模型2.TCP/IP 模型3.TCP/IP五层模型3.1 分层架构描述3.2各层地址结构3.3UDP数据包报头结构 三、总结 一、网络中的数据流向 在计算机网络中&#xff0c;数据的流向是指数据从发送端到接收端的传输路径。数据流向涉及…

uniapp——微信小程序,从客户端会话选择文件

微信小程序选择文件 文章目录 微信小程序选择文件效果图选择文件返回数据格式 API文档&#xff1a; chooseMessageFile 微信小程序读取文件&#xff0c;请查看 效果图 选择文件 /*** description 从客户端会话选择文件* returns {String} 文件路径*/ const chooseFile () &g…

vue3+vite+nginx打包

在开发环境下&#xff0c;已经可以正常地运行一个有增删改查功能的页面了&#xff0c;但如何把它发布到运行服务器呢&#xff1f;仍有许多的问题需要探索。 网上很多文章给了很大的帮助&#xff0c;但总是没有说明原理&#xff0c;对于像我这样的初学者来说&#xff0c;不知其…

CAN201 Introduction to Networking(计算机网络)Pt.2 传输层

文章目录 3. Transport Layer&#xff08;传输层&#xff09;3.1 Multiplexing and demultiplexing&#xff08;多路复用和多路分解&#xff09;3.2 Connectionless transport&#xff1a;UDP3.3 Principles of reliable data transfer3.4 Pipelined communication3.5 TCP: con…