当前位置: 首页 > news >正文

第02周 预习:Java基础语法2、面向对象入门 - hohohoho--

第02周 预习:Java基础语法2、面向对象入门

项目名称 内容
课程名称 java
班级 网安2413
学生姓名 王璐
学号 202421336068

预习

1.1 学习目标

  1. 掌握引用类型及常见类:数组、数组列表(ArrayList)、方法及引用类型作为方法参数
  2. 掌握类、对象、方法、属性相关基本概念,对象的初始化。
  3. 能使用IDE快速创建对象。

1.2

1.方法相关问题

public class Main {static void changeStr(String x) {x = "xyz";}static void changeArr(String[] strs) {for (int i = 0; i < strs.length; i++) {strs[i] = strs[i]+""+i;}}public static void main(String[] args) {    String x = "abc";changeStr(x);System.out.println(x);changeArr(args);System.out.println(Arrays.toString(args));}
}

对于如上代码:
1.1 changeStr与changeArr的功能各是什么?
1.2 main方法的x有没有被改变?为什么?
1.3 main方法的args数组的内容有没有被改变?为什么?
1.4 args数组中的值是从哪里来的?要怎么才能给他赋值。

1.1 changeStr功能:将传入的字符串参数修改为"xyz",但实际不会影响原变量
changeArr功能:遍历传入的字符串数组,将数组中每个元素修改为 "原始元素值+索引值"

1.2 main方法的x有没有被改变?为什么?
没有被改变,因为Java 中字符串是不可变对象,且方法参数传递的是 "值传递"。

1.3 main方法的args数组的内容有没有被改变?为什么?
被改变了,因为数组是引用类型方法参数传递的是数组的引用(地址)的副本

  • main方法中的args和changeArr方法的参数strs指向同一个数组对象。
  • 方法内部通过strs[i] = ...修改的是数组内部元素(操作的是同一个数组对象),因此main方法中的args数组内容会同步被改变。

1.4 args数组中的值是从哪里来的?要怎么才能给他赋值。

  • args数组是main方法的参数,它的值来源于程序运行时传递的命令行参数。
  • 1.给args数组赋值的方式就是在运行程序时通过命令行传递参数:
    首先使用javac Main.java编译Java文件生成 class 文件
    然后使用java Main 参数1 参数2 参数3...的形式运行程序,其中空格分隔的每个部分都会成为args数组的一个元素
  • 2.在IntelliJ IDEA中运行程序,可以通过配置运行参数的方式为args数组赋值

2.数组相关问题
对于如下程序

int[] arr = new int[3];
arr[0] = 1; arr[1] = 1;
int[] arrX = arr;
arr[0] = 2;
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.toString(arrX));

2.1这段程序输出结果是什么?为什么?

输出的结果都是[2, 1, 0]

  1. 因为数组属于引用类型。当执行int[] arrX = arr;时,并没有创建新的数组对象,而是让arrX和arr指向同一块内存地址(即引用同一个数组对象)。
  2. 因此,当通过arr[0] = 2修改数组元素时,arr和arrX引用的是同一个数组,所以两者的输出结果完全相同
  3. 数组初始化时未赋值的元素(如arr[2])会使用默认值,int类型的默认值为0。
String[] strArr = {"aa","bb","cc"};
strArr[1] = "xx";
System.out.println(Arrays.toString(strArr));

2.2字符串是不可变类,为什么可以对strArr[1]赋值"xx"。

字符串的 "不可变" 是指字符串对象本身的内容不可修改(如"bb"这个字符串不能被改变)。

但在strArr[1] = "xx"中,我们并不是修改原有字符串"bb"的内容,而是:

  1. 创建了一个新的字符串对象"xx";
  2. 将数组strArr的第 1 个元素(原本指向"bb")重新指向了新的字符串对象"xx"。

3.使用int[5][]定义一个二维数组,其第二维到底有多长?尝试补全代码,然后使用foreach获其他循环方法遍历这个二维数组?

第二维的长度是不确定的

import java.util.Arrays;  
public class Main {  public static void main(String[] args) { int[][] arr = new int[5][];  arr[0] = new int[2];  arr[1] = new int[3];  arr[2] = new int[1];arr[3] = new int[4];arr[4] = null;arr[0][0] = 1;arr[0][1] = 2;  arr[1][0] = 3;arr[1][1] = 4;arr[1][2] = 5;  arr[2][0] = 6;  arr[3][0] = 7;arr[3][1] = 8;arr[3][2] = 9;arr[3][3] = 10;  System.out.println("二维数组各行的长度与内容:");  for (int i = 0; i < arr.length; i++) {  System.out.println("第" + i + "行(长度:" +  (arr[i] == null ? "null" : arr[i].length) +  "):" +  Arrays.toString(arr[i]));  }  //使用foreach循环遍历  System.out.println("\n使用foreach遍历所有元素:");  for (int[] row : arr) { if (row != null) {for (int num : row) {  System.out.print(num + " ");  }  }   else {  System.out.print("(null) ");  }  }  // 使用for循环遍历  System.out.println("\n\n使用for循环遍历所有元素:");  for (int i = 0; i < arr.length; i++) {  if (arr[i] != null) {  for (int j = 0; j < arr[i].length; j++) {  System.out.print(arr[i][j] + " ");  }  }   else {  System.out.print("(null) ");  }  }  }  
}

4.类与对象的区别是什么? Math类有对象吗?String类有什么属性是private的,有什么方法是public的,为什么这样设计(尝试举两例说明)?

区别维度 类(Class) 对象(Object)
定义 抽象的模板,描述一类事物的共同属性和行为 具体的实例,是类的具象化产物
存在形式 逻辑概念,不占用内存 物理实体,占用内存空间
关系 类是对象的抽象,对象是类的实例化结果 一个类可以创建多个对象,对象依赖类存在

Math 类没有对象.
Math 类是 Java 中的工具类,其构造方法被声明为private,且所有方法和属性都是static(静态)的。所以无法通过new Math()创建对象;只能通过Math.方法名()直接调用其功能(如Math.random()Math.sqrt())。

String类

private public
private final char value[],存储字符串的字符数组,final修饰表示一旦赋值不可修改(保证字符串不可变)。 public int length(),返回字符串长度(通过value.length实现)。
private int hash,缓存字符串的哈希值,避免每次调用hashCode()时重新计算,提高效率。 public String substring(int beginIndex),截取子字符串(返回新的 String 对象,不修改原字符串)。

原因:

  1. 安全性
    私有属性value[]防止外部直接修改字符数组。如果允许外部修改,可能导致字符串在多线程环境中出现不可预期的行为,或破坏依赖字符串内容的逻辑(如哈希表中的键)。
  2. 封装性与可控性
    通过公共方法(如substring())提供修改逻辑,但返回新对象而非修改原对象,保证了字符串的不可变性。这种设计使 String 可以安全地作为 HashMap 的键,且多线程环境下无需额外同步。
  3. 性能优化
    私有属性hash缓存哈希值,使hashCode()调用从 O (n) 优化为 O (1),提升哈希表等场景的效率。公共方法length()直接返回value.length,既便捷又不暴露内部存储细节。

5.将类的属性设置为public可以方便其他类访问,但为什么Java中普遍使用setter/getter模式对对象的属性进行访问呢?这与封装性又有什么关系?

  1. 控制访问权限,实现 "读写分离"
  2. 添加数据校验,保证属性合法性

封装性 : 通过 private 属性隐藏内部数据,仅通过公共方法暴露访问接口,实现 "隐藏细节、暴露必要接口"。

6.对象的属性可在什么时候进行初始化?都有哪些进行初始化的办法?

初始化时机:

  • 静态属性:仅在类第一次被加载时,通过静态初始化块或声明时初始化,且只执行一次。
  • 非静态属性:在对象创建时初始化,执行顺序为:声明时初始化 → 初始化块 → 构造方法。
  1. 声明时直接初始化
  2. 构造方法中初始化
  3. 初始化块(代码块)初始化
  4. 静态初始化块(针对静态属性)

7.进阶(可选):尝试使用作用域来说明封装性。

封装性的核心是通过控制作用域来隐藏类的内部实现细节,只暴露必要的接口供外部访问。Java 中的作用域修饰符(privatedefaultprotectedpublic)直接决定了类成员(属性和方法)的可访问范围,是实现封装的技术基础。

作用域修饰符从 "最严格" 到 "最宽松" 的顺序为:
privatedefault(默认,无修饰符) → protectedpublic
它们的访问范围限制直接体现了封装的 "隐藏" 与 "暴露" 原则:

  1. private(私有):仅在当前类内部可访问
  • 这是封装性最严格的体现,完全隐藏类的内部细节(如属性的存储、内部计算逻辑)。
  • 例:String类的private char value[]属性,外部无法直接修改字符数组,只能通过public方法(如charAt())间接访问,保证了字符串的不可变性。
  1. default(默认):仅在同一包内可访问
  • 适用于包内组件的协作,对外隐藏(不同包的类无法访问),实现包级别的封装。
  • 例:工具类中辅助方法标记为默认,仅包内其他工具类可调用,避免外部误用。
  1. protected(受保护):同一包内或子类可访问
  • 在隐藏的基础上,为继承关系保留必要的扩展接口,是封装与继承的平衡。
  • 例:父类的protected void init()方法,允许子类重写初始化逻辑,但禁止无关类调用。
  1. public(公共):任何地方可访问
  • 是类对外暴露的 "接口",仅开放必要的功能(如getter方法、业务方法),体现封装的 "最小权限原则"。
  • 例:ArrayListpublic int size()方法,外部只需知道集合大小,无需关心内部数组的存储细节。

总结

封装性通过作用域修饰符划定了类成员的访问边界:

  • private隐藏核心实现(如属性、内部工具方法),确保类对自身状态的绝对控制;
  • public(或protected)暴露必要接口,允许外部以可控方式使用类的功能。

相关文章:

第02周 预习:Java基础语法2、面向对象入门 - hohohoho--

第02周 预习:Java基础语法2、面向对象入门项目名称 内容课程名称 java班级 网安2413学生姓名 王璐学号 202421336068预习 1.1 学习目标掌握引用类型及常见类:数组、数组列表(ArrayList)、方法及引用类型作为方法参数 掌握类、对象、方法、属性相关基本概念,对象的初始化。 能…...

第六届机器学习与计算机应用国际学术会议(ICMLCA 2025)

第六届机器学习与计算机应用国际学术会议(ICMLCA 2025) 2025 6th International Conference on Machine Learning and Computer Application(ICMLCA 2025) 第六届机器学习与计算机应用国际学术会议(ICMLCA 2025)定于2025年10月17-19日在中国深圳隆重举行。本届会议将主要关注…...

设计模式-享源模式 - MaC

什么是享元模式? 享元模式是一种结构型设计模式,它通过共享技术来有效地支持大量细粒度的对象。享元模式通过共享已经存在的对象来减少创建对象的数量,从而减少内存占用和提高性能。 享元模式包含以下角色:享元接口(Flyweight):声明一个接口,通过它可以接受并作用于外部状…...

# 数论知识讲解与C++代码:唯一分解定理、辗转相除法、埃氏筛与线性筛(含质因数分解示例)

C++ 模板:唯一分解定理、辗转相除法、埃氏筛与线性筛(含质因数分解示例) 下面给出一套实用的 C++ 模板,包含:辗转相除法(求 gcd / lcm) 试除法的质因数分解(适合小到中等 n) 使用埃氏筛预生成素数(并用于分解) 线性筛(线性时间生成素数,并可得到每个数的最小质因子…...

第九届交通工程与运输系统国际学术会议(ICTETS 2025)

第九届交通工程与运输系统国际学术会议(ICTETS 2025) 2025 9th International Conference on Traffic Engineering and Transportation System (ICTETS 2025) 第九届交通工程与运输系统国际学术会议(ICTETS 2025)将由大连理工大学主办,大连理工大学建设工程学院交通运输系…...

小红书开源 FireRedTTS-2;全栈开源应用+嵌入式+电路设计:BUDDIE AI 语音交互方案丨日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 技术 」、「有亮点的 产品 」、「有思考的 文章 」、「有态度的 观点 」、「有看点的 活动 」,但内容仅代表编辑…...

深度解析 ADC 偶联技术:从随机偶联到定点偶联,如何平衡抗肿瘤 ADC 的活性、稳定性与均一性?

抗体药物偶联物(ADC)作为 “精准抗癌利器”,通过重组单克隆抗体的靶向性与小分子细胞毒性药物的高活性结合,实现了 “靶向递送、精准杀伤” 的治疗理念 —— 既降低了小分子毒素对正常细胞的毒副作用,又提升了肿瘤治疗的疗效,已成为近年来抗肿瘤药物研发的核心赛道。然而…...

豆包P图大更新,网友们已经玩嗨了。

https://news.cnblogs.com/n/800390/最近,大伙有没有感觉互联网被 AI 图片占领了。不是刷到朋友圈的大伙自己搓的手办。。神秘锅哥就是刷到大伙和各路大佬的偶遇合照。。怎么像有人一夜之间给地球开了个创造模式,想创啥就创啥,就我连篇稿都创不出来是吧?关注 AI 圈的差友应…...

【初赛】无向图度数性质 - Slayer

无向图度数性质 一、基础概念:顶点度数定义 在无向图 $ G = (V, E) $ 中:顶点 $ v \in V $ 的度数 $ \deg(v) $ 指关联于该顶点的边的数量 特殊情况:环($ (v, v) $)对 $ \deg(v) $ 贡献 2 孤立点度数为 0 非环边 $ (u, v) $ 对 $ \deg(u) $ 和 $ \deg(v) $ 各贡献 1二、核…...

$p\oplus q=r$

很牛很好的题,但不知道为什么 qoj 这么多踩。 原题/原题 简介题面:问题 A:构造两个长度为 \(n\) 的包含 \(0\sim n-1\) 的排列 \(p,q\),使得 \(r=p\oplus q\) 也是个排列。首先特判 \(n=1\)。然后发现 \(\oplus_{i=0}^{n-1} r_i=\oplus_{i=0}^{n-1} q_i\oplus_{i=0}^{n-1}q…...

2025年金融行业API安全最佳实践:构建纵深防御体系

2025年金融行业API安全最佳实践:构建纵深防御体系金融行业数字化转型深度依赖API技术,开放业务模式也带来新的安全挑战。构建有效的API安全防护体系需覆盖全生命周期,结合管理要求、技术工具和运营机制,并借鉴行业实践案例。提出关键实践方法与实施框架金融行业数字化转型深…...

Jack-of-All-Trades

Jack-of-All-Trades 一、信息收集先使用nmap扫一下Ip看看开放了哪些端口,这里很奇怪,22端口上面却是部署着http协议,看了一下wp这里要使用浏览器绕过这个限制nmap -sS -A -Pn 10.10.196.165 这里使用firefox,在导航栏里面搜索about config然后再出来的搜索框这里再搜索netw…...

Matlab的交通标志定位实现

基于Matlab的交通标志定位实现方案,结合颜色分割、形态学处理和轮廓分析技术一、代码 %% 参数设置 imgPath = traffic_sign.jpg; minArea = 500; % 最小区域面积 maxArea = 10000; % 最大区域面积 colorThreshold = 0.8; % 颜色相似度阈值%% 图像预处理 img = imread(imgP…...

怎样在 Salesforce Flow 中获取当前 Salesforce 组织的 URL

可以在 Flow 中配置一个 Formula 类型的变量: LEFT($Api.Partner_Server_URL_260, FIND( /services, $Api.Partner_Server_URL_260))...

reLeetCode 热题 100-3 最长连续序列扩展 排序算法 - MKT

reLeetCode 热题 100-3 最长连续序列扩展 排序算法...

vuejs3.0 从入门到精通【左扬精讲】—— 从原生到原子化:一文梳理现代 CSS 技术体系(2025 版)

vuejs3.0 从入门到精通【左扬精讲】—— 从原生到原子化:一文梳理现代 CSS 技术体系(2025 版)作为前端开发的核心技术之一,CSS(层叠样式表)早已不是 “写几行样式” 那么简单。随着项目规模扩大和工程化需求升级,CSS 技术栈也衍生出众多分支 —— 从解决复用性的预处理器…...

java中JSON字符串处理的踩坑

在处理JSON字符串的时候,读取的数据原封不动每一行是,前后有两个引号"{\"cuidC54E92418CA1CD099A5AFC4D2F322015|VECB5VMT4\": {\"REFINED_APPLIST_TIMESTAMP\": 1756716480, \"DEVICE_INFO\": {\"SOURCE\": 131072, \"br…...

11111

1111111111...

阿里云微服务引擎 MSE 及 API 网关 2025 年 8 月产品动态

...

TIA Portal中S7-1500F CPU与ET200SP安全模块的配置例程(转载)

ET200SP 分布式 IO 系统除 ET200SP 标准模块外,还包含故障安全模块。具有 PROFINET接口的安全 CPU 与配有故障安全模块的 ET200SP IO设备可以实现安全功能。配置过程与标准系统中一样,通过在硬件组态中进行网络连接,并在在线状态下分配从站的设备名称。ET200SP上的故障安全模…...

获取第一个运行的Word应用程序实例

获取第一个运行的COM应用程序实例1 using System;2 using System.Collections.Generic;3 using System.Runtime.InteropServices;4 using System.Runtime.InteropServices.ComTypes;5 6 /// <summary>7 /// 提供查询运行中COM对象的改进方案8 /// </summary>9 publ…...

S7-1500 TRACE功能组态 (转载)

1、TRACE配置介绍1.1、新建TRACE配置 在TIA博途软件中,双击项目树相应PLC站点下的“Traces”,展开后来实现TRACE的各项功能,TRACE在线视图如图2所示。图2. 创建TRACE ①点击“添加新Trace”,用于新建Trace配置;② 为目前离线文件和CPU已装载有相同名称的TRACE; 为目前仅…...

如何在Proxmox VE中使用fdisk命令行扩展LVM存储池 - 若

前言 在Proxmox VE(PVE)的使用过程中,为虚拟机和容器添加额外的存储空间是一项常见任务。当你为服务器新增了一块硬盘后,Web管理界面有时可能无法提供所有所需的图形化操作选项。本篇教程将介绍如何完全通过命令行,使用经典的 fdisk 和 lvm 工具,安全地将一块新硬盘添加到…...

垃圾AV覆盖defender

免责声明 本文章涉及的内容仅用于安全研究、学习和技术讨论,不针对任何杀毒软件进行虚假陈述或恶意操作。文中所提及的软件及操作均不旨在贬低、攻击或损害其品牌、名誉及正常功能。请读者仅在合法、受控的环境下进行实验和测试,作者对因使用本文内容而产生的任何后果不承担责…...

SAP-PO:怎么控制传输的内容在单数据情况下是数组格式还是单对象格式

像下图,没设置前是对象格式 设置后是数组格式 可以在CC的Custom XML/JSON Comversion Rules下进行设置 sender通道是在general第一个页签 receiver是在dataformat页签 如果字段为空则在结构中就不会显示该字段,需要在函数中可以配置一下...

开源新基建:数字中国创新发展的底层密码与生态实践

开源新基建:数字中国创新发展的底层密码与生态实践 在全球数字化转型加速的背景下,开源技术已从开发者工具演变为国家数字战略的核心基础设施。中国正通过构建自主可控的开源生态体系,打造数字经济发展的安全基座,这一战略布局正在重塑产业创新范式并创造显著的商业价值。最…...

员工离职停用Salesforce帐号?这11个“坑”千万别踩!

在Salesforce里,用户离职很常见,看似只是一个“停用账号”的小操作。但如果涉及到管理员(Admin)账号,情况就完全不同。管理员往往绑定了大量的报表、自动化流程和系统配置,一旦处理不当,轻则报表失效、流程中断,重则影响关键业务。 本文结合实践,总结了停用Salesforce…...

Linux的运行模式

在 Linux 系统中,getenforce 是一个用于查询 SELinux(Security-Enhanced Linux)当前运行模式的命令。 SELinux 是一种强制访问控制(MAC)安全机制,它有三种主要运行模式: Enforcing(强制模式):SELinux 会强制执行所有安全策略,违反策略的操作会被阻止并记录日志 Perm…...

Spring Boot + MybatisX,效率翻倍!

1.什么是MybatisX? 2.使用MybatisX的好处 3.如何使用MybatisX?1.什么是MybatisX? MybatisX 是一款基于 IDEA 的快速开发插件,方便在使用mybatis以及mybatis-plus开始时简化繁琐的重复操作,提高开发速率。 2.使用MybatisX的好处节省大量持久层代码开发时间 强大的功能为业务…...

条码控件Aspose.BarCode教程:使用 Java 自动生成 DotCode 条形码

DotCode 是一种二维条码符号,广泛应用于制造业和制药业等行业。这种条码简化了创建机器可读代码的流程,从而提升了物流效率。借助Aspose.BarCode for Java,我们可以构建一个工具,以 Java 编程方式自动生成 DotCode 条码。此 Java SDK 允许您自定义属性并将条码导出为图像格…...

AI 玩转网页自动化无压力:基于函数计算 FC 构建 Browser Tool Sandbox

从 Web 1.0 到 Web2.0,再到单页应用(SPA)和 React/Vue 等前端框架时代,再到当下的 AI Agent 时代。每个阶段都有当时的浏览器自动化的王者。作者:计缘 浏览器自动化的前世今生 从 Web 1.0 到 Web2.0,再到单页应用(SPA)和 React/Vue 等前端框架时代,再到当下的 AI Agen…...

AI时代的全栈框架:独立开发者的机会与挑战

独立开发者终于能全干了?AI帮忙还愁生态?一体性是王道,但选什么框架还得自己纠结。AI写代码真靠谱?前言 本文本来只是 DjangoStarter v3.2.1 新版本发布博客里的一段思考,不过越写越长,干脆拆分成一篇独立的文章得了。😄全栈这个词已经被喊烂了,但在 AI 时代,它的含义…...

创建逻辑卷

查看创建pv创建vg创建lv...

Server 13 ,CentOS 上使用 Nginx 部署多个前端项目完整指南( 协助多端口与脚本自动化 )

Server 13 ,CentOS 上使用 Nginx 部署多个前端项目完整指南( 协助多端口与脚本自动化 )pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&quo…...

洛谷P2490 [SDOI2011] 黑白棋

传送门 首先容易想到,白色棋子与其右边的黑色棋子越靠越近,最后挨在一起,与其他棋子无关。 朴素地想到 \(NimK\) 的建模,一共有 \(\dfrac{k}{2}\) 堆石子,每次取 \(d\) 堆。 注意到必胜局面比较难求,适合正难则反,用总方案数 \(\dbinom{n}{k}\) 减去必败局势。 难点在于…...

WGCLOUD的告警日志在哪儿存贮的?

WGCLOUD所有发送的告警消息都存贮在【系统日志】模块里 WGCLOUD系统日志功能模块,用于存贮系统操作的各种记录,也包括各种系统运行的日志信息,告警通知信息,告警恢复信息 所有系统运行产生的错误日志,操作日志,告警日志都会记录在系统日志中 系统日志记录只能查看,不能删…...

传统软件部署的痛点

这是对之前《Docker 容器化》文章的一个补充 在 Docker 等容器技术普及前,开发、测试、运维团队常被环境不一致、部署复杂、资源浪费、扩容低效为典型的问题困扰,这些问题不仅可能导致项目的交付周期的延后,还会引发跨团队协作矛盾,甚至导致线上故障,我们逐一来看每个问题…...

HarmonyOS 5分布式数据管理初探:实现跨设备数据同步

本文将引导您了解HarmonyOS 5的分布式数据管理能力,并通过一个简单的示例演示如何实现跨设备数据同步。1. 分布式数据管理简介 HarmonyOS的分布式数据管理能力允许应用程序在多个设备之间无缝地同步和共享数据。它抽象了底层设备差异,让开发者可以像操作本地数据一样处理跨设…...

qoj965 Trade

题意 有 \(n\) 件商品,第 \(i\) 件商品有基准价格 \(c_i\) 和抬价价格 \(p_i\),\(p_i\) 互不相同,每件商品只能买一件,你有 \(S\) 元钱。 若你买了 \(k\) 件商品,则第 \(i\) 件商品的价格为 \(c_i+k\times p_i\)。问你最多能买多少件商品。 \(1\le c_i\le 10^9,0\le p_i,S…...

复盘我的第一个 大模型Agent:从核心循环到模块化架构的演进之路

本文将以我编写的一个 Go Agent Demo 为例,穿透各类框架的表层封装,回归其工程本质。我将首先分析其核心的 ReAct 循环,并展示这个看似简单的循环是如何通过模块化设计,演进为一个结构化、可扩展的软件系统。最近,我投入了一些时间学习和研究大语言模型(LLM)驱动的 Agen…...

Linux内核不使用bear如何快速生成compile_commands.json使用vscode阅读源码

野火鲁班猫SDK 进入内核目录 cd /opt/LubanCat_SDK/kernel-5.10 编译内核 ../build.sh kernel 生成compile_commands.json /opt/LubanCat_SDK/kernel-5.10/scripts/clang-tools/gen_compile_commands.py打开vscode code . 安装clangd插件 打开一个c文件 开始生成clangd数据库...

Docker 容器化

引言 在解释docker是什么之前,我们首先应该先了解的是容器化的概念。 什么是容器?就是一个沙箱,在这个沙箱中涵盖了特定应用运行的一切依赖的内容。但他不是一个操作系统,且和底层的操作系统是隔离的。 什么是容器化?容器化就是将软件和应用所需要的所有依赖打包到一个独立…...

phpmyadmin漏洞利用

1、信息搜集 1.1、版本号 访问/README /doc/html/index.html获取版本信息1.2、绝对路径 (1) phpinfo() 页面:最理想的情况,直接显示web路径 (2) web报错信息:可以通过各种fuzz尝试让目标报错,也有可能爆出绝对路径 (3) 一些集成的web框架:如果目标站点是利用phpstudy、LAM…...

CF19E Fairy

题意:给定一个无向图,$n,m \le 10^4$,需对每个点黑白染色,使每条边两端点颜色不同,求对每一条边,删除该边后是否存在合法染色方案。思路:合法染色方案即删除边后图为二分图,不存在奇环。先构造 dfs 生成树,将一条非树边和其覆盖树边形成的环称为基本环,包含多个非树边…...

Wireshark 学习笔记(二)

Wireshark 学习笔记 (二) 数据包操作 统计|摘要 统计 此菜单提供多种统计选项,可供调查,帮助用户了解流量范围、可用协议、端点和会话等宏观情况,以及一些特定协议的详细信息,如 DHCP、DNS 和 HTTP/2。 解析地址 此选项通过提供解析地址及其主机名的列表,帮助分析师识别捕…...

鸿蒙应用开发从入门到实战(三):第一个鸿蒙应用

持续分享IT技术,帮你少走弯路。《鸿蒙应用开发从入门到项目实战》系列文章持续更新中。本文使用DevEco Studio创建应用,并使用预览、模拟器、真机三种方式进行调试。​ 大家好,我是潘Sir,持续分享IT技术,帮你少走弯路。《鸿蒙应用开发从入门到项目实战》系列文章持续更…...

Litctf2025 Write-up

逼逼叨 很难受啊,出去跑项目封闭管理,结果没打上,只能赛后复现了。 上班是真滴累 Web [LitCTF 2025]多重宇宙日记进来先随便注册个账户,说实话看到这样的题目第一眼怀疑二次注入、直接不想做登陆后发现可以设置主题语言之类的,随便试试无果查看页面源码摘出JS中的关键代码…...

DFS算法(递归)

DFS算法(递归) DFS(Depth-First Search,深度优先搜索)是一种用于遍历或搜索树、图等数据结构的算法。其核心思想是:沿着一条路径尽可能深入地探索,直到无法继续前进(遇到已访问节点或无未访问邻接节点),再回溯到上一个节点,选择另一条未探索的路径继续深入。所以可以…...

博客园出海记

在开篇中我们宣布了博客园出海计划的启航,出海航船选择了阿里云。第一件准备工作是在航船上组装集装箱 —— 搭建 Kubernetes 集群。出海根据地选在了阿里云新加坡机房,Kubernetes 集群用阿里云 ECS 自己搭建,没有使用阿里云容器服务 ACK。首先购买一台 ECS 用于部署 Contro…...

vue3 - pinia状态管理库

概念 Pinia 是 Vue 官方推荐的状态管理库,是 Vuex 的继任者(Vuex 作者同一人开发),专门为 Vue 3 设计,完全支持 Composition API 和 TypeScript。它简化了状态管理的流程,提供了更简洁的 API 和更好的开发体验。 核心特点简洁的 API 去掉了 Vuex 中的 mutation(突变),…...