- 博客(29)
- 收藏
- 关注

原创 一文看懂Java内存模型
Java内存模型(Java Memory Model,简称JMM)是用于描述Java程序中多线程并发访问共享内存时的规范或规定。通过这组规范来定义程序中各个变量(包括实例字段、静态字段和构成数组对象的元素)的访问方式,以达到Java程序能够多平台的目标。
2024-08-29 19:08:44
2056
原创 【算法日记】 最大战力值
0 即不会对编号为 0 的角色进行战力值的限定,maxPower 是该角色被限定的最大战力值。在这个过程内,如果某段在两限制点间的战力值的斜率为1或者0,那么不会对这段战力值改变,但是遇到了限制条件,方程就会消除正向遍历产生的断层。接下来的2行是具体的限制,对编号为1的角色限制了最大战力值为1,对编号为2的角色限制了最大战力值为3,对编号为4的角色限制了最大战力值为3。接下来的2行是具体的限制,对编号为1的角色限制了最大战力值为3,对编号为2的角色限制了最大战力值为2。
2024-10-20 18:48:18
770
1
原创 【算法日记】找出最长神奇数列 找出整数数组中占比超过1/N的元素
通过遍历主串来寻找子串,通过模拟规则,下一个数和上一个数相反,我们可以写一个转变的函数来实现,然后通过if来判断下一个数是否符合,符合就push_back到子串,否则就到头了,这时我们把已经push完成的子串push到子串数组中,然后使得外循环的i = 内循环的j以免不必要的时间开销。使用容器map,键为出现的数字,值为该数字出现的次数,通过一次遍历数组,我们得到了这个数组内数字种类及其出现次数,通过遍历map容器,找出大于N的键后返回,否则返回-1。小明是一个中学生,今天他刚刚学习了数列。
2024-10-18 17:37:20
638
原创 【算法日记】力扣239 滑动窗口最大值
口头来描述一下主函数的过程,我们说我们现在实现的函数是调用front函数就会告诉你窗口最大值那么怎么判断这个队首元素该弹出了呢,我们可以来滑动窗口,当窗口末尾的元素和这个队列的首项相同时弹出,那么队列的队首就会变为下一个元素,我们称这个元素是即将要变为最大的元素,那么这个元素怎么来的呢?不妨换一种方法,我们使用一个队列,这个队列比较特殊,在队首的是这个区间内的最大值,有了这个队列,这个题就会非常好解决,但是STL中没有这样的队列,我们只能手搓一下这个队列。的滑动窗口从数组的最左侧移动到数组的最右侧。
2024-10-17 21:55:06
443
原创 【算法日记】力扣20.有效的括号 1047.删除字符串中所有相邻重复项 150.逆波兰表达式求值
给定一个只包括'('')''{''}''['']'的字符串s,判断字符串是否有效。**输入:**s = “()”**输出:**true**输入:**s = “()[]{}”**输出:**true**输入:**s = “(]”**输出:**false**输入:**s = “([])”**输出:**true'()[]{}'
2024-10-13 20:20:39
325
原创 【稀土掘金AI刷题】简单四则运算 两个数列
我们使用for循环来遍历输入的字符串表达式,如果这个字符是数字就压栈到nums中,如果是操作就压栈到ops中,这是我们最初的想法,但在表达式中有()和乘除与加减之间的优先级的操作,那么该如何解决呢?对于()和乘除与加减之间的运算级的优先问题,我们可以通过提前运算来解决。那么在压栈时,我们就要把运算符区分开来,遇见(我们就压进去,当遇见)时我们就要把括号之间的数都算赶紧再继续操作,遇见普通的加减乘除的运算符就要和栈顶比较运算级,如果栈顶的运算优先级大,我们就先处理已经入栈的表达式直到栈顶运算级较小为止。
2024-10-11 22:43:48
799
原创 【保姆级】一个好用又好看的UEFI启动管理器rEFInd
将refind.conf-sample重命名为refind.conf,refind.conf是refind的配置文件,可由用户自由更改,稍后可通过更改refind.conf来应用refind的主题。若此操作无效,在开机时迅速点击Del或者F2进入BIOS设置,在Boot选项中,手动将refind的UEFI启动优先级提高至第一位。将refind拷贝至EFI目录下(笔者这里将引导目录统一放在未隐藏的磁盘下,一般是C:\EFI)请注意,你的BIOS需要支持UEFI引导,否则不支持rEFInd安装!
2024-10-09 17:48:11
4829
原创 C++ 多线程
在一个程序中,这些独立运行的程序片段叫作“线程”,利用它编程的概念就叫作“多线程处理”。一般情况下,父线程与子线程相互不影响,即子线程结束,父线程不一定结束;但当设置守护线程等特殊操作时,父线程与子线程会发生相互影响。线程与资源分配无关,它属于某一个进程,并与进程内的其他线程一起共享进程的资源。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。C++的thread库为多线程编程提供了简单、高效、跨平台的支持,使得在C++程序中创建和管理线程变得更加方便。
2024-10-07 23:09:14
646
原创 【超详细】Python、JDK、vscode安装
首先去Python官网下载安装程序,鼠标悬浮到Download后选择推荐的Python版本(笔者为Windows系统故选择Windows版本安装程序)之后点击打开文件,或者点击文件的图标打开下载的目录,打开下载好的安装程序。
2024-10-03 02:40:17
971
原创 C++随心记 续一
平常做项目不推荐使用using namespace std使用标准库,这会让你的项目在移植后或者编译后产生错误,虽然加了using namespace std可以让你使用标准库时变得轻松多了,但是可能会产生重名的问题,如何创建自己的namespace代码示例如下。两片代码的效果是相同的,但是用template后的代码更简单易读,需要注意的是,template后的函数为随用随编,也就是当程序中调用才进行编译,这点与一般的函数不同,我们可以通过实验加深理解。模板可以解决多次的代码重复问题,如以下场景。
2024-10-03 01:48:41
780
原创 【算法日记】力扣151、卡码54、55
给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。例如,对于输入字符串 “a1b2c3”,函数应该将其转换为 “anumberbnumbercnumber”。
2024-09-18 20:31:26
332
原创 【算法日记】力扣344、541
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须**修改输入数组**、使用 O(1) 的额外空间解决这一问题。
2024-09-11 09:58:01
263
原创 【算法日记】力扣242、349、202、1
给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。t如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
2024-09-08 22:32:20
359
原创 【算法日记】力扣面试题0207、142
给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回null。图示两个链表在节点c1开始相交**:**题目数据整个链式结构中不存在环。,函数返回结果后,链表必须。listAmlistBlistAlistB0listAlistB**进阶:**你能否设计一个时间复杂度O(n)、仅用O(1)内存的解决方案?
2024-09-08 13:43:24
533
1
原创 【算法日记】力扣206、24、19
给你单链表的头节点head,请你反转链表,并返回反转后的链表。链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?
2024-09-07 01:29:14
335
原创 【Java基础小记】082401
this 用于引用当前对象的实例,在对象的构造函数和方法中非常有用。final 用于声明不可更改的变量、方法或类,确保其在程序中的不变性。值传递 是 Java 中参数传递的方式,原始类型传递的是值的副本,对象引用传递的是引用的副本,原始对象的状态可以被修改但引用本身不可变。
2024-08-23 23:47:08
209
原创 【Java基础小记】0824
多态是面向对象编程(OOP)中的一个核心概念。在编程中,多态指的是一种能力,使得一个对象可以以多种不同的形式出现,或使得同一个方法调用在不同的上下文中表现出不同的行为。多态主要体现在以下几个方面:方法重载(Overloading):在同一个类中定义多个方法名相同但参数列表不同的方法。方法重载允许在不同的场景下使用不同的参数调用相同的方法名称。方法重写(Overriding):子类可以提供对父类方法的具体实现。通过重写,子类能够改变或扩展父类方法的行为,实现不同的功能,而不需要改变父类的代码。
2024-08-23 20:57:57
457
原创 【Java基础小记】0823
继承是一种机制,它允许一个类(称为子类)继承另一个类(称为父类)的属性和方法。这种机制的主要目的是实现代码的复用和简化代码的设计。继承使得我们可以在一个类中定义通用的功能,然后在另一个类中扩展或修改这些功能,从而避免重复编写相似的代码。
2024-08-23 09:40:31
1032
原创 【Java基础小记】0822
static 关键字在 Java 中用于定义静态成员。它有以下几个关键点:1、静态变量:属于类而不是实例,所有实例共享同一个静态变量。例如,public static int count 只会有一个 count 变量,所有对象都访问这个变量。2、静态方法:同样属于类而不是实例,可以直接通过类调用,而无需创建对象。例如,public static void printMessage() 可以用 ClassName.printMessage() 访问。
2024-08-22 13:25:16
885
原创 【Java基础小记】0821
多态是指同一操作作用于不同的对象,可以有不同的解释和不同的执行结果。换句话说,方法的调用根据对象的不同,可能会有不同的行为。Java中的多态主要体现在两个方面:-方法重载-方法重写。
2024-08-21 19:03:33
649
原创 [Algorithm]力扣 209.长度最小的子数组
通过右边缘不断通过for循环前进,代表的是在最大的当前索引下的符合题目要求的情况,每次与result做对比,总保证result为最小。[numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。输入:target = 11, nums = [1,1,1,1,1,1,1,1]输入:target = 7, nums = [2,3,1,2,4,3]输入:target = 4, nums = [1,4,4]解释:子数组 [4,3] 是该条件下的长度最小的子数组。优点:时间复杂度降低。
2024-08-21 15:17:14
276
原创 [前端]JavaScript基础&DOM介绍
使用var来定义变量,var是单词variable的缩写var a = 10使用**console.log()方法或者alert()**来简单的输出内容console.log("This message will appear in console.") //使用console.log()输出内容会展示在控制台里alert("This message will appear in alert dialog") //使用alert()输出内容会弹出警告框。
2024-08-08 01:12:48
792
原创 HTML常用标签
tr></tr>标签用于定义表格中的行,必须嵌套在< table></ table>标签中。<th></th>表示表格的表头部分,表示表格的第一行或第一列,其中的文本内容加粗居中显示。HTML提供了6个等级的网页标题。<li></li>:有序列表和无序列表中的列表项,相当于一个容器,里面可以放其它标签。<td></td>用于定义表格中的单元格,必须嵌套在< tr></ tr>标签中。加粗:<strong> </strong>或者<b> </b>删除线:<del> </del>或者<s> </s>
2024-08-04 10:10:49
630
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人