Python中的“点阵字体”

news2024/12/24 9:09:00

“点阵字体”是个啥?,在python中怎么使?在现在全面高清的 5 G 5G 5G时代,它还有用“武”之地?


(笔记模板由python脚本于2024年06月01日 18:44:31创建,本篇笔记适合会基本编程的coder翻阅)


【学习的细节是欢悦的历程】

  • Python 官网:https://www.python.org/

  • Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
    地址:https://lqpybook.readthedocs.io/


  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚


  • My CSDN主页、My HOT博、My Python 学习个人备忘录
  • 好文力荐、 老齐教室
等风来,不如追风去……


“点阵字体”是个啥?
点 阵 字 体
(在python中怎么使?)


本文质量分:

96 96 96

本文地址: https://blog.csdn.net/m0_57158496/

CSDN质量分查询入口:http://www.csdn.net/qc


目 录

  • ◆ Python中的“点阵字体”
    • 1、点阵字体?
    • 2、适用python的点阵字库
    • 3、点阵字库应用场景
    • 4、点阵字库的使用
    • 5、在Python中应用点阵字库
      • 5.1 <font color='gray' size=2>怎样通过python应用点阵字库?
      • 5.2 luma.led_matrix库简介
    • 6、在python中模拟“点阵”打印
      • 6.1 模拟打印当前时间的`效果截屏`和`python代码`
      • 6.2 代码解析
    • 7、完整源码(Python)


◆ Python中的“点阵字体”


1、点阵字体?


   点 阵 字 体 是 个 啥 ? 点阵字体是个啥? 点阵字体,说白了就是在一个设定块状区域内,用点的序列““出””的样子。一般是在白色背景上用黑色的点“画”。

  看到“点阵字体”这个概念,想方儿对它进行了一些了解。您如有兴趣,跟着我一起扒拉扒拉,看看我都晓得了些啥?


您请先瞅瞅我在python中模拟的时间打印——

  • 代码运行效果截屏图片
    在这里插入图片描述
      这是用5×5*字符定义了一个只有0123456789: 11 11 11个字符的简单“点阵字库”来玩儿一下的产物。



回页目录


2、适用python的点阵字库


  在Python中生成点阵字库,通常可以使用专门的库来将字符转换成点阵格式。以下是一些可以用于生成点阵字库的Python库:

  1. python-font-to-dotmatrix - 这是一个可以将字体转换为点阵格式的库,可以用于将字符转换为可以在点阵显示器上显示的格式。
  2. dotmap - 这是一个可以将字符转换为点阵地图的库,可以用于生成字符的点阵表示。
  3. CharMapper - 这是一个可以用于创建字符映射的库,可以将字符映射到点阵显示上。
  4. Pillow(PIL Fork)- 虽然Pillow主要是图像处理库,但它可以用来处理图像上的文字,包括生成文字的点阵表示。
  5. python-bdf - 这个库可以解析BDF(Bitmap Distribution Format)字体文件,这种文件格式包含了字体的点阵信息。
  6. fontTools - 这个库提供了广泛的字体处理功能,包括操作TrueType、OpenType等字体格式,也可以用来提取字体的点阵信息。
  在使用这些库时,通常需要结合具体的硬件规格,如点阵显示器的分辨率和像素排列方式,来生成适用于特定设备的点阵字库。这些库可能需要结合其他图形处理库或硬件控制库来在点阵显示器上显示文字。

  在开发过程中,请确保遵守相关的开源协议和知识产权法律法规,尊重字体的版权和使用权限。如果需要商业用途或定制化的点阵字库,可能需要联系专业的字体设计公司或个人来获取授权和定制服务。



回页目录


