![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java开发系列
文章平均质量分 73
该专栏提供Java开发过程中所用到的各类技术使用教程
十八岁讨厌Java
我要变强
展开
-
OkHttp3如何使用?
OkHttp3是程序员常用的网络请求框架,本篇文档将向大家简单介绍OkHttp3的使用,帮助大家迅速上手。原创 2023-06-28 14:51:10 · 1252 阅读 · 0 评论 -
List元素为类对象,按照类对象属性去重的解决办法
很多小伙伴在开发中会遇到一个场景,就是List集合中存储的是类对象,我们想要根据类对象属性去重;这种场景该如何做呢?原创 2023-01-18 10:41:08 · 1401 阅读 · 3 评论 -
MyBatis中TypeHandler的使用教程
在我们平常开发操作数据库时,查询、插入数据等操作行为,有时会报数据类型不匹配异常,就可以得知数据的类型是不唯一的必然是多种不同的数据类型。假设此时的java类型与数据库数据类型是一样的,哪么其他语言中的日期数据插入数据库时又该怎么解释,例如C#操作数据库存入时间类型,C#与java肯定没有关系吧。因为java与数据库各自有数据类型,所以在将java数据存入数据库前中间是否有其他操作,是我们看不见的,不然java数据怎么知道自己与哪个jdbc数据类型匹配?中间具体有什么操作?多个注册:指定多个单个注册方式;原创 2023-01-16 14:19:08 · 2080 阅读 · 0 评论 -
GIt命令大全
git命令大全一、增加/删除文件二、代码提交三、本地分支四、远程分支/仓库五、撤销六、查看信息七、标签八、上传本地项目到远程仓库演示九.拉取远程代码演示原创 2022-12-22 14:43:26 · 1278 阅读 · 1 评论 -
git怎么忽略无需提交的文件?(忽略提交 .gitignore)
在使用Git的过程中,我们有的文件比如target、.idea等不想提交到代码仓库,但如果这些文件没有被添加到暂存区区,切换分支会报Move or commit them before Pull git的错误(如下图),我们应该怎么解决呢?注意:是创建一个新的gitignore 文件,而不是直接在.idea下的 .gitignore文件中配置。这一套操作下来,配置即可生效,并且远程仓库中那些已经存在的我们不需要的文件也会被删除掉。“/”开头表示整个目录;星号“*”通配多个字符;原创 2022-12-22 14:00:37 · 3890 阅读 · 0 评论 -
RabbitMQ的工作模式
RabbitMQ是基于AMQP消息传输协议来实现的消息中间件;类似HTTP有header和body两部分数据,Message是RabbitMQ中的消息体概念。Message由Properties和Body组成,前者是一些元信息,如消息的优先级、持久化、传输格式(如JSON)、延迟等高级特性,Body则是传递的消息数据实体Exchange、Queue与Routing Key三个概念是理解RabbitMQ消息投递的关键。RabbitMQ中一个核心的原则是,消息不能直接投递到Queue中。原创 2022-12-02 11:29:59 · 2333 阅读 · 0 评论 -
SpringBoot的@EnableAsync@Async使用总结
我们在使用多线程的时候,往往需要创建Thread类,或者实现Runnable接口,如果要使用到线程池,我们还需要来创建Executors,在使用spring中,已经给我们做了很好的支持。@Async注解来声明一个或多个异步任务,可以加在方法或者类上,加在类上表示这整个类都是使用这个自定义线程池进行操。7、调用被@Async标记的方法的调用者不能和被调用的方法在同一类中不然不会起作用。8、使用@Async时要求是不能有返回值的不然会报错的 因为异步要求是不关心结果的。3、异步方法不能与异步方法在同一个类中。原创 2022-11-18 14:19:51 · 2723 阅读 · 0 评论 -
RabbitMQ消息丢失的场景,如何保证消息不丢失?(详细讲解,一文看懂)
一.RabbitMQ消息丢失的三种情况二.RabbitMQ消息丢失解决方案1.针对生产者方案1 :开启RabbitMQ事务方案2: 使用confirm机制2.针对RabbitMQ(1)消息持久化(2)设置集群镜像模式(3)消息补偿机制3.针对消费者方案一:ACK确认机制第一种:生产者弄丢了数据。生产者将数据发送到 RabbitMQ 的时候,可能数据就在半路给搞丢了,因为网络问题啥的,都有可能。第二种:RabbitMQ 弄丢了数据。MQ还没有持久化自己挂了第三种:消费端弄丢了数据..原创 2022-09-01 09:16:56 · 18352 阅读 · 17 评论 -
Java如何实现统计在线人数的功能?
很多人在笔试或者面试中问到:现在要你实现一个统计在线人数的功能,你该怎么设计?不知道的朋友,这篇文章告诉你。先说答案:可以利用监听器Listener来实现3.监听器Listener实现统计人数功能(1)先创建监听器包listener在新建OnlineListener类(2)创建监听器servlet的接口4.Redis实现统计人数功能需求:平均访问时常,平均同时在线人数,最高同时在线人数(1)先设计数据表:开始访问页面时间,离开页面时间表:(id,place,ip,user_id,user_na......原创 2022-08-30 07:58:40 · 5917 阅读 · 40 评论 -
解决Mysql和redis缓存不一致问题
本文其实是对目前互联网中已有的一致性方案,进行了一个总结。对于先删缓存,再更新数据库的更新策略,还有方案提出维护一个内存队列的方式,博主看了一下,觉得实现异常复杂,没有必要,因此没有必要在文中给出。最后,希望大家有所收获。...原创 2022-08-07 11:48:06 · 3226 阅读 · 16 评论 -
springboot@Valid注解用法详解
Digits(integer,fraction)限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction。现在如果想要对User中的姓名和age做非空校验和长度校验,如果在接口中频繁使用if会增加很大的代码量,这个时候@Valid注解就派上了用场。@DecimalMin(value)限制必须为一个不小于指定值的数字,小数存在精度。@DecimalMax(value)限制必须为一个不大于指定值的数字,小数存在精度。@Null用在基本类型上;...原创 2022-07-27 12:37:04 · 5072 阅读 · 8 评论 -
serializable接口的作用是什么?
如果有人打开过Serializable接口的源码,就会发现,这个接口其实是个空接口,那么这个序列化操作,到底是由谁去实现了呢?其实,看一下接口的注释说明就知道,当我们让实体类实现Serializable接口时,其实是在告诉JVM此类可被序列化,可被默认的序列化机制序列化。序列化的过程,就是一个“freeze”的过程,它将一个对象freeze(冷冻)住,然后进行存储,等到再次需要的时候,再将这个对象de-freeze就可以立即使用。1、存储对象在存储介质中,以便在下次使用的时候,可以很快捷的重建一个副本;..原创 2022-07-26 18:08:37 · 5984 阅读 · 15 评论 -
图解JVM内存模型和JVM线程模型
将上文的知识点进行汇总后,我们可以得到一张新图/JVM线程模型/一个Java线程的实现方式可以有三种。原创 2022-07-22 07:53:33 · 550 阅读 · 26 评论 -
5道String高频面试题,拿捏String底层原理!
最后再强调一下,本文是基于jdk8进行测试,不同版本的jdk可能会有很大差异。例如jdk6之前,字符串常量池存储的是String对象实例,而在jdk7以后字符串常量池就改为存储引用,做了非常大的改变。Strings="a"+"b"+"c",到底创建了几个对象?那么,这次的分享就写到这里,我是Hydra,我们下篇再见~...原创 2022-07-16 11:38:05 · 557 阅读 · 20 评论 -
2024最强秋招八股文(精简、纯手打)
该篇文章是博主对Java的学习进行的系统性的归纳总结,汇总了Java基础、JUC、JVM、MySQL、Redis、Linux、计算机网络、常用开发框架等常见的一些问题和解决方案,原创 2022-07-11 16:35:53 · 333049 阅读 · 229 评论 -
Linux的五种IO模型
什么是同步?什么是异步?什么是阻塞?什么是非阻塞?接下来我来回答大家。同步和异步的区别?同步指被调用方做完事情后再返回给调用方异步指被调用方立马告知调用方我已接收到请求,要进行异步处理,处理完后通过回调函数通知调用当阻塞和非阻塞的区别?阻塞指调用方一直等待被调用方的处理结果,期间不做其他的任何事情非阻塞指调用方等待被调用方的处理结果期间可以做其他的事情 IO是数据的读取和写入,用户进程读取一次IO请求分为两个阶段:等待数据到达内核缓冲区和将内核空间数据拷贝到进程空间,当用户去内核中拷贝数据时,要从用户态转为原创 2022-07-08 14:44:26 · 321 阅读 · 0 评论 -
EasyExcel详细教程
1、Excel导入导出的应用场景2、EasyExcel特点3、Excel进行写操作4、Excel进行读操作 本篇文章为你详细介绍EasyExcel如何进行读取操作 1、数据导入:减轻录入工作量2、数据导出:统计信息归档3、数据传输:异构系统之间数据传输 (1)引入EasyExcel相关依赖2)创建实体类实体类是你要创建表的表头信息(3)实现写操作在指定的生成地址找到生成的excel表,生成内容如下: (1)跟读操作一样引入依赖(2)创建实体类(2)创建监听器读取excel文件 ......原创 2022-07-07 09:16:17 · 3121 阅读 · 1 评论 -
一篇文章搞懂nginx(什么是nginx,nginx反向代理,nginx安装,nginx配置)
nginx的下载地址:或者使用我的百度网盘:下载完毕直接解压安装包即可进入到nginx安装目录,执行nginx.exe若出现以下错误,则用管理员权限启动若想关闭gninx贼执行(直接关闭窗口nginx服务不会停止): (1)反向代理(2)负载均衡(3)动静分离 正向代理:正向代理最大的特点是客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。反向代理:反向代理是指以代理服务器来接受客户端上的连接请求,然后将请求转发原创 2022-07-05 22:13:41 · 1375 阅读 · 2 评论 -
Mybatis-Plus各功能使用教程
目录一.代码生成器的使用步骤二.逻辑删除使用步骤注:一切前提都是数据库已经配置好并且Mybatis-Plus依赖已经导入的前提下进行操作1.引入代码生成器依赖 2.配置代码生成器CodeGenerator3.运行CodeGenerator类如果生成失败,可能是1.配置类中配置逻辑删除插件2.在要进行逻辑删除的实体类属性上添加@TableLogic注解三、乐观锁的使用1.在配置类中配置乐观锁插件2.在要添加乐观锁的实体类属性上添加@Version和@TableField(原创 2022-06-24 10:08:15 · 939 阅读 · 0 评论 -
springboot中怎么进行统一日志处理?
日志级别从低到高有:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL高级别包含了低级别,级别越高打印信息越先详细,默认情况下,spring boot从控制台打印出来的日志级别为INFO级别,设置如下此时的日志只能输出到控制台,输出不到文件中 如果我们想将日志输出到文件中,可以使用Logback日志,spring boot内部使用Logback作为日志实现的框架。使用步骤:(1)删除yaml中其它日志的配置以及我们设置的日志级别(2)resources下创建logback-spri原创 2022-06-26 16:38:15 · 996 阅读 · 0 评论 -
Swagger的详细使用教程
目录一.Swagger的作用二.Swagger的详细使用步骤swagger用于生成在线api文档和进行接口测试,是前后端联调中使用最多的工具1.引入Swagger依赖2.创建swagger配置类3.若创建的swagger是新建的一个模块(若是在当前模块引入swager依赖,此步可以忽略),则:(1)将swagger模块的坐标导入依赖到要使用swagger的模块中 (2)在启动类上添加@ComponentScan(basePackages={"swagger配置类所在的包路径"}) ....原创 2022-06-24 17:35:11 · 11342 阅读 · 1 评论 -
关于微服务项目谷粒学院开发中的所学~
http://t.csdn.cn/tgntLspringboot2.2以上需要使用的驱动为:com.mysql.cj.jdbc.Driverurl需要配置时区: jdbc:mysql://localhost:3306/guli?serverTimezone=GMT%2B8@RestController :修饰类,该控制器会返回Json数据 @RequestMapping("/path") :修饰类,该控制器的请求路径@Autowired原创 2022-06-24 11:44:46 · 393 阅读 · 0 评论