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

news2025/6/5 18:31:30

常用 API

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

文章目录

  • 常用 API
    • 1. 包
      • 代码演示
    • 2. String
      • 2.1 String 概述
        • 代码演示
        • 总结
      • 2.2 String 的常用方法
        • 代码演示
      • 2.3 String 使用时的注意事项
        • 第一点
        • 第二点
          • 代码演示
        • 总结
        • 题目
      • 2.4 String 的应用案例
        • 2.4.1 案例一
        • 2.4.2 案例二
    • 3. ArrayList
      • 3.1 ArrayList 快速入门
        • 代码演示
        • 总结
      • 3.2 ArrayList 应用案例
        • 代码实现
        • 总结
      • ArrayList 综合案例
        • 代码实现
    • 总结

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

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

  • Java 提供了哪些 API 给咱们使用呢?

    • API 文档
  • 为什么要先学习包?

    • 包是分门别类管理程序的
    • 别人写好的程序通常都在别人的包里面!

1. 包

什么是包?

  • 包是用来分门别类地管理各种不同程序的,类似于文件夹,建包有利于程序的管理和维护
  • 建包的语法格式:
    • Idea 会帮我们自动建
package com.itfeng.javabean;
public class Student {
    
}

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

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

代码演示

  • s_pkg.itcast.Demo1.java
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 的方法
  • 方式一:Java 程序中的所有字符串文字(例如 “abc”)都为此类的对象
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 的对象是不可变的

  • 其实就是地址不会发生变化
第二点
  • 只要是以 “…” 方式写出的字符串对象,会存储到字符串常量池,且相同内容的字符串只能存储一份
    • Java 为什么这么设计?
      • 节约内存

  • 但通过 new 方式创建字符串对象,每 new 以此都会产生一个新的对象放在堆内存中

![](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)); // MySQL
        System.out.println(list); // [feng, 666, 99.5, 张三, feng]

        // 6. 直接删除某个元素值,删除成功会返回true,反之
        System.out.println(list.remove("张三")); // true
        System.out.println(list); // [feng, 666, 99.5, feng]
        // 默认删除的是第一次出现的数据
        System.out.println(list.remove("feng")); // true
        System.out.println(list); // [666, 99.5, feng]

        // 7. 修改某个索引位置处的数据,修改后会返回原来的值给我们
        System.out.println(list.set(1, "itfeng")); // 99.5
        System.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个需求
代码实现
  • Food.java
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.coloradmin.cn/o/2398580.html

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

相关文章

实现Cursor + Pycharm 交互

效果演示&#xff1a; 直接可以在cursor或Pycharm中点击右键点击&#xff0c;然后就可以跳转到另一个应用的对应位置了 使用方法&#xff1a; 分别在两个应用中安装插件【Switch2Cursor Switch2IDEA&#xff0c;这两个插件分别安装在 IDEA 和 Cursor 中】&#xff1a; Switc…

C++标准模板库

C标准库参考&#xff1a; C 标准库-CSDN博客 标准模板库STL C 标准库 和 STL 的关系 1. 严格来说&#xff0c;STL ≠ C 标准库 STL&#xff08;Standard Template Library&#xff09; 是 C 标准库的一个子集&#xff0c;主要提供泛型编程相关的组件&#xff08;如容器、迭代器…

dvwa6——Insecure CAPTCHA

captcha&#xff1a;大概是“我不是机器人”的一个勾选框或者图片验证 LOW: 先输入密码正常修改试一下&#xff08;123&#xff09;&#xff0c;发现报错 查看源码&#xff1a; <?phpif( isset( $_POST[ Change ] ) && ( $_POST[ step ] 1 ) ) {// Hide the C…

【学习笔记】On the Biology of a Large Language Model

On the Biology of a Large Language Model 1 Introduction 目标是对这些模型的内部工作机制进行逆向工程&#xff0c;从而更好地理解它们&#xff0c;并评估它们是否适合特定用途。 正如细胞是生物系统的基本构建单元&#xff0c;我们假设特征是模型内部计算的基本单位。仅仅…

飞腾D2000,麒麟系统V10,docker,ubuntu1804,小白入门喂饭级教程

#下载docker Index of linux/static/stable/ 根据电脑的CPU类型选择&#xff1a; Intel和AMD选x86_64飞腾D2000选aarch64 #选择较新的版本 #在包含下载的docker-XX.X.X.tgz的文件夹中右键->打开终端 # 解压安装包&#xff08;根据实际下载的文件&#xff09; tar -zxvf …

星野录(博客系统)测试报告

目录 一. 项目背景 二、项目功能 三、测试计划 1. 功能测试 1.1 测试用例 1.2 执行测试部分操作截图 2. 使用selenium进行自动化测试 2.1 添加相关依赖 2.2 登录页面测试 3.3 注册页面测试 3.4 博客列表页面测试 3.5 博客详情页测试 3.6 博客编辑页面测试 3.7 个人…

使用 Java 实现一个简单且高效的任务调度框架

目录 一、任务调度系统概述 (一)任务调度的目标 (二)任务调度框架的关键组成 二、任务状态设计 (一)任务状态流转设计 (二)任务表设计(SQL) 三、单机任务调度实现 (一)获取待处理任务 (二)执行任务 代码实现(单线程版本) (三)多线程提高吞吐量 四…

2022—2025年:申博之路及硕士阶段总结