3、点阵字库应用场景


  点阵字库具有广泛的实际应用场景,尤其是在嵌入式系统和硬件限制较大的场合。以下是一些常见的应用场景:

  1. **嵌入式显示*7:许多嵌入式设备,如单片机、微控制器驱动的设备、POS机、小型打印机、手持设备等,使用点阵字库来显示文本信息,因为它们通常不需要高分辨率的显示。
  2. 工业控制面板:在工业环境中,点阵字库常用于控制面板和显示屏,以显示状态信息、警报、实时数据等。
  3. 车载显示屏:汽车中的信息显示屏,如车载导航系统、电子仪表盘等,可能会使用点阵字库来显示信息。
  4. 电子看板和广告牌:在公共场所,如公交车站、地铁站、机场等地方,点阵字库可以用于显示时间、航班信息、广告等。
  5. 打印机:点阵打印机使用点阵字库来打印文本,尽管现在激光和喷墨打印机更为常见,但在一些特定的应用中,点阵打印机仍然在使用。
  6. 复古游戏和电子玩具:复古风格的电子游戏机和电子玩具可能会使用点阵字库来显示文本和图形。
  7. DIY项目:业余爱好者和DIY者可能会使用点阵字库在他们的项目中显示文本,如自制时钟、小型游戏机等。
  8. 通讯设备:一些老式的通讯设备,如传真机、电报机等,使用点阵字库来显示和打印文本信息。
  9. 专业仪器:在医疗、科研等专业领域,一些仪器可能会使用点阵字库来显示测量结果或状态信息。
  10. 艺术和设计:艺术家和设计师有时也会使用点阵字库来创造复古或独特的视觉效果。
  点阵字库的优势在于它们的简单性和低资源需求,这使得它们非常适合在资源受限的环境中工作。随着技术的发展,虽然高分辨率的显示技术越来越普及,但点阵字库仍然在许多应用中占有一席之地。



回页目录


4、点阵字库的使用


  点阵字库在不同的编程语言环境中使用方法一样吗?点阵字库的使用方法,在不同的编程语言环境中会有所不同,因为每种语言都有其独特的语法和库。不过,基本的思路是相似的,通常包括以下几个步骤:

  1. 选择或创建字库:首先,你需要有一个点阵字库,这可以是一个预先生成的字库文件,或者你可以使用特定的工具或库来创建一个。
  2. 加载字库:在程序中加载点阵字库,这通常涉及到读取字库文件或将字库数据集成到程序中。
  3. 映射字符:将需要显示的字符映射到点阵字库中的对应点阵数据。每个字符通常都有一个唯一的编码或索引。
  4. 显示或输出:将点阵数据输出到显示设备上,如点阵显示器、打印机或其他类型的输出设备。
  5. 字体渲染:在某些情况下,可能需要进行字体渲染,将点阵数据转换为可以显示的图形格式。
    在不同的编程语言中,这些步骤可能会以不同的方式实现。以下是一些示例:

下面是常用语言的三个简单示例代码


P y t h o n Python Python

# 假设使用一个预定义的点阵字库
from dotmatrix import DotMatrixFont
# 加载字库
font = DotMatrixFont('path/to/font')
# 获取字符点阵数据
character_bitmap = font.get_char_bitmap('A')
# 输出点阵数据到显示器
display.show_bitmap(character_bitmap)

C / C + + C/C++ C/C++

// 假设有一个点阵字库数组
const uint8_t font_data[] = {/* 点阵字库数据 */};
// 获取字符点阵数据
uint8_t char_bitmap[8]; // 假设每个字符是8x8的点阵
memcpy(char_bitmap, font_data + ('A' * 8), 8);
// 在显示设备上显示字符
display_draw_bitmap(char_bitmap, x, y);

J a v a S c r i p t JavaScript JavaScript(用于Web)

// 假设有一个点阵字库对象
const font = {/* 点阵字库对象 */};
// 获取字符点阵数据
const characterBitmap = font['A'];
// 在Canvas上绘制字符
const ctx = document.getElementById('canvas').getContext('2d');
ctx.drawImage(characterBitmap, x, y);

  在实际应用中,你需要根据所使用的编程语言和具体的库或框架来调整代码。不同的库可能会提供不同的函数和对象来操作点阵字库。因此,了解你所使用的语言和库的文档是至关重要的。



回页目录


5、在Python中应用点阵字库


5.1 怎样通过python应用点阵字库?

  在Python中应用点阵字库,通常是指使用特定的库来渲染点阵字体,这种字体由像素点组成,常用于嵌入式设备或需要小尺寸字体的场合。以下是一个基本的步骤指南,展示如何在Python中应用点阵字库:

  1. 选择或获取点阵字库
    点阵字库通常是一些.h文件,包含了字符的像素数据。你可以从网上找到一些开源的点阵字库,或者使用工具生成你自己的点阵字库。
  2. 选择合适的Python库
    有一些Python库支持点阵字库的使用,例如luma.led_matrixPillow等。这些库可以帮助你将点阵字库中的数据转换成可以在屏幕上显示的图像。
  3. 安装必要的库
    使用pip安装你选择的库。例如,如果你选择了luma.led_matrix,你可以使用以下命令安装:
    pip install luma.led_matrix
    
  4. 编写代码加载点阵字库
    在Python代码中,你可以定义函数来加载点阵字库文件,并将字库中的数据转换成Python可以理解的结构。
  5. 渲染字体
    使用选定的库,根据点阵字库中的数据渲染字体到屏幕或图像上。
  6. 显示或保存结果
    渲染完成后,你可以将结果显示在屏幕上,或者保存为图片文件。


