Python中的“点阵字体”

“点阵字体”是个啥?,在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代码编写规范

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

BabylonJS 6.0文档 Deep Dive 动画(四):通过动画排序制作卡通片

一种最为直接的方法是为每个动画剪辑&#xff08;Animatin Clip&#xff09;指定开始时间&#xff0c;最终形成一个卡通动画&#xff08;Cartoon&#xff09;。 1. 设计 1.1 概述 动画的脚本如下&#xff1a; 摄像机显示了一栋带门的建筑物。摄像机靠近门并停止。门打开&am…

⾃动化批量管理-Ansible

目录 一、ansible 简介 自动化工具选择 &#xff08;了解&#xff09;​编辑 1、ansible 是什么&#xff1f; 2、ansible 特点 3、ansible 架构图 二、ansible 任务执行 1、ansible 任务执行模式 2、ansible 执行流程 3、ansible 命令执行过程 三、ansible 配置详解 …

Win32和c++11多线程

Win32和c11多线程 一、概念1.线程的特点线程内核对象线程控制块线程是独立调度和分派的基本单位共享进程的资源 2.线程的上下文切换引起上下文切换的原因 3.线程的状态 二、Windows多线程API1.CreateThread创建线程2.获取线程ID3.关闭线程句柄4.挂起线程5.恢复线程6.休眠线程的…

必应bing国内广告账户如何注册推广呢?

作为全球第二大搜索引擎&#xff0c;必应Bing以其庞大的用户基础和精准的定向能力&#xff0c;为企业提供了拓展市场的绝佳平台。对于许多企业来说&#xff0c;必应Bing广告账户的注册与推广流程可能显得复杂而繁琐。此时&#xff0c;您不妨考虑携手云衔科技&#xff0c;共同开…

echaerts图例自动滚动并隐藏翻页按钮

