20230904工作心得:集合应该如何优雅判空?
1 集合判空
List<String> newlist = null;//空指针if( !newlist.isEmpty()){newlist.forEach(System.out::println);}//空指针if(newlist.size()>0 && newlist!=null){newlist.forEach(System.out::println);}//可行if(newlist!=null && newlist.size()>0){newlist.forEach(System.out::println);}//可行 if(CollectionUtils.isEmpty(newlist)){System.out.println("newlist为空");}
其中CollectionUtils是springframework里的方法.
2 Hibernate findAllByXX ?
3 list 转 map 出错。
//出错。brandList有值,但是无法传递给groupMap Map<String, String> groupMap = new HashMap<>();if(!brandList.isEmpty()){groupMap = brandList.stream().collect(Collectors.toMap(Brand::getBrand,Brand::getCastBrand));}//最后用了这个方法Map<String, String> groupMap = new HashMap<>();if(!CollectionUtils.isEmpty(groupMap)){groupMap.putAll(brandList.stream().collect(Collectors.toMap(Brand::getBrand,Brand::getCastBrand)));}
4 list的lambda操作
1对多映射:根据手机号分组,拿手机号对应的一批数据
Map<String, List<String>> groupMap = brandList
.stream()
.collect(Collectors.groupingBy(Brand::getBrand,Collectors.mapping(Brand::getCastBrand,Collectors.toList())));
1对1映射:相当于把一个集合数据,从中抽离出两列key-value
Map<String, String> groupMap = brandList.stream()
.collect(Collectors.toMap(Brand::getBrand,Brand::getCastBrand),(k1,k2)->k1));
这里有个潜在的问题,如果产生了重复的key,会报错。所以需要加后面的(k1,k2)->k1),这个表示如果有冲突,用旧的值。
优雅:
对集合过滤之后,然后针对里面每个元素操作,如果每个元素里有个string,你还可以切割,然后往map里存。
5 map里getOrDefault(key,default).有效防止空指针
6 string 切完之后 是数组。然后再 arrays.aslist 变成 list
7 巧用redis 做次数限制。
这个还挺实用的,比如对解密次数的限制,对个数的限制等等。
8 数据库里别用limit作为字段名,limit是关键字啊哥哥。
相关文章:
20230904工作心得:集合应该如何优雅判空?
1 集合判空 List<String> newlist null;//空指针if( !newlist.isEmpty()){newlist.forEach(System.out::println);}//空指针if(newlist.size()>0 && newlist!null){newlist.forEach(System.out::println);}//可行if(newlist!null && newlist.size()&…...
使用Python进行健身手表数据分析
健身手表(Fitness Watch)数据分析涉及分析健身可穿戴设备或智能手表收集的数据,以深入了解用户的健康和活动模式。这些设备可以跟踪所走的步数、消耗的能量、步行速度等指标。本文将带您完成使用Python进行Fitness Watch数据分析的任务。 Fitness Watch数据分析是健…...
什么是malloxx勒索病毒,服务器中malloxx勒索病毒了怎么办?
Malloxx勒索病毒是一种新型的电脑病毒,它通过加密用户电脑中的重要文件数据来威胁用户,并以此勒索钱财。这种病毒并不是让用户的电脑瘫痪,而是以非常独特的方式进行攻击。在感染了Malloxx勒索病毒后,它会加密用户服务器中的数据&a…...
CocosCreator3.8研究笔记(六)CocosCreator 脚本装饰器的理解
一、什么是装饰器? 装饰器是TypeScript脚本语言中的概念。 TypeScript的解释:在一些场景下,我们需要额外的特性来支持标注或修改类及其成员。装饰器(Decorators)为我们在类的声明及成员上通过元编程语法添加标注提供了…...
docker login harbor http login登录
前言 搭建的 harbor 仓库为 http 协议,在本地登录时出现如下报错: docker login http://192.168.xx.xx Username: admin Password: Error response from daemon: Get "https://192.168.xx.xx/v2/": dialing 192.168.xx.xx:443 matches static …...
day5 qt
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);timer_idthis->startTimer(100);//啓動一個定時器 每100ms發送一次信號ui->Edit1->setPlaceholderTex…...
【80天学习完《深入理解计算机系统》】第十三天 3.7 缓冲区溢出 attack lab
3.7 缓冲区溢出 && attack lab...
Hadoop生态之hive
一 概述与特点 之所以把Hive放在Hadoop生态里面去写,是因为它本身依赖Hadoop。Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类 SQL 查询功能。 其本质是将 SQL 转换为 MapReduce/Spark 的任务进行运算,底层由 HDFS 来提供…...
AWS DynamoDB浅析
AWS DynamoDB是一个NOSQL数据库。 可以通过IAM直接控制权限,和AWS其他服务连用非常方便。 DynamoDB的几个概念 Partition Key:分区键。如果没有Sort key,那么Partition Key必须唯一,如有Sort key,Partition Key可以重…...
Linux安装ffmpeg
1 下载yasm wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz tar -zxvf yasm-1.3.0.tar.gz cd yasm-1.3.0 ./configure make && make install2 下载ffmpeg wget http://ffmpeg.org/releases/ffmpeg-3.1.3.tar.bz2 tar jxvf ffmpeg-3.1.3.tar.…...
(18)不重启服务动态停止、启动RabbitMQ消费者
我们在消费RabbitMQ消息的过程中,有时候可能会想先暂停消费一段时间,然后过段时间再启动消费者,这个需求怎么实现呢?我们可以借助RabbitListenerEndpointRegistry这个类来实现,它的全类名是org.springframework.amqp.r…...
数据仓库的流程
数据仓库完全用统计分析框架实现:Spark,MR 但是因为实际生产环境中,需求量非常大, 如果每个需求都采用独立c代码开发方式,重复计算会很多. 提高性能的方法: 1.减少数据量 2. 减少重复计算 例如RDD cache 可以减少重复计算,但是不安全,都在缓存中, persist 都放内存中,但是慢 而…...
MyBatis-Plus深入 —— 条件构造器与插件管理
前言 在前面的文章中,荔枝梳理了一个MyBatis-Plus的基本使用、配置和通用Service接口,我们发现在MyBatis-Plus的辅助增强下我们不再需要通过配置xml文件中的sql语句来实现基本的sql操作了,不愧是最佳搭档!在这篇文章中,…...
C语言结构体的初始化方式
逐个初始化字段:这是最直接的方式,你可以逐个为结构体的每个字段进行初始化。 struct Student { char name[50]; int age; float marks; }; struct Student student1 {"Alice", 20, 89.5}; 2.使用结构体字面值初始化:这种方…...
Vue生成多文件pdf准考证
这是渲染的数据 这是生成的pdf文件,直接可以打印 需要安装和npm依赖和引入封装的pdf.js文件 npm install --save html2canvas // 页面转图片 npm install jspdf --save // 图片转pdfpdf.js文件 import html2canvas from "html2canvas"; import jsPDF …...
Rust的derive思考
这几天在Yew的学习实践中,发现derive中的参数中包含了yew自己的东西,比如yew::Properties。习惯使用#[derive(Clone, Debug, PartialEq)]之后,发现还有新的成员,这让我好奇起来。 首先让我们来回顾一下derive是什么。 #[derive(…...
Python常用模块
文章目录 1. time:时间2. calendar:日历3. datetime:可以运算的时间4. sys:系统5. os:操作系统6. random:随机数7. json:序列化8. pickle:序列化9. logging 模块9.1 什么是logging模…...
Java“牵手”京东商品评论数据接口方法,京东商品评论接口,京东商品评价接口,行业数据监测,京东API实现批量商品评论内容数据抓取示例
京东平台商品评论数据接口是开放平台提供的一种API接口,通过调用API接口,开发者可以获取京东商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片、评论内容、评论日期、评论图片、追评内容等详细信息 。 获取商品评论接口API是一种用于获取…...
算法leetcode|75. 颜色分类(rust重拳出击)
文章目录 75. 颜色分类:样例 1:样例 2:提示: 分析:题解:rust:go:c:python:java: 75. 颜色分类: 给定一个包含红色、白色和蓝色、共 n…...
网络安全(黑客)自学笔记学习路线
谈起黑客,可能各位都会想到:盗号,其实不尽然;黑客是一群喜爱研究技术的群体,在黑客圈中,一般分为三大圈:娱乐圈 技术圈 职业圈。 娱乐圈:主要是初中生和高中生较多,玩网恋…...
A89306电机控制器驱动库:SPI寄存器级控制与FOC系统集成
1. A89306电机控制器驱动库技术解析与工程实践1.1 芯片定位与系统角色A89306是由Allegro MicroSystems推出的高集成度三相无刷直流(BLDC)电机控制器专用IC,面向中高端工业驱动与精密运动控制场景。该芯片并非通用MCU,而是集成了栅…...
知识竞赛软件售后服务哪家好?真实用户评价与选购指南
知识竞赛软件售后服务哪家好?真实用户评价揭秘在数字化教学与企业培训普及的今天,知识竞赛软件已成为学校、企业和各类机构开展活动的得力工具。然而,软件购买并非一锤子买卖,售后服务的质量直接关系到软件能否长期稳定运行、活动…...
Spring-AI 第 13 章 - 多模态消息处理详解
📚 理论基础 什么是多模态 AI? 多模态 AI(Multimodal AI) 是能够同时处理和生成多种类型数据(文本、图像、音频等)的人工智能系统。 多模态模型架构 ┌──────────────┐ ┌──────────────┐ │ 图像输入 │ │ 文本输入 …...
手把手教你用STM32CubeMX和HAL库驱动DW3000:从SPI配置到第一个测距Demo
零基础玩转DW3000:STM32CubeMXHAL库实现厘米级UWB测距全指南 当我们需要在仓库里快速定位某个货架上的商品,或是让扫地机器人精准识别家具位置时,传统GPS和蓝牙方案的精度往往捉襟见肘。这正是UWB(超宽带)技术大显身手…...
02_Elasticsearch知识体系之Mapping映射设计与索引建模实战
02_Elasticsearch知识体系之Mapping映射设计与索引建模实战 Elasticsearch知识体系 基础概念层数据存储层【本文】查询语言层搜索能力层数据处理层集群架构层开发集成层AI增强层行业应用层 关键词: Elasticsearch、Mapping、动态映射、显式映射、字段类型、分片、副…...
直流电机双闭环调速控制系统仿真模型 转速电流双闭环PI控制 Matlab/Simulink仿真模型 带报告
直流电机双闭环调速控制系统仿真模型 转速电流双闭环PI控制 Matlab/Simulink仿真模型 带报告在 Simulink 里搭建直流电机双闭环调速系统,而是通过连接模块来实现。这段代码会自动计算 PI 控制器的参数,DC_Motor_Dual_Loop 的仿真模型。 🛠️ …...
Ghidra逆向工程平台:探索二进制世界的开源利器
Ghidra逆向工程平台:探索二进制世界的开源利器 【免费下载链接】ghidra_installer Helper scripts to set up OpenJDK 11 and scale Ghidra for 4K on Ubuntu 18.04 / 18.10 项目地址: https://gitcode.com/gh_mirrors/gh/ghidra_installer 在当今数字化时代…...
雷赛HBS86闭环步进驱动方案代码功能说明
某雷赛86闭环步进驱动方案 HBS86H 86闭环电机驱动器/混合伺服驱动器。原理图PCB代码。整体方案打包。代码无错误无警告。一、方案概述 雷赛HBS86闭环步进驱动方案基于TI的DSP2803x系列芯片构建,该方案整合了原理图、PCB设计以及配套代码,形成一套完整的…...
3大技术突破让shadPS4模拟器实现跨平台PS4游戏体验
3大技术突破让shadPS4模拟器实现跨平台PS4游戏体验 【免费下载链接】shadPS4 PS4 emulator for Windows,Linux,MacOS 项目地址: https://gitcode.com/gh_mirrors/shad/shadPS4 shadPS4作为一款开源的PS4模拟器,通过完全开源的模式和先进的技术架构࿰…...
8-Bit硬边框UI如何提升AI工具体验?Pixel Fashion Atelier交互反馈机制解析
8-Bit硬边框UI如何提升AI工具体验?Pixel Fashion Atelier交互反馈机制解析 1. 像素化界面设计的创新价值 在AI工具同质化严重的今天,Pixel Fashion Atelier通过8-Bit硬边框UI设计带来了全新的用户体验。这种设计不仅仅是视觉风格的改变,更是…...