下面是一个使用Pillow库的简单例子,展示如何加载点阵字库并显示一个字符:

from PIL import Image, ImageDraw
# 假设你有一个点阵字库,每个字符是一个8x8像素的矩阵
# 定义一个字符的点阵数据
dot_matrix_char = [
    [0, 1, 1, 0, 1, 1, 0, 0],
    [1, 0, 0, 1, 0, 0, 1, 0],
    [1, 0, 0, 1, 0, 0, 1, 0],
    [1, 0, 0, 1, 0, 0, 1, 0],
    [1, 0, 0, 1, 0, 0, 1, 0],
    [1, 0, 0, 1, 0, 0, 1, 0],
    [1, 0, 0, 1, 0, 0, 1, 0],
    [0, 1, 1, 0, 1, 1, 0, 0]
]
# 创建一个8x8的黑色图像
img = Image.new('1', (8, 8), 0)
# 使用ImageDraw来绘制点阵字符
d = ImageDraw.Draw(img)
for y, row in enumerate(dot_matrix_char):
    for x, value in enumerate(row):
        if value == 1:
            d.point((x, y), fill=1)
# 显示图像
img.show()

  这个例子只是展示了如何在Python中处理点阵数据的基本方法。实际应用中,你可能需要读取*.h文件中的数据,或者处理更复杂的字体和格式。



回页目录


5.2 luma.led_matrix库简介


  Pillowluma.led_matrix都是比较好用的Python库,Pillow功能强大好用且大家都比较熟悉,在这里就简单介绍一下后者。luma.led_matrix是一个轻量级且易用的Python 库,它提供了一个API来控制各种LED矩阵和类似显示设备。这个库是luma.lcd项目的一部分,后者是一组用于控制LCD显示屏的Python库。


luma.led_matrix 支持多种硬件,包括但不限于:

  • MAX7219或MAX7221控制的LED矩阵
  • APA102 / DotStar RGB LED矩阵
  • WS2812 / NeoPixel RGB LED矩阵
  • PWM控制的单色LED矩阵


这个库的主要特点包括:

  • 支持多种硬件设备
  • 提供简单的API来绘制文本、形状和图像
  • 支持多种字体,包括点阵字体
  • 可以与luma.core库结合使用,后者提供了更高级的图形功能,如旋转、缩放和颜色处理


  luma.led_matrix 库通常用于创建信息显示屏、广告牌、状态指示器等。它通过SPI或类似接口与LED矩阵板通信,允许用户在Python中轻松控制LED矩阵的显示内容。


安装luma.led_matrix库通常很简单,可以使用pip:

pip install luma.led_matrix


  使用luma.led_matrix时,你需要根据你的硬件设备选择合适的显示驱动,并初始化一个显示实例。然后,你可以使用提供的绘图功能来显示文本、图像和其他图形元素。
以下是一个简单的例子,展示了如何使用luma.led_matrix库来显示文本:

from luma.led_matrix.device import max7219
from luma.core.interface.serial import spi, noop
from luma.core.render import canvas
from luma.core.legacy import text
# 初始化SPI接口
serial = spi(port=0, device=0, gpio=noop())
# 创建一个MAX7219控制的LED矩阵设备实例
device = max7219(serial, width=32, height=8)
# 使用canvas来绘制内容
with canvas(device) as draw:
    text(draw, (0, 0), "Hello World", fill="white")
# 保持程序运行,以便LED矩阵可以继续显示内容
try:
    while True:
        pass
except KeyboardInterrupt:
    pass

  这个例子假设你有一个连接到SPI接口的MAX7219控制的LED矩阵。它会显示文本 “Hello World”。注意,实际使用时你可能需要根据你的硬件配置调整SPI端口和设备参数。



回页目录


6、在python中模拟“点阵”打印


