- 博客(77)
- 收藏
- 关注
原创 U8g2从入门到使用,显示OLED
U8g2是一个功能强大的C++图形库,专为嵌入式系统而设计,是一个开源的图形库, 主要用来驱动小屏幕, 内部继承了I2C/SPI, 支持常用的小屏幕支持很多型号, 特别是在Arduino和其他低功耗平台上。
2024-05-30 21:52:57 1775
原创 C51版本Keil + STC-ISP 实现第一盏灯,从创建到实现
结尾的二进制文件,这个文件就是编译的结果,也是需要进行烧录的二进制文件。如果stc芯片位STC8H系列下的8K64U型号,选择对应型号即可。如果以后采用的是其他型号,则选择其他型号。编译完成后,来到项目创建的目录下的。
2024-05-08 20:59:25 489
原创 pyQt5 和 Qt Designer 实现登录注册案例
print("用户名:", username.text())print("密码:", password.text())print("性别: 男")print("性别: ", radioSex2.text())hobby = []# print("爱好:抽烟")# print("爱好:喝酒")# print("爱好:烫头")print("个性签名:", signature.text())print("择偶要求:", choose.toPlainText())
2024-04-29 21:49:02 861
原创 Qt Designer入门
PyQt5提供了一个可视化图形工具,文件名为。如果在电脑上找不到,可以用如下命令进行安装:你需要在你下载的Python文件夹中查找。
2024-04-29 21:24:45 465
原创 上位机开发-PyQt5
PyQt是一套Python的GUI开发框架,即图形用户界面开发框架其中PyQt是Qt(C++语言实现的)为Python专门提供的扩展插件安装。
2024-04-29 20:30:31 1160
原创 C语言中定义和声明的区别
1. 告诉编译器, 这个变量或者函数, 我已经定义了 (开辟了空间了), 但是在别的地方, 我先说明一下, 免得编译器报错, 当然, 声明可以出现多次。2. 告诉编译器, 这个变量或者对象名, 我先预定了, 其他地方不可以用了, 和在饭馆吃饭(人多的时候), 需要提前预订是一个道理,定义和声明本质的区别在于, 声明没有开辟空间, 但是定义则会创建对象(变量), 来开辟空间, 这是重要的一点!
2024-04-26 17:13:56 248
原创 Python中, 继承中的重写super__init__()使用场景及原因
4. 符合面向对象设计原理: 使用super__init__() 符合面向对象设计中的封装和继承原则, 子类通过继承父类来复用代码, 并使用super() 来确保父类中的行为得到正确的调用。3. 多重继承中的正确性: 在多重继承的情况下, super() 确保了方法解析顺序(MRO)的正确性, 每个父类的__init__() 方法只会被调用一次, 按照MRO顺序。在Python中, super__init__()的使用通常出现子类的初始化方法(__init__)中, 也就是继承中的重写。
2024-04-25 21:45:02 332
原创 Python中, 介绍面向对象及三大特征
封装就是将数据(属性)和与其相关联的操作(方法)绑定在一起的过程, 在Python中, 类是实现封装的主要工具, 通过类和定义私有变量和方法, 我们可以隐藏对象的内部状态和实现细节, 只对外暴露必要的接口, 有助于保护数据, 同时使代码更加模块化和可维护。允许我们创建一个新的类(称为子类和派生类), 继承另一个类(称为父类和基类) 的属性和方法, 子类乐意继承父类中的所有属性和方法, 并且可以添加或者覆盖自己的属性和方法, 这有助于代码的复用和扩展。三个特征: 封装, 继承,多态。
2024-04-25 21:34:02 321
原创 Python语言第六章之面向对象
形式 class + 名称 (大驼峰命名)print(f"{self.name}在吃饭")print("在运动")# # p就是People类的实例化对象# # 通过对象调用方法# p.eat()# p.run()# p2.eat()# p2.run()"""对象.属性 可以添加属性调用之前, 必须添加了name属性, 所以放在这个属性使用之前"""p.eat()# print("哈哈哈")# p.stu()
2024-04-25 21:13:39 1008 1
原创 Python第五章之集合,切片,推导式,公共方法
dictionary (字典) 是除列表以外Python之中最灵活的数据类型可以存储多个数据使用的是键值对保存数据使用 { } 定义数据, 键值对之间使用 , 分割, 键和值之间使用 : 分割d = {"sex" : "男"字典中的键相当于索引,必须是唯一的d = {'中国':'China','英国':'England','美国':'America','美国':'USA'}print(d)结果为: {'中国': 'China', '英国': 'England', '美国': 'USA'}
2024-04-24 20:22:13 756
原创 Python语言第四章之函数基础
定义函数 —— 在函数中编写代码,实现功能调用函数 —— 执行编写的代码函数基本使用def 函数名():函数封装的代码def是英文define的缩写;函数名的命名规则和变量的命名规则要保持一致。
2024-04-23 20:18:01 503
原创 Python语言第三章之容器类型(list, tuple)
列表用[]定义,元素之间用逗号分隔namesList = ['林青霞','张曼玉','胡慧中']元组用()定义names_tuple = ('林青霞','张曼玉','胡慧中')注意:一个元素的元组定义需要在元素后加上,# 错误定义方式 ❌names_tuple = ('林青霞')# 正确定义方式 ✅names_tuple = ('林青霞',)
2024-04-23 20:03:25 1058
原创 Python语言第二章之控制流程(判断,循环)
定义0到10的区间(包含0,不包含10)如果区间从0开始可以省略0# 定义0到10的区间(包含0,不包含10)倒序的区间定义# 定义从10到1的区间,参数分别代表 start开始, stop结束, step步长区间可以通过for进行遍历"""range 包含左边,不包含右边如果从0开始,则不可以省略0""""""倒序 10-1的区间, 参数分别代表: 开始,结束,step(步长)step:步长,表示间隔的数量"""# print(i)
2024-04-23 18:16:31 1113
原创 Python语言第一章之注释,变量,数据类型,输入输出
多行注释: " " "开头, """结尾 (或者' ' '开头, ' ' '结尾)关键字(这个不用记):Python已经占用的名字,用户起名不能和关键字重名。标识符是用户编程时使用的名字, 用于给变量、 函数、 类等命名。单行注释: # 开头 # 后空一格后面跟上注释的内容。特殊类型:None(空类型:NoneType)complex不常用,不作为学习内容。不能使用Python内置关键字。由数字, 字母, 下划线组成。布尔类型,非0就是True。
2024-04-22 16:58:15 2189 1
原创 斐波那契数列, 求数列中第i的值
斐波那契数列: 1 1 2 3 5 8 13 21 34。终止条件: 第一个数和第二个数为: 1。后两个等于前两个数的和。
2024-04-22 11:02:46 114
原创 有五个人坐在一起,问第五个人多少岁?
有五个人坐在一起,问第五个人多少岁?他说比第四个人大2岁, 问第四个人, 他说比第三个人大2岁, 问第三个人, 他说比第二个人大2岁, 问第二个人 他说比第一个人大2岁, 问第一个人, 第一个人说他10岁,请问第五个人多少岁?
2024-04-22 10:10:18 278
原创 解释一下什么是宏定义
在预编译时将宏名替换成字符串的过程称为"宏展开"(也叫宏替换)。宏定义不作语法检查,只有在编译被宏展开后的源程序才会报错。宏名一般用大写,以便于与变量区别。宏定义不要行末加分号。
2024-04-18 15:58:12 196 1
原创 C语言中, 文件包含处理,#include< > 与 #include ““的区别
"" 表示系统先在 "" 指定的路径(没写路径代表当前路径)查找头文件,如果找不到,再按系统指定的目录检索。#include< > 与 #include ""的区别。C语言提供了#include命令用来实现。 表示系统直接按系统指定的目录检索。指一个源文件可以将另外一个文件的。
2024-04-18 15:55:46 307
原创 C语言处理流程
C语言对源代码处理的四个步骤: 预处理 -> 编译 -> 汇编 -> 链接。预处理 (gcc -E hello.c -o hello.i)编译 (gcc -S hello.i -o hello.s)汇编 (gcc -C hello.s -o hello.o)链接 (gcc hello.o -o hello)宏定义展开、头文件展开、条件编译,(条件编译 #if #endif ……文件包含 #include。宏定义 #define。
2024-04-18 15:50:24 384
原创 C语言第六章之内存分布,内存管理
静态局部变量的生命周期则是整个程序运行期间,即使函数调用结束,静态局部变量的值也会被。存储于数据段的数据(全局未初始化,静态未初始化数据)的生存周期为整个程序运行过程。一般由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收。都会被初始化,它们的初始值是不确定的,除非显式地进行初始化。时会被初始化,然后保持其值不变,直到程序结束。局部变量的生存周期为申请到释放该段栈空间。这块内存是不可以在运行期间修改的。当函数执行完毕时,普通局部变量会被。生存周期为整个程序运行过程。
2024-04-17 18:05:39 626
原创 C语言数组相关练习题
【代码】C语言数组相关练习题。包含: 求数组中第二大值, 平均数, 查找某个整数的在数组中的索引位置, 统计字符串中数字字符的个数, 排序
2024-04-16 22:03:23 314
原创 C语言第五章之复合类型(struct, union, enum,typedef等)
定义结构体变量的方式:先声明结构体类型再定义变量名在声明类型的同时定义变量。
2024-04-16 21:56:36 712
原创 C语言第四章之数组
数组是一种构造类型, 是由基本类型构造而成, 当我们想用一群变量来描述同一类相同的东西的时候, 比如100个年龄变量, 我们可以这样, int age 1;int age 2;这样极不方便书写, 也不方便管理, 此时神奇的数组就出现了, int age[100], 轻轻松松搞定。构造类型带来了书写和管理的方便, 我们将从定义, 大小, 初始化,访问内容进行展开...
2024-04-16 21:46:36 665
原创 C语言中如何定义一个函数指针,并说说函数指针的用途
在C语言中, 函数指针是一个指针, 它指向一个函数而不是一个变量, 定义函数指针时,需要指定指针指向的函数的返回类型和参数列表。函数指针是C语言中一个强大的工具,但它们也增加了代码的复杂性,因此在使用时需要谨慎,确保正确地管理指针并避免潜在的错误。:在加载动态链接库或插件时,我们通常会获取库中函数的地址(即函数指针),然后通过这些指针来调用库中的函数。:函数指针允许API的设计者提供更大的灵活性,允许用户传递自定义的函数来定制API的行为。首先定义一个简单的无参有返回值的函数。定义一个指向这种函数的指针。
2024-04-15 16:59:41 342
原创 C语言中,分别说说const和#define
在C语言中,const和#define都是用于定义常量或不变量的方式,但它们之间存在一些重要的区别。
2024-04-15 16:26:04 471
原创 C语言中如何引用一个已经定义过的全局变量?
全局变量定义在函数外部,在程序的整个执行期间都可以访问。直接引用或者使用extren关键字, 分情况来说。
2024-04-14 14:34:03 1007 2
原创 C语言中局部变量和全局变量是否可以重名?为什么?
当在函数中访问一个变量时, 编译器首先会在函数内查找变量,如果找到了,则使用局部变量, 如果没找到,则会在函数外部, 找这个变量, 直到找到该变量, 或者到达了最顶层的全局作用域。在C语言中, 局部变量指的是定义在函数内的变量, 全局变量指的是定义在函数外的变量。全局变量的生命周期在程序的整个执行的过程中都是可见的,程序执行完成后,则销毁。如果重名, 会带来一些潜在的问题, 为了避免数据的混淆,通常时。他们在程序中的使用方法是不同的, 当重名时,, 清晰的变量名,可以反应对应的意义。
2024-04-14 14:09:53 1975
原创 C语言--第三章之函数,指针
函数是一种可复用的代码块, 用于执行特定的任务,来完成特定的功能指针就是一种数据类型,用来存储地址,操作地址,指针的实质就是内存地址指针变量指向谁, 就把谁的地址赋值给它int main()// 定义一个变量int a = 20;// 打印a变量的值// 打印a变量的地址(%p)// &a中的&这里表示取地址符// 将a的地址赋值给指针p// 打印p变量的地址(%p)// 打印指针p指向的值(*指针变量)return 0;
2024-04-13 18:17:46 586
原创 C语言--第二章之分支,循环,跳出关键字
while循环,continue 之前一定要修改计数器(条件变量),否则,导致死循环。闰年判断:能被4整除,但不能被100整除的;循环中break,某一条件满足时,不再执行循环体中后续重复的代码,并退出循环。某一条件满足时,不再执行本次循环体中后续重复的代码,但进入下一次循环判断。4、6、9、11月 30天。1、3、5、7、8、10、12月 31天。分支: 根据条件判断, 决定执行代码的分支。如果a>b,整体为结果a,否则整体结果为b。1.定义变量保存年份、月份、天数。
2024-04-12 20:59:28 726
原创 C语言--第一章
C语言是计算机编程语言的一种, 编程语言则用于人与机器之间的交流, C语言则是通过编译器翻译成机器语言, 计算机可以将程序转换成二进制指令,并由CPU执行,CPU会按照指令的顺序,依次执行每个命令,简单来说只需要记住,C语言就是编译语言。
2024-04-10 21:34:35 781
原创 nacos启动报错: ERROR Nacos failed to start, please see D:\nacos\logs\nacos.log for more details.
Nacos是构建以“服务”为中心的现代应用架构(例如微服务范式、云原生范式)的服务基础设施,致力于微服务的发现、管理和信息配置,能帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理,从而更敏捷、更容易的构建、交付和管理微服务平台。只需要在nacos的bin目录中用cmd启动就不会报错了。命令 startup.cmd -m standalone。等待启动后,看到提示信息,无error错误,就启动成功啦。
2024-04-07 17:26:01 771 1
原创 java.lang.ClassNotFoundException:javax.xml.bind.DatatypeConverter 报错解决
检查JDK版本,如果你是JDK17版本,就降到JDK8版本。注意: 如果2.3.1的版本不生效,则使用2.3.0的版本。
2023-12-14 19:52:10 1389
原创 SPA, SEO, SSR总结
Web不再是一张张页面,而是一个整体的应用,一个由路由系统,数据系统,页面(组件)系统等等,组成的应用程序, 让用户不需要每次与服务器进行页面刷新来获得新的内容, 从而提供了更快,跟流畅的用户体验, 在SPA中, 所有的交互都在一个单独的页面中进行处理, 通常时index.html, 通过JavaScript和Ajax技术动态地加载内容和更新页面,同时使用前端路由管理页面的不同状态和页面之间的跳转。前端客户端, 用于将AJAX数据和页面进行渲染, 渲染成HTML页面, 并相应给调用程序(浏览器,爬虫)
2023-12-08 18:06:37 639
原创 重定向策略(Redirect Strategy)
Lax重定向策略(LaxRedirectStrategy):宽松的重定向策略,不仅在GET和HEAD请求方法上重定向,也在POST方法上重定向(但不转发请求体),适用于大多数场景。Strict重定向策略(StrictRedirectStrategy):严格的重定向策略,只在GET请求方法上重定向,不支持POST方法的重定向。默认重定向策略(DefaultRedirectStrategy):按照HTTP规范处理重定向,只在GET或HEAD请求方法上重定向。重定向策略定义了在客户端遇到重定向时应该如何处理。
2023-11-30 15:54:48 831
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人