10.LED点阵实验
LED点阵是一种由发光二极管排列而成的显示器件,在生活里的各种电器中很常见,像汽车报站器和广告屏等地方都会用到它。
平时用得比较多的是 8×8 点阵。多个 8×8 点阵能组合成不同大小的 LED 点阵显示屏,比如 4 个 8×8 点阵可以拼成一个 16×16 点阵。只要懂了 8×8LED 点阵是怎么工作的,其他大小的 LED 点阵显示屏原理也就差不多了。下面就来讲讲 8×8LED 点阵。
8 x 8点阵里一共有64个发光二极管,这些二极管都放在行线和列线交叉的地方。要让某个二极管亮起来,,只要让对应的哪一行接上1电平(也就是高电平,相当于有电),那一列接上0电平(也就是低电平,相当于没有电)就行。
举个例子,要是想点亮第一个点,把 1 脚接上高电平,a 脚接上低电平,这个点就会亮了。
要是想点亮第一行,那就把第 1 脚接上高电平,然后把(a、b、c、d、e、f、g、h )这些引脚都接上低电平,这样第一行的所有点就都亮起来了。
要是想点亮第一列,把第 a 脚接上低电平,再把(1、2、3、4、5、6、7、8)这些引脚都接上高电平,第一列的点就都亮了。
所以说,LED 点阵用起来其实并不难,只要控制好行和列的电平高低,就能让它按我们的想法显示出不同的图案或者文字。
1.8x8LED和74HC595
8*8LED 点阵模块由 8 行 8 列共 64 个发光二极管组成,这些二极管整齐排列在点阵之上,通过控制行与列的电平,就能实现不同二极管的亮灭,进而呈现出各种图案或文字。
而 74HC595 模块则是一种移位寄存器芯片,它在本实验中起着至关重要的作用,主要用于协助控制 LED 点阵的行数据。
在电路连接方面,74HC595 模块有三个关键的控制管脚,分别为 SER(串行数据输入引脚)、RCLK(存储寄存器时钟输入引脚)以及 SRCLK(移位寄存器时钟输入引脚)。这三个管脚被直接连接至 51 单片机的 P3.4 - P3.6 IO 口。当单片机向这些管脚发送不同的电信号时,就能依据 74HC595 芯片的通信时序,精准地控制数据的传输。
74HC595 模块的输出端,与 8*8LED 点阵模块的行端口相连,由于该连接,LED 点阵模块行端口就等同于 LED 发光二极管的阳极。而 LED 点阵模块的列端口,自然就对应着发光二极管的阴极。
在实际控制过程中,要实现对 LED 点阵的有效操控,我们需要严格依照 74HC595 芯片既定的通信时序,通过 51 单片机的相应管脚来传输数据。具体来说,当单片机按照 74HC595 芯片的通信要求,向其控制管脚发送数据时,74HC595 芯片会将接收到的串行数据,转换为并行数据输出至 LED 点阵的行端口,从而控制 LED 点阵的行数据。
再依据 LED 发光二极管的导通原理,当阳极施加高电平,阴极施加低电平时,对应的二极管就会点亮;反之,若阳极电平低于阴极电平,二极管则熄灭。
所以,在本实验设计里,我们利用单片机的 P0 口来控制 LED 点阵的列,通过改变 P0 口各管脚的电平高低,就能控制 LED 点阵列端口的电平状态;同时,借助 74HC595 模块来控制点阵的行,以此实现对整个 8*8LED 点阵的全面控制,让其按照我们的预期显示出各类信息。
2.显示笑脸
#include <REGX52.H>
#include "Delay.h"
sbit RCK=P3^5; //RCLK
sbit SCK=P3^6; //SRCLK
sbit SER=P3^4; //SER#define MATRIX_LED_PORT P0// 向 74HC595 写入一个字节的数据
void _74HC595_WriteByte(unsigned char Byte)
{unsigned char i;for(i=0;i<8;i++){// 从高位到低位依次取出字节的每一位SER=(Byte & (0x80 >> i))? 1 : 0;// 上升沿将数据移入移位寄存器SCK=1;SCK=0;}// 上升沿将移位寄存器的数据锁存到存储寄存器RCK=1;RCK=0;
}// LED显示屏显示一列数据
void MatrixLED_ShowColumn(unsigned char Column, unsigned char Data)
{// 向 74HC595 写入数据 0~0xFF 高位在上,1为亮,0为灭_74HC595_WriteByte(Data);// 选择要显示的列 0~7MATRIX_LED_PORT=~(0x80 >> Column);Delay(1);MATRIX_LED_PORT=0xFF;
}void main()
{ // 初始化时钟信号SCK=0;RCK=0;while(1){MatrixLED_ShowColumn(0, 0x3C);MatrixLED_ShowColumn(1, 0x42);MatrixLED_ShowColumn(2, 0xA9);MatrixLED_ShowColumn(3, 0x85);MatrixLED_ShowColumn(4, 0x85);MatrixLED_ShowColumn(5, 0xA9);MatrixLED_ShowColumn(6, 0x42);MatrixLED_ShowColumn(7, 0x3C);}
}
3.显示爱心
#include <REG51.H>sbit RCK=P3^5; //RCLK
sbit SCK=P3^6; //SRCLK
sbit SER=P3^4; //SER#define MATRIX_LED_PORT P0
//向74HC595写入一个字节的数据
void _74HC595_WriteByte(unsigned char Byte)
{unsigned char i;for(i=0;i<8;i++){//从高位到低位依次取出字节的每一位SER=(Byte&(0x80>>i))? 1:0;//上升沿将数据移入移位寄存器SCK=1;SCK=0;}//上升沿将移位寄存器数据锁存到存储寄存器RCK=1;RCK=0;
}
void MatrixLED_ShowColumn(unsigned char Column,unsigned char Data)
{//向74HC595写入数据,0~0xFF 高位在上,1为亮,0为灭_74HC595_WriteByte(Data);//选择要显示的列 0~7MATRIX_LED_PORT=~(0x80>>Column);}
unsigned char picture[] = {0x30,0x78,0x7C,0x3E,0x3E,0x7C,0x78,0x30};
void main()
{//初始化时钟信号SCK=0;RCK=0;while(1){unsigned char i;for(i=0;i<8;i++){MatrixLED_ShowColumn(i,picture[i]);}}
}
4.单片鸡点阵屏之坤坤跳舞
main.c
#include <REGX52.H>
#include "MatrixLED.h"
unsigned char code action[]=
{0x00,0x03,0x24,0x58,0xA4,0x02,0x01,0x00,0x00,0x01,0x02,0x14,0x2C,0x56,0x01,0x00,0x00,0x01,0x02,0x04,0x14,0x2E,0x51,0x00,0x00,0x01,0x02,0x14,0x2C,0x56,0x01,0x00,0x00,0x03,0x24,0x58,0xA4,0x02,0x01,0x00
};
void main()
{unsigned char i,offset=0,Count=0;MatrixLED_Init();while(1){for(i = 0;i<8;i++){MatrixLED_ShowColumn(i,action[i+offset]);}Count++;if(Count>40){Count=0;offset+=8;if(offset>24)offset = 0;}}
}
MaatrixLED.c
#include <REGX52.H>
#include "Delay.h"sbit RCK = P3^5;
sbit SCK = P3^6;
sbit SER = P3^4;#define MATRIX_LED_PORT P0
/*** @brief 74HC595写入一个字节* @param 要写入的字节* @retval 无*/
void _74HC595_WriteByte(unsigned char Byte)
{unsigned char i;for(i=0;i<8;i++){SER = Byte&(0x80>>i);SCK = 1;SCK = 0;}RCK = 1;RCK = 0;
}
/*** @brief LED点阵屏显示一列数据* @param Column选择的列,范围:0~7,0在最左边* @param Data选择列显示的数据,高位在上,1为亮,0为灭* @retval 无*/
void MatrixLED_ShowColumn(unsigned char Column,Data)
{_74HC595_WriteByte(Data);MATRIX_LED_PORT = ~(0x80>>Column);}void MatrixLED_Init()
{SCK = 0;RCK = 0;
}
在 51 单片机编程里,code
是一个存储类型修饰符,使用 code
来修饰 action
数组,主要基于以下几个原因:
1. 节省内部 RAM 空间
- 51 单片机内存结构特点:51 单片机的内存资源相对有限,它的内部 RAM 空间较小(通常为 128 字节或 256 字节),并且要用于存储变量、栈空间等。
- 数据存储位置:使用
code
修饰的数组会被存放在程序存储器(ROM)里,而非内部 RAM。像你代码中的action
数组存有大量的显示数据,若不使用code
修饰,这些数据就会占用内部 RAM 空间,这样可能导致内部 RAM 不够用,进而影响其他变量的存储和程序的正常运行。
2. 程序存储器读取稳定
- ROM 特性:程序存储器(ROM)是只读存储器,其数据在程序运行期间不会被修改,数据的存储和读取十分稳定。
- 适合存储固定数据:
action
数组中的数据代表着特定的显示图案序列,属于固定不变的数据。把这些数据存放在程序存储器中,既能保证数据的稳定性,又能避免因意外修改数据而引发的显示错误。
相关文章:
10.LED点阵实验
LED点阵是一种由发光二极管排列而成的显示器件,在生活里的各种电器中很常见,像汽车报站器和广告屏等地方都会用到它。 平时用得比较多的是 88 点阵。多个 88 点阵能组合成不同大小的 LED 点阵显示屏,比如 4 个 88 点阵可以拼成一个 1616 点阵…...
cesium+vue3自定义HTML实体弹窗、加高德路网、防实体漂浮、让用户画圆、鹰眼
一、基础使用:Cesium.js基础使用(vue)-CSDN博客 1、基础路径 为 Cesium 库设置一个全局变量 CESIUM_BASE_URL,用于指定 Cesium 的资源文件(如 WebGL shaders、纹理、字体等)的 示例场景:假设你…...
Spring(二)容器-注册
目录 一 定义组件Bean (1)添加组件 (2)获取组件 二 配置类Configuration (1)配置类的作用 三 MVC分层注解 - Controller: - Service: - Repository: 四 批量扫描ComponentScan (1) 默认扫描当前包及其子包 (2) 指定扫描包路径 …...
Java-实现PDF合同模板填写内容并导出PDF文件
可用于公司用户合同导出pdf文件 效果图 一、导入所需要jar包 <!--生成PDF--><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.11</version></dependency><dependency&…...
C# 数据转换
1. 文本框读取byte,ushort格式数据 byte addr; if (byte.TryParse(textBoxAddr.Text, out addr) true) {}2. 字节数组 (byte[]) 转换为 ASCII 字符串 byte[] bytes { 72, 101, 108, 108, 111 }; // "Hello" 的 ASCII 码 string s0 Encoding.ASCII.Ge…...
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_list_init
ngx_list_init 定义在 src\core\ngx_list.h static ngx_inline ngx_int_t ngx_list_init(ngx_list_t *list, ngx_pool_t *pool, ngx_uint_t n, size_t size) {list->part.elts ngx_palloc(pool, n * size);if (list->part.elts NULL) {return NGX_ERROR;}list->par…...
鸿蒙NEXT开发-元服务和服务卡片的开发
注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下 如果大家觉得博主文章写的好的话,可以点下关注,博主会一直更新鸿蒙next相关知识 目录 1. 元服务基本概念 1.1 基本介绍 1.2 元…...
Docker安装Redpandata-console控制台
介绍 Redpanda控制台,这是一个功能强大的Web UI,用于管理和监控您的Redpanda 集群。探索实际示例和场景,以帮助您了解如何利用 Redpanda 控制台实现不同的用例,包括数据可观察性、Redpanda 管理、访问控制和连接。 可对Redpanda…...
DeepSeek Agent 企业应用
DeepSeek Agent 技术是基于深度求索(DeepSeek)大模型构建的智能代理系统,其核心技术架构与应用优势可从以下几个方面进行深度解析: 一、核心技术架构 混合专家模型(MoE)与架构优化 DeepSeek 的模型家族(如DeepSeekMoE、DeepSeek-V3)采用 混合专家系统(MoE) ,通过动…...
vcredist_x64 资源文件分享
vcredist_x64 是 Microsoft Visual C Redistributable 的 64 位版本,用于在 64 位 Windows 系统上运行使用 Visual C 开发的应用程序。它包含了运行这些应用程序所需的运行时组件。 vcredist_x64 资源工具网盘下载链接:https://pan.quark.cn/s/ef56f838f…...
解决redis lettuce连接池经常出现连接拒绝(Connection refused)问题
一.软件环境 windows10、11系统、springboot2.x、redis 6 7 linux(centos)系统没有出现这问题,如果你是linux系统碰到的,本文也有一定大参考价值。 根本思路就是:tcp/ip连接的保活(keepalive)。 二.问题描述 在spr…...
Mac远程桌面软件哪个好用?
远程桌面软件能帮助我们快速的远程控制另一台电脑,从而提供远程帮助,或者进行远程办公。那么,对macOS系统有什么好用的Mac远程桌面软件呢? 远程看看是一款操作简单、界面简洁的远程桌面软件,支持跨平台操作࿰…...
一篇吃透模型:all-MiniLM-L6-v2
MiniLM 是什么? MiniLM 是微软研究院开发的一种轻量级的语言模型,旨在以较小的参数量和计算成本实现与大型语言模型(如 BERT)相当的性能。它是基于 Transformer 架构的预训练模型,通过深度自注意力蒸馏(De…...
深入学习Linux内存管理-缺页异常
1.什么是缺页异常 在Linux虚拟内存管理中,缺页异常(Page Fault) 是CPU在访问虚拟地址时发现对应物理页未就绪时触发的中断。根据触发原因,缺页异常分为两类: 次要缺页(Minor Fault):物理页已存在(如缓存或共享内存),只需建立映射。 主要缺页(Major Fault):需要…...
互推机制在开源AI智能名片2+1链动模式S2B2C商城小程序源码推广中的应用探索
摘要: 在数字化营销时代,开源AI智能名片21链动模式S2B2C商城小程序源码作为一种创新的技术解决方案,正逐步成为企业数字化转型的重要工具。然而,面对激烈的市场竞争,如何高效推广这一前沿技术产品,成为开发…...
SparkSQL全之RDD、DF、DS ,UDF、架构、资源划分、sql执行计划、调优......
1 SparkSQL概述 1.1 sparksql简介 Shark是专门针对于spark的构建大规模数据仓库系统的一个框架Shark与Hive兼容、同时也依赖于Spark版本Hivesql底层把sql解析成了mapreduce程序,Shark是把sql语句解析成了Spark任务随着性能优化的上限,以及集成SQL的一些…...
神经网络 - 激活函数(Maxout 单元)
一、Maxout 单元 Maxout 单元是一种特殊的激活函数,用于神经网络中,其主要思想是通过多个线性变换的最大值来作为神经元的输出,从而提高模型的表达能力和鲁棒性。 1. 数学定义 假设输入为 x,Maxout 单元会计算 k 个线性变换&am…...
【软考-架构】1.3、磁盘-输入输出技术-总线
GitHub地址:https://github.com/tyronczt/system_architect ✨资料&文章更新✨ 文章目录 存储系统💯考试真题输入输出技术💯考试真题第一题第二题 存储系统 寻道时间是指磁头移动到磁道所需的时间; 等待时间为等待读写的扇区…...
专业便捷PDF软件,即开即用
PDF文件因其小巧的体积、便捷的分享与存储方式,以及卓越的安全性,已成为学习、企业及各类机构中不可或缺的文件格式。无论是在学术研究、课程资料、商业报告还是合同文件中,PDF都能有效保持原有的格式和布局,确保内容在不同设备和…...
TEE可信执行环境的安全业务保护方案
基于硬件隔离技术,安全业务可在**TEE(可信执行环境)**中运行,以保障安全资产的完整性。TEE具备以下核心特点: 跨平台兼容:已集成于多款芯片平台(MTK、NXP、RK、Samsung、TI、JLQ、Spreadtrum等…...
smolagents学习笔记系列(番外二)Agent+Ollama分析本地图像与文件
这篇文章是在 smolagents 官方教程结束后的番外篇二,实现了如何使用 smolagents 库 Ollama 调用本地模型对图像与文件进行分析。 【注意】:这篇文章需要你在本地部署Ollama的视觉语言模型,如果你的架构方案是纯线上模式,则可以跳…...
Unity TMP_InputField 多行输入时的高度适应
实现 设定输入框的行类型为多行新建行。 inputField.lineType TMP_InputField.LineType.MultiLineNewline; 进行输入时调整输入框高度。 height inputField.textComponent.preferredHeight offset; if (height < minHeight) {rect.SetSizeWithCurrentAnchors(RectTran…...
学习第九天-栈
栈的定义:栈是一种线性表数据结构,仅允许在表的一端(栈顶)进行插入(入栈)和删除(出栈)操作。没有数据元素时为「空栈」,遵循「后进先出(LIFO)」原…...
ArcGIS Pro应用指南:如何为栅格图精确添加坐标信息
一、引言 在地理信息系统中,栅格图是一种重要的数据类型。 然而,有时我们从网络上获取的栅格图并不包含坐标信息,这使得它们难以与其他带有坐标信息的数据进行集成和分析。 为了解决这一问题,我们需要对栅格图进行地理配准&…...
[前端] redux-thunk
Ps:这里是react18之后的使用方法 一、场景描述 为什么要使用redux-thunk? Thunk-“a piece of code that does some delayed word”。 官方给的解释是redux reducer必须是不包含副作用,但是真正的应用需要有副作用的逻辑。这个副作用包括异步逻辑、产生…...
委托者模式(掌握设计模式的核心之一)
目录 问题: 举例: 总结:核心就是利用Java中的多态来完成注入。 问题: 今天刷面经,刷到装饰者模式,又进阶的发现委托者模式,发现还是不理解,特此记录。 举例: 老板…...
爱吃蟠桃的孙悟空
爱吃蟠桃的孙悟空 真题目录: 点击去查看 E 卷 100分题型 题目描述 孙悟空爱吃蟠桃,有一天趁着蟠桃园守卫不在来偷吃。已知蟠桃园有 N 棵桃树,每颗树上都有桃子,守卫将在 H 小时后回来。 孙悟空可以决定他吃蟠桃的速度K(个/小时),每个小时选一颗桃树,并从树上吃掉 K 个…...
低功耗抄表方案-支持Modbus、DL/T645 及 DL/T698 协议电表
这是我测试的一款无线红外抄表器,该无线红外抄表器的功能特点及应用场景可归纳如下: 一、核心功能特性 1.多协议兼容与数据采集 可以采集Modbus、DL/T645 及 DL/T698 协议电表的各项数据,兼容国网电表、光伏逆变器等设备,包括…...
【含文档+PPT+源码】基于SpringBoot电脑DIY装机教程网站的设计与实现
项目介绍 本课程演示的是一款 基于SpringBoot电脑DIY装机教程网站的设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本…...
Android内存优化指南:从数据结构到5R法则的全面策略
目录 一、APP 内存限制 二、内存的三大问题 2.1、内存抖动(Memory Churn) 2.1.1 频繁创建短生命周期对象 2.1.2 系统API或第三方库的不合理使用 2.1.3 Handler使用不当 2.2、内存泄漏(Memory Leak) 2.2.1 静态变量持有Activity或Context引用 2.2.2 未取消的回调或…...
关于服务器cpu过高的问题排查
1.定位是哪个程序造成的cpu过高 如果有云服务器,就用云服务器自带的监控功能,查时间段 如果没有,则使用: ps -eo pid,comm,pcpu,pmem,cputime --sort-cputime | head -n 100 2.定位到问题 发现是uwsgi的cpu消耗过高࿰…...
2024华为OD机试真题-热点网站统计(C++)-E卷-100分
2024华为OD机试最新E卷题库-(C卷+D卷+E卷)-(JAVA、Python、C++) 目录 题目描述 输入描述 输出描述 用例1 用例2 考点 题目解析 代码 c++ 题目描述 企业路由器的统计页面,有一个功能需要动态统计公司访问最多的网页 URL top N。 请设计一个算法,可以高效动态统计 …...
【UCB CS 61B SP24】Lecture 19 20: Hashing Hashing II 学习笔记
本文首先介绍了哈希表中的两大关键概念:哈希函数与哈希码,并使用 Java 实现了一个通过链地址法解决哈希冲突的哈希表。 1. 哈希函数与哈希码 1.1 动态多列表实现整数集合 我们在 Lecture 11 中第一次介绍了集合(Set)࿰…...
一、图形图像的基本概念
文章目录 一、分辨率概念二、图形图像的区别三、位图和矢量图的区别 一、分辨率概念 图形显示计数中的分辨率概念有三种,即屏幕分辨率、显示分辨率和显卡分辨率。它们既有区别又有着密切的联系,对图形显示的处理有极大的影响。 1.屏幕分辨率 显示器分辨…...
【二.提示词工程与实战应用篇】【1.提示词工程入门:AI对话的艺术】
大家好,今天咱们来聊聊一个特别有意思的话题——提示词工程。你可能已经听说过这个词,或者在使用AI工具时不经意间接触过它。但提示词工程到底是什么?它为什么这么重要?咱们今天就来深入探讨一下,看看它是如何影响我们与AI的对话,以及如何在实际应用中发挥作用的。 什么…...
C# IComparer<T> 使用详解
总目录 前言 在 C# 编程中,排序操作是日常开发中不可或缺的一部分。当默认的排序逻辑无法满足需求时,IComparer<T> 提供了一种强大且灵活的解决方案。它允许我们为自定义类型提供特定的比较逻辑。这对于实现排序、搜索和其他需要基于特定规则进行…...
(十 三)趣学设计模式 之 模版方法模式!
目录 一、 啥是模板方法模式?二、 为什么要用模板方法模式?三、 模板方法模式的实现方式四、 模板方法模式的优缺点五、 模板方法模式的应用场景六、 总结 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式&a…...
KVM虚拟机磁盘创建探究-2
使用 virt-install 命令自动创建磁盘镜像和使用 qemu-img 手动创建磁盘镜像,在磁盘镜像本身格式和基本功能上是一致的,但在一些特性如初始占用磁盘空间、创建时的可配置性等方面存在区别,下面以 QCOW2 格式磁盘镜像为例进行详细说明。 初始占…...
vite创建vue项目
这里默认node已经安装好能使用npm 检查node版本node -v 执行npm create vitelatest 项目名,按提示选择Vue和语言 cd到项目名文件夹,或者直接用vscode等编辑器打开,执行npm install 启动项目npm run dev 成功界面...
js的简单介绍
一.javascript(是什么) 是一种运行在客户端(浏览器)的编程语言,实现人机交互效果 作用 网页特效(监听客户的一些行为让网页做出对应的反馈)表单验证(针对表格数据的合法性进行判断)数据交互(获取后台的数据…...
GitHub 语析 - 基于大模型的知识库与知识图谱问答平台
语析 - 基于大模型的知识库与知识图谱问答平台 GitHub 地址:https://github.com/xerrors/Yuxi-Know 📝 项目概述 语析是一个强大的问答平台,结合了大模型 RAG 知识库与知识图谱技术,基于 Llamaindex VueJS FastAPI Neo4j 构…...
Spark核心之02:RDD、算子分类、常用算子
spark内存计算框架 一、目标 深入理解RDD弹性分布式数据集底层原理掌握RDD弹性分布式数据集的常用算子操作 二、要点 ⭐️1. RDD是什么 RDD(Resilient Distributed Dataset)叫做**弹性分布式数据集,是Spark中最基本的数据抽象,…...
docker关闭mysql端口映射的使用
需求 项目中的数据库为mysql,如果将端口映射到宿主机上,容易被工具扫描出,且随着国产化的进程推进,mysql将不被允许。为了提高安全性与满足项目需求,这里采用隐藏mysql端口方式,不映射宿主机端口ÿ…...
《从入门到精通:蓝桥杯编程大赛知识点全攻略》(十八)-农夫约翰的奶酪块、蛋糕游戏、奶牛体检
前言 在算法竞赛和编程挑战中,博弈类问题往往要求我们充分理解参与者的行为模式和最优策略,从而提出合理的解法。在这篇博客中,我们将探讨三个有趣且富有挑战性的算法题:农夫约翰的奶酪块、蛋糕游戏和奶牛体检。这些问题涉及不同…...
蓝桥杯 之 图形规律
文章目录 分析组成,找到规律数正方形 在蓝桥杯中,常常会有一些图形的规律的题目需要我们去解决,所以我们需要学会其中的一些方法,我们这样才能解决对应的问题 方法1:直接对n进行拆分方法2:使用递归的思路&a…...
Django 项目模块化开发指南:实现 Vue 风格的组件化
在 Django 项目中,我们经常需要 复用 HTML 代码,避免重复编写相同的模板。例如,博客系统中,博客列表页 和 文章详情页 可能都有相同的 导航栏、模态框、页脚 等。如何像 Vue 一样进行 模块化开发,让代码更加清晰、可维护呢? 本文将详细介绍 Django 的模板继承 和 {% incl…...
在kali linux中kafka的配置和使用
官方文档 一、安装依赖 删除原有的jdk sudo apt remove --purge openjdk-\* sudo apt clean安装 Java (JDK 11) sudo apt install openjdk-11-jdk -y # 验证安装 java -version二、下载并解压 Kafka 下载 Kafka wget https://dlcdn.apache.org/kafka/3.9.0/kafka_2.13-3.9.0.t…...
Spring Bean 作用域设置为prototype在并发场景下是否是线程安全的
在并发场景下,将 Spring Bean 作用域设置为 prototype 通常能在一定程度上保证线程安全,但这并不意味着绝对的线程安全 1. prototype 作用域的特点 在 Spring 中,Bean 的作用域定义了 Bean 的生命周期和可见性。prototype 作用域表示每次从…...
Linux系统编程(三)--Linux环境基础开发工具
文章目录 前言1.软件包的管理1.1 Linux下安装软件的方式1.2 什么是软件包(yum)1.3 yum具体操作 2. 编辑器vim2.1 vim的基本概念2.2 vim下各模式的切换vim命令模式各命令汇总 2.4批量化注释和批量化去注释2.5 vim配置2.6 普通用户使用sudo提权 3. 编译器g…...
Apache Shiro 反序列化漏洞全解析(Shiro-550 Shiro-721)
一、前言 Apache Shiro 是一个强大的 Java 安全框架,广泛用于用户认证、授权、加密和会话管理。然而,由于 Shiro 在某些版本中存在反序列化漏洞,攻击者可以通过特定手法实现远程代码执行(RCE),进而获取服务…...