![](https://img-blog.csdnimg.cn/20200609203945825.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java
文章平均质量分 52
Java基础及进阶
柳落青
记录美好生活:ssj10101011
展开
-
Java根据域名获取证书颁发日期 截止日期 到期天数
Java根据域名获取证书颁发日期,截止日期,到期天数。原创 2024-07-03 14:30:24 · 236 阅读 · 0 评论 -
微信小程序登录流程详情及Java代码
获取手机号,调用wx.getPhoneNumber() ,获取加密串。获取其他用户信息,调用wx.getUserInfor() ,获取加密串 encryptedData。,ivStr )获得解密后的数据;encryptedData 和加密算法的初始向量 ivStr 传到后台,用会话秘钥session_key ,调用。密文串要用 json 格式传输,不能用参数拼接的方式,会把密文串的加号转换为空格,导致解密失败。和加密算法的初始向量 ivStr 传到后台,用会话秘钥session_key ,调用。原创 2024-06-21 11:45:29 · 463 阅读 · 0 评论 -
RabbitMQ实现延时消息的两种方法
因此我们只需要在声明正常的业务队列时添加一个可选的"x-dead-letter-exchange"参数,值为死信交换机,死信就会被rabbitmq重新publish到配置的这个交换机上,我们接着监听这个交换机就可以了。如果当一个队列各个消息的过期时间不一致时,使用死信队列就可能达不到延时的作用。当我往死信队列中发送两条不同过期时间的消息时,如果先发送的消息A的过期时间大于后发送的消息B的过期时间时,由于消息的顺序消费,消息B过期后并不会立即重新publish到死信交换机,而是会等到消息A过期后一起被消费。原创 2023-06-21 16:18:48 · 4696 阅读 · 2 评论 -
Java实现在10个亿数中,快速找出最小的十个数
具体来说,您可以使用一个最大堆(Max Heap)来存储当前已经找到的最小的10个数。最大堆可以保证堆顶元素是当前堆中最大的元素。当我们遍历这10亿个数时,如果遇到比堆顶元素小的数,我们就可以将它替换堆顶元素,并重新调整堆使得堆顶元素仍然是当前堆中最大的元素。在这个实现中,我们使用一个PriorityQueue来实现最大堆,使用Lambda表达式来自定义比较器,然后遍历数组中的所有数。否则,如果当前数小于堆顶元素,就把堆顶元素弹出,再把当前数加入堆中。最后,我们把堆中的元素依次弹出,即得到最小的k个数。原创 2023-02-19 23:50:42 · 781 阅读 · 0 评论 -
Java中LinkedList增删改比ArrayList快吗?
对于频繁的插入和删除操作,LinkedList 的性能通常更好,因为它使用了链表数据结构,只需更改节点的指针就可以在链表中插入或删除元素。下面是一个代码案例,展示了在 Java 中使用 LinkedList 和 ArrayList 进行插入和删除操作的时间差异。然而,如果你需要频繁的随机访问操作,ArrayList 的性能更快,因为它使用了数组数据结构,可以通过索引访问任何元素。在 Java 中,LinkedList 和 ArrayList 的性能是不同的,具体取决于你所需要的操作。原创 2023-02-09 23:06:21 · 588 阅读 · 0 评论 -
单例池 / 单例Bean / 单例模式的有什么区别?
是指每次创建的对象都是同一个。单例模式是指在一个JVM进程中仅有一个实例,而单例bean是指在一个Spring Bean容器(ApplicationContext)中仅有一个实例。spring源码中的定义为Map singletonObjects = new ConcurrentHashMap(256)。spring容器中可以有多个beanName不同,但是类型相同的bean。例如,可以有beanName分别为user1和user2,对应的类型都是User。原创 2023-02-08 16:53:09 · 156 阅读 · 0 评论 -
Jsoup简单入门
Jsoup就是解析网页的URL地址、HTML文本内容,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。原创 2023-02-02 21:11:40 · 312 阅读 · 0 评论 -
Thymeleaf返回带有锚点的视图
在使用Thymeleaf时遇到了以下问题。我需要返回一个带有锚标记的视图,即。不能返回带有锚点的视图名称(浏览器已经知道它在这个过程中要去的url )。但是可以返回一个带有锚点的重定向。原创 2023-01-04 09:41:11 · 155 阅读 · 0 评论 -
SpringBoot整合Groovy脚本语言
Groovy 是增强 Java 平台的唯一的脚本语言。它提供了类似于 Java 的语法,内置映射(Map)、列表(List)、方法、类、闭包(closure)以及生成器。脚本语言不会替代系统编程语言,两者是相互补充的。大名鼎鼎的 Gradle,背后是 Groovy。Spring 的未来越来越多的使用 Groovy,甚至在用 Jira 跟踪项目时,背后也有 Groovy。实际上,就应用场景而言,Java 开发已经有越来越多的 Groovy 出现在后台了。原创 2022-12-12 10:31:54 · 898 阅读 · 0 评论 -
SSRF漏洞JAVA解决方案
SSRF(Server-side Request Forge, 服务端请求伪造)。由攻击者构造的攻击链接传给服务端执行造成的漏洞,一般用来在外网探测或攻击内网服务。原创 2022-09-16 15:48:22 · 3818 阅读 · 0 评论 -
sun.misc.BASE64Encoder 报错 找不到
sun.misc.BASE64Encoder等类不属于JDK标准库范畴,但在JDK中包含了该类,可以直接使用。使用java.util.Base64替换sun.misc.BASE64Encoder。项目报错找不到sun.misc.BASE64Encoder。原创 2022-07-21 22:11:51 · 3572 阅读 · 0 评论 -
nginx配置ssl实现https访问 亲测有效
别说,这腾讯里面申请还挺快的,十多分钟就通过了。下载的是一个zip文件,解压后打开里面的Nginx文件夹,把。我的配置文件在/ect/nginx,现在把刚才的两个证书文件复制过来,待会直接配置使用就行了。nginx的配置文件是nginx.conf,里面的配置内容有以下,为了容易明白,我都加上了注释。为了更好管理,我们还是在最后一行声明的/etc/nginx/conf.d文件夹里进行子项目配置。复制代码重启后再次访问自己的网站,左上角加上锁,提示安全的连接。妥妥的,这个过了后就能重启nginx生效了。...原创 2022-07-20 17:21:39 · 663 阅读 · 0 评论 -
Java中使用Cookie
cookie就是一个小体积的键值对,格式key=value;转载 2022-07-15 15:22:52 · 2456 阅读 · 0 评论 -
LDAP连接池 JAVA
都应该使用过数据连接池,例如druid,c3p0大致原理差不多,刚开始使用还是麻烦的,网上的文档什么信息都不全,找了好久自己研究才搞明白。使用起来也挺简单的,就当作一个service来用,把ldapTemplate注入进来。连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用。很多配置官网都有,我就是使用了默认的配置。版本就是随着springBoot来吧。2.配置连接池数据源。......原创 2022-07-15 15:19:04 · 643 阅读 · 0 评论 -
jdk11新特性一文详解
我们看一下JAVA11的新特性字符串API增强在Java 11中,针对String的操作进一步得到加强。避免我们在很常见的场景中引入额外的、复杂的API。isBlank()用来判断字符串是不是空字符"“或者trim()之后(” ")为空字符:lines()将一个字符串按照行终止符(换行符\n或者回车符\r)进行分割,并将分割为Stream流:strip()去除字符串前后的“全角和半角”空白字符:从上面也看出来了差别,trim()只能去除半角空白符。strip()方法还有两个变种,stripL原创 2022-07-13 09:58:36 · 1832 阅读 · 0 评论 -
EasyExcel获取excel文件中sheet页总数,及对应sheet页名称及下标
/** * 获取excel文件所有sheet页 * * @param inputStream * @return java.util.List<com.alibaba.excel.read.metadata.ReadSheet> * @author * @date 2022/3/29 11:09 上午 */ public static List<ReadSheet> listSheet(InputStre原创 2022-03-29 16:15:31 · 2516 阅读 · 0 评论 -
SpringBoot实现文件下载的几种方式
将文件以流的形式一次性读取到内存,通过响应输出流输出到前端/*** @param path 想要下载的文件的路径* @param response* @功能描述 下载文件:*/@RequestMapping("/download")public void download(String path, HttpServletResponse response) {try {// path是指想要下载的文件的路径File file = new File(path);log.info(fi.原创 2022-03-29 16:04:51 · 6546 阅读 · 0 评论 -
一文详解Optional解决NullPointerException
避之不及的 NullPointerExceptionNPE : NullPointerException空指针异常是最常见的Java异常之一,抛出NPE错误不是用户操作的错误,而是开发人员的错误,应该被避免,那么只能在每个方法中加入非空检查,阅读性和维护性都比较差。以下是一个常见的嵌套对象:一个用户所拥有的汽车,以及为这个汽车配备的保险。public class User { private String userName; private Car car; publi原创 2022-02-22 17:17:41 · 1030 阅读 · 0 评论 -
Java实现本地缓存
对于缓存的作用不言而喻,可以提高查询效率,比去DB查询的速度要快。项目中我们经常会使用Nosql数据库,如Redis等做缓存。但是对于数据量很小的,访问非常频繁的,我们也可以存在本地缓存中。我将利用concurrentHashMap等集合容器实现一个本地缓存。1.基于concurrentHashMap的本地缓存。本地缓存一般使用键值对方式的存储,那么在Java中肯定是选用map,由于concurrentHashMap的线程安全性,所以就选择了这个。过期策略采用的定时清除,实现方式可以后台起一个线程去扫,原创 2022-02-15 13:38:16 · 12212 阅读 · 3 评论 -
Mac下多版本JDK安装及管理
Mac下多版本JDK安装及管理在Java项目中,经常对JDK版本有不同的要求,可是不可能为了某个项目的运行重新下载不同版本JDK进行安装,这样就涉及到对本地环境中多个JDK版本的管理。Mac的JDK都是安装到一个指定目录的:/Library/Java/JavaVirtualMachines/,因此可以在这个目录下查看自己安装的所以JDK:由此可见本系统中安装了8、13、15、17三个版本。对于JDK的安装可以直接到官网下载Mac需要的dmg安装包。如截图:接下来就是配置环境变量并进行JDK版原创 2022-02-12 11:57:37 · 772 阅读 · 0 评论 -
Java递归实现多级菜单
数据库设计我们在设计数据库的时候仅仅使用一张表就可以把上面的关系给捋清楚,就是通过一个parentid字段,让我们开看一下这张表的表结构看一下建表语句DROP TABLE IF EXISTS menu; CREATE TABLE menu ( id int(11) NOTNULL AUTO_INCREMENT COMMENT ‘主键递增’, name varchar(255) CHARACTERSET utf8 COLLATE utf8_general_ci NULL DEFAULT原创 2021-11-09 14:40:20 · 2114 阅读 · 6 评论 -
cookie、session和token登陆状态保持
传统的实现登录状态保存的两种方法时直接保存服务器端session 和客户端cookie, 现在介绍一种通过生成token的方式保存登录信息。实现登录状态保持的两种方法:第一种,cookie和session的配合使用实现原理:当用户请求页面,一般需要先登录,用户第一次输入用户名和密码之后,前台发送post请求,后台获取用户信息,通过查询数据库来验证用户信息是否正确,如果验证通过,则会开辟一块session空间来储存用户数据,并且同时生成一个cookie字符串,由后台返回给前台,前台接收后,会把这个coo原创 2021-10-29 16:31:19 · 779 阅读 · 0 评论 -
解决阿里云OSS,打开图片地址直接预览
问题描述:阿里云对象存储上传的图片打开是下载,并不是我想要的效果,我希望的是可以直接预览:可以直接在网址上面查看的那种。首先你得检查一下你的图片contentType,一般是通过代码设置的,直接在阿里云上传的图片,返回的url链接是直接下载的。我们使用代码上传,只需要看看你的代码里面上传图片的类型。一、上代码1.设置类型代码如下(示例):ObjectMetadata objectMetadata = new ObjectMetadata();objectMetadata.setContentTy原创 2021-09-02 11:57:59 · 14139 阅读 · 10 评论 -
Cannot load C:\Users\12778\AppData\Local\JetBrains\IntelliJIdea2021.1\tomcat\c0cf5d96-4221-48ee-b343
Cannot load C:\Users\12778\AppData\Local\JetBrains\IntelliJIdea2021.1\tomcat\c0cf5d96-4221-48ee-b343-df017d7dad36\conf\server.xml: ParseError at [row,col]:[154,7] Message: 元素类型 “Host” 必须后跟属性规范 “>” 或 “/>”Tomcat出现问题了:第一种解决方案:按照提示路径去修改\tomcat\c0cf5d9原创 2021-05-12 11:19:12 · 3861 阅读 · 1 评论 -
BeanUtils.copyProperties进行对象之间的属性赋值
使用org.springframework.beans.BeanUtils.copyProperties方法进行对象之间属性的赋值,避免通过get、set方法一个一个属性的赋值源码: /** * 对象属性拷贝 <br> * 将源对象的属性拷贝到目标对象 * * @param source 源对象 * @param target 目标对象 */ public static void copyProperties(Object原创 2021-03-18 09:58:45 · 233 阅读 · 0 评论 -
JVM理解
Java面试题(JVM篇)JVM1.说一下 jvm 的主要组成部分?及其作用?类加载器(ClassLoader)运行时数据区(Runtime Data Area)执行引擎(Execution Engine)本地库接口(Native Interface)组件的作用: 首先通过类加载器(ClassLoader)会把 Java 代码转换成字节码,运行时数据区(Runtime Data Area)再把字节码加载到内存中,而字节码文件只是 JVM 的一套指令集规范,并不能直接交个底层操作系统去执行,因此原创 2021-02-23 23:20:56 · 124 阅读 · 0 评论 -
JSR-303 Bean Validation API概述以及验证
JSR是Java Specification Requests的缩写,意思是Java 规范提案。是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。JSR 303 基本的校验规则空检查@Null 验证对象是否为null@NotNull 验证对象是否不为null, 无法查检长度为0的字符串@NotBlank 检查约束字符串是不是Null还有被Trim的长原创 2021-01-19 12:03:13 · 334 阅读 · 0 评论 -
lombok注解
在代码中我们可以只加上注解@Data 而不用get,set方法;以下是常用注解详情:@NonNull : 注解在参数上, 如果该类参数为 null , 就会报出异常, throw new NullPointException(参数名)@Cleanup : 注释在引用变量前, 自动回收资源 默认调用 close() 方法@Getter/@Setter : 注解在类上, 为类提供读写属性@Getter(lazy=true) :@ToString : 注解在类上, 为类提供 toString() 方原创 2020-12-10 14:00:57 · 184 阅读 · 0 评论 -
保龄球 java机试题
题目如下:保龄球是在木板道上滚球击瓶的一种室内运动。保龄球比赛以局为单位,每局以击倒球瓶数的多少来计分并决定胜负。1局分为10轮,每轮有两次投球的机会。计分时,每轮对应一个计分格。若第1次投球就击倒全部球瓶,那该轮的记分格就记strike (全中),并结束该轮;若第1次没有全中,则可以再投第二次,如果把剩下的球瓶都击倒就记spare (补中)。每轮的计分规则如下:1.失球无论何种情况,在一轮的两次投球后, 未能击倒10个瓶,此轮的得分为两次击倒的瓶数之和。投球击中几瓶就用数字几表示;投球未击中用符号[原创 2020-09-29 17:59:41 · 1090 阅读 · 1 评论 -
Java 的 main 方法必须是 public static void?为什么?
为什么 main 方法是静态的(static)?为什么main方法是公有的(public) ?为什么 main 方法没有返回值(Void)?总结Main 方法是我们学习 Java 编程语言时知道的第一个方法,你是否曾经想过为什么 main 方法是 public、static、void 的。当然,很多人首先学的是 C 和 C++,但是在 Java 中 main 方法与前者有些细微的不同,它不会返回任何值,为什么 main 方式是 public、static、void,这篇文章尝试去找到一些答案。.原创 2020-09-16 09:59:58 · 654 阅读 · 0 评论 -
JavaWeb使用commons-fileupload.jar实现文件上传
1:文件上传的规则文件的上传和下载,是非常常见的功能,在很多的系统中,或软件中都经常使用文件的上传和下载文件的上传主要分为下面几步: 1、前台页面需要一个 form 标签,里面的 method 为 post 请求; 2、在 form 标签必须添加 encType属性,且属性值必须是 multipart/form-data值; 3、在 form 标签中使用 input type=file 添加上传的文件; 4、在服务器编写代码(Servlet程序)接收,处理上传的数据。注意点:原创 2020-07-16 22:57:04 · 1191 阅读 · 0 评论 -
JavaWeb项目中自定义的包名含义
目录说明com.astar原创 2020-07-15 13:05:30 · 1106 阅读 · 0 评论 -
idea修改注释颜色
IDEA修改注释颜色打开IDEA左上角FileSetting–>Editor–>Color Scheme -->Language DefaultsComments目录下的Block comment 多行注释 /* */Line comment 单行注释 //Doc Comment 文档文件 /** */找不到,可以在搜索框搜关键字(如Language)......原创 2020-06-30 23:44:26 · 38280 阅读 · 5 评论 -
关于java中throw和throws的区别?
用户程序自定义的异常和应用程序特定的异常,必须借助于 throws 和 throw 语句来定义抛出异常。throw是手动抛出一个异常:1:throw 语句用在方法体内,表示抛出异常,由方法体内的语句处理。2:throw 是具体向外抛出异常的动作,所以它抛出的是一个异常实例,执行 throw 一定是抛出了某种异常。语法:throw (异常对象);throw e;throws是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常)1:throws 语句是用在方法声明后面,表示如果抛出原创 2020-05-10 14:28:17 · 522 阅读 · 0 评论 -
使用IDEA连接MySQL数据库
1.IDEA配置数据库连接2.添加数据库:3.填写数据库信息: database输入框里面填写要连接的数据库名称然后点击test connection,会弹出一个框,提示下载驱动,点击进行下载即可。然而不幸的是这个地址无法下载,点击这个扳手图标,然后添加本地的mysql驱动jar包:会看到driver files列表里面的文件点击 - 去掉,然后再点击+ 添加我们本地已有的j......原创 2020-05-02 15:11:54 · 1460 阅读 · 0 评论 -
Idea 报Error:java:无效的源发行版13
首先打开自己的项目,点击File–>Settings进入界面找到如图位置 并将相信应位置设置成自己的安装版本号本人使用:1.8版本别忘了点击OK.下一步,点击File选择Project Structure…进入。还是看自己的安装版本(最主要的就是看版本是否匹配)继续(还是看自己的安装版本)设置完成后,点击ok.再运行下。......原创 2020-04-29 16:50:17 · 23105 阅读 · 13 评论 -
关于Java中进程和线程的区别
什么是进程?进程:是并发执行的程序在执行过程中分配和管理资源的基本单位,竞争计算机系统资源的基本单位。什么是线程? 线程:是进程的一个执行单元,是进程内科调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。一个程序由一个或多个进程组成,一个进程由一个或多个线程组成。例如:对于java程序来说,当在DOS命令窗口输入:java HelloWorld 回车之后,会先启动J...原创 2020-04-19 23:08:08 · 229 阅读 · 0 评论 -
Java中使用wait()方法和notify()方法实现"生产者和消费者模式"
详解请看注释:代码下方有配图import java.util.ArrayList;import java.util.List;/*1:使用wait方法和notify方法实现"生产者和消费者模式"2:什么是"生产者和消费者模式"? 生产线程负责生产,消费线程负责消费。 生产线程和消费线程要达到均衡。 这是一种特殊的业务需求,在这种特殊的情况下需要使用wait(...原创 2020-04-19 22:53:08 · 513 阅读 · 0 评论 -
关于Java多线程“死锁”示例
Java中多线程死锁示例/*死锁 */public class DeadLock { public static void main(String[] args) { Object o1 = new Object(); Object o2 = new Object(); //两个线程同时操作o1,o2 MyThrea...原创 2020-04-19 22:45:43 · 202 阅读 · 1 评论 -
IO流-拷贝目录
IO流-拷贝目录使用: FileInputStreamFileOutputStreamFile 递归直接上代码:思路请看注释,有大神帮助改进最好,谢谢import java.io.*;/*拷贝目录 */public class Copy03 { public static void main(String[] args) { //源目标 ...原创 2020-04-16 00:12:44 · 263 阅读 · 2 评论