
java
文章平均质量分 78
java
黄嚯嚯
生于土地,长于风中,走在城市的霓虹里。
技术是谋生,审美是灵魂。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
浅谈因为项目中的Logback于Nacos的Logback冲突导致的项目启动失败 ERROR in ch.qos.logback.core.rolling.RollingFileAppender[CO
环境 : Nacos 2.2.1 , Spring-cloud Hoxton.SR1 , com.alibaba.cloud.version 2.2.8 (最近新搭建了一次虚拟机, 然后重新部署了Nacos , 同时也在一个新项目里引入了Nacos 的服务注册功能 , 以下是服务Pom版本管理配置然后再实际使用模块pom文件中引入服务注册和配置管理application.ymal 的配置如下。原创 2023-03-31 14:20:42 · 11846 阅读 · 6 评论 -
FileInputStream 在使用完以后,不关闭流,想二次使用可以怎么操作
FileInputStream 在最后会通过open(name) 这个方法打开文件,open()会调用open0(), open0()是一个native方法,实现不是java,看到注释,大概的意思就是指定文件路径,然后可以打开进行读操作。那反射要实现,需要获取哪个方法呢?注意这里是FileInputStream,是一个字节流不要出现中文字符否则会乱码。既然知道open() 方法,那就可以用反射了,注意这个方法是private。很明显看到这个第二次的输出是没有任何结果的。Java的反射是个什么东西?原创 2023-03-13 15:07:29 · 1779 阅读 · 0 评论 -
Java根据Ip获取地址详细信息
笔者这里使用的是ali的开放api 的url , 所以需要使用htttp 形式调用,至于调用方式多种多样, 我这里挑一个就很简单的 Rest Template来使用。原创 2022-12-08 17:06:52 · 356 阅读 · 0 评论 -
一个合格的后端开发总要经历一次死锁吧
死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。例如,如果进程A锁住了记录1并等待记录2,而进程B锁住了记录2并等待记录1,这样两个进程就发生了死锁现象。原创 2022-11-15 11:29:12 · 300 阅读 · 0 评论 -
通过手撸HashMap来了解底层原理
这一篇呢 , 我们来手写一个简单的HashMap,所谓HashMap,就是一个映射表。然后底层是数组加链表形式(Jdk1.7) 的存储形式 , 在Jdk1.8的时候 , 将这种存储形式更改成为了数组加链表加红黑树形式 , 相较于之前的改动是在链表达到一定阈值的时候 ,链表长度超过8时树化 . 将链表更改为查询速度更快的红黑树. 今天我们主要从Jdk1.7入手 , 来实现一个简易版的HashMap , 至于为什么是简易版的, 这里稍微做下说明, 原因是因为 , HashMap的源码中针对 pu原创 2022-07-11 21:35:10 · 454 阅读 · 2 评论 -
Thread线程异常的处理方式
我们都知道当程序运行出错时 , 会出现异常 , 并有异常信息输出 , 且如果不对异常进行捕获处理的话 , 是会影响到代码的执行的 . 但是如果在线程中出现异常, 则不然, 线程中出现的异常是没办法进行上抛捕获的 , 一般大家遇到这种情况都是在线程内进行异常捕获处理 , 但如果我现在需要将异常抛出, 告知主进程呢 ?首先我们需要知道 , 异常分为两类 ,分别是编译时异常和运行时异常 , 定义方法时,必须声明所有可能抛出的异常。在调用该方法时,必须手动捕获它的checked E原创 2022-07-04 11:36:00 · 2668 阅读 · 0 评论 -
main 方法中开了线程后 , 子线程导致主线程不退出
Java分为两种线程:用户线程和守护线程所谓守护线程是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分。因 此,当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程。反过来说,只要任何非守护线程还在运行,程序就不会终止。...原创 2022-07-01 16:30:49 · 1109 阅读 · 0 评论 -
java多线程并发环境下为什么使用while而不用if
目录前言一 . 使用if所引发的问题1.1 虚假唤醒 1.2 虚假唤醒代码示例 1.3 解决虚假唤醒二 . 为什么用while就能解决问题结论再开始本文之前 , 先给大家看一张图 , 这是Object.wait()的源码介绍 , 翻译过来内容如下我们在使用线程时,进行条件判断时,往往会先考虑使用if进行判断,在线程进行等待时就会出现不确定的结果。先来看看两个线程下的操作。首先创建一个模拟业务类, 也是一个经典案例 "生产者&消费者" 然后分别创建补货/售货两个线程 , 用来模拟后续的动作接下来创原创 2022-06-30 15:12:26 · 1849 阅读 · 2 评论 -
设计模式之-访问者模式
访问者模式介绍最复杂的设计模式,并且使用频率不高,《设计模式》的作者评价为:大多情况下,你不需要使用访问者模式,但是一旦需要使用它时,那就真的需要使用了。访问者模式是一种将数据操作和数据结构分离的设计模式。(觉得太抽象,可以看下面的例子)。访问者模式应用场景1、对象结构中对象对应的类很少改变,但经常需要在此对象结构上定义新的操作。2、需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免让这些操作"污染"这些对象的类,也不希望在增加新操作时修改这些类。访问者模式应用实例原创 2022-01-16 16:43:10 · 522 阅读 · 2 评论 -
GuavaCash本地缓存使用
前言 :为什么要使用缓存在系统中,有些数据,数据量小,但是访问十分频繁(例如国家标准行政区域数据),针对这种场景,需要将数据搞到应用的本地缓存中,以提升系统的访问效率,减少无谓的数据库访问(数据库访问占用数据库连接,同时网络消耗比较大),但是有一点需要注意,就是缓存的占用空间以及缓存的失效策略。为什么是本地缓存采用本地缓存的数据,大多是与业务无关的小数据缓存,没有必要搞分布式的集群缓存,如果是涉及到订单和商品这类重要业务的数据,才会直接走DB进行请求, 再加上分布式缓存的构建,集...原创 2021-12-14 18:03:46 · 1813 阅读 · 0 评论 -
Springboot整合squirrel-foundation状态机
上一篇文章介绍了状态机介绍以及常见种类对比。本篇主要介绍一下项目中如何使用squirrel-foundation的一些细节以及如何与spring进行集成的流程。状态机(有限状态自动机 FSM)介绍_黄嚯嚯-优快云博客状态机概念, 为什么要使用状态机https://blog.youkuaiyun.com/qq_42543063/article/details/119111658阅读过程中如有介绍不全的位置 , 也可以留言 , 或者参考官方文档自行分析 squirrel-foundation | Squ...原创 2021-10-26 17:42:58 · 3363 阅读 · 3 评论 -
前端传的list不能遍历 报错 Error: java.util.LinkedHashMap cannot be cast to 三种方式进行二次序列化
在经过一番问题查找后, 由于公司封装了一层框架 , 然后框架在进行前后端参数交互时候, 针对参数进行了统一序列化 , 也就是说如果不在平台上进行配置的话 , 公司框架是无法识别出来类型的 , 在无法识别类型的情况下进行的序列化后代码是无法准确地被反序列化的 ,但又懒得去添加,,,,索性在代码里针对接受过来的参数进行了二次手动序列化 , 这里我一共尝试了 三种 ,具体使用根据自己代码选择 ,原创 2021-07-24 13:24:26 · 1431 阅读 · 2 评论 -
Git提交备注规范
commit messge规范十分有助于项目管理,目前使用最多的是Angular团队的规范主要规范是:type: commit的类型feat: 新特性fix: 修改问题refactor: 代码重构docs: 文档修改style: 代码格式修改,非csstest: 测试用例修改chore: 其他修改,比如构建流程,依赖管理scope: commit影响的范围,比如: route, component, utils, build...subject: commit 的概述body: .原创 2021-06-16 11:12:36 · 1270 阅读 · 1 评论 -
MongoDB( 六 )MongoDB之MapReduce
MongoDB Map ReduceMap-Reduce是一种计算模型,简单的说就是将大批量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(REDUCE)。MongoDB提供的Map-Reduce非常灵活,对于大规模数据分析也相当实用。MapReduce 命令>db.collection.mapReduce( function() {emit(key,value);}, //map 函数 key 与 value 为集合中任意参数 key需唯一 functi原创 2021-03-08 17:35:24 · 1516 阅读 · 5 评论 -
java8函数式接口Consumer<T>
目录Java 8 函数式接口函数式接口介绍函数式接口实例其他函数式接口Java 8 函数式接口 函数式接口介绍 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。函数式接口可以被隐式转换为 lambda 表达式。Lambda 表达式和方法引用(实际上也可认为是Lambda表达式)上。 函数式接口实例 函数式接口可以使用在如下场景: 现有一个常规数据组装类(用于拼装各种实体类信息) A ,..原创 2021-02-22 11:31:01 · 2442 阅读 · 0 评论 -
MongoDB( 四 ) MongoDB注册各种类型转换器、ObjectId序列化转换器
笔者之前写过一篇有关mongo 简介的博客 , 里面写着有关 mongo 数据类型的相关解释MongoDB( 一 ) MongoDB 数据类型目录(一):自定义转换器1 . 写转换器样例2 . 读类型转换器(二): 注册自定义转换器(三): ObjectId序列化ObjectId1 . 序列化方式一: 使用ResponseBodyAdvice拦截Controller方法默认返回参数,统一处理返回值/响应体2 . 序列化方式二: 将ObjectId序列化类用作Mo...原创 2020-12-25 11:10:03 · 2360 阅读 · 2 评论 -
Mongo聚合函数使用Sort排序时内存不足导致查询失败,开启allowDiskUse=true
目录1、问题描述2、问题解决1. Java代码方式解决办法2. Mongo 原生聚合函数解决办法1、问题描述由于项目原因, 需要向数据存储至mongo,在使用过程中 , 单个document(集合)数据量大概在80万条左右 , 单条数据为16的栏位(属性) ,现有如下需求 , 根据某些特定条件一次性查出N条数据(大致数量在8万条左右) , 并进行 sort 排序,然后在使用Java代码查询时候, 直接抛出了异常 ,经过Debug跟踪发现在问题具体抛出点是在 进行Sort时导原创 2020-12-18 17:00:18 · 9325 阅读 · 1 评论 -
nohup启动jar包时 2>/dev/null 和 >/dev/null 2>&1 和 2>&1>/dev/null 三者的区别
目录(一) Linux 系统预留文件描述符1、文件描述符2、重定向3、特殊文件/dev/null 和 /dev/zero1、特殊文件描述2、特殊文件使用4、使用nohup 启动jar包nohup命令语法格式参数说明(一) Linux 系统预留文件描述符1、文件描述符Linux系统预留可三个文件描述符:0、1和20 --- 标准输入(stdin) 1 --- 标准输出(stdout) 2 --- 标准错误(stderr)...原创 2020-12-18 15:18:28 · 1801 阅读 · 0 评论 -
Lombok常用注解使用方式和Lombok的@EqualsAndHashCode(callSuper = false)存在的问题
在认识 @EqualsAndHashCode 这个注解之前 , 我么首先需要知道 Lombok ,一 : Lombok 简介Lombok项目是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码。仅五个字符(@Data)就可以替换数百行代码从而产生干净,简洁且易于维护的Java类。Lombok 常用注解:@Setter :注解在类或字段,注解在类时为所有字段生成setter方法,注解在字段上时只为该字段生成sette...原创 2020-07-22 20:57:57 · 4396 阅读 · 0 评论 -
MongoDB( 三 ) MongoDB的Java多数据源配置
在前面的文章中介绍了Mongo的简介数据结构等一些基础MongoDB Java操作 ( 一 ) MongoDB 简介而后又介绍了MongoDb如何使用java 进行MongoDb连接 和Mongo的连接池配置等一些操作MongoDB Java操作 ( 二 ) MongoDB的连接以及基础配置、连接池配置这篇说下MongoDb的多数据源配置Mongo多数据源配置(一) 项目背景介绍由于项目业务 , 现需要将项目中的业务数据 与 生产数据分开存放分开查询 , 分别管理 , 故而需要配置...原创 2020-12-04 17:18:35 · 2055 阅读 · 0 评论 -
MongoDB( 二 ) MongoDB的连接以及基础配置、连接池配置
前面说了mongo的简介以及mongo的数据结构 (MongoDB Java操作教程 ( 一 ) MongoDB 简介) , 这篇说下mongo在Java下的连接以及配置(一) MongoDB的连接标准 URI 连接语法:mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]] mongodb://这是固定的格式,必须要指定。...原创 2020-11-30 15:34:40 · 13483 阅读 · 0 评论 -
MongoDB( 一 ) MongoDB 简介
Mongo简介MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。MongoDB主要特点MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。 你可原创 2020-11-24 15:45:15 · 699 阅读 · 0 评论 -
List 分组、分割、平分
将一组数据平均分成n组/** * 将一组数据平均分成n组 * * @param source 要分组的数据源 * @param n 平均分成n组 * @param <T> * @return */public static <T> List<List<T>> averageAssign(List<T> source, int n) { List<List<T>> result = ne原创 2020-07-04 15:48:13 · 793 阅读 · 0 评论 -
Linux安装RabbitMQ以及用户配置
一 : RabbitMQ 简介RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而群集和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。1.什么是MQ消息队列(Message Queue,简称MQ),从字面意思上看,本质是个队列,FIFO先入先出,只不过队...原创 2020-04-05 11:56:43 · 1165 阅读 · 0 评论 -
Java使用poi读取Excel文件
废话不多说直接上代码 , 具体注释代码里都有写到一 : pom引入(这里也涵盖导出的pom) <!-- 导入和导出excel时需要的jar包 --> <dependency> <groupId>org.apache.poi</groupId> <artifactId&g...原创 2020-03-30 11:40:37 · 353 阅读 · 2 评论 -
Java工具类时间Date工具类
package com.xhkjedu.utils;import org.apache.commons.lang3.StringUtils;import java.text.ParseException;import java.text.SimpleDateFormat;import java.time.DayOfWeek;import java.time.LocalDate;...原创 2020-03-30 11:33:10 · 207 阅读 · 0 评论 -
Java动态启用线程调度定时任务
因为近期项目中需要用动态调用定时任务 , 所以就记录一下这个过程 , 避免以后用到 , 当做参考 ,首先笔者在这里需要描述一下场景 : 这个项目终到的框架结构是 Spring-boot 所以在相关类的注入 或者注解方面 都是以Springboot 的方式为主1 . 基础类的配置 在此之前笔者已经强调所使用项目架构 , 要实现计划任务,首先通过在配置类注...原创 2020-03-30 11:32:56 · 1296 阅读 · 0 评论 -
JAVA LocalDate工具类
package com.jp.jasper.util;import java.time.Instant;import java.time.LocalDate;import java.time.LocalDateTime;import java.time.Period;import java.time.ZoneId;import java.time.ZoneOffset;impor...原创 2020-03-20 14:33:00 · 379 阅读 · 0 评论 -
Jmeter的使用和使用Jmeter进行压测
一 : 前言压力测试是每一个Web应用程序上线之前都需要做的一个测试,他可以帮助我们发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率;预估系统的承载能力,使我们能根据其做出一些应对措施。所以压力测试是一个非常重要的步骤,下面我带大家来使用一款压力测试工具JMeter , 笔者有注意到网上有种说法就是Postman 也可也进行压力测试 , 很显然没有描述清楚 , 或者说对postman的测...原创 2020-03-25 17:14:36 · 477 阅读 · 1 评论 -
Intellij热部署插件Jrebel安装详解(2020新版或以前旧版)
一 , 下载安装Jreble1、在IDEA中一次点击 File->Settings->Plugins->Brows Repositories 2、在搜索框中输入JRebel进行搜索 3、找到JRebel for intellij 4、install ...原创 2020-07-17 16:36:38 · 7692 阅读 · 4 评论 -
javacv实现上传视频后自动保存封面缩略图(Java截取视频缩略图)
现在视频网站展示列表都是用img标签展示的,动图用的是gif,但是我们上传视频时并没有视屏封面,就这需要上传到服务器时自动成功封面并保存JavaCV 是一款开源的视觉处理库,基于GPLv2协议,对各种常用计算机视觉库封装后的一组jar包,封装了OpenCV、libdc1394、OpenKinect、videoInput和ARToolKitPlus等计算机视觉编程人员常用库的接口。此方法...原创 2020-03-16 16:25:07 · 1702 阅读 · 0 评论 -
java判断两个文件是否相同
废话不多说直接上代码:1.计算MD5或SHA-1然后对比判断 // 计算文件的 MD5 值 根据MD5值 判断文件是否是同一个文件 public static String getFileMD5(File file) { if (!file.isFile()) { return null; } Messag...原创 2020-03-12 15:44:17 · 1137 阅读 · 0 评论 -
Jasper报表开发中文不显示或者显示乱码问题解决
最初使用jasper时候会遇见中文不显示中文不显示的问题 , 也是差很多博客 , 方法比较杂, 感觉最有效也最方便的 ,还是以下这一个 亲测有效!!!首先1、官网下载jasperreports-6.1.1-project.zip 2、解压缩,查看demo的fonts net\sf\jasperreports\fonts\dejavu目录下增加simsun.ttf(不能...原创 2020-03-12 15:23:47 · 2915 阅读 · 0 评论 -
IReport 的安装注意事项jdk版本问题
笔者使用的版本为5.0iReport -5.6.0 工具 的 运行 完全依赖于 jdk 而 iRport 目前 并不支持 高版本jdk 只支持 1.7 及以下所以 需手动修改配置文件在 iRport 文件夹 下 D:\iReports-5.6.0-windows\iReport-5.6.0\etc 路径 根据个人 实际情况 而不同etc 文件夹下 的 ...原创 2020-03-12 15:12:48 · 2683 阅读 · 0 评论 -
使用Java发送邮件工具类
import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import java.util.Date;import java.util.Properties;/** *...原创 2020-03-12 15:00:25 · 304 阅读 · 0 评论 -
Mysql时间操作的SQL-比较/Format
在mysql使用过程中,日期一般都是以datetime、timestamp等格式进行存储的,但有时会因为特殊的需求或历史原因,日期的存储格式是varchar,那么我们该如何处理这个varchar格式的日期数据呢使用函数STR_TO_DATA(str,format)时间字段为Greens_Data 类型为 varchar查询指定一段时间中的数据并排序1、第一种函数STR_TO_DATE(str,format):将字符串转为时间格式2、第二种函数DATE_FORMAT(str,format)原创 2020-03-12 14:54:28 · 1139 阅读 · 0 评论 -
java之Cron定时表达式表达式大全
Cron 定时表达式 0 * * * * ? 每1分钟触发一次 0 0 * * * ? 每天每1小时触发一次 0 0 10...原创 2020-03-12 14:52:29 · 5229 阅读 · 0 评论 -
Linux目录介绍以及安装JDK
首先我们需要了解下Linux 系统里面每个路径具体作用都是什么【常见目录说明】 目录 /bin 存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里。 /etc 存放系统管理和配置文件 /home 存放所有用户文件...原创 2020-01-09 14:58:19 · 384 阅读 · 0 评论 -
java 8 有关List的分组、排序、求和等操作详解
我相信对于大多数程序员来说,日常工作过程当中难免少不了针对集合的操作,若要对集合进行分组、筛选、针对某字段求和求和,则需要写大量的代码去实现某一功能,java 8 推出的流则是以声明的形式操作集合,它就像SQL语句,我们只需告诉流需要对集合进行什么操作,它就会自动进行操作,并将执行结果交给你,无需我们自己手写代码。因此,流的集合操作对我们来说是透明的,我们只需向流下达命令,它就会自动把我们想要...原创 2019-12-02 17:20:14 · 3344 阅读 · 0 评论