- 博客(103)
- 收藏
- 关注
原创 LinkedList与链表
但是,这句话只能执行一次,如果下一个还是key,将不会再执行这个if语句,所以要么将这个if改为while循环,要么将这个if放在该方法的最后(即,最后再处理head),执行完以后直接退出,且只针对于head.LinkedList的底层是双向链表结构,由于链表没有将元素存储在连续的空间中,元素存储在单独的节点中,然后通过引用将节点连接起来了,因此在任意位置插入或删除元素时,不需要搬移元素,效率较高。此时,指针每移动一次,之间的距离就缩小一步,因此,在慢指针走完一圈之前,快指针肯定可以与慢指针相遇。
2024-09-02 22:06:28
594
原创 ArrayList与顺序表
线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列...线性表在逻辑上是线性结构,也就是说是连续的一条直线,但在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储,在数组上完成数据的增删改查。
2024-08-17 18:11:29
535
原创 数据结构预备知识
Java集合框架又被称为container,是定义在java.util包下的一组接口interfaces和其实现类classes.主要表现为将多个元素element置于一个单元中,用于对这些元素进行快速、便捷的存储store、检索retrieve、管理manipulate,即我们俗称的增删改查CEUD数据结构是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。
2024-08-15 17:09:13
774
原创 异常(Java)
if (!throw new NameException("用户名错误异常");throw new PassWordException("密码错误异常");} else {System.out.println("登录成功!");try {PassWordException类:(自定义)public class PassWordException extends RuntimeException {//运行时异常super();
2024-08-07 14:27:17
718
原创 throw和throws的区别
throw是在代码块内的,即在捕获方法内的异常并抛出时用的,throws是针对方法的,即将方法的异常信息抛出去。可以理解为throw是主动(在方法内容里主动捕获并throw),而throws是被动(在方法上是没有捕获异常进行处理,直接throws)每个方法都必须要制定哪些异常不能处理,所以方法的调用者能够确保处理可能发生的异常,多个异常用逗号分隔。throw位于方法内部,可以作为单独语句使用,throws必须跟在方法参数列表后面。throw用在方法实现中,throws用在方法声明中。throw关键字用来。
2024-08-07 13:59:55
210
原创 Django与数据库
Django里面,数据库的操作,包括数据的增删改查,基本都是通过Model类型的对象进行的。定义一张数据库表就是定义一个继承自的类定义该表中的字段(列),就是定义该类里面的一些属性类的方法就是对该表中数据的处理方法,包括数据的增删改查这样,开发者对数据库的访问,从原来的使用底层的sql语句,变成面向对象的开发,通过一系列对象的类定义和方法调用就可以操作数据库。这样做:首先极大地简化了我们应用中的数据库开发,因为无需使用sql语句操作数据库了,提高了开发的效率。其次。
2024-08-05 23:04:08
798
原创 String
String是字符串类型,C语言中没有字符串类型。Java中,没有说 字符串的结尾是"\0"这样的说法C语言之所以有这样的规定,是因为C得用这个字符来判断结尾。
2024-08-03 20:33:14
820
原创 继承与多态 Java
和继承类似,组合也是一种表达类之间的关系的方式,也能够达到代码重用的效果,组合并没有涉及到特殊的语法(诸如extends这样的关键字),仅仅是将一个类的实例作为另一个类的字段。对于已经投入使用的类,尽量不要进行修改,最好的方法是:重新定义一个新的类,来重复利用其中共性的内容,并且添加或者改动新的内容。动态绑定:也称为后期绑定(晚绑定),即在编译时,不能确定方法的行为,需要等到程序运行时,才能够确定具体调用哪个类的方法。,再执行对象一的父类和子类的实例和构造,最后执行对象二的父类和子类的实例和构造。
2024-07-19 21:11:43
644
原创 Django Web框架
模型层位于Django视图层和数据库之间,进行Python对象和数据库表之间的转换。模型层可以屏蔽不同数据库之间的差异,可以提供很多便捷工具有助于开发。临时性操作使用Django Shell更加方便,小范围Debug更简单,不需要运行整个项目来测试。
2024-07-15 20:54:22
1304
原创 类和对象(Java)
Java是一门纯面向对象的语言,在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想来设计程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。1.类名采用大驼峰。2.成员前面统一为public。3.此处写的方法不带static关键字。//定义一个变量class WashMachine {//类->类型//字段、属性、成员变量//在类里面,方法外面//品牌//型号//重量//行为、成员方法。
2024-07-09 15:17:22
757
原创 Python函数装饰器
hi() # 无论何时调用hi(),greet()和welcome()将会被同时调用# greet() # NameError ——greet()和welcome()函数在hi()函数之外不能访问。
2024-06-06 15:56:18
230
原创 数组(java)
null的作用类似于C语言中的NULL(空指针),都是表示一个无效的内存位置,因此不能对这个内存进行任何读写操作,一旦尝试读写,就会抛出NullPointerException。引用变量并不直接存储对象本身,可以简单理解为存储的是对象在堆中空间的起始地址,通过该地址,引用变量可以操作对象。而引用数据类型创建的变量,一般称为对象的引用,其空间中存储的是对象所在空间的地址,引用指向对象,比如一个数组这个引用。基本数据类型创建的变量,称为基本变量,该变量空间中直接存放的是其所对应的值;
2024-05-30 14:27:59
926
原创 冒泡排序(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
503
原创 预处理详解
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
1089
2
原创 编译和链接
但是由于每个文件是单独编译的,在编译器编译test.c的时候并不知道Add函数和g_val变量的地址,所以暂时把调用Add的指令的目标地址和g_val的地址搁置。前面介绍了一个C程序是如何编译和链接,到最后生成可执行程序的过程,很多的内部细节比如:目标文件的格式elf,链接底层实现中的空间与地址分配,符号解析和重定位等,可以通过《程序员的自我修养》一书来详细了解。链接是一个复杂的过程,链接的时候需要把一堆文件链接在一起才生成可执行程序。,扫描器的任务就是简单的进行词法分析,把代码中的字符分割成一系列的。
2024-04-18 19:59:13
656
原创 python补充
单引号定义法:name='shen'双引号定义法:name="shen"三引号定义法:name='''shen'''三引号定义法,和多行注释的写法一样,同样支持换行操作。使用变量接收它,就是字符串;不使用变量接收它,就可以作为多行注释使用。
2024-04-13 23:17:43
904
原创 文件操作(C语言)
磁盘(硬盘)上的文件是文件但是在程序设计中,我们一般所谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类)为什么返回类型是int?如果成功读取字符的话,返回的是字符的ASCII码值—char如果读取遇到文件末尾,或者读取失败的时候,返回EOF(-1)上面说的适用于所有输入流,一般适用于标准输入流和其他输入流(如文件输入流);所有输出流一般指适用于标准输出流和其他输出流(如文件输出流)int main()//打开文件return 1;//写文件ch <= "z";ch++)
2024-04-13 23:16:27
1032
原创 动态内存管理(重要)
栈区(stack):在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。栈区主要存放运行函数而分配的局部变量、函数参数、返回数据、返回地址等堆区(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。分配方式类似于链表数据段(静态区):(static)存放全局变量、静态数据。程序结束后由系统释放代码段:存放函数体(类成员函数和全局变量)的二进制代码。
2024-03-28 21:41:07
842
原创 自定义类型:联合和枚举
联合的成员是共用同一块内存空间的,这样一个联合变量的大小,至少是最大成员的大小(因为联合至少得有能力保存最大的那成员)我们可以把公共属性单独写出来,剩余属于各种商品的属性使用联合体,这样就可以节省所需的内存空间,一定程度上节省了了内存。在C语言中可以拿整数给枚举变量赋值,但是在C++中不行,C++的检查比较严格。像结构体一样,联合体也是由一个或多个成员构成,这些成员可以是不同的类型。枚举常量的值默认从0开始,依次递增1,在声明枚举类型的时候也可以赋初值。给联合体其中一个成员赋值,其他的成员也跟着变化。
2024-03-26 21:36:17
322
原创 自定义类型:结构体
专门用来节省内存位段的成员必须是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
738
原创 辗转相除法(求最大公约数)
例如:求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
233
原创 数据在内存中的存储(C语言)(难点,需多刷几遍)
大小端字节序指的是数据在电脑上存储的字节顺序是指数据的低位字节内容保存在内存的高地址处,而数据的高位字节内容,保存在内存的低地址处是指数据的低位字节内容保存在内存的低地址处,而数据的高位字节内容,保存在内存的高地址处。
2024-03-19 23:33:00
768
原创 内存操作函数(C语言)
比较从ptr1和ptr2指针指向的位置开始,向后的num个字节(内存块的比较)memset是用来设置内存的,将内存中的值以字节为单位设置成想要的内容。mem--memory--记忆--内存。
2024-03-15 21:29:42
482
原创 字符函数和字符串函数
这个头文件中说明的,C语言程序启动的时候就会使用一个全局的变量errornum来记录程序的当前错误码,只不过程序启动的时候errornum是0,表示没有错误,当我们在使用标准库中的函数的时候发生了某些错误,就会将对应的错误码存放在errornum中,而一个错误码的数字是整数很难理解是什么意思,所以每一个错误码都是有对应的错误信息的,strerror函数就可以将错误对应的错误信息字符串的地址返回。打印的时候,先打印传给perror的字符串,然后打印冒号,再打印空格,最后打印错误码对应的错误信息。
2024-03-14 00:03:35
646
原创 指针的学习5
单位是字节,如果操作数是类型的话,计算的是使用类型创建的变量所占内存空间的大小。统计的是从strlen函数的参数str中这个地址开始向后,strlen函数会一直向后找\0字符,直到找到为止,所以。C语言是编译型语言:test.c->编译->链接->sizeof是单目操作符,不是函数!(头文件是<string.h>),功能是。sizeof只关注占用内存空间的大小,sizeof后面的()不进行计算!字符串中字符的个数(不算\0)sizeof计算变量。strlen是C语言。
2024-03-08 18:17:45
320
原创 指针的学习4
回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行相应(是一种机制)如果把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,被调用的函数就是。两个整型元素可以使用>进行比较,但是两个字符串、两个结构体元素不能够用>进行比较。qsort——库函数,直接用来排序数据,底层使用的是。中间无非是两个元素进行比较,可以封装成函数,然后把。这里的函数指针指向的就是两个元素的比较函数。冒泡排序只能用来实现对。回调函数就是一个通过。
2024-03-06 19:16:11
341
原创 学生管理系统(python实现)
约定把数据保存在和py文件同级目录中,文件名为record.txt。首先这是一个文本文件,里面包含了很多行,每一行代表一个学生。学生的信息之间,使用\t来分割(水平制表符)文件内容按照行文本的方式来表示。
2024-03-04 23:52:11
1756
原创 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
838
原创 python入门介绍
有的设备,既是输入设备,又是输出设备,比如触摸屏、网卡。显卡(GPU)“专用计算芯片”显卡的定位,和CPU是类似的。CPU“通用计算芯片”冯诺依曼~计算机祖师爷。
2024-02-27 19:54:58
123
原创 练习(java)
求出0~n之间的所有“水仙花数”并输出。(“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1^3+5^3+3^3,则153是一个“水仙花数“。
2024-02-20 20:57:51
230
原创 数据类型与变量
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
868
原创 指针习题回顾(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
298
原创 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
183
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人