![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 69
红颜い笑倾城
这个作者很懒,什么都没留下…
展开
-
TCP和UDP协议的区别以及原理
最近重新认知了一下TCP和UDP的原理以及区别,做一个简单的总结。转载 2022-10-27 09:04:19 · 112 阅读 · 0 评论 -
Docker+Nginx打包部署Spring Cloud项目
在子模块下增加文件,在项目根目录下增加文件和文件。原创 2022-09-20 15:41:56 · 982 阅读 · 0 评论 -
Docker+Nginx打包部署Spring boot 项目
1、后端启动类模块下增加“Dockerfile”文件,文件内容如下:2、项目根目录下增加“docker-compose.yml”文件和“nginx.conf”文件Nginx配置文件: 二、打包部署在项目根目录下运行(在有docker-compose文件的目录): 成功之后运行命令后端项目根目录下会生成存放前端静态资源的文件夹,后续将前端打包完的“dist”文件夹下的静态资源存放至后端生成的文件夹即可。启动docker中的项目,浏览器访问:localhost:31005即可。端口为Ngi原创 2022-09-20 14:52:10 · 1268 阅读 · 0 评论 -
Tomcat打包部署spring boot项目
运行完之后会生成target文件夹,将其中与war包同名的文件夹中的“META-INF”和“WEB-INF”文件夹拷贝到服务器Tomcat中的webapps文件夹的访问路径文件夹下,此处是“app”文件夹。vue.config.js文件下的publicPath路径决定静态文件在Tomcat中的位置,“/”——根目录。将打包完的静态文件放置在服务器的Tomcat目录下的webapps的ROOT文件夹下。进入到Tomcat的bin目录下,运行 ./startup.sh。将项目打成war包,运行命令。原创 2022-09-20 09:25:57 · 804 阅读 · 0 评论 -
18个Java8日期处理,工作必用!收藏起来~
LocalDate日期不包含时间信息,它的plus()方法用来增加天、周、月,ChronoUnit类声明了这些时间单位。Java处理日期、日历和时间的不足之处:将 java.util.Date 设定为可变类型,以及 SimpleDateFormat 的非线程安全使其应用非常受限。Java 8 的所有日期和时间API都是不可变类并且线程安全,而现有的Date和Calendar API中的java.util.Date和SimpleDateFormat是非线程安全的。上面的代码创建了当天的日期,不含时间信息。..转载 2022-08-29 16:00:50 · 330 阅读 · 0 评论 -
横贯八方揭秘RabbitMQ、RocketMQ、Kafka 的核心原理(建议收藏)
今天我们通过一篇文章来认识一下常见消息队列RabbitMQ、RocketMQ、Kafka。转载 2022-08-17 11:13:35 · 315 阅读 · 0 评论 -
maven中setting.xml文件pe
【代码】maven中setting.xml文件pe。原创 2022-08-17 11:14:17 · 104 阅读 · 0 评论 -
PO、VO、DAO、BO、DTO、POJO区别
J2EE开发人员使用数据访问对象(DAO)设计模式把底层的数据访问逻辑和高层的商务逻辑分开.实现DAO模式能够更加专注于编写数据访问代码。各层操作属于该层自己的数据对象,这样就可以降低各层之间的耦合,便于以后系统的维护和扩展。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要。当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。可以看成是与数据库中的表相映射的java对象。具体的DAO类包含了从特定的数据源访问数据的逻辑。...转载 2022-08-17 11:14:44 · 713 阅读 · 0 评论 -
java8 新特性之LocalDateTime、LocalDate相关转换
代码】java8 新特性之LocalDateTime、LocalDate相关转换。原创 2022-08-17 11:15:08 · 790 阅读 · 0 评论 -
Java 中的 BigDecimal 正确用法,80% 的人都用错了....
目录 一、BigDecimal概述 二、BigDecimal常用构造函数 三、BigDecimal常用方法详解 四、BigDecimal格式化 五、BigDecimal常见异常 六、BigDecimal总结 一、BigDecimal概述Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和转载 2022-05-13 09:20:45 · 563 阅读 · 0 评论 -
妙用Java 8中的 Function接口 消灭if...else
在开发过程中经常会使用if...else...进行判断抛出异常、分支处理等操作。这些if...else...充斥在代码中严重影响了代码代码的美观,这时我们可以利用Java 8的Function接口来消灭if...else...。if (...){ throw new RuntimeException("出现异常了");} if (...){ doSomething();} else { doOther();}Function 函数式接口使用注解@Functio转载 2022-04-24 11:39:57 · 313 阅读 · 0 评论 -
玩转 Java8 Stream,常用方法大合集
一、概述Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。也可以使用 Stream API 来并行执行操作。简而言之,Stream API 提供了一种高效且易于使用的处理数据的方式。特点: 不是数据结构,不会保存数据。 不会修改原来的数据源,它会将操作后的数据保存到另外一个对象中。(保留意见:毕竟peek方法可转载 2022-04-07 09:25:23 · 114 阅读 · 0 评论 -
idea maven 下载源码出现:Cannot download sources Sources not found for: xxx
15:47 Cannot download sources Sources not found for: org.springframework.security:spring-security-config:5.6.2解决办法:在对应项目pom.xml所在目录下执行以下命令:mvn dependency:resolve -Dclassifier=sources执行后,IDEA会重新下载依赖包,下载完后再看源码就没有问题了。d...原创 2022-04-05 15:59:06 · 980 阅读 · 0 评论 -
SpringAop(自定义注解)实现用户操作日志记录
1.简介在使用spring完成项目的时候需要完成记录日志,开始以为Spring 的AOP功能,就可以轻松解决,半个小时都不用,可是经过一番了解过后,发现一般的日志记录,只能记录一些简单的操作,例如表名、表名称等记录不到。这个时侯就用到了自定义注解,把想要记录的内容放在注解中,通过切入点来获取到注解参数,然后将参数插入数据库记录2.Spring AOP2.1.关于Spring AOP的一些术语 切面(Aspect):在Spring AOP中,切面可以使用通用类或者在普通类中以@Aspec转载 2022-04-02 09:40:20 · 4833 阅读 · 0 评论 -
Java读取配置文件yml中属性的方法
方法一:在类上添加注解@ConfigurationProperties(prefix="xxx"),定义配置文件中的属性(属性名和配置文件中的一致或者驼峰命名法)方法二:利用注解@Value("${xxx.xxxx}"),在定义属性上添加该注解即可读取配置文件中xxx.xxxx的值...原创 2022-02-25 10:58:38 · 11886 阅读 · 0 评论 -
@Configuration注解属性proxyBeanMethods详解
@Configuration注释中的proxyBeanMethods参数是springboot1.0,升级到springboot2.0之后新增的比较重要的内容,该参数是用来代理bean的。理论首先引出两个概念:Full 全模式,Lite 轻量级模式Full(proxyBeanMethods = true) :proxyBeanMethods参数设置为true时即为:Full 全模式。 该模式下注入容器中的同一个组件无论被取出多少次都是同一个bean实例,即单实例对象,在该模式下SpringBoo转载 2022-02-09 14:54:29 · 8515 阅读 · 1 评论 -
RabbitMQ简介以及应用
一、简要介绍 开源AMQP实现,Erlang语言编写,支持多种客户端 分布式、高可用、持久化、可靠、安全 支持多种协议:AMQP、STOMP、MQTT、HTTP 适用于多系统之间的业务解耦的消息中间件 二、基本概念1、exchange:交换器,负责接收消息,转发消息至绑定的队列,有四种类型: direct:完全匹配的路由 topic:模式匹配的路由 fanout:广播模式 headers:键值对匹配路由 Exchange属性转载 2021-12-21 17:18:07 · 245 阅读 · 0 评论 -
符号运算 位操作~、&、^、|、>>(>>>)、<<
按位取反(~)按位取反1取0,0取1如:01010001 -> 10101110对13取反:~13 = 2解释:13(十进制) = 1101(二进制)对1101取反结果为0010所以等于2按位与(&)都为1则1,否则为0如:1&1=11&0=00&0=01101&1011=1001 =>对应的十进制13&11=9按位异或(^)相同为0,不同为1如:1^1=01^0=1100转载 2021-08-26 11:26:41 · 656 阅读 · 0 评论 -
mybatis plus 看这篇就够了,一发入魂
mybatis-plus是一款Mybatis增强工具,用于简化开发,提高效率。下文使用缩写mp来简化表示mybatis-plus,本文主要介绍mp搭配SpringBoot的使用。注:本文使用的mp版本是当前最新的3.4.2,早期版本的差异请自行查阅文档官方网站:baomidou.com/快速入门 创建一个SpringBoot项目 导入依赖 <!-- pom.xml --><?xml version="1.0" encoding="UTF-8"?>转载 2021-08-26 09:49:45 · 250 阅读 · 0 评论 -
Java实现pdf和Excel的生成及数据动态插入、导出
序言Excel、PDF的导出、导入是我们工作中经常遇到的一个问题,刚好今天公司业务遇到了这个问题,顺便记个笔记以防下次遇到相同的问题而束手无策。公司有这么两个需求:需求一、给了一个表单,让把查出来的数据组装到表单中并且提供以PDF格式的下载功能。需求二、将数据查出来以Excel表格的形式下载下来。二、Java实现PDF的生成和数据动态插入、导出功能1、第一步:PDF制作模板因为PDF常用的软件...转载 2021-07-27 15:11:11 · 579 阅读 · 2 评论 -
用Java玩转Excel,竟然如此easy~
1、POI是什么Apache POI - the Java API for Microsoft Documents,顾名思义,Apache的三方包,用来操作微软office文档的,多数时候用来操作excel,所以这里就以excel方面来说明。需要引入两个包,maven地址如下(version 3.9<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi<转载 2021-07-27 15:00:20 · 180 阅读 · 0 评论 -
定时任务的五种创建方式,你都会么?
Quartz表达式生成地址:http://cron.qqe2.com/支持生成定时任务表达式和反解析,使用Quartz表达式的定时任务如下 xxl-job springboot 的 @Scheduled Quartz 框架 一、job 定时任务的五种创建方式1、使用线程创建 job 定时任务/***TODO使用线程创建job定时任务*@author王松*/publicclassJobThread{publics...转载 2021-07-27 14:33:06 · 511 阅读 · 0 评论 -
List 去除重复数据的五种方式
以下介绍五种-不同的方法去除 Java 中ArrayList中的重复数据1、使用LinkedHashSet删除arraylist中的重复数据LinkedHashSet是在一个ArrayList删除重复数据的最佳方法。LinkedHashSet在内部完成两件事: 删除重复数据 保持添加到其中的数据的顺序 Java示例使用LinkedHashSet删除arraylist中的重复项。在给定的示例中,numbersList是包含整数的arraylist,其中一些是重复的数字。例如1.转载 2021-07-27 14:14:04 · 606 阅读 · 0 评论 -
Java必会的工具库,让你的代码量减少90%
1. Java自带工具方法1.1 List集合拼接成以逗号分隔的字符串//如何把list集合拼接成以逗号分隔的字符串a,b,cList<String>list=Arrays.asList("a","b","c");//第一种方法,可以用stream流Stringjoin=list.stream().collect(Collectors.joining(","));System.out.println(join);//输出a,b,c...转载 2021-07-27 13:23:02 · 61 阅读 · 0 评论 -
40 个 Spring Boot 常用注解
一、Spring Web MVC 与 Spring Bean 注解Spring Web MVC 注解@RequestMapping@RequestMapping注解的主要用途是将Web请求与请求处理类中的方法进行映射。Spring MVC和Spring WebFlux都通过RquestMappingHandlerMapping和RequestMappingHndlerAdapter两个类来提供对@RequestMapping注解的支持。@RequestMapping注解对请求处理类中的请求处转载 2021-07-27 11:20:02 · 104 阅读 · 0 评论 -
将List集合以逗号拼接成字符串
方法一:import org.apache.commons.lang.StringUtils;String join = StringUtils.join(list, ",");方法二:直接使用stream流实现String join = list.stream().map(String::valueOf).collect(Collectors.joining(","));方法三:使用for循环遍历集合StringBuffer sb = new StringBuffer();原创 2021-06-23 16:44:25 · 11958 阅读 · 1 评论 -
Lambda表达式实例应用
Person类:package com.example.lambda;import lombok.Data;/** * @date 2021/5/14 17:02 */public class Person { private String firstName; private String lastName; private int age; public Person(String firstName, String lastName, int a原创 2021-05-17 10:31:42 · 141 阅读 · 0 评论 -
Spring Data JPA 之 一对一,一对多,多对多 关系映射
一、@OneToOne关系映射JPA使用@OneToOne来标注一对一的关系。实体 People :用户。实体 Address:家庭住址。People 和 Address 是一对一的关系。这里用两种方式描述JPA的一对一关系。一种是通过外键的方式(一个实体通过外键关联到另一个实体的主键);另外一种是通过一张关联表来保存两个实体一对一的关系。1、通过外键的方式people 表(id,name,sex,birthday,address_id)address 表(id.转载 2021-01-11 14:48:51 · 1668 阅读 · 1 评论 -
Rocketmq原理及最优实践
一、 MQ背景&选型消息队列作为高并发系统的核心组件之一,能够帮助业务系统解构提升开发效率和系统稳定性。主要具有以下优势:削峰填谷(主要解决瞬时写压力大于应用服务能力导致消息丢失、系统奔溃等问题) 系统解耦(解决不同重要程度、不同能力级别系统之间依赖导致一死全死) 提升性能(当存在一对多调用时,可以发一条消息给消息系统,让消息系统通知相关系统) 蓄流压测(线上有些链路不好压测,可以通过堆积一定量消息再放开来压测)目前主流的MQ主要是Rocketmq、kafka、Rabbitmq,Ro转载 2020-12-08 16:40:28 · 112 阅读 · 0 评论 -
ZooKeeper到底解决了什么问题?
# 目标ZooKeeper 很流行,有个基本的疑问: ZooKeeper 是用来做什么的? 之前没有ZK,为什么会诞生 ZK? OK,解答一下上面的疑问:(下面是凭直觉说的) ZooKeeper 是用于简化分布式应用开发的,对开发者屏蔽一些分布式应用开发过程中的底层细节 ZooKeeper 对外暴露简单的 API,用于支持分布式应用开发 ZooKeeper 在提供上述功能的同时,其还是一个 高性能、高可用、高可靠的分布式集群 上面说这么多,总结一下,ZK转载 2020-12-04 10:19:55 · 195 阅读 · 0 评论 -
高效率!让java8的Stream对集合操作飞起来
简介java8 也出来好久了,接口默认方法,lambda 表达式,函数式接口,Date API 等特性还是有必要去了解一下。比如在项目中经常用到集合,遍历集合可以试下 lambda 表达式,经常还要对集合进行过滤和排序,Stream 就派上用场了。用习惯了,不得不说真的很好用。Stream 作为 java8 的新特性,基于 lambda 表达式,是对集合对象功能的增强,它专注于对集合对象进行各种高效、便利的聚合操作或者大批量的数据操作,提高了编程效率和代码可读性。Stream 的原理:将要处.转载 2020-11-30 13:16:23 · 260 阅读 · 0 评论 -
Java 8中Stream API的这些奇技淫巧!你都Get到了吗?
Stream简介1、Java 8引入了全新的Stream API。这里的Stream和I/O流不同,它更像具有Iterable的集合类,但行为和集合类又有所不同。2、stream是对集合对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作,或者大批量数据操作。3、只要给出需要对其包含的元素执行什么操作,比如“过滤掉长度大于 10的字符串”、“获取每个字符串的首字母”等,Stream 会隐式地在内部进行遍历,做出相应的数据转换。为什么要使用Stream1、函数式编程带来的..转载 2020-11-30 10:34:15 · 277 阅读 · 0 评论 -
感受lambda之美,推荐收藏,需要时查阅
一、引言java8最大的特性就是引入Lambda表达式,即函数式编程,可以将行为进行传递。总结就是:使用不可变值与函数,函数对不可变值进行处理,映射成另一个值。二、java重要的函数式接口1、什么是函数式接口函数接口是只有一个抽象方法的接口,用作 Lambda 表达式的类型。使用@FunctionalInterface注解修饰的类,编译器会检测该类是否只有一个抽象方法或接口,否则,会报错。可以有多个默认方法,静态方法。1.1 java8自带的常用函数式接口。publiccla.转载 2020-11-30 10:03:12 · 61 阅读 · 0 评论 -
IntelliJ IDEA 推荐设置讲解
推荐设置 IntelliJ IDEA 的代码提示和补充功能有一个特性:区分大小写。如上图标注 1 所示,默认就是 First letter 区分大小写的; 区分大小写的情况是这样的:比如我们在 Java 代码文件中输入 stringBuffer IntelliJ IDEA 是不会帮我们提示或是代码补充的,但是如果我们输入 StringBuffer 就可以进行代码提示和补充; 如果想不区分大小写的话,改为 None 选项即可。 如上图标注 1 和 2...转载 2020-11-30 09:30:17 · 1630 阅读 · 0 评论 -
Feed流系统设计
简介差不多十年前,随着功能机的淘汰和智能机的普及,互联网开始进入移动互联网时代,最具代表性的产品就是微博、微信,以及后来的今日头条、快手等。这些移动化联网时代的新产品在过去几年间借着智能手机的风高速成长。这些产品都是Feed流类型产品,由于Feed流一般是按照时间“从上往下流动”,非常适合在移动设备端浏览,最终这一类应用就脱颖而出,迅速抢占了上一代产品的市场空间。Feed流是Feed + 流,Feed的本意是饲料,Feed流的本意就是有人一直在往一个地方投递新鲜的饲料,如果需要饲料,只需要盯着投转载 2020-11-27 09:25:50 · 145 阅读 · 0 评论 -
JVM 完整深入解析!
Java运行时数据区Java虚拟机在执行Java程序的过程中会将其管理的内存划分为若干个不同的数据区域,这些区域有各自的用途、创建和销毁的时间,有些区域随虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结束来建立和销毁。Java虚拟机所管理的内存包括以下几个运行时数据区域,如图:1、程序计数器:指向当前线程正在执行的字节码指令。线程私有的。2、虚拟机栈:虚拟机栈是Java执行方法的内存模型。每个方法被执行的时候,都会创建一个栈帧,把栈帧压人栈,当方法正常返回或者抛出未捕获的..转载 2020-11-26 16:07:44 · 208 阅读 · 0 评论 -
世上最全的RabbitMQ-总结
RabbitMQ是基于AMQP协议的,通过使用通用协议就可以做到在不同语言之间传递。AMQP协议核心概念 server:又称broker,接受客户端连接,实现AMQP实体服务。 connection:连接和具体broker网络连接。 channel:网络信道,几乎所有操作都在channel中进行,channel是消息读写的通道。客户端可以建立多个channel,每个channel表示一个会话任务。 message:消息,服务器和应用程序之间传递的数据,由prope转载 2020-11-26 14:44:33 · 141 阅读 · 0 评论 -
Java 中的锁有哪些?
公平锁/非公平锁 可重入锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观锁 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁 在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下: 公平锁/非公平锁 可重入锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观锁 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁 上面是很多锁..转载 2020-11-26 10:31:38 · 89 阅读 · 2 评论 -
每个软件开发人员都应该知道的5种设计模式
在软件开发过程中,软件设计模式是解决常见问题最通用的。可重用的解决方案。通常设计模式是用于解决问题的模板,可以在多种不同的情况下使用,但它并不是一个可以直接转换为代码的设计,但确实开发者奠定软件是否成功的基础。有一些设计模式是每个开发人员都应该了解的,包括它应该在什么地方和什么时候使用,今天,就和大家讨论一下每个软件开发人员都应该知道5种重要的设计模式:1、单例模式这是最常用和最常见的设计模式,几乎每个应用程序都需要用到单例模式,这种模式涉及到一个单一的类,该类负责创建自己的对象,当你需转载 2020-11-25 10:54:11 · 1288 阅读 · 0 评论 -
程序员必知必会的十大排序算法
绪论身为程序员,十大排序是是所有合格程序员所必备和掌握的,并且热门的算法比如快排、归并排序还可能问的比较细致,对算法性能和复杂度的掌握有要求。bigsai作为一个负责任的Java和数据结构与算法方向的小博主,在这方面肯定不能让读者们有所漏洞。跟着本篇走,带你捋一捋常见的十大排序算法,轻轻松松掌握!首先对于排序来说大多数人对排序的概念停留在冒泡排序或者JDK中的Arrays.sort(),手写各种排序对很多人来说都是一种奢望,更别说十大排序算法了,不过还好你遇到了本篇文章!对于排序的分类,主要不同转载 2020-11-23 16:54:21 · 294 阅读 · 2 评论