micropython SSD1306/SSD1315驱动

目录

简介

代码

功能

显示ASCII字符

​编辑

画任意直线

 画横线

 画竖线

 画矩形

 画椭圆

 画立方体

 画点阵图

 翻转

 反相

 滚动

横向滚动

纵向滚动

奇葩滚动


简介

我重新写了一个驱动,增加了一些功能,由于我的硬件是128*64oled单色I2C,我只适配了我的硬件。如果你的硬件和我相同,你可以使用我的ssd1306驱动.

我的oled似乎不是ssd1306驱动芯片,而是ssd1315驱动芯片,不过两者差别很小,仅在滚动那块有些许出入

如果你是大佬,可以复制代码后就走人;如果你是小白,推荐你边看边打代码,我给出例子和注释

代码

import framebufclass SSD1306():def __init__(self,external_vcc):self.width = 128self.height = 64self.external_vcc = external_vccself.pages = 8self.init_display()def init_display(self):for cmd in (0xae,        # 熄屏0x20, 0x00,  # 水平寻址0x40,        # 显示起始行地址0xa1,        # 正常列扫描0xa8, 63,    # 复用率0xc8,        # 正常行扫描0xd3, 0x00,  #设置COM偏移量,即屏幕像上偏移的行数0xda, 0x12,  #使用备选引脚配置,并禁用左右反置0xd5, 0x80,  # 设置分频因子与振荡频率0xd9, 0x22 if self.external_vcc else 0xf1,0xdb, 0x30,  # 设置vcomh电压为0.83*Vcc0x81, 0xff,  # 亮度最大0xa4,        # 使用GDDRAM中的数据显示0xa6,        # 设置GDDRAM中的0对应于像素点的暗# 关闭电荷泵0x8d, 0x10 if self.external_vcc else 0x14,0x2e,        # 禁止滚动0xaf):       #开屏self.write_cmd(cmd)self.fill(0)self.show()#设置水平滚动,参数:滚动区域(滚动起始页,滚动结束页),滚动方向(默认向左,填0向右),滚动速度(0-7)  def h_scroll(self,start=0,end=7,d=1,speed=0): self.write_cmd(0x2e)     # 关闭滚动self.write_cmd(0x26+d) # 向左self.write_cmd(0x00)self.write_cmd(start) # 起始页self.write_cmd(speed) # 滚动帧率self.write_cmd(end) # 结束页self.write_cmd(0x00)self.write_cmd(0xff)self.write_cmd(0x2f) # 开启滚动#默认开启竖直向上滚动与水平向右滚动def scroll(self,vScrollOn=0,vStart=0,vEnd=63,vSpeed=1,hScrollOn=1,direction=0,hSpeed=0,hScrollStartPage=0,hScrollEndPage=7,hScrollStartColumn=0,hScrollEndColumn=127):if vScrollOn:self.write_cmd(0x2e)# 关闭滚动self.write_cmd(0xa3)#设置竖直滚动命令self.write_cmd(vStart)#竖直滚动开始行self.write_cmd(vEnd)#竖直滚动结束行self.write_cmd(0x29+direction)#水平滚动方向向右self.write_cmd(hScrollOn) # 0,关闭水平滚动,1开启self.write_cmd(hScrollStartPage)# 水平滚动起始页self.write_cmd(hSpeed)#设置滚动速度0-7self.write_cmd(hScrollEndPage)# 水平滚动结束页self.write_cmd(vSpeed) # 每一帧的垂直偏移量self.write_cmd(hScrollStartColumn)#水平滚动区域的起始列self.write_cmd(hScrollEndColumn)#水平滚动区域的结束列self.write_cmd(0x2f)# 开启滚动#关闭oleddef poweroff(self):self.write_cmd(0xae | 0x00)#熄屏#亮度,0x00-0xffdef contrast(self, contrast):self.write_cmd(0x81)self.write_cmd(contrast)#正反相显示,输入1则反相,默认正相def invert(self, invert=0):self.write_cmd(0xa6 | invert)# 显示def show(self):self.write_cmd(0x21) # 告诉GDDRAM列数self.write_cmd(0) # 列数从0-127self.write_cmd(127)self.write_cmd(0x22) # 告诉GDDRAM行数self.write_cmd(0) # 页数从0-7self.write_cmd(7)self.write_framebuf() # 写入1bit地址和1024bit数据# 水平翻转,0翻转,1正常(默认)def hv(self,b=1):self.write_cmd(0xc0 | b<<3)#竖直翻转,0翻转,1正常(默认)    def vv(self,b=1):self.write_cmd(0xa0|b)#刷新缓冲区def fill(self, c):self.framebuf.fill(c)#画点,默认点亮,置0则暗def pixel(self, x, y, c=1):self.framebuf.pixel(x, y, c)#写字符def text(self, s, x, y, c=1):self.framebuf.text(s, x, y, c)#画水平直线def hline(self,x,y,w,c=1):self.framebuf.hline(x,y,w,c)#画竖直直线def vline(self,x,y,h,c=1):self.framebuf.vline(x,y,h,c)#画任意直线 def line(self,x1,y1,x2,y2,c=1):self.framebuf.line(x1,y1,x2,y2,c)#画矩形,参数:起始左上角坐标,长宽,颜色默认为亮,是否填充def rect(self,x,y,w,h,c=1,f=False):self.framebuf.rect(x,y,w,h,c,f)#画椭圆,参数:起始圆心坐标,x半径,y半径,颜色默认为亮,是否填充,显示象限(0-15的数字)def ellipse(self,x,y,xr,yr,c=1,f=False,m=15):self.framebuf.ellipse(x,y,xr,yr,c,f,m)#画立方体,左上前点的坐标,边长def cube(self,x,y,l):self.rect(x,y,l,l)self.rect(x+int(0.5*l),int(y-0.5*l),l,l)self.line(x,y,int(x+0.5*l),int(y-0.5*l))self.line(x+l-1,y,int(x+1.5*l-1),int(y-0.5*l))self.line(x-1,y+l,int(x+0.5*l),int(y+0.5*l-1))self.line(x+l-1,y+l-1,int(x+1.5*l-1),int(y+0.5*l-1))#画8*8的图,列行def p8(self,page,x,y):for e in range(8):byte=bin(page[e]).replace('0b','')while len(byte)<8:byte='0'+bytefor i in range(8):if byte[i]=='1':self.pixel(x+e,y+i,int(byte[i]))#画16*16的图,列行def p16(self,page,x,y):for e in range(32):byte=bin(page[e]).replace('0b','')while len(byte)<8:byte='0'+bytefor i in range(8):if byte[i] and e<16:self.pixel(x+e,y+i,int(byte[i]))elif byte[i] and e>=16:self.pixel(x-16+e,y+8+i,int(byte[i]))#画32*32的图,列行def p32(self,page,x,y):for e in range(128):byte=bin(page[e]).replace('0b','')while len(byte)<8:byte='0'+bytefor i in range(8):if byte[i] and e<32:self.pixel(x+e,y+i,int(byte[i]))elif byte[i] and 32<=e<64:self.pixel(x+e-32,y+8+i,int(byte[i]))elif byte[i] and 64<=e<96:self.pixel(x+e-64,y+16+i,int(byte[i]))elif byte[i] and 96<=e<128:self.pixel(x+e-96,y+24+i,int(byte[i]))class SSD1306_I2C(SSD1306):def __init__(self,i2c, addr=0x3c, external_vcc=False):self.i2c = i2cself.addr = addrself.temp = bytearray(2)# buffer需要8 * 128的显示字节加1字节命令self.buffer = bytearray(8 * 128 + 1)self.buffer[0] = 0x40  # Co=0, D/C=1self.framebuf = framebuf.FrameBuffer1(memoryview(self.buffer)[1:], 128, 64)super().__init__(external_vcc)def write_cmd(self, cmd):self.temp[0] = 0x80 # Co=1, D/C#=0self.temp[1] = cmdself.i2c.writeto(self.addr, self.temp)def write_framebuf(self):self.i2c.writeto(self.addr, self.buffer)

功能

显示ASCII字符

from ssd1306 import SSD1306_I2C
from machine import Pin,I2C
i2c=I2C(0,scl=Pin(5),sda=Pin(4))
oled=SSD1306_I2C(i2c)oled.text('hello world',0,0)oled.show()

画任意直线

from ssd1306 import SSD1306_I2C
from machine import Pin,I2C
i2c=I2C(0,scl=Pin(5),sda=Pin(4))
oled=SSD1306_I2C(i2c)oled.line(0,2,50,60)oled.show()

 画横线

from ssd1306 import SSD1306_I2C
from machine import Pin,I2C
i2c=I2C(0,scl=Pin(5),sda=Pin(4))
oled=SSD1306_I2C(i2c)oled.hline(2,30,80)oled.show()

 画竖线

from ssd1306 import SSD1306_I2C
from machine import Pin,I2C
i2c=I2C(0,scl=Pin(5),sda=Pin(4))
oled=SSD1306_I2C(i2c)oled.vline(20,0,40)oled.show()

 

 画矩形

from ssd1306 import SSD1306_I2C
from machine import Pin,I2C
i2c=I2C(0,scl=Pin(5),sda=Pin(4))
oled=SSD1306_I2C(i2c)
#左上角x,y坐标,长,宽
oled.rect(20,0,40,20)oled.show()

 画椭圆

众所周知,圆也是椭圆的一种

from ssd1306 import SSD1306_I2C
from machine import Pin,I2C
i2c=I2C(0,scl=Pin(5),sda=Pin(4))
oled=SSD1306_I2C(i2c)
参数,中心点x,y坐标,x轴向半径,y轴向半径,f=True为填充,默认不填充
oled.ellipse(20,30,10,20)
oled.ellipse(60,20,10,20,f=True)oled.show()

 还有一个参数非常奇怪,不常用,自己改数字(范围0-15)体会

from ssd1306 import SSD1306_I2C
from machine import Pin,I2C
i2c=I2C(0,scl=Pin(5),sda=Pin(4))
oled=SSD1306_I2C(i2c)oled.ellipse(60,20,10,20,m=5)oled.show()

 画立方体

from ssd1306 import SSD1306_I2C
from machine import Pin,I2C
i2c=I2C(0,scl=Pin(5),sda=Pin(4))
oled=SSD1306_I2C(i2c)
#左前顶面的xy坐标,边长
oled.cube(10,10,20)oled.show()

 画点阵图

from ssd1306 import SSD1306_I2C
from machine import Pin,I2C
i2c=I2C(0,scl=Pin(5),sda=Pin(4))
oled=SSD1306_I2C(i2c)pic=[0x04,0x06,0xFF,0x97,0x57,0x37,0x16,0x04]
#8*8点阵数据,图像左上角xy坐标。16*16,32*32的也一样,只不过改函数名oled.p16()而已
oled.p8(pic,30,30)oled.show()

 翻转

from ssd1306 import SSD1306_I2C
from machine import Pin,I2C
i2c=I2C(0,scl=Pin(5),sda=Pin(4))
oled=SSD1306_I2C(i2c)pic1=[0x00,0x00,0x0F,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0x0F,0x00,0x00,0x00,
0x00,0x00,0xF0,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0xF0,0x00,0x00,0x00]pic2=[0x00,0x7F,0x40,0x48,0x49,0x49,0x49,0x4F,0x49,0x49,0x49,0x48,0x40,0x7F,0x00,0x00,
0x00,0xFF,0x02,0x12,0x12,0x12,0x12,0xF2,0x12,0x52,0x32,0x12,0x02,0xFF,0x00,0x00]oled.p16(pic1,0,0)
oled.p16(pic2,16,0)
oled.show()
#以中心竖直轴翻转,填1则正常显示
oled.vv(0)

from ssd1306 import SSD1306_I2C
from machine import Pin,I2C
i2c=I2C(0,scl=Pin(5),sda=Pin(4))
oled=SSD1306_I2C(i2c)pic1=[0x00,0x00,0x0F,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0x0F,0x00,0x00,0x00,
0x00,0x00,0xF0,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0xF0,0x00,0x00,0x00]pic2=[0x00,0x7F,0x40,0x48,0x49,0x49,0x49,0x4F,0x49,0x49,0x49,0x48,0x40,0x7F,0x00,0x00,
0x00,0xFF,0x02,0x12,0x12,0x12,0x12,0xF2,0x12,0x52,0x32,0x12,0x02,0xFF,0x00,0x00]oled.p16(pic1,0,0)
oled.p16(pic2,16,0)
oled.show()
#以中心水平轴翻转
oled.hv(0)

 反相

from ssd1306 import SSD1306_I2C
from machine import Pin,I2C
i2c=I2C(0,scl=Pin(5),sda=Pin(4))
oled=SSD1306_I2C(i2c)pic1=[0x00,0x00,0x0F,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0x0F,0x00,0x00,0x00,
0x00,0x00,0xF0,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0xF0,0x00,0x00,0x00]pic2=[0x00,0x7F,0x40,0x48,0x49,0x49,0x49,0x4F,0x49,0x49,0x49,0x48,0x40,0x7F,0x00,0x00,
0x00,0xFF,0x02,0x12,0x12,0x12,0x12,0xF2,0x12,0x52,0x32,0x12,0x02,0xFF,0x00,0x00]oled.p16(pic1,0,0)
oled.p16(pic2,16,0)
oled.show()
#默认不反相,即默认0
oled.invert(1)

 滚动

横向滚动

from ssd1306 import SSD1306_I2C
from machine import Pin,I2C
i2c=I2C(0,scl=Pin(5),sda=Pin(4))
oled=SSD1306_I2C(i2c)pic1=[0x00,0x00,0x0F,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0x0F,0x00,0x00,0x00,
0x00,0x00,0xF0,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0xF0,0x00,0x00,0x00]pic2=[0x00,0x7F,0x40,0x48,0x49,0x49,0x49,0x4F,0x49,0x49,0x49,0x48,0x40,0x7F,0x00,0x00,
0x00,0xFF,0x02,0x12,0x12,0x12,0x12,0xF2,0x12,0x52,0x32,0x12,0x02,0xFF,0x00,0x00]oled.p16(pic1,0,0)
oled.p16(pic2,16,0)
oled.show()
#默认整个页面一起滚动
#参数:
#滚动起始页,滚动结束页
#滚动方向(默认向左,填0向右)
#滚动速度(0-7,默认0,不一定数字越大速度越大)
oled.h_scroll()

oled横滚

纵向滚动

目前我只能实现向上滚,还有点bug

from ssd1306 import SSD1306_I2C
from machine import Pin,I2C
i2c=I2C(0,scl=Pin(5),sda=Pin(4))
oled=SSD1306_I2C(i2c)pic1=[0x00,0x00,0x0F,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0x0F,0x00,0x00,0x00,
0x00,0x00,0xF0,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0xF0,0x00,0x00,0x00]pic2=[0x00,0x7F,0x40,0x48,0x49,0x49,0x49,0x4F,0x49,0x49,0x49,0x48,0x40,0x7F,0x00,0x00,
0x00,0xFF,0x02,0x12,0x12,0x12,0x12,0xF2,0x12,0x52,0x32,0x12,0x02,0xFF,0x00,0x00]oled.p16(pic1,0,0)
oled.p16(pic2,16,0)
oled.show()
oled.scroll(hScrollOn=0)

oled纵滚

奇葩滚动

这个函数比较复杂可实现斜着动,不同区域各动各的,有点bug

from ssd1306 import SSD1306_I2C
from machine import Pin,I2C
i2c=I2C(0,scl=Pin(5),sda=Pin(4))
oled=SSD1306_I2C(i2c)pic1=[0x00,0x00,0x0F,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0x0F,0x00,0x00,0x00,
0x00,0x00,0xF0,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0xF0,0x00,0x00,0x00]pic2=[0x00,0x7F,0x40,0x48,0x49,0x49,0x49,0x4F,0x49,0x49,0x49,0x48,0x40,0x7F,0x00,0x00,
0x00,0xFF,0x02,0x12,0x12,0x12,0x12,0xF2,0x12,0x52,0x32,0x12,0x02,0xFF,0x00,0x00]oled.p16(pic1,0,0)
oled.p16(pic2,16,0)
oled.show()
#10个参数。均有默认值
#vScrollOn,是否开启竖直滚动(默认0,关闭竖直滚动;置1开启)
#vStart,竖直滚动开始行
#vEnd,竖直滚动结束行
#vSpeed,竖直滚动速度,数字越大越快
#hScrollOn,是否开启横向滚动(默认开启,置0关闭)
#direction,横滚方向(默认向右,置1向左)
#hSpeed,横滚速度(0-7)
#hScrollStartPage,水平滚动起始页默认0
#hScrollEndPage,水平滚动结束页默认7
#hScrollStartColumn,水平滚动区域的起始列,默认0
#hScrollEndColumn,#水平滚动区域的结束列,默认127
oled.scroll()

oled滚滚滚

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

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

相关文章

【数据结构】如何用队列实现栈?图文详解(LeetCode)

LeetCode链接&#xff1a;225. 用队列实现栈 - 力扣&#xff08;LeetCode&#xff09; 本文默认读者已经掌握栈与队列的基本知识 或者先看我的另一篇博客&#xff1a;【数据结构】栈与队列_字节连结的博客-CSDN博客 做题思路 由于我们使用的是C语言&#xff0c;不能直接使用队…

npm 不是内部或外部命令,也不是可运行的程序或批处理文件。

遇到问题&#xff1a; 1.遇到问题&#xff1a;npm 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 2.遇到问题&#xff1a;或者使用npm安装插件时会出现 XXX\node\node_modules\npm不可用 情况 如下图&#xff1a; 分析问题&#xff1a; nodejs在nodejs官网…

分布式ID

分布式ID 背景Snowflake(雪花算法)背景 分布式系统,用什么做为主键呢? uuid 太长(MySQL官方有明确的建议主键要尽量越短越好[4],36个字符长度的UUID不符合要求。)、 无规律(在InnoDB引擎下,UUID的无序性可能会引起数据位置频繁变动,严重影响性能。)SnowflakeLeaf h…

GO学习之 数据库(mysql)

GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 10、GO学习之 网络通信(Net/Htt…

Unity进阶–通过PhotonServer实现人物选择和多人同步–PhotonServer(四)

文章目录 Unity进阶–通过PhotonServer实现人物选择和多人同步–PhotonServer(四)服务端客户端 Unity进阶–通过PhotonServer实现人物选择和多人同步–PhotonServer(四) 服务端 服务端结构如下&#xff1a; UserModel using System; using System.Collections.Generic; usin…

pointnet C++推理部署--tensorrt框架

classification 如上图所示&#xff0c;由于直接export出的onnx文件有两个输出节点&#xff0c;不方便处理&#xff0c;所以编写脚本删除不需要的输出节点193&#xff1a; import onnxonnx_model onnx.load("cls.onnx") graph onnx_model.graphinputs graph.inpu…

【C++】C++入门基础:引用详解

本篇继续分享关于C入门的相关知识&#xff0c;有关命名空间、缺省参数和函数重载的部分欢迎阅读我的上一篇文章【C】C入门基础详解&#xff08;1&#xff09;_王笃笃的博客-CSDN博客 继续我们的学习 引用 在C语言中我们接触过指针&#xff0c;很多人都或多或少为他感到头痛过…

使用SSH隧道将Ubuntu云服务器Jupyter Notebook端口映射到本地

本文主要实现了在Ubuntu云服务器后台运行Jupyter Notebook&#xff0c;并使用SSH隧道将服务器端口映射到本地 1. 生成配置文件 运行以下命令生成Jupyter Notebook的配置文件&#xff1a; jupyter notebook --generate-config这将在用户主目录下生成一个名为.jupyter的文件夹&…

【傅里叶级数与傅里叶变换】数学推导——3、[Part4:傅里叶级数的复数形式] + [Part5:从傅里叶级数推导傅里叶变换] + 总结

文章内容来自DR_CAN关于傅里叶变换的视频&#xff0c;本篇文章提供了一些基础知识点&#xff0c;比如三角函数常用的导数、三角函数换算公式等。 文章全部链接&#xff1a; 基础知识点 Part1&#xff1a;三角函数系的正交性 Part2&#xff1a;T2π的周期函数的傅里叶级数展开 P…

【Rust日报】2023-08-18 RustShip:一个新的 Rust 播客

探索 Rust 编译器基准测试套件 在最近关于 Rust 编译器 CI&#xff08;持续集成&#xff09;和基准测试基础设施的文章中&#xff0c;作者承诺写一篇关于运行时基准测试的博客文章&#xff0c;这是 Rust 编译器基准测试套件的新补充。然而&#xff0c;在这样做之前&#xff0c;…

回归预测 | MATLAB实现SSA-SVM麻雀搜索算法优化支持向量机多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现SSA-SVM麻雀搜索算法优化支持向量机多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现SSA-SVM麻雀搜索算法优化支持向量机多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09;效果一览基…

aardio窗体缩放自动匹配批量生成plus实例

import win.ui; /*DSG{{*/ var winform win.form(text"窗体缩放批量生成plus";right759;bottom469;bgcolor15780518) winform.add( custom{cls"custom";text"自定义控件";left3;top6;right753;bottom460;ah1;aw1;bgcolor15780518;z1} ) /*}}*//…

UML基础模型

目录 1.抽象类2.接口3.继承4.实现接口5.关联关系6.聚合关系7.合成&#xff08;组合&#xff09;关系8.依赖关系 1.抽象类 矩形框代表一个类&#xff08;Class&#xff09;。 类图分为三层&#xff1a; 第一层显示类的名称&#xff0c;如果是抽象类&#xff0c;就用斜体显示&am…

操作系统的体系结构、内核、虚拟机

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaweb 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 操作系统结构 一、操作系统体系结构1.1操作系统的内核1.1.…

TiDB 多集群告警监控-中章-融合多集群 Grafana

作者&#xff1a; longzhuquan 原文来源&#xff1a; https://tidb.net/blog/ac730b0f 背景 随着公司XC改造步伐的前进&#xff0c;越来越多的业务选择 TiDB&#xff0c;由于各个业务之间需要物理隔离&#xff0c;避免不了的 TiDB 集群数量越来越多。虽然每套 TiDB 集群均有…

Gateway网关路由以及predicates用法(项目中使用场景)

1.Gatewaynacos整合微服务 服务注册在nacos上&#xff0c;通过Gateway路由网关配置统一路由访问 这里主要通过yml方式说明&#xff1a; route: config: #type:database nacos yml data-type: yml group: DEFAULT_GROUP data-id: jeecg-gateway-router 配置路由&#xff1a;…

宁德时代与陕汽签署十年战略合作协议,助力商用车电动化进程

据报道&#xff0c;宁德时代新能源科技股份有限公司与陕西汽车控股集团有限公司已经签署了一项为期十年的战略合作协议。双方的合作旨在推动商用车电池技术的发展&#xff0c;并面向商用车全领域应用。 这次战略合作具有重要意义&#xff0c;为宁德时代和陕汽启动了全面合作的序…

2021年3月全国计算机等级考试真题(C语言二级)

2021年3月全国计算机等级考试真题&#xff08;C语言二级&#xff09; 第1题 算法空间复杂度的度量方法是&#xff08;&#xff09; A. 算法程序的长度 B. 算法所处理的数据量 C. 执行算法所需要的工作单元 D. 执行算法所需要的存储空间 正确答案&#xff1a;D 第2题 下列叙…

【自创】关于前端js的“嵌套地狱”的遍历算法

欢迎大家关注我的CSDN账号 欢迎大家关注我的哔哩哔哩账号&#xff1a;卢淼儿的个人空间-卢淼儿个人主页-哔哩哔哩视频 此saas系统我会在9月2号之前&#xff0c;在csdn及哔哩哔哩上发布成套系列教学视频。敬请期待&#xff01;&#xff01;&#xff01; 首先看图 这是我们要解…

Spring Boot 知识集锦之Spring-Batch批处理组件详解

文章目录 0.前言1.参考文档2.基础介绍2.1. 核心组件 3.步骤3.1. 引入依赖3.2. 配置文件3.3. 核心源码 4.示例项目5.总结 0.前言 背景&#xff1a; 一直零散的使用着Spring Boot 的各种组件和特性&#xff0c;从未系统性的学习和总结&#xff0c;本次借着这个机会搞一波。共同学…