效果图 代码 legend: {itemHeight: 14,itemWidth: 14,height: "300", //决定显示多少个// 通过 CSS 完全隐藏翻页按钮pageButtonItemGap: 0,pageButtonPosition: end,pageIconColor: transparent, // 隐藏翻页按钮pageIconInactiveColor: transparent, // 隐藏翻页按…

神经网络 torch.nn---优化器的使用

torch.optim - PyTorch中文文档 (pytorch-cn.readthedocs.io) torch.optim — PyTorch 2.3 documentation 反向传播可以求出神经网路中每个需要调节参数的梯度(grad)&#xff0c;优化器可以根据梯度进行调整&#xff0c;达到降低整体误差的作用。下面我们对优化器进行介绍。 …

2024年6月6日第十五周六级系列1作文

对于2024年上半年六级作文预测的大纲 一、作文总体格式与要求 六级作文将继续沿用以往的大致格式&#xff0c;主要包括两个主要任务&#xff1a; Task 1: 针对给定话题的简短摘要或观点文章&#xff08;150-200字&#xff09;。Task 2: 就更复杂的话题进行深入分析的作文&…

23 - 每位教师所教授的科目种类的数量(高频 SQL 50 题基础版)

23 - 每位教师所教授的科目种类的数量 考点&#xff1a; 排序和分组 selectteacher_id,count(distinct subject_id) cnt fromTeacher group byteacher_id;

完整指南:远程管理 Linux 服务器的 Xshell6 和 Xftp6 使用方法(Xshell无法启动:要继续使用此程序........,的解决方法)

&#x1f600;前言 在当今软件开发领域&#xff0c;远程管理 Linux 服务器已成为日常工作的重要组成部分。随着团队成员分布在不同的地理位置&#xff0c;远程登录工具的使用变得至关重要&#xff0c;它们为开发人员提供了访问和管理服务器的便捷方式。本文将介绍两款功能强大的…

敏捷开发:拥抱变化,持续交付价值的艺术

目录 敏捷开发&#xff1a;拥抱变化&#xff0c;持续交付价值的艺术 引言 第一部分&#xff1a;敏捷开发是什么&#xff1f; a.定义&#xff1a;敏捷开发的基本概念和核心原则 b.历史&#xff1a;敏捷宣言的诞生和敏捷开发的历史背景 c.价值观&#xff1a;敏捷宣言的12条…

一篇文章带你入门XXE

1.什么是XXE&#xff1f; XML External Entity&#xff08;XXE&#xff09;攻击是一种利用 XML 处理器的漏洞&#xff0c;通过引入恶意的外部实体来攻击应用程序的安全性。这种攻击通常发生在对用户提供的 XML 数据进行解析时&#xff0c;攻击者利用了 XML 规范允许引用外部实体…

USB (1)

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

JavaScript html css前端 日期对象 date对象 日期格式化 时间戳

日期对象 Date对象 Date 对象和 Math 对象不一样&#xff0c;他是一个构造函数&#xff0c;所以我们需要实例化后才能使用 Date 实例用来处理日期和时间 Date()使用方法 示例&#xff1a;获取当前时间 let now new Date() console.log(now) 示例&#xff1a;获取指定时间…

二叉树非递归遍历(C++)

文章目录 前言一、前序遍历二、中序遍历三、后序遍历总结 前言 我们之前学习过用递归解决二叉树的前序&#xff0c;中序&#xff0c;后序。 下面我们将用非递归&#xff0c;也就是遍历的方法对二叉树进行遍历 一、前序遍历 我们要解决这个问题最重要的就是用另一个角度看待这…

推荐个 Edge/Chrome/Firefox 都支持的 IP 定位查询扩展

作为一个博客站长&#xff0c;对 IP 地址应该都不陌生&#xff0c;可以说是跟站长的工作是息息相关的&#xff0c;反正明月几乎每天都会面临 IP 查询、定位的需要&#xff0c;今天让明月给找到了一个叫”IP 定位查询“的浏览器扩展&#xff0c;在 Edge 和 Firefox 下体验后感觉…

嵌入式Linux系统编程 — 2.2 标准I/O库:检查或复位状态

目录 1 检查或复位状态简介 2 feof()函数 2.1 feof()函数简介 2.2 示例程序 3 ferror()函数 4 clearerr()函数 4.1 clearerr()函数简介 4.2 示例程序 1 检查或复位状态简介 调用 fread() 函数读取数据时&#xff0c;如果返回值小于参数 nmemb 所指定的值&#xff0c;这…

【MySQL数据库】:MySQL内外连接

目录 内外连接和多表查询的区别 内连接 外连接 左外连接 右外连接 简单案例 内外连接和多表查询的区别 在 MySQL 中&#xff0c;内连接是多表查询的一种方式&#xff0c;但多表查询包含的范围更广泛。外连接也是多表查询的一种具体形式&#xff0c;而多表查询是一个更…

[笔试训练](三十四)100:[NOIP2008]ISBN号码101:kotori和迷宫102:矩阵最长递增路径

目录 100:[NOIP2008]ISBN号码 101:kotori和迷宫 102:矩阵最长递增路径 100:[NOIP2008]ISBN号码 题目链接:[NOIP2008]ISBN号码_牛客题霸_牛客网 (nowcoder.com) 题目&#xff1a; 题解: 简单模拟 #include <iostream> #include<string> using namespace std; str…

【ARM Cache 系列文章 7.2 – ARMv8/v9 MMU 页表配置详细介绍 03 】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 表描述符 Table descriptor52-bit OA 颗粒为4KB 和16KB52-bit OA 颗粒为64KB48-bit OA 颗粒为4KB 和16KBStage 1 和 Stage 2 介绍第一阶段(Stage 1)转换的表描述符属性字段第二阶段(…

Apple开发者Identifier唯一身份标识创建

1. 选中Identifiers然后点击加号进入创建页面 2.选择要注册的标识类型 选择类型为App然后点击继续 输入应用描述与BundleID并勾选要开启的功能后点击继续 点击注册标识 注册成功后,会在标识列表中看到