文章目录 1 前景概要2 打造神兵利器2.1 夺天地之精2.2 锻兵魂之形2.3 契人兵之命 3 潜心闭关修炼3.1 第一阶段&#xff1a;苦心智3.2 第二阶段&#xff1a;劳筋骨3.3 第三阶段&#xff1a;摧意志 4 突破晋级4.1 突破失败4.2 聚气凝神4.3 心魔再现4.4 新起点 5 回顾及深思 1 前景…

项目执行中缺乏灵活应对机制,如何增强适应性?

项目执行中缺乏灵活应对机制可以通过建立风险预警机制、培养团队快速响应能力、制定动态调整方案、加强团队沟通协作、引入敏捷管理理念来增强适应性。 其中&#xff0c;培养团队快速响应能力尤为重要。这种能力意味着当项目遇到突发状况时&#xff0c;团队能迅速评估问题、确定…

Agentic Workflow是什么?Agentic Workflow会成为下一个AI风口吗?

无论是想要学习人工智能当做主业营收&#xff0c;还是像我一样作为开发工程师但依然要运用这个颠覆开发的时代宠儿&#xff0c;都有必要了解、学习一下人工智能。 近期发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;入行门槛低&#x…

BUUCTF[极客大挑战 2019]EasySQL 1题解

[极客大挑战 2019]EasySQL题解 分析解题过程漏洞原理分析明确注入点&#xff1a;尝试万能密码法法一法二 总结 分析 从题目分析&#xff0c;这道题应该与SQL注入有关&#xff0c;启动靶机之后&#xff0c;访问url是一个登录界面&#xff0c;随便输入用户名密码之后&#xff0…

大模型 提示模板 设计

大模型 提示模板 设计 论文介绍:LangGPT - 从编程语言视角重构大语言模型结构化可复用提示设计框架 核心问题: 现有提示工程缺乏结构化设计模板,依赖经验优化,学习成本高且复用性低,难以支持提示的迭代更新。 创新思路: 受编程语言的结构化和可复用性启发,提出LangGP…

excel表格记账 : 操作单元格进行加减乘除 | Excel中Evaluate函数

文章目录 引用I 基础求和∑II Excel中Evaluate函数基于字符串表达式进行计算用法案例 :基于Evaluate实现汇率计算利润知识扩展在单元格内的换行选择整列单元格引用 需求: 基于汇率计算利润,调整金额以及进汇率和出汇率自动算出利润,已经统计总利润。 基于Evaluate实现汇率计…

20250602在荣品的PRO-RK3566开发板的Android13下的uboot启动阶段配置BOOTDELAY为10s

20250602在荣品的PRO-RK3566开发板的Android13下的uboot启动阶段配置BOOTDELAY为10s 2025/6/2 18:15 缘起&#xff1a;有些时候&#xff0c;需要在uboot阶段做一些事情。 于是&#xff0c;希望在荣品的PRO-RK3566开发板的Android13下的uboot启动停下。 1、【原始的LOG&#xff…

ssh登录wsl2

1. ssh服务重新安装 Ubuntu20.04子系统自带的ssh服务无法连接&#xff0c;需卸载后重新安装。 sudo apt-get remove openssh-server sudo apt-get install openssh-server2. 修改配置信息 sudo vim /etc/ssh/sshd_config修改内容&#xff1a; # 最好一模一样 Port 33 # 这…

黑马Java面试笔记之 消息中间件篇(Kafka)

一. Kafka保证消息不丢失 Kafka如何保证消息不丢失 使用Kafka在消息的收发过程中都会出现消息丢失&#xff0c;Kafka分别给出了解决方案 生产者发送消息到Brocker丢失消息在Brocker中存储丢失消费者从Brocker接收消息丢失 1.1 生产者发送消息到Brocker丢失 设置异步发送 消息…

PYTHON通过VOSK实现离线听写支持WINDOWSLinux_X86架构

在当今人工智能快速发展的时代&#xff0c;语音识别技术已经成为人机交互的重要方式之一。本文将介绍如何使用Python结合Vosk和PyAudio库实现一个离线语音识别系统&#xff0c;无需依赖网络连接即可完成语音转文字的功能。 技术栈概述 1. Vosk语音识别引擎 Vosk是一个开源的…

neo4j 5.19.0两种基于向量进行相似度查询的方式

介绍 主要讲的是两种相似度查询 一种是创建向量索引&#xff0c;然后直接从索引的所有数据中进行相似度搜索&#xff0c;这种不支持基于自己查询的结果中进行相似度匹配另一种是自己调用向量方法生产相似度进行相似度搜索&#xff0c;这种可以基于自己的查询结果中进行相似度…

华为云Flexus+DeepSeek征文|利用华为云 Flexus 云服务一键部署 Dify 平台开发文本转语音助手全流程实践

目录 前言 1 华为云 Flexus 与 Dify 平台简介 1.1 Flexus&#xff1a;为AI而生的轻量级云服务 1.2 Dify&#xff1a;开源的LLM应用开发平台 2 一键部署Dify平台至Flexus环境 3 构建文本转语音助手应用 3.1 创建ChatFlow类型应用 3.2 配置语音合成API的HTTP请求 3.3 设…

ck-editor5的研究 (7):自定义配置 CKeditor5 的 toolbar 工具栏

文章目录 一、前言二、实现步骤1. 第一步: 搭建目录结构2. 第二步:配置toolbar工具栏的步骤(2-1). 配置粗体和斜体(2-2). 配置链接和标题+正文(2-3). 配置列表和引用(2-4). 配置自动格式化3. 第三步:更多工具三、测试效果和细节四、总结一、前言 在前面的文章中,我们已经对…