6.1 模拟打印当前时间的效果截屏python代码


  • 代码运行效果截屏图片
    在这里插入图片描述

  • 点阵字库0123456789:,仅11个ASCII字符的简易点阵字库,每个字符是5×5的点阵

chars = [
    [
        "     ",
        "  *  ",
        "     ",
        "  *  ",
        "     ",
    ],
    [
        "*****",
        "*   *",
        "*   *",
        "*   *",
        "*****"
    ],
    [
        "  *  ",
        " **  ",
        "  *  ",
        "  *  ",
        " *** "
    ],
    [
        "*****",
        "    *",
        "*****",
        "*    ",
        "*****"
    ],
    [
        "*****",
        "    *",
        " ****",
        "    *",
        "*****"
    ],
    [
        "*  * ",
        "*  * ",
        "*****",
        "   * ",
        "   * "
    ],
    [
        "*****",
        "*    ",
        "*****",
        "    *",
        "*****"
    ],
    [
        "*****",
        "*    ",
        "*****",
        "*   *",
        "*****"
    ],
    [
        " ****",
        "    *",
        "    *",
        "    *",
        "    *"
    ],
    [
        "*****",
        "*   *",
        "*****",
        "*   *",
        "*****"
    ],
    [
        "*****",
        "*   *",
        "*****",
        "    *",
        "*****"
    ]
] # 11个字符图形列表

charDict = dict(zip(':0123456789', chars)) # 利用dict和zip函数,生成字符映射字典——简易“点阵字库”

  自己“”了一个简易点阵字符列表,利用dict和zip函数,将列表生成字符映射字典——简易“点阵字库”。


Python代码


t = localtime()[3:5] # 截取当前系统时、分数据
nowstr = f"{t[0]:0>2}:{t[1]:0>2}" # 字符串格式化当前时间
#input(nowstr) 
nowArray = [charDict.get(i) for i in nowstr]
#input(nowArray)

print() 

for i in range(5):
    print(f"{'':>5}{' '.join([nowArray[j][i] for j in range(5)])}")

print()

#lines = '\n'.join([f"{'':>5}{' '.join([nowArray[j][i] for j in range(5)])}" for i in range(5)]) # 列表解析每行字符数据并用“\n”拼接
#print(f"\n{lines}\n")

  • 被注释掉的两行代码,可以更好地完成for循环的功能
    在这里插入图片描述



回页目录


6.2 代码解析


  正编辑中……




Python代码






回页目录


7、完整源码(Python)

(源码较长,点此跳过源码)

#!/sur/bin/nve python
## coding: utf-8 
from time import localtime 



chars = [
    [
        "     ",
        "  *  ",
        "     ",
        "  *  ",
        "     ",
    ],
    [
        "*****",
        "*   *",
        "*   *",
        "*   *",
        "*****"
    ],
    [
        "  *  ",
        " **  ",
        "  *  ",
        "  *  ",
        " *** "
    ],
    [
        "*****",
        "    *",
        "*****",
        "*    ",
        "*****"
    ],
    [
        "*****",
        "    *",
        " ****",
        "    *",
        "*****"
    ],
    [
        "*  * ",
        "*  * ",
        "*****",
        "   * ",
        "   * "
    ],
    [
        "*****",
        "*    ",
        "*****",
        "    *",
        "*****"
    ],
    [
        "*****",
        "*    ",
        "*****",
        "*   *",
        "*****"
    ],
    [
        " ****",
        "    *",
        "    *",
        "    *",
        "    *"
    ],
    [
        "*****",
        "*   *",
        "*****",
        "*   *",
        "*****"
    ],
    [
        "*****",
        "*   *",
        "*****",
        "    *",
        "*****"
    ]
] # 5×5的点阵字符列表

charDict = dict(zip(':0123456789', chars)) # 生成字符映射字典

t = localtime()[3:5] # 截取当前系统时、分数据
nowstr = f"{t[0]:0>2}:{t[1]:0>2}" # 字符串格式化当前时间
#input(nowstr) 
nowArray = [charDict.get(i) for i in nowstr]
#input(nowArray)

print() 

for i in range(5):
    print(f"{'':>5}{' '.join([nowArray[j][i] for j in range(5)])}")

print()

#lines = '\n'.join([f"{'':>5}{' '.join([nowArray[j][i] for j in range(5)])}" for i in range(5)]) # 列表解析每行字符数据并用“\n”拼接
#print(f"\n{lines}\n")



