自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 BIO/NIO学习

而通过NIO中的文件映射(FileChannel.map()方法),可以直接将文件的部分或全部内容映射到内存中的ByteBuffer中,从而实现基于内存的文件读写操作。在传送文件的时候常常出现这么一个问题,就是当客户端的文件全部传送完了之后,服务器没有接收到客户端那边传过的停止信号,所以服务器也就跟着客户端停止运行了,我们可以使用。Buffer的主要作就是装入数据,然后输出数据,相当于一个竹筒,通过put方法放入数据,没放一些数据 Nuffer的position相应的就会向后移动一些位置。

2024-05-28 22:03:53 749

原创 扫雷游戏 玩具谜题 A+B Problem(高精)

我的算法不厉害所以先从简单的题目开始写思路:准备,首先准备一个方向数组,以中心点遍历周围的八个点。然后遍历整个二维数组,遇到‘*’就遍历整个方向数组.如果遇到越界的就直接continue其他的就在一个只有数组的二维数组进行++操作。这里需要考虑到一点,就是前面会有"*"然后后面也会有'*',这样就是导致*的点多加了,所以最后输出条件是如果大于等于42就输出'*'即可。

2024-05-26 21:18:24 671

原创 项目总结(后面应该怎做)

第二个表是具体作业表,是一个关系表,一个自增的主键,然后再是当前时间,和每一个题目。老师点击随机点人的时候,就要将这个时间记录并存进数据库,然后进入随机点人的界面,每按一次随机点人的时候就从数据库里面返回一个学生对象,并再随机点人的界面创建一个集合,点一次就将这个学生对象加进去,当老师按下结束点人的时候,就将这个集合返回给数据库里面并将这个结果保存到学生和随机点人关系表中,当保存完数据库之后,就给学生发送一个信息,告诉学生已经随机点人完了,告诉的信息应该是随机点人的时间和班级id。

2024-05-13 14:12:30 302

原创 项目总结111

在之前我一直以为客户端里面是一发一收,所以这个长连接还是相当于端连接,所以我现在只能将全部重改,当登录过后,就开一个客户端线程,然后通过线程不断接收服务器的信息,然后再通过获取控制类里面的方法对控制类里面的界面进行可视化显示。只能说能做多少就做多少吧,现在重改也不知道后面会做的怎么样,只能顺其自然了吧。之后会怎么样我真的没什么定数。明天和后天的代码进行修改,然后大后天重新进行开始开发新的功能点。

2024-05-11 15:20:25 91

原创 java总结

关于第一个问题:在我第一次这个项目的时候就疑惑了很久,问题主要体现在客户端和服务器两方面,在客户端中,只要有一个流关闭,客户端和服务器就建立不起来连接,主要体现,所以我们不能使用close来关闭流,只能使用flush来刷新流,目前还没想到什么在不关闭流的就能使socket关闭的方法,就目前而言我只能实现,通过不断创建流来维持和服务起的联系。在服务器也是同样的道理(对于短连接可以选择关闭,反正在短连接中循环时一定要关闭的),所以我们最好在短连接的时候就要把流该关闭的就要关闭。

2024-04-29 00:39:38 240 2

原创 java的总结

在我的理解前端就是:客户端在前端进行点击输入数据,前端将这些数据整合起来然后通过集合,或者对象使用序列化的操作进行,将这个数据发给服务器。服务器会根据你发过来的操作信息进行增删改查将数据处理,然后返回给前端,前端就会根据从服务器返回的数据进行假面的转化。后端:其实就是前面所讲的服务器的建设其实就是后端的工作,我们可以使用jdbc加上mysql语言来对数据库进行增删改查。由于最近已经开始做项目了,所以对java的基础知识的学习都是一个离散化的状态没有一个很系统的学习,都是哪里不会就去学哪里。

2024-04-17 00:00:47 660 1

原创 java总结

我刚刚好像对流有点大彻大悟的感觉:既然是流那么就一定存在两个端点,端点1和端点2 当服务器accept到一个端点时,那么这个流就已经确定了,确定了客户端和服务器的流,所以我们在相应的功能点中也就知道了流的方向。我们创建流是为了指定信息传送的方向,然后通过read和wirite来度文件信息和传文件信息。FileInputStream:这个用于接收本地文件中的资料,常常需要我们指定文件的位置。对于图片来说为了不重名,我们可以使用api中的帮助文档uuid来随机生成一个图片的名字。对于uuid的使用方式如下。

2024-04-14 23:21:00 151

原创 多线程的学习

多线程编辑:可以简单理解进程是一个软件 而线程就是一个软件中多个可以同时运行的功能实现多线程的第一种方式:使用Thead类我们再自己创造一个类继承于这个类我们在对Thead方法进行重写,注意我们再重写的时候一定要加上@Override这行我犯下的错误2:我们在类里面调用方法的时候我们是不需要加上对象的名字,当我们在想要使用多线程的时候我们要用对象名.start() 这个时候才能实现多线程多线程的第二种实现方式:实现Runnable接口的方式进行实现

2024-04-10 08:43:56 504

原创 mysql jdbc数据库速成总结

接下来我们就在src创建一个类就好了 我们可以直接把包名和类名都创建一下 com.guansuian.JDBCDemo 注意包名只有小写字母 然后这个类名的第一个首字母需要大写。然后我们需要登录,登录需要一个地址 如果我们登录的是系统第一个为我们创建的链接我们就不需要写链接的名字。我们要打印每一个变量的时候我们可以使用变量名.sout这样就可以直接将我们需要的东西直接进行打印。这个就和之前我些项目的时候进行的文件操作一样,首先需要进行文件资料的导入。我们使用刚刚我写在这里的英文就可以将类和包都创建好了。

2024-04-07 23:11:43 364

原创 继承 多态 接口 抽象

假设我们要写一个类 名字叫人了,然后人类中都必须工作,在学生这个群体中工作是学习,而在老师这个群体中工作就是教书,那我们在写这个方法的时候我们必须要重写,为了提醒程序员要重写,所以我们呢需要写一个抽象方法,含有抽象方法的类就叫做抽象类。成员变量是可以直接使用的。假设里面有一个String类型的name(这个name子类里面有父类里面也有) 和 成员方法show当我们调用name的时候,这个name的值是父类里面的值,当我们调用成员方法时候调用的是子类里面的成员方法。

2024-04-05 00:05:44 600

原创 集合的学习

小技巧:当我们在创建对象的时候,,我们使用构造器的时候不记得应该填入变量的顺序的·时候我们可以点击小括号,然后点击ctrl + p就可以看应该填入变量的顺序了。按照下标进行删除元素:如果我们使用一个String类型的字符串来接收这个要删除的字符串,这个定义的字符串就会被赋这个删除了的元素。我们想通过循环来输入对象,这其实是不对的,因为集合的长度是可以变的,所以我们不能使用list.size()来遍历这个数组。使用的时候是将需要替换的元素下标卸载第一位,第二位就写想要替换在集合里面的字符串。

2024-04-02 21:17:46 570

原创 近期学习安排

书籍:疯传java 由于目前书还没到,所以现在主要就是网课学习,跟着网课学习。目前字符串还剩下5节课没有听明天就把字符串解决。然后花三天时间把集合学了,再花大概一周的时间把面向对象进阶版学习完。剩余的时间就跟着网课一边学一边看,开发一个小型游戏。坚持以项目为主为主要方针,以网课为主,书籍为辅。网课对象:黑马程序员小伟老师。

2024-03-31 23:49:15 77

原创 字符串(java)

小技巧:当我们在进行输入字符串的时候,可以先写左边的输入: sc.next() 然后按着ctrl + shift + v 就会自动生成左边 当我们的这个项目体量增加后有可能会忘记这个变量的名字所以这个可以有效帮助我们进行书写。我犯下的错误:1.在while循环中我将int型变量放在了while循环的小括号中,在java中对于类型的要求时十分严格的,不能将整型的变量放这个小括号。1.String是java定义好的一个类,定义在java.lang包里面,所以使用的时候是不需要进行导包的。

2024-03-31 23:34:36 811

原创 面向对象的学习

封装:对象代表什么,就得封装对应的数据,并提供数据对应的行为例子:门关门,圆画圆封装的好处:有很多可以现成的已经封装的类,我们可以直接调用这些现成的类,可以极大方便与我们编写代码Private关键字格式化代码:ctrl + alt + l (注意需要关闭QQ,才能进行这个操作)对于私有属性的成员变量往往需要一个set和get搭配使用才能对私有属性的变量进行赋值下面是一个具体例子:自己定义一个类(女朋友类型):女朋友类型的TEXT:不难发现对于私有私有类型的成员变量我们需要使用类里面的方法进行

2024-03-28 20:23:22 984

原创 搜索(find a way, Pots)

思路:这一题看似简单其实不然,有很多特办条件,如果当这个M和Y都在KFC的时候就会导致步数为0 ,或者可以这样说:只有两人都能到达才能算入答案。我们可以使用bfs来写这道题,这不过这道题目不需要加入最后的目的地,直接将其全部bfs完,然后使用一个二维数组来存每一个地方的步数就可以了,所以需要两次bfs,需要两个二维数组来存步数。然后使用一个结构体数组来存终点的位置。

2024-03-26 23:31:31 358

原创 搜索(Shuffle‘m Up ,Oil Deposits )

思路:首先我们需要知道两个停止条件第一就是找到了,那么怎么算没有找到呢?当一个字符串重复出现的时候就代表着已经不可能出现答案了。犯下的错误:第一就是对string的使用不够了解。第二就是对map数组的使用也不是很熟悉,也常常犯下和string差不多。收获到的知识:1.了解了substr函数的使用和clear函数的使用,对string是地址存放每一个单位的字符有了更深的了解,如string str;然后str = str1;这个的意思就是将str1的全部赋值给str。

2024-03-20 22:11:20 217

原创 搜索练习(地下城主,查找倍数)

思路:这个其实就是bfs的板子,但是和以往的bfs不同,这个bfs适用于三维空间,也就是说多出一维需要进行搜索:犯下的错误:在bfs的输出中我写成了cout

2024-03-18 19:48:16 321

原创 11111111

【代码】11111111。

2024-03-14 18:49:40 413

原创 草稿111

【代码】草稿111。

2024-03-07 20:58:18 218

原创 加载图形库和移动的升级

2023/3/7的草稿,怕数据丢失。

2024-03-07 17:47:46 140

原创 三子棋(项目)

走迷宫暂时做不出来,先做点简单的(其实也很难)。

2024-03-05 23:28:16 85

原创 C向C++的一个过渡

在c语言中我们常用scanf("%d",&n);和printf("%d\n",n);来输出一些变量和常量,在C++中我们可以用cin;和cout;来表示输入输出。

2024-03-04 22:42:43 1272

原创 图的复习(萌新之人所写)

该算法有一个核心步骤就是使用三个for循环将全部有向(或者无向)图各个点之间的最短距离储存在一个二维数组里面,所使用的数据结构是一个邻接矩阵。可以处理带权值的也可以处理没有带权值的图,没有带权值的图往往是使用一个bool类型的邻接矩阵。核心代码这是储存带权图这是不带权并且使用bool类型来装。

2024-03-03 19:43:44 416

原创 最长公共子序列(LIS)(线性动态规划)

下面这张图方便理解。

2024-03-02 23:39:36 252

原创 LIS(最长上升子序列, 合唱队形)

直接使用动态规划:这个题目的关键就是在于我们,然后利用和这个数之前的所有数进行比较,如果比前面某一个数要大,那么就需要将这数自己本身的现存的最长长度与比较出来的数的最长加一()进行比较,然后取最大。最后我们还需要在全部所有的数进行一次比较找到最大值,这个最大值就是答案。这个就是相当于模板 以供后面需要求最长上升子序列的时候使用代码如下灵感:对于动态规划来说每一个数组元素都有自己的含义,与上下都是存在关系的。

2024-02-29 20:21:43 295

原创 记忆化搜索(Function,天下第一)

这是一道很直观的递归题目,但是使用递归会导致时间超限,所以需要使用记忆化搜素。首先把坑点讲一下:出题人,而我们知道数组下标是不能有负数的,如果是二维数组还可以用map数组进行储存,但是这个函数是有三个变量,所以就只能使用三维数组了,这也就意味着在,看这个数组下标是否处于正数,如果是正数我们就直接返回数组的值,。

2024-02-29 17:49:18 129

原创 动态规划(题目提升)

何为记忆化搜素:就是使用递归函数对每次得到的结果进行保存,下次遇到就直接输出即可那么这个题目使用递归(DFS)是怎样的?首先我们需要搞清楚几个坑点:1.,只要我们取到的花的数量满足题目给的要求就可以了。2.我们使用递归函数的时候需要使用一个变量step来代表我们所选择的花的,然后还需要一个变量来代表我们已经选的花的数量即可,先用void类型来写一遍这个函数使用void类型来书写的函数的好处就是方便理解,但是这样就是用不了记忆化搜索所以再用int类型来书写一遍dfs函数。

2024-02-28 20:58:38 128

原创 动态规划(简单习题)

首先我看到这个题目就在思考应该用怎样一个数据结构来存放这些数据,是二叉树,还是并查集那样的连接。第二个问题这个使用动态规划应该怎样构建状态转移方程,使用dfs来遍历然后使用一个数组来存放最大价值吗?针对第一个问题我们竟然要使用一个来存放(是我想复杂了,直接用二维数组来存就好了,应为下一层判断大打谁小然后再直接放进去就可以了)

2024-02-27 22:58:31 345

原创 串的相关题目

我发现有关hash得题目有些是可以通过来完成的:何为map数组,我们先思考一下最简单的,桶排序是将我们需要数字最为下标输进数组中,而数组是存放的数字是这个数字出现的次数,但是由于如果数据过大且数字并不稠密,则会导致浪费很多空间。而map数组也是桶排序一样的思想,我们首先来看map数组是怎样定义的?,这个是将字符串作为下标,后面的int就是map数组所存的数字,一般运用于这个字符串出现了几次。看看这个思路是不是和桶排序差不多。这个map在这个头文件中。

2024-02-22 22:27:42 870

原创 game项目(梦开始的地方)

由于easyx只支持vis,所以这个项目的书写以后都是在vis上进行,希望自己能够把这个项目好好完成,相信自己,加油!我们需要一个头文件来包括作图工具(这个头文件在easyx上面下载)想一想我们平时玩游戏的时候都是需要一个窗口来作为显示游戏的主体,所以最开始我们需要一个建立窗口函数initgraph();既然已经打开了窗口那么就需要关闭窗口,所以我们选哟用到关闭窗口函数closegraph();所有我们最开始的窗口就建立好了。

2024-02-22 20:29:39 669

原创 kmp算法

何为kmp算法,就是在住字符串寻找我们需要的字符,并输出其位置,最为广泛的运用就是我们在百度输入一个名词,然后百度就会给我们许多的搜索发现这些发现就是通过kmp算法查找出来的。kmp我认为挺难理解的。

2024-02-20 23:05:40 282

原创 串(网课学习)

接下来就是kmp算法,对于kmp算法来说,这个最主要的就是建立一个next数组来存放每一个节点失配后应该转移的位置。第一个是静态储存数组,定长的。对于第二种是利用指针来记录这个字符串的长度,利用malloc函数来开辟空间进行存储。两种匹配算法:第一就是朴素模式算法,第二就是kmp算法。乱码问题:有时候会出现这样的情况。

2024-02-19 16:54:45 103

原创 飞行路线(分层图+dijstra+堆优化)(加上题目选数复习)

这一题除了堆优化和dijstra算法和链式前向星除外还多考了一个考点就是,分层图,啥叫分层图呢?简而言之就是一个三维的图,按照其题意来说有几个可以免费的点就有几层,而且这个分层的权值为0(这样就相当于免费了), 怎么来理解这个意思呢?就是相当于这个dijstra算法它遍历的不再是一个一维图而是一个三维图,本质还是一样的,由于我们储存的边信息用的是链式前向星,所有所有的边都是按照顺序结构存放在一个一个顺序表中,所以我们不用担心空间复杂度的问题,只需要担心时间复杂度,但是由于我们用到了对堆优化。

2024-02-17 22:00:44 369

原创 最小生成树(习题)

这个就是套用最小生成树的模板,只不过要将sort函数改成从大到小进行排序。然后这个退出条件是只要大于k就退出。代码如下。

2024-02-17 15:17:27 171

原创 最短路径(dijstra算法,链式前向星,堆优化)

对于这题我们使用邻接矩阵的话会导致弓箭复杂度会大大提升,所以我们就需要学习一种新的数据结构,名叫链式前向星,在中,我们需要定义一个结构体数组,其中有成员to,w,next;接下来构造存放边的函数,姑且叫做cinn函数请大家将first数组想象成一个一个鞭子的把,next想象成鞭子的每一节,那么这个数组就可以按照鞭子的样子将所有边的信息存起来了。其实这个就是接下来就是在主函数的输入的问题如何遍历这个鞭子呢,我们设计一个。

2024-02-16 10:41:21 715

原创 生成树(习题)

这一题确实算比较难以理解,我也是看了题解和想了很才明白一点,首先我们需要知道的就是这个s究竟是用来干啥的,首先我们需要知道当两个地方都安装了卫星就代表着这两个地方就不再收到距离的影响,那么为了使这个距离尽量的短,所以我们就需要将某两个距离尽量的大的地方安装卫星,所以我们就要使用一个。,是所以就可以不用去管,那么我们跳出的条件就算是数量刚好是全部的地方减去可以安装卫星地区的数量就是我们需要的退出条件。,其实这一题就是使用了这个算法:用一个结构体记录两个区域的编号,和着两条区域之间道路的价值,再利用。

2024-02-14 16:06:19 280

原创 图(我是真的胡图图呀)

这个例子举得很好:什么叫极大连通分量,各个顶点之间能连上的都已经连上了,像上面的这个图就很好的说明了问题,由于中国大陆里面的铁路已经完全连上了,所以珠三角地区的铁路并不能算连通分量,而海南和台湾由于和大陆相隔,所以他们在内部就算一个连通分量。顺序表中存储的是每一个顶点的位置,这个顶点一共有三个元素,第一是用于存放数据,第二是用于入度的指针(也就是绿色的区域),第三个元素就是出度的指针(也就是橙色的区域)。生成子图:就是原图里面有的顶点,子图里面都有,那就说明这个子图就是生成子图(无向图也是一样的)

2024-02-06 21:40:28 404 1

原创 第三次测试part1

这题的难点就是,也就是要如何利用递归来从数组里面不重复的取数。我们先要搞明白这个递归函数里面的变量是什么?第一个变量就是step表示走了几步(再先前的很多题目中都是以step的改变作为数组的下标,但是不要被这个思想一直误导),第二个变量就是sum用于计算每次遍历的值,并将这个值进行累加。(注意再,所以就不需要在主函数中再对递归函数全部遍历一遍,这样就不会造成某些数重复计算)。

2024-02-05 19:12:26 277 1

原创 动态规划的一个初步学习

在我们写很多的题目时,常常可以用暴力枚举来写,缺点就是速度太慢了。如果我们用一个数组或者哈希表(虽然我还没学过哈希表)将起来,当再一次枚举到这个数字的时候就数组或者哈希表里面的数据,这样就能节省很多时间。所以动态规划就是带数组记忆的递归,所以动态规划也往往叫做记忆化搜索。1.是啥:状态转移方程根据我的理解就是,可以根据前面的一维数组(或者二维数组)推出接下来的数组中的值,优点类似于数学里面的数列里面的递推公式,在动态规划里面比较核心的的就是想出其递推公式,想出来后题目也会变得通透的多。

2024-02-04 21:17:34 1164 1

原创 并查表(习题提升)

1.本周主要学习了二叉树,最小堆,堆排序,并查集,sort函数的具体使用,渐渐适应使用C++来编写代码。接下来准备开始学动态规划(主要是为了将云朵那一题做出来,一个上午都在搞这题,结果没有搞出来)

2024-02-01 22:19:06 1047 1

空空如也

空空如也

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

TA关注的人

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