- 博客(47)
- 收藏
- 关注
原创 javaEE初阶——多线程(1)
客户端与服务器架构:客户端是面向用户的,用户通过客户端发送请求,而服务器端是提供服务的,针对客户端发出的请求作出相应的回应。常见的客户端有:电脑与手机上的app软件。电脑上的web端(浏览器)与手机上的web端(浏览器)。服务器端:服务器端分为服务器软件与服务器硬件设备,服务器软件安装在服务器硬件设备之上,客户端与服务器端可能在一台硬件设备上,也可能在不同的硬件设备上,客户端与服务器端的概念是相对的。
2024-11-25 13:15:38
1333
1
原创 数据库MYSQL——表的设计
之前的博客中我们讲解的是关于数据库的增删改查与约束的基本操作,是在已经创建数据库,表之上的操作。在实际的项目开发过程中,表的设计是需要我们根据需求来分析设计的,表设计的过程:OOA面向对象分析–>OOD面向对象设计–>OOP面向对象编程。首先:我们是从需求中获得类(与java中的对象类的概念相同),然后类对应数据库中的实体,实体对应数据库中一张一张的表,而类中的每一个属性对应表中的每一个字段(列)。其次获取类与类之间的关系,类与类之间的关系(或者说实体与实体之间的关系)有。
2024-11-23 11:53:51
1383
1
原创 数据库MySQL——约束
数据库约束是关系型数据库的一项重要功能,我们在将数据存入数据库时,需要保证数据的合法性(比如说星期,只能填1到7的数字,不可以填字母与其他数字)与关联关系(两个表之间有关联关系时,一个表中的数据合法性受另一张表中数据的局限)的正确性。我们不可能在插入每一个数据时,人工地判断其数据是否合法,所以需要数据库帮助我们做判断,我们在创建表时,设置好数据的约束限制(建立在属性上)以此来达到数据库帮助我们检验的目的。
2024-11-01 10:29:01
682
原创 MySQL—关于数据库的CRUD—(增删改查)
数据库程序分为客户端与服务器端两部分,客户端用于接收用户的操作信息并向服务端发送“请求”,服务器端接收客户端发来的请求,并执行相应的操作并对其进行“响应”。
2024-10-14 11:11:04
1050
原创 数据结构——七种排序(java)实现
即在待排序序列中选出了一个基准值以后,将此基准值从所在的数组位置中移到临时变量中,此数组位置便成为一个空位,然后创建两个标记,左标记与右标记,右标记先走,遇到小于基准值的数据则将此值放入当前的空位中,然后左标记再走,直到两者相遇,两者相遇时,此时正指向空位,将临时变量的值赋给此空位,然后将左区间与右区间递归上述操作。在设定待排序序列的最小值下标与最大值下标均为left,然后再遍历过程中,遇到小于当前最小值的下标时,则替换下标,最大值亦是如此,遍历一遍,然后待排序序列从左右均收缩一个元素。
2024-10-06 18:21:54
1094
2
原创 数据结构—(java)反射,枚举,lambda表达式
java的反射机制是指,在程序的运行状态中,对于任意一个类,可以获取这个类的全部信息(包括,类加载器(后面会学到),构造方法,成员属性,成员方法等。对于任意一个对象,我们也能够调用其属性与方法进行修改信息,这种动态地获取信息与动态地调用对象的机制,我们称为反射机制。
2024-09-20 21:11:20
1208
1
原创 数据结构——(java版)Map与Set
哈希表是一种数据结构,其实现思想是基于通过数据的关键码与所存地址两者之间构建映射关系,能够一次直接从表中得到想要搜索的元素。数据的关键码与所存地址之间的关系由哈希函数实现,规则为:设定适合的哈希函数之后,输入的关键码通过哈希函数的计算得出所存的地址。由此构造出来的结构称为哈希表。哈希表相对于二叉搜索树以及其他查询方式,不需要与多个关键码比较,这极大提升了查询的效率。
2024-09-11 10:32:21
1336
2
原创 数据结构(java实现)——优先级队列,堆
前面介绍过队列,队列是一种先进先出(FIFO)的数据结构,但有些情况下,操作的数据可能带有优先级,一般出队列时,可能需要优先级高的元素先出队列,该种场景下,使用队列显然不合适,比如:在手机上玩游戏的时候,如果有来电,那么系统应该优先处理打进来的电话;把前k个元素创建为大根堆,遍历剩下的N-K个元素,和栈顶元素比较,如果比栈顶元素小,则删除栈顶元素,将此元素入堆。如果要创建小根堆,我们只能保证堆顶元素为最小值,但是不能保证,左边的元素比右边的元素大,这不是小根堆的特性。
2024-08-07 17:55:52
914
2
原创 数据结构-二叉树(java实现)及相关的oj题
树是一种数据结构,对比于生活中常见的树,其逻辑结构是倒立着的:树是由n个节点组成的有限集,(当n==0时,称此树为空树),对于任何一棵非空树,只有唯一的根节点root.当n>1时,除去根节点,剩余节点可以分为m个有限集(m>0),这些有限集互不相交,其中每个集合又是一棵树,称为根的子树。
2024-08-03 18:03:27
822
1
原创 数据结构——队列(java实现)及相应的oj题
队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表,一种先进先出的数据结构。队尾:允许插入的一端。队头:允许删除的一端。
2024-07-20 10:48:25
754
1
原创 数据结构——栈的实现(java实现)与相应的oj题
2. 后缀表达式先进栈的是左操作数,后进栈的是右操作数,当我们需要出栈时,第一次获取栈顶元素是右操作数,第二次获取栈顶元素才是左操作数。实现思想:遍历字符串,遇到左括号则存入栈中,遇到右括号则与栈顶元素比较,相匹配,则继续循环,如果不匹配或栈为空,则返回false。栈也是一种线性表,栈只允许在表的一端进行插入与删除操作,所以栈中数据的特征的先进后出(先进来的后出去)。,获取两个操作数进行计算(需要注意的是第一次出栈的是右操作数,第二次出栈的是左操作数)
2024-07-17 16:08:17
851
2
原创 数据结构——单链表与双链表(java实现)
链表是线性表的一种,在物理存储结构上不一定连续(绝大多数情况下非连续),在数据逻辑顺序上,将节点用指针链接起来实现连续。链表是由一个一个的节点组成节点:节点中分为数据域与指针域,数据域用于存放数据,指针域用于存放下一个节点的引用地址。
2024-07-15 17:21:36
1370
7
原创 数据结构——顺序表(java实现)
顺序表是线性表的一种所谓线性表指一串数据的组织存储在逻辑上是线性的,而在物理上不一定是线性的顺序表的底层实现是数组,其由一群数据类型相同的元素组成,其在逻辑与物理上均是线性的。
2024-07-08 19:37:54
707
4
原创 c语言——字符函数与字符串函数
如果一个字符串有多个界符,需要被多次切割,第一次调用函数时,第一个参数需要是指定的字符串地址,而往后调用函数,第一个参数传入。而perror函数可以看做是printf函数与strerror函数的封装,即可以获取错误信息指针,又可以打印。这些函数的参数是指定的字符,返回值为int类型,如果是字符是指定类型,则返回非0的数,否则返回0。本函数的参数是错误码,在c语言程序启动时,便会设置一个errno全局变量记录当前程序的错误码。在c语言中,当我们使用c语言提供的库函数时,发生某种错误,就会对应相应的错误码,
2024-06-10 15:46:20
1006
2
原创 数据结构——(java版)包装类与泛型
对于一般的方法与变量,只能使用具体的类型:自定义类型与基本数据类型,但是如果要写适用于多种类型的代码,这种刻板的方式对代码的束缚就很大,我们可以通过泛型来解决这个问题,本质就是将类型参数化!
2024-06-05 18:07:25
1031
5
原创 c语言项目-贪吃蛇项目2-游戏的设计与分析
前面我们已经将项目所需的背景知识,大体讲解完了,接下来开始对游戏进行设计与分析提示:以下是本篇文章正文内容,下面案例可供参考自己的调试能力比较差,没有认真地进行调试,监视变量!缺乏错误经验,一个野指针便让自己摸不着头脑!这种做项目的思维方式有问题,后面的出现问题,又不断地修改前面的内容,如果是大项目,很容易崩盘!具体:在函数中修改尾结点时,不需要使用二级指针,可以通过->next->next的方式进行修改。
2024-06-04 20:37:15
1158
6
原创 数据结构---时间复杂度与空间复杂度
时间复杂度在计算机科学中的定义就是一个描述程序执行次数的函数,它大略地(数据并不精准!)定量地描述了程序执行的时间,实际上因为各种因素的不同(比如硬件设备等),我们是无法计算出执行一段程序所需的时间的,只有上机测试才能够知道。我们不可能对每个算法都实现一遍去测试(成本太高!),所以我们需要找出衡量这些算法优劣(针对运行时间讲)的规则。一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的时间复杂度。k < 2 * N;
2024-06-02 10:50:18
1364
7
原创 初识java——javaSE(8)异常
/异常是指代码中除了语法错误之外,出现的问题导致代码出现不正常行为的状况称之为异常!//在java中用异常类来表示异常,因为java的思想是一切皆对象。//数组越界:结果:显示为:ArrayIndexOutOfBoundsException异常(此异常为数组越界异常)后面是原因: Index 10 out of bounds for length 5//除0结果:显示为: ArithmeticException异常(此异常为算术异常)
2024-05-31 21:50:59
916
4
原创 初识java——javaSE(7)String类
在c语言中字符串用字符数组来存储,并没有专门的字符串类型。在java中,专门针对字符串创建了一个String类.1 . String类中方法,凡是涉及到修改字符串的,均是生成了一个新的字符串!2. String类中还有其他方法,这里不一一列举,我们不应该硬背这些方法,而是在需要时,去帮助手册,或者官网上查阅。
2024-05-30 17:59:06
1347
3
原创 java项目——图书管理系统
针对这些天所学的javaSE的知识,用一个小项目来实践一下。在最开始写此项目时,我是创建了两个类(普通用户类菜单相关一个,管理员相关一个)根据接受到的choice值,用switch语句来调用相应的实现类对象,但是这并不是面向对象的思想,是面向过程的思想,应该尽量的将属于一个对象的东西封装到一个类中去,比如专属于普通用户的菜单,专属于普通用户的业务实现类对象数组,用户对象可以调用自己的方法实现功能(如dooperation方法)等。
2024-05-28 18:00:22
2441
5
原创 初识java——javaSE(6)抽象类与接口【求个关注!】
抽象类是一种特殊类,它为子类提供一个的通用的模版,使得子类继承对于抽象类所描述的事物,现实世界中是不存在的,比如动物,现在世界中不存在动物这个实体!
2024-05-24 13:10:42
983
7
原创 初识java———javaSE(5)继承与多态【求个关注!】
继承的思想:所谓继承在生活中有继承衣钵,继承遗产的说法,java中引入了继承的思想,继承是类与类之前的关系,一个类继承另一个类的成员与方法被继承的类称为父类 /基类 / 超类继承的类成为 子类/派生类子类可以使用父类的成员变量与方法,也可以定义自己的成员变量与方法!dog1.name = "小黑";int age;System.out.println("动物发出叫声!");String sex;System.out.println("狗在吃骨头!");
2024-05-19 20:25:31
1199
8
原创 初识java——javaSE(4)类与对象
面向过程的思想关注的是过程,即功能的具体实现,我们之前用c语言编写的代码的思想即是面向过程的思想。面向对象的思想关注的是对象,即将各个事物看作一个个对象,进行对象之间的调用协作。举例:早些时候农村洗衣服的方式:此时我们注重参与洗衣服的过程,——这即是面向过程的思想现在农村洗衣服的方式:此时,我们只是注重于三个对象,衣服,洗衣粉,洗衣机。至于洗衣机具体是怎样操作的,是我们不注重的,这就是面向对象的思想。什么是类?类相当于一个模型,而对象则是类的具体实现。类的形式:class 类名 {
2024-05-14 16:59:06
1098
8
原创 初识java--javaSE(3)--方法,递归,数组,
方法类似于c语言中函数,//方法的形式是:/*public static 返回值类型 方法名 (形式参数列表){方法体}*///其中public static 属于修饰符的部分, 先当做默认的方法格式,以后会阐述到return a+b;没有main方法的调用,此方法是执行不了的。//总结:对于方法重载的规则:// 1 方法名必须相同// 2 参数列表必须不同(个数,类型,顺序)// 3 返回值类型与重载无关!递归就是方法自己调用自己,通过自身的规则将大问题分解成小问题,最后解决问题。
2024-05-11 21:25:47
1108
6
原创 初识java——javaSE(2)--运算符与逻辑控制【求个关注】
因为变量b1与i相加,首先b1自动转换类型为int ,然后b1+i的值为int类型,赋给byte类型b2,没有强制类型转换操作符,所以报错!输出结果显示异常,其提示是因为/ by zero,即除以0的原因。算术运算符有以下几种:+ - * / %
2024-05-01 14:32:17
255
2
原创 初识java——javaSE(1)
在c语言中是没有字符串类型的,存储字符串时所用的是数组,但是在java中定义了字符串变量,类型名为string。常量指的是程序中运行中,不会改变的数据,其数值在编译阶段确定,一周有7天,每个人的生日等等,性别等都是常量。自动类型转换即数值范围小的类型,转换成数值范围大的类型,这种转换并不需要操作符。此注释的奇妙之处,在于我们可以通过jdk中的javadoc工具,来生成文档。结果出现这种错误,本质上是因为我的电脑中cmd的中文编码方式是GBK,而我的记事本中中文编码方式是utf-8,所以无法识别。
2024-04-26 18:57:13
942
4
原创 c语言项目-贪吃蛇1-背景知识【求个关注!】
此函数的形参与GetConsoleCursorInfo函数的形参相同,第一个参数是控制台屏幕的句柄,第二个参数是光标信息结构体变量,而此函数的作用是设置对应控制台屏幕的光标信息。如果返回值二进制最高位为1,说明此虚拟值对应的按键的状态是按下,如果返回值二进制最高位为0,说明此虚拟值对应的按键状态是抬起.如果返回值的二进制最低位为1,说明此按键被按过,如果返回值的二进制的最低位为0,说明此虚拟值对应的按键并没有被按过。,我们通过函数返回值进行判断,返回值的类型是short类型,
2024-04-23 09:56:44
1014
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
596
6
原创 c语言-预处理详解【求个关注!】
c语言中定义了一些预定义符号,这些预定义符号可以直接使用,当然这些预定义符号也在预处理阶段处理!//_ _FLIE_ _ //用来编译的源文件 //__LINE__ //在当前文件中被编译的代码行号 //__DATE__ //文件被编译的日期 //__TIME__ //文件被编译的时间 //__STDC__ 如果编译器完全实现 ANSI C 则值为1,否则未定义 // 至于这个是关于什么的信息,我不清楚//在VS编译器中并没有STDC的规定!return 0;
2024-04-15 17:24:36
2093
6
原创 c语言中声明的问题【求个关注!】
变量定义是为变量分配内存空间,并赋予初始值变量声明是向程序表明变量的类型与名字定义也是声明,但声明不是定义在程序中我们可以声明多次,但只能定义一次,这就好比,我们可以使用很多次锤子,但是锤子只有一把程序员们编写程序时,不会将程序全部写在一个.c文件中(这样不能使程序员们同时进行编码,且代码可读性很差),而是存放在多个文件中去, 如果我们想引用其他文件定义的变量,函数,则需要用到声明,声明的作用即告诉编译器,有这个函数或变量,可以调用,而在链接阶段使程序去查找变量或函数的定义。
2024-04-14 10:09:46
422
3
原创 c语言 — 文件操作【求个关注!】
硬盘(磁盘)上的文件是文件,但在程序设计中,可分为两种文件—程序文件与数据文件(从文件功能的角度进行分析)在打开文件之后就需要对文件进行读写:下面讲一下这些读写函数:这些读写函数中有些能用作文件流的操作,有些能用作所有的输入流或输出流,故将这些函数命名为文件操作函数是不合理的!注意:输入:将文件中的数据输入到程序中输出:通过程序将数据存放到文件中。
2024-04-08 17:07:32
1919
5
原创 c语言 :柔性数组与c/c++内存领域的划分
c99中规定 在结构体中,如果其最后的一个结构体成员为数组,且此数组的大小未指定,称其为柔性数组声明如下:struct S {int a;int arr[];//也可以写成这种格式struct S2int a;//在某些编辑器中,支持第一种格式,另外的一些支持第二种格式。
2024-04-03 14:45:58
503
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
400
3
原创 c语言动态内存管理【求个关注!】
我们创建数组,变量申请空间时,申请的空间都是固定大小的,不能改变(除非修改代码)为此有个动态内存管理,将内存的权限交给我们程序员,可以主动地申请内存空间,用完后,由程序员释放这样可以提高内存空间的利用率,但是也提高了风险。
2024-03-27 16:45:32
285
2
原创 数据在内存中的存储问题
原本这个问题是个鸡蛋剥壳问题,该从鸡蛋的大端剥还是鸡蛋的小端剥//对应到我们计算机来讲,就成了,在数据大于1个字节时,(我们知道一个地址对应相应的内存空间,// 这里我们以一个地址对应一个字节来举例)//低字节部分(即小数值位)是放到高地址处还是放到低地址处//对应的,高字节部分是放到低地址处,还是高地址处。
2024-03-18 15:46:38
489
1
原创 指针(3)(建议收藏哦!)
野指针是指针指向的地址不确定的,地址值的类型不正确的,指针指向的地址越界的,指向的地址已经释放的,这几种指针.在&arr,与sizeof(arr),中,arr都代表数组名,其它的情况下数组名则是数组首元素的地址。而这就是assert语句的作用!//良好的编码习惯可以避免很多不必要的问题,节省我们的精力,我们应该避免野指针的出现。这次顺利运行,assert宏的作用不限于判断是否为NULL,也可以判断其他的表达式!关于数组名的问题,我在之前的博客中写过,但是觉得不全面,这个我好好整理一下。
2024-03-10 20:45:17
379
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人