2024-09学习笔记

1.java8的特性回顾

1.拼接join

List<String>list =Arrays.asList("Java","Python","Javascript");
// 使用 Collectors.joining()将元素连按成字符串
String result = list.stream().collect(collectors.joining(",“));
System.out.println(result);// 出:Java,Python, JavaScript

2.limit和skip

limit和skip可以结合使用

limit,只取前几条

skip跳过前几条

先skip(n)再limit(m):跳过n条后取m条

1.limit(long n)
//保留处理结果中的前n个元素。userList = userList.stream().limit(1).collect(Collectors.toList());
2.skip(long n)
//去除(跳过)处理结果中的前n个元素
3. 从处理结果中保留2个元素,再从保留的2个元素中去除第1个元素
userList = userList.stream().limit(2).skip(1).collect(Collectors.toList());
4.从处理结果中去除2个元素后,再保留1个元素
userList = userList.stream().skip(2).limit(1).collect(collectors.toList());

3.toMap和groupBy

groupBy分组

value通常是list

key相同的时候,value会被放到这个key对应的list中

toMap

value为空的时候,会报错

可以改成传统写法,也可以先把value为空的过滤掉

Map<string, string> package2AppNameMap =new HashMap<>()
packageNameMap.forEach(stringstringMap ->{package2AppNameMap.put(stringstringMap.get(constants.PAcKAGE_NAME),stringstringMap.get(constants.APP_NAME));
}):

key相同的时候,要写明处理方式,取新value还是旧value,否则会报错

Map<String, Person> nameToPersonMap = people.stream() 
.collect(Collectors.toMap( 
Person::getName, // 键 
person -> person, // 值使用对象自身 
(existingValue, newValue) -> newValue // 合并函数,选择新值 
));

4.min和max

不用sort再get(0)了,可以直接用max,min函数

函数里边是排序方式

List<String> strings = Arrays.asList("apple", "banana", "cherry", "date");
Optional<String> shortestString = strings.stream()
.min((s1, s2)->s1.length()- s2.length());
if (shortestString.isPresent()){System.out.println("Shortest string:"+ shortestString.get());
else{System.out.println("No strings in the list.");
}

5.流的操作不会改变原集合,会生产新的集合,
 

List<String> newList = list.stream().xxx.

但是foreach时,可以对属性进行修改

2.Mybatis方法不能重载

MyBatis方法重载MyBatis中的Mapper接口方法不支持重载。

这主要是因为MyBatis通过动态代理来生成Mapper接口的实现类,当你调用一个Mapper接口的方法时,MyBatis会根据方法名和参数来选择合适的 SQL语句Q进行执行。如果允许方法重载,即允许多个方法拥有相同的方法名但不同的参数列表,那么MyBatis在解析时会无法准确地确定应该调用哪一个方法,从而导致调用的方法具有不确定性。
具体来说,MyBatis是通过Mapper接口方法名来映射SQL语句的。如果允许方法重载,那么就会出现方法名相同但参数不同的情况,这时MyBatis就无法准确地根据方法名来映射正确的SQL语句。

为了避免这种混淆和不确定性,MyBatis在设计时决定禁止Mapper接口方法的重载。

3.git把多个commit合并成一个

现在的现象是,我本地git status显示我比远程早了10个提交

因为我之前提交到远程的还没被合并

然后如果我让人一个一个给我合并,就比较麻烦,他们要审批十次

所以我就把这十个合并成一个

方法如下

1.$ git rebase -i HEAD~10

# 从HEAD版本开始往过去数10个版本

2.把除了第一条之外的pick,都改成s,然后保存

执行上一条命令后,会出来一个编辑框,把除了第一条之外的pick,都改成s,然后保存

3.然后再push一次

4.当程序里有多个@Schedule时

@Scheduled注解 默认是串行执行的,多个定时任务会互相阻塞。 在默认情况下,Spring的@Scheduled注解使用单线程线程池执行定时任务,这意味着如果一个任务正在执行,其他任务需要等待当前任务执行完毕才能继续执行

对于schedule应该可以开启一个线程池配置,但是我没继续研究

所以两个@schedule之间就要考虑是否要中间隔一段时间,比如第一个@schedule设置的是整点执行,那第二个是否要设置为半点执行

5.数据库大小写问题和程序中contains处理要一致

这是接手别人程序时发现的一个问题

mysql有个字段package_name建了唯一索引,代码中确实做了contains判断,意思表里有这个值就不要重复插入

但是contains是区分大小写的

比如我数据库里有个package_name是A,然后我又传来了一个a,那这个时候contains是返回false,意思是数据库中不存在,就会继续往下走。但是到insert数据库的时候就会因为唯一索引重复而报错。

我补救方式是:contains比较的时候,我把表里边取到的数据,还有传进来的,都toLowercase()

转成小写比较

6.需要分库分表的,可以考虑分区表

这个图片,说什么都粘贴不上来了,闹心。不知道是csdn的问题还是公司电脑问题。

1.创建分区表

5.创建分区表
创建分区表的语法与普通表略有不同,主要是需要指定分区策略:
CREATE TABLE partitioned table(
id INT,
value VARCHAR(100)
)
PARTITION BY RANGE(id)(
PARTITION PI VALUES LESS THAN(10),
PARTITION P2 VALUES LESS THAN(20),
PARTITION P3 VALUES LESS THAN(MAXVALUE)
);

对于分区表来说,增删改查语句和普通语句没任何区别,数据库会按照分区规则去执行

更新分区表的语法与普通表相同,但需要注意更新操作可能会影响分区:

如果更新分区键的值,可能导致数据移动到另一个分区。

但是查询语句不用改,查询的时候就自动按照分区的规则来查了。

2.查询的时候也可以加上分区,可以提高性能

SELECT * FROM partitioned table WHERE partition key = value;

7.一个java程序为什么会看到多个进程?

ps -ef之后会出现两列,PID和PPID

其中PID是当前进程,PPID是父进程

8.泛型和静态方法

类中的非静态方法,可以用定义这个类的时候,传过来的泛型

类中的静态方法,不能用定义这个类时传过来的泛型,需要在自己的静态方法上,自己定义

public class ResultDTO<T> {
//非静态方法,可以使用类传过来的泛型
public ResultDTO<T> success(T data){ return success(data, msg: "success"); }//静态方法,不能用类上边传过来的泛型需要自己使用<T>声明下
public static <T> ResultDTO<T> success(T data, string msg){ResultDTO<T> result = new ResultDTO<>();result.setCode(ResponsecodeEnum.SuccEss.getcode());result.setMsg(msg);result.setData(data):return result;
}

泛型类中的静态方法不能使用类的泛型而应该将该方法定义为泛型方法的原因是:

在java中泛型只是一个占位符,必须在传递类型后才能使用泛型

类实例化时才能真正的传递类型参数,

由于静态方法的加载先于类的实例化,也就是说类中的泛型还没有传递真正的类型参数,静态的方法就已经加载完成了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/456646.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Netty构建WebSocket服务并实现项目群组聊天和实时消息通知推送

文章目录 前言需求分析技术预研Web端方案服务端技术 技术方案设计思路功能实现添加依赖自定义NettyServer自定义webSocketHandler使用NettyServer向在线用户发送消息 需要完善的地方 前言 我们的项目有个基于项目的在线文档编制模块&#xff0c;可以邀请多人项目组成员在线协同…

日常记录,使用springboot,vue2,easyexcel使实现字段的匹配导入

目前的需求是数据库字段固定&#xff0c;而excel的字段不固定&#xff0c;需要实现excel导入到一个数据库内。 首先是前端的字段匹配&#xff0c;显示数据库字段和表头字段 读取表头字段&#xff1a; 我这里实现的是监听器导入&#xff0c;需要新建一个listen类。 读Excel …

BiGRU实现中文关系抽取算法

获取更多完整项目代码数据集&#xff0c;点此加入免费社区群 &#xff1a; 首页-置顶必看 1. 项目简介 本项目旨在实现并训练一个深度学习模型&#xff0c;应用于时间序列数据处理或自然语言处理任务中。项目采用了门控循环单元&#xff08;GRU&#xff0c;Gated Recurrent U…

Python爬虫进阶(实战篇一)

接&#xff0c;基础篇&#xff0c;链接&#xff1a;python爬虫入门&#xff08;所有演示代码&#xff0c;均有逐行分析&#xff01;&#xff09;-CSDN博客 目录 1.爬取博客网站全部文章列表 ps:补充&#xff08;正则表达式&#xff09; 爬虫实现 爬虫代码&#xff1a; 2.爬…

uniapp uview 上传图片,数据以formData + File 形式传输

期望 后端期望前端给的传参为 formData 形式, 同时文件的数据类型为File 形式. 解决过程 将文件处理为 File 格式 uview 中的 upload 组件点击上传之后不是标准的 File 形式,点击上传单个文件之后的控制台信息如下: [{"url": "blob:http://localhost:8081/…

《Sui区块链:重塑去中心化应用的新星与未来潜力》

目录 引言 一、Sui 1、 技术架构 2、 编程语言 3、Move起源 4、Move的几个关键点&#xff1a; 5、Move 智能合约编程语言 6、智能合约编程语言可以做什么 7、和其他编程语言有什么不同 8、 安全性 9、开发者体验 10、生态系统 11、 未来发展 总结 引言 在区块链技…

鸿蒙到底是不是纯血?到底能不能走向世界?

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 2016年5月鸿蒙系统开始立项。 2018年美国开始经济战争&#xff0c;其中一项就是制裁华为&#xff0c;不让华为用安卓。 2019年8月9日华为正式发布鸿蒙系统。问题就出在这里&#xff0c;大家可以仔细看。 安卓一…

kafka 的高可用机制是什么?

大家好&#xff0c;我是锋哥。今天分享关于【kafka 的高可用机制是什么&#xff1f;】面试题&#xff1f;希望对大家有帮助&#xff1b; kafka 的高可用机制是什么&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Apache Kafka 是一个分布式消息系统&am…

【AI学习】Mamba学习(十二):深入理解S4模型

#1024程序员节&#xff5c;征文# HiPPO的学习暂告一段落&#xff0c;按照“HiPPO->S4->Mamba 演化历程”&#xff0c;接着学习S4。 S4对应的论文&#xff1a;《Efficiently Modeling Long Sequences with Structured State Spaces》 文章链接&#xff1a;https://ar5iv…

【移动应用开发】界面设计(二)实现水果列表页面

续上一篇博客 【移动应用开发】界面设计&#xff08;一&#xff09;实现登录页面-CSDN博客 目录 一、采用ViewBinding实现一个RecyclerView 1.1 在app/build.gradle中添加recyclerview依赖&#xff0c;并打开viewBinding &#xff08;1&#xff09;在app/build.gradle中添加…

CORS预检请求配置流程图 srpingboot和uniapp

首先要会判断预检请求 还是简单请求 简单请求 预检请求 #mermaid-svg-1R9nYRa7P9Pll4AK {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-1R9nYRa7P9Pll4AK .error-icon{fill:#552222;}#mermaid-svg-1R9nYRa7P9Pll4…

智能园艺:Spring Boot植物健康系统

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理植物健康系统的相关信息成为必然。开发合适…

51单片机——OLED显示图片

取模软件&#xff1a;链接:https://pan.baidu.com/s/1UcrbS7nU4bsawNxsaaULfQ 提取码:gclc 1、如果图片大小和格式不合适&#xff0c;可以先用Img2Lcd软件进行调整图片大小&#xff0c;一般取模软件使用的是.bmp图片&#xff0c;可以进行输出.bmp格式。软件界面如下&#xff1…

开源vGPU方案 HAMi实现细粒度GPU切分——筑梦之路

前言 为什么需要 GPU 共享、切分等方案&#xff1f; 在使用GPU的过程中我们会发现&#xff0c;直接在裸机环境使用&#xff0c;都可以多个进程共享 GPU&#xff0c;怎么到 k8s 环境就不行了&#xff1f; 1. 资源感知 在 k8s 中资源是和节点绑定的&#xff0c;对于 GPU 资源…

打包方式-jar和war的区别

1、jar包 JAR包是类的归档文件&#xff0c;与平台无关的文件格式&#xff0c;其实jar包就是java的类进行编译生成的class文件进行打包的压缩包。 JAR以ZIP文件格式为基础&#xff0c;与ZIP不同的是&#xff0c;JAR不仅用于压缩和发布&#xff0c;还用于部署和封装库、组件和插…

R实验——logistic回归、LDA、QDAKNN

数据集介绍&#xff1a; mpg&#xff0c;miles per gallon即油耗&#xff0c;这个数据集来自卡内基梅隆大学维护的StatLib库。1983年美国统计协会博览会使用了该数据集。这个数据集是对StatLib库中提供的数据集稍加修改的版本。根据Ross Quinlan(1993)在预测属性“mpg”中的使…

利用飞腾派进行OpenCV开发

实验目标&#xff1a; 完成飞腾平台OpenCV开发。 实验大纲&#xff1a; Mat数据结构加载、显示、保存图像读写像素RGB图像分离彩色图转灰度图 Mat数据结构 Mat是一个类&#xff0c;由两个数据部分组成&#xff1a;矩阵头(大小,通道,数据类型等)和数据块(像素 值)。创建示例…

vue3 选中对话框时,对话框右侧出一个箭头

先看下做出的效果&#xff1a; html代码&#xff0c;其中listPlan.records是后台拿到的数据进行遍历 <template><ul class"list"><li style"height: 180px;width: 95%":key"index"v-for"(item, index) in listPlan.record…

Android 判断手机放置的方向

#1024程序员节&#xff5c;征文# 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 需求 老板&#xff1a;我有个手持终端&#xff0c;不能让他倒了&#xff0c;当他倒或者倾斜的时候要发出报警&#xff1b; 程序猿&#xff1a;我这..... 老板…

Servlet(三)-------Cookie和session

一.Cookie和Session Cookie和Session都是用于在Web应用中跟踪用户状态的技术。Cookie是存储在用户浏览器中的小文本文件&#xff0c;由服务器发送给浏览器。当用户再次访问同一网站时&#xff0c;浏览器会把Cookie信息发送回服务器。例如&#xff0c;网站可以利用Cookie记住用…