【Java小白图文教程】-05-数组和排序算法详解
精品专题:
01.《C语言从不挂科到高绩点》课程详细笔记
https://blog.csdn.net/yueyehuguang/category_12753294.html?spm=1001.2014.3001.5482
02. 《SpringBoot详细教程》课程详细笔记
https://blog.csdn.net/yueyehuguang/category_12789841.html?spm=1001.2014.3001.5482
03.《SpringBoot电脑商城项目》课程详细笔记
https://blog.csdn.net/yueyehuguang/category_12752883.html?spm=1001.2014.3001.5482
04.《VUE3.0 核心教程》课程详细笔记
https://blog.csdn.net/yueyehuguang/category_12769996.html?spm=1001.2014.3001.5482
================================
|| 持续分享系列教程,关注一下不迷路 ||
|| 视频教程:墨轩大楼 ||
================================
1. 容器的概述
如果需要完成一个学生成绩管理系统,有50名学生,需要计算50名学生的平均成绩,目前为止,可能考虑到的解决方法:定义50个变量分别表示每个 学生的成绩,然后将50个变量全部累加,除以总人数。针对于以上问题的解决方案显示是不合适的,因此需要有一个能够存储50个相同数据类型的容器
容器:是一种存储结构,现实生活中的容器:杯子,教室,公交车。。。
有关容器的概念关联一门课程:数据结构(数据存储的一种表现方式)
其中数据结构中最为简单的就是数组
2.数组入门
2.1 概述
数组是一种容器,用来存储一组相同数据类型的容器,是一种引用数据类型,从数据结构上来说数组是一种典型的线性结构
2.2 数组声明的语法
数据类型[] 数组名称
int a;//用来存储一个整形数据
//数组的声明
int[] arr;//用来存储一组整形数据
int arr2[];//用来存储一组整形数据(不推荐)double[] brr;
String[] strs;
2.3 数组的初始化
任何的局部变量再未初始化时是无法使用的,数组同理,也必须初始化之后才能使用,数组的初始化分为两种方式
- 静态初始化
- 动态初始化
2.3.1. 静态初始化
静态初始化指的是再声明数组的同时为数组指定元素:
int[] b = {1,2,3,4};
{}之间每个值都是数组中的一个元素,中间用逗号隔开(标点符号为英文输入法下的符号)
注意事项
以下声明方式是错误的
int[] arr;//用来存储一组整形数据
arr = {1,2,3,4};
以上的写法需要改为
int[] arr;//用来存储一组整形数据
arr = new int[]{1,2,3,4};
2.3.2 动态初始化
动态初始化即再声明数组的时候只指定数组的容量(空间大小),但是不为数组指定具体的每一个元素
int[] c = new int[4];
//int[] d = new int[];//编译错误,使用动态初始化的时候必须给让容量
以上的写法,表示定义了一个容量为4的数组,数组中的每一个元素只能是整数
动态初始化一定要指定容量,否则编译错误
特别注意:数组一旦声明,他的容量是不可改变的
2.4 获取数组中的元素
2.4.1 数组的索引
数组中的每一个元素都有一个独一无二的索引(下标)位置,索引从0开始; 如果需要获取数组中的指定元素或者为数组中的指定元素赋值,都必须通过索引来完成,任何一个数组都有一个length(数组的元素的个数,也叫做数组的长度)属性
获取元素
通过数组名称加上对应位置的索引
数组名[索引]
//1.静态初始化
int[] b = {1,2,3,4};//2.动态初始化
int[] c = new int[4];int x = c[1];
int y = b[1];
System.out.println(x);
System.out.println(y);
在获取数组中元素的时候要注意索引的范围:0~ length -1,数组中元素的个数为length,最大的索引值为length-1,如果使用了一个超出范围的索引去获取元素,那么语法上是不会有问题,但是在运行过程中会出现java.lang.ArrayIndexOutOfBoundsException 异常(该异常表示数组下标越界异常)
数组元素赋值
使用数组索引除了可以获取元素之外,也可以通过索引为数组的指定位置赋值
//数组c的第三个元素赋值为100
c[2] = 100;
System.out.println(c[2]);
注意:数组元素的赋值过程中,你所赋值的元素一定要和数组中所存放的数据类型匹配
2.4.2 数组的遍历
在实际开发过程中经常需要将数组中的所有元素都获取到,如果我们单独的使用每一个元素的索引一个个 的去获取这样效率太低;已知数组的索引从0开始,并且数组的长度是有length属性的,因此使用循环语句就能轻松的实现对数组进行遍历
String[] strs = {"强哥","苍#null","翠花","凤姐"};for (int i = 0; i < strs.length; i++) {System.out.println(strs[i]);}
int i = 0;
while(i < strs.length){System.out.println(strs[i]);i++;
}int x = 0;
do{System.out.println(strs[x]);x++;
}while(x<strs.length);int[] arrs = {1,2,5,8,10,15,13,20};
//遍历出数组中不是5的倍数的元素
for (int j = 0; j < arrs.length; j++) {if(arrs[j]%5 != 0){System.out.println(arrs[j]);}
}
以上对数组的遍历方式都是使用常规的循环语句解决,在JDK1.5的时候,引进了一种全新的循环方式:增强for循环(forEach循环),语法规则
for(数组中单个元素的数据类型 变量名:需要遍历的数组名){循环体
}
String[] strs = {"强哥","苍#null","翠花","凤姐"};
//这种forEach遍历方式就和索引没有什么直接关系了
for (String name:strs){System.out.println(name);
}
增强for循环的实现原理为:迭代器(类似于栈结构的线性存储结构);元素的获取不需要通过索引完成,而是在使用迭代器的指针(游标),依次往下迭代获取元素
forEach实际上是一种针对迭代器的语法糖技术
2.5 数据拷贝
由于数组存在弊端:数组的长度一旦定义就无法改变;但是对于一些特殊的需求,无法确定数组中元素的具体个数;针对这个问题,解决方案只有一种:初始化一个固定容量的数组,存储元素,一旦存储空间不足,则创建一个更大容量的新数组,将源数组中的元素拷贝到新的数组中,后续的元素向新数组中添加即可。因此以上的问题解决方案的关键在与:组数的拷贝
- 使用传统循环实现数组的拷贝
int[] a = {3,4,5,6};
//{3,4,5,6,7}
//定义一个比原数组容量大一个的新数组
int[] b = new int[a.length+1];
//从原数组中每一个元素取出来赋值到新的数组的对应位置
for (int i = 0; i < a.length; i++) {b[i] = a[i];
}
//将新元素赋值到新数组的最后一个位置
b[b.length-1] = 7;
for (int x:b) {System.out.println(x);
}
- 数组拷贝的方法
//原数组
int[] a = {3,4,5,6};
//新数组
int[] b = new int[7];
/*
参数1:原始数组对象
参数2:原始数组的初始拷贝位置(索引位置)
参数3:目标数组对象
参数4:目标数组的起始位置(索引位置)
参数5:拷贝的元素的个数
*/
System.arraycopy(a,0,b,0,a.length);
b[b.length-1] = 100;
for (int x:b) {System.out.println(x);
}
2.6 数组练习
- 完成一个抽奖系统,要求从一组候选的名单中随机抽取一名幸运儿,表示中奖了,要求可以反复抽取,但是不能抽取到重复的幸运儿。
//自定义一个抽奖候选名单 0 1 2 3 4
String[] names = {"亮亮","佳文","雨立","豪哥","阿虎儿"};
//{"亮亮","佳文","豪哥","阿虎儿"}
//获取总人数
int con = names.length;
Scanner scanner = new Scanner(System.in);
//循环抽奖
while(con>0){System.out.println("按回车键抽取");scanner.nextLine();//获取一个随机索引int index = (int)(Math.random()*con);//获取幸运观众String name = names[index];System.out.println("恭喜你,"+name+"喜提编程题500道!!!");con--;//数组拷贝System.arraycopy(names,index+1,names,index,names.length-index-1);
}
System.out.println("抽奖结束");
- 有一组数组{6,3,4,2,1,9,10,8},按照元素的大小顺序从小到大输出 (排序)
3. 数组的排序
3.1 排序分类
1. 冒泡排序
算法思路:
- 比较相邻的元素,如果第一个比第二个大,就交换位置
- 对每一对相邻的元素做同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素就是最大的元素
- 针对所有的元素重复以上操作,除了最后一个
- 重复盘1~3,直到排序完成
int[] arr = {6,3,4,2,1,9,10,8};
System.out.println("排序前:" + Arrays.toString(arr));for(int j = 1;j<arr.length;j++){//控制比较的轮数for (int i = 0;i<arr.length-j;i++){//每轮儿比较的次数//声明一个变量用作辅助int temp;if(arr[i]>arr[i+1]){//换位置temp = arr[i];arr[i] = arr[i+1];arr[i+1] = temp;}}System.out.println("第"+j+"轮结束:" + Arrays.toString(arr));
}//第一轮比较
/*for (int i = 0;i<arr.length-1;i++){//声明一个变量用作辅助int temp;if(arr[i]>arr[i+1]){//换位置temp = arr[i];arr[i] = arr[i+1];arr[i+1] = temp;}}System.out.println("第一轮结束:" + Arrays.toString(arr));//第二轮for (int i = 0;i<arr.length-2;i++){//声明一个变量用作辅助int temp;if(arr[i]>arr[i+1]){//换位置temp = arr[i];arr[i] = arr[i+1];arr[i+1] = temp;}}System.out.println("第二轮结束:" + Arrays.toString(arr));//第三轮for (int i = 0;i<arr.length-3;i++){//声明一个变量用作辅助int temp;if(arr[i]>arr[i+1]){//换位置temp = arr[i];arr[i] = arr[i+1];arr[i+1] = temp;}}System.out.println("第三轮结束:" + Arrays.toString(arr));*/
2. 插入排序
从第二个元素开始,每次都与前一个元素两两相比,若符合条件就交换位置
int[] arr = {6,3,4,2,1,9,10,8};
System.out.println("排序前:" + Arrays.toString(arr));for(int j=1;j<arr.length;j++){for(int i=j;i>0;i--){int temp;if(arr[i]<arr[i-1]){temp = arr[i];arr[i] = arr[i-1];arr[i-1] = temp;}}System.out.println("第"+j+"轮结束:" + Arrays.toString(arr));
}//第一轮
/*for(int i=1;i>0;i--){int temp;if(arr[i]<arr[i-1]){temp = arr[i];arr[i] = arr[i-1];arr[i-1] = temp;}}System.out.println("第一轮结束:" + Arrays.toString(arr));//第二轮for(int i=2;i>0;i--){int temp;if(arr[i]<arr[i-1]){temp = arr[i];arr[i] = arr[i-1];arr[i-1] = temp;}}System.out.println("第二轮结束:" + Arrays.toString(arr));*/
3. 选择排序
从第一个元素开始和后面的每一个元素做比较,符合条件就交换位置,一直比到最后一个,第二次就是从第二个元素开始和后面的每一个元素作比较,依次类推
int[] arr = {6,3,4,2,1,9,10,8};
System.out.println("排序前:" + Arrays.toString(arr));for(int j=0;j<arr.length-1;j++){for (int i=j;i<arr.length-1;i++){int temp;if(arr[j] > arr[i+1]){temp = arr[j];arr[j] = arr[i+1];arr[i+1] = temp;}}System.out.println("第"+j+"轮结束:" + Arrays.toString(arr));
}/*for (int i=0;i<arr.length-1;i++){int temp;if(arr[0] > arr[i+1]){temp = arr[0];arr[0] = arr[i+1];arr[i+1] = temp;}}System.out.println("第一轮结束:" + Arrays.toString(arr));for (int i=1;i<arr.length-1;i++){int temp;if(arr[1] > arr[i+1]){temp = arr[1];arr[1] = arr[i+1];arr[i+1] = temp;}}System.out.println("第二轮结束:" + Arrays.toString(arr));for (int i=2;i<arr.length-1;i++){int temp;if(arr[2] > arr[i+1]){temp = arr[2];arr[2] = arr[i+1];arr[i+1] = temp;}}System.out.println("第三轮结束:" + Arrays.toString(arr));
*/
4. 归并排序
算法思路: 该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。
1、把长度为n的输入序列分成两个长度为n/2的子序列;
2、对这两个子序列分别采用归并排序;
3、将两个排序好的子序列合并成一个最终的排序序列。
5. 快速排序
算法思路: 通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。
- 从数列中挑出一个元素,称为 “基准”(pivot);
- 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;
- 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。
6. 堆排序
算法思路:
堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。
7. 希尔排序
算法思路:
- 选择一个增量序列t1,t2,…,tk,其中ti>tj,tk=1;
- 按增量序列个数k,对序列进行k 趟排序;
- 每趟排序,根据对应的增量ti,将待排序列分割成若干长度为m 的子序列,分别对各子表进行直接插入排序。仅增量因子为1 时,整个序列作为一个表来处理,表长度即为整个序列的长度
相关文章:
【Java小白图文教程】-05-数组和排序算法详解
精品专题: 01.《C语言从不挂科到高绩点》课程详细笔记 https://blog.csdn.net/yueyehuguang/category_12753294.html?spm1001.2014.3001.5482 02. 《SpringBoot详细教程》课程详细笔记 https://blog.csdn.net/yueyehuguang/category_12789841.html?spm1001.20…...
OpenCV视觉分析之目标跟踪(1)计算密集光流的类DISOpticalFlow的介绍
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 这个类实现了 Dense Inverse Search (DIS) 光流算法。更多关于该算法的细节可以在文献 146中找到。该实现包含了三个预设参数集,以提…...
Lucas带你手撕机器学习——套索回归
好的,下面我将详细介绍套索回归的背景、理论基础、实现细节以及在实践中的应用,同时还会讨论其优缺点和一些常见问题。 套索回归(Lasso Regression) 1. 背景与动机 在机器学习和统计学中,模型的复杂性通常会影响其在…...
面试中的一个基本问题:如何在数据库中存储密码?
面试中的一个基本问题:如何在数据库中存储密码? 在安全面试中,“如何在数据库中存储密码?”是一个基础问题,但反映了应聘者对安全最佳实践的理解。以下是安全存储密码的最佳实践概述。 了解风险 存储密码必须安全&am…...
XML HTTP Request
XML HTTP Request 简介 XMLHttpRequest(XHR)是一个JavaScript对象,它最初由微软设计,并在IE5中引入,用于在后台与服务器交换数据。它允许网页在不重新加载整个页面的情况下更新部分内容,这使得网页能够实现动态更新,大大提高了用户体验。虽然名字中包含“XML”,但XML…...
TLS协议基本原理与Wireshark分析
01背 景 随着车联网的迅猛发展,汽车已经不再是传统的机械交通工具,而是智能化、互联化的移动终端。然而,随之而来的是对车辆通信安全的日益严峻的威胁。在车联网生态系统中,车辆通过无线网络与其他车辆、基础设施以及云端服务进行…...
当遇到 502 错误(Bad Gateway)怎么办
很多安装雷池社区版的时候,配置完成,访问的时候可能会遇到当前问题,如何解决呢? 客户端,浏览器排查 1.刷新页面和清除缓存 首先尝试刷新页面,因为有时候 502 错误可能是由于网络临时波动导致服务器无法连…...
学习记录:js算法(七十五): 加油站
文章目录 加油站思路一思路二思路三思路四思路五 加油站 在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发…...
强心剂!EEMD-MPE-KPCA-LSTM、EEMD-MPE-LSTM、EEMD-PE-LSTM故障识别、诊断
强心剂!EEMD-MPE-KPCA-LSTM、EEMD-MPE-LSTM、EEMD-PE-LSTM故障识别、诊断 目录 强心剂!EEMD-MPE-KPCA-LSTM、EEMD-MPE-LSTM、EEMD-PE-LSTM故障识别、诊断效果一览基本介绍程序设计参考资料 效果一览 基本介绍 EEMD-MPE-KPCA-LSTM(集合经验模态分解-多尺…...
yarn的安装与使用以及与npm的区别(安装过程中可能会遇到的问题)
一、yarn的安装 使用npm就可以进行安装 但是需要注意的一点是yarn的使用和node版本是有关系的必须是16.0以上的版本。 输入以下代码就可以实现yarn的安装 npm install -g yarn 再通过版本号的检查来确定,yarn是否安装成功 yarn -v二、遇到的问题 1、问题描述…...
大数据行业预测
大数据行业预测 编译 李升伟 和所有预测一样,我们必须谨慎对待这些预测,因为其中一些预测可能成不了事实。当然,真正改变游戏规则的创新往往出乎意料,甚至让最警惕的预言家也措手不及。所以,如果在来年发生了一些惊天…...
可能是NextJs(使用ssr、api route)打包成桌面端(nextron、electron、tauri)的最佳解决方式
可能是NextJs(使用ssr、api route)打包成桌面端(nextron、electron、tauri)的最佳解决方式 前言 在我使用nextron(nextelectron)写了一个项目后打包发现nextron等一系列桌面端框架在生产环境是不支持next的ssr也就是api route功能的这就导致我非常难受&…...
二百七十、Kettle——ClickHouse中增量导入清洗数据错误表
一、目的 比如原始数据100条,清洗后,90条正确数据在DWD层清洗表,10条错误数据在DWD层清洗数据错误表,所以清洗数据错误表任务一定要放在清洗表任务之后。 更关键的是,Hive中原本的SQL语句,放在ClickHouse…...
CentOS6升级OpenSSH9.2和OpenSSL3
文章目录 1.说明2.下载地址3.升级OpenSSL4.安装telnet 服务4.1.安装 telnet 服务4.2 关闭防火墙4.2.使用 telnet 连接 5.升级OpenSSH5.1.安装相关命令依赖5.2.备份原 ssh 配置5.3.卸载原有的 OpenSSH5.4.安装 OpenSSH5.5.修改 ssh 配置文件5.6关闭 selinux5.7.重启 OpenSSH 1.说…...
2024 年 MathorCup 数学应用挑战赛——大数据竞赛-赛道 A:台风的分类与预测
2024年MathorCup大数据挑战赛-赛道A初赛--思路https://download.csdn.net/download/qq_52590045/89922904↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓…...
kotlin实现viewpager
说明:kotlin tablayout viewpager adapter实现滑动界面 效果图 step1: package com.example.flushfragmentdemoimport androidx.appcompat.app.AppCompatActivity import android.os.Bundle import androidx.fragment.app.Fragment import androidx.viewpager2.adapter.…...
RabbitMQ最新版本4.0.2在Windows下的安装及使用
RabbitMQ 是一个开源的消息代理和队列服务器,提供可靠的消息传递和队列服务。它支持多种消息协议,包括 AMQP、STOMP、MQTT 等。本文将详细介绍如何在 Windows 系统上安装和使用最新版本的 RabbitMQ 4.0.2。 前言 RabbitMQ 是用 Erlang 语言开发的 AMQP&…...
东方博宜1180 - 数字出现次数
问题描述 有 50 个数( 0∼19),求这 50个数中相同数字出现的最多次数为几次? 输入 50 个数字。 输出 1 个数字(即相同数字出现的最多次数)。 样例 输入 1 10 2 0 15 8 12 7 0 3 15 0 15 18 16 7 17 16 9 …...
LeetCode: 3274. 检查棋盘方格颜色是否相同
一、题目 给你两个字符串 coordinate1 和 coordinate2,代表 8 x 8 国际象棋棋盘上的两个方格的坐标。 以下是棋盘的参考图。 如果这两个方格颜色相同,返回 true,否则返回 false。 坐标总是表示有效的棋盘方格。坐标的格式总是先…...
datax编译并测试
mvn -U clean package assembly:assembly -Dmaven.test.skiptrue 参看:DataX导数的坑_datax插件初始化错误, 该问题通常是由于datax安装错误引起,请联系您的运维解决-CSDN博客 两边表结构先创建好: (base) [rootlnpg bin]# pwd /db/DataX-datax_v20230…...
2-133 基于matlab的粒子群算法PSO优化BP神经网络
基于matlab的粒子群算法PSO优化BP神经网络,BP神经网络算法采用梯度下降算法,以输出误差平方最小为目标,采用误差反向传播,训练网络节点权值和偏置值,得到训练模型。BP神经网络的结构(层数、每层节点个数)较复杂时&…...
复盘秋招22场面试(四)形势重新评估与后续措施
连续好多天睡不着觉,经常晚上起来好几次,到现在还是没offer。之前有个校友在抖音留言说我能收到这么多面试说明简历没问题,这么多一面挂,说明我技术面有问题。确实有一些是kpi面,但是我复盘之后我发现也没有那么多kpi面…...
揭开C++ STL的神秘面纱之string:提升编程效率的秘密武器
目录 🚀0.前言 🚈1.string 构造函数 🚝1.1string构造函数 🚝1.2string拷贝构造函数 🚈2.string类的使用 🚝2.1.查询元素个数或空间 返回字符串中有效字符的个数:size lenth 返回字符串目…...
用人工智能,应该怎么掏钱?
人工智能(AI)服务的发展正快速改变企业和开发者的工作方式,不仅提供了强大的数据分析和预测能力,还涵盖了从自然语言处理到图像识别的广泛功能。然而,理解AI服务的支付模式对成本控制和合理资源分配至关重要࿰…...
【Axure高保真原型】移动案例
今天和大家分享多个常用的移动案例的原型模板,包括轮盘滑动控制元件移动、页面按钮控制元件移动、鼠标单击控制元件移动、元件跟随鼠标移动、鼠标拖动控制元件移动、键盘方向键控制元件移动,具体效果可以点击下方视频观看或打开下方预览地址查看哦 【原…...
Bytebase 3.0.0 - AI 助手全面升级
🚀 新功能 SQL 编辑器里的 AI 助手:支持将自然语言转换成 SQL 语句,解释 SQL 代码,还能帮助发现潜在问题。 支持 SQL Server DML 语句一键回滚。支持 MariaDB 的在线大表变更。新的 SQL 审核规则: 要求为 MySQL 设置 …...
php基础:数据类型、常量、字符串
语法补充: 每句必须以;结尾 echo:能输出一个以上的字符串,英文逗号隔开 print:只能输出一个字符串并返回1 1.数据类型 php可以自动识别数据类型。 php有5种数据类型:String(字符串…...
Discuz发布原创AI帖子内容生成:起尔 | AI原创帖子内容生成插件开发定制
Discuz发布原创AI帖子内容生成:起尔 | AI原创帖子内容生成插件开发定制 在当今互联网快速发展的时代,内容创作成为了网站运营、社交媒体管理和个人博客维护不可或缺的一部分。然而,高质量内容的创作往往耗时耗力,特别是对于需要频…...
el-table在某些条件下禁止选中
el-table在某些条件下禁止选中 废话不多说直接上代码 HTML部分 <el-table v-loading"loading" :data"wmsShipmentOrderList" ref"multipleTable" select"handleSelect" selection-change"handleSelectionChange">&…...
深入探讨 HTTP 请求方法:GET、POST、PUT、DELETE 的实用指南
文章目录 引言GET 方法POST 方法PUT 方法DELETE 方法小结适用场景与特点总结最佳实践 在 API 设计中的重要性 引言 HTTP 协议的背景:介绍 HTTP(超文本传输协议)作为互联网的基础协议,自 1991 年发布以来,成为客户端和…...
网站建设推广公司哪家好/手机流畅优化软件
差分进化变异算子我曾经是DOM Mutation Events的忠实拥护者 。 它们为脚本提供了一种独特的方式来监视DOM中的更改,而与导致它们的事件或操作无关。 因此,诸如DOMNodeInserted和DOMAttrModified类的事件将分别响应节点的添加或属性更改而触发。 但是&am…...
wordpress 菜单间隔/代发推广百度首页包收录
1.将字符串的时间转换为时间戳方法:a "2013-10-10 23:40:00"#将其转换为时间数组import timetimeArray time.strptime(a, "%Y-%m-%d %H:%M:%S")#转换为时间戳:timeStamp int(time.mktime(timeArray))timeStamp 13814196002.格式更改如a "2013-10…...
网页打不开无法访问此网站/国外网站排名前十
递归求解,结束条件,f(2)=1 def dfs(n):if n == 1:return 0if n == 2:return 1if n % 2:# 取出、放回 + 平均分配 共两次...
网页设计与网站建设完全学习手册/seo工程师
JS BOM window对象 全局变量和全局方法都归在window上 alert-comfirm-prompt 让alert 、confirm等弹出框上的提示文字实现换行:\n // confirm()// 点击确定返回true,取消返回falsevar btndocument.getElementById("btn");btn.onclickfunctio…...
php可以做网站app吗/如何快速提升网站关键词排名
出现这种错误的原因就是:你入参的数值超过了数据库中定义的类型长度,这时候需要修改数据库中的类型了。...
广告公司广告设计/手机百度关键词优化
1、百万年薪架构师实战视频 关键词“年薪” 2、基于MyCat的MySQL高可用读写分离集群 关键词“mycat” 3、RabbitMQ消息中间件技术精讲 关键词“rabbitmq” 4、Java读源码之Netty深入剖析 关键词“netty” 5、docker前后端分离项目 关键词“docker分离…...