容器相关笔记
目录
1.容器
1.什么是容器
2.java中的容器
3.容器里存放的是引用数据类型(存对象的地址,不是对象本身),不能存基本数据类型
4.容器存放的两种格式
5.容器类所在的包
6.容器的分类
1.Collection,存放单一的类型
1.List:有序,可重复,存入的数据有下标
1.ArrayList(非线程安全,线程不安全发生在数组扩容时):
1.底层实现
2.构造方法:
2.LinkedList():
1.底层实现
2.构造方法
3.ArrayList和LinkedList拥有相同的方法
2.Set:无序,不可重复(重复时只保留最后存入的一次对象(覆盖原来的))
1.HashSet:
1.底层实现
2.构造方法
3.HashSet的方法
2.TreeSet(类似于HashSet,但是再进行遍历的时候会进行自动排序):
1.底层实现
2.TreeSet存储数据
3.TreeSet的方法
3.LinkedHashSet:的底层实现就是在Map上加了个链表 (区别就是有序了,但是这个有序是针对存入取出有序,但是仍然不重复)
3.collection总结代码
2.Map,存放键值对的类型
1.底层实现
2.HashMap
1.容器
1.什么是容器
容器就是存放对象的集合
2.java中的容器
容器就是一系列的类或接口,用来存储一系列对象的地址
3.容器里存放的是引用数据类型(存对象的地址,不是对象本身),不能存基本数据类型
4.容器存放的两种格式
1.单一的类型:直接存对象地址
2.键值对:存入关键字和对应的value
5.容器类所在的包
java.util包中,所以引入容器的时候引入的是java.util.容器类名
6.容器的分类
1.Collection,存放单一的类型
1.Collection下有三个接口,Set,List,Queue
2.有序是指存入的顺序和取出的顺序
3.Collection里面的方法
以下表格基于Collection list = new ArrayList();
为什么要用容器而不直接使用数组来存储。数组存储单一的类型而且数组需要规定长度,但是容器不需要而且可以在一个容器中存储多种不同的数据类型
名 形参 返回值 性质 例子 作用 add 要存入的对象 非静态 list.add("asd") 插入一个元素 iterator "Iterator对象" 非静态 Iterator i = list.iterator 获取迭代器对象 size int 非静态 int a = list.size(); 获取容器长度 isEmpty boolean 非静态 boolean b = list.isEmpty(); 判断容器是否为空 contains 非静态 对象 boolean String temp = new String("zjh");
System.out.println("contains:\t"+list.contains(temp));
看看容器中是否有temp对象 remove 非静态 对象 list.remove(”asd“); 按照对象内容指定删除
迭代器的作用是获取容器中的对象
迭代器就是用来获取一个有个的对象的
所以想要拿出来容器的数据就要用Collection父类的iterator方法获取到Iterator迭代器,然后使用方法hasNext来判断后面还有没有对象了,如果有就把通过next方法对象给拿出来
public class Run {public static void main(String[] args) {Collection list = new ArrayList();list.add("1234567");list.add("zjh");list.add(1234);Iterator it= list.iterator();//通过方法获取迭代器接口实现类的对象//迭代器主要有两个方法,一个是hasNext,一个是nextwhile(it.hasNext()){Object o = it.next();//把对象拿出来System.out.println(o.toString());//从这个出来的顺序可见是先进先出,也就是说ArrayList也具有对列的特性}} }
1.List:有序,可重复,存入的数据有下标
1.List是一个继承了Collection接口的接口,拥有Collection的所有方法
2.有两个常用的实现类:
1.ArrayList(非线程安全,线程不安全发生在数组扩容时):
1.底层实现
底层实现就是个数组,适合查询等操作较多的集合
2.构造方法:
分为有参和无参两个版本:
无参的构造方法默认长度为10
有参的构造方法可以指定默认长度
扩容的时候每次增加原长度的1.5倍
2.LinkedList():
1.底层实现
底层实现就是双向链表,适合插入删除等操作较多的集合
2.构造方法
空构造方法,构造空链表
有参构造方法传入一ArrayList,ArrayList转LinkedList
3.ArrayList和LinkedList拥有相同的方法
remove,contains方法比较都是用equals方法比较来判断是否删除和是否有该元素的,除了上面都有的方法之外还有这几个方法
方法名 | 性质 | 形参 | 返回值 | 例子 | 作用 |
get | 非静态 | int(下标) | 对象 | Object o = list.get(i); | 获取在容器中下标为i的对象 |
contains | 非静态 | 对象 | boolean | String temp = new String("zjh"); System.out.println("contains:\t"+list.contains(temp)); | 看看容器中是否有temp对象 |
remove | 非静态 | int(下标) | list.remove(3); | 按照下标或者对象内容指定删除 | |
对象 | list.remove("emm..."); |
2.Set:无序,不可重复(重复时只保留最后存入的一次对象(覆盖原来的))
1.也是个继承Collect的接口
2.三个实现类
1.HashSet:
1.底层实现
底层实现是Map
2.构造方法
默认容量是16,哈希桶是0.75,意思是当容器里元素达到容量百分之七十五之后就开始扩容
无参构造方法形成的是没有元素的集合
有参构造方法可以传递进去一个ArrayList
有参构造方法也可以传入进去一个HashSet的大小,指定的值最好是二的幂次,因为源码在扩容的时候用的是位移扩容
3.HashSet的方法
方法名 | 性质 | 形参 | 返回值 | 注意 | 作用 |
remove | 非静态 | 对象 | 如果是自己定义的对象记得重写equals方法 这次由于无序,所以没有根据下标删除了 | 删除一个元素 | |
clear | 非静态 | 删除HashSet里面所有的元素 |
2.TreeSet(类似于HashSet,但是再进行遍历的时候会进行自动排序):
TreeSet比较特殊,使用的时候不使用多态,而是多数调用它独有的方法,所以定义引用的时候不用Set而用TreeSet
1.底层实现
底层实现是二叉树
2.TreeSet存储数据
1.TreeSet在存储数据的时候要求数据的类型需要一致,否则会在运行时报异常ClassCastException,
2.在TreeSet存储数据后会自动按照自平衡二叉树的方式来对这些对象进行排序
3.如何对于自定义的数据进行排序
由于TreeSet会自动进行存入数据的排序,调用的是对象的compareTo方法,所以自定义的类需要实现Comparable接口并且重写他的抽象方法:compareTo(),
//compareTo方法在重写的时候由于重写访问权限修饰符不能更小所以就是public
public int compareTo(Object o){//逻辑结构:如果对象比传入进来的对象小就返回一个负值,大就正值,等就是0
}
4.自定义类型存入TreeSet
//下列是自定义类型存入TreeSet
public class Run {public static void main(String[] args){TreeSet ts1 = new TreeSet();ts1.add(new Person(14));ts1.add(new Person(12));ts1.add(new Person(14));ts1.add(new Person(15));for(Object o : ts1){System.out.print(o+"\t");}//如果要打印记得要重写equals方法System.out.println("\n");}
}public class Person implements Comparable{private int age;public Person(){}public Person(int age){this.age = age;}public int getAge(){return age;}public void set(int age){this.age = age;}@Overridepublic int compareTo(Object o){//重写方法的时候如果原来的小,就返回负数,如果原来的大就返回正值Person p = (Person) o;return this.age-p.age;}@Overridepublic String toString(){return String.valueOf(age);}
}
3.TreeSet的方法
名字 | 形参 | 返回值 | 性质 | 作用 | 例子 |
first | 存储的对象 | 非静态 | 获取第一个(最小的)对象 | System.out.println("自定义存入TreeSet后的第一个元素:\t"+ts1.first()); | |
last | 存储的对象 | 非静态 | 获取最后一个(最大的)对象 | System.out.println("自定义存入TreeSet后的最后一个元素\t:"+ts1.last()); |
TreeSet ts1 = new TreeSet();ts1.add(new Person(14));ts1.add(new Person(12));ts1.add(new Person(14));ts1.add(new Person(15));ts1.add(new Person(16));ts1.add(new Person(17));ts1.add(new Person(19));System.out.print("自定义数据存入TreeSet\t" );for(Object o : ts1){System.out.print(o+"\t");}System.out.println("\n自定义存入TreeSet后的第一个元素:\t"+ts1.first()+"\t最后一个元素"+ts1.last());
运行结果:
自定义数据存入TreeSet 12 14 15 16 17 19
自定义存入TreeSet后的第一个元素: 12 最后一个元素19
3.LinkedHashSet:的底层实现就是在Map上加了个链表 (区别就是有序了,但是这个有序是针对存入取出有序,但是仍然不重复)
3.collection总结代码
public class Person implements Comparable{private int age;public Person(){}public Person(int age){this.age = age;}public int getAge(){return age;}public void set(int age){this.age = age;}@Overridepublic int compareTo(Object o){//重写方法的时候如果原来的小,就返回负数,如果原来的大就返回正值Person p = (Person) o;return this.age-p.age;}@Overridepublic String toString(){return String.valueOf(age);}
}public class Run {public static void main(String[] args) {collection();}public static void collection(){Collection list = new ArrayList();list.add("1234567");list.add("zjh");list.add(1234);Iterator it= list.iterator();//通过方法获取迭代器接口实现类的对象//迭代器主要有两个方法,一个是hasNext,一个是nextwhile(it.hasNext()){//看看迭代器是否有下一个Object o = it.next();//把对象拿出来。且让迭代器向下指一个元素System.out.println(o.toString());//从这个出来的顺序可见是先进先出,也就是说ArrayList也具有对列的特性}System.out.println("容器长度为:\t"+list.size());System.out.println("容器为空:\t"+list.isEmpty());//ArrayList部分List a = new ArrayList();//add的重载默认是尾插a.add("adw");a.add("adw");//可以体现重复a.add("zjh");a.add(2,199);//相当于就是插入//按常理来讲对容器进行遍历是要通过迭代器的,但是ArrayList有下标,所以此时选择的是直接通过下标来进行遍历//此时就有了get方法来获取对象,get的形参时对象的下标System.out.print("容器内现有元素:\t");for(int i = 0;i<a.size();i++){Object o = a.get(i);System.out.print(o+"\t");}//contains方法:比较容器当中是否有某个对象//判断是否有这个对象的时候调用的这个对象的equals方法//在添加对象进入容器的时候要把这个对象的equals方法重写String temp = new String("zjh");System.out.println("\ncontains:\t"+a.contains(temp));//虽然s指向的是字符串对象,字符串对象里面含有字符串的地址,也就是说s指向的地址和容器当中所保存的字符串地址是不同的,但是contains在比较的时候调用了对象的equals方法,所以返回值是true//remove方法System.out.println("删除前容器长度"+a.size());a.remove(2);//删除下标为2的元素,删除某个元素后其余元素会填补回来a.remove("adw");//按照对象删除的时候只删除一遍System.out.println("删除后容器长度"+a.size());System.out.print("容器内剩余的元素:");for(int i = 0;i<a.size();i++){Object o = a.get(i);System.out.print(o+"\t");}System.out.println("\n");//LinkedList部分List list1 = new LinkedList(a);Iterator itr = list1.iterator();System.out.print("list1容器里的元素为\t");while(itr.hasNext()){Object o = itr.next();System.out.print(o+"\t");}list1.add("wada");list1.remove("adw");System.out.print("\n删除“adw”,插入“wada之后还剩”"+list1.size()+"个元素,分别是\t");for(int i = 0;i<list1.size();i++){System.out.print(list1.get(i)+"\t");}//也可以直接使用增强型for循环
// for(Object o :list1){
// System.out.println(o);
// }System.out.println("\n");//Set//HashSet部分Set s=new HashSet();s.add("牛马");s.add("sad");s.add(new String("sad"));//此处说明了和contains一样,判断重复与否是根据equals方法的s.add("asd");s.add("asd");System.out.println("HashSet容器长度为:"+s.size()+"体现了Set的不可重复性,如果重复后面的会覆盖前者的数据");System.out.print("s中的元素有:\t");//从打印结果来看就可以知道这个时候是无序的取出for (Object o :s) {System.out.print(o+"\t");}s.clear();System.out.println("\nclear之后的s的长度:\t"+s.size());//TreeSet部分,存储的数据,数据类型必须保持一致TreeSet ts = new TreeSet();//会按照自平衡二叉树的方式对于给定的数据进行排序ts.add(22);ts.add(33);ts.add(453);ts.add(3);ts.add(34);ts.add(231);System.out.print("ts里面的元素为:\t");for(Object o : ts){System.out.print(o+"\t");}System.out.println("\n");//自定义类型的比较需要在自定义的类当中实现Comparable接口并且重写compareTo方法TreeSet ts1 = new TreeSet();ts1.add(new Person(14));ts1.add(new Person(12));ts1.add(new Person(14));ts1.add(new Person(15));ts1.add(new Person(16));ts1.add(new Person(17));ts1.add(new Person(19));System.out.print("自定义数据存入TreeSet\t" );for(Object o : ts1){System.out.print(o+"\t");}System.out.println("\n自定义存入TreeSet后的第一个元素:\t"+ts1.first()+"\t最后一个元素"+ts1.last());}
}
2.Map,存放键值对的类型
1.底层实现
底层实现是数组
通过键值对的形式来存储,根据key值来计算哈希地址,然后把value对象的地址存入计算出来的哈希地址如果遇到了冲突会按照相应的算法进行寻找
2.HashMap
方法
名字 | 性质 | 形参 | 返回值 | 作用 | 注意 |
put | 非静态 | 键值对 | 存入数据 | 前key后value,存入的是地址,key一样会覆盖value | |
get | 非静态 | value值 | 对象 | 取出key值对应的对象 | |
keySet | 非静态 | Set对象 | 取出来所有的key值形成一个Set集合 | ||
remove | 非静态 | key | 删除某个元素 |
相关文章:
容器相关笔记
目录 1.容器 1.什么是容器 2.java中的容器 3.容器里存放的是引用数据类型(存对象的地址,不是对象本身),不能存基本数据类型 4.容器存放的两种格式 5.容器类所在的包 6.容器的分类 1.Collection,存放单一的类型 1.List&…...
cissp 第10章 : 物理安全要求
10.1 站点与设施设计的安全原则 物理控制是安全防护的第一条防线,而人员是最后一道防线。 10.1.1 安全设施计划 安全设施计划描述了组织的安全要求的轮廓, 并且着重强调为了提供安全性所用的方法和机制。 这样的计划通过被称为关键路径分析的过程进行开…...
聊一聊 .NET高级调试 内核模式堆泄露
一:背景 1. 讲故事 前几天有位朋友找到我,说他的机器内存在不断的上涨,但在任务管理器中查不出是哪个进程吃的内存,特别奇怪,截图如下: 在我的分析旅程中都是用户态模式的内存泄漏,像上图中的…...
海外代理IP在游戏中有什么作用?
随着科技的飞速发展,手机和电脑等电子产品已成为互联网连接万物的重要工具,深度融入我们的日常生活,我们借助互联网完成工作、休闲和购物等任务,以求提升生活质量。 不仅如此,网络游戏也是人们心中最爱,它…...
高防ip适合防御网站和游戏类的攻击吗?
作为站长,要学会并承受得住网站外来攻击的压力,尤其是所属为 DDoS 攻击高发行业的网站类业务及游戏行业,是很容易被竞争对手或者一些伪黑客爱好者盯上的。 加上,有些站长并没有提前了解,就盲目进军了这两个行业&…...
HTML5和JS实现明媚月色效果
HTML5和JS实现明媚月色效果 先给出效果图: 源码如下: <!DOCTYPE html> <html> <head><title>明媚月光效果</title><style>body {margin: 0;overflow: hidden;background-color: #000; /* 添加一个深色背景以便看到…...
Django5+DRF序列化
概述 本教程将介绍如何创建一个简单的粘贴板代码高亮 Web API。在此过程中,它将介绍构成 REST 框架的各种组件,让你全面了解所有组件是如何组合在一起的。 本教程相当深入,因此在开始学习之前,你可能需要先吃一块饼干࿰…...
什么是编译程序和解释程序
一、编译程序 1、编译器接收源代码作为输入,它会一次性地将整个源代码程序转换成目标代码(通常是机器语言或汇编语言),这个过程包括词法分析、语法分析、语义分析、优化以及最终的目标代码生成。2、编译后的目标代码是一个独立的…...
文档审阅批注的合并和对比
#创作灵感# 最近在改论文,Feedback返回的时候,把之前的批注都删了,这就增加了工作量,看起来不方便,所以就需要将删掉的批注全部复原。 那在原来的文档重新在修改一遍,工作量还是很大的,所以这里…...
广义零样本学习综述的笔记
1 Title A Review of Generalized Zero-Shot Learning Methods(Farhad Pourpanah; Moloud Abdar; Yuxuan Luo; Xinlei Zhou; Ran Wang; Chee Peng Lim)【IEEE Transactions on Pattern Analysis and Machine Intelligence 2022】 2 conclusion Generali…...
java每日一题——输出9x9乘法表(答案及编程思路)
前言: 打好基础,daydayup! 题目:输出下图9x9乘法表 编程思路:java只能输出行,不能输出列,所以考虑好每一行输出的内容即可 public class demo {public static void main(String[] args) {for (int i 1; i…...
Android 车联网——基础简介(一)
传统的车载功能单一,无太多娱乐性,而随着智能化时代的发展,车载系统也被赋予了在系统中预装 Android 应用的能力,基于Android平台的车载信息娱乐系统 —— Android AutoMotive 应运而生。 一、AutoMotive简介 Android Automotive OS 车载操作系统,是一个基本 Android 平台…...
自动驾驶货车编队行驶系统功能规范
货车编队行驶功能规范 Truck Platooning Functional Specification 目录 1 概述... 7 1.1 目的... 7 1.2 范围... 7 1.3 术语及缩写... 7 1.4 参考法规标准... 8 2 功能规范... 9 2.1 功能描述... 9 2.1.1 功能用途…...
javafx
JavaFX JavaFX简介 JavaFX是一个用于创建富客户端应用程序的图形用户界面(GUI)框架。它是Java平台的一部分,从Java 8开始成为Java的标准库。 JavaFX提供了丰富的图形和多媒体功能,使开发人员能够创建具有吸引力和交互性的应用程…...
玩转贝启科技BQ3588C开源鸿蒙系统开发板 —— 编译构建及此过程中的踩坑填坑(3)
接前一篇文章:玩转贝启科技BQ3588C开源鸿蒙系统开发板 —— 编译构建及此过程中的踩坑填坑(2) 上一篇文章结束时在等待提示的各依赖包下载安装后的编译结果,但是很遗憾,编译并没有最终完成,既未成功也没有失…...
SQL ORDER BY 关键字
ORDER BY 关键字用于对结果集进行排序。 SQL ORDER BY 关键字 ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。 ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。 SQL ORDER BY 语法 SELECT …...
多线程-生产者消费者模型
一、基本信息 1、场景介绍:厨师和吃货的例子,吃货吃桌子上的面条,吃完让厨师做,厨师做完面条放桌子上,让吃货吃,厨师如果发现桌子上有面条,就不做,吃货发现桌子上没有面条就不吃。 …...
解压命令之一 gzip
文章目录 解压命令之一 gzip更多信息 解压命令之一 gzip gzip用于对后缀为gz文件进行解压: $ gzip -d data.gz这个命令将解压examplefile.gz,并且在当前目录下生成一个名为data的解压后的文件。 但特别需要留意的是,这个操作会删除源文件&…...
力扣:438. 找到字符串中所有字母异位词 题解
Problem: 438. 找到字符串中所有字母异位词 438. 找到字符串中所有字母异位词 预备知识解题思路复杂度Code其它细节推荐博客或题目博客题目滑动窗口哈希表 预备知识 此题用到了双指针算法中的滑动窗口思想,以及哈希表的运用。c中是unordered_map。如果对此不了解的u…...
QT 高DPI解决方案
一、根据DPI实现动态调整控件大小(三种方式) 1、QT支持高DPI(针对整个进程中所有的UI) // main函数中 QApplication::setAttribute(Qt::AA_EnableHighDpiScaling)tips:(1)如果不想全局设置&am…...
SLB、DMZ、Nginx、Ingress、Gateway、Kibana和Grafana
SLB、DMZ、Nginx、Ingress、Gateway、Kibana和Grafana虽然有一些相似之处,但是它们的功能和适用场景还是有所不同。 SLB主要用于将大流量的请求分配到多个服务器上进行处理,从而提高系统的可伸缩性和可靠性。它适用于需要处理大流量的应用,如…...
【已解决】Invalid bound statement (not found)
报错讯息 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.casey.mapper.SysRoleMapper.getUserRoleCode at org.apache.ibatis.binding.MapperMethod S q l C o m m a n d . < i n i t > ( M a p p e r M e t h o d . j a v a :…...
汽车信息安全--芯片厂、OEM安全启动汇总(1)
目录 1.芯驰E3安全启动 2.STM32 X-CUBE-SBSFU 3.小米澎湃OS安全启动 4.小结 我在前篇文章里详细记录了车规MCU信息安全设计过程关于网络安全架构的思考过程,从芯片原厂、供应商、OEM等角度思考如何建立起完备的信任链; 不过这思考过程仅仅只是一家之言,因此我又对比了国…...
气膜建筑:舒适、智能、可持续
气膜建筑之所以能够拥有广阔的发展空间,源于其融合了诸多优势特点,使其成为未来建筑领域的前沿趋势。 气膜建筑注重环境可持续性和能源效率。在材料和设计上,它采用可回收材料、提高热保温效果,并积极利用太阳能等可再生能源&…...
【C语言】一种状态超时阻塞循环查询的办法
【C语言】一种状态超时阻塞循环查询的办法 文章目录 【C语言】一种状态超时阻塞循环查询的办法1.方法12.方法21.方法1 static void wait_notify_async(notify_type_t notify_type) {static rt_tick_t exit_tick;exit_tick = rt_time_get_msec();lb_int32 notify_success = RT_F…...
【leetcode】力扣热门之回文链表【简单难度】
题目描述 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 用例 输入:head [1,2,2,1] 输出:true 输入:head [1,2] 输出:f…...
【MySQL】ALL函数的巧用 以及 排序(order by)巧用 sum(条件表达式) 语法
力扣题 1、题目地址 578. 查询回答率最高的问题 2、模拟表 SurveyLog 表: Column NameTypeidintactionENUMquestion_idintanswer_idintq_numinttimestampint 这张表可能包含重复项。action 是一个 ENUM(category) 数据,可以是 “show”、“answer”…...
Debezium发布历史49
原文地址: https://debezium.io/blog/2019/02/19/reliable-microservices-data-exchange-with-the-outbox-pattern/ 欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯. 使用发件箱模式进行可靠的微服务数…...
数据结构——队列(Queue)
目录 1.队列的介绍 2.队列工程 2.1 队列的定义 2.1.1 数组实现队列 2.1.2 单链表实现队列 2.2 队列的函数接口 2.2.1 队列的初始化 2.2.2 队列的数据插入(入队) 2.2.3 队列的数据删除(出队) 2.2.4 取队头数据 2.2.5 取队…...
uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -后端架构搭建
锋哥原创的uniapp微信小程序投票系统实战: uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…...
网页制作与网站建设宝典 第2版/seo优化网站词
功能 : 无需索引来访问数组元素和集合元素 String [] bookls {"你好", "黑哥", "笑一个呀"}; for(String book : books){System.out.println(book); }其中book将会自动跌送每个数组元素...
无锡网站建设哪家做得比较好/上海培训机构
一.Session Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果…...
酷万网站建设/关键词竞价广告
亲测验证适用于5.7.10 1. 获得二进制文件 wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.10-linux-glibc2.5-x86_64.tar.gz 2. 加压到 /usr/local/mysql 目录(或者解压到当前目录然后做软链接到/usr/local/mysql)mkdir /usr/local/mysqltar -xvf mysql-5.7.10-linu…...
做网站外包公司/优化落实疫情防控
1.题目描述: 2.算法分析: 首先,要过滤掉多余的空格,我们如果一个一个删除空格是一件很麻烦的事,不妨我们可以从每个单词的后面加一个空格,这样是不是会比把多余空格删除好一些呢。怎么做? 一个…...
动易sf做网站多少钱/seo关键词优化外包
Flink Standalone HA https://ci.apache.org/projects/flink/flink-docs-release-1.13/docs/deployment/ha/zookeeper_ha/...
php如何做动态网站建设/电商培训课程
sliceappend前言问题初探思考解析Go中没有引用传递前言 有关slice底层点击下面博文阅读 Golang底层原理剖析之slice类型与扩容机制 问题初探 package mainimport "fmt"func main() {s1 : []int{1, 2}s2 : s1s2 append(s2, 3)Test1(s1)Test1(s2)fmt.Println(s1, s…...