【Groovy】Array、List、Set、Map简介
1 Array
1.1 创建数组
1.1.1 创建一维数组
int[] arr1 = new int[2]
arr1[0] = 1
arr1[1] = 2float[] arr2 = new float[] { 1f, 2f, 3f }
String[] arr3 = ["abc", "xyz"] as String[]
1.1.2 创建二维数组
int[][] arr1 = new int[2][2]
arr1[0][0] = 1
arr1[0][1] = 2
arr1[1][0] = 3
arr1[1][1] = 4float[][] arr2 = new float[][] { [1f, 2f] as float[], [3f, 4f] as float[] }String[] arr3 = [["abc", "efg"], ["rst", "xyz"]] as String[][]
1.2 遍历数组
def items = new String[] { "aa", "bb", "cc" }items.each {println(it) // 打印: aa、bb、cc
}for (item in items) {println(item) // 打印: aa、bb、cc
}for (int i = 0; i < items.size(); i++) {println("items[$i]=${items[i]}") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
}for (index in items.indices) {println("items[$index]=${items[index]}") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
}items.eachWithIndex { item, index ->println("items[$index]=$item") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
}
1.3 修改元素顺序
1.3.1 翻转元素
def arr1 = [1, 2, 3, 4, 5] as Integer[]
def arr2 = arr1.reverse() // 翻转Array中元素, 并生成新的Array
def arr3 = arr1.reverse(true) // 在原Array上翻转元素
1.3.2 打乱元素顺序
def arr1 = [1, 2, 3, 4, 5] as Integer[]
def arr2 = arr1.shuffled() // 打乱Array元素顺序, 并生成新的Array
arr1.shuffle() // 打乱Array元素顺序
1.3.3 元素排序
def arr1 = [3, 1, 5, 2, 4] as Integer[]def arr2 = arr1.sort() // 从小到大排序
def arr3 = arr1.sort(false) // 从小到大排序, 并生成新的Array
def arr4 = arr1.toSorted() // 从小到大排序, 并生成新的Arraydef arr5 = arr1.sort {a, b -> b <=> a } // 从大到小排序
def arr6 = arr1.sort(false) { a, b -> b <=> a } // 从大到小排序, 并生成新的Array
def arr7 = arr1.toSorted { a, b -> b <=> a } // 从大到小排序, 并生成新的Array
1.4 切片
def arr1 = ["AA", "BBB", "CC", "DDD", "E"] as String[]
def arr2 = arr1[1..2] // [BBB, CC], 截取1,2元素
def arr3 = arr1.drop(2) // [CC, DDD, E], 丢弃前2个元素
def arr4 = arr1.dropRight(2) // [AA, BBB, CC], 丢弃最后2个元素
def arr5 = arr1.take(2) // [AA, BBB], 截取前2个元素
def arr6 = arr1.takeRight(2) // [DDD, E], 截取最后2个元素
1.5 统计函数
def arr = [1, 2, 3, 4] as Integer[]
arr.sum() // 10
arr.average() // 2.5
arr.max() // 4
arr.min() // 1
arr.count { it > 1 } // 3
1.6 flatten
def arr = [["AA", "BB"], ["CC", "DD"]] as String[][]
String flatten = arr.flatten() // [AA, BB, CC, DD]
2 List
2.1 创建 List
def list1 = [1, 2, 3]
def list2 = List.of(1f, 2f, 3f)
def list3 = new ArrayList<Integer>()
def list4 = new LinkedList<String>()def arr = new String[] { "abc", "xyz" }
def list5 = arr.toList()
2.2 增删改查
2.2.1 增加元素
def list = []
list.add("abc")
list.add("xyz")
list.add(1, "zhang")
list += "san"
list += ["1", "2"]
list += Set.of("3", "4")
println(list) // 打印: [abc, zhang, xyz, san, 1, 2, 4, 3]
2.2.2 删除元素
def list = ["abc", "efg", "xyz", "1", "2", "3"]
list.remove("abc") // [efg, xyz, 1, 2, 3]
list.removeAt(0) // [xyz, 1, 2, 3]
list -= "xyz" // [1, 2, 3]
list -= ["2", "3"] // [1]
list.clear() // []
2.2.3 修改元素
def list = ["abc", "efg", "xyz"]
list[0] = "ABC"
2.2.4 访问元素
1)访问元素
def list = ["zhang", "li", "wang"]
println(list[1]) // 打印: li
list[0] = "chen"
list.first() // chen, 获取首个元素
list.last() // wang, 获取最后一个元素
list.indexOf("wang") // 2, 查找元素对应的索引
2)遍历元素
def items = ["aa", "bb", "cc"]items.forEach {println(it) // 打印: aa、bb、cc
}items.each {println(it) // 打印: aa、bb、cc
}for (item in items) {println(item) // 打印: aa、bb、cc
}for (int i = 0; i < items.size(); i++) {println("items[$i]=${items[i]}") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
}for (index in items.indices) {println("items[$index]=${items[index]}") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
}items.eachWithIndex { item, index ->println("items[$index]=$item") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
}
2.3 修改元素顺序
2.3.1 翻转元素
def list1 = [1, 2, 3, 4, 5]
def list2 = list1.reverse() // 翻转List中元素, 并生成新的List
def list3 = list1.reverse(true) // 在原List上翻转元素
2.3.2 打乱元素顺序
def list1 = [1, 2, 3, 4, 5]
def list2 = list1.shuffled() // 打乱List元素顺序, 并生成新的List
list1.shuffle() // 打乱List元素顺序
2.3.3 元素排序
def list1 = [3, 1, 5, 2, 4]def list2 = list1.sort() // 从小到大排序
def list3 = list1.sort(false) // 从小到大排序, 并生成新的List
def list4 = list1.toSorted() // 从小到大排序, 并生成新的Listdef list5 = list1.sort { a, b -> b <=> a } // 从大到小排序
def list6 = list1.sort(false) { a, b -> b <=> a } // 从大到小排序, 并生成新的List
def list7 = list1.toSorted { a, b -> b <=> a } // 从大到小排序, 并生成新的List
2.4 切片
def list1 = ["AA", "BBB", "CC", "DDD", "E"]
def list2 = list1[1..2] // [BBB, CC], 截取1,2元素
def list3 = list1.drop(2) // [CC, DDD, E], 丢弃前2个元素
def list4 = list1.dropRight(2) // [AA, BBB, CC], 丢弃最后2个元素
def list5 = list1.take(2) // [AA, BBB], 截取前2个元素
def list6 = list1.takeRight(2) // [DDD, E], 截取最后2个元素
2.5 统计函数
def list = [1, 2, 3, 4]
list.sum() // 10
list.average() // 2.5
list.max() // 4
list.min() // 1
list.count { it > 1 } // 3
2.6 groupBy
def list = ["AA", "BBB", "CC", "DDD"]
// [2:[AA, CC], 3:[BBB, DDD]]
Map<Integer, List<String>> map = list.groupBy { it.size() }
2.7 flatten
def list = [["AA", "BB"], ["CC", "DD"]]
List<String> flatten = list.flatten() // [AA, BB, CC, DD]
3 Set
3.1 创建 Set
def set1 = [1, 2, 3] as Set
def set2 = Set.of(1f, 2f, 3f)
def set3 = new HashSet<Integer>()
def set4 = new LinkedHashSet<Float>()
def set5 = new TreeSet<String>()
3.2 增删查
3.2.1 增加元素
def set = ["abc", "xyz"] as Set
set.add("1")
set += "2"
set += ["3", "4"]
set += Set.of("5", "6")
println(set) // [abc, xyz, 1, 2, 3, 4, 6, 5]
3.2.2 删除元素
def set = ["abc", "efg", "xyz", "zhang", "san", "li", "si"] as Set
set.remove("abc") // [efg, xyz, zhang, san, li, si]
set -= "xyz" // [efg, zhang, san, li, si]
set -= ["zhang", "san"] // [efg, li, si]
set -= Set.of("li", "si") // [efg]
set.clear() // []
3.2.3 访问元素
1)访问元素
def set = ["zhang", "li", "wang"] as Set
set.any() // true, 判断List是否为空(容量为0)
set.first() // zhang, 获取首个元素
set.last() // wang, 获取最后一个元素
2)遍历元素
def items = ["aa", "bb", "cc"] as Setitems.forEach {println(it) // 打印: aa、bb、cc
}items.each {println(it) // 打印: aa、bb、cc
}for (item in items) {println(item) // 打印: aa、bb、cc
}for (int i = 0; i < items.size(); i++) {println("items[$i]=${items[i]}") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
}for (index in items.indices) {println("items[$index]=${items[index]}") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
}items.eachWithIndex { item, index ->println("items[$index]=$item") // 打印: items[0]=aa、items[1]=bb、items[2]=cc
}
3.3 修改元素顺序
3.3.1 翻转元素
def set = [1, 2, 3, 4, 5]
def list1 = set.reverse() // 翻转Set元素顺序, 并生成新的List
def list2 = set.reverse(true) // 在原set上翻转元素
3.3.2 打乱元素顺序
def set = [1, 2, 3, 4, 5] as Set
def list = set.shuffled() // 打乱Set元素顺序, 并生成新的List
set.shuffle() // 打乱Set元素顺序
3.3.3 元素排序
def set = [3, 1, 5, 2, 4] as Setdef list1 = set.sort() // 从小到大排序
def list2 = set.sort(false) // 从小到大排序, 并生成新的List
def list3 = set.toSorted() // 从小到大排序, 并生成新的Listdef list4 = set.sort { a, b -> b <=> a } // 从大到小排序
def list5 = set.sort(false) { a, b -> b <=> a } // 从大到小排序, 并生成新的List
def list6 = set.toSorted { a, b -> b <=> a } // 从大到小排序, 并生成新的List
3.4 切片
def set = ["AA", "BBB", "CC", "DDD", "E"] as Set
def list1 = set.drop(2) // [CC, DDD, E], 丢弃前2个元素
def list2 = set.dropRight(2) // [AA, BBB, CC], 丢弃最后2个元素
def list3 = set.take(2) // [AA, BBB], 截取前2个元素
def list4 = set.takeRight(2) // [DDD, E], 截取最后2个元素
3.5 统计函数
def set = [1, 2, 3, 4]
set.sum() // 10
set.average() // 2.5
set.max() // 4
set.min() // 1
set.count { it > 1 } // 3
3.6 groupBy
def set = ["AA", "BBB", "CC", "DDD"] as Set
// [2:[AA, CC], 3:[BBB, DDD]]
Map<Integer, List<String>> map = set.groupBy { it.size() }
3.7 flaten
def set = [Set.of("AA", "BB"), Set.of("CC", "DD")] as Set
Set<String> flatten = set.flatten() // [AA, BB, CC, DD]
4 Map
4.1 创建 Map
def map1 = [:]
map1.put("key", 1f)
map1["xyz"] = 2fdef map2 = [1:"a", 2:"b", 3:"c"]def map3 = ["1", "2", "3", "4"].toSpreadMap()
println(map3) // 打印: [1:2, 3:4]def map4 = new HashMap<Integer, String>()
def map5 = new Hashtable<Integer, String>()
def map6 = new LinkedHashMap<Integer, String>()
def map7 = new ConcurrentHashMap<Integer, String>()
def map8 = new TreeMap<Integer, String>()
4.2 增删改查
4.2.1 增加元素
def map = [:]
map.put("key", 1)
map["xyz"] = 2
map += ["abc": 3, "zhang": 4]
println(map) // 打印: [key:1, xyz:2, abc:3, zhang:4]
4.2.2 删除元素
def map = ["key":1, "xyz":2, "abc":3, "zhang":4, "san":5]
map.remove("key") // [xyz:2, abc:3, zhang:4, san:5]
map -= ["xyz": 2, "abc":3] // [zhang:4, san:5]
map.clear() // [:]
4.2.3 修改元素
def map = ["zhang":1, "san":2, "li": 3, "si": 4]
map["zhang"] = 10 // [zhang:10, san:2, li:3, si:4]
map.put("li", 30) // [zhang:10, san:2, li:30, si:4]
4.2.4 访问元素
1)访问元素
def map = ["zhang":1, "san":2, "li": 3, "si": 4]
println map["zhang"] // 1
println map.get("li") // 3
2)遍历元素
def items = ["zhang":1, "san":2]items.forEach { key, value ->println("items[${key}]=${value}") // 打印: items[zhang]=1、items[san]=2
}items.each {println("items[${it.key}]=${it.value}") // 打印: items[zhang]=1、items[san]=2
}for (item in items) {println("items[${item.key}]=${item.value}") // 打印: items[zhang]=1、items[san]=2
}
4.3 keys 和 values
def map = [1001:"Tom", 1002:"Mary"]
println(map.keySet()) // [1001, 1002]
println(map.values()) // [Tom, Mary]
for (entry in map.entrySet()) {println("${entry.key}: ${entry.value}") // [1001, Tom], [1002, Mary]
}
println(map.containsKey(1001)) // true
println(map.containsValue("Tom")) // true
4.4 getOrDefault
def map = [1001:"Tom", 1002:"Mary"]
// 在没有结果时返回给定的默认值
def name = map.getOrDefault(1001, "xxx")
相关文章:
【Groovy】Array、List、Set、Map简介
1 Array 1.1 创建数组 1.1.1 创建一维数组 int[] arr1 new int[2] arr1[0] 1 arr1[1] 2float[] arr2 new float[] { 1f, 2f, 3f } String[] arr3 ["abc", "xyz"] as String[] 1.1.2 创建二维数组 int[][] arr1 new int[2][2] arr1[0][0] 1 arr…...
DeepSeek与数据分析:现状、挑战与未来展望
在当今数字化时代,人工智能(AI)的浪潮正以前所未有的速度席卷各个领域,数据分析作为众多行业决策的关键支撑,也不可避免地受到AI技术发展的深刻影响。近期,AI话题持续火热,不少企业老板要求员工…...
【通俗讲解电子电路】——从零开始理解生活中的电路(三)
实际应用案例:生活中的电子电路 ——拆解你身边的“隐形工程师” 1. 手电筒电路:最简单的直流系统 电路组成 电源:2节1.5V电池(串联3V)。 开关:按钮控制回路通断。 LED:发光二极管ÿ…...
JVM基本概念及内存管理模型
一、JVM基本概念 JVM(Java Virtual Machine,Java 虚拟机)是 Java 程序运行的核心组件。它负责将 Java 字节码转换为特定平台的机器指令,并提供内存管理、垃圾回收、安全性等功能。JVM 的主要功能包括以下: 加载和执行…...
【CPP面经】科大讯飞 腾讯后端开发面经分享
文章目录 C 面试问题整理基础问题简答1. 内存对齐2. this 指针3. 在成员函数中删除 this4. 引用占用内存吗?5. C 越界访问场景6. 进程通信方式7. 无锁队列实现8. ping 在哪一层?实现原理?9. HTTPS 流程10. GDB 使用及 CPU 高使用定位11. 智能…...
2.反向传播机制简述——大模型开发深度学习理论基础
在深度学习开发中,反向传播机制是训练神经网络不可或缺的一部分。它让模型能够通过不断调整权重,从而将预测误差最小化。本文将从实际开发角度出发,简要介绍反向传播机制的核心概念、基本流程、在现代网络中的扩展,以及如何利用自…...
使用Word时无法粘贴,弹出错误提示:运行时错误‘53‘:文件未找到:MathPage.WLL
报错说明 使用Word时无法粘贴,粘贴时弹出提示如下: 一般出现这种情况时,我想你是刚装完MathType不久,博主装的是MathType7版本,出现了这个问题。 出现这个问题的原因是"mathpage.wll"这个文件在Office的插…...
详解matplotlib隐式pyplot法和显式axes法
Python的matplotlib提供了pyplot隐式方法和显式Axes方法,这让很多人在选择时感到困惑。本文用9000字彻底解析两种方法的区别与适用场景,节选自👉Python matplotlib保姆级教程 matplotlib隐式绘图方法(pyplot) matplot…...
100天精通Python(爬虫篇)——第113天:爬虫基础模块之urllib详细教程大全
文章目录 1. urllib概述2. urllib.request模块 1. urllib.request.urlopen()2. urllib.request.urlretrieve()3. urllib.request.Request()4. urllib.request.install_opener()5. urllib.request.build_opener()6. urllib.request.AbstractBasicAuthHandler7. urllib.request.…...
FPGA开发,使用Deepseek V3还是R1(2):V3和R1的区别
以下都是Deepseek生成的答案 FPGA开发,使用Deepseek V3还是R1(1):应用场景 FPGA开发,使用Deepseek V3还是R1(2):V3和R1的区别 FPGA开发,使用Deepseek V3还是R1&#x…...
Leetcode LRU缓存
LRU 缓存算法思想及代码解析 算法思想 LRU(Least Recently Used,最近最少使用)缓存 需要满足以下要求: 在 O(1) 时间复杂度内完成 get 和 put 操作。当缓存满时,删除最近最少使用的元素(即最久没有被访问…...
结合PyMuPDF+pdfplumber,删除PDF指定文本后面的内容
🚀 一、需求场景解析 在日常办公中,我们经常会遇到这样的痛点: 合同处理:收到上百份PDF合同,需要找到"签署页"之后的内容并删除报表加工:批量移除财务报表中的敏感数据区域文档归档:快速提取技术文档的关键章节传统的手动操作方式存在三大致命缺陷: ❗ 耗时…...
【NLP 30、文本匹配任务 —— 传统机器学习算法】
目录 一、文本匹配任务的定义 1.狭义解释 2.广义解释 二、文本匹配的应用 1.问答对话 2.信息检索 3.文本匹配任务应用 三、智能问答 1.智能问答的基本思路 依照基础资源划分: 依照答案产出方式划分 依照NLP相关技术划分 四、智能问答的价值 1.智能客服 2.Faq知识库问…...
修改hosts文件,修改安全属性,建立自己的DNS
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…...
springboot + mybatis-plus + druid
目录架构 config MyMetaObjectHandler.java package com.example.config;import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component;import java.util.Date;Com…...
【零基础到精通Java合集】第十一集:List集合框架与泛型
课程标题:List集合框架与泛型(15分钟) 目标:掌握泛型在List中的应用,理解类型安全的重要性,熟练操作泛型集合 0-1分钟:泛型List的意义引入 以“分类储物箱”类比泛型List:明确容器内元素类型(如只能放书籍)。说明泛型的核心作用——编译时类型检查,避免运行时类型…...
计算机网络——子网掩码
一、子网掩码是什么?它长什么样? 子网掩码的定义 子网掩码是一个32位的二进制数字,与IP地址“配对使用”,用于标识IP地址中哪部分属于网络地址,哪部分属于主机地址。 示例:IP地址 192.168.1.10,…...
[自然语言处理]pytorch概述--什么是张量(Tensor)和基本操作
pytorch概述 PyTorch 是⼀个开源的深度学习框架,由 Facebook 的⼈⼯智能研究团队开发和维护,于2017年在GitHub上开源,在学术界和⼯业界都得到了⼴泛应⽤ pytorch能做什么 GPU加速自动求导常用网络层 pytorch基础 量的概念 标量…...
18.5 ChatGLM2-6B 开源协议深度解读:自由与约束的平衡之道
ChatGLM2-6B 开源协议深度解读:自由与约束的平衡之道 关键词:ChatGLM2 开源协议, 模型授权合规, 商业使用限制, 技术伦理条款, 国产大模型治理 1. 协议核心条款全景解析 ChatGLM2-6B 采用 分层授权模式,其核心条款可归纳为三大维度: #mermaid-svg-xgEnsN0y2TMOR0Hf {font…...
javaweb自用笔记:Vue
Vue 什么是vue vue案例 1、引入vue.js文件 2、定义vue对象 3、定义vue接管的区域el 4、定义数据模型data 5、定义视图div 6、通过标签v-model来绑定数据模型 7、{{message}}直接将数据模型message展示出来 8、由于vue的双向数据绑定,当视图层标签input里的…...
FreeRTOS 源码结构解析与 STM32 HAL 库移植实践(任务创建、删除篇)
1. FreeRTOS源码结构介绍 1.1 下载源码 点击官网地址,选择 FreeRTOS 202212.01非 LTS 版本(非长期支持版),因为这个版本有着最全的历程和更多型号处理器支持。 1.2 文件夹结构介绍 下载后主文件 FreeRTOSv202212.01 下包…...
第五节:基于Winform框架的串口助手小项目---串口收发《C#编程》
“路漫漫其修远兮,吾将上下而求索” , -----------------------WHAPPY 目标任务: 1 从本地设备列表获取串口。 RegistryKey keyCom Registry.LocalMachine.OpenSubKey("Hardware\DeviceMap\SerialComm"); RegistryKey 是.NET 框…...
CSS2.1基础学习
1.定位盒模型相关 2.浮动 3.使用定位实现三列布局(不可取,定位父级为初始包含块) 4.使用浮动实现三列布局(不可取的原因是中间主列无法优先加载) 5.圣杯布局 6.等高布局 7.双飞翼布局 8.解决IE6下fixed失效问题 9.短暂总结 10.粘连布局 11.BFC是什么 12.BFC实现两列…...
alpine linux 系统最新版安装及使用教程
1.下载镜像包 官网地址 官网下载阿里云镜像站下载华为云镜像站下载清华大学镜像站下载中科大镜像站下载 官方安装文档 2.新建虚拟机 3.编辑虚拟机并开机 4.虚拟机安装 开启虚拟机 首次启动使用root登录,没有密码 登录成功,执行 setup-alpine 命令进…...
【Hudi-SQL DDL创建表语法】
CREATE TABLE 命令功能 CREATE TABLE命令通过指定带有表属性的字段列表来创建Hudi Table。 命令格式 CREATE TABLE [ IF NOT EXISTS] [database_name.]table_name[ (columnTypeList)]USING hudi[ COMMENT table_comment ][ LOCATION location_path ][ OPTIONS (options_lis…...
[Web 安全] PHP 反序列化漏洞 —— POP 链构造思路
关注这个专栏的其他相关笔记:[Web 安全] 反序列化漏洞 - 学习笔记-CSDN博客 0x01:什么是 POP 链? POP 链(Payload On Purpose Chain)是一种利用 PHP 中的魔法方法进行多次跳转以获取敏感数据的技术。它通常出现在 CTF…...
GPU/CUDA 发展编年史:从 3D 渲染到 AI 大模型时代
目录 文章目录 目录1960s~1999:GPU 的诞生:光栅化(Rasterization)3D 渲染算法的硬件化实现之路学术界算法研究历程工业界产品研发历程光栅化技术原理光栅化技术的软件实现:OpenGL 3D 渲染管线设计1. 顶点处理ÿ…...
除了DeepSpeed,在训练和推理的时候,显存不足还有什么优化方法吗?FlashAttention 具体是怎么做的
除了DeepSpeed,训练和推理时显存不足的优化方法及FlashAttention原理详解 DeepSpeed的基础内容:ZeRO分布式训练策略 一、显存不足的优化方法 1. 混合精度训练(Mixed Precision Training) 原理 使用FP16和FP32混合精度ÿ…...
GCC RISCV 后端 -- GCC 后端框架的一些理解
GCC 已经提供了一整套的编译框架,从前端(Frontend / GENERIC-Tree)对编程语言的语法语义处理,到中端(Middle-End / GIMPLE-Tree)的目标机器无关(Target Indepndent)的优化处理&#…...
庖丁解java(一篇文章学java)
(大家不用收藏这篇文章,因为这篇文章会经常更新,也就是删除后重发) 一篇文章学java,这是我滴一个执念... 当然,真一篇文章就写完java基础,java架构,java业务实现,java业务扩展,根本不可能.所以,这篇文章,就是一个索引,索什么呢? 请看下文... 关于决定开始写博文的介绍 …...
Spring框架自带的定时任务:Spring Task详解
文章目录 一、基本使用1、配置:EnableScheduling2、触发器:Scheduled 二、拓展1、修改默认的线程池2、springboot配置 三、源码分析参考资料 一、基本使用 1、配置:EnableScheduling import org.springframework.context.annotation.Config…...
DeepSeek 助力 Vue3 开发:打造丝滑的弹性布局(Flexbox)
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...
jwt 存在的无状态的安全问题与解决方案
背景我的需求 解决方法方案1:黑名单存在的问题解决方案问题成本估算: 方案2: 双token刷新核心解决的问题存在的问题 方案3: token与session结合成本估算 方案4: 长连接(websocket) 背景 jwt是无状态的,除了自动失效之外无法手动过期 举个例子: 当我们的token泄露或者密码泄露…...
【Python爬虫】爬取公共交通路网数据
程序来自于Github,以下这篇博客作为完整的学习记录,也callback上一篇爬取公共交通站点的博文。 Bardbo/get_bus_lines_and_stations_data_from_gaode: 这个项目是基于高德开放平台和公交网获取公交线路及站点数据,并生成shp文件,…...
Deepseek API+Python测试用例一键生成与导出-V1
在实际使用场景中,可能只需要获取需求文档中的部分内容,例如特定标题的正文部分、特定段落的表格内容,或者指定图片中的内容。为了满足这一需求,可以对文档清理工具进行优化,支持按标题提取内容、按章节提取表格和图片…...
如何为JAR设置定时重启?
AI越来越火了,我们想要不被淘汰就得主动拥抱。推荐一个人工智能学习网站,通俗易懂,风趣幽默,最重要的屌图甚多,忍不住分享一下给大家。点击跳转到网站 前面我们说过了如何将jar交由Systemctl管理,下面我们…...
麒麟V10-SP2-x86_64架构系统下通过KVM创建虚拟机及配置虚机的NAT、Bridge两种网络模式全过程
文章目录 一、什么是虚拟化?虚拟化具有哪些优势 二、常见的虚拟化技术1、kvm介绍2、kvm工作原理3、kvm功能 三、安装kvm并启动第一个kvm机器1、环境准备2、安装kvm工具3、启动并设置开机自启 libvirtd 服务4、验证 KVM 模块是否加载5、上传系统镜像到指定目录6、网络…...
三方库总结
一、Glide 目标:熟练掌握各种使用方法,了解其设计,背后原理 如果我设计一个图片显示框架,我会怎么做? 1.加载图片资源-从网络上下载图片资源、从本地加载图片资源 如果是从网络上加载图片,需要用到相关的网…...
用DeepSeek-R1-Distill-data-110k蒸馏中文数据集 微调Qwen2.5-7B-Instruct!
下载模型与数据 模型下载: huggingface: Qwen/Qwen2.5-7B-Instruct HF MirrorWe’re on a journey to advance and democratize artificial intelligence through open source and open science.https://hf-mirror.com/Qwen/Qwen2.5-7B-Instruct 魔搭&a…...
知识图谱的推荐实现方案(Vue)
使用 Vue 实现知识图谱思维导图展示的完整方案,结合主流库和最佳实践: 一、技术选型 组件库特点适用场景MindElixir国产开源、中文文档完善、支持关系线教育类知识图谱GoJS功能强大、商业许可、适合复杂交互企业级应用(需付费)D3…...
Nessus安装
Nessus:https://pan.quark.cn/s/f5fb09b6d4fb 1.软件安装 点击安装,剩下的下一步即可。 直接下一步安装即可 2.Web端安装 会弹出一个web窗口 开始初始化 创建用户 开始初始化 3.Cracker 会弹一个黑窗口 运行完,回车即可。访问https://loc…...
【大模型基础_毛玉仁】0.概述
更多内容:XiaoJ的知识星球 【大模型基础_毛玉仁】 系列文章参考 系列文章 【大模型基础_毛玉仁】0.概述 【大模型基础_毛玉仁】1.1 基于统计方法的语言模型 更新中。。。。。。 参考 书籍:大模型基础_完整版.pdf Github:https://github.co…...
quillEditor 禁用复制粘贴图片,以及class转style等问题
<template><div><div class"search-term"><el-form :inline"true" :model"searchInfo" class"demo-form-inline"><el-form-item label"案例标题"><el-input v-model"searchInfo.titl…...
C语⾔数据类型和变量
C 语言的数据类型 类型分类: C 语言提供丰富的数据类型,包括字符型(char、signed char、unsigned char)、整型(short、int、long 等多种,且各有 signed 和 unsigned 修饰形式) 、浮点型&#x…...
centOS 环境 安装redis方法
一、准备centOS环境 参考文章:Hyper-V 安装CentOS7_代码草率了的博客-CSDN博客 二、redis官网 地址:Download | Redis 演示版本为?redis-5.0.14.tar.gz 三、redis源码编译 登录后创建soft目录 进入目录使用wget下载所需资源包 命令:w…...
【Mac】2025-MacOS系统下常用的开发环境配置
早期版本的一个环境搭建参考 1、brew Mac自带终端运行: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" Installation successful!成功后运行三行命令后更新环境(xxx是mac的username&a…...
深入理解动态绑定与多态
动态绑定介绍 Java中的动态绑定,是一种在程序运行时确定方法执行版本的过程。它与多态紧密联系。 在Java中,动态绑定通常发生在以下情况: 方法覆盖:当子类重写父类的一个方法时,调用该方法的行为会根据对象的实际类…...
【数据结构】二叉树总结篇
遍历 递归 递归三部曲: 1.参数和返回值 2.终止条件 3.单层逻辑(遍历顺序) var preorderTraversal function(root) { // 第一种let res[];const dfsfunction(root){if(rootnull)return ;//先序遍历所以从父节点开始res.push(root.val);//递归…...
Zookeeper 及 基于ZooKeeper实现的分布式锁
1 ZooKeeper 1.1 ZooKeeper 介绍 ZooKeeper是一个开源的分布式协调服务,它的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。 原语:操作系统或…...
内嵌踢脚线怎么做能省钱?
家里装修内嵌踢脚线应该怎么做?哪种做法更经济? 先回答内嵌踢脚线应该怎么做? 做内嵌踢脚线有两种办法,简单点来说就是前凸和后挖。 前凸是踢脚线安到原来墙面上,踢脚线是从墙面上凸出来的,想要实现内嵌的效…...