当前位置: 首页 > news >正文

【蓝桥杯单片机入门记录】动态数码管

目录

一、数码管动态显示概述

二、动态数码管原理图

(1)原理图

(2)动态数码管如何与芯片相连

(3)“此器件” ——>锁存器74HC573

三、动态数码管显示例程

(1)例程1:两个数码管显示不同内容。本例以第一个数码管显示数字“0”,第二个数码管显示数字“1”为例。

 (2)例程2:多个数码管显示不同内容(二)。注:创建数码管显示子函数。

(3)例程3:多个数码管显示不同内容(二)。注:创建数码管显示子函数。

①法一:

②法二:

③法三

(4)例程4:多位数码管倒计时。本例以第6、7、8位数码管显示255→0的倒计时为例,其他数码管保持熄灭。


一、数码管动态显示概述

  • LED数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一。
  • 动态驱动是将所有数码管的8个显示笔划(段选端)“a,b,c,d,e,fg,dp”的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制。当单片机输出字形码时,单片机先对位选通COM端电路进行控制,再对段选通进行输出,该位就显示出字形,没有选通的数码管就不会亮。
  • 通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
  • 在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。

二、动态数码管原理图

(1)原理图

(2)动态数码管如何与芯片相连

(3)“此器件” ——>锁存器74HC573

  • 74HC573的八个锁存器都是透明的D型锁存器,当使能(G)为高时,0输出将随数据(D)输入而变当使能为低时,将输出锁存在已建立的数据电平上。
  • 输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。
  • 这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。特别适用于缓冲寄存器,1/0通道,双向总线驱动器和工作寄存器。
  • Y7C为高电平,a-dp会随着p0变化;Y7C为低电平时,锁存置为低电平的那一刻的数据,不再变化
  • Y7C和Y6C同时只能有一个为低电平


三、动态数码管显示例程

(1)例程1:两个数码管显示不同内容。本例以第一个数码管显示数字“0”,第二个数码管显示数字“1”为例。