回页首


上一篇:  对AI的提问技艺(人工智能大行其道,如何借势?始于问询。要得要得预期,精于“提问技巧”)
下一篇: 



我的HOT博:

  本次共计收集 311 篇博文笔记信息,总阅读量43.82w。数据于2024年03月22日 00:50:22完成采集,用时6分2.71秒。阅读量不小于6.00k的有 7 7 7篇。

  • 001
    标题:让QQ群昵称色变的神奇代码
    (浏览阅读 5.9w )
    地址:https://blog.csdn.net/m0_57158496/article/details/122566500
    点赞:25 收藏:86 评论:17
    摘要:让QQ昵称色变的神奇代码。
    首发:2022-01-18 19:15:08
    最后编辑:2022-01-20 07:56:47

  • 002
    标题:Python列表(list)反序(降序)的7种实现方式
    (浏览阅读 1.1w )
    地址:https://blog.csdn.net/m0_57158496/article/details/128271700
    点赞:8 收藏:35 评论:8
    摘要:Python列表(list)反序(降序)的实现方式:原址反序,list.reverse()、list.sort();遍历,全数组遍历、1/2数组遍历;新生成列表,resersed()、sorted()、负步长切片[::-1]。
    首发:2022-12-11 23:54:15
    最后编辑:2023-03-20 18:13:55

  • 003
    标题:pandas 数据类型之 DataFrame
    (浏览阅读 9.7k )
    地址:https://blog.csdn.net/m0_57158496/article/details/124525814
    点赞:7 收藏:36 
    摘要:pandas 数据类型之 DataFrame_panda dataframe。
    首发:2022-05-01 13:20:17
    最后编辑:2022-05-08 08:46:13

  • 004
    标题:个人信息提取(字符串)
    (浏览阅读 8.2k )
    地址:https://blog.csdn.net/m0_57158496/article/details/124244618
    点赞:2 收藏:15 
    摘要:个人信息提取(字符串)_个人信息提取python。
    首发:2022-04-18 11:07:12
    最后编辑:2022-04-20 13:17:54

  • 005
    标题:Python字符串居中显示
    (浏览阅读 7.6k )
    地址:https://blog.csdn.net/m0_57158496/article/details/122163023
    评论:1

  • 006
    标题:罗马数字转换器|罗马数字生成器
    (浏览阅读 7.5k )
    地址:https://blog.csdn.net/m0_57158496/article/details/122592047
    摘要:罗马数字转换器|生成器。
    首发:2022-01-19 23:26:42
    最后编辑:2022-01-21 18:37:46

  • 007
    标题:回车符、换行符和回车换行符
    (浏览阅读 6.0k )
    地址:https://blog.csdn.net/m0_57158496/article/details/123109488
    点赞:2 收藏:3 
    摘要:回车符、换行符和回车换行符_命令行回车符。
    首发:2022-02-24 13:10:02
    最后编辑:2022-02-25 20:07:40


推荐条件 阅读量突破6.00k
(更多热博,请点击蓝色文字跳转翻阅)

  • 截屏图片
    在这里插入图片描述
      (此文涉及ChatPT,曾被csdn多次下架,前几日又因新发笔记被误杀而落马。躺“未过审”还不如回收站,回收站还不如永久不见。😪值此年底清扫,果断移除。留此截图,以识“曾经”。2023-12-31)



回页首


老齐漫画头像

精品文章:

  • 好文力荐:齐伟书稿 《python 完全自学教程》 Free连载(已完稿并集结成书,还有PDF版本百度网盘永久分享,点击跳转免费🆓下载。)
  • OPP三大特性:封装中的property
  • 通过内置对象理解python'
  • 正则表达式
  • python中“*”的作用
  • Python 完全自学手册
  • 海象运算符
  • Python中的 `!=`与`is not`不同
  • 学习编程的正确方法

来源:老齐教室


◆ Python 入门指南【Python 3.6.3】


好文力荐:

  • 全栈领域优质创作者——[寒佬](还是国内某高校学生)博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是编程学习的两大利器。
  • 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
  • 靠谱程序员的好习惯
  • 大佬帅地的优质好文“函数功能、结束条件、函数等价式”三大要素让您认清递归

CSDN实用技巧博文:

  • 8个好用到爆的Python实用技巧
  • python忽略警告
  • Python代码编写规范
  • Python的docstring规范(说明文档的规范写法)

