Java
文章平均质量分 58
Java 是近 10 年来计算机软件发展过程中的传奇,其在众多开发者心中的地位可谓“爱不释手”,与其他一些计算机语言随着时间的流逝影响也逐渐减弱不同,Java 随着时间的推移反而变得更加强大。
最小的帆也能远航
不必借光而行,你我亦是星辰!
展开
-
Stream API来输出按某个属性(比如type)出现次数最多的对象,并且在出现次数相同的情况下选择列表中时间最早的那个对象
【代码】Stream API来输出按某个属性(比如type)出现次数最多的对象,并且在出现次数相同的情况下选择列表中时间最早的那个对象。原创 2024-08-21 17:05:02 · 304 阅读 · 0 评论 -
计算循环冗余码(CRC)
A 011B 110C 11D 010 0的个数为:方法一:多项式最高次项的次数…3 结果:101110 000对应的二进制数计算,类似下图计算题中则为1001接着进行模二除法:【异或】“同0异1”,类似下图计算 题中除完后只剩2位,这时就需要在前面补0,结果为011原创 2024-03-05 19:11:09 · 388 阅读 · 0 评论 -
String与Timestamp互转
而java.sql.Date是java.util.Date的一个子类,专门用于与数据库交互时存储日期。时间精度:java.util.Date可以保存日期和时间的毫秒级精度,而java.sql.Date只保存日期的精度,时间部分被设置为午夜(00:00:00)。总结来说,java.sql.Date适用于与数据库交互时只需要保存日期部分的情况,而java.util.Date则适用于通用的日期和时间处理。java.sql.Date和java.util.Date是Java中表示日期和时间的两个类,它们有一些区别。原创 2023-12-27 11:05:00 · 565 阅读 · 0 评论 -
Typora使用PicGo+Gitee上传图片报错403 Forbidden
使用PicGo+Gitee上传图片,上传失败了,错误信息如下。打开PicGo的日志文件查看,可以看到错误详情如下。重新配置,解决了这个问题。原创 2023-12-26 17:37:45 · 644 阅读 · 0 评论 -
Typora配置gitee图床踩坑记录:“success“:false,“message“:“upload error或者picgo 错误:repo name解决方法
该是说出现了**“message”:"upload error**这个问题,然后要去picgo的日志(log)里面去看一下错误原因。在设置仓库名的时候,格式是【用户名】/【仓库】,而我只写了仓库的名称,,就这样就解决了。建议,还是仔细看下对应目录下的日志。名称,,就这样就解决了。原创 2023-12-26 17:31:36 · 657 阅读 · 0 评论 -
Typora使用PicGo+Gitee上传图片
点击PicGo-Setup-2.3.0-x64.exe (64位安装)然后打开gitee(没注册先注册)原创 2023-12-26 17:26:53 · 562 阅读 · 0 评论 -
@RequestMapping注解中produces和consumes属性
通俗来说,在http协议中,用来表示传输内容的格式就是MediaType,比如text/html,application/json等,其中text代表介质,html代表格式。例3:当配置produces()属性的时候,如果未设置Accept请求头,那么默认就是*/*,会根据produces属性来输出响应头的Content-Type。例2:当配置produces()属性的时候,需要Accept与配置的属性兼容,否则会抛出406或415异常。功能2:默认会把produces中配置的内容写到响应头的。原创 2023-12-26 16:58:33 · 2000 阅读 · 0 评论 -
Java BigDecimal 的舍入模式(RoundingMode)
代码执行到此处,会抛出 ArithmeticException 异常。原创 2023-12-25 14:40:12 · 430 阅读 · 0 评论 -
Java中的bigDecimal的类型小数点后的0如何补全
BigDecimal类在高精度计算场景下具有很强的优势,能够保证计算精度不会丢失。在需要进行货币、分数、科学计算等场景时,常常会用到BigDecimal类。对于需要保留两位小数舍去后面的情况,BigDecimal类提供了很多种不同的舍入方式。开发人员可以根据实际需求选取合适的舍入方式,达到精确计算的效果。原创 2023-12-25 11:07:56 · 956 阅读 · 0 评论 -
switch case结合枚举值使用的问题
未使用枚举类代码前,想要把什么东西都写死在代码里然后结合了switch case后理想效果应当如下但是出现了如下问题:在case分支判断那里需要声明常量(需要在编译时被指定/避免二义性,balabala,这个地方为什么不能使用枚举类型获取值,个人感觉和JVM加载顺序有关,然后查了查,有说法是因为需要在编译时进行类型检查,编译的时候就应该指定,运行时候知道是什么值),这样的话,就需要对枚举类进行改造,才能在switch case中使用枚举类进行分支判断。原创 2023-12-18 14:11:19 · 1073 阅读 · 0 评论 -
Stream流中anyMatch和allMatch和noneMatch的区别
allMatch里面不适合写 && ,只适合写 ||,如果写&&,编译器会自动报黄色波浪线。原创 2023-12-16 18:06:30 · 1020 阅读 · 0 评论 -
java stream的常见操作
假设有 Student 类,里面含有 id、name、score 等信息。假设有Student类,里面含有id、name、score等信息。假设有 Student 学生类,里面含有 id、name、score 等信息。上面是流里面使用 max、min、average 、reduce 方法获取数组的最大、最小值、平均值,求和。首先需要将该字符串转换为数组,接下来需要过滤掉非整数元素,最后,将该数组的剩余元素转换为数字并求和。除了上面的方法还可以像下面这样获取最大值、最小值、平均值,求和。原创 2023-12-16 17:54:04 · 1682 阅读 · 0 评论 -
Java Optional基本操作
Java 9引入了 or() 方法,or 操作与 orElse 和 orElseGet 操作相似,只不过 or 操作返回的是一个新的Optional 对象,而 orElse 和 orElseGet 操作返回的是 Optional 中的值。1.无论 Optional 中的值是否为空 orElse 中的代码都会执行,而 orElseGet 中的代码只有 Optional 中的值为空才会执行。ofNullable 接收的值可以是 null,不会报空指针异常,但如果接收的值是是 null,在使用。转载 2023-11-24 09:53:36 · 320 阅读 · 0 评论 -
Java8使用Stream流实现List列表简单使用
Java8提供了(流)处理集合的关键抽象概念,Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。它可以对集合进行操作,可以执行非常复杂的查找、过滤和映射数据等操作。Stream API 借助于同样新出现的Lambda表达式,极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。下面是Stream常用函数综合实例:创建User.class(用户信息表)使用forEach()遍历列表数据。原创 2023-04-26 19:44:57 · 2405 阅读 · 0 评论 -
了解JWT
1.什么是JWTJson web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。2.起源说起JWT,我们应该来谈一谈基于token的认证和传统的session转载 2022-03-14 15:09:15 · 714 阅读 · 0 评论 -
Java 8 的 Period 和 Duration 类
Period 和 Duration。两个类看表示时间量或两个日期之间的差,两者之间的差异为:Period基于日期值,而Duration基于时间值。1.Period 类Period 类表示一段时间的年、月、日,开使用between()方法获取两个日期之间的差作为Period 对象返回: LocalDate startTime = LocalDate.of(2021, 12, 15); LocalDate endTime = LocalDate.of(20.原创 2022-01-10 15:25:37 · 1592 阅读 · 0 评论 -
Idea 删除当前一行的快捷键
使用eclipse,有时候出现多个空行时,习惯使用快捷键:Ctrl + D,删除当前一行。最近使用idea开发,发现手动删除空行,很麻烦,特意查了一下,发现是快捷键:Ctrl + Y。如下图所示:使用Ctrl + Y后删除当前行另外:可以使用设置,讲idea的快捷键设置为eclipse模式...原创 2022-01-10 14:27:18 · 12090 阅读 · 0 评论 -
Java8 Instant 时间戳
在java.util.Date类与LocalDate、LocalDateTime类之间转换中 均可以通过Instant作为中间类完成转换,Instant的使用还是比较方便的,下面介绍Instant的使用。1、创建Instant实例Instant now = Instant.now();System.out.println("now:"+now);控制台输出:now:2022-01-10T06:13:19.713Z注意:通过这种方式获取的时间戳与北京时间相差8个时区,需要.原创 2022-01-10 14:25:38 · 571 阅读 · 0 评论 -
Intellij idea 的全局搜索快捷键方法
1、Ctrl+N按名字搜索类相当于eclipse的ctrl+shift+R,输入类名可以定位到这个类文件,就像idea在其它的搜索部分的表现一样,搜索类名也能对你所要搜索的内容多个部分进行匹配,而且如果能匹配的自己写的类,优先匹配自己写的类,甚至不是自己写的类也能搜索。2、Ctrl+Shift+N按文件名搜索文件同搜索类类似,只不过可以匹配所有类型的文件了。3、Ctrl+H查看类的继承关系,例如HashMap的父类是AbstractMap,子类则有一大堆。4、Ctrl+A原创 2021-11-20 18:34:45 · 2201 阅读 · 0 评论 -
ArrayList和LinkedList区别
1. 是否保证线程安全:ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全; 2. 底层数据结构:Arraylist 底层使用的是Object数组;LinkedList 底层使用的是双向链表数据结构(JDK1.6之前为循环链表,JDK1.7取消了循环。注意双向链表和双向循环链表的区别,下面有介绍到!) 3. 插入和删除是否受元素位置的影响:①ArrayList 采用数组存储,所以插入和删除元素的时间复杂度受元素位置的影响。比如:执行add(E...原创 2021-09-29 10:04:38 · 121 阅读 · 0 评论 -
Hashtable、HashMap、TreeMap的区别
HashMap是继承自AbstractMap类,而HashTable是继承自Dictionary类。不过它们都同时实现了map、Cloneable(可复制)、Serializable(可序列化)这三个接口。存储的内容是基于key-value的键值对映射,不能有重复的key,而且一个key只能映射一个value。HashSet底层就是基于HashMap实现的。 Hashtable的key、value都不能为null;HashMap的key、value可以为null,不过只能有一个key为null,但可以有.原创 2021-09-26 21:13:32 · 212 阅读 · 0 评论 -
HashMap面试基础
1.HashMap底层数据结构JDK1.7及之前:数组+链表 JDK1.8:数组+链表+红黑树关于HashMap基本的大家都知道,但是为什么数组的长度必须是2的指数次幂,为什么HashMap的加载因子要设置为0.75,为什么链表长度大于等于8时转成了红黑树?2.HashMap添加元素分析当添加元素时,会通过哈希值和数组长度计算计算下标来准确定位该元素应该put的位置,通常我们为了使元素时分布均匀会使用取模运算,用一个值去模上总长度,例如:index=hashCode % arr.len原创 2021-09-26 19:04:33 · 152 阅读 · 0 评论 -
Java高级部分面试大全
1.IO外存 内存 缓存打开txt文件的步骤:启动一个应用程序[记事本,word,excel],系统会给这个程序分配内存空间 在外存和内存之间建立一个管道 3.将外存中的数据通过管道输送到内存中 4.输送数据的管道叫做数据流对象字节是可以操作的最小的有意义的单位,所有的数据都可以用字节表示。字节输入流:InputStream 所有字节输入流的抽象父类FileInputStream ...原创 2021-09-03 09:00:36 · 201 阅读 · 0 评论 -
JAVA基础面试大全
1.短路与(&&)、短路或(||)、逻辑与(&)、逻辑或(|)的区别:短路与、逻辑与:有假必为假,全真为真逻辑或、短路或:有真必为真,全假为假逻辑或、逻辑与:逻辑中表达式必须全部计算完。短路与、短路或:短路中表达式不需要计算完。2.=="和equals的区别==操作符专门用来比较两个变量的值是否相等equals方法是用于比较两个独立对象的内容是否相同3.Java中的访问限定符public 公共的 同一个项目中可访问protect..原创 2021-09-02 18:37:49 · 168 阅读 · 2 评论 -
Java中的hashcode()方法
一、hashcode是什么?1、hash和hash表是什么? hash是一个函数,该函数中的实现就是一种算法,就是通过一系列的算法来得到一个hash值。这个时候,我们就需要知道另一个东西,hash表,通过hash算法得到的hash值就在这张hash表中,也就是说,hash表就是所有的hash值组成的,有很多种hash函数,也就代表着有很多种算法得到hash值2、hashcode 有了前面的基础,这里讲解就简单了,hashcode就是通过hash函数得来的,通俗的说,就是通过某一种算原创 2021-09-02 09:43:54 · 10681 阅读 · 4 评论 -
jdk8的特性stream().map()
在Java 8中stream().map(),您可以将对象转换为其他对象1.大写字符串列表 package com.mkyong.java8; import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.stream.Collectors; public class TestJava8 { public static void main(String原创 2021-08-22 19:42:03 · 2818 阅读 · 0 评论 -
LocalDateTime获取服务器当前时间----24小时与12小时
24小时:String time = LocalDateTime.now().format(DateTimeFormatter.ofpattern("yyyy-MM-dd HH:mm:ss")12小时:String time = LocalDateTime.now().format(DateTimeFormatter.ofpattern("yyyy-MM-dd hh:mm:ss")H大写为24小时制,h小写为12小时制...原创 2021-08-19 21:57:07 · 2741 阅读 · 0 评论 -
Mysql将LocalDateTime插入到数据库时时间少了8小时。
最近在用mybatis时发现,将LocalDateTime插入到数据库时时间少了8小时。用网上其他方法试了不少,比如修改mysql时区,都不能解决。最后发现是JDBC连接的参数写错了。经常在网上看到jdbc连接里边有这样一个参数&serverTimezone=UTC。这个UTC是协调世界时,我们中国在东八区,也就是UTC+8,和UTC差了8个小时。这就是为什么时间插入数据库后少了8小时的原因。那么中国的时区是多少呢?在java.time.ZoneId这个类的帮助文档和源码里写有:ES原创 2021-08-18 21:37:40 · 2722 阅读 · 1 评论 -
Collections.singletonList方法
这个方法主要用于只有一个元素的优化,减少内存分配,无需分配额外的内存,可以从SingletonList内部类看得出来,由于只有一个element,因此可以做到内存分配最小化,相比之下ArrayList的DEFAULT_CAPACITY=10个。/** * Returns an immutable list containing only the specified object. * The returned list is serializable. *原创 2021-08-18 21:34:37 · 267 阅读 · 0 评论 -
Java对接微信公众号模板消息推送
最近公司的有这个业务需求,又很凑巧让我来完成:首先想要对接,先要一个公众号,再就是开发文档了:https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html不过请注意这一点ok,我们继续:再来完成公众号的基本配置: 服务器地址(URL):必须以http://或https://开头,分别支持80端口和443端口。这个URL是很重要的,需要响应微信发送的token验证 令牌(To.原创 2021-08-09 21:16:41 · 1284 阅读 · 0 评论 -
Java8 中 List 转 Map(Collectors.toMap) 使用技巧
在实际项目中我们经常会用到 List 转 Map 操作,在过去我们可能使用的是 for 循环遍历的方式。举个例子:先定义类:// 简单对象 @Accessors(chain = true) // 链式方法 @lombok.Dataclass User { private String id; private String name;}然后有这样一个 List:List<User> userList = Lists.newArrayList(原创 2021-08-09 10:53:35 · 352 阅读 · 0 评论 -
BCryptPasswordEncoder加密
Spring Security 提供了BCryptPasswordEncoder类,实现Spring的PasswordEncoder接口使用BCrypt强哈希方法来加密密码。 BCrypt强哈希方法 每次加密的结果都不一样String pass = new BCryptPasswordEncoder().encode("123456");原创 2021-08-06 15:44:21 · 440 阅读 · 0 评论 -
JSON格式 和 表单数据
1. 接口上的不同 [postman]JSON表单数据2. 浏览器上审查的时候的区别JSON表单数据3.不同的传参方式JSON// 根据商户OpenId 修改账户信息export function editAccount(openId, phone, data) { return request({ url: `/mp/mp/finance/request/mp/` + openId, // 路径参数 method: 'pat..转载 2021-08-06 11:28:10 · 1102 阅读 · 0 评论 -
StringEscapeUtils的使用
StringEscapeUtils类可以对html js xml sql等代码进行转义来防止SQL注入及XSS注入添加依赖<dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version></dependency>1.html脚..原创 2021-08-05 21:21:52 · 1011 阅读 · 0 评论 -
@requestBody注解的使用理解
1、@requestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等。一般情况下来说常用其来处理application/json类型。2、 通过@requestBody可以将请求体中的JSON字符串绑定到相应的bean上,当然,也可以将其分别绑定到对应的字符串上。 例如说以下情况: $.ajax({原创 2021-08-05 20:10:04 · 625 阅读 · 0 评论 -
Java8中的Collectors.groupingBy用法
Collectors.groupingBy根据一个或多个属性对集合中的项目进行分组数据准备:public Product(Long id, Integer num, BigDecimal price, String name, String category) { this.id = id; this.num = num; this.price = price; this.name = name; this.category = category;}Product prod1 =原创 2021-07-29 14:51:01 · 2204 阅读 · 1 评论 -
Java判断空字符串和对象是否为null
判断空字符串:StringUtils.isEmpty(str);判断对象为null:Objects.isNull(object);判断对象不为null:Objects.nonNull(object);Objects.nonNull(object);原创 2021-07-28 13:41:30 · 379 阅读 · 0 评论 -
BeanUtils的copyproPerties方法的用法
一、简介: BeanUtils提供对Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度。二、用法: BeanUtils是这个包里比较常用的一个工具类,这里只介绍它的copyProperties()方法。该方法定义如下:public static void copyProperties(java.l...原创 2021-07-24 19:20:39 · 852 阅读 · 0 评论 -
基本数据类型与包装类的对应关系
List<DeptVo> list = deptMapper.queryList(page,queryWrapper);原创 2021-07-24 17:44:31 · 279 阅读 · 0 评论 -
UserDetails接口和UserDetailsService接口
UserDetails接口这个接口是我们自己用来定义用户表的结构的SpringSecurity自己的用户信息只包含了Username,password,roles,假如我希望用户的实体类中还有性别sex字段,那么就没有办法了,所以SpringSecurity提供了UserDetails接口,我们可以自己新建一个包含sex字段的类,然后该类implements UserDetails接口,就可以获取我们说的这个sex字段UserDetails实例是通过UserDetailsService接口的.原创 2021-07-21 08:59:15 · 1919 阅读 · 2 评论