集合java
java集合
集合、数组都是对多个数据进行存储操作的结构,简称Java容器
此时的存储,主要是指内存层面的存储,不涉及持久化的存储(txt,jpg,avi)
Java集合可分为Collection 和 Map 两种体系
1. Collection接口:单列数据,定义了存取一组对象方法的集合
List : 元素有序、可重复的集合 -->动态数组
ArratList、LinkedList、Vector
Set:元素无序、不可重复的集合 -->数学中的集合
HashSet、LinkedHashSet、TreeSet
2.Map接口:双列数据、保存具有映射关系"key-value"的集合 -->高中函数、不能一个key 对应两个value。python中的字典
HashMap、LinkedHashMap、TreeMap、Hashtable、Properties
Collection 接口中的API(都在代码里有注释了)
package Collection;import java.awt.List;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Date;
import org.junit.Test;public class CollectionTest {@Test// 向Collection接口的实现类的对象中添加数据obj时,要求obj所在类重写equals。否则Obj里面比的是地址public void test1(){Collection coll = new ArrayList();coll.add("AA");coll.add("BB");coll.add(123);coll.add(new Date());//size():获取添加的元素的个数System.out.println(coll.size());//addAll() 将coll1中的元素添加到coll中Collection coll1 = new ArrayList();coll1.add("CC");coll1.add(456);coll.addAll(coll1);System.out.println(coll);// clear() 清空集合元素coll.clear();// isEmpty() 判断当前集合是否为空System.out.println(coll.isEmpty());// contains 当前集合中是否包含xx.调用的是equals// 在判断时会调用OBJ对象所在类的equals方法System.out.println(coll.contains("CC"));// containsAll(Collection coll1) 判断形参coll1中的所有元素是否都在当前集合中Collection coll2 = Arrays.asList(123,456);System.out.println(coll.containsAll(coll2));}@Testpublic void test2(){Collection coll = new ArrayList();coll.add("AA");coll.add("BB");coll.add(123);coll.add(new Date());//remove 返回的是布尔值,移除了就返回truecoll.remove("AA"); //可以用一个boolean的值去接收他System.out.println(coll);// removeAll(Collention coll1) 从当前元素中移出cool1中所有元素Collection coll1 = Arrays.asList(123,4567);coll.removeAll(coll1);System.out.println(coll);}@Testpublic void test3(){Collection coll = new ArrayList();coll.add("AA");coll.add("BB");coll.add(123);coll.add(new Date());// // 获取当前集合与coll1的交集,并返回给当前集合
// Collection coll1 = Arrays.asList(123,456,789);
// coll.retainAll(coll1);
// System.out.println(coll);// equlasCollection coll2 = new ArrayList();coll2.add("AA");coll2.add("BB");coll2.add(123);coll2.add(new Date());System.out.println(coll.equals(coll2)); //顺序也要一样噢}@Testpublic void test4(){Collection coll = new ArrayList();coll.add("AA");coll.add("BB");coll.add(123);coll.add(new Date());//hashCode() 返回当前对象的哈希值System.out.println(coll.hashCode());// 集合---->数组,toArray()Object[] arr = coll.toArray();for(int i = 0;i < arr.length ; i++){System.out.println(arr[i]);// 扩展:数组-->集合,调用Arrays类的静态方法asList()
// List<String> list = Arrays.asList(new String[]{"AA","BB","CC"});
// System.out.println(list);
// }}}
Iterator 接口遍历集合元素
package Collection;import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;import org.junit.Test;public class IteratorTest {@Testpublic void test(){Collection coll = new ArrayList();coll.add("AA");coll.add("BB");coll.add(123);coll.add(new Date());Iterator iterator = coll.iterator();//方式一:不推荐for (int i = 0;i < coll.size();i++){System.out.println(iterator.next());}// 方式二:推荐while(iterator.hasNext()){ //还有没有下一个//next指针下移,将下移后的值返回System.out.println(iterator.next());}
// // 错误方法,他每调一次while 就有一个新的迭代器
// while(coll.iterator().hasNext()){
// System.out.println(coll.iterator().next());//死循环
// } }// remove方法,在遍历中删除集合中的元素,不同于集合直接调用remove@Test public void test2(){Collection coll = new ArrayList();coll.add("AA");coll.add("BB");coll.add(123);coll.add(new Date());Iterator iterator = coll.iterator();while(iterator.hasNext()){Object obj = iterator.next();if("AA".equals(obj)){ iterator.remove(); //删除集合中AA字符串}}iterator = coll.iterator();while(iterator.hasNext()){System.out.println(iterator.next());}}
}
JDK5.0新增了foreach循环,用于遍历集合、数组
package Collection;import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;import org.junit.Test;public class ForTest {@Testpublic void test(){Collection coll = new ArrayList();coll.add("AA");coll.add("BB");coll.add(123);coll.add(new Date());// for(集合中元素类型 局部遍历 : 集合对象)// 内部仍然调用迭代器for (Object obj : coll){System.out.println(obj);}}@Testpublic void test2(){int[] arr = new int[]{1,2,3,4};for(int i : arr){System.out.println(i);}}@Testpublic void test3(){String[] arr = new String[]{"MM","MM","MM"};// 方式一 普通for循环 数组内部都会被改变for(int i = 0;i < arr.length;i++){arr[i] = "GG";}// 方式二:增强for循环,数组内部最后还是不会变,是形参变了
// for(String s : arr){
// s = "GG";
// }
// for(String s : arr){System.out.println(s);}}
}
List接口
ArrayList,LinkedList,Vector三者的异同?
三个类都是List接口,存储数据的特点相同,存储有序的,可重复的数组
- ArrayList 作为List的主要实现类,线程不安全的,效率高,底层使用Object[] elementData存储
- LinkedList 底层使用双向链表,对于频繁的插入和删除,使用效率比ArrayList高
- Vector 作为List的古老实现类,线程安全的,效率低,底层使用Object[] elementData存储
ArrayList
jdk7 的情况下
ArrayList List = new ArrayList(); //底层创建了长度为10的Object[]数组
List.add(123);//elementData[0] = new Integer(123);
如果此次的添加导致底层的数组容量不够,则扩容;
扩容为原来的1.5倍,同时需要将原有数组中的数据复制到新的数组中
建议开发中去使用带参的构造器,ArrayList List = new ArrayList(int capacity)
jdk8 中 ArrayList的变化
ArrayList List = new ArrayList();//底层Object[] elementData 初始化为{ },并没有创建长度为10的数组
List.add(123);才创建长度为10的数组,并将123添加到elementData[0]
后续添加与扩容操作与jdk7无异
小结:jdk7中ArrayList对象的创建类似于单例的饿汉式。jdk8中ArrayList对象的创建类似于单例的懒汉式。延迟了数组的创建,节省内存。
LinkedList
LinkedList list = new LinkedList;//内部声明了node类型的first 和last
list.add(123);//将123封装到node中,创建了node对象
Vector
底层创建了长度为10的Object[]数组,在扩容方面,扩容为原来的2倍
List的API
Set接口
Set ---- 无序的、不可重复的
- HashSet :作为Set接口的主要实现类,线程不安全的,可以储存null值
- LinkedSet :作为HashSet的子类,遍历其内部数据时,可以按照添加的数据遍历
- TreeSet:可以按照添加元素的指定属性进行排序
无序性:不等于随机性。存储的数据在底层数组中并非按照数组索引的顺序添加,而是根据数据的Hash值来决定
不可重复性:保证添加的元素按照equals方法判断时,不能返回true,即相同的元素不能添加进来。
添加元素的过程(以HashSet为例
我们向HashSet添加元素a,首先调用元素a的hashcode()方法,计算元素a的哈希值,通过此哈希值算出在HashSet底层存放位置,判断在此位置上是否有其他元素
如果没有其他元素,则直接放入
如果此位置上有其他元素b(或以链表形式存放)则比较a和b的哈希值
如果哈希值不相同,则添加元素a成功
如果哈希值相同,进而需要调用元素a所在类的equals方法,返回true则添加成功
对于情况2和情况3而言,元素a与已经存在的的数据以链表的形式存储
jdk7.0:元素a放到原来的数组中,指向原来的数组
jdk8.0:原来的元素在数组中,指向元素a
对于存放在Set容器中的类,必须要重写hashcode和equals
最好直接Alt + shift + s去生成
LinkedHashSet 在添加数据的同时,每个数据还维护了两个引用,记录此数据前后的数据
优点:对于频繁的遍历操作,LinkHashSet效率比HashSet高
TreeSet
向TreeSet当中添加的数据,要求是相同类的对象
两种排序:自然排序、定制排序
自然排序中,比较两个对象是否相同的标准:compareTo()方法,不再是equals
定制排序:构造TreeSet时带参数,参数为比较的方法compare()方法
Map 接口
Map : 双列数据,存储key - value 对的数据 类似于高中的函数:y = f(x)
|--------HashMap 作为Map的主要实现类,线程不安全的,效率高。可以存储null的key和value
--------------------------LinkedHashMap:保证在遍历map元素时,可以按照添加的顺序实现遍历。
原因:在原有的HashMap底层结构基础上,添加了一对指针,指向前一个和后一个元素。
对于频繁的遍历操作,此类执行效率高于HashMap
|-------- TreeMap:保证按照添加的key - value 进行排序,实现排序遍历。此时考虑key 的自然排序和定制排序。底层使用红黑树
|--------Hashtable 作为古老的实现类 ,线程安全的,效率低。不能存储null的key和value
--------------------------Properties:常用来处理配置文件。key 和 value 都是String 类型
import java.util.HashMap;
import java.util.Map;import org.junit.Test;public class MapTest {@Testpublic void test(){Map map = new HashMap();map.put(null, null);System.out.println(map);}
}
HashMap的底层
数组 + 链表 (jdk7之前)
数组 + 链表 + 红黑树(jdk8.0)
Map 结构理解
map 中的key是无序的、不可重复的,使用Set存储所有的value --> key所在类要重写equals 和 hashCode (以hashMap为例)
map 中的Value无序的、可重复的,用Collection 存储所有的value —> values 所在类要重写equals
一个键值对:key - value 构成了一个Entry对象
Map中的Entry :无序的、不可重复的,使用Set存储所有的Entry
HashMap 底层实现原理 (以jdk7为例说明
HashMap map = new HashMap();
底层创建了一个长度为16的一个一维数组Enter[] table
…
map.put(key1,value1);
首先,调用key1所在类的hashcode()计算key1哈希值,此哈希值经过某种计算以后,得到在Entry数组中的存放位置,如果在此位置上的数据为空,此时的key1 - value1 添加成功 --情况一
如果此位置上不为空,(意味着此位置上存在一个或多个数据(以链表形式)),比较key1与他们的哈希值,
如果key1与他们的哈希值都不相同,则key1 - value1 添加成功 --情况二
如果key1的哈希值与已经存在的某一个数据相同,则比较key1所在类的equals方法
如果equals 返回false ,则key1 - value1 添加成功 --情况三
如果equals 返回ture ,使用value1 去替换相同key的value值
关于情况二和情况三,此时的key1 - value1 的数据以链表的方式存储
在不断的添加过程中,会涉及到扩容问题,默认的扩容方式,扩容为原来容量的二倍,并将原有数据复制
jdk8相对于Jdk7的一些不同
new HashMap() 的时候,没有创建一个长度为16的数组
jdk底层的数组是node类型的数组,而非entry数组
首次调用put()方法时,才创建长度为16的数组
jdk7.0底层结构只有,数组+链表 jdk8.0底层结构是 数组 + 链表 + 红黑树
当数组的某一个索引上的元素以链表存在的数据个数大于8,且当前数组长度>64
此时索引位置上的所有数组改为红黑树存储
源码
LinkedHashMap(了解就行)
能够记录添加元素的前后顺序
对于遍历操作很多的时候,可以考虑使用LinkedHashMap
Map接口中定义的方法
常用方法:
添:put
删:removt
改:put
查询:get
长度:size()
遍历:keySet / values()/enterSet
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;import org.junit.Test;public class MapTest {@Testpublic void test(){Map map = new HashMap();map.put(null, null);System.out.println(map);}@Testpublic void test2(){Map map = new HashMap();map.put("aA",1);map.put("bA",2);map.put("cA",3);// 遍历所有的keySet set = map.keySet();Iterator iterator = set.iterator();while(iterator.hasNext()){System.out.println(iterator.next());}// 遍历所有的values,是Collection 可以直接用它的方法Collection coll = map.values();for(Object obj : coll){System.out.println(obj);}// 遍历所有的key - valueSet entrySet = map.entrySet();Iterator iterator2 = entrySet.iterator();while(iterator2.hasNext()){
// System.out.println(iterator2.next());Object obj = iterator2.next();Map.Entry entry = (Map.Entry) obj;System.out.println(entry.getKey() + "------>" + entry.getValue());//也能这样System.out.println(obj.);}}
}
向TreeMap中添加key - value ,要求key必须是同一类的对象
因为key要进行排序,自然排序、定制排序
Properties
key - value 都是字符串类型
package Collection;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Properties;import org.junit.Test;public class PropertiesTest {@Testpublic void test() throws Exception{Properties pro = new Properties();FileInputStream fis = new FileInputStream("jdbc.properties");pro.load(fis); //加载对应流文件String name = pro.getProperty("name");System.out.println(name);}
}
jdbc.properties 如下
Collections 工具类
Collections是操作Collection 和 Map的工具类
Collections 和 Collection的区别
相关文章:
![](https://img-blog.csdnimg.cn/5f263833e49b4452ad04978e80a724bb.png)
集合java
java集合 集合、数组都是对多个数据进行存储操作的结构,简称Java容器 此时的存储,主要是指内存层面的存储,不涉及持久化的存储(txt,jpg,avi) Java集合可分为Collection 和 Map 两种体系 1. Collection接口࿱…...
![](https://img-blog.csdnimg.cn/b32d76a7a71f4ab091255f69b47435bf.png)
spring boot 应用mybatis
Mybatis入门: Mybatis入门_做测试的喵酱的博客-CSDN博客 目录 一、spring boot 应用mybatis 核心 二、举例: 2.1 背景 2.2 项目结构: 2.3 依赖包 pom 2.4 项目配置文件application.yml 2.5 实例层entity 2.6 mybatis的mapper层 2.7 spring boot…...
![](https://img-blog.csdnimg.cn/1b4f819f78554011b7ea239d33ee3429.jpeg)
Java项目:ssm图书馆管理系统
作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 功能介绍 基于ssm的图书馆管理系统.主要功能包括:图书查询、图书管理、图书编辑、读者管理、图书的借阅与归还以及借还日志记录等。 用户分为…...
![](https://img-blog.csdnimg.cn/img_convert/3f03f9ce3f4c142ada7f620105cf6502.png)
详解设计模式:命令模式
命令模式(Command Pattern)也被称为行动模式(Action Pattern)、事物模式(Transaction Pattern),是在 GoF 23 种设计模式中定义了的行为型模式。 命令模式 是一种数据驱动的设计模式。请求以命令…...
![](https://img-blog.csdnimg.cn/87defaa0bd8b4628a71646f450a4b254.png)
家庭用户无线上网案例(AC通过三层口对AP进行管理)
组网需求 为一个家庭用户使用的网络架构。该家庭消费用户的上网流量大多是低速流量,例如浏览网页、玩游戏、看视频等。家庭成员使用的无线终端主要为手机、PC、电视机等。终端接入的数量正常情况下在10个以内,偶尔有家庭聚会等特殊情况,终端接…...
![](https://www.ngui.cc/images/no-images.jpg)
Spring Boot 2 (七):Spring Boot 如何解决项目启动时初始化资源
在我们实际工作中,总会遇到这样需求,在项目启动的时候需要做一些初始化的操作,比如初始化线程池,提前加载好加密证书等。今天就给大家介绍一个 Spring Boot 神器,专门帮助大家解决项目启动初始化资源操作。 这个神器就是 CommandLineRunner,CommandLineRunner 接口的 Co…...
![](https://img-blog.csdnimg.cn/240e76287544469686f75a4bdbffd83e.png)
用Hopper修改代理软件端口
背景 用代理软件可以访问google,但是端口经常不固定,从缺省1080变成了随机。 前几天其实已经用Hopper 3.0看了一次,但是好像不支持go,所以没反编译成功,这次换了4.0,支持了go。 Hopper与逆向 逆向的目的…...
![](https://www.ngui.cc/images/no-images.jpg)
PKI等介绍
PKI 1、概述 KPI名称:Public Key Infrastructure 公钥基础设施 KPI作用:通过加密技术和数字签名保证信息的安全 KPI组成:公钥加密技术、数字证书、CA、RA 2、信息安全三要素 机密型、完整型、身份验证、操作的不可否认性 3、哪些领域…...
![](https://img-blog.csdnimg.cn/1da18c7148f44e9593752a3e6707b44f.png)
《模拟电子技术》半导体原理部分笔记
《模拟电子技术》笔记绪论第一章 常用半导体器件第二章 基本放大电路绪论 有的人把三极管的出现作为电子技术工业革命的开始标志学习架构:半导体器件(二极管、三极管、场效应晶体管)、基于上述管的放大电路、集成运算放大器、放大电路的频率…...
![](https://www.ngui.cc/images/no-images.jpg)
Python与MySQL交互
第四章 Python与MySQL交互 1、客户端库概述及安装 PyMySQL介绍 PyMySQL是在 Python3.x 版本中用于连接 MySQL 服务器的一个客户端库。 PyMySQL安装: pip install pymysql执行过程如下图: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来…...
![](https://img-blog.csdnimg.cn/48278f406ca94a7c909221dbca9e271b.png)
list的模拟实现(万字解读+由浅入深)
先申明一下本篇总体介绍过程是按照逐步深入去写的,所以可能有些同样类型不在一块! 前言: 写这篇博客的时候,我是边思考边写它!自己其中感觉自己对于list的理解更加的深入,其中提出的很多问题让我明白了lis…...
![](https://img-blog.csdnimg.cn/b03a75ff78d04c80a3afc9eb28aed13f.jpeg)
Java项目:SSM CRM人事管理系统
作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 CRM人事管理系统,主要功能有: 用户管理:用户查询、添加用户、编辑、删除; 职位管理:…...
![](https://img-blog.csdnimg.cn/0b196983190f43a4b70d2962147c4dbe.png)
Qt+opencv 鼠标画线实现几何图形识别并动态创建
前言 使用Qt OpenCV实现,通过鼠标画线绘制几何图形,然后通过opencv进行图形轮廓识别,返回图形顶点,然后创建对应的几何图形添加到场景中。绘制使用QGraphics体系完成。 看效果图: 本文demo在这里 点击下载 环境: …...
![](https://img-blog.csdnimg.cn/5f553674610f4eaca0f3de14d42ba2f2.webp)
HTML5期末大作业——HTML+CSS+JavaScript平遥古城旅游景点介绍(6页)
👨🎓学生HTML静态网页基础水平制作👩🎓,页面排版干净简洁。使用HTMLCSS页面布局设计,web大学生网页设计作业源码,这是一个不错的旅游网页制作,画面精明,排版整洁,内容…...
![](https://img-blog.csdnimg.cn/5f553674610f4eaca0f3de14d42ba2f2.webp)
HTML5期末考核大作业 基于HTML+CSS+JavaScript沪上美食(9页)
🎀 精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…...
![](https://img-blog.csdnimg.cn/5ced0134835d43748dc994b305a662ec.gif)
Reg注册表读写
在Windows 95及其后继版本中,采用了一种叫做“注册表”的数据库来统一进行管理,将各种信息资源集中起来并存储各种配置信息。按照这一原则,Windows各版本中都采用了将应用程序和计算机系统全部配置信息容纳在一起的注册表,用来管理…...
![](https://img-blog.csdnimg.cn/0cd4d11bcd9e47d087a39d23cd625a43.png)
HTML入门零基础教程(五)
嗨,大家好,我是异星球的小怪同志 一个想法有点乱七八糟的小怪 如果觉得对你有帮助,请支持一波。 希望未来可以一起学习交流。 目录 一、图像标签 1.图像标签 2.图标标签的其它属性 3.图像标签属性注意点: 一、图像标签 1.…...
![](https://img-blog.csdnimg.cn/a6e766cb560f43c0b5c38b082adaf488.png)
java通过lock实现同步锁
这里我们是一个卖票的演示代码 其实 同步锁 远不止一个synchronized 它本身有一个 加上锁 和释放锁的过程 为了 让我们更好的理解这个过程 JDK5之后 为我们提供了一个单独的锁工具 lock lock是一个接口 他提供了 synchronized 方法 和 更广泛的语句操作 lock方法 获得锁 unl…...
![](https://www.ngui.cc/images/no-images.jpg)
Java多线程同步工具类:Semaphore原理剖析
Java多线程同步工具类:Semaphore原理剖析 文章目录Java多线程同步工具类:Semaphore原理剖析Semaphore原理实战案例前驱知识准备:AbstractQueuedSynchronizer队列同步器 [Java多线程之:队列同步器AbstractQueuedSynchronizer原理剖…...
![](https://img-blog.csdnimg.cn/76edb1dc982647fd88b8f593b4d384f4.png)
C++之面向对象
目录 对象与类 类的语法: C中class与struct的区别: 通过类实例化对象的方式 具体案例 类作用域与分文件编写 创建circle.h头文件 创建源文件circle.cpp 创建all.cpp来作为程序的入口 封装 封装的意义 访问权限符 成员属性私有化 优点 具体…...
![](https://img-blog.csdnimg.cn/44ac84696c78495a8d706f9160fae40d.png)
Windows-》CMD命令
CMD命令【1】Windows-》CMD命令1.mstsc:打开远程桌面连接。2.services.msc:打开本地服务设置。3.notepad:打开记事本。4.control:打开控制面板。5.regedit:打开注册列表编辑器。6.compmgmt.msc---设备管理器。…...
![](https://img-blog.csdnimg.cn/ded6a003a2f04f73872ea1a764028b1d.png)
秒级使网站变灰,不改代码不上线,如何做到?
注意:文本不是讲如何将网站置灰的那个技术点,那个技术点之前汶川地震的时候说过。 本文不讲如何实现技术,而是讲如何在第一时间知道消息后,更快速的实现这个置灰需求的上线。 实现需求不是乐趣,指挥别人去实现需求才…...
![](http://www.dade.com/static/img/tox.png)
vue教程
vue window本地保存Local Storage 保存:window.localStorage.setItem(名,值); window.localStorage.setItem(token,backdata.data[2]); 查询:window.localStorage.getItem(名); window.localStorage.getItem(token); 删除:window.localStor…...
![](https://img-blog.csdnimg.cn/0b0b0eb0c4e343cf8909f1d0a4c7483d.png)
认识哈希表
作者:~小明学编程 文章专栏:Java数据结构 格言:目之所及皆为回忆,心之所想皆为过往 目录 为什么我们需要哈希表? 哈希表的原理 什么是哈希值 冲突 负载因子 解决冲突 闭散列 开散列/哈希桶 代码实现 不考虑…...
![](https://img-blog.csdnimg.cn/3aa7ec0e260c4594bc578fbe1b0b9cb5.png)
Vue学习:Hello小案例
使用Vue的目的:构建用户界面(需要使用容器 摆放这个界面的内容) favicon.ico:1 GET http://127.0.0.1:5500/favicon.ico 404 (Not Found) 没有页签图标 在者服务器中 http://127.0.0.1:5500没有/favicon.ico 强制刷新网页:s…...
![](https://img-blog.csdnimg.cn/afd689e5147f497f8fdcb70f3474e030.gif#pic_center)
IDEA创建Java Web项目
✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:JAVA开发者…...
![](https://img-blog.csdnimg.cn/44949e9f949e4b63b8f97e77c1329b6e.png)
C++11中可变参数模板使用
在看同事编写的代码,发现有如下的代码,因为没用过,所以查了一下这是什么语法,通过查询资料知道了这是C11中增加的可变参数模板。 template<class T, class ...Args> bool GetValue(T &value, Args &&...args) c…...
![](https://www.ngui.cc/images/no-images.jpg)
MySQL 中的 sql_mode 选项以及配置
MySQL 中的 sql_mode 选项以及配置 目录MySQL 中的 sql_mode 选项以及配置一、查询与设置 sql_mode1、查询 sql_mode2、设置 sql_mode(1)通过命令设置(2)在配置文件中设置二、sql_mode 支持的模式1、ANSI 模式(宽松模式…...
![](https://img-blog.csdnimg.cn/1ef8c03d9ae44184a7b82f44facfc11a.png)
【C语言航路】第六站:指针初阶
目录 一、指针是什么 二、指针和指针类型 1.指针类型的意义 2.指针-整数 3.指针解引用 三、野指针 1.野指针的成因 (1)指针未初始化 (2)指针越界访问 (3)指针指向的空间释放 2.如何规避野指针 &a…...
![](https://www.ngui.cc/images/no-images.jpg)
从 JPA 2.x 迁移到 3.0
我最近收到了很多关于JPA 3.0的问题,由于EclipseLink和Hibernate现在提供了对它的全面支持,现在是时候仔细看看规范的最新更新了。作为从Java EE到Jakarta EE转换的一部分,Java Persistence API(JPA)更名为Jakarta Per…...
![](https://img-blog.csdnimg.cn/6bd68de93d0f4fd3a7074145675e4b51.png)
Allegro如何锁定器件操作指导
Allegro如何锁定器件操作指导 Allegro上可以锁定器件,避免误操作被移动,具体操作如下 选择fix命令 Find选择Symbols 框选需要锁定的器件 可以看到器件被锁住了 除了这个方法之外,还有另外一种方法锁定器件,选择edit-property Find选择Symbols...
![](https://www.ngui.cc/images/no-images.jpg)
第三章:SpringBoot的配置文件-核心技术
目录 1、文件类型 1.1、properties 1.2、yaml 1.2.1、简介 1.2.2、基本语法 1.2.3、数据类型 1.2.4、示例 2、配置提示 1、文件类型 1.1、properties 同以前的properties用法 1.2、yaml 1.2.1、简介 YAML 是 "YAML Aint Markup Language"(YA…...
![](https://img-blog.csdnimg.cn/8a66565dbf624055a734843b3ffbe95a.png)
Vue中的计算属性
计算属性:实际上是把vm中的属性进行计算加工,最后能够返回给页面一个结果,它是实时的,所以不能做异步操作。 细想一下,其实methods方法也能实现1中描述的现象,但是计算属性最大的优势是缓存!&a…...
![](https://img-blog.csdnimg.cn/791b5b9bc8e74b55b4ef1aac32b75b10.png#pic_center)
HTML+CSS个人电影网页设计——电影从你的全世界路过(4页)带音乐特效
HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…...
![](https://www.ngui.cc/images/no-images.jpg)
业务开发时,接口不能对外暴露的解决方案
1.内外网接口微服务隔离 将对外暴露的接口和对内暴露的接口分别放到两个微服务上,一个服务里所有的接口均对外暴露,另一个服务的接口只能内网服务间调用。 该方案需要额外编写一个只对内部暴露接口的微服务,将所有只能对内暴露的业务接口聚合到这个微服务里,通过这个聚合…...
![](https://img-blog.csdnimg.cn/9a036363dab5486daa66f17b44bebcf9.png)
「点燃我,温暖你」用Python制作一个动态爱心效果
最近「点燃我,温暖你」这部剧非常火,讲述的是程序员的爱情故事。 其中陈飞宇饰演的男主李峋,在剧中用程序做出的爱心跳动效果,非常炫。 网上各个大佬也是纷纷给出看法,综合就是不太可能用C语言来实现的。 大概率是AE…...
![](https://img-blog.csdnimg.cn/c2ca9b8bf85c4b3f9e5c03175a522c70.png)
初识猿如意开发工具
嗨,大家好,我是异星球的小怪同志 一个想法有点乱七八糟的小怪 如果觉得对你有帮助,请支持一波。 希望未来可以一起学习交流。 一、初遇猿如意 第一次听说猿如意开发工具,于是抱着试试的心态,开始下载尝试。 首先是…...
![](https://img-blog.csdnimg.cn/img_convert/f24adb23593531bf209d69937a0e9d4e.png)
PyTorch 2.0发布了,一行代码提速76%
PyTorch 官方:我们这次的新特性太好用了,所以就直接叫 2.0 了。 前段时间,PyTorch 团队在官方博客宣布 Pytorch 1.13 发布,包含 BetterTransformer 稳定版等多项更新。在体验新特性的同时,不少人也在期待下一个版本的推…...
![](https://www.ngui.cc/images/no-images.jpg)
栈的基本操作
一,自定义函数 #include<bits/stdc.h> using namespace std; const int N 1000;//N是常量 int s[N 1];//栈 int top;//栈顶的位置(栈内有多少个元素) //入栈 void push(int x){ //非满栈 if(top < N){ //将栈顶上移并存入 top…...
![](https://www.ngui.cc/images/no-images.jpg)
windows内核编程-文件操作
文章目录前言背景知识点介绍字符串内存分配与回收文件操作自旋锁win内核编程-日志实现文件操作的封装日志功能的实现简单的测试日志功能其他前言 本文完整代码见:demo/12-win-driver-log 我们必须先搞定,DebugView可以看到DbgPrintDbgPrint的输出。否则…...
![](https://img-blog.csdnimg.cn/675a02c65795450e8d4bb130f02e7d82.png)
Hadoop原理与技术——Linus命令行基本操作
点击链接查看文档 一、实验目的 Hadoop运行在Linux系统上,因此,需要学习实践一些常用的Linux命令。本实验旨在熟悉常用的Linux操作,为顺利开展后续其他实验奠定基础。 二、实验环境 Windows 10 VMware Workstation Pro虚拟机 Hadoop环境 J…...
![](https://img-blog.csdnimg.cn/26429385dc71485a91ac6137e79aa303.png)
目标检测算法——YOLOv5/YOLOv7改进之结合特征提取网络RFBNet(涨点明显)
>>>深度学习Tricks,第一时间送达<<< 🚀🚀🚀NEW!!!魔改YOLOv5/v7目标检测算法来啦 ~ 计算机视觉——致力于目标检测领域科研Tricks改进与推荐 | 主要包括Backbone、Neck、Head、普通注意力机制、自注意力机制Transformer、Swin Transformer v2,各…...
![](https://www.ngui.cc/images/no-images.jpg)
anaconda使用系列教程--4)环境迁移
概述 跨平台尽量避免,比如windows和linux就不要跨平台,就在linux之间跨还是可以的 直接copy整体环境文件,适合于无法联网或网速不佳的新环境 anaconda最好是同版本的 迁移方法 使用requirement文件 A机器: pip freeze > …...
![](https://img-blog.csdnimg.cn/8f5626cc3b7e49568fec73b0b8caad9b.jpeg)
Kotlin高仿微信-第57篇-VIP管理列表
Kotlin高仿微信-项目实践58篇详细讲解了各个功能点,包括:注册、登录、主页、单聊(文本、表情、语音、图片、小视频、视频通话、语音通话、红包、转账)、群聊、个人信息、朋友圈、支付服务、扫一扫、搜索好友、添加好友、开通VIP等众多功能。 Kotlin高仿…...
![](https://www.ngui.cc/images/no-images.jpg)
贪心算法-- 纪念品分组
问题描述元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得的纪念品价值 相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品,并且每组纪念品的价格之和不能超过一个给…...
![](https://www.ngui.cc/images/no-images.jpg)
java-php-net-python-代驾网站计算机毕业设计程序
java-php-net-python-代驾网站计算机毕业设计程序 java-php-net-python-代驾网站计算机毕业设计程序本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前端技术:Layui、HTML、CSS、JS、JQ…...
![](https://www.ngui.cc/images/no-images.jpg)
简洁自增ID实现方案
简介 从数据库性能角度考虑,我们经常需要数字型的自增主键,有时候我们并不想用像MySQL自带的自增,因为从1开始很数据位数不一样,对有点强迫症的人来说,不是很友好。 另外,别人也容易根据这种从1开始的自增…...
![](https://img-blog.csdnimg.cn/6e2d740de34845a8a995031250b2047a.png)
JMeter入门教程(14)——场景设计
1.JMeter中场景设计是通过线程组来实现的 如图: 控制面板中各元素介绍: 名称:可以随意设置,最好有业务意义。 注释:可以随意设置,可以为空。 在取样器错误后要执行的动作:其中的某一个请求出错后…...
![](https://img-blog.csdnimg.cn/4f5545f2885b4ed9ac82ebbf89bddd81.png)
SVM 用于将数据分类为两分类或多分类(Matlab代码实现)
👨🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…...
![](https://img-blog.csdnimg.cn/c2f0271cf5844eaa98dccabc90f0bf32.jpeg)
转行软件测试我后悔了
很多时候,都在想当初做的转行软件测试行业的决定是对的吗?现在后悔还来得及吗? 记得在求职的时候,面试官经常问我:“为什么要选择软件测试工作?” 而我也会经常说一堆自己有的没的优势去应付。 工作这么久了&#x…...
![](https://www.ngui.cc/images/no-images.jpg)
Flutter 中的 ExpansionPanelList 小部件:全面指南
Flutter 中的 ExpansionPanelList 小部件:全面指南 在Flutter中,ExpansionPanelList是一个展示可展开/折叠面板列表的组件,它允许用户通过点击来展开或折叠列表中的各个面板。这种组件非常适合展示FAQ、设置选项或其他需要分组和隐藏内容的场…...
![](https://img-blog.csdnimg.cn/direct/3ea2d756a0874095830cd365b7f4714e.png)
python从0开始学习(十二)
目录 前言 1、字符串的常用操作 2、字符串的格式化 2.1 格式化字符串的详细格式(针对format形式) 编辑 总结 前言 上一篇文章我们讲解了两道关于组合数据类型的题目,本篇文章我们将学习新的章节,学习字符串及正则表达式。 …...
![](https://img-blog.csdnimg.cn/direct/244ff1592c834bf5a10de9faf0f736a6.jpeg#pic_center)
这个橙子真的香!老司机徒手把玩香橙派Kunpeng Pro事后感言
水果派爱好者 作为一个水果派爱好者,我早在大学时期就购入了树莓派3B以及一堆传感器配件,把玩至今。 后来在工作的时候,由于不满足树莓派3B的性能,又购入了树莓派4B,玩得不亦乐乎,做出了很多因吹斯汀的小玩…...
![](https://img-blog.csdnimg.cn/01acd54d9042471dbadfa2f63e3ea908.png)
【Java reentrantlock源码解读】
今天学习一下Java中lock的实现方式aqs 直接上图这是lock方法的实现类、分为公平锁和非公平锁两种。 先看非公平的实现方法、很暴力有木有,上来直接CAS(抢占锁的方法,是一个原子操作,没有学过的同学自行百度哦)&#…...
![](https://img-blog.csdnimg.cn/direct/8ce96cf8d38d402baa73055d7da2529f.png)
QQ沐个人引导页html源码
好看的QQ沐个人引导页html源码,鼠标移动滑出美丽的线条收缩特效,界面美观大气,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面 …...
![](https://img-blog.csdnimg.cn/direct/37de8e8feb874f88a24f943158d51649.png)
DRKCT复现
Osint 羡慕群友每一天 MISC 签到 扫码关注公众号,回复一下行 (眼神要好, 我做题时没看见有个二维码) 神秘的文字 把代码js运行一下 (用js的原因是前面给的动物代表的字符类似jsfuck代码) 𓅂![]; 𓂀!…...