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

Java数据结构准备工作---常用类

文章目录

  • 前言
  • 1.包装类
    • 1.1.包装类基本知识
    • 1.2.包装类的用途
    • 1.3.装箱和拆箱
      • 1.3.1.装箱:
      • 1.3.2.拆箱
    • 1.4 包装类的缓存问题
  • 2.时间处理类
    • 2.1.Date 时间类(java.util.Date)
    • 2.2.DateFormat 类和 SimpleDateFormat 类
    • 2.3.Calendar 日历类
  • 3.其他常用类
    • 3.1.Math类
    • 3.2.Random 类
    • 3.3. File 类
    • 3.4 递归遍历目录结构和树状展现
    • 3.5.枚举


前言

上一节课我们学习时间复杂度和空间复杂度。今天我们学习常用类
在这里插入图片描述
这个就是我们要学习的内容


1.包装类

1.1.包装类基本知识

Java 是面向对象的语言,但并不是“纯面向对象”的,因为我们经常用到的基本数据类型就不是对象。但是我们在实际应用中经常需要将基本数据转化成对象,以便于操作。比如:将基本数据类型存储到 Object[ ]数组或集合中的操作等等。为了解决这个不足, Java 在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class)。
包装类位于 java.lang 包,八种包装类和基本数据类型的对应关系:
在这里插入图片描述
在这八个类名中,除了 Integer 和 Character 类以外,其它六个类的类名和基本数
据类型一致,只是类名的第一个字母大写而已
Number 类是抽象类,因此它的抽象方法,所有子类都需要提供实现。 Number 类提供了
抽象方法: intValue()、 longValue()、 floatValue()、 doubleValue(),意味着所有的“数
字型”包装类都可以互相转型。

1.2.包装类的用途

对于包装类来说,这些类的用途主要包含两种:

  1. 作为和基本数据类型对应的类型存在,方便涉及到对象的操作,如 Object[ ]、集合等
    的操作。
  2. 包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法(这些操
    作方法的作用是在基本数据类型、包装类对象、字符串之间提供相互之间的转化!)。

1.3.装箱和拆箱

装箱(autoboxing)和拆箱(unboxing):将基本数据类型和包装类自动转换。

1.3.1.装箱:

