- 博客(93)
- 收藏
- 关注
原创 继承与多态 Java
和继承类似,组合也是一种表达类之间的关系的方式,也能够达到代码重用的效果,组合并没有涉及到特殊的语法(诸如extends这样的关键字),仅仅是将一个类的实例作为另一个类的字段。对于已经投入使用的类,尽量不要进行修改,最好的方法是:重新定义一个新的类,来重复利用其中共性的内容,并且添加或者改动新的内容。动态绑定:也称为后期绑定(晚绑定),即在编译时,不能确定方法的行为,需要等到程序运行时,才能够确定具体调用哪个类的方法。,再执行对象一的父类和子类的实例和构造,最后执行对象二的父类和子类的实例和构造。
2024-07-19 21:11:43
624
原创 Django Web框架
模型层位于Django视图层和数据库之间,进行Python对象和数据库表之间的转换。模型层可以屏蔽不同数据库之间的差异,可以提供很多便捷工具有助于开发。临时性操作使用Django Shell更加方便,小范围Debug更简单,不需要运行整个项目来测试。
2024-07-15 20:54:22
1214
原创 类和对象(Java)
Java是一门纯面向对象的语言,在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想来设计程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。1.类名采用大驼峰。2.成员前面统一为public。3.此处写的方法不带static关键字。//定义一个变量class WashMachine {//类->类型//字段、属性、成员变量//在类里面,方法外面//品牌//型号//重量//行为、成员方法。
2024-07-09 15:17:22
740
原创 Python函数装饰器
hi() # 无论何时调用hi(),greet()和welcome()将会被同时调用# greet() # NameError ——greet()和welcome()函数在hi()函数之外不能访问。
2024-06-06 15:56:18
213
原创 数组(java)
null的作用类似于C语言中的NULL(空指针),都是表示一个无效的内存位置,因此不能对这个内存进行任何读写操作,一旦尝试读写,就会抛出NullPointerException。引用变量并不直接存储对象本身,可以简单理解为存储的是对象在堆中空间的起始地址,通过该地址,引用变量可以操作对象。而引用数据类型创建的变量,一般称为对象的引用,其空间中存储的是对象所在空间的地址,引用指向对象,比如一个数组这个引用。基本数据类型创建的变量,称为基本变量,该变量空间中直接存放的是其所对应的值;
2024-05-30 14:27:59
913
原创 冒泡排序(C语言)
通过对待排序序列从前向后(从下标较小的元素开始),依次对相邻两个元素的值进行两两比较,若发现逆序则交换,使值较大的元素逐渐从前往后移,就像水底下的气泡一样逐渐向上冒。5,7的位置已经确定,只需对前三个元素进行排序即可。,7,5,1 ——2,3相比不交换。,5,1 ——3,7相比不交换。,1 ——7,5相比,设待排序数组为:2,3,7,5,1。——3,5相比不交换。——3,1相比不交换。——2,3相比不交换。第三轮过后,将第三大元素位置确定。——2,3相比不交换。
2024-05-22 11:37:30
492
原创 预处理详解
C语言设置了一些预定义符号,可以直接使用,预定义符号也是在预处理期间处理的__FILE__//进行编译的源文件__LINE__//文件当前的行号__DATE__//文件被编译的日期__TIME__//文件被编译的时间__STDC__//如果编译器遵循ANSI C,其值为1,否则未定义int main()//D:\gitee\yueer-bay\预处理\预处理\test.c//20:14:20//8//err:当前的VS2022环境不完全支持ANSI Creturn 0;
2024-04-19 22:19:23
995
2
原创 编译和链接
但是由于每个文件是单独编译的,在编译器编译test.c的时候并不知道Add函数和g_val变量的地址,所以暂时把调用Add的指令的目标地址和g_val的地址搁置。前面介绍了一个C程序是如何编译和链接,到最后生成可执行程序的过程,很多的内部细节比如:目标文件的格式elf,链接底层实现中的空间与地址分配,符号解析和重定位等,可以通过《程序员的自我修养》一书来详细了解。链接是一个复杂的过程,链接的时候需要把一堆文件链接在一起才生成可执行程序。,扫描器的任务就是简单的进行词法分析,把代码中的字符分割成一系列的。
2024-04-18 19:59:13
636
原创 python补充
单引号定义法:name='shen'双引号定义法:name="shen"三引号定义法:name='''shen'''三引号定义法,和多行注释的写法一样,同样支持换行操作。使用变量接收它,就是字符串;不使用变量接收它,就可以作为多行注释使用。
2024-04-13 23:17:43
889
原创 文件操作(C语言)
磁盘(硬盘)上的文件是文件但是在程序设计中,我们一般所谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类)为什么返回类型是int?如果成功读取字符的话,返回的是字符的ASCII码值—char如果读取遇到文件末尾,或者读取失败的时候,返回EOF(-1)上面说的适用于所有输入流,一般适用于标准输入流和其他输入流(如文件输入流);所有输出流一般指适用于标准输出流和其他输出流(如文件输出流)int main()//打开文件return 1;//写文件ch <= "z";ch++)
2024-04-13 23:16:27
1017
原创 动态内存管理(重要)
栈区(stack):在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。栈区主要存放运行函数而分配的局部变量、函数参数、返回数据、返回地址等堆区(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。分配方式类似于链表数据段(静态区):(static)存放全局变量、静态数据。程序结束后由系统释放代码段:存放函数体(类成员函数和全局变量)的二进制代码。
2024-03-28 21:41:07
832
原创 自定义类型:联合和枚举
联合的成员是共用同一块内存空间的,这样一个联合变量的大小,至少是最大成员的大小(因为联合至少得有能力保存最大的那成员)我们可以把公共属性单独写出来,剩余属于各种商品的属性使用联合体,这样就可以节省所需的内存空间,一定程度上节省了了内存。在C语言中可以拿整数给枚举变量赋值,但是在C++中不行,C++的检查比较严格。像结构体一样,联合体也是由一个或多个成员构成,这些成员可以是不同的类型。枚举常量的值默认从0开始,依次递增1,在声明枚举类型的时候也可以赋初值。给联合体其中一个成员赋值,其他的成员也跟着变化。
2024-03-26 21:36:17
314
原创 自定义类型:结构体
专门用来节省内存位段的成员必须是int ,unsigned int或signed int,在C99中位段成员的类型也可以选择其他类型位段的成员名后边有一个冒号和一个数字struct Sint _a : 2;//_a仅仅占2个比特位(不再是32个,节省了30个)int _b : 5;//只占5个比特位//只占10个比特位//位段式的结构//位——2进制位int main()//8return 0;
2024-03-24 23:02:23
728
原创 辗转相除法(求最大公约数)
例如:求100和18两个正整数的最大公约数,用欧几里得算法。欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b最大公约数。,当余数为0时,取当前算式除数为最大公约数,得出最大公约数为2。100/18=5(余10)18/10=1(余8)10/8=1(余2)至此,最大公约数为2。
2024-03-21 20:47:24
225
原创 数据在内存中的存储(C语言)(难点,需多刷几遍)
大小端字节序指的是数据在电脑上存储的字节顺序是指数据的低位字节内容保存在内存的高地址处,而数据的高位字节内容,保存在内存的低地址处是指数据的低位字节内容保存在内存的低地址处,而数据的高位字节内容,保存在内存的高地址处。
2024-03-19 23:33:00
761
原创 内存操作函数(C语言)
比较从ptr1和ptr2指针指向的位置开始,向后的num个字节(内存块的比较)memset是用来设置内存的,将内存中的值以字节为单位设置成想要的内容。mem--memory--记忆--内存。
2024-03-15 21:29:42
476
原创 字符函数和字符串函数
这个头文件中说明的,C语言程序启动的时候就会使用一个全局的变量errornum来记录程序的当前错误码,只不过程序启动的时候errornum是0,表示没有错误,当我们在使用标准库中的函数的时候发生了某些错误,就会将对应的错误码存放在errornum中,而一个错误码的数字是整数很难理解是什么意思,所以每一个错误码都是有对应的错误信息的,strerror函数就可以将错误对应的错误信息字符串的地址返回。打印的时候,先打印传给perror的字符串,然后打印冒号,再打印空格,最后打印错误码对应的错误信息。
2024-03-14 00:03:35
641
原创 指针的学习5
单位是字节,如果操作数是类型的话,计算的是使用类型创建的变量所占内存空间的大小。统计的是从strlen函数的参数str中这个地址开始向后,strlen函数会一直向后找\0字符,直到找到为止,所以。C语言是编译型语言:test.c->编译->链接->sizeof是单目操作符,不是函数!(头文件是<string.h>),功能是。sizeof只关注占用内存空间的大小,sizeof后面的()不进行计算!字符串中字符的个数(不算\0)sizeof计算变量。strlen是C语言。
2024-03-08 18:17:45
315
原创 指针的学习4
回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行相应(是一种机制)如果把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,被调用的函数就是。两个整型元素可以使用>进行比较,但是两个字符串、两个结构体元素不能够用>进行比较。qsort——库函数,直接用来排序数据,底层使用的是。中间无非是两个元素进行比较,可以封装成函数,然后把。这里的函数指针指向的就是两个元素的比较函数。冒泡排序只能用来实现对。回调函数就是一个通过。
2024-03-06 19:16:11
335
原创 学生管理系统(python实现)
约定把数据保存在和py文件同级目录中,文件名为record.txt。首先这是一个文本文件,里面包含了很多行,每一行代表一个学生。学生的信息之间,使用\t来分割(水平制表符)文件内容按照行文本的方式来表示。
2024-03-04 23:52:11
1730
原创 python基础语法
python中的字符串之间能够相加,字符串不能与整数相加,整数和浮点数能够相加,整数和布尔值能够相加(没有意义,Ture表示1,False表示0)python中只有字符串类型,没有字符类型,'a'表示长度为1的字符串;正是因为python中没有字符类型,所以"和'都能表示字符串,C++/JAVA有单独的字符类型,所以单引号表示字符,双引号表示字符串python中只有float,int,整数表示范围无上限int a = 10是典型的错误,如果要表示类型,需要这样做:a:int = 10。
2024-03-03 23:27:48
831
原创 python入门介绍
有的设备,既是输入设备,又是输出设备,比如触摸屏、网卡。显卡(GPU)“专用计算芯片”显卡的定位,和CPU是类似的。CPU“通用计算芯片”冯诺依曼~计算机祖师爷。
2024-02-27 19:54:58
120
原创 练习(java)
求出0~n之间的所有“水仙花数”并输出。(“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1^3+5^3+3^3,则153是一个“水仙花数“。
2024-02-20 20:57:51
225
原创 数据类型与变量
byte(1字节),short(2),int(4),long(8),float(4),double(8),char(2),boolean(未明确大小)对于short,byte这种小于4个字节的类型,会先提升为4个字节,再进行运算。注意:字符串、整型、浮点型、字符型以及布尔型,在java中都称为数据类型。最小的单位是bit ,1 byte=8 bit;与C语言不同,java中字符串没有以‘\n’结尾。数据范围小而转为数据范围大的,自动进行。解析:A选项:编译后产生的是。整型、浮点型、字符型、布尔型。
2024-02-16 20:54:44
864
原创 指针习题回顾(C语言)
实现一个函数,可以左旋字符串中的k个字符。例如:ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。例如:给定s1 =AABCD和s2 = BCDAA,返回1给定s1=abcd和s2=ACBD,返回0.AABCD左旋一个字符得到ABCDAAABCD左旋两个字符得到BCDAAAABCD右旋一个字符得到DAABC输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,
2024-02-16 11:18:49
292
原创 define和typedef
宏定义一般作用在C语言的预处理部分,而预处理的主要任务,例如删除注解,插入被#include包含的函数库,自己的头文件名等,而在预处理阶段我们就会把#define定义N变成10,所以与此同时在后面的编译链接等步骤就会看不见define。在C语言中,typedef为一种关键字,与存储有关的关键字,与auto,extern,static,register等关键字不能出现在同一表达式中。注意:其处理结果不是6*6=36,而是1+5*1+5=11!在上面代码中,a,b,c,d四个变量中,哪些是指针类型的变量?
2024-02-16 10:37:59
178
原创 找单身狗(C语言)
一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。数组的元素是:1,2,3,4,5,1,2,3,4,6。编写一个函数找出这两个只出现一次的数字。只有5和6只出现1次,要找出5和6.
2024-02-06 20:52:28
123
原创 指针的学习3
把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,被调用的函数就是回调函数。回调函数不是由该函数的实现方直接调用,而是在待定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行相应。二维数组可以看作每个元素是一维数组的数组,那么二维数组的首元素就是第一行,是一维数组,数组名是数组首元素的地址,二维数组的数组名表示的就是一维数组的地址。str3是指针变量,存放的是h的地址,str4同str3;&数组名是数组的地址,数组名是数组首元素的地址,两个地址一样,含义不一样!
2024-02-05 15:20:42
372
原创 指针的学习2
所以形参访问的数组和实参的数组是同一个数组;形参的数组是不会再单独创建数组空间的,所以形参的数组是可以省略掉数组的大小的。数组就是数组,是一块连续的空间(数组的大小和数组元素个数和元素类型都有关系)一维数组传参,形参的部分可以写成数组的形式,也可以写成指针的形式。存放指针的数组,指针数组的每个元素都是用来存放地址(指针)的。(整个数组的地址和数组首元素的地址是有区别的)冒泡排序的核心思想就是:两两相邻的元素进行比较。&数组名,这里的数组名表示整个数组,取出的是。,计算的是整个数组的大小,单位是字节。
2024-02-03 19:39:37
458
原创 指针的学习1
指针(pointer)是编程语言中的一个对象,利用地址,它的值直接指向存在电脑存储器中另一个地方的值,由于通过地址能找到所需的变量单位,可以说,地址指向该变量单位,因此,将地址形象化的称为“指针”,意思是,通过它能找到以它为地址的内存单元指针是一个变量,存放内存单元的地址(编号)int main()int a = 10;//在内存中开辟一组空间//将a的地址存放在p变量中,p就是一个指针变量return 0;
2024-02-02 21:46:56
1107
原创 喝汽水问题
2.把20瓶空瓶汽水换成10瓶汽水,再把10瓶汽水换成5瓶汽水,知道没有空瓶可换,最后把所有空瓶汽水加起来就是喝的汽水瓶数。喝汽水,1瓶汽水1元,2个空瓶可以换1瓶汽水,20元可以喝多少瓶汽水?每次花1元买一瓶,买完后判断是否有两个空瓶,如果有就直接换一瓶汽水。1.20元钱,1元1瓶汽水,先把20元全部换成汽水。根据题意,我们可以发现空瓶数是一个等差数列问题。此方法相较于法一效率有所提升。第三种方法是效率最高的方法。
2024-01-31 10:22:58
199
原创 扫雷游戏(C语言)
扫雷游戏规则就是:玩家选择一个方格,若此方格没有地雷,那么该方格显示与它相邻的八个方格中雷的个数,若此方格有雷,则游戏失败,当玩家把除了有雷的方格外的其他方格都成功翻开时游戏胜利!对于扫雷游戏,我们遇到的第一个问题就是:如何表示扫雷的棋盘及如何存放布雷、排雷的数据,我们发现,二维数组可以很好地解决这个问题//完成扫雷游戏//数组全部初始化为‘0'//数组全部初始化为‘*’如上,我们定义了两个棋盘,分别用来保存布雷和排雷的信息,避免二者相互干扰或者相互覆盖;
2024-01-30 20:21:35
2995
1
原创 表达式(C语言)
即使有了操作符的优先级和结合性,我们写出的表达式依然有可能不能通过操作符的属性确定唯一的计算路径,那么这个表达式就是存在风险的,建议不要写出特别复杂的表达式。
2024-01-29 16:31:50
399
原创 操作符讲解
16进制的数字每一位是0~9,a~f的数字,各自写成2进制,最多有4个2进制位就足够了,比如f的二进制是1111,所以2进制转16进制的时候,从2进制序列中右边低位开始向左。8进制的数字每一位是0~7,0~7的数字各自写成2进制,最多有3个2进制位就够了,比如7的2进制位是111,所以2进制转8进制的时候,从2进制序列中右边低位开始向左。结构是一些值的集合,这些值称为成员变量,结构的每个成员可以是不同类型的变量,如:标量,数组,指针,甚至是其他的结构体。换算成一个8进制位,剩余不够3个2进制位的直接换算。
2024-01-28 20:39:52
1051
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人