//头文件声明区域
#include <STC15F2K60S2.H>
#include<intrins.h>//变量声明区域
unsigned int i = 0;//函数声明区域
void Delay(int ms);//程序主体
void main()
{P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;//初始化程序  while(1){P2=0XC0;P0=0X01;//打开控制数码管位选的锁存器,然后选中第一个数码管P2=0XFF;P0=0XC0;//大家控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay(1);P2=0XC0;P0=0X02;//打开控制数码管位选的锁存器,然后选中第二个数码管P2=0XFF;P0=0XF9;//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay(1);}	}//函数定义区域
void Delay(int ms)		//@11.0592MHz
{unsigned char i, j;for(i = 0;i < ms;i++){_nop_();_nop_();_nop_();i = 11;j = 190;do{while (--j);} while (--i);}}

 (2)例程2:多个数码管显示不同内容(二)。注:创建数码管显示子函数。

#include <STC15F2K60S2.H>
#include<intrins.h>void Delay_MS(unsigned int MS);void main(void)
{IO_Init();P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;		//初始化程序,后期详解;while(1){P2=0XC0;P0=0X01; 	//打开控制数码管位选的锁存器,然后选中第一个数码管P2=0XFF;P0=0XC0;	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);P2=0XC0;P0=0X02; 	//打开控制数码管位选的锁存器,然后选中第二个数码管P2=0XFF;P0=0XF9;	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);P2=0XC0;P0=0X04; 	//打开控制数码管位选的锁存器,然后选中第三个数码管P2=0XFF;P0=0XF9;	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);P2=0XC0;P0=0X08; 	//打开控制数码管位选的锁存器,然后选中第四个数码管P2=0XFF;P0=0XF9;	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);P2=0XC0;P0=0X10; 	//打开控制数码管位选的锁存器,然后选中第五个数码管P2=0XFF;P0=0XF9;	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);P2=0XC0;P0=0X20; 	//打开控制数码管位选的锁存器,然后选中第六个数码管P2=0XFF;P0=0XF9;	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);P2=0XC0;P0=0X40; 	//打开控制数码管位选的锁存器,然后选中第七个数码管P2=0XFF;P0=0XF9;	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);P2=0XC0;P0=0X80; 	//打开控制数码管位选的锁存器,然后选中第八个数码管P2=0XFF;P0=0XF9;	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);}
}void Delay_MS(unsigned int MS)
{unsigned char i, j;for(i = 0;i < ms;i++){_nop_();_nop_();_nop_();i = 11;j = 190;do{while (--j);} while (--i);}}

(3)例程3:多个数码管显示不同内容(二)。注:创建数码管显示子函数。

①法一:
//头文件声明区域
#include <STC15F2K60S2.H>
#include<intrins.h>//变量声明区域
unsigned int i = 0;
unsigned char DSEG[]= {0X00,0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80};
unsigned char code SEG[] = {0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF};//函数声明区域
void Delay(int ms);
void DSED_Display(unsigned char dseg,unsigned char seg);//程序主体
void main()
{P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;//初始化程序  while(1){DSED_Display(1,1);DSED_Display(2,2);DSED_Display(3,3);DSED_Display(4,4);DSED_Display(5,5);DSED_Display(6,6);DSED_Display(7,7);DSED_Display(8,8);}	}//函数定义区域
void Delay(int ms)		//@11.0592MHz
{unsigned char i, j;for(i = 0;i < ms;i++){_nop_();_nop_();_nop_();i = 11;j = 190;do{while (--j);} while (--i);}}void DSED_Display(unsigned char dseg,unsigned char seg)
{P0 = 0XFF;//消影P2=0XC0;P0=DSEG[dseg];//打开控制数码管位选的锁存器,然后选中第一个数码管P2=0XFF;P0=SEG[seg];Delay(1);}
②法二:
 
#include <STC15F2K60S2.H>
#include<intrins.h>unsigned char tab[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF};
//unsigned char code tab[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF};unsigned char SEG1,SEG2,SEG3,SEG4,SEG5,SEG6,SEG7,SEG8;void Delay(int ms);
void SEG_Display(unsigned char yi,unsigned char er,unsigned char san,unsigned char si,unsigned char wu,unsigned char liu,unsigned char qi,unsigned char ba);void main(void)
{P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;		//初始化程序,后期详解;while(1){SEG1=1,SEG2=2,SEG3=3,SEG4=4,SEG5=5,SEG6=6,SEG7=7,SEG8=8;SEG_Display(SEG1,SEG2,SEG3,SEG4,SEG5,SEG6,SEG7,SEG8);}
}void SEG_Display(unsigned char yi,unsigned char er,unsigned char san,unsigned char si,unsigned char wu,unsigned char liu,unsigned char qi,unsigned char ba)
{P0=0XFF;P2=0XC0;P0=0X01; 	//打开控制数码管位选的锁存器,然后选中第一个数码管P2=0XFF;P0=tab[yi];	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);P0=0XFF;P2=0XC0;P0=0X02; 	//打开控制数码管位选的锁存器,然后选中第二个数码管P2=0XFF;P0=tab[er];	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);P0=0XFF;P2=0XC0;P0=0X04; 	//打开控制数码管位选的锁存器,然后选中第三个数码管P2=0XFF;P0=tab[san];	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);P0=0XFF;P2=0XC0;P0=0X08; 	//打开控制数码管位选的锁存器,然后选中第四个数码管P2=0XFF;P0=tab[si];	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);P0=0XFF;P2=0XC0;P0=0X10; 	//打开控制数码管位选的锁存器,然后选中第五个数码管P2=0XFF;P0=tab[wu];	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);P0=0XFF;P2=0XC0;P0=0X20; 	//打开控制数码管位选的锁存器,然后选中第六个数码管P2=0XFF;P0=tab[liu];	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);P0=0XFF;P2=0XC0;P0=0X40; 	//打开控制数码管位选的锁存器,然后选中第七个数码管P2=0XFF;P0=tab[qi];	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);P0=0XFF;P2=0XC0;P0=0X80; 	//打开控制数码管位选的锁存器,然后选中第八个数码管P2=0XFF;P0=tab[ba];	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);	
}void Delay(int ms)		//@11.0592MHz
{unsigned char i, j;for(i = 0;i < ms;i++){_nop_();_nop_();_nop_();i = 11;j = 190;do{while (--j);} while (--i);}}
③法三
 
#include <STC15F2K60S2.H>
#include<intrins.h>//#define uchar unsigned char
//#define uint unsigned inttypedef unsigned char uchar ;
typedef unsigned int uint ;unsigned char tab[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF};
//unsigned char code tab[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF};unsigned char SEG1,SEG2,SEG3,SEG4,SEG5,SEG6,SEG7,SEG8;void Delay(int ms);
void SEG_Display12(uchar yi,uchar er);
void SEG_Display34(uchar san,uchar si);
void SEG_Display56(unsigned char wu,unsigned char liu);
void SEG_Display78(unsigned char qi,unsigned char ba);void main(void)
{P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;		//初始化程序,后期详解;while(1){SEG1=1,SEG2=2,SEG3=3,SEG4=4,SEG5=5,SEG6=6,SEG7=7,SEG8=8;SEG_Display12(SEG1,SEG2);SEG_Display34(SEG3,SEG4);SEG_Display56(SEG5,SEG6);SEG_Display78(SEG7,SEG8);}
}void SEG_Display12(unsigned char yi,unsigned char er)
{P0=0XFF;P2=0XC0;P0=0X01; 	//打开控制数码管位选的锁存器,然后选中第一个数码管P2=0XFF;P0=tab[yi];	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);P0=0XFF;P2=0XC0;P0=0X02; 	//打开控制数码管位选的锁存器,然后选中第二个数码管P2=0XFF;P0=tab[er];	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);	
}void SEG_Display34(unsigned char san,unsigned char si)
{P0=0XFF;P2=0XC0;P0=0X04; 	//打开控制数码管位选的锁存器,然后选中第三个数码管P2=0XFF;P0=tab[san];	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);P0=0XFF;P2=0XC0;P0=0X08; 	//打开控制数码管位选的锁存器,然后选中第四个数码管P2=0XFF;P0=tab[si];	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);	
}void SEG_Display56(unsigned char wu,unsigned char liu)
{P0=0XFF;P2=0XC0;P0=0X10; 	//打开控制数码管位选的锁存器,然后选中第五个数码管P2=0XFF;P0=tab[wu];	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);P0=0XFF;P2=0XC0;P0=0X20; 	//打开控制数码管位选的锁存器,然后选中第六个数码管P2=0XFF;P0=tab[liu];	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);
}
void SEG_Display78(unsigned char qi,unsigned char ba)
{P0=0XFF;P2=0XC0;P0=0X40; 	//打开控制数码管位选的锁存器,然后选中第七个数码管P2=0XFF;P0=tab[qi];	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);P0=0XFF;P2=0XC0;P0=0X80; 	//打开控制数码管位选的锁存器,然后选中第八个数码管P2=0XFF;P0=tab[ba];	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);		
}void Delay(int ms)		//@11.0592MHz
{unsigned char i, j;for(i = 0;i < ms;i++){_nop_();_nop_();_nop_();i = 11;j = 190;do{while (--j);} while (--i);}}

(4)例程4:多位数码管倒计时。本例以第6、7、8位数码管显示255→0的倒计时为例,其他数码管保持熄灭。

#include <STC15F2K60S2.H>
#include<intrins.h>#define uchar unsigned char
#define uint unsigned intunsigned char tab[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF};
//unsigned char code tab[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF};unsigned char SEG1,SEG2,SEG3,SEG4,SEG5,SEG6,SEG7,SEG8;
unsigned char Num = 255 ;
unsigned char Num_Refresh = 0 ;void Delay(uint MS);
void SEG_Display12(uchar yi,uchar er);
void SEG_Display34(uchar san,uchar si);
void SEG_Display56(unsigned char wu,unsigned char liu);
void SEG_Display78(unsigned char qi,unsigned char ba);void main(void)
{P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;		//初始化程序,后期详解;P2=0XC0;P0=0X01;P2=0XFF;P0=0XFF;		//打开第一个数码管,后期详解;SEG1=11,SEG2=11,SEG3=11,SEG4=11,SEG5=11;SEG6=2,SEG7=5,SEG8=5;while(1){		if(++Num_Refresh==125){Num_Refresh = 0 ;Num = Num -1; //Num--;SEG6=Num/100,SEG7=Num%100/10,SEG8=Num%10;}SEG_Display12(SEG1,SEG2);SEG_Display34(SEG3,SEG4);SEG_Display56(SEG5,SEG6);SEG_Display78(SEG7,SEG8);}
}void SEG_Display12(unsigned char yi,unsigned char er)
{P0=0XFF;P2=0XC0;P0=0X01; 	//打开控制数码管位选的锁存器,然后选中第一个数码管P2=0XFF;P0=tab[yi];	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);P0=0XFF;P2=0XC0;P0=0X02; 	//打开控制数码管位选的锁存器,然后选中第二个数码管P2=0XFF;P0=tab[er];	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);	
}void SEG_Display34(unsigned char san,unsigned char si)
{P0=0XFF;P2=0XC0;P0=0X04; 	//打开控制数码管位选的锁存器,然后选中第三个数码管P2=0XFF;P0=tab[san];	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);P0=0XFF;P2=0XC0;P0=0X08; 	//打开控制数码管位选的锁存器,然后选中第四个数码管P2=0XFF;P0=tab[si];	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);	
}void SEG_Display56(unsigned char wu,unsigned char liu)
{P0=0XFF;P2=0XC0;P0=0X10; 	//打开控制数码管位选的锁存器,然后选中第五个数码管P2=0XFF;P0=tab[wu];	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);P0=0XFF;P2=0XC0;P0=0X20; 	//打开控制数码管位选的锁存器,然后选中第六个数码管P2=0XFF;P0=tab[liu];	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);
}
void SEG_Display78(unsigned char qi,unsigned char ba)
{P0=0XFF;P2=0XC0;P0=0X40; 	//打开控制数码管位选的锁存器,然后选中第七个数码管P2=0XFF;P0=tab[qi];	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);P0=0XFF;P2=0XC0;P0=0X80; 	//打开控制数码管位选的锁存器,然后选中第八个数码管P2=0XFF;P0=tab[ba];	//打开控制数码管段选的锁存器,然后给上述打开的数码管输出码值Delay_MS(1);		
}void Delay(uint MS)	//@11.0592MHz
{unsigned char i, j;for(i = 0;i < ms;i++){_nop_();_nop_();_nop_();i = 11;j = 190;do{while (--j);} while (--i);}

相关文章:

【蓝桥杯单片机入门记录】动态数码管

目录 一、数码管动态显示概述 二、动态数码管原理图 &#xff08;1&#xff09;原理图 &#xff08;2&#xff09;动态数码管如何与芯片相连 &#xff08;3&#xff09;“此器件” ——>锁存器74HC573 三、动态数码管显示例程 &#xff08;1&#xff09;例程1&#xf…...

12 Redis之Lua脚本

11. Lua脚本 Lua 是一个由标准 C 语言开发的、开源的、可扩展的、轻量级的、弱类型的、解释型脚本语言 常用于Nginx/分布式锁/ 先下载并安装Lua...

网络安全之内容安全

内容安全 攻击可能只是一个点&#xff0c;防御需要全方面进行 IAE引擎 DFI和DPI技术--- 深度检测技术 DPI --- 深度包检测技术--- 主要针对完整的数据包&#xff08;数据包分片&#xff0c;分段需要重组&#xff09;&#xff0c;之后对 数据包的内容进行识别。&#xff08;应用…...

在CentOS上使用Docker搭建Halo博客并实现远程访问的详细指南

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、数据结构 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. Docker部署Halo1.1 检查Docker版本1.2 在Docker中部署Halo 二. Linux安装Cpol…...

数据结构day5

link_stack.c #include "link_stack.h" //申请栈顶指针 top_p create_top() {top_p top (top_p)malloc(sizeof(top_t));if(topNULL){printf("空间申请失败\n");return NULL;}top->len 0;top->ptop NULL; //刚申请栈指针时没有指向元素return to…...

基础!!!吴恩达deeplearning.ai:神经网络中使用softmax

以下内容有任何不理解可以翻看我之前的博客哦&#xff1a;吴恩达deeplearning.ai 文章目录 softmax作为输出层的神经网络Tensorflow的实现softmax的改进实现数值舍入误差(Numerical Roundoff Errors)sigmoid修改修改softmax 在上一篇博客中我们了解了有关softmax的原理相关内容…...

mapbox高德地图与相机

mapbox高德地图与相机 本案例使用Mapbox GL JavaScript库创建高德地图。 演示效果引入 CDN 链接地图显示 创建地图实例定义地图数据源配置地图图层 设置地图样式实现代码 1. 演示效果 2. 引入 CDN 链接 <script src"https://api.mapbox.com/mapbox-gl-js/v2.12.0/mapb…...

Eslint在Vscode中使用技巧的相关技巧

ps :该文章会详细结论构建一个脚手架遇到的问题&#xff0c;会持续更新&#xff0c;请定时查看 Eslint相关​ 在vscode中使用eslint插件 在vscode中用户配置没有开启eslint.enable 在vscode中工作区配置开启eslint.enable settings.json中没有做eslint相关配置 在编写的vue…...

045-WEB攻防-PHP应用SQL二次注入堆叠执行DNS带外功能点黑白盒条件

045-WEB攻防-PHP应用&SQL二次注入&堆叠执行&DNS带外&功能点&黑白盒条件 #知识点&#xff1a; 1、PHP-MYSQL-SQL注入-二次注入&利用条件 2、PHP-MYSQL-SQL注入-堆叠注入&利用条件 3、PHP-MYSQL-SQL注入-带外注入&利用条件 演示案例&#xff1a…...

【蓝牙协议栈】【BR/EDR】【AVRCP】蓝牙音视频远程控制协议

1. AVRCP概念 AVRCP(Audio/Video Remote Control Profile):音视频远程控制协议定义了蓝牙设备和 audio/video控制功能通信的特点和过程,另用于远程控制音视频设备,底层传输基于 AVCTP(音视频控制传输协议)。 ➢该 Profile定义了AV/C数字命令控制集。命令和信息通过 AVCT…...

Head First Design Patterns - 单例模式

什么是单例模式 单例模式确保应用中&#xff0c;一个类最多只有一个实例单例模式也提供访问此实例的全局访问点单例模式实现中&#xff0c;使用了一个私有构造器&#xff0c;一个静态方法以及一个静态变量 为什么要用单例模式 java中静态全局变量也能做到被实例化一次 但是…...

Mysql的备份还原

模拟环境准备 创建一个名为school的数据库&#xff0c;创建一个名为Stuent的学生信息表 mysql> create database school; Query OK, 1 row affected (0.00 sec)mysql> use school; Database changed mysql> CREATE TABLE Student (-> Sno int(10) NOT NULL COMME…...

分区表介绍

问题 单表数据量过大&#xff0c;查询的性能通常会变得很低 查询时磁盘的IO次数增加&#xff1a;MySQL的InnoDB引擎使用B树维护索引&#xff0c;一个典型的索引节点大概可以存储60-120个数据记录&#xff0c;一个三层的索引大概可以存储百万条数据。如果订单表增加一个数量级…...

emacs 源码分析(七)

文章目录 emacs源码分析&#xff08;七&#xff09;自己动手把emacs的DEFUN宏抠出来 <2024-01-07 周日> emacs源码分析&#xff08;七&#xff09; 这DEFUN宏就像胶水一样&#xff0c;它把c代码和emacs-lisp代码给联系起来。但是DEFUN宏看着怪恐怖的有没有&#xff01;…...

Linux运维-Web服务器的配置与管理(Apache+tomcat)(没成功,最后有失败经验)

Web服务器的配置与管理(Apachetomcat) 项目场景 公司业务经过长期发展&#xff0c;有了很大突破&#xff0c;已经实现盈利&#xff0c;现公司要求加强技术架构应用功能和安全性以及开始向企业应用、移动APP等领域延伸&#xff0c;此时原来开发web服务的php语言已经不适应新的…...

探讨分布式数据库ID生成解决方案

在技术面试中&#xff0c;面试官通常通过挑战应聘者的分布式系统知识来评估其能力。今天&#xff0c;让我们模拟一场面试现场&#xff0c;深入了解关于分布式数据库ID生成的解决方案。 面试官&#xff1a;嘿&#xff0c;小伙子&#xff0c;分布式数据库ID生成解决方案了解吗&a…...

Clickhouse填坑记4:Too many parts问题分析

Clickhouse在进行大数据量同步时,感觉很爽,插入速度非常快,但是,在使用过程中却出现了几次“Too many parts”异常报错,搞得很痛苦,这里记录一下解决过程。 我这边采用的是Flink程序,实时将数据写入ClickHouse,在执行一段时间后,会提示“Too many parts”异常,如下异…...

CertiK CSO Dr. Kang Li 确认出席Hack .Summit() 香港区块链盛会

CertiK CSO Dr. Kang Li 确认将出席由 Hack VC 主办&#xff0c;并由 AltLayer 和 Berachain 联合主办&#xff0c;与 SNZ 和数码港合作&#xff0c;由 Techub News 承办的Hack.Summit() 2024区块链开发者盛会。 Dr. Kang Li 目前担任CertiK首席安全官。他是清华蓝莲花战队启蒙…...

C++ 游戏飞机大战, 字符型的

//#define _CRT_SECURE_NO_WARNINGS 1 用于禁止不安全函数的警告 #include<iostream> #include<stdlib.h> #include<string> #include<conio.h> #include<Windows.h> #include<time.h> #include <graphics.h> using namespace std;…...

用html编写的简易新闻页面

用html编写的简易新闻页面 相关代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document<…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...