public static void main(String[] args) {int a=10;Integer b=new Integer(a);//这个方法在JDK9之后就不再使用了,但是为了兼用之前的版本,但是也可以使用Integer c=Integer.valueOf(a);Integer d=a;}

这个是装箱操作,其中

Integer c=Integer.valueOf(a);是显示装箱
Integer b=new Integer(a);或者Integer d=a;是自动转型
他的底层仍是使用的是Integer.valueOf()方法

可以看反汇编

1.3.2.拆箱

 public static void main(String[] args) {Integer a=10;int b= a.intValue();int c=a;}

这个就是拆箱操作。
自动装箱/拆箱的本质是:
自动装箱与拆箱的功能是编译器来帮忙,编译器在编译时依据您所编写的语法,决定是否进行装箱或拆箱动作。
自动装箱与拆箱的功能是所谓的“编译器蜜糖(Compiler Sugar)”,虽然使用这个功能很方
便,但在程序运行阶段您得了解 Java 的语义。 如下所示的程序是可以通过编译的:

public static void main(String[] args) {Integer a=null;int i=a;System.out.println(i);}

在这里插入图片描述
我们会发现报错了,空指针异常,为什么?
因为包装类是属于引用类型,会在栈和堆上开辟内存,a的值可以是null,但是在进行拆箱的时候,i是一个基本数据类型,不可能是null,因而报错。

1.4 包装类的缓存问题

我们看一个例子

public static void main(String[] args) {Integer a=100;Integer b=100;System.out.println(a==b);Integer c=1000;Integer d=1000;System.out.println(c==d);}

大家觉得分别输出什么?
在这里插入图片描述
为什么呢?
整型、 char类型所对应的包装类,在自动装箱时,对于-128~127之间的值会进行缓
存处理,其目的是提高效率。
缓存原理为:如果数据在-128~127这个区间,那么在类加载时就已经为该区间的每
个数值创建了对象,并将这256个对象存放到一个名为cache的数组中。每当自动装箱过程
发生时(或者手动调用valueOf()时),就会先判断数据是否在该区间,如果在则直接获取
数组中对应的包装类对象的引用,如果不在该区间,则会通过new调用包装类的构造方法
来创建对象。
我们再看看Integer的部分源码
在这里插入图片描述
这段代码中我们需要解释下面几个问题:

  1. IntegerCache类为Integer类的一个静态内部类,仅供Integer类使用。
  2. 一般情况下 IntegerCache.low为-128, IntegerCache.high为127。

我们可以发现,如果-128<=i<127的话,会存放在IntegerCache.cache数组当中,那么在上面的代码中,100指的是同一个对象,但是如果不在这个范围的话,就是new Ineger()一个对象,会在栈和堆上开辟内存,那么用两个1000所在地址不一样,那么就不能使用==,而要使用equals方法了。

总结
1.自动装箱调用的是 valueOf()方法,而不是 new Integer()方法。
2.自动拆箱调用的 xxxValue()方法。
3.包装类在自动装箱时为了提高效率,对于-128~127 之间的值会进行缓存处理。超过范
围后,对象之间不能再使用==进行数值的比较,而是使用 equals 方法。
下面我们模拟复现一个Integer类,叫做MyInteget类

public class MyInteger {private int value;private static MyInteger[]cache=new MyInteger[256];public static final int LOW=-128;public static final int HIGH=127;private MyInteger(int i){this.value=i;}//静态代码块先被执行static {for(int i=MyInteger.LOW;i<=HIGH;i++){cache[i+128]=new MyInteger(i);}}public int intValue(){return this.value;}public static MyInteger ValueOf(int i){if(i>=LOW&&i<=HIGH){return cache[i+128];}return new MyInteger(i);}@Overridepublic String toString() {return this.value+"";}public static void main(String[] args) {MyInteger i=MyInteger.ValueOf(10);MyInteger a=MyInteger.ValueOf(1000);System.out.println(i);System.out.println(a);}
}

String类型咱们在Java(十一)—String类型中已经讲过了,因此在这就不在进行赘述了。

2.时间处理类

时间如流水,一去不复返”,时间是一维的。所以,我们需要一把刻度尺来表达和度
量时间。在计算机世界,我们把 1970 年 1 月 1 日 00:00:00 定为基准时间,每个度量单
位是毫秒(1 秒的千分之一),如图所示。
在这里插入图片描述
我们用 long 类型的变量来表示时间,从基准时间前后几亿年都能表示。
这个“时刻数值” 是所有时间类的核心值,年月日都是根据这个“数值” 计算出来的。
我们工作学习涉及的时间相关类有如下这些在这里插入图片描述

2.1.Date 时间类(java.util.Date)

在标准 Java 类库中包含一个 Date 类。它的对象表示一个特定的瞬间,精确到毫秒。

  1. Date() 分配一个 Date 对象,并初始化此对象为系统当前的日期和时间,可以精确到毫秒)。
  2. Date(long date) 分配 Date 对象并初始化此对象,以表示自从标准基准时间以来的毫秒数。
  3. boolean equals(Object obj) 比较两个日期的相等性。
  4. long getTime() 返回毫秒数。
  5. String toString() 把此 Date 对象转换为以下形式的 String:
    dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天
