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

java 集合进阶

双列集合

map

实例

package mymap;import java.util.HashMap;
import java.util.Map;public class MapDemo1 {public static void main(String[] args) {/*V put(K key,v value)添加元素V remove(object key)根据键删除键值对元素void clear()移除所有的键值对元素boolean containsKey(object key) 判断集合是否包含指定的键boolean containsValue(object value) 判断集合是否包含指定的值boolean isEmpty() 判断集合是否为空int size()集合的长度,也就是集合中键值对的个数*///1.创建一个Map集合对象Map<String,String> m=new HashMap<>();//2.添加元素//2.添加元素//put方法的细节://添加/覆盖//在添加数据的时候,如果键不存在,那么直接把键值对对象添加到map集合当中//在添加数据的时候,如果键是存在的,那么会把原有的键值对对象覆盖,会把被覆盖的值进行返回。m.put("1", "zhangsan");m.put("2", "lisi");m.put("3", "wangwu");//String v=m.put("3", "zhaoliu");//System.out.println(v);//删除//String result=m.remove("1");//System.out.println(result);//清空//m.clear();//判断是否包含//boolean keyResult=m.containsKey("1");//System.out.println(keyResult);//判断集合是否为空//boolean empty=m.isEmpty();//System.out.println(empty);//集合的长度int size=m.size();System.out.println(size);//3.打印集合对象System.out.println(m);}
}

Map的遍历方式

 1.键找值

package mymap;import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class MapDemo2 {public static void main(String[] args) {//1.创建一个Map集合Map<String,String> map=new HashMap<>();//2.添加元素map.put("1","one");map.put("2","two");map.put("3","three");//3.1获取键的集合Set<String> keys=map.keySet();//3.2通过键获取值for(String key:keys){System.out.println(key);//3.3获取值String value=map.get(key);System.out.println(key+"="+value);}}
}

用keySet()方法获取map中的键 

2.键值对

package mymap;import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class MapDemo3 {public static void main(String[] args) {//Map集合的第二种遍历方式//1.创建Map集合的对象Map<String,String> map=new HashMap<>();//2.添加元素//键:人物的外号//值:人物的名字map.put("标枪选手","马超");map.put("人物挂件","明世隐");map.put("御龙骑士","尹志平");//3.Map集合的第二种遍历方式//通过键值对对象进行遍历//3.1 通过一个方法获取所有的键值对对会Set<Map.Entry<String,String>> entries=map.entrySet();//3.2 遍历entries这个集合,去得到里面的每一个键值对对象for (Map.Entry<String, String> entry : entries) {//3.3 利用entry调用get方法获取键和值String key=entry.getKey();String value=entry.getValue();System.out.println(key+"="+value);}}
}

 用entrySet()方法获取map中的键值对

3.Lambda表达式

package mymap;import java.util.HashMap;
import java.util.Map;
import java.util.function.BiConsumer;public class MapDemo4 {public static void main(String[] args) {//Map集合的第三种遍历方式//1.创建Map集合的对象Map<String,String> map=new HashMap<>();//2.添加元素//键:人物的名字//值:名人名言map.put("鲁迅","这句话是我说的");map.put("曹操","不可能绝对不可能");map.put("刘备","接着奏乐接着舞");map.put("柯镇恶","看我眼色行事");//3.利用1ambda表达式进行遍历//底层://forEach其实就是利用第二种方式进行遍历,依次得到每一个键和值//再调用accept方法map.forEach(new BiConsumer<String, String>() {@Overridepublic void accept(String k, String v) {System.out.println(k+"="+v);}});map.forEach((k,v)->{System.out.println(k+"="+v);});}
}

HashMap

HsahMap练习

练习1

package mymap;import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class HashMapDemo1 {public static void main(String[] args) {/*需求:创建一个HashMap集合,键是学生对象(student),值是籍贯(string)存储三个键值对元素,并遍历要求:同姓名,同年龄认为是同一个学生*///1.创建HashMap集合对象HashMap<Student, String> map = new HashMap<>();//2.创建学生对象Student s1 = new Student("zhangsan", 23);Student s2 = new Student("lisi", 24);Student s3 = new Student("wangwu", 25);Student s4 = new Student("wangwu", 25);//3.添加键值对元素map.put(s1, "北京");map.put(s2, "上海");map.put(s3, "广州");map.put(s4, "深圳");//4.遍历集合Set<Student> keys = map.keySet();for(Student key:keys){String value = map.get(key);System.out.println(key+"="+value);}System.out.println("---------------");Set<Map.Entry<Student, String>> entries = map.entrySet();for(Map.Entry<Student, String> entry:entries){Student key = entry.getKey();String value = entry.getValue();System.out.println(key+"="+value);}System.out.println("---------------");map.forEach((student,s)-> System.out.println(student+"="+s));}
}

练习2

package mymap;import java.util.*;public class HashMapDemo2 {public static void main(String[] args) {/*某个班级80名学生,现在需要组成秋游活动,班长提供了四个景点依次是(A、8、C、D),每个学生只能选择一个景点,请统计出最终哪个景点想去的人数最多*///1.需要先让同学们投票//定义一个数组,数组的元素是学生的投票选项String[]arr={"A","B","C","D"};ArrayList<String> list = new ArrayList<>();Random r=new Random();//利用随机数,模拟80个同学的投票for (int i = 0; i < 80; i++) {//随机生成一个索引int index=r.nextInt(arr.length);list.add(arr[index]);}//2.如果要统计的东西比较多,不方便用计数器,此时我们可以选择Map集合//定义一个Map集合,用来统计最终的结果HashMap<String, Integer> map = new HashMap<>();for (String name : list) {if(map.containsKey(name)){//包含了,说明之前已经投过票了int count=map.get(name);count++;map.put(name,count);}else{//不包含,说明是第一次投票map.put(name,1);}}System.out.println(map);//3.求最大值int max=0;Set<Map.Entry<String,Integer>> entries = map.entrySet();for (Map.Entry<String, Integer> entry : entries) {int count=entry.getValue();if(count>max){max=count;}}//4.判断哪个景点的次数和最大值一样,如果一样,就输出for (Map.Entry<String, Integer> entry : entries) {int count=entry.getValue();if(count==max){System.out.println(entry.getKey());}}}
}

 

 LinkedHashMap

TreeMap

如果两种排序规则都书写了,以第二种为准

案例

 

需求1 

package mymap;import java.util.Comparator;
import java.util.TreeMap;public class TreeMap1 {public static void main(String[] args) {/*TreeMap集合:基本应用需求1:键:整数表示id值:字符串表示商品名称要求1:按照id的升序排列要求2:按照id的降序排列*///1.创建TreeMap集合TreeMap<Integer,String> tm = new TreeMap<>(new Comparator<Integer>(){@Overridepublic int compare(Integer o1, Integer o2) {return o2-o1;}});//2.添加元素tm.put(1,"六个核弹");tm.put(2,"八个雅鹿");tm.put(3,"肯贝基");tm.put(4,"霸王堡");//3.打印集合System.out.println(tm);}
}

 需求2

package mytreemap;public class Student implements Comparable<Student> {private String name;private int age;......@Overridepublic int compareTo(Student o) {int i = this.age - o.age;i=i==0?this.name.compareTo(o.name):i;return i;}
}
package mytreemap;import myhashmap.Student;import java.util.TreeMap;public class TreeMap2 {public static void main(String[] args) {/*TreeMap集合:基本应用需求2:键:学生对象值:籍贯要求:按照学生年龄的升序排列,年龄一样按照姓名的字母排列,同姓名年龄视为同一个人。*///1.创建TreeMap集合TreeMap<mytreemap.Student,String> tm = new TreeMap<>();//2.添加元素tm.put(new mytreemap.Student("zhangsan",20),"北京");tm.put(new mytreemap.Student("lisi",21),"上海");tm.put(new mytreemap.Student("wangwu",22),"广州");tm.put(new mytreemap.Student("zhaoliu",20),"深圳");//3.打印集合System.out.println(tm);}
}

案例

package mytreemap;import java.util.TreeMap;public class TreeMap3 {public static void main(String[] args) {/*需求:字符串“aababcabcdabcde”请统计字符串中每一个字符出现的次数,并按照以下格式输出输出结果:a(5)b(4)c(3)d(2)e(1)新的统计思想:利用map集合进行统计如果题目中没有要求对结果进行排序,默认使用HashMap如果题目中要求对结果进行排序,请使用TreeMap键:表示要统计的内容值:表示次数*///1.定义字符串String str="aababcabcdabcde";//2.创建map集合TreeMap<Character,Integer> tm=new TreeMap<>();//3.遍历字符串,获取每一个字符for (int i = 0; i < str.length(); i++) {char c = str.charAt(i);//4.判断map集合中是否包含该字符if(tm.containsKey(c)){//5.如果包含,获取该字符对应的值Integer value = tm.get(c);value++;tm.put(c, value);}else{//6.如果不包含,将该字符作为键,值为1存入map集合tm.put(c, 1);}}//遍历map集合,并按照格式输出for (Character key : tm.keySet()) {Integer value = tm.get(key);System.out.print(key+"("+value+")");}}
}

相关文章:

java 集合进阶

双列集合 map 实例 package mymap;import java.util.HashMap; import java.util.Map;public class MapDemo1 {public static void main(String[] args) {/*V put(K key,v value)添加元素V remove(object key)根据键删除键值对元素void clear()移除所有的键值对元素boolean c…...

RPC 2025/4/8

RPC&#xff08;Remote Procedure Call&#xff09;&#xff0c;远程过程调用。 应用场景&#xff1a;大型微服务项目&#xff0c;服务部署到不同的服务器上&#xff0c;需要远程调用&#xff0c;可以使用RPC。 两个概念&#xff1a; 远程过程调用本地调用 RPC目的&#xff1a…...

浅层神经网络:全面解析(扩展)

浅层神经网络&#xff1a;全面解析&#xff08;扩展&#xff09; 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;可以分享一下给大家。点击跳转到网站。 https://www.captainbed.cn/ccc 一、神经网络架构演进图谱 #mermaid-svg-…...

【Hadoop入门】Hadoop生态之ZooKeeper简介

1 什么是ZooKeeper&#xff1f; 在分布式系统的世界里&#xff0c;协调各节点之间的工作是一项复杂而关键的任务。ZooKeeper正是为解决这一问题而生的开源分布式协调服务&#xff0c;它像一个高效的"和事佬"&#xff0c;帮助分布式系统中的各个组件达成一致、同步状态…...

树和图论(详细整理,简单易懂!)

树和图论 树的遍历模版 #include <iostream> #include <cstring> #include <vector> #include <queue> // 添加queue头文件 using namespace std;const int MAXN 100; // 假设一个足够大的数组大小 int ls[MAXN], rs[MAXN]; // 定义左右子树数…...

CWGAN-GP 原理及实现(pytorch版)

CWGAN-GP 一、CWGAN-GP 原理1.1 CWGAN-GP 的核心改进1.2 CWGAN-GP 的损失函数1.3 CWGAN-GP 的优势1.4 关键参数选择1.5 应用场景 二、CWGAN-GP 实现2.1 导包2.2 数据加载和处理2.3 构建生成器2.4 构建判别器2.5 训练和保存模型2.6 查看训练损失2.7 图片转GIF2.8 模型加载和推理…...

zookeeper平滑扩缩容

在进行ZooKeeper的扩容和缩容操作时&#xff0c;需要注意以下几点&#xff1a; 数据一致性 重要性&#xff1a;ZooKeeper的核心特性之一是保证数据的一致性。在操作过程中&#xff0c;必须确保数据的一致性&#xff0c;以避免数据丢失或损坏。 实现方式&#xff1a;ZooKeeper通…...

Github 热点项目 ChartDB AI自动导表结构+迁移脚本,3分钟生成专业数据库关系图

ChartDB堪称数据库设计神器&#xff01;亮点①&#xff1a;动动手指输入SQL&#xff0c;秒出结构图&#xff0c;表关系一目了然&#xff0c;团队评审时再也不用画图两小时。亮点②&#xff1a;AI智能转换超贴心&#xff0c;MySQL转PostgreSQL只需点个按钮&#xff0c;跨平台迁移…...

RVOS-1.环境搭建与系统引导

0.环境搭建 riscv-operating-system-mooc: 开放课程《循序渐进&#xff0c;学习开发一个 RISC-V 上的操作系统》配套教材代码仓库。 mirror to https://github.com/plctlab/riscv-operating-system-mooc 在 Ubuntu 20.04 以上环境下我们可以直接使用官方提供的 GNU工具链和 QEM…...

Java List<JSONObject> 转换为 List<实体类>

可以使用 Fastjson 的 toJavaObject 方法直接转换&#xff0c;无需中间序列化步骤。以下是具体实现和注意事项&#xff1a; import com.alibaba.fastjson.JSONObject; import java.util.List; import java.util.stream.Collectors;public class Converter {public static List…...

CesiumEarth v1.12 更新,支持安卓平板离线浏览3DTiles格式的三维倾斜模型

CesiumEarth v1.12 更新 2025年4月8日 阅读需 1 分钟 发布时间&#xff1a;2025年04月08日 新增用户登录&#xff1a;​ 从1.12版本开始需要通过登录方可使用CesiumEarth 账号可以通过邮箱免费注册 后续将陆续发布云服务相关的功能 发布Desktop版本&#xff1a;​ Deskt…...

OpenEuler运维实战-系统资源监控与性能优化-CPU·内存·IO

CPU 基本概念定界定位思路常用CPU性能分析工具 基本概念 中央处理器&#xff08;Central Processing Unit&#xff0c;简称CPU&#xff09;是计算机的主要设备之一&#xff0c;其功能是解释计算机指令以及处理计算机软件中的数据。 物理核&#xff1a;可以真实看到的CPU核&…...

react实现SVG地图区域中心点呈现圆柱体,不同区域数据不同,圆柱体高度不同

效果图&#xff1a; 代码&#xff1a; import React, { useState, useEffect } from react;const InnerMongoliaMap () > {// 每个区域的数据&#xff08;名称、中心坐标、圆柱体高度值&#xff09;const [regionData, setRegionData] useState([{ id: "呼和浩特市…...

Qwen - 14B 怎么实现本地部署,权重参数大小:21GB

Qwen - 14B 权重参数大小&#xff1a;21GB 参数量与模型占用存储空间&#xff08;GB&#xff09;是不同概念。Qwen - 14B参数量约140亿 。其模型大小在不同精度下占用存储空间不同&#xff0c;如在一些资料中提到&#xff0c;Qwen - 14B在特定情况下占用空间约21GB 。实际存储…...

线程实现参考资料

参考 并发编程系列 - Java线程池监控及CompletableFuture详解_taskexecutor.execute没有执行如何监控到-CSDN博客 JAVA异步实现的四种方式_java异步编程的四种方法-CSDN博客 Java线程池深度解析与自定义实战-CSDN博客 Java8 CompletableFuture 异步多线程的实现_java_脚本之…...

python-63-前后端分离之图书管理系统的Flask后端

文章目录 1 flask后端1.1 数据库实例extension.py1.2 数据模型models.py1.3 .flaskenv1.4 app.py1.5 运行1.6 测试链接2 关键函数和文件2.1 请求视图类MethodView2.2 .flaskenv文件3 参考附录基于flask形成了图书管理系统的后端,同时对其中使用到的关键文件.flaskenv和函数类M…...

Qt网络编程之服务端

Qt网络编程之服务端 TCP&#xff08;传输控制协议&#xff09;是一种可靠的、面向流的、面向连接的传输协议。它特别适合连续的数据传输。 1. 主要类和函数 1.1 QTcpServer 监听函数&#xff1a; bool QTcpServer::listen(const QHostAddress &address QHostAddress::…...

案例-流量统计

1.建一个data目录&#xff0c;在data下建log.txt文件 输入手机号码 上行流量 下行流量 2.在com.example.flow下建四个Java类3.flowBean flowMapper flowReducer flowDriver...

开源身份和访问管理方案之keycloak(二)管理员引导和恢复

文章目录 开源身份和访问管理方案之keycloak&#xff08;二&#xff09;管理员引导和恢复管理员引导和恢复在 Keycloak 启动时引导临时管理员帐户对于恢复丢失的管理员访问权限使用专用命令引导管理员用户或服务帐户创建一个管理员用户创建一个服务账号重新获得对具有更高安全性…...

TCP,UDP协议和域名地址

1.TCP&#xff08;传输控制协议&#xff09;是面向连接&#xff0c;UDP&#xff08;用户数据报协议&#xff09;是无连接的 2.应用层&#xff1a;FTP,HTTP,SMTP,TELNET,DNS,TFTP 传输层;TCP,UDP 网际层&#xff1a;IP,ICMP,ARP,RARP 3.TCP21:20端口数据传输&#xff1b;21端…...

算法进阶指南 分形

问题描述 分形&#xff0c;具有以非整数维形式充填空间的形态特征。通常被定义为&#xff1a; “一个粗糙或零碎的几何形状&#xff0c;可以分成数个部分&#xff0c;且每一部分都&#xff08;至少近似地&#xff09;是整体缩小后的形状”&#xff0c;即具有自相似的性质。 现…...

2025年 npm淘宝镜像最新地址

查看当前镜像 npm config get registry 切换陶宝镜像源 npm config set registry https://registry.npmmirror.com/ 验证npm镜像源是否切换成功 npm config get registry 如果返回的地址是https://registry.npmmirror.com/&#xff0c;那么说明你已经成功切换到淘宝的npm…...

0基础 | 硬件 | LM386芯片

LM386芯片&#xff1a;音频功率放大器芯片 内部集成三极管功能将微弱信号放大20-200倍&#xff0c;并且驱动内阻为8Ω的扬声器注意CD系列芯片&#xff0c;内部集成MOS管 LM386特性 LM386主要由以下三个部分组成 内部电路 差分输入 差分输入 多个三极管左右对称&#xff0c;形…...

Spring Boot集成APK Parser库实现APK文件解析

目录 1. 添加依赖 2. 创建APK解析服务 3. 创建控制器 4. 测试 注意事项 在Spring Boot项目中集成APK Parser库并解析APK文件&#xff0c;可以按照以下步骤进行操作&#xff1a; 1. 添加依赖 在项目的pom.xml文件中添加apk-parser库的依赖&#xff1a; <dependency&…...

java基础 迭代Iterable接口以及迭代器Iterator

Itera迭代 Iterable < T>迭代接口(1) Iterator iterator()(2) forEach(Consumer<? super T> action)forEach结合Consumer常见场景forEach使用注意细节 (3)Spliterator spliterator() Iterator< T>迭代器接口如何“接收” Iterator<T>核心方法迭代器的…...

Linux: network: tcpdump: packets dropped by kernel

文章目录 最近遇到一个问题原因libpcap/tcpdump 接口linux/libpcap 接口内核的处理原因可能有以下几种:解决方法:man pcap_stats最近遇到一个问题 tcpdump命令显示有dropped的包,而且是被内核drop的。 [root@-one-01 ~]# tcpdump -i any udp and port 8080 -v -w /root/udp…...

TCP三次握手和TCP四次挥手

一 TCP三次握手 TCP建立连接的过程叫做握手&#xff0c;握手需要客户端和服务器之间交换三个TCP报文段。如图所示&#xff0c;假设主机A为TCP客户端&#xff0c;主机B为TCP服务端。在最初时间&#xff0c;两端的TCP进程都是处于CLOSED状态 &#xff08;1&#xff09;主机A主动…...

博途 TIA Portal之1200做主站与调试助手的TCP通讯

博途支持的通讯非常多&#xff0c;常见的有S7、TCP/IP&#xff0c;UDP等等&#xff0c;本文将演示TCP的通讯&#xff0c;通讯的双方是1200PLC和调试助手之间&#xff0c;编程采用ST语言。 1、硬件准备 1200PLC一台&#xff0c;带调试助手的PC机一台&#xff0c;调试助手是我经…...

第十天 - socket编程基础 - TCP/UDP服务开发 - 练习:简易端口扫描器

Python网络编程入门&#xff1a;从Socket到端口扫描器实战 一、前言&#xff1a;为什么要学网络编程&#xff1f; 在这个万物互联的时代&#xff0c;掌握网络编程技术就像拥有了一把打开互联网世界的钥匙。无论是开发聊天软件、网络游戏&#xff0c;还是构建分布式系统&#…...

欧税通香港分公司办公室正式乔迁至海港城!

3月20日&#xff0c;欧税通香港分公司办公室正式乔迁至香港油尖旺区的核心商业区海港城!左手挽着内地市场&#xff0c;右手牵起国际航道——这波乔迁选址操作堪称“地理课代表”! 乔迁仪式秒变行业大联欢!感谢亚马逊合规团队、亚马逊云、阿里国际站、Wayfair、coupang、美客多…...

Maven的安装配置-项目管理工具

各位看官&#xff0c;大家早安午安晚安呀~~~ 如果您觉得这篇文章对您有帮助的话 欢迎您一键三连&#xff0c;小编尽全力做到更好 欢迎您分享给更多人哦 今天我们来学习&#xff1a;Maven的安装配置-项目管理工具 目录 1.什么是Maven&#xff1f;Maven用来干什么的&#xff1f…...

【Linux篇】缓冲区的工作原理:如何影响你程序的输入输出速度

从内存到磁盘&#xff1a;缓冲区如何提升文件I/O效率 一. 缓冲区1.1 什么是缓冲区1.2 为什么要引入缓冲区1.3 缓冲区类型1.4 FILE1.4.1 基本概念1.4.2 FILE 结构体的作用1.4.3 FILE 的工作机制 二. 最后 在程序开发中&#xff0c;缓冲区是一个经常被提及却不容易深入理解的概念…...

编写junit测试类 import org.junit.Test;

1. 添加依赖 <!-- Spring Boot Starter Test --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> 2. …...

初识数据结构——深入理解LinkedList与链表:吃透LinkedList与链表的终极指南

&#x1f4cc; 深入理解LinkedList与链表&#xff1a;从原理到实战应用 &#x1f31f; 引言 在Java集合框架中&#xff0c;LinkedList和ArrayList是最常用的两种列表结构。它们各有优劣&#xff0c;适用于不同的场景。本文将带你深入探索LinkedList的底层实现——链表&#x…...

C++版Qt之登录界面设计

在C开发中&#xff0c;使用Qt框架可以快速构建美观且功能强大的GUI应用程序。本文将介绍如何设计一个漂亮的登录界面&#xff0c;包括账号和密码输入框&#xff0c;并确保只有验证成功后才能进入主窗口。 项目结构 文件列表 LoginDialog.h&#xff1a;登录对话框的头文件Logi…...

Java logback框架日志输出中文乱码的解决方案(windows)

在Java开发中&#xff0c;日志记录是一个重要的部分&#xff0c;它可以帮我们定位问题、运行时监控、错误排查与故障恢复。但是&#xff0c;在有些情况下&#xff0c;使用Logback记录的中文日志会出现乱码&#xff0c;这会影响日志的可读性&#xff0c;给维护带来麻烦。本文将探…...

【c++】c/c++内存管理

小编个人主页详情<—请点击 小编个人gitee代码仓库<—请点击 c系列专栏<—请点击 倘若命中无此运&#xff0c;孤身亦可登昆仑&#xff0c;送给屏幕面前的读者朋友们和小编自己! 目录 前言一、c语言内存管理二、一图搞懂c/c中的程序内存区域划分三、c内存管理1. new和d…...

【C++】Stack Queue 仿函数

&#x1f4dd;前言&#xff1a; 这篇文章我们来讲讲STL中的stack和queue。因为前面我们已经有了string、vector和list的学习基础&#xff0c;所以这篇文章主要关注一些stack和queue的细节问题&#xff0c;以及了解一下deque&#xff08;缝合怪&#xff09;和priority_queue &am…...

Python:基于Flask框架的数据可视化系统

以下是一个基于Flask框架的数据可视化系统代码示例&#xff0c;包含核心功能实现&#xff1a; python 复制 # app.py 后端核心代码 from flask import Flask, render_template, jsonify import sqlite3 from collections import defaultdict import jieba import reapp Fla…...

JVM即时编译(JIT)

JVM基础回顾 Java 作为一门高级程序语言&#xff0c;由于它自身的语言特性&#xff0c;它并非直接在硬件上运行&#xff0c;而是通过编译器(前端编译器)将 Java 程序转换成该虚拟机所能识别的指令序列&#xff0c;也就是字节码&#xff0c;然后运行在虚拟机之上的&#xff1b;…...

JVM高阶架构:并发模型×黑科技×未来趋势解析

&#x1f680;前言 “你是否还在为synchronized锁竞争头疼&#xff1f;是否好奇ZGC如何实现亚毫秒停顿&#xff1f;Java的未来将走向何方&#xff1f; 本文将带你深入JVM最硬核的三大领域&#xff1a; 并发模型&#xff1a;揭秘happens-before如何保证多线程安全&#xff08;…...

Java的JDK、JRE、JVM关系与作用

Java的JDK、JRE、JVM关系与作用 java中的JDK、JRE和JVM是三个核心组件&#xff0c;各自承担不同角色&#xff0c;且存在层级依赖关系 1. JVM&#xff08;Java Virtual Machine&#xff0c;Java虚拟机&#xff09; 是什么&#xff1a; JVM是虚拟的计算机&#xff0c;能够执行…...

XMLHttpRequest vs Fetch API:一场跨越时代的“浏览器宫斗剧“

## 序幕&#xff1a;两个API的"身世之谜" 在Web开发的江湖里&#xff0c;XMLHttpRequest&#xff08;简称XHR&#xff09;就像一位身经百战的老将&#xff0c;而Fetch API则是手持光剑的绝地武士。让我们先来段"DNA检测"&#xff1a; - **XHR&#xff08…...

Windows Anaconda使用Sentence-BERT获取句子向量

1、安装Anaconda&#xff1a; Anaconda是一个流行的Python数据科学平台&#xff0c;它包含了许多科学计算和数据分析的库&#xff0c;包括transformers和sentence_transformers。虽然不是必需的&#xff0c;但使用Anaconda可以简化环境管理和依赖安装的过程。 可以从Anaconda官…...

【Java设计模式】第5章 工厂方法模式讲解

5. 工厂方法模式 5.1 工厂方法讲解 定义:定义一个创建对象的接口,由子类决定实例化的类,将对象创建延迟到子类。适用场景: 创建对象需要大量重复代码。客户端不依赖具体产品的创建细节。优点: 符合开闭原则,新增产品只需扩展子类。客户端仅依赖抽象接口,不依赖具体实现…...

结合 Less + CSS 变量实现切换主题

一开始的思路是通过 Less 变量作用范围 来切换 light 和 dark 主题&#xff0c;但 Less 本身不会动态监听类名变化&#xff0c;所以直接这样写是 不可行的&#xff0c;因为 Less 是 预处理语言&#xff0c;它在编译阶段就确定了 color 的值&#xff0c;而不是在运行时动态切换。…...

数据分析之python处理常用复杂转置数据

前段时间根据需求配合ai写了个转置excel代码&#xff0c;挺好用的&#xff0c;而且可以选择excel&#xff0c;不局限于excel存在哪个地方&#xff0c;都可以转置&#xff0c;但是转置后的excel记得要先创建放在转置文件的目录下。 原本的数据长这样 转置后则可以变为这样&…...

未来杭州:科技与诗意的时空交响曲

故事背景 故事发生在中国浙江杭州的未来科技时代&#xff0c;通过六个充满未来感的场景展现传统文明与尖端科技的完美融合。全篇无人物角色&#xff0c;专注于构建兼具东方美学与赛博朋克风格的沉浸式景观。 故事内容 从晨雾中浮现全息诗句的西湖&#xff0c;到吞吐智能包裹的运…...

彩虹表是什么

彩虹表是一种用于破解加密散列函数的预计算表&#xff0c;主要用于破解密码的哈希值。以下是关于加密文件与彩虹表的相关信息&#xff1a; 彩虹表的原理 • 时空折中&#xff1a;彩虹表基于时空折中理论&#xff0c;通过预先计算并存储大量可能的密码及其哈希值&#xff0c;减少…...

[BreachCTF 2025]

周末的这个居然一个密码都不会,作了4个pwn,给原码看着真方便 FSWn3d #define _GNU_SOURCE #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/mman.h> #include <unistd.h>char buffer[152…...