- 博客(70)
- 收藏
- 关注
原创 蓝桥java求最大公约数
最大公约数(Greatest Common Divisor)是指两个或多个整数共有约数中最大的一个。例如:12 和 18 的公约数有 1, 2, 3, 6,其中最大的是 6所以 gcd(12, 18) = 6。
2026-01-14 15:15:54
280
原创 java期末复习(构造方法和成员方法,重写和重载)
成员方法是定义在类中,用于执行特定操作或计算的代码块。成员方法就是对象能做的"事情"或"技能",就像人会说话、狗会叫、计算机会计算一样。// 成员方法在同一个类中,多个方法名称相同但参数列表不同。// 重载示例1:参数类型不同// 重载示例2:参数个数不同// 重载示例3:参数顺序不同子类重新定义父类中已有的方法,提供特定实现。System.out.println("动物发出声音");System.out.println("动物在吃东西");// 重写父类方法。
2025-12-17 19:47:50
923
原创 蓝桥java前缀和
前缀和数组的第 i 项存储的是原数组前 i 项的和(通常 i 从0开始,prefix[0]=0,以便统一公式)。目的是用 O(1) 时间计算任意区间和,用右端前缀和 减 左端前缀和。为什么要用 long 类型。
2025-12-14 11:27:43
818
1
原创 javaOCA考点(基础)
数据类型 变量名 = 值;// 整数// 小数String name = "张三";// 字符串// 布尔值// 定义整数变量// 定义字符串变量// 定义小数变量public class 类名 {// 属性(变量)// 方法// 定义学生类// 属性int age;// 方法System.out.println(name + "在学习");// 创建对象stu.name = "张三";// 设置属性// 调用方法// 第一步:引用包// 第二步:使用特点。
2025-12-08 20:43:33
658
原创 蓝桥java优先数列
优先队列是一种抽象的数据结构,它的特点是:每次取出的元素不是按照进入队列的先后顺序,而是按照元素的“优先级”。换句话说,它内部会对元素进行排序,保证在任意时刻,优先级最高的元素位于队首,可以随时被取出。如果优先级定义为“数值越大越优先”,那么队首就是当前最大的数。如果优先级定义为“数值越小越优先”,那么队首就是当前最小的数。这与普通队列(FIFO,先进先出)和栈(LIFO,后进先出)有本质区别。有序性:内部自动按优先级排序,但不保证整个队列完全有序(只有堆序性质)。
2025-12-06 16:25:08
758
原创 蓝桥javaDP
动态规划(Dynamic Programming,简称 DP)是一种解决多阶段决策问题的优化方法。它的核心是:把原问题分解成若干相互重叠的子问题,通过求解子问题的最优解,推导出原问题的最优解。与暴力递归的区别:暴力递归会重复计算很多相同的子问题。DP 通过记忆化(保存子问题的解)或递推(按顺序计算)来避免重复计算,从而大幅提升效率。dp[...] 表示什么?这是 DP 的灵魂,必须清晰明确。例如:dp[i] 表示“到第 i 级台阶的方法数”
2025-12-04 15:56:04
567
原创 蓝桥java枚举
枚举就是“一个只能选几种固定选项的菜单”。比如你去奶茶店点单,菜单上只有三种尺寸:小杯、中杯、大杯 —— 你不能点“超大杯”(除非菜单加进去)。这个“菜单”在 Java 里就可以用枚举来做。🧩 生活比喻想象你在玩一个游戏,角色只能朝 上、下、左、右 四个方向移动。你可以这样定义:方向 = { 上, 下, 左, 右 }在代码里,这就是一个枚举:它规定了只能从这 4 个里面选,不能选别的(比如“斜45度”就不行)。每个选项都有名字,一看就知道意思,不会混淆。
2025-12-02 08:17:29
918
原创 java作业
接口就是一个100% 纯抽象的类,它只规定“必须有什么方法”,但不规定“方法具体怎么实现”接口就像一份工作招聘启事,上面写着“需要会开车”和“需要会用电脑”。这份启事本身不会教你如何开车和用电脑,但它规定了应聘者必须拥有这两项技能。实现了这个“接口”的应聘者(类),就必须在他的简历(代码)中证明他确实具备这些技能(方法实现)。接口是规矩:用interface定义,里面全是抽象方法。实现是承诺:用implements实现,必须写完所有方法。引用是多态:用接口 变量 = new 实现类()
2025-11-26 21:12:47
879
原创 蓝桥java进制转换
从右到左,每一位数字乘以“基数的位次幂”(位次从0开始)最后求和,就得到了十进制数用目标进制作为除数,不断除,记余数余数倒着排,就是转换后的数注意:如果余数 >= 10,要用字母表示(A=10, B=11, ..., F=15)
2025-11-23 20:12:50
643
原创 蓝桥java阶乘求和
题目本质:给定一个正整数 n,让你计算:S = 1!+ 2!+ 3!也就是:先分别算出 1 的阶乘(1!)、2 的阶乘(2!)、3 的阶乘(3!),一直到 n 的阶乘(n!),然后把这些阶乘的值全部加起来,得到的总和就是答案。阶乘的定义(数学基础):对于一个正整数 i,它的阶乘(记作 i!)表示:i!也就是从 1 乘到 i 的积。特殊规定:0!= 1 (但本题中我们是从 1 开始,不涉及 0)1!= 12!3!4!5!= 120...
2025-11-18 09:23:31
355
原创 蓝桥java买二赠一
🎯 通俗理解:“买二赠一”是商家常见的一种促销活动规则,其基本含义是:每购买 2 件商品,就免费赠送 1 件同样的商品。引申到算法题目中,通常的问题背景是:小明(或某人)想要获得 N 件某种商品,而商店正在进行“买二赠一”的活动。问:为了最终得到 N 件商品,他至少需要花钱购买多少件?或者变种问题如:商店有“买 a 赠 b”的活动,如何凑够目标数量?如何花最少的钱 / 买最少的数量来达到目标?在多种优惠策略下,选择最优方案。
2025-11-17 19:36:52
332
原创 蓝桥java合并区域
合并区域”的本质是:将多个有重叠、相邻或可以组合的“区域”合并成一个更大的整体区域,以减少冗余、简化表达或方便后续分析。这里的“区域”可以是:二维平面上的图形,最常见的是矩形(比如地图上的区块、图像中的色块、游戏中的地图格子等);一维的区间,比如时间范围、数轴上的线段;更复杂的形状(如多边形),但在算法竞赛中较少涉及,一般会简化为矩形或区间。要素说明区域可以是一维的区间、二维的矩形,甚至更复杂的形状合并条件通常是“有重叠”或“相邻”(依题目而定)合并目标。
2025-11-17 17:34:50
711
原创 蓝桥java蜗牛
在编程竞赛(比如蓝桥杯、NOIP、LeetCode、牛客等)中,“蜗牛”往往并不是真的让你去研究生物,而是用“蜗牛”作为一个形象化的角色或比喻,来描述一个具有规律性运动、成长或探索过程的问题。步骤目的🧠 先理解题目不是急于写代码,而是弄明白题目在说什么、要解决什么问题🔍 明确类型是“爬井”?“走迷宫”?“成长模型”?还是其它比喻?📌 找出关键点比如:每天变化规律、目标是什么、有什么限制或特殊情况🛠️ 再考虑实现理解清楚后,我们再谈用什么算法、数据结构、Java代码去实现。
2025-11-13 16:43:37
617
2
原创 蓝桥java矩形面积
输入:获取两个矩形的坐标。通常每个矩形由一对对角顶点(如左下角和右上角)表示。计算单个面积:分别计算两个矩形的面积 area1 和 area2。计算重叠面积:计算重叠部分的宽度 overlapWidth = Math.min(x2, x4) - Math.max(x1, x3)计算重叠部分的高度 overlapHeight = Math.min(y2, y4) - Math.max(y1, y3)
2025-11-12 11:46:00
861
原创 蓝桥java数组切割
你可以把 数组 想象成 一排整齐站好的盒子,每个盒子里装了一个数字(或者别的数据),这些盒子排好队,一个挨一个,有顺序,也有编号(从 0 开始)。举个例子:数组:[10, 20, 30, 40, 50]索引: 0 1 2 3 4这就好比你面前有 5 个小盒子,分别编号是 0、1、2、3、4,里面分别放了数字 10、20、30、40、50。“数组切割” 就好像你在这排盒子的 某个位置拿一把刀,把这一排盒子从中间切开,分成左右两堆或者几堆。
2025-11-11 15:23:46
594
2
原创 回溯法题目
:从 n 个数中选出 k 个,如组合、子集:对 n 个元素进行全排列:字符串切割方式:求一个集合的所有子集:N 皇后、数独、八皇后等。
2025-10-30 16:35:15
653
原创 大二java学习笔记:子类与继承
关键词:extendsclass 子类名 extends 父类名{}继承是多态的前提1.什么时候用继承:类与类之间,存在相同(共享)的内容,并产生is a 的关系(子类是父类的一种)2.特点:Java不支持多重继承(子类只能有一个父类),习惯地称子类与父类是"is-a”关系。(只能有一个亲生父亲)支持多层继承(就是爷爷生父亲,父亲生儿子)3.Obiect类是java程序中所以类直接或间接的父类(就是皇帝)
2025-10-29 17:46:35
198
原创 java的学校笔记
Java 浮点型常量默认为 double 型,如要声明一个常量为 float 型,则需在数字后面加f或F,如:double d = 12345.6;1/必须加f否则会出错。Java语言的整型常量默认为int型,声明long型常量可以后加1’或’,如:int i1 = 600;sc.nextInt() 就会把这个 25 读取进来,并且因为你写了 int age = ... ,所以这个 25 就被存到了名为 age 的盒子里。• boolean 用于存储 true/false(如婚姻状况)。
2025-10-28 09:41:02
275
原创 2026蓝桥杯java组备战
切割问题:一个字符串有几种切割方式或加特定条件,如:一个字符串如何切割才能保证它的子串都是回文串。组合问题:在一个集合里找出大小为某个数字的组合有多少。有递归就有回溯(通常在递归下面部分就是回溯的逻辑)
2025-10-26 21:00:49
1616
8
原创 kali抓包流量
包4: 你的虚拟机发送了 [FIN, ACK] 包,这表示优雅地关闭一个 TCP 连接。这说明你的浏览器在完成一部分数据交换后,正常地关闭了连接。包2, 5, 6: 这些是 [ACK] 包,是 TCP 协议为了保证可靠传输而发送的确认包,这是任何正常网络通信的一部分。打开kali的浏览器,直接访问https://www.bilibili.com,然后随便浏览几个视频。这直接证明:你成功抓取到了访问 B 站(一个全站HTTPS的网站)时产生的、已经加密的网络流量。tcpdump是命令行抓包工具。
2025-10-25 12:54:53
220
原创 大二数据结构学习笔记:队列
real=MaxSize-1作为队满条件的缺陷。新入队的元素,放在下标为0处。队列中的元素逻辑关系与线性表相同,可以使用。释放空间是为了防止内存溢出。如:过一群人过独木桥。
2025-10-23 08:46:48
325
原创 网络运维学习笔记
总结:输入URL后,先找浏览器缓存,没有找host,没有就用dns递归查询本地域名服务器,本地域名服务器迭代查询根域名服务器,得到ip地址之后,3次握手建立tcp连接,之后服务器收到http请求,返回http响应,客户端加载,4次挥手断开连接。应用程序之间相互通信,通过端口识别,协议有面向连接的TCP协议和面向无连接UDP协议。在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路,即提供可靠的通过物理介质传输数据的方法。负责建立,管理和终止应用程序之间的通信。
2025-10-20 09:02:49
2023
原创 软考中级网络工程师备考
手机WIFI使用802.11(WLAN)协议。通过WLAN连接如网络,手机自动获取网络配置,使用DHCP协议。此时手机接入局域网,但不能使用互联网应用。就是还不能刷抖音和发微信。要访问互联网,还要在手机上实现相关的协议,就是在无线路由器上配置NAT,PPPOE等功能。在通过运营商把互联网线路接到互联网中,就可以刷短视频了。解释一下名词:也叫动态主机配置协议,负责「管理」和「分配」IP。局域网:就是私有网络。如一个学校里的网,在学校外用不了。
2025-10-16 16:25:51
1441
原创 大二数据结构学习笔记:栈
1.栈是一种只能在一段进行插入或删除操作的线性表。2.允许插入,删除的一端是栈顶,另一端是栈底。(栈顶是允许操作的,栈底是固定的)3.特点:后进先出。
2025-10-16 09:40:28
273
原创 大二java学习笔记:二维数组
2.声明和初始化:在声明二维数组时,需要指定行和列的数量。例如,int[][] array = new int[3][4];声明了一个3行4列的二维数组。1.二维数组本质上是每个一维数组都包含一个或多个元素,其中每个元素都代表二维数组中的一个元素。注意:通过new开辟空间之后,如果不赋值,该空间的值是默认值null。刚开始学,自己知道的就没写。不喜勿喷(但欢迎指出我忘记的重点的地方)例如:int[ ][ ] arr = new int[3][4];(4)声明并初始化的简写方式。运行后的答案为MBU7a。
2025-10-15 17:50:30
390
原创 大二数据结构学习笔记:单链表
数据域存储实际数据,指针域存储指下链表中下一个节点的地址。存储不需要连续的空间,节点可以在任意位置,由指针连接。(3)好插入和删除:只需要修改对应节点的指针,时间复杂度为O(1)。前提是能快速访问到要操作的节点或前驱节点。(5)额外的空间存储指针:每个节点除了存储数据外,还需要额外的空间来存储指向下一个节点的指针。(6)头指针:头指针可指向头节点(包含数据)或指向第一个实际数据节点(头节点没数据)(1)动态存储:长度可以变化,根据需求增加或剪少节点。(2)非连续存储:不连续,由指针连接。
2025-10-13 09:06:29
385
原创 大二数据结构学习笔记:有序表
二路归并(Merge Sort)是一种经典的分治算法,用于将两个已排序的序列合并成一个有序序列。60 vs 50 → 50 小,把 50 放新摞里,同桌换下一页。60 vs 80 → 60 小,把 60 放新摞里,你换下一页。新摞:50、60、70、80、90、100 —— 完美有序!90 vs 80 → 80 小,放 80,同桌换下一页。90 vs 100 → 90 小,放 90,你换下一页。70 vs 80 → 70 小,放 70,你换下一页。你手里没卷子了,直接把同桌剩下的 100 全放到底下。
2025-10-13 08:29:48
406
原创 大二java学习笔记:数组
静态初始化:在创建数组时不指定元素的个数。如:T[] 数组名称 = new T[]{data1, data2, data3, ..., datan};静态初始化可以省略new T[]。如:// 注意:虽然省去了new T[], 但是编译器编译代码时还是会还原。动态初始化:在创建数组时,直接指定数组的中元素个数。如:T[] 数组名 = new T[N];1.数组:相同类型元素的集合。在内存中是一段连续的空间。T[] 数组名 = new T[N];访问就是对数组中的元素进行某种操作。T表示存放的元素类型。
2025-10-13 08:08:14
400
原创 kali制作钓鱼网站
现在是问克隆下来后,要在什么ip上运行(默认kali的ip142.16,就直接按回车)克隆后的网站与其一样,用户输入后直接获得账号和密码。su - :换root。现在是问要克隆什么网站。
2025-10-09 21:00:37
444
原创 2025.2.18
低加密指数:RSA加密算法中,加密指数(通常表示为e)是一个关键的参数。在RSA算法的实际应用中,选择一个合适的加密指数e是非常重要的,因为它直接影响到加密的效率和安全性。可以看到绕过了第一层,第二层是一个cookie,值要等于“j0k3r”,满足进入下一层判断回显“行不行啊细狗”。传入ctf和gdou,md5强比较绕过,满足进入下一层判断,回显“菜菜”类似的伪代码,srand(time(0))使用当前的时间为种子生成随机数。我们可以在本地另起一个程序,这样我们得到的种子和远程的种子一样。
2025-02-18 19:31:51
839
原创 2025.2.17
在数论中,表达式 pow(base, exponent, modulus) == result 表示 base 的 exponent 次幂除以 modulus 的余数等于 result。您提到的情况是 pow(666666, x, p) == 1,这意味着 666666 的 x 次幂除以 p 的余数为 1。这实质上是在问 x 是 666666 在模 p 下的阶(order)。阶的定义是一个最小正整数 x,使得 a^x ≡ 1 (mod p),其中 a 是底数(在这个问题中是 666666),p 是模数。
2025-02-17 19:30:30
376
原创 2025.2.16
来获取flag(data://),但要注意:自PHP>=5.2.0起,可以使用data://数据流封装器,以传递相应格式的数据。如果读取的内容等于字符串 "ctrl",则输出变量 $flag 的值。分析一下:使用 file_get_contents($cxk) 函数读取 $cxk 变量中指定的 URL 或文件的内容。选择适当的算法可以提高因数分解的效率。YAFU通常会根据输入数的大小自动选择合适的算法,但用户也可以手动指定算法。
2025-02-16 20:51:32
1578
原创 2025.2.15
GDB(GNU Debugger)是 GNU 项目提供的一个强大的程序调试工具,它允许开发者在程序运行时检查和修改程序的状态。GDB 支持多种编程语言,特别是 C 和 C++,是 Linux 下最常用的调试工具之一。
2025-02-15 20:04:34
1891
原创 2025.2.14
分为两种情况,第一种情况是Partial RELRO,这种情况是部分开启堆栈地址随机化,got表可写,第二种,Full RELRO是全部开启,got表不可写,Got表是全局偏移表,里面包含的是外部定义的符号相应的条目的数据段中,PLT表,是过程链接表/内部函数表,linux延迟绑定,但是最后还是要连接到Got,PLT表只是为一个过渡的作用。从题目第二行我们看出含有A-Z,a-z,1-9...故猜测是一个base64换表,我们只需将题目的表映射到。答案是店名,墙上有无线网络密码,搜索就得到。
2025-02-14 19:58:32
359
原创 2025.2.13
使用CRT和已知的 p, q, r 来计算解密指数 d。使用 d 和 n 来解密密文 c,得到明文 m。将解密得到的 m 转换为字符串格式,提取flag。那么现在就很明显了, 就是把从0x00010000之后的字节, 当异或后的结果是$的时候就停止, 也就是当原来结果为0x04的时候停止异或(但是在hexview中没看到有0x04的字节)已知 P = p^2 % n 和 Q = q^2 % n,以及 n = p*q*r。没问题,那就用010打开,发现最后是base64编码。直接搞个脚本,得到结果。
2025-02-13 16:06:46
434
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