public static void main(String[] args) {long nowNum=System.currentTimeMillis();System.out.println(nowNum);Date date1=new Date(10000020323L);Date date2=new Date();System.out.println(date1);System.out.println(date1.getTime());System.out.println(date2);System.out.println(date2.getTime());Date date3=new Date(-21L*365*24*3600*1000);//1949 年System.out.println(date3);System.out.println(date3.equals(date1));System.out.println(date3.before(date1));System.out.println(date3.after(date1));}

2.2.DateFormat 类和 SimpleDateFormat 类

DateFormat 类的作用:
把时间对象转化成指定格式的字符串。反之,把指定格式的字符串转化成时间对象。
DateFormat 是一个抽象类,一般使用它的的子类SimpleDateFormat 类来实现。

public static void main(String[] args)throws ParseException {DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");String str="2024-6-8 12:25:00";Date date=format.parse(str);//从给定字符串的开头解析文本以生成日期。System.out.println(date.getTime());System.out.println(date);System.out.println("=========");DateFormat dateFormat=new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒");Date date1=new Date(2342342342334L);String date1Str=format.format(date1);//将 Date 格式化为日期时间字符串。System.out.println(date1Str);//小妙招Date now = new Date();DateFormat f1 = new SimpleDateFormat("今年的第D天,第w周");String str3 = f1.format(now);System.out.println(str3);}

2.3.Calendar 日历类

Calendar 类是一个抽象类,为我们提供了关于日期计算的功能,比如:年、月、日、时、分、秒的展示和计算。
GregorianCalendar 是 Calendar 的子类, 表示公历。

注意:
月份的表示,一月是 0,二月是 1,以此类推, 12 月是 11。 因为大多数人习惯于使用单词而不是使用数字来表示月份,这样程序也许更易读,父类 Calendar 使用常量来表示月份:
JANUARY、 FEBRUARY 等等

import java.util.GregorianCalendar;
import java.util.*;
public class TestCalendar {public static void main(String[] args) {GregorianCalendar calendar=new GregorianCalendar(2024,6,8,12,40,00);System.out.println(calendar);int year=calendar.get(Calendar.YEAR);int month=calendar.get(Calendar.MONTH);int day=calendar.get(Calendar.DAY_OF_MONTH);int day2=calendar.get(Calendar.DATE);// 日:Calendar.DATE和Calendar.DAY_OF_MONTH同义int date = calendar.get(Calendar.DAY_OF_WEEK);// 星期几 这里是:1-7.周日是1,周一是2,。。。周六是7System.out.println(year);System.out.println(month);System.out.println(day);System.out.println(day2);System.out.println(date);//设置日期GregorianCalendar calendar1=new GregorianCalendar();calendar1.set(Calendar.YEAR,2000);calendar1.set(Calendar.MONTH,1);calendar1.set(Calendar.DATE,25);calendar1.set(Calendar.HOUR_OF_DAY,8);calendar1.set(Calendar.MINUTE,10);calendar1.set(Calendar.SECOND,10);//日期的计算GregorianCalendar calendar2=new GregorianCalendar(2024,6,8,12,40,00);calendar2.add(Calendar.MONTH,-7);calendar2.add(Calendar.DATE,7);printCalendar(calendar2);// 日历对象和时间对象转化Date d = calendar2.getTime();GregorianCalendar calendar4 = new GregorianCalendar();calendar4.setTime(new Date());}static void printCalendar(Calendar calendar) {int year = calendar.get(Calendar.YEAR);int month = calendar.get(Calendar.MONTH) + 1;int day = calendar.get(Calendar.DAY_OF_MONTH);int date = calendar.get(Calendar.DAY_OF_WEEK) - 1; // 星期几String week = "" + ((date == 0) ? "日" : date);int hour = calendar.get(Calendar.HOUR);int minute = calendar.get(Calendar.MINUTE);int second = calendar.get(Calendar.SECOND);System.out.printf("%d年%d月%d日,星期%s %d:%d:%d\n", year, month, day,week, hour, minute, second);}
}

3.其他常用类

3.1.Math类

java.lang.Math 提供了一系列静态方法用于科学计算; 常用方法如下:
 abs 绝对值
 acos,asin,atan,cos,sin,tan 三角函数
 sqrt 平方根
 pow(double a, double b) a 的 b 次幂
 max(double a, double b) 取大值
 min(double a, double b) 取小值
 ceil(double a) 大于 a 的最小整数
 floor(double a) 小于 a 的最大整数
 random() 返回 0.0 到 1.0 的随机数
 long round(double a) double 型的数据 a 转换为 long 型(四舍五入)
 toDegrees(double angrad) 弧度->角度
 toRadians(double angdeg) 角度->弧

public static void main(String[] args) {//取整相关操作System.out.println(Math.ceil(3.2));System.out.println(Math.floor(3.2));System.out.println(Math.round(3.2));System.out.println(Math.round(3.8));//绝对值、开方、a的b次幂等操作System.out.println(Math.abs(-45));System.out.println(Math.sqrt(64));System.out.println(Math.pow(2,5));System.out.println(Math.pow(5,2));//Math类中常用的常量System.out.println(Math.PI);System.out.println(Math.E);//随机值System.out.println(Math.random());//[0,1)}

3.2.Random 类

Random 类: 专门用来生成随机数

public static void main(String[] args) {Random random=new Random();//随机产生[0,1)的double的数据System.out.println(random.nextDouble());//随机生成int范围内的数据System.out.println(random.nextInt());//随机生成一个[0,1)范围内的数据System.out.println(random.nextFloat());//随机生成false或trueSystem.out.println(random.nextBoolean());//随机生成一个[0,10)int类型的数据System.out.println(random.nextInt(10));//随机生成一个[20,30)的数字System.out.println(20+random.nextInt(10));System.out.println(20+(int)(random.nextDouble()*10));}

注意
Random 类位于 java.util 包下。

3.3. File 类

File 类的基本用法:
java.io.File 类: 代表文件和目录, 用于: 读取文件、 创建文件、删除文件、修改文件。
【示例】使用 File 类创建文件
File 类的常见构造方法: public File(String pathname)
以 pathname 为路径创建 File 对象,如果 pathname 是相对路径,则默认的当前路径在系统属性 user.dir 中存储

public static void main(String[] args)throws IOException {System.out.println(System.getProperty("user.dir"));//当前文件所在的位置File f=new File("a.txt");//相对路径,默认放在uesr.dir目录下f.createNewFile();//创建文件}

在这里插入图片描述
user.dir 就是本项目的目录。 上面代码执行后,在本项目和 D 盘下都生成了新的文件。
在这里插入图片描述
这个是绝对路径
通过 File 对象可以访问文件的属性:
在这里插入图片描述

public static void main(String[] args) throws IOException {File f=new File("a.txt");//相对路径,默认放在uesr.dir目录下f.createNewFile();//创建文件System.out.println("File f是否存在:"+f.exists());System.out.println("File f是否是目录:"+f.isDirectory());System.out.println("File f是否是文件:"+f.isFile());System.out.println("File f的最后修改时间"+f.lastModified());System.out.println("FIle f的大小:"+f.length());System.out.println("File f的文件名:"+f.getName());System.out.println("File f的文件目录路径"+f.getPath());}

通过 File 对象创建空文件或目录(在该对象所指的文件或目录不存在的情况下)
在这里插入图片描述
使用 mkdir 创建目录

public static void main(String[] args)throws IOException {//使用 mkdir 创建目录File f=new File("d:/c.txt");f.createNewFile();f.delete();File f2=new File("d:/电影/华语/大陆");boolean flag=f2.mkdir();//目录结构中有一个不存在,则不会创建整个目录树System.out.println(flag);//创建失败}

使用 mkdirs 创建目录

public static void main(String[] args) {File f3=new File("d:/电影/华语/大陆");boolean flag=f3.mkdirs();//目录结构中有一个不存在也没关系;创建整个目录树System.out.println(flag);//创建成功}

3.4 递归遍历目录结构和树状展现

本节结合前面给大家讲的递归算法,展示目录结构。大家可以先建立一个目录,下面增加几个子文件夹或者文件,用于测试。

public static void PrintFile(File file,int level){for(int i=0;i<level;i++){System.out.print('-');}//输出文件名System.out.println(file.getName());if(file.isDirectory()){File[]files=file.listFiles();for (File temp:files){PrintFile(temp,level+1);}}}public static void main(String[] args) throws IOException {File f1=new File("d:/电影/华语/大陆/哪吒传奇.mp4");File f2=new File("d:/电影/华语/大陆/战狼.mp4");File f3=new File("d:/电影/华语/大陆/战狼2.mp4");f1.createNewFile();f2.createNewFile();f3.createNewFile();File f4=new File("d:/电影/好莱坞/速度与激情8.mp4");boolean flag=f4.mkdirs();System.out.println(flag);File f=new File("d:/电影");PrintFile(f,0);}

在这里插入图片描述

3.5.枚举

JDK1.5 引入了枚举类型。枚举类型的定义包括枚举声明和枚举体

格式如下:
enum 枚举名 {
枚举体(常量列表)
}

枚举体就是放置一些常量。我们可以写出我们的第一个枚举类型,如示例所示:

import java.util.Random;/*** @Author: Lenovo* @Date: 2024/6/8 15:19* @description:*/
enum Season{SPRING,SUMMER,AUTUMN,WINTRE
}
class Jijie{public static final int SPRING=0;public static final int SUMMER=1;public static final int AUTUMN=2;public static final int WINTER=3;
}public class TestEnum {public static void main(String[] args) {/*System.out.println(Jijie.SPRING);System.out.println(Season.SPRING);*/for(Season s:Season.values()){System.out.println(s);}int a=new Random().nextInt(4);switch (Season.values()[a]){case SPRING:System.out.println("春天");break;case SUMMER:System.out.println("夏天");break;case AUTUMN:System.out.println("秋天");break;case WINTRE:System.out.println("冬天");break;}}}

相关文章:

Java数据结构准备工作---常用类

文章目录 前言1.包装类1.1.包装类基本知识1.2.包装类的用途1.3.装箱和拆箱1.3.1.装箱&#xff1a;1.3.2.拆箱 1.4 包装类的缓存问题 2.时间处理类2.1.Date 时间类(java.util.Date)2.2.DateFormat 类和 SimpleDateFormat 类2.3.Calendar 日历类 3.其他常用类3.1.Math类3.2.Rando…...

SD 使用教程

SD 换脸步骤 使用Stable Diffusion (SD) 进行换脸的基本步骤可以从以下几个方面概述&#xff0c;这里以一种常见的方式为例&#xff0c;结合了插件的使用来简化流程&#xff1a; 准备工作 安装必要的软件和插件&#xff1a;首先&#xff0c;确保你已经安装了Stable Diffusion…...

Sylar---协程调度模块

协程调度模块&#xff1a; 首先是协程任务类FiberAndThread,包括协程&#xff0c;函数&#xff0c;指定的线程&#xff1b;提供了五个构造函数&#xff0c;只传协程的智能指针&#xff0c;只传函数对象&#xff0c;传协程智能指针的指针&#xff0c;函数对象指针&#xff0c;还…...

iOS Hook 崩溃

0x00 崩溃重现 被 Hook 的类&#xff0c;是这样的&#xff1a; interface ViewController : UIViewController endimplementation ViewController - (void)loadView {[super loadView];NSLog("%s", __func__); }- (void)test {NSLog("%s", __func__); }-…...

区间预测 | Matlab实现LSTM-ABKDE长短期记忆神经网络自适应带宽核密度估计多变量回归区间预测

区间预测 | Matlab实现LSTM-ABKDE长短期记忆神经网络自适应带宽核密度估计多变量回归区间预测 目录 区间预测 | Matlab实现LSTM-ABKDE长短期记忆神经网络自适应带宽核密度估计多变量回归区间预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现LSTM-ABKDE长…...

linux内核下rapidio(TSI721)相关笔记汇总

1 驱动的安装 和 主要功能(doorbell, DMA, rionet)的简单测试 linux5.4 下使用rapidio(tsi721)的笔记记录_kernel-rapidio-CSDN博客 2 机理分析 linux内核下&#xff0c;rapidio网络系统建立的过程(枚举 和 发现)_linux rapidio-CSDN博客 linux内核下&#xff0c;(rapidio)T…...

从GPT-4到GPT-4o:人工智能的进化与革命

从GPT-4到GPT-4o&#xff1a;人工智能的进化与革命 近期&#xff0c;OpenAI推出了最新版本的人工智能模型——GPT-4o&#xff0c;引发了广泛的关注和讨论。在这篇文章中&#xff0c;我们将对GPT-4o进行全面评价&#xff0c;包括与前一版本GPT-4的对比分析&#xff0c;GPT-4o的…...

【Java】/*抽象类和接口*/

目录 一、抽象类和抽象方法 1.1 概念 1.2 特性 1.3 作用 二、接口 2.1 概念及定义 2.2 特性 2.3 实例&#xff1a;笔记本电脑 2.4 一个类可以实现多个接口 2.5 一个接口可以继承多个接口 2.6 Comparable接口 2.7 Comparator接口 2.8 Cloneable接口 2.9 浅拷贝和深…...

TCP/IP协议介绍——三次握手四次挥手

TCP/IP&#xff08;Transmission Control Protocol/Internet Protocol&#xff0c;传输控制协议/网际协议&#xff09;是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议&#xff0c;而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议…...

[C++]基于C++opencv结合vibe和sort tracker实现高空抛物实时检测

【vibe算法介绍】 ViBe算法是一种高效的像素级视频背景建模和前景检测算法。以下是对该算法的详细介绍&#xff1a; 一、算法原理 ViBe算法的核心思想是通过为每个像素点存储一个样本集&#xff0c;利用该样本集与当前像素值进行比较&#xff0c;从而判断该像素是否属于背景…...

Apache Doris 基础 -- 数据表设计(模式更改)

用户可以通过schema Change操作修改现有表的模式。表的模式主要包括对列的修改和对索引的修改。这里我们主要介绍与列相关的Scheme更改。对于与索引相关的更改&#xff0c;可以查看数据表设计/表索引&#xff0c;查看每个索引的更改方法。 1、术语 基本表&#xff08;Base Ta…...

【机器学习】【遗传算法】【项目实战】药品分拣的优化策略【附Python源码】

仅供学习、参考使用 一、遗传算法简介 遗传算法&#xff08;Genetic Algorithm, GA&#xff09;是机器学习领域中常见的一类算法&#xff0c;其基本思想可以用下述流程图简要表示&#xff1a; &#xff08;图参考论文&#xff1a;Optimization of Worker Scheduling at Logi…...

电子电气架构 ---车载安全防火墙

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…...

解决selenium加载网页过慢影响程序运行时间的问题

在用selenium爬取动态加载网页时&#xff0c;发现网页内容都全部加载完了&#xff0c;但是页面还在转圈&#xff0c;并且获取页面内容的代码也没有执行&#xff0c;后面了解到selenium元素操作等方法是需要等待页面所有元素完全加载完成后才开始执行的&#xff0c;所以在页面未…...

何为云防护?有何作用

云防护又称云防御。随着Internet互联网络带宽的增加和多种DDOS 黑客工具的不断发布&#xff0c;云计算越演越热&#xff0c;DDOS拒绝服务攻击的实施越来越容易&#xff0c;DDOS攻击事件正在成上升趋势。出于商业竞争、打击报复和网络敲诈等多种因素&#xff0c;导致很多IDC 托管…...

2024050402-重学 Java 设计模式《实战责任链模式》

重学 Java 设计模式&#xff1a;实战责任链模式「模拟618电商大促期间&#xff0c;项目上线流程多级负责人审批场景」 一、前言 场地和场景的重要性 射击&#x1f3f9;需要去靶场学习、滑雪&#x1f3c2;需要去雪场体验、开车&#x1f697;需要能上路实践&#xff0c;而编程…...

centos7安装字体

1.安装命令 yum install fontconfig #字体库命令 yum install mkfontscale #更新字体命令2.安装字体&#xff08;注意权限问题&#xff09; 进入目录 /usr/share/fonts &#xff0c;该目录是 centos7 字体库的默认安装目录。在该目录下创建一个文件夹 ekp &#xff08;名字…...

Llama模型家族之使用 ReFT技术对 Llama-3 进行微调(三)为 ReFT 微调准备模型及数据集

LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;一&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;二&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;三&#xff09; 基于 LlaMA…...

学习Canvas过程中2D的方法、注释及感悟一(通俗易懂)

1.了解Canvas&#xff1a; Canvas是前端一个很重要的知识点&#xff0c;<canvas>标签用于创建画布绘制图形&#xff0c;通过JavaScript进行操作。它为开发者提供一个动态绘制图形的区域&#xff0c;用于创建图标、游戏动画、图像处理等。 对于能够熟练使用Canvas的开发者…...

《TCP/IP网络编程》(第十三章)多种I/O函数(2)

使用readv和writev函数可以提高数据通信的效率&#xff0c;它们的功能可以概括为**“对数据进行整合传输及发送”**。 即使用writev函数可以将分散在多个缓冲中的数据一并发送&#xff0c;使用readv函数可以由多个缓冲分别接受&#xff0c;所以适当使用他们可以减少I/O函数的调…...

Java集合汇总

Java中的集合框架是Java语言的核心部分&#xff0c;提供了强大的数据结构来存储和操作对象集合。集合框架位于java.util包中&#xff0c;主要可以分为两大类&#xff1a;Collection&#xff08;单列集合&#xff09;和Map&#xff08;双列集合&#xff09;。下面是对它们的总结…...

度小满金融大模型的应用创新

XuanYuan/README.md at main Duxiaoman-DI/XuanYuan GitHub...

Android WebView上传文件/自定义弹窗技术,附件的解决方案

安卓内核开发 其实是Android的webview默认是不支持<input type"file"/>文件上传的。现在的前端页面需要处理的是&#xff1a; 权限 文件路径AndroidManifest.xml <uses-permission android:name"android.permission.WRITE_EXTERNAL_STORAGE"/&g…...

selenium 输入框、按钮,输入点击,获取元素属性等简单例子

元素操作 nput框 输入send_keys&#xff0c; input框 清除clear()&#xff0c; 按钮 点击click() 按钮 提交submit() 获取元素 tag_name、 class属性值、 坐标尺寸 """ input框 输入1次&#xff0c;再追加输入一次&#xff0c; 清除&#xff0c; 再重新输入&…...

结构体构造函数

【知识点&#xff1a;结构体构造函数】下面两段代码等价。 &#xff08;1&#xff09;结构体构造函数写法 struct LinkNode {int data;LinkNode* next;LinkNode(int x):data(x),next(NULL) {} }; LinkNode* Lnew LinkNode(123); &#xff08;2&#xff09;非结构体构造函数写…...

基于单片机的电子万年历设计

摘要: 本设计以 AT89C51 单片机为主控器,使用 DS1302 时钟芯片、DS18B20 温度芯片、LCD1602 显示模块,利用Proteus 仿真软件和 Keil 编译软件进行了基于单片机的电子万年历仿真,设计的万年历可以在液晶上显示时间,同时还具有时间校准、温度显示等功能。 关键词 :单片机…...

大厂真实面试题(一)

滴滴大数据sql 取出累计值与1000差值最小的记录 1.题目 已知有表t_cost_detail包含id和money两列,id为自增,请累加计算money值,并求出累加值与1000差值最小的记录。 2.分析 本题主要是想找到累加值域1000差距最小的记录,也就是我们要对上述按照id进行排序并且累加,并…...

Docker搭建ELKF日志分析系统

Docker搭建ELKF日志分析系统 文章目录 Docker搭建ELKF日志分析系统资源列表基础环境一、系统环境准备1.1、创建所需的映射目录1.2、修改系统参数1.3、单击创建elk-kgc网络桥接 二、基于Dockerfile构建Elasticsearch镜像2.1、创建Elasticsearch工作目录2.2、上传资源到指定工作路…...

把系统引导做到U盘,实现插上U盘才能开机

前言 有个小伙伴提出了这样一个问题&#xff1a;能不能把U盘制作成电脑开机的钥匙&#xff1f; 小白稍微思考了一下&#xff0c;便做了这样一个回复&#xff1a;可以。 至于为什么要思考一下&#xff0c;这样会显得我有认真思考他提出的问题。 Windows7或以上系统均支持UEF…...

【计算机网络基础知识】

首先举一个生活化的例子&#xff0c;当你和朋友打电话时&#xff0c;你可能会使用三次握手和四次挥手的过程进行类比&#xff1a; 三次握手&#xff08;Three-Way Handshake&#xff09;&#xff1a; 你打电话给朋友&#xff1a;你首先拨打你朋友的电话号码并等待他接听。这就…...

做网站基础教程/最好的网络营销软件

东莞数控机床上加工模具 编程时&#xff0c;应该遵守编程的工艺流程&#xff0c;否则极容易出现错误。首先需要分析图纸、编写 工艺卡等&#xff0c;接着需要编写模具的加工程序&#xff0c;然后将程序输入到数控机床&#xff0c;最后进行程序检 验和切试。 &#xff08;1&am…...

网站设计方案和技巧/网站seo啥意思

SaltStack 安装SaltStack PillarSaltStack GrainsSaltStack salt 命令SaltStack salt-key 命令SaltStack salt-run 命令SaltStack salt-ssh 命令SaltStack 批量安装软件SaltStack 批量分发文件SaltStack 批量分发目录SaltStack 批量执行脚本SaltStack 批量管理任务计划SaltStac…...

专业网站建设行业现状/微信引流被加软件

在开发我的网页时,我遇到了使用HTML5的getUserMedia的一些困难.这是我第一次尝试实现此功能来录制用户音频输入. Flash不是此项目的选项,因为它也必须在移动设备上使用.我来这里看看是否有人有经验并知道如何用getUserMedia实现HTML5以记录用户麦克风一段时间(用PHP中的会话完成…...

中国旅游电子商务网站建设情况/seo少女

攻防世界 WEB 新手练习区 题目解答 浏览器&#xff1a;Firefox(火狐浏览器) 文章目录001 view source002 robots003 backup004 cookie005 disabled_button006 weak_auth001 view source 难度系数&#xff1a; 1.0 题目来源&#xff1a; Cyberpeace-n3k0 题目描述&#xff1a; X…...

深圳设计公司排名深圳市广告公司/青岛seo博客

主进程和渲染器进程&#xff1a; ackage.json 的 main 脚本的进程为 主进程在主进程中运行的脚本通过创建 web 页面来展示用户界面 一个 Electron 应用总是有且只有一个主进程。 由于 electron 使用了 Chromium&#xff08;谷歌浏览器&#xff09;来展示 web 页面&#xff0c;所…...

智慧城市网站建设/荆门网络推广

我在tomcat中通过JDBC使用数据库连接 . 我们的环境是Tomcat 7 JDK 8和Oracle 12c .由于我只能通过TCPS连接到Oracle数据库(我们使用的是Oracle的钱包)&#xff0c;因此我必须修改当前的Tomcat server.xml以创建与Oracle的JDBC连接 . 我更新的配置代码段initialSize"10&quo…...