s://blog.csdn.net/m0_37907797' target=_blank>帅地的优质好文 “函数功能、结束条件、函数等价式”三大要素让您认清递归

CSDN实用技巧博文:

  • 8个好用到爆的Python实用技巧
  • python忽略警告
  • Python代码编写规范

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue.js 与 TypeScript(1) :项目配置、props标注类型、emits标注类型

像 TypeScript 这样的类型系统可以在编译时通过静态分析检测出很多常见错误。这减少了生产环境中的运行时错误&#xff0c;也让我们在重构大型项目的时候更有信心。通过 IDE 中基于类型的自动补全&#xff0c;TypeScript 还改善了开发体验和效率。 一、项目配置 1、在项目中添…

USB (1)

再看USB 其实回过头看USB 是可以和无线 有线(internet) 可以和PCIe 甚至AXI类比的 它们共通处在于都是communication 有限通信 有7层网络协议 在USB也是分层的 不同的协议,依赖的介质不一样 这就要求相应的Physical层处理 USB的physical层是基于Serdes的,所以有串并/并串的…

组装服务器重装linux系统【idrac集成戴尔远程控制卡】

&#x1f341;博主简介&#xff1a; &#x1f3c5;云计算领域优质创作者 &#x1f3c5;2022年CSDN新星计划python赛道第一名 &#x1f3c5;2022年CSDN原力计划优质作者 &#x1f3c5;阿里云ACE认证高级工程师 &#x1f3c5;阿里云开发者社区专…

内网安全--隧道技术代理技术

注:本文仅做技术交流,请勿非法破坏... 目录 项目: 1-Ngrok 用法 2-Frp 用法 3-Nps 用法 4-Spp 用法 工具: windows下: Proxifier(推荐~) Sockscap ccproxy Linux下: Proxychains 用法 http://t.csdnimg.cn/88Ew7 隧道技术&#xff1a;解决不出网协议上线的问…

ARM Linux 驱动开发学习之字符设备驱动开发

Linux 中的设备驱动程序是连接硬件设备和操作系统之间的重要桥梁&#xff0c;确保硬件设备能够在操作系统控制下正常工作。在 Linux 中&#xff0c;设备驱动主要分为三大类&#xff1a;字符设备驱动、块设备驱动和网络设备驱动。下面我将详细解释这三类驱动的特点、用途和区别。…

激活函数对比

激活函数 sigmoid / tanh / relu / leaky relu / elu / gelu / swish 1、sigmoid 优缺点 1) 均值!0&#xff0c;导致fwxb求导时&#xff0c;方向要么全正要么全负 可以通过batch批量训练来缓解 2) 输入值大于一定范围梯度就会消失 3) 运算复杂 2、tanh 优缺点 1) 均值0 2)…

To C道路越走越夯实,1688彻底变身了?

在偌大的电商市场&#xff0c;消费者都是专业的“掘宝者”&#xff0c;热衷于发现各种新奇商品和采购新通路。 拼多多、1688等平台也正是在这种情况下&#xff0c;成为消费市场的“宠儿”。其中&#xff0c;1688的发展路径较为独特&#xff0c;据天眼查&#xff0c;其为源头厂…

苍穹外卖笔记-07-菜品管理-增加、删除、修改、查询分页还有菜品起售或停售状态

菜品管理 1 新增菜品1.1 需求分析与设计1.2 代码开发文件上传新增菜品实现 1.3 功能测试 2 菜品分页查询2.1 需求分析和设计2.2 代码开发设计DTO类设计VO类Controller层Service层Mapper层 2.3 功能测试 3 删除菜品3.1 需求分析和设计3.2 代码开发Controller层Service层Mapper层…

Apple开发者证书创建完整过程

1.创建CSR文件: 打开钥匙串访问程序 选择从证书颁发机构请求 创建证书 保存CSR文件到桌面 成功如下: 开始创建证书: 选择

SDXL终于有了足够好的 Openpose 和 Scribble 模型可以使用了。

SDXL终于有了足够好的 Openpose 和 Scribble 模型可以使用了。 xinsir 发布的Openpose 和 Scribble 模型质量相当好&#xff0c;尤其是 Openpose。不过只支持姿态不支持面部。 再加上前几天的 Anyline 线条预处理器和 Canny 模型。SDXL 的生态在发布快一年的时候成熟了。 模…

QA测试开发工程师面试题满分问答26: Cookie、Session、Token和JWT的定义、区别和使用场景

这是一个非常常见的面试题,需要全面掌握 Cookie、Session、Token 和 JWT 的定义和使用场景,以及它们之间的区别。下面是一个详细的满分回答: Cookie: 定义: Cookie 是一种存储在客户端(通常是浏览器)的小型文本文件,用于在客户端与服务器之间保持会话状态。使用场景: 常用于保存…

sqli-labs 靶场 less-5、6 第五关和第六关:判断注入点、使用错误函数注入爆库名、updatexml()函数

SQLi-Labs是一个用于学习和练习SQL注入漏洞的开源应用程序。通过它&#xff0c;我们可以学习如何识别和利用不同类型的SQL注入漏洞&#xff0c;并了解如何修复和防范这些漏洞。Less 5 SQLI DUMB SERIES-5 判断注入点&#xff1a;1. 首先&#xff0c;尝试正常的回显内容&#x…

Halcon 双相机标定与拼图(一)

一、概述 最近有一个多相机标定的项目&#xff0c;大概是4个相机来标定&#xff0c;同一坐标系&#xff0c;然后拼接图&#xff0c;之前双相机标定的时候也大概看看&#xff0c;所以今天就找了那个halcon 案例多学一下&#xff0c;后面我打算做一个对位贴合的东西&#xff0c;…

FreeModBusRtu移植 --stm32L431RCT6(小熊派)

文章目录 前言一、移植前需要的工作二、修改点讲解1.串口中断2.定时器3.保持寄存器4.测试 总结 前言 最近需要做一个modbus485的传感器&#xff0c;主要是用来做从机。之前做过主机的是stm标准库&#xff0c;那这次做一个HAL的从机协议栈&#xff0c;方便大家直接获取数据。 移…

迈入智能新纪元:智慧机房运维系统引领行业变革

在数字化飞速发展的今天&#xff0c;机房作为信息时代的“心脏”&#xff0c;其稳定运行对于企业的业务连续性至关重要。然而&#xff0c;传统的机房运维模式面临着诸多挑战&#xff0c;如响应速度慢、故障定位难、资源浪费大等问题。智慧机房运维系统&#xff0c;它将以智能化…

裁判文书:司法公正的“名片”

在法治社会的建设中&#xff0c;裁判文书不仅是法院裁判活动的产物&#xff0c;更是司法公正的重要体现。今天&#xff0c;我们就来聊聊裁判文书上的那些知识&#xff0c;带大家走进这个充满法律智慧的领域。 一、什么是裁判文书&#xff1f; 裁判文书&#xff0c;是人民法院…

【乐吾乐2D可视化组态编辑器】在线使用,快速入门

一、在线使用 乐吾乐2D可视化组态编辑器地址&#xff1a;https://2d.le5le.com/ 二、步骤 本教程将带领你快速体验2D可视化编辑器的全流程开发。 1.创建图纸 进入2d编辑器主界面后&#xff0c;主界面最中心为图纸面板&#xff0c;默认为空图纸&#xff0c;在界面左侧为组…

Paperless-Ngx文档管理系统结合内网穿透实现随时远程搜索查阅文本

文章目录 前言1. 部署Paperless-ngx2. 本地访问Paperless-ngx3. Linux安装Cpolar4. 配置公网地址5. 远程访问6. 固定Cpolar公网地址7. 固定地址访问 前言 Paperless-ngx是一个开源的文档管理系统&#xff0c;可以将物理文档转换成可搜索的在线档案&#xff0c;从而减少纸张的使…

工业级物联网边缘网关解决方案-天拓四方

随着工业4.0时代的到来&#xff0c;越来越多的企业开始寻求智能化升级&#xff0c;以提高生产效率、降低运营成本并增强市场竞争力。然而&#xff0c;在实际的转型升级过程中&#xff0c;许多企业面临着数据孤岛、设备兼容性差、网络安全风险高等问题&#xff0c;这些问题严重制…

Google Guice超轻量级依赖注入容器

Google Guice是Goolge开源的一款超轻量级依赖注入容器&#xff0c;超轻量的特点主要体现在&#xff1a;可与其它依赖注入容器混合使用&#xff0c;例如和Spring/Spring Boot的IOC容器混合使用&#xff1b;不需要任何配置信息&#xff0c;只需要引入几个有限的依赖包即可以使用&…