自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 数据结构—(java)反射,枚举,lambda表达式

java的反射机制是指,在程序的运行状态中,对于任意一个类,可以获取这个类的全部信息(包括,类加载器(后面会学到),构造方法,成员属性,成员方法等。对于任意一个对象,我们也能够调用其属性与方法进行修改信息,这种动态地获取信息与动态地调用对象的机制,我们称为反射机制。

2024-09-20 21:11:20 1139

原创 数据结构——(java版)Map与Set

哈希表是一种数据结构,其实现思想是基于通过数据的关键码与所存地址两者之间构建映射关系,能够一次直接从表中得到想要搜索的元素。数据的关键码与所存地址之间的关系由哈希函数实现,规则为:设定适合的哈希函数之后,输入的关键码通过哈希函数的计算得出所存的地址。由此构造出来的结构称为哈希表。哈希表相对于二叉搜索树以及其他查询方式,不需要与多个关键码比较,这极大提升了查询的效率。

2024-09-11 10:32:21 1243 1

原创 数据结构(java实现)——优先级队列,堆

前面介绍过队列,队列是一种先进先出(FIFO)的数据结构,但有些情况下,操作的数据可能带有优先级,一般出队列时,可能需要优先级高的元素先出队列,该种场景下,使用队列显然不合适,比如:在手机上玩游戏的时候,如果有来电,那么系统应该优先处理打进来的电话;把前k个元素创建为大根堆,遍历剩下的N-K个元素,和栈顶元素比较,如果比栈顶元素小,则删除栈顶元素,将此元素入堆。如果要创建小根堆,我们只能保证堆顶元素为最小值,但是不能保证,左边的元素比右边的元素大,这不是小根堆的特性。

2024-08-07 17:55:52 819 1

原创 数据结构-二叉树(java实现)及相关的oj题

树是一种数据结构,对比于生活中常见的树,其逻辑结构是倒立着的:树是由n个节点组成的有限集,(当n==0时,称此树为空树),对于任何一棵非空树,只有唯一的根节点root.当n>1时,除去根节点,剩余节点可以分为m个有限集(m>0),这些有限集互不相交,其中每个集合又是一棵树,称为根的子树。

2024-08-03 18:03:27 764

原创 数据结构——队列(java实现)及相应的oj题

队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表,一种先进先出的数据结构。队尾:允许插入的一端。队头:允许删除的一端。

2024-07-20 10:48:25 703 1

原创 数据结构——栈的实现(java实现)与相应的oj题

2. 后缀表达式先进栈的是左操作数,后进栈的是右操作数,当我们需要出栈时,第一次获取栈顶元素是右操作数,第二次获取栈顶元素才是左操作数。实现思想:遍历字符串,遇到左括号则存入栈中,遇到右括号则与栈顶元素比较,相匹配,则继续循环,如果不匹配或栈为空,则返回false。栈也是一种线性表,栈只允许在表的一端进行插入与删除操作,所以栈中数据的特征的先进后出(先进来的后出去)。,获取两个操作数进行计算(需要注意的是第一次出栈的是右操作数,第二次出栈的是左操作数)

2024-07-17 16:08:17 800 2

原创 数据结构——单链表与双链表(java实现)

链表是线性表的一种,在物理存储结构上不一定连续(绝大多数情况下非连续),在数据逻辑顺序上,将节点用指针链接起来实现连续。链表是由一个一个的节点组成节点:节点中分为数据域与指针域,数据域用于存放数据,指针域用于存放下一个节点的引用地址。

2024-07-15 17:21:36 1196 7

原创 数据结构——顺序表(java实现)

顺序表是线性表的一种所谓线性表指一串数据的组织存储在逻辑上是线性的,而在物理上不一定是线性的顺序表的底层实现是数组,其由一群数据类型相同的元素组成,其在逻辑与物理上均是线性的。

2024-07-08 19:37:54 601 4

原创 初识java—jdk17的一些新增特性

这里介绍jdk17相对于jdk1.8的部分新增特性。

2024-07-07 15:32:02 619 1

原创 c语言——字符函数与字符串函数

如果一个字符串有多个界符,需要被多次切割,第一次调用函数时,第一个参数需要是指定的字符串地址,而往后调用函数,第一个参数传入。而perror函数可以看做是printf函数与strerror函数的封装,即可以获取错误信息指针,又可以打印。这些函数的参数是指定的字符,返回值为int类型,如果是字符是指定类型,则返回非0的数,否则返回0。本函数的参数是错误码,在c语言程序启动时,便会设置一个errno全局变量记录当前程序的错误码。在c语言中,当我们使用c语言提供的库函数时,发生某种错误,就会对应相应的错误码,

2024-06-10 15:46:20 962 2

原创 数据结构——(java版)包装类与泛型

对于一般的方法与变量,只能使用具体的类型:自定义类型与基本数据类型,但是如果要写适用于多种类型的代码,这种刻板的方式对代码的束缚就很大,我们可以通过泛型来解决这个问题,本质就是将类型参数化!

2024-06-05 18:07:25 964 5

原创 c语言项目-贪吃蛇项目2-游戏的设计与分析

前面我们已经将项目所需的背景知识,大体讲解完了,接下来开始对游戏进行设计与分析提示:以下是本篇文章正文内容,下面案例可供参考自己的调试能力比较差,没有认真地进行调试,监视变量!缺乏错误经验,一个野指针便让自己摸不着头脑!这种做项目的思维方式有问题,后面的出现问题,又不断地修改前面的内容,如果是大项目,很容易崩盘!具体:在函数中修改尾结点时,不需要使用二级指针,可以通过->next->next的方式进行修改。

2024-06-04 20:37:15 1098 6

原创 数据结构---时间复杂度与空间复杂度

时间复杂度在计算机科学中的定义就是一个描述程序执行次数的函数,它大略地(数据并不精准!)定量地描述了程序执行的时间,实际上因为各种因素的不同(比如硬件设备等),我们是无法计算出执行一段程序所需的时间的,只有上机测试才能够知道。我们不可能对每个算法都实现一遍去测试(成本太高!),所以我们需要找出衡量这些算法优劣(针对运行时间讲)的规则。一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的时间复杂度。k < 2 * N;

2024-06-02 10:50:18 1288 7

原创 初识java——javaSE(8)异常

/异常是指代码中除了语法错误之外,出现的问题导致代码出现不正常行为的状况称之为异常!//在java中用异常类来表示异常,因为java的思想是一切皆对象。//数组越界:结果:显示为:ArrayIndexOutOfBoundsException异常(此异常为数组越界异常)后面是原因: Index 10 out of bounds for length 5//除0结果:显示为: ArithmeticException异常(此异常为算术异常)

2024-05-31 21:50:59 893 4

原创 初识java——javaSE(7)String类

在c语言中字符串用字符数组来存储,并没有专门的字符串类型。在java中,专门针对字符串创建了一个String类.1 . String类中方法,凡是涉及到修改字符串的,均是生成了一个新的字符串!2. String类中还有其他方法,这里不一一列举,我们不应该硬背这些方法,而是在需要时,去帮助手册,或者官网上查阅。

2024-05-30 17:59:06 1271 3

原创 java项目——图书管理系统

针对这些天所学的javaSE的知识,用一个小项目来实践一下。在最开始写此项目时,我是创建了两个类(普通用户类菜单相关一个,管理员相关一个)根据接受到的choice值,用switch语句来调用相应的实现类对象,但是这并不是面向对象的思想,是面向过程的思想,应该尽量的将属于一个对象的东西封装到一个类中去,比如专属于普通用户的菜单,专属于普通用户的业务实现类对象数组,用户对象可以调用自己的方法实现功能(如dooperation方法)等。

2024-05-28 18:00:22 2361 5

原创 初识java——javaSE (6)接口的实现——比较器与深拷贝,浅拷贝

上一篇博客并没有将接口的内容阐述完毕,这篇博客继续阐述!

2024-05-25 11:17:54 1221 8

原创 初识java——javaSE(6)抽象类与接口【求个关注!】

抽象类是一种特殊类,它为子类提供一个的通用的模版,使得子类继承对于抽象类所描述的事物,现实世界中是不存在的,比如动物,现在世界中不存在动物这个实体!

2024-05-24 13:10:42 945 7

原创 初识java———javaSE(5)继承与多态【求个关注!】

继承的思想:所谓继承在生活中有继承衣钵,继承遗产的说法,java中引入了继承的思想,继承是类与类之前的关系,一个类继承另一个类的成员与方法被继承的类称为父类 /基类 / 超类继承的类成为 子类/派生类子类可以使用父类的成员变量与方法,也可以定义自己的成员变量与方法!dog1.name = "小黑";int age;System.out.println("动物发出叫声!");String sex;System.out.println("狗在吃骨头!");

2024-05-19 20:25:31 1159 8

原创 初识java——javaSE(4)类与对象

面向过程的思想关注的是过程,即功能的具体实现,我们之前用c语言编写的代码的思想即是面向过程的思想。面向对象的思想关注的是对象,即将各个事物看作一个个对象,进行对象之间的调用协作。举例:早些时候农村洗衣服的方式:此时我们注重参与洗衣服的过程,——这即是面向过程的思想现在农村洗衣服的方式:此时,我们只是注重于三个对象,衣服,洗衣粉,洗衣机。至于洗衣机具体是怎样操作的,是我们不注重的,这就是面向对象的思想。什么是类?类相当于一个模型,而对象则是类的具体实现。类的形式:class 类名 {

2024-05-14 16:59:06 1056 8

原创 初识java--javaSE(3)--方法,递归,数组,

方法类似于c语言中函数,//方法的形式是:/*public static 返回值类型 方法名 (形式参数列表){方法体}*///其中public static 属于修饰符的部分, 先当做默认的方法格式,以后会阐述到return a+b;没有main方法的调用,此方法是执行不了的。//总结:对于方法重载的规则:// 1 方法名必须相同// 2 参数列表必须不同(个数,类型,顺序)// 3 返回值类型与重载无关!递归就是方法自己调用自己,通过自身的规则将大问题分解成小问题,最后解决问题。

2024-05-11 21:25:47 1073 6

原创 初识java——javaSE(2)--运算符与逻辑控制【求个关注】

因为变量b1与i相加,首先b1自动转换类型为int ,然后b1+i的值为int类型,赋给byte类型b2,没有强制类型转换操作符,所以报错!输出结果显示异常,其提示是因为/ by zero,即除以0的原因。算术运算符有以下几种:+ - * / %

2024-05-01 14:32:17 236 2

原创 初识java——javaSE(1)

在c语言中是没有字符串类型的,存储字符串时所用的是数组,但是在java中定义了字符串变量,类型名为string。常量指的是程序中运行中,不会改变的数据,其数值在编译阶段确定,一周有7天,每个人的生日等等,性别等都是常量。自动类型转换即数值范围小的类型,转换成数值范围大的类型,这种转换并不需要操作符。此注释的奇妙之处,在于我们可以通过jdk中的javadoc工具,来生成文档。结果出现这种错误,本质上是因为我的电脑中cmd的中文编码方式是GBK,而我的记事本中中文编码方式是utf-8,所以无法识别。

2024-04-26 18:57:13 922 4

原创 c语言项目-贪吃蛇1-背景知识【求个关注!】

此函数的形参与GetConsoleCursorInfo函数的形参相同,第一个参数是控制台屏幕的句柄,第二个参数是光标信息结构体变量,而此函数的作用是设置对应控制台屏幕的光标信息。如果返回值二进制最高位为1,说明此虚拟值对应的按键的状态是按下,如果返回值二进制最高位为0,说明此虚拟值对应的按键状态是抬起.如果返回值的二进制最低位为1,说明此按键被按过,如果返回值的二进制的最低位为0,说明此虚拟值对应的按键并没有被按过。,我们通过函数返回值进行判断,返回值的类型是short类型,

2024-04-23 09:56:44 988 4

原创 初识java——jdk?环境变量?及关于安装jdk的步骤

建议大家看完下面的详解后,再来看这个简介!jdk的全称是Java Development Kit 意为java开发工具包,这是每一个java语言开发者所必需的。jdk中包含了java编译器(javac),java虚拟机(JVM)等基本开发工具,以及java标准库(Java Standard Library):用于Java程序开发的各种类与方法(类似于c语言中库函数的作用),还有用于开发各种类型应用程序所需的API。

2024-04-22 17:15:38 545 6

原创 c语言-预处理详解【求个关注!】

c语言中定义了一些预定义符号,这些预定义符号可以直接使用,当然这些预定义符号也在预处理阶段处理!//_ _FLIE_ _ //用来编译的源文件 //__LINE__ //在当前文件中被编译的代码行号 //__DATE__ //文件被编译的日期 //__TIME__ //文件被编译的时间 //__STDC__ 如果编译器完全实现 ANSI C 则值为1,否则未定义 // 至于这个是关于什么的信息,我不清楚//在VS编译器中并没有STDC的规定!return 0;

2024-04-15 17:24:36 2017 6

原创 c语言中声明的问题【求个关注!】

变量定义是为变量分配内存空间,并赋予初始值变量声明是向程序表明变量的类型与名字定义也是声明,但声明不是定义在程序中我们可以声明多次,但只能定义一次,这就好比,我们可以使用很多次锤子,但是锤子只有一把程序员们编写程序时,不会将程序全部写在一个.c文件中(这样不能使程序员们同时进行编码,且代码可读性很差),而是存放在多个文件中去, 如果我们想引用其他文件定义的变量,函数,则需要用到声明,声明的作用即告诉编译器,有这个函数或变量,可以调用,而在链接阶段使程序去查找变量或函数的定义。

2024-04-14 10:09:46 391 3

原创 c语言 — 文件操作【求个关注!】

硬盘(磁盘)上的文件是文件,但在程序设计中,可分为两种文件—程序文件与数据文件(从文件功能的角度进行分析)在打开文件之后就需要对文件进行读写:下面讲一下这些读写函数:这些读写函数中有些能用作文件流的操作,有些能用作所有的输入流或输出流,故将这些函数命名为文件操作函数是不合理的!注意:输入:将文件中的数据输入到程序中输出:通过程序将数据存放到文件中。

2024-04-08 17:07:32 1863 5

原创 c语言 :柔性数组与c/c++内存领域的划分

c99中规定 在结构体中,如果其最后的一个结构体成员为数组,且此数组的大小未指定,称其为柔性数组声明如下:struct S {int a;int arr[];//也可以写成这种格式struct S2int a;//在某些编辑器中,支持第一种格式,另外的一些支持第二种格式。

2024-04-03 14:45:58 483 1

原创 c语言——自定义类型——【结构体,联合体,枚举】

char b;double c;char b;double c;}*p2;p1 = &s1;//可以使用//错误代码//因为系统不能识别两个无符号的结构体是不是同一类型return 0;位段(或称为位域)是结构体类型的一种形式,与常规结构体的差别在于成员不同在c99之前的版本,位段只能是 int, unsigned int, signed int 或者是 char(属于整形家族)类型。

2024-03-27 17:04:59 375 3

原创 c语言动态内存管理【求个关注!】

我们创建数组,变量申请空间时,申请的空间都是固定大小的,不能改变(除非修改代码)为此有个动态内存管理,将内存的权限交给我们程序员,可以主动地申请内存空间,用完后,由程序员释放这样可以提高内存空间的利用率,但是也提高了风险。

2024-03-27 16:45:32 271 2

原创 数据在内存中的存储问题

原本这个问题是个鸡蛋剥壳问题,该从鸡蛋的大端剥还是鸡蛋的小端剥//对应到我们计算机来讲,就成了,在数据大于1个字节时,(我们知道一个地址对应相应的内存空间,// 这里我们以一个地址对应一个字节来举例)//低字节部分(即小数值位)是放到高地址处还是放到低地址处//对应的,高字节部分是放到低地址处,还是高地址处。

2024-03-18 15:46:38 458 1

原创 c语言中的内存函数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

2024-03-15 21:34:12 865 4

原创 指针(3)(建议收藏哦!)

野指针是指针指向的地址不确定的,地址值的类型不正确的,指针指向的地址越界的,指向的地址已经释放的,这几种指针.在&arr,与sizeof(arr),中,arr都代表数组名,其它的情况下数组名则是数组首元素的地址。而这就是assert语句的作用!//良好的编码习惯可以避免很多不必要的问题,节省我们的精力,我们应该避免野指针的出现。这次顺利运行,assert宏的作用不限于判断是否为NULL,也可以判断其他的表达式!关于数组名的问题,我在之前的博客中写过,但是觉得不全面,这个我好好整理一下。

2024-03-10 20:45:17 365 2

原创 c语言的排序问题

这里暂时只写一下三种排序

2024-03-08 19:42:05 314 1

原创 指针(2)(建议收藏哦!)

除了sizeof(arr)(未传参前)与&arr中的arr代表整个数组,其他的arr中的值等于数组首元素的地址。最后,void*也是指针类型,指针类型的大小取决于64位还是32位,前者指针大小为8个字节,后者为4个字节。//对于上一篇博客我已讲过指针的算术运算,大家可以去看看,这里我们看一下,数组名+1会出现什么情况?原理:在计算机硬件设备中,地址线数决定地址的位数,地址线数因此也成为决定系统内存大小的一个因素!在64位的情况下,地址是8个字节-(一个字节是8位);(3)数组的地址与数组首元素地址的关联。

2024-03-06 22:03:04 471 2

原创 指针(1) (因为内容较多我只能分成几部分,建议收藏哦)

二级指针即指针的地址,也即指向指针类型的指针(可以从不同的角度理解指针,大家按照喜欢的角度理解即可)关于数组的内容的,我在我之前的博客中写过,但是不够全面,清晰,这里再在这里重写一下数组指针的部分!// 结构体类型的二级指针,暂时不弄了,我没发现用处,有需要的小伙伴可在评论区说,我会添上!// 兄弟们,还有其他指针的部分没梳理到,我会在接下来的博客中继续梳理,欢迎大家指正!数组指针数组是数组元素为数组指针的数组,(有些绕,把握本质就行,不要细扣字)指针是指向内存中的地址,简要的说,指针就是地址。

2024-03-05 16:57:01 512

原创 关于在vs编译器中scanf函数安全性的问题

我们在输入一串数据后,会将数据至于缓存区,系统会扫描数据至空格处,也就是说在空格之前的数据都会读取,这就导致了我们输入数据过多,导致超过数组边界;首先我们需要找到new c++ file.cpp文件,这里向大家推荐一个免费软件,可以极方便的搜索本电脑中的文件。对于scanf_s函数一些其他的问题,暂时没有需求,我就不写了,如果有伙伴需要可在评论区回复。上个解决方法的弊端在于当每次创建一个新的项目时,都需要手动添加这一条语句,很是麻烦。注意,我们输入字符串时必须考虑最后添加的\0,\0也占一个数组元素空间。

2024-03-02 15:18:04 845 4

原创 数组的问题(c语言数组内容,建议收藏!)

目录: 一:(1)一维数组一维数组的创建与初始化一维数组在内存中的空间分配(2)二维数组二维数组的创建与初始化二维数组在内存中的空间分配二 : 变长数组一维数组的运用二维数组的运用三 :(1) 数组本身的类型与数组元素类型的区别(2)计算数组的内存大小(3)计算数组元素的个数四 : 数组作函数参数(1)一维数组作函数参数及与指针的关联(2)二维数组作函数参数及与指针的关联五 :数组指针指针数组。

2024-02-26 10:42:55 828 4

原创 扫雷游戏(9*9)

设计思想:1 先打印菜单页面,接着跟着菜单提示选择对应的功能,如果输入不存在的选项,则提示重新输入 . 2 只有输入错误才会进行循环,重新输入,而选择1或者2 程序执行完之后,则不会再循环。设计格子的思想:在扫雷时,我们需要计算一个坐标周围八个坐标中共有多少个雷,而对于格子的边的坐标,在计算时,就会越界。1 首先要创建扫雷游戏的格子,采用二维数组实现,创建了两个二维数组,一个作为显示的格子,另一个作为幕后的格子。此打印格子的函数,除了打印了扫雷所用的格子,还有格子的坐标。

2024-02-01 15:37:52 446 2

c语言编写的贪吃蛇小游戏

此小游戏适用于c语言学完的小伙伴进行参考。

2024-06-05

java语言编写的图书管理系统

只适用于初学javaSE者,本项目并未涉及图形化页面与数据库连接。

2024-05-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除