- 博客(80)
- 收藏
- 关注
原创 Chomsky文法判断
在2型文法的基础上,满足A→α|αB(右线性)或A→α|Bα(左线性)。在0型文法的基础上,产生式左部存在终结符且左部长度小于右部长度。在1型文法的基础上,产生式左部必须是一个非终结符。
2024-06-22 18:23:55
216
原创 用IDEA中的javadoc生成API文档的时候报错:“input length = 1”的解决方案
当你用在idea中生成API文档的时候如果遇到“input length = 1”那么就是因为你的项目文件中。解决方案:将你的项目复制到另外一个路径中只有英文的文件下面去。
2024-01-14 16:42:31
708
原创 在JavaFX中的module-info.java的大坑,实现怎么删除这个后不会报错“需要JavaFX运行组件”
如果你也是因为module-info导致项目一些依赖包不能用,那么可以试着删除这个模块;话不多说,请看image。1.首先删除你的module-info.java(注意:你要是怕出错的话,建议提前备份你的项目)2.然后找到你原本运行的main函数,在同级目录下构建一个新的运行类RunApp.java。3.运行RunApp就可以啦,你之前写的其他功能依旧能实现。
2024-01-10 09:01:55
923
2
原创 在JavaFX项目文件当中的maven依赖有关线程池的包的时候会显示java: 无法访问javax.naming.spi.ObjectFactory 找不到javax.naming.spi.Obj
开发工具:IntelliJ IDEA 2023.1.3。
2023-12-19 19:34:58
501
原创 学习周总结
然后就是做了一个个人资料的修改,点击对应的按钮能够进行相应的操作,但是对于密码的修改还在完善,打算修改密码的时候要通过邮箱来确定修改,也就是和忘记密码的操作相同,也可以通过输入旧密码来更换新密码;做了大概的主界面,然后做了一个客户端和服务端的分离,实现了在客户端发送的信息,在服务端能收到;客户端和服务端的制作是我之前有写的一个。打算写正式测试一下私聊的功能,然后去写群聊,通过服务端连接数据库,存储聊天记录,包括添加好友群聊之类的功能。
2023-10-22 22:36:18
529
原创 2525.根据规则将箱子分类/并查集/动态规划
给你四个整数lengthwidthheight和mass,分别表示一个箱子的三个维度和质量,请你返回一个表示箱子的字符串。"Bulky"104109100"Heavy""Bulky""Heavy""Both""Bulky""Heavy""Neither""Bulky""Heavy""Bulky""Heavy""Bulky""Heavy",箱子的体积等于箱子的长度、宽度和高度的乘积。"Heavy"箱子没有任何维度大于等于 104。体积为 24500000
2023-10-22 22:07:58
342
原创 总结10.15
之后俩天加紧把这个登陆注册这些搞完,注册用到的随机生成一个账号且不重复,且设置一个邮箱作为之后找回密码时候的凭证;然后快速进入聊天的功能,实现私聊和群聊;登陆注册,连接了数据库,找回密码写到了通过给邮箱发送验证码,然后重新输入密码。这周主要在调整心态,反思自我,下一周状态应该会好很多,趁热打铁,加快项目进度。
2023-10-15 22:00:46
283
2
原创 137.只出现一次的数字II
可以运用Map中特殊的一对一属性来写,也就是数字对出现的次数,然后再找出次数为0的value,输出对应的Key;entrySet:只要是能运用getKey()和getValue(),可以分别获得键与值;你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。请你找出并返回那个只出现了一次的元素。外,其余每个元素都恰出现。
2023-10-15 19:47:44
86
原创 136.只出现一次的数字
除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。
2023-10-14 22:53:34
240
原创 2731.移动机器人
有一些机器人分布在一条无限长的数轴上,他们初始坐标用一个下标从开始的整数数组nums表示。当你给机器人下达命令时,它们以每秒钟一单位的速度开始移动。给你一个字符串s,每个字符按顺序分别表示每个机器人移动的方向。'L'表示机器人往左或者数轴的负方向移动,'R'表示机器人往右或者数轴的正方向移动。当两个机器人相撞时,它们开始沿着原本相反的方向移动。请你返回指令重复执行d秒后,所有机器人之间两两距离之和。由于答案可能很大,请你将答案对109 + 7取余后返回。
2023-10-12 22:51:25
177
原创 2512.奖励最顶尖的K名学生
s给你两个字符串数组和,分别包含表示正面的和负面的词汇。有单词同时是正面的和负面的。一开始,每位学生分数为0。每个正面的单词会给学生的分数3分,每个负面的词会给学生的分数1分。给你n个学生的评语,用一个下标从开始的字符串数组report和一个下标从开始的整数数组student_id表示,其中表示这名学生的 ID ,这名学生的评语是report[i]。每名学生的 ID。给你一个整数k,请你返回按照得分最顶尖的k名学生。如果有多名学生分数相同,ID 越小排名越前。[1,2]
2023-10-12 21:13:07
105
原创 2562.找出数组中的串联值
给你一个下标从开始的整数数组nums。现定义两个数字的是由这两个数值串联起来形成的新数字。15491549nums的最初等于0。执行下述操作直到numsnumsnumsnumsnumsnums返回执行完所有操作后nums的串联值。596在执行任一步操作前,nums 为 [7,52,2,4] ,串联值为 0。- 在第一步操作中:我们选中第一个元素 7 和最后一个元素 4。二者的串联是 74 ,将其加到串联值上,所以串联值等于 74。
2023-10-12 20:36:19
125
原创 周总结【java项目】
项目确实写的很慢,我觉得原因是,我学的有点太匆促了,感觉都没怎么理解,学了只是眼睛过了一遍,在项目中遇到了各种问题,一卡就是一天,然后我又比较倔,老卡在一个bug死磕,然后一天就过去了,又老是遇到问题,搞得我心态确实有点崩溃,感觉都出现了厌学的心理,还是想要放慢节奏让自己适应;感觉就是学的时候,都是脑子空白的写,感觉写完也收获不了什么东西。学习了JavaFX,下载了sceneBuilder辅助工具构建窗口(目前建立了登陆,注册,忘记密码的界面),然后是学习了MySQL的连接,现在的项目是刚连上数据库;
2023-10-08 22:00:31
338
2
原创 2034.股票价格波动
给你一支股票价格的数据流。数据流中每一条记录包含一个和该时间点股票对应的。不巧的是,由于股票市场内在的波动性,股票价格记录可能不是按时间顺序到来的。某些情况下,有的记录可能是错的。如果两个有相同时间戳的记录出现在数据流中,前一条记录视为错误记录,后出现的记录前一条错误的记录。请你实现StockPricetimestampprice// 时间戳为 [1] ,对应的股票价格为 [10]。// 时间戳为 [1,2] ,对应的股票价格为 [10,5]。
2023-10-08 21:59:54
117
原创 714.买卖股票的最佳时机含手续费
给定一个整数数组prices,其中prices[i]表示第i天的股票价格;整数fee代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。8能够达到的最大利润:在此处买入 prices[0] = 1在此处卖出 prices[3] = 8在此处买入 prices[4] = 4。
2023-10-06 10:50:55
68
原创 309.买卖股票的最佳时机含冷冻期【Java】
给定一个整数数组prices,其中第prices[i]表示第i天的股票价格。设计一个算法计算出最大利润。你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。3对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出]0。
2023-10-05 10:29:29
133
原创 188.买卖股票的最佳时机Ⅳ【Java】
给你一个整数数组prices和一个整数k,其中prices[i]是某支给定的股票在第i天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成k笔交易。也就是说,你最多可以买k次,卖k次。你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。2在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖出,这笔交易所能获得利润 = 4-2 = 2。7。
2023-10-04 16:28:54
104
原创 123. 买卖股票的最佳时机 III
给定一个数组,它的第i个元素是一支给定的股票在第i天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成交易。你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。6在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交易所能获得利润 = 3-0 = 3。随后,在第 7 天(股票价格 = 1)的时候买入,在第 8 天 (股票价格 = 4)的时候卖出,这笔交易所能获得利润 = 4-1 = 3。4。
2023-10-03 10:39:17
86
原创 1333.餐厅过滤器【leetcode】【Java】
给你一个餐馆信息数组,其中。你必须使用以下三个过滤器来过滤这些餐馆信息。其中素食者友好过滤器的值可以为true或者false,如果为true就意味着你应该只包括为 true 的餐馆,为false则意味着可以包括任何餐馆。此外,我们还有最大价格maxPrice和最大距离两个过滤器,它们分别考虑餐厅的价格因素和距离因素的最大值。过滤后返回餐馆的id,按照从高到低排序。如果相同,那么按从高到低排序。简单起见,和为true时取值为1,为false时,取值为0。[3,1,5]
2023-09-27 21:14:34
149
原创 JDBC8.0+
/conn是获取的数据库连接作用:可以发送sql语句到数据库,并返回结果DDL(容器创建,修改,删除)DML(插入,修改,删除)DQL(查询)DCL(权限控制)TPL事务控制语言)
2023-09-26 21:13:41
321
原创 LCP 06. 拿硬币/2582. 递枕头[java]
因为每次最多拿俩个硬币,找至少要拿多少次,那么我可以对每一堆硬币都俩个俩个的拿,那么关键就是判断这个硬币堆是否为偶数,如果不是偶数,那么最后一次就是拿的一个硬币。解释:第一堆力扣币最少需要拿 2 次,第二堆最少需要拿 1 次,第三堆最少需要拿 1 次,总共 4 次即可拿完。我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有力扣币的最少次数。堆力扣币,每堆的数量保存在数组。
2023-09-26 10:33:12
125
原创 打家劫舍 IV【最小化最大值问题】
count表示的是分的这一组数据里面的元素的个数,如果超过了题目所规定的个数,那么就让max变小(因为循环条件是让max>=min),否则就让min变大(这是因为不管怎么样,要获得的这个数据总是在一定的范围之间的,通过max和min的变动,不断减小这个数据所在的范围,直至最后,max<min的时候就能够找到这个数值);首先找到中间金额,然后flag用于满足题目中的“不能盗窃相邻的房间”,然后遍历房间里面的金额,当金额小于中间值的时候就count++;并且变更flag的值,保证下一个不会盗窃相邻的房间;
2023-09-25 19:19:48
103
原创 动态代理。
代理的作用:对象如果干的事情太繁琐,就可以通过代理来转移部分职责;也就是相当于把对象的的方法拆开一些步骤分给代理做,对象做关键的就行了;并且代理做的这些繁琐的事情的名字也要和对象做这件事情的名字一样;对象和代理要实现同一个接口,接口中就是被代理的所有方法。无侵入式的给代码增加额外的功能。
2023-09-22 21:36:18
86
原创 多线程学习
自定义线程池中有核心线程和临时线程(都有一定的数量),当有很多任务要进行的时候,核心线程先进行一部分,然后一些任务排在队列里面(有一定的长度),当队列排满了之后,才会创建临时线程。如果核心线程加上临时线程再加上队伍的长度都小于要执行的任务,那么默认会采用抛弃策略3,//核心线程数,不能小于06,//最大线程数,不能小于0,且要大于等于核心线程数60,//空闲线程最大存活时间TimeUnit.SECONDS,//时间单位new ArrayBlockingQueue<>(3),//任务队列。
2023-09-22 20:06:23
193
原创 337.打家劫舍III
然后递归左子树一直到倒数第二层的左节点,然后有一棵高度为2的子树,然后判断是选中这个结点,那么就更新这个结点的值为未被选中的时候的左子树和右子树和该结点的和;如果没有选中这个结点,那么就找出左子树右子树中的最大的一个数值,更新到这个结点;核心思想:深度搜索,判断每个节点的状态(从最下面开始判断结点状态),然后根据不同的状态进行不同的操作,要是被选中了,那么左右子树不能被选中;如果没有被选中,就是找左右子树中最大的一个进行返回。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。
2023-09-18 21:04:53
83
原创 多线程和网路编程写的客户端和服务端的交流
客户端Socket用于接收或输出数据,指定ip地址和端口具体功能:可以输入多句语句;首先创建一个' Socket '对象并将其连接到端口“127.0.0.1”的服务器10001。然后用Scanner从用户那里读取输入。用循环从套接字获取输出流,允许它向服务器发送数据。提示用户输入消息。如果用户键入“exit”,则循环中断,套接字关闭。否则,它将用户的输入消息转换为字节,并通过写入输出流将其发送到服务器。' os.flush()方法用于确保立即发送数据而不是缓冲数据。服务端。
2023-09-17 23:53:30
69
原创 213.打家劫舍II
就是正着算一遍最大值(不加最后一个房子),然后反着计算一遍最大值(不加第一个房间),然后比较这俩个求的的大小。你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都。,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,你可以先偷窃 1 号房屋(金额 = 1),然后偷窃 3 号房屋(金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4。
2023-09-17 16:27:21
39
原创 198.打家劫舍
p1表示的是一直从0到i这些房间里面,能够盗窃到的最大的金额,p2表示的是从0到i-2的房间数里面能够盗窃到的最大的金额,主要就是要更新p1的值,当更新p1的值的时候,比较的就是往前数的第二个房间盗窃金额加上当前房间能够盗窃的金额是否比不盗窃这个房间时的金额大;你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。
2023-09-16 17:52:58
60
原创 50.宝石补给
按照所给的赠与关系来知道赠送的人的宝石数量,然后就可以算出要给出去的宝石数量,分别对相应的勇士进行宝石的增减;经历过上面的循环之后,就可以得到赠送完成的勇士现有的宝石数量,然后查找最大最小的宝石数量,返回这俩个数的差值。现在这些勇者们进行了一系列的赠送,位勇者将自己一半的宝石(需向下取整)赠送给第。宝石的勇者,并返回他们二者的宝石数量。将一半的宝石赠送给勇者。将一半的宝石赠送给勇者。将一半的宝石赠送给勇者。将一半的宝石赠送给勇者。将一半的宝石赠送给勇者。将一半的宝石赠送给勇者。将一半的宝石赠送给勇者。
2023-09-15 18:04:08
63
原创 1222.可以攻击国王的皇后
再找斜线上的皇后的时候要注意不要越界,所以我在循环的判断语句中保证向斜对角线探索的坐标不会超过界限,然后在这个方向上找皇后的位置,如果找到的就把坐标存到之前动态分配的二维数组里面去,否则继续往下找,直到边界。核心做法:以国王为中心,分别向八个方向探索皇后的存在,在某个方向碰到皇后之后就换下一个方向找皇后(在一个方向找皇后的时候要注意不要越界),然后将找到的皇后的坐标存储到一个二维数组里面。创建一个二维数组用于标记皇后的位置,皇后在的位置值就为1,这个二维数组后续用于在一个方向上找皇后。,表示黑皇后的位置;
2023-09-15 00:39:45
79
原创 io流笔记
2.写数据 write(int b) 一次写一个字节 / (byte []b)一次写一个字节数组 / (byte []b,int f,int l) 一次写一个字节数组中的部分字节。②如果要输出一串字符串,那么就可以使用getBytes,例如:byte []byes = str.getBytes();②如果文件不存在会创造一个新的文件,但是要保证父级路径是存在的。第一次调用read,读到的是第一个字节,第二次就是第二个字节,以此类推。③如果文件已经存在,则会清空文件。
2023-09-14 10:55:04
204
原创 力扣2596
循环遍历上面定义的数组arr,由上述的arr数组的意义所知,arr[i][0]表示的是第i次被跳到的格子所对应的x坐标,那么arr[i-1][0]就是第i-1次跳到的格子的x坐标,以此算出x,y的差距,然后相乘,如果相乘不等于2的话,说明这个跳的格子有问题,就返回false,将所有坐标都遍历完之后,没有发现不匹配的格子,那么就返回true。核心思想:不管怎么走下一步,开始位置和下一步的位置的横坐标和纵坐标的差的积的绝对值为2,如果不为2的话,那么就说明走错了,返回false。
2023-09-14 10:54:44
125
原创 正则表达式和异常处理
注意:由于那个代码是从上到下进行执行的,如果在try中有俩个异常语句,第一个异常语句和下面的某个catch语句相匹配了之后,就不会继续判断第二个异常语句。如果异常原因与所判断的原因不相同,那就相当于try...catch语句白写了,还是交给虚拟机进行处理。若异常原因与判断相同,则输出catch里面的语句1。若异常原因与判断相同,则输出catch里面的语句2。若异常原因与判断相同,则输出catch里面的语句。catch(异常原因1 | 异常原因2 变量){若语句正常,则正常执行该语句。
2023-09-13 02:39:18
84
原创 Map集合
equals:本质是==,只是String,Integer 等重写了equals 方法,然后equals 就变成了值的比较。HashMap的键位置要是存储的自定义对象,那么就要重写HashCode和equals方法;在添加数据的时候,如果键是存在的,那么会把原有的键值对对象。在添加数据的时候,如果键不存在,那么直接将键对对象。根据键删除键值对元素,并把相应的键值对对象进行返回。Map判断集合中是否有指定的键值对对象。判断集合中是否有指定的键值对。,会把被覆盖的值进行返回。
2023-09-11 23:49:43
129
原创 java中注意事项和一些键位
/如果括号内写的是100,则是在0-100中随机抽一个数。//表示只输出abc,不换行。如果是直接数据类型,那就是比较的数据,如果是引用数据类型,那就是比较地址值。2.在使用float定义变量的时候,要在数据后面加上F(大小写都可)3.使用布尔定义变量的时候,与C语言不相同的是,boolean;例如:int []arr = new int[3];
2023-07-24 00:13:05
53
原创 一些碎的知识点(未整理
知识点:StringBuilder初始容量是16,若输入的字符串大于16但是小于34(*2+2),那么就是长度是正常长度,容量是34,若大于34,那么容量和长度相等;得到俩个对象,一个是人的对象,一个是圆的对象,因为要画圆的话,首先要知道圆的半径,而这个数据是属于圆的数据,那么画圆这个行为应该是要属于圆。注意:没有写无参构造,是不能够调用无参构造的(如果没有写无参构造,虚拟机默认是无参构造,自己写了虚拟机就不会加上了)方法的重载:同一个类中,方法名相同,参数不同的方法,与返回值无关。
2023-07-24 00:10:35
24
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人