Java从入门到精通 - 常用API(一) - 详解

news/2025/10/6 16:51:56/文章来源:https://www.cnblogs.com/tlnshuju/p/19127735

Java从入门到精通 - 常用API(一) - 详解

2025-10-06 16:50  tlnshuju  阅读(0)  评论(0)    收藏  举报

常用 API

此笔记参考黑马教程,仅学习使用,如有侵权,联系必删

API(全称 Application Programming Interface:应用程序编程接口)

就是别人写好的一些代码,给咱们程序员直接拿去调用即可解决问题的

1. 包

什么是包?

package com.itfeng.javabean
;
public
class Student {
}

在自己程序中调用其他包下的程序的注意事项

  • 如果当前程序中,要调用自己所在包下的其他程序,可以直接调用(同一个包下的类,互相可以直接调用
  • 如果当前程序中,要调用其他包下的程序,则必须在当前程序中导包,才可以访问!导包格式:import 包名.类名;
  • 如果当前程序中,要调用 Java 提供的程序,也需要先导包才可以使用;但是 Java.lang 包下的程序是不需要我们导包的,可以直接使用
  • 如果当前程序中,要调用多个不同包下的程序,而这些程序名正好一样,此时默认只能导入一个程序,另一个程序必须带包名访问

代码演示

package s_pkg.itcast
;
public
class Demo1 {
public
void print(
) {
System.out.println("Hello World2"
)
;
}
}
  • s_pkg.itcast.Demo2.java
package s_pkg.itcast
;
public
class Demo2 {
public
void print(
) {
System.out.println("itcast"
)
;
}
}
  • s_pkg.itfeng.Demo2.java
package s_pkg.itfeng
;
public
class Demo2 {
public
void print(
) {
System.out.println("itfeng"
)
;
}
}
  • s_pkg.Demo.java
package s_pkg
;
public
class Demo {
public
void print(
) {
System.out.println("Hello World"
)
;
}
}
  • s_pkg.Test.java
package s_pkg
;
import s_pkg.itcast.Demo1
;
import s_pkg.itfeng.Demo2
;
import java.util.Random
;
import java.util.Scanner
;
public
class Test {
public
static
void main(String[] args) {
// 1. 同一个包下的程序,可以直接访问
Demo d =
new Demo(
)
;
d.print(
)
;
// Hello World
// 2. 访问其他包下的程序,必须导包才可以访问
Demo1 d2 =
new Demo1(
)
;
d2.print(
)
;
// Hello World2
// 3. 自己的程序中调用Java提供的程序,也需要先导包才可以使用;但是Java.lang包下的程序是不需要我们导包的,可以直接使用
Scanner sc =
new Scanner(System.in)
;
String s = "Feng"
;
Random r =
new Random(
)
;
// 4. 访问多个不同包下的程序,而这些程序名正好一样,此时默认只能导入一个程序,另一个程序必须带包名访问
Demo2 d3 =
new Demo2(
)
;
d3.print(
)
;
// itfeng
s_pkg.itcast.Demo2 d4 =
new s_pkg.itcast.Demo2(
)
;
d4.print(
)
;
// itcast
}
}

2. String

2.1 String 概述

java.lang.String 代表字符串

对字符串处理的步骤:

  1. 创建对象
  2. 封装字符串数据
  3. 调用 String 的方法
String name = "张三"
;
String schoolName = "FengSchool"
;
  • 方式二:调用 String 类的构造器初始化字符串对象(字符串拼接)
构造器说明
public String()创建一个空白字符串,不含有任何内容
public String(String original)根据传入的字符串内容,来创建字符串对象
public String(char[] chars)根据字符串数组的内容,来创建字符串对象
public String(byte[] bytes)根据字节数组的内容,来创建字符串对象
代码演示
package t_string
;
public
class StringDemo1 {
public
static
void main(String[] args) {
// 目标:掌握创建String对象,并封装要处理的字符串的两种方式
// 1. 直接双引号得到字符串对象,并封装字符串数据
String name = "itfeng"
;
System.out.println(name)
;
// itfeng
// 2. new String创建字符串对象,并调用构造器初始化字符串
String rs1 =
new String(
)
;
System.out.println(rs1)
;
// ""
String rs2 =
new String("itfeng"
)
;
// 不太推荐
System.out.println(rs2)
;
// itfeng
char[] chars = {
'a'
, '哈'
, '嘿'
}
;
String rs3 =
new String(chars)
;
// a哈嘿
System.out.println(rs3)
;
byte[] bytes = {
97
, 98
, 99
}
;
String rs4 =
new String(bytes)
;
System.out.println(rs4)
;
// abc
}
}
总结
  1. String 是什么,可以做什么?
  • 代表字符串,可以用来创建对象封装字符串数据,并对其进行处理
  1. String 类创建对象封装字符串数据的方式有几种?
  • 方式一:直接使用双引号 "..."
  • 方式二:new String 类,调用构造器初始化字符串对象

2.2 String 的常用方法

方法名说明
public int length()获取字符串的长度返回(就是字符个数)
public char charAt(int index)获取某个索引位置处的字符返回
public char[] toCharArray():将当前字符串转换成字符数组返回
public boolean equals(Object anObject)判断当前字符串与另一个字符串的内容一样,一样返回 true
public boolean equalsIgnoreCase(String anotherString)判断当前字符串与另一个字符串的内容是否一样(忽略大小写)
public String substring(int beginIndex, int endIndex)根据开始和结束索引进行截取,得到新的字符串(包前不包后)
public String substring(int beginIndex)从传入的索引处截取,截取到末尾,得到新的字符串返回
public String replace(CharSequence target, CharSequence replacement)使用新值,将字符串中的旧值替换,得到新的字符串
public boolean (CharSequence s)判断字符串中是否包含了某个字符串
public boolean startsWith(String prefix)判断字符串是否以某个字符串内容开头,开头返回 true,反之
public String[] split(String regex)把字符串按照某个字符串内部分割,并返回字符串数组回来
代码演示
package t_string
;
public
class StringDemo2 {
public
static
void main(String[] args) {
// 目标:快速熟悉String提供的处理字符串的常用方法
String s = "FengJava"
;
// 1. 获取字符串的长度
System.out.println(s.length(
)
)
;
// 8
// 2. 提取字符串中某个索引位置处的字符
char c = s.charAt(1
)
;
System.out.println(c)
;
// e
// 字符串的遍历
for (
int i = 0
; i < s.length(
)
; i++
) {
char ch = s.charAt(i)
;
System.out.println(ch)
;
}
System.out.println("----------------------------"
)
;
// 3. 把字符串转换成字符数组,再进行遍历
char[] chars = s.toCharArray(
)
;
for (
int i = 0
; i < chars.length; i++
) {
System.out.println(chars[i]
)
;
}
// 4. 判断字符串内容,内容一样就返回true
String s1 =
new String("feng"
)
;
String s2 =
new String("feng"
)
;
System.out.println(s1.equals(s2)
)
;
// true
// 5. 忽略大小写比较字符串内容
String c1 = "34AeFG"
;
String c2 = "34aEfg"
;
System.out.println(c1.equals(c2)
)
;
// false
System.out.println(c1.equalsIgnoreCase(c2)
)
;
// true
// 6. 截取字符串内容(包前不包后)
String s3 = "Java是最好的编程语言之一"
;
String rs = s3.substring(0
, 8
)
;
System.out.println(rs)
;
// Java是最好的
// 7. 从当前索引位置一直获取到字符串的末尾
String rs2 = s3.substring(5
)
;
System.out.println(rs2)
;
// 最好的编程语言之一
// 8. 把字符串中的某个内容替换成新内容,并返回新的字符串对象给我们
String info = "这个电影简直就是个垃圾,垃圾电影"
;
String rs3 = info.replace("垃圾"
, "**"
)
;
System.out.println(rs3)
;
// 这个电影简直就是个**,**电影
// 9. 判断字符串中是否包含某个关键字
String info2 = "Java是最好的编程语言之一,我爱Java,Java不爱我!"
;
System.out.println(info2.contains("Java"
)
)
;
// true
System.out.println(info2.contains("java"
)
)
;
// false
// 10. 判断字符串是否以某个字符串开头
String rs4 = "张三丰"
;
System.out.println(rs4.startsWith("张"
)
)
;
// true
System.out.println(rs4.startsWith("张三"
)
)
;
// true
// 11. 把字符串按照某个指定内容分割成多个字符串,放到一个字符串数组中返回给我们
String rs5 = "张无忌,周芷若,殷素素,赵敏"
;
String[] names = rs5.split(","
)
;
for (
int i = 0
; i < names.length; i++
) {
System.out.println(names[i]
)
;
}
}
}

2.3 String 使用时的注意事项

第一点
  • String 对象的内容不可改变,被称为不可变字符串对象

但是:

name 指向的字符串对象确实变了啊,那为什么还说 String 的对象都是不可变字符串对象?

看执行流程:

结论:每次试图改变字符串对象实际上是新产生了新的字符串对象,变量每次都是指向了新的字符串对象,之前字符串对象的内容确实是没有改变的,因此说 String 的对象是不可变的

  • 其实就是地址不会发生变化
第二点

![](https://i-blog.csdnimg.cn/direct/de21c7b5c8ac409a8d26f7989e6c8fba.png#pic_center =50)

代码演示
package t_string
;
public
class StringDemo3 {
public
static
void main(String[] args) {
// 1. 只要是以双引号给出的字符串对象,存储在常量池中,而且内容相同时只会存储一份
String s1 = "abc"
;
String s2 = "abc"
;
System.out.println(s1 == s2)
;
// true
// 2. new String创建字符串对象,每次new出来的收拾一个新对象,放在堆内存中
char[] chars = {
'a'
, 'b'
, 'c'
}
;
String a1 =
new String(chars)
;
String a2 =
new String(chars)
;
System.out.println(a1 == a2)
;
// false
}
}
总结
  1. String 有哪几点注意事项?
  • String 是不可变字符串对象
  • 只要是以 “…” 方式写出的字符串对象,会存储到字符串常量池,且相同内容的字符串只存储一份
  • 但通过 new 方式创建字符串对象,每 new 以此都会产生一个新的对象放在堆内存中
题目


2.4 String 的应用案例

2.4.1 案例一

需求

  • 系统正确的登录名和密码是:itfeng/123456,请在控制台开发一个登录页面,接收用户输入的登录名和密码,判断用户是否登录成功,登录成功后展示:“欢迎进入系统!”,即可停止程序
  • 注意:要求最多给用户三次登录机会

步骤:

  1. 开发登录页面,提示用户通过键盘输入登录名和密码
  2. 设计一个登录方法,对用户的登录名和密码进行正确性认证
  3. 根据登录方法返回的认证结果,判断用户是否登陆成功
  4. 使用循环控制登录界面最多显示3次
  • 代码实现
package t_string
;
import java.util.Scanner
;
/**
* 目标:完成用户的登录案例
*/
public
class StringTest4 {
public
static
void main(String[] args) {
// 1. 开发登录页面,提示用户通过键盘输入登录名和密码
for (
int i = 0
; i <
3
; i++
) {
Scanner sc =
new Scanner(System.in)
;
System.out.println("请您输入登录名称:"
)
;
String loginName = sc.next(
)
;
System.out.println("请您输入登录密码:"
)
;
String passWord = sc.next(
)
;
// 5. 开始调用登录方法,判断是否登录成功
boolean rs = login(loginName, passWord)
;
if (rs) {
System.out.println("恭喜您,欢迎进入系统~~~"
)
;
break
;
}
else {
System.out.println("登录名或者密码错误,请您确认~~~"
)
;
}
}
}
/**
* 2. 开发一个登录方法,接收用户的登录名和密码,返回认证的结果
*/
public
static
boolean login(String loginName, String passWord) {
// 3. 准备一份系统正确的登录名和密码
String okLoginName = "itfeng"
;
String okPassWord = "123456"
;
// 4. 开始真是判断用户是否登录成功
// if (okLoginName.equals(loginName) && okPassWord.equals(passWord)) {
// // 登录成功的
// return true;
// } else {
// return false;
// }
return (okLoginName.equals(loginName) && okPassWord.equals(passWord)
)
;
}
}
  • 总结
  1. 字符串的比较使用 == 比较好吗?为什么?什么时候使用 ==
  • 不好,对于字符串对象的比较,== 比较的是地址,容易出业务 bug
  • 基本数据类型的变量或者值应该使用 == 比较
  1. 开发中比较字符串推荐使用什么方式比较?
  • 使用 String 提供的 equals 方法,它只关心字符串内容一样就返回 true
2.4.2 案例二

需求

  • 实现随机产生验证码,验证码的每位可能是数字、大写字母、小写字母

分析:

  1. 设计一个方法,该方法接收一个整型参数,最终要返回对应位数的随机验证码
  2. 方法内定义2个字符串变量:1个用来记住生成的验证码,1个用来记住要用到的全部字符
  3. 定义 for 循环控制生成多少位随机字符,每次得到一个字符范围内的随机索引,根据索引提取该字符,把该字符交给 code 变量连接起来,循环结束后,在循环外返回code即可
  4. 主程序中,调用该方法即可得到随机验证码了
  • 代码实现
package t_string
;
import java.util.Random
;
public
class StringTest5 {
public
static
void main(String[] args) {
System.out.println(createCode(4
)
)
;
System.out.println(createCode(6
)
)
;
}
/**
* 1. 设计一个方法,返回指定位数的验证码
* */
public
static String createCode(
int n){
// 2. 定义2个变量,一个是记住最终产生的随机验证码,一个是记住可能用到的全部字符
String code = ""
;
String data = "abcdefghijklmnopqrstuvwxyz1234567890"
;
Random r =
new Random(
)
;
// 3. 开始定义一个循环产生每位随机字符
for (
int i = 0
; i < n; i++
) {
// 4. 随机一个字符范围内的索引
int index = r.nextInt(data.length(
)
)
;
code += data.charAt(index)
;
// code = code + 字符
}
// 6. 返回code即可
return code;
}
}

3. ArrayList

3.1 ArrayList 快速入门

什么是集合?

有数组,为什么还要学习集合?

ArrayList:

  1. 会提供创建容器对象的方式
  2. 会提供相应的方法对容器进行操作(增删改查)

ArrayList

构造器说明
public ArrayList()创建一个空的集合对象
常用方法名说明
public boolean add(E e)将指定的元素添加到此集合的末尾
public void add(int index, E element)在此集合中的指定位置插入指定的元素
public E get(int index)返回指定索引处的元素
public int size()返回集合中的元素的个数
public E remove(int index)删除指定索引处的元素,返回被删除的元素
public boolean remove(Object o)删除指定的元素,返回删除是否成功
public E set(int index, E element)修改指定索引处的元素,返回被修改的元素
代码演示
package u_arraylist
;
import java.util.ArrayList
;
/**
* 目标:要求掌握如何创建ArrayList集合的对象,并熟悉ArrayList提供的常用方法
*/
public
class ArrayListDemo1 {
public
static
void main(String[] args) {
// 1. 创建一个ArrayList的集合对象
ArrayList list =
new ArrayList(
)
;
// 从jdk 1.7开始才支持
// ArrayList<String> list = new ArrayList();list.add("feng");list.add(666);list.add(99.5);list.add("张三");list.add("feng");System.out.println(list);// [feng, 666, 99.5, 张三, feng]// 2. 在集合中的某个索引位置处添加一个数据list.add(1, "MySQL");System.out.println(list);// [feng, MySQL, 666, 99.5, 张三, feng]// 3. 根据索引获取集合中某个索引位置处的值System.out.println(list.get(1));// MySQL// 4. 获取集合的大小(返回集合中存储的元素个数)System.out.println(list.size());// 6// 5. 根据索引删除集合中的某个元素值,会返回被删除的元素值给我们System.out.println(list.remove(1));// MySQLSystem.out.println(list);// [feng, 666, 99.5, 张三, feng]// 6. 直接删除某个元素值,删除成功会返回true,反之System.out.println(list.remove("张三"));// trueSystem.out.println(list);// [feng, 666, 99.5, feng]// 默认删除的是第一次出现的数据System.out.println(list.remove("feng"));// trueSystem.out.println(list);// [666, 99.5, feng]// 7. 修改某个索引位置处的数据,修改后会返回原来的值给我们System.out.println(list.set(1, "itfeng"));// 99.5System.out.println(list);// [666, itfeng, feng]}}
总结
  1. 集合是什么,有什么特点?
  • 一种容器,用来存储数据的
  • 集合的大小可变
  1. ArrayList 是什么?怎么使用?
  • 是集合中最常用的一种,ArrayList 是泛型类,可以约束存储的数据类型
  • 创建对象,调用无参数构造器初始化对象:public ArrayList();
  • 调用相应的增删改查数据的方法
  1. ArrayList 提供了哪些常用方法?
    | 常用方法名 | 说明 |
    | ------------------------------------- | -------------------------------------- |
    | public boolean add(E e) | 将指定的元素添加到此集合的末尾 |
    | public void add(int index, E element) | 在此集合中的指定位置插入指定的元素 |
    | public E get(int index) | 返回指定索引处的元素 |
    | public int size() | 返回集合中的元素的个数 |
    | public E remove(int index) | 删除指定索引处的元素,返回被删除的元素 |
    | public boolean remove(Object o) | 删除指定的元素,返回删除是否成功 |
    | public E set(int index, E element) | 修改指定索引处的元素,返回被修改的元素 |

3.2 ArrayList 应用案例

需求:

  • 现在假设购物车中存储了如下这些商品:Java 入门,宁夏枸杞,黑枸杞,人字拖,特技枸杞,枸杞子。现在用户不想买枸杞,选择了批量删除,请完成该需求

分析:

  1. 后台使用 ArrayList 集合表示购物车,存储这些商品名
  2. 遍历集合中的每个数据,只要这个数据包含了 “枸杞” 则删除它
  3. 输出集合看是否已经成功删除了全部枸杞数据了
代码实现
package u_arraylist
;
import java.util.ArrayList
;
/**
* 目标:掌握从集合容器中找数据并删除的技巧
*/
public
class ArrayListDemo2 {
public
static
void main(String[] args) {
ArrayList<
String> list =
new ArrayList(
)
;
list.add("Java入门"
)
;
list.add("宁夏枸杞"
)
;
list.add("黑枸杞"
)
;
list.add("人字拖"
)
;
list.add("特级枸杞"
)
;
list.add("枸杞子"
)
;
System.out.println(list)
;
// [Java入门, 宁夏枸杞, 黑枸杞, 人字拖, 特级枸杞, 枸杞子]
// 2. 开始完成需求:从集合中找出包含枸杞的数据并删除它
// for (int i = 0; i < list.size(); i++) {
// // 取出当前遍历到的数据
// String ele = list.get(i);
// // 判断这个数据中包含枸杞
// if (ele.contains("枸杞")){
// // 直接从集合中删除该数据
// list.remove(ele);
// }
// }
// System.out.println(list); // [Java入门, 黑枸杞, 人字拖, 枸杞子]
// 方式一:每次删除一个数据后,就让i往左退一步
// for (int i = 0; i < list.size(); i++) {
// // 取出当前遍历到的数据
// String ele = list.get(i);
// // 判断这个数据中包含枸杞
// if (ele.contains("枸杞")) {
// // 直接从集合中删除该数据
// list.remove(ele);
// i--;
// }
// }
// System.out.println(list); // [Java入门, 人字拖]
// 方式二:从集合的后面倒着遍历并删除
for (
int i = list.size(
) - 1
; i >= 0
; i--
) {
// 取出当前遍历到的数据
String ele = list.get(i)
;
// 判断这个数据中包含枸杞
if (ele.contains("枸杞"
)
) {
// 直接从集合中删除该数据
list.remove(ele)
;
}
}
System.out.println(list)
;
// [Java入门, 人字拖]
}
}
总结
  1. 从集合中遍历元素,并筛选出元素删除它,应该如何操作才能不出 bug?
  • 方式一:每次删除一个数据后,索引 - 1
  • 方式二:从集合后面遍历然后删除,可以避免漏掉元素

ArrayList 综合案例

模仿外面系统中的商家系统

需求:

  • 完成菜品的上架、以及菜品信息浏览功能

目标:

  • 使用所学的 ArrayList 集合结合面向对象编程实现以上2个需求
代码实现
package u_arraylist
;
public
class Food {
private String name;
private
double price;
private String desc;
// 描述
public Food(
) {
}
public Food(String name,
double price, String desc) {
this.name = name;
this.price = price;
this.desc = desc;
}
public String getName(
) {
return name;
}
public
void setName(String name) {
this.name = name;
}
public
double getPrice(
) {
return price;
}
public
void setPrice(
double price) {
this.price = price;
}
public String getDesc(
) {
return desc;
}
public
void setDesc(String desc) {
this.desc = desc;
}
}
  • FoodOperator.java
package u_arraylist
;
import java.util.ArrayList
;
import java.util.Scanner
;
/**
* 菜品操作类:负责上架和浏览功能的实现
*/
public
class FoodOperator {
// 1. 定义一个ArrayList集合对象,负责存储菜品对象的信息
private ArrayList<
Food> foodList =
new ArrayList<
>(
)
;
// foodList = []
// 2. 开发功能:上架菜品功能
public
void addFood(
) {
// 3. 创建一个菜品对象,封装上架的菜品信息
Food f =
new Food(
)
;
// 4. 录入菜品信息进去
Scanner sc =
new Scanner(System.in)
;
System.out.println("请您输入该菜品名称:"
)
;
String name = sc.next(
)
;
f.setName(name)
;
System.out.println("请您输入该菜品价格:"
)
;
double price = sc.nextDouble(
)
;
f.setPrice(price)
;
System.out.println("请您输入该菜品描述:"
)
;
String desc = sc.next(
)
;
f.setDesc(desc)
;
// 5. 把菜品对象存入到集合中去
foodList.add(f)
;
System.out.println("上架成功!"
)
;
}
// 6. 展示菜品
public
void showAllFood(
) {
if (foodList.size(
) == 0
) {
System.out.println("什么菜品都没有,先去上架"
)
;
return
;
}
for (
int i = 0
; i < foodList.size(
)
; i++
) {
Food f = foodList.get(i)
;
System.out.println(f.getName(
)
)
;
System.out.println(f.getPrice(
)
)
;
System.out.println(f.getDesc(
)
)
;
System.out.println("---------------------"
)
;
}
}
// 负责展示操作界面
public
void start(
) {
while (true
) {
System.out.println("请选择功能"
)
;
System.out.println("1. 上架菜品"
)
;
System.out.println("2. 展示菜品"
)
;
System.out.println("3. 退出"
)
;
Scanner sc =
new Scanner(System.in)
;
System.out.println("请选择您的操作:"
)
;
String command = sc.next(
)
;
switch (command) {
case "1":
addFood(
)
;
break
;
case "2":
showAllFood(
)
;
break
;
case "3":
System.out.println("下次再来哦~~~"
)
;
return
;
// 干掉方法
default:
System.out.println("您输入的命令不存在!"
)
;
}
}
}
}
  • ArrayListTest3.java
package u_arraylist
;
import java.util.ArrayList
;
public
class ArrayListTest3 {
public
static
void main(String[] args) {
// 目标:完成拓展案例:商家菜品上架操作
// 1. 设计一个菜品类,负责创建菜品对象,封装菜品数据
// 2. 设计一个菜品操作类FoodOperator,负责完成对菜品的业务实现:上架,浏览信息
FoodOperator operator =
new FoodOperator(
)
;
operator.start(
)
;
}
}

总结


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/929518.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NKOJ全TJ计划——NP11745

题目内容 最小割板子 小 E 有一棵有\(n\) 个点的无根树,它的节点编号为\(1\) 到\(n\) ,其中第\(i(i\in [1,n-1])\) 条边连接节点\(u_i\)和\(v_i\) 。同时他还有\(m\)条树上的路径,第\(i\)条路径为从节点\(a_i\)到\(…

InfinityFree教程 ——免费搭建属于你的网站

本文讲述了如何通过 "InfinityFree" 搭建免费的纯前端网站💖** InfinityFree 简介** InfinityFree是一个提供免费虚拟主机服务的平台,提供免费虚拟主机。每个账户可创建3个站点,支持自定义域名(需使用其…

深入解析:npm、yarn幽灵依赖问题

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

营销网站的案例分析wordpress用图床好还是

在快节奏的现代生活中&#xff0c;个人债务问题似乎已成为许多人不得不面对的挑战。正确处理个人债务&#xff0c;不仅关系到个人信用和财务状况&#xff0c;更是实现财务自由的重要一步。本文将为您提供一些实用的建议&#xff0c;帮助您优雅地解决个人债务问题&#xff0c;走…

10.6 模考 T4(QOJ 1836)

题意:给定 \(n\) 个点 \(m\) 条边的无向图,定义“花”为一个拥有 \(4\) 个结点的导出子图,这个导出子图有 \(1\) 条边或 \(5\) 条边。定义“叶”为一个拥有 \(4\) 个结点的导出子图,这个导出子图有 \(3\) 条边,且…

iTunes 无法备份 iPhone:10 种解决方法 - 详解

iTunes 无法备份 iPhone:10 种解决方法 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…

实用指南:【Node.js 深度解析】npm install 遭遇:npm ERR! code CERT_HAS_EXPIRED 错误的终极解决方案

实用指南:【Node.js 深度解析】npm install 遭遇:npm ERR! code CERT_HAS_EXPIRED 错误的终极解决方案pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: b…

关于调和级数估算前n项的和

我们要估算 \(\displaystyle\sum^n_{i = 1}\dfrac{1}{i}\)。 我们知道 \(\displaystyle\sum^n_{i = 1}\dfrac{1}{i}\approx \int_1^n\dfrac{1}{i} = (\ln\left|i\right|)\bigg |^n_1 = \ln n - \ln 1 = \ln n\)。 因此…

专业的网站优化黑马前端学费多少

CCIE理论-第五篇-SDA-2 DNA Center 展示一下web的界面哈 其实就类似平时弄的web的防火墙呀,其他设备等 弹性子网 这一章来讲讲弹性子网 stretched subnets allow an ip subnet to be :stretched:vla the overlay 拉伸子网允许通过覆盖“拉伸”IP子网1基于主机IP的流量…

Windows install RabbitMQ via PowerShell via administrator role

//Run PowerShell as Administrator role //Run below commands respectively //First command Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.N…

Windows漏洞利用技巧:虚拟内存访问陷阱(2025更新)

本文详细介绍了在Windows系统中构建虚拟内存访问陷阱的技术方法,重点分析了Windows 11 24H2新特性如何让攻击者能够利用本地SMB服务器进行内存访问延迟攻击,为利用TOCTOU类型内核漏洞提供了新的攻击向量。Windows漏洞…

北京单页营销型网站tp3企业网站开发百度云

1 概述 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长. HashMap是非线程安全的,只适用于单线程环境,多线程环境可以采用并发包下的concurrentHashMap HashMap 实现了Serializable接口&#x…

深圳福田站网站用户体验模型

Flutter开发过程中&#xff0c;对于视频播放的三方组件有很多&#xff0c;在Android端适配都挺好&#xff0c;但是在适配iPhone手机的时候&#xff0c;如果设置了UIInterfaceOrientationLandscapeLeft和UIInterfaceOrientationLandscapeRight都为false的情况下&#xff0c;无法…

Python编译期优化:隐藏在代码背后的效率魔法

Python编译期优化:隐藏在代码背后的效率魔法 Python常被认为是解释型语言,但实际上它采用了"编译→解释"的混合执行模式。在将源代码转换为字节码的编译阶段,Python解释器会进行一系列优化,显著提升程序…

网站文件夹名百度推广关键词怎么设置好

参考&#xff1a;基于知识库和 LLM 的问答系统经验分享 - 知乎 (zhihu.com) 一、基于LLM的问答系统架构 比较常见的开源 LLM 的问答系统都会遵循下图这种结构去进行设计&#xff1a; 加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 -> 在文本…

无需安装的Photoshop:网页版完整使用指南与在线图片编辑技巧

​ 你还在为安装庞大的Photoshop软件而烦恼吗?面对几百兆的安装包、繁琐的配置流程,确实让人头疼。特别是当你只是偶尔需要修个图、换个证件照背景,或是简单处理头像时,真的不必大费周章安装一个“重量级”应用。今…

求阶

阶:满足 \(x^{k}\equiv 1(\text{mod}\ p)\) 的最小 \(k\)。 首先,若 \(x\not\perp p\),则无解。 令 \(f(k) = x^k\mod p\) 若有解,则由费马小定理知,\(k = p - 1\) 是 \(f(x) = 1\) 的一个解。 令其最小解为 \(k_…

wordpress 网站显示加载时长网站 公司形象

本文由178论坛会员&#xff1a;东东呛 转载&#xff0c;如果你是原作者请联系我们&#xff0c;我们会对原创作者给予奖励。(当然您也可以在评论回复表达看法&#xff0c;但是论坛会有更丰富的奖励哦。)朵朵快满级了~~~由于内测只开到50级~~~可还剩下一堆任务~所以刷怪刷到49级半…

常见的网站开发语言建设网站需要什么硬件

当我们使用Cocoa的视图的时候&#xff0c;我们必须继承NSView或者UIView并且重载函数drawRect:来显示任何内容。但是CALayer实例可以直接使用&#xff0c;而无需继承子类。因为CALayer是一个键-值编码兼容的容器类&#xff0c;你可以在实例里面存储任意值&#xff0c;所以子类实…

赛前训练 5 树形 dp

A 做树形 dp 时,尝试将题目转化为只考虑子树内. 对于这个题,因为起点到终点的路径总能拆成 起点 -> LCA -> 终点 的形式,所以我们考虑枚举 LCA 进行 dp.为了使汽油量最大,我们维护 \(dp_i\) 表示子树内跑到 \(i\…