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.mzph.cn/diannao/56761.shtml

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

相关文章

正规方程推导,详细版

推导正规方程&#xff08;Normal Equation&#xff09;通常是在线性回归的上下文中进行的。线性回归的目标是找到一个线性模型 h θ ( x ) θ T x h_\theta(x) \theta^T x hθ​(x)θTx&#xff0c;使得模型的预测值与实际值之间的差异&#xff08;通常是均方误差&#xff0…

GitHub每日最火火火项目(10.19)

项目名称&#xff1a;kokkos/kokkos 项目介绍&#xff1a;kokkos/kokkos 是 Kokkos C性能可移植编程生态系统。它专注于提供并行执行和内存抽象的编程模型。在现代计算中&#xff0c;充分利用硬件的并行处理能力对于提高程序性能至关重要。kokkos 为 C开发者提供了强大的工具&a…

分布式篇(分布式事务)(持续更新迭代)

一、事务 1. 什么是事务 2. 事务目的 3. 事务的流程 4. 事务四大特性 原子性&#xff08;Atomicity&#xff09; 一致性&#xff08;Consistency&#xff09; 持久性&#xff08;Durability&#xff09; 隔离性&#xff08;Isolation&#xff09; 5. MySQL VS Oracle …

016_基于python+django网络爬虫及数据分析可视化系统2024_kyz52ks2

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍&#xff1a;CodeMentor毕业设计领航者、全网关注者30W群落&#xff0c;InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者&#xff0c;博客领航之星、开发者头条/腾讯云/AW…

AMBA总线AXI与CHI特性接口比对

AXI&#xff08;Advanced eXtensible Interface&#xff09; 和 CHI&#xff08;Coherent Hub Interface&#xff09; 协议的接口和特性区别的对比表&#xff1a; 特性/接口AXI 协议CHI 协议协议类型内存映射接口&#xff0c;专注于数据传输和外设通信缓存一致性接口&#xff…

IE11删除hao360主页

欲删 hao.360.com&#xff0c;hao360.mainshe.com 主页&#xff0c;必先删除注册表键&#xff1a; HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\EUPP HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main "Start Page" "Default_Pag…

87. 多边形轮廓Shape(圆弧)

先掌握上节课关于Shape内容&#xff0c;再继续学习本节课关于Shape圆弧的介绍。 圆弧方法.arc() 圆弧方法.arc()使用方式和原来学习过的圆弧曲线ArcCurve整体相似&#xff0c;区别在于圆心定位方式有差异。 圆弧.arc()参数的圆心坐标是相对当前.currentPoint而言,而不是坐标原…

0x12 Dapr Dashboard configurations 未授权访问漏洞 CVE-2022-38817

参考: Dapr Dashboard configurations 未授权访问漏洞 CVE-2022-38817 | PeiQi文库 (wgpsec.org)免责声明 欢迎访问我的博客。以下内容仅供教育和信息用途: 合法性:我不支持或鼓励非法活动。请确保遵守法律法规。信息准确性:尽管我尽力提供准确的信息,但不保证其完全准确…

斜视角,视角和入射角

注意分辨率中的2 在&#xff1b;雷达的径向&#xff0c;分辨率(时间)就是脉冲宽度/2

SAP 控制生产订单发料数量不能超过生产订单预留数量

SAP 控制生产订单发料数量不能超过生产订单预留数量 业务场景前台操作1、创建生产订单---CO012、生产订单发料---MIGO3、系统后台配置业务场景 正常生产订单进行投料的根据生产订单组件进行投料,比如生产订单组件数量是100PCS,那在做工单发料的时候MIGO带出的默认发料数量就…

机器学习(MachineLearning)(8)——模型评估与优化

机器学习&#xff08;MachineLearning&#xff09;&#xff08;1&#xff09;——机器学习概述 机器学习&#xff08;MachineLearning&#xff09;&#xff08;2&#xff09;——线性回归 机器学习&#xff08;MachineLearning&#xff09;&#xff08;3&#xff09;——决策树…

Linux_进程控制

一&#xff1a;进程创建 fork()函数创建新进程 #include <unistd.h> pid_t fork(void); 返回值&#xff1a;自进程中返回0&#xff0c;父进程返回子进程id&#xff0c;出错返回-1 进程调用fork&#xff0c;当控制转移到内核中的fork代码后&#xff0c;内核做&#xff1a;…

Spring Boot Web框架:智慧社区设计新思路

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…

cocos Creator + fairyGUI 快速入门

版本 Creator 3.8.x&#xff0c;FairyGUI 2022 大部分内容来自 https://en.fairygui.com/docs/sdk/creator 1.新建cocos项目&#xff0c;根目录运行 npm install --save fairygui-cc 引入 fairyGUI库 2.assets目录之外新建fairyGUI项目 3.fairyGUI中编辑UI 完成后发布到Creato…

uniapp,获取头部高度

头部自定义时候&#xff0c;设置获取安全区域&#xff0c;可以用 uni.getSystemInfoSync();接口。 <view class"statusBar" :style"{height:statusBarHeightpx}"> let SYSuni.getSystemInfoSync(); let statusBarHeightref(SYS.statusBarHeight) …

SAP_FI_学习树状图

SAP FI学习 │ ├── SAP FI基础知识 │ ├── SAP FI概述 │ ├── 财务会计的基本概念 │ └── SAP FI的主要功能 │ ├── 核心组件 │ ├── 会计凭证处理 │ │ ├── 凭证类型 │ │ ├── 借贷记账 │ │ └── 凭证审核流程 │ ├──…

Python基础——类与对象

类与对象的理解&#xff1a; 在程序中我们将类看作是设计图纸&#xff0c;对象则是根据这个图纸生产的产品。面向对象编程就是使用对象编程&#xff0c;在类中我们定义成员属性和方法。 来看下面这个例子&#xff0c;创建student类&#xff0c;定义对象并对属性赋值。 class S…

解决linux服务器磁盘占满问题(详细,有效,100%解决)

应用场景&#xff1a; 在我们的日常开发中&#xff0c;我们的服务器总是在不知不觉中磁盘莫名奇妙少了很多空间&#xff0c;或者被占满了&#xff0c;如果这时候要想要存储什么文件&#xff0c;突然发现空间不够了。但我们通常也不知道那些文件占用的空间大&#xff0c;这时候…

Vue是一套构建用户界面的渐进式框架,常用于构建单页面应用

学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把手教你开发炫酷的vbs脚本制作(完善中……&#xff09; 4、牛逼哄哄的 IDEA编程利器技巧(编写中……&#xff09; 5、面经吐血整理的 面试技…

红黑树的理解与实现(详解)

相关的数据结构&#xff1a; 搜索二叉树-CSDN博客 AVL树的创建与检测-CSDN博客 个人主页&#xff1a;敲上瘾-CSDN博客 个人专栏&#xff1a;游戏、数据结构、c语言基础、c学习、算法 目录 一、红黑树规则&#xff1a; 二、红黑树的插入 1.变色 2.单旋变色 3.双旋变色 三、…