Java
文章平均质量分 75
stalin_
程序员界的小学生
展开
-
使用POI实现读取Excel数据并生成柱状图、折线图、饼状图的工具类
最近有一个需求是要通过程序自动根据excel中的数据来动态生成相应的图表。其中就有柱状图,折线图,饼状图。但是没想到用wps生成非常的简单,一点就可以生成,使用POI生成的过程非常的难受。不得不将这次经验记录在博客中,以备后用。也奉献给大家~原创 2023-02-24 15:11:36 · 3239 阅读 · 1 评论 -
Java开发必须掌握的运维知识 (五)-- 自动持续集成工具Jenkins的安装及如何使用
Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。原创 2022-10-12 17:34:06 · 388 阅读 · 0 评论 -
Java开发必须掌握的运维知识 (四)-- 微服务自动部署DockerMaven插件的使用
传统企业的微服务可能直接通过一些paas云自动部署了,我们自学过程中还没到那个程度,部署大概就是手动将程序编译成jar/war包,上传至虚拟机的jdk容器,然后启动。但是这样操作复杂且容易出错。尤其在学习了Docker之后,它自身就已经集成了maven插件,用科技提升一下生产力何乐不为。下面我们就来看一下如何配置DockerMaven插件自动打包。原创 2022-10-12 17:32:27 · 335 阅读 · 0 评论 -
Java开发必须掌握的运维知识 (三)-- Docker迁移备份与DockerFile的使用
Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。对于开发人员:可以为开发团队提供一个完全一致的开发环境;对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了;对于运维人员:在部署时,可以实现应用的无缝移植。原创 2022-10-12 17:31:22 · 191 阅读 · 0 评论 -
Java开发必须掌握的运维知识 (二)-- Docker镜像、容器操作实用命令大全
REPOSITORY:镜像名称TAG:镜像标签IMAGE ID:镜像IDCREATED:镜像的创建日期(不是获取该镜像的日期)SIZE:镜像大小这些镜像都是存储在Docker宿主机的/var/lib/docker目录下。原创 2022-10-12 16:53:39 · 254 阅读 · 0 评论 -
Java开发必须掌握的运维知识 (一)-- Docker核心介绍及安装使用
目前虚拟化技术十分流行。在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件,对资源充分利用。而Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。Docker 的基础是 Linux 容器(LXC)等技术。在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。原创 2022-10-12 16:28:21 · 559 阅读 · 0 评论 -
服务注册与配置一站式管理神器Nacos(四)-- 配置中心的使用
通常我们在项目中会有很多参数需要配置到项目中去,应用程序在启动和运行的时候往往需要读取一些配置信息,配置基本上伴随着应用程序的整个生命周期,比如:数据库连接参数、启动参数等。配置对于程序是只读的,程序通过读取配置来改变自己的行为,但是程序不应该去改变配置配置贯穿于应用的整个生命周期,应用在启动时通过读取配置来初始化,在运行时根据配置调整行为。比如:启动时需要读取服务的端口号、系统在运行过程中需要读取定时策略执行定时任务等。常见的有程序内部hard code,配置文件,环境变量,启动参数,基于数据库等同一份原创 2022-08-07 10:45:51 · 381 阅读 · 1 评论 -
服务注册与配置一站式管理神器Nacos(三)-- RESTful/Dubbo服务注册、发现、负载
1)新建项目2)新建两个子项目,nacos-restful-consumer和nacos-restful-provider表示消费方和提供方。3)创建consumer项目和provider项目的配置文件application.ymlconsumer配置文件内容如下4)创建项目启动类comsumer启动类provider启动类4)分别启动provider和consumer项目并在nacos上查找是否注册成功2、服务发现及负载均衡1)provider新增controller代码如下。......原创 2022-07-21 19:20:15 · 554 阅读 · 0 评论 -
服务注册与配置一站式管理神器Nacos(二)-- 软件安装及使用技巧
Nacos依赖Java环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置Maven环境,请确保是在以下版本环境中安装使用1)64bitOS,支持Linux/Unix/Mac/Windows,推荐选用Linux/Unix/Mac。下载&配置。下载&配置。......原创 2022-07-20 19:52:14 · 388 阅读 · 0 评论 -
服务注册与配置一站式管理神器Nacos(一)-- 优势及功能特性
Nacos是阿里的一个开源产品,它是针对微服务架构中的服务发现、配置管理、服务治理的综合型解决方案。官网里这样介绍的1、Nacos致力于帮助您发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。2、Nacos帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos是构建以“服务”为中心的现代应用架构(例如微服务范式、云原生范式)的服务基础设施。...............原创 2022-07-19 17:33:12 · 1783 阅读 · 0 评论 -
Java--如何快速查找想要使用的jar包pom坐标
很多时候,我们在决定了使用什么技术的时候,往往不知道当前最好使用哪个版本的pom坐标,这时我们盲目去百度可能需要花费很多时间去找合适的pom版本。那么这里有一种很方便的方式值得大家使用。1、首先我们打开https://mvnrepository.com/![在这里插入图片描述](https://img-blog.csdnimg.cn/9e863e94934b4d1d9f512d83f5e88ae0.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZm原创 2021-11-14 08:33:59 · 3197 阅读 · 0 评论 -
SpringBoot整合Smart-doc(替代swagger的接口文档自动生成工具)
一、前言我们都知道平时写接口文档会比较麻烦,而且遇到需求频繁变更时,修改起来费时费力,那么有没有办法自动生成接口文档呢。答案是有的。通常我们会使用swagger进行接口文档的生成,但是如果你的公司对项目接入了一些安全方面的扫描,就会发现swagger的注解侵入性较强,会被当成安全隐患,那么有没有什么办法可以即实现接口文档的生成,代码侵入性又不强呢,答案也是有的,那就是Smart-doc。那么下面我们就讲讲Smart的引入和使用。二、如何引入1、首先在pom文档中添加smart-doc插件,然后等待ma原创 2021-11-07 12:41:42 · 1352 阅读 · 0 评论 -
Java--使用中文字体在Linux服务器不支持的解决办法
昨日在使用Graphics类绘图时,在图片上加了一些中文字符。本来在windows上测试是正常的,但是部署到Linux服务器上进行调用时,发现原本的中文字符编程了一个一个的方块:口口这是怎么回事呢?原因分析:由于jdk默认支持的字体中不含中文的字体形式。所以我们需要手动往linux服务器中的jdk中导入字体文件,才能解决这个问题。。解决方式:1、从电脑上找到需要导入的字体,windows系统的字体目录:C:\Windows\Fonts2、将需要的字体复制一份粘贴到Linux服务器上。Linux原创 2021-09-29 17:28:06 · 1818 阅读 · 1 评论 -
Java--打印字符动画如何解决屏闪问题
前段时间做了一个华强买瓜的字符动画版本。结果有网友问我:“大佬,做出来的怎么有屏闪啊,怎么解决啊?”我,想了想~ 哎呀,最近太忙了,等有时间再看吧。于是在今天我终于抽出点时间把这个问题解决了。一、前言那么肯定有网友要问如何制作字符动画呢~ 可以参考我的这篇文章:华强买瓜–Java字符动画播放如何实现?(含音频)二、优化屏闪问题由于我们在打印字符动画时使用了一个清屏方法:new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().wai原创 2021-09-25 19:54:10 · 453 阅读 · 1 评论 -
Java--生成带标题的二维码并以IO流形式返回前端展示
文章目录前言一、使用技术二、开发步骤1.pom中引入zxing2.二维码工具类的编写3.Controller的编写运行结果前言最近项目有一个按照床位生成二维码图片返回给前端导出的需求,经过我的一番努力,在借鉴网上资料的同时修改完善出了自己的一套方便实用的生成方式。写博客的目的有两个:1、作为笔记以后自己方便使用。2、分享给大家借鉴,在实际去写时少走一些弯路。一、使用技术这里我们使用谷歌的zxing工具包进行二维码图片的生成,生成之后在这个图片的顶部加上我们需要的文字,当然文字的位置是可调的原创 2021-09-13 21:46:57 · 1402 阅读 · 0 评论 -
华强买瓜--Java字符动画播放如何实现?(含音频)
文章目录前言一、实现思路1.你需要把视频转换成一帧一帧的图片。2.把图片转换成字符串文件。3.按照一定的时间差遍历打印字符串文件。4.另起一个线程进行音乐的同步播放。二、具体步骤1.视频转图片2.图片转字符串文件3.循环遍历字符串文件4.通过异步线程添加音乐播放三、总结前言最近华强买瓜在B站大火,于是乎在闲暇之余,通过百度和各种学习,终于将这个视频通过Java形式展现出来了~具体效果是这样的~可以参考我发布在B站的视频进行预览~一、实现思路其实实现这个视频转文字输出的功能并不难,就是需要分成好几原创 2021-08-17 10:16:19 · 1393 阅读 · 2 评论 -
如何在云服务器上搭建一个自己的博客系统(完整流程梳理)
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、项目下载1.下载地址:1.下载及导入本地。二、搭建前的准备工作。1.Mysql建库,执行数据库建表,生成数据脚本2.将博客项目打成jar包。3.创建项目目录及上传项目配置。3.项目启动及访问三、总结前言前段时间买了一个云服务器一直没怎么用起来,最近突然想起来可以从网原创 2021-08-13 12:09:34 · 3183 阅读 · 0 评论 -
实体类到底如何定义,怎么使用(浅析VO、BO、PO、DTO)
POJO的定义是无规则简单的对象,在日常的代码分层中pojo会被分为VO、BO、 PO、 DTO,这些分别是指哪里的对象呢?让我们一起研究下吧。一、首先了解下VO、BO、 PO、 DTO是什么VO (view object/value object)表示层对象1、前端展示的数据,在接口数据返回给前端的时候需要转成VO2、个人理解使用场景,接口层服务中,将DTO转成VO,返回给前台B0(bussines object)业务层对象1、主要在服务内部使用的业务对象2、可以包含多个对象,可以用原创 2021-07-16 10:41:56 · 2107 阅读 · 0 评论 -
JSP-EL表达式,EL内置对象的使用,EL取值,JSTL的使用(三)
一、EL表达式(Expression Language)1、目的:为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化。2、语法:由于EL可以简化JSP页面的书写,因此,在JSP的学习中,掌握EL是相当重要的。要使用EL表达式,首先要学习它的语法。EL表达式的语法非常简单,都是以“${”符号开始,以“}”符号结束的,具体格式如下:${表达式}二、EL的内置对象:如下示例(获得指定作用域原创 2021-06-30 21:24:03 · 615 阅读 · 2 评论 -
JSP-语法,指令、九大内置对象(二)
前面介绍完JSP的流程和本质,下面来说说JSP的语法。一、JSP基本语法1、JSP脚本元素JSP脚本元素是指嵌套在<%和%>之中的一条或多条Java程序代码。通过JSP脚本元素可以将Java代码嵌入HTML页面中,所有可执行的Java代码,都可以通过JSP脚本来执行。JSP脚本元素主要包含如下三种类型:1)JSP ScriptletsJSP Scriptlets 是一段代码段。当需要使用Java实现一些复杂操作或控制时,可以使用它。JSP Scriptlets的语法格式如下所示:&原创 2021-06-29 21:36:05 · 463 阅读 · 0 评论 -
JSP-介绍、本质、流程解析(一)
一、JSP介绍JSP全名是Java Server Pages,它是建立在Servlet规范之上的动态网页开发技术。在JSP文件中,HTML代码与Java代码共同存在,其中,HTML代码用来实现网页中静态内容的显示,Java代码用来实现网页中动态内容的显示。为了与传统HTML有所区别,JSP文件的扩展名为.jsp。JSP技术所开发的Web应用程序是基于Java的,它可以用一种简捷而快速的方法从Java程序生成Web页面,其使用上具有如下几点特征:1、跨平台:由于JSP是基于Java语言的,它可以使用Ja原创 2021-06-29 12:53:04 · 528 阅读 · 0 评论 -
Java如何使用IntelliJ IDEA创建maven的web项目
PS:从eclipse刚转到IDEA,对于这个陌生的工具我表示无言,但听说很好用,也就试试,结果我几乎花了一晚上的时间才搭起来maven web项目,觉得在此给各位一个搭建maven web项目的教程,指出我踩过的各种坑!步骤一:首先先创建一个project,在这里就是创建一个maven的工作空间步骤二:按照下面的步骤操作就可以了,最后next首先,选择左边的maven然后在右边Creater from archetype选项前面打个勾,最后选择maven-archetype-webapp原创 2021-06-04 13:37:39 · 345 阅读 · 0 评论 -
MyBatis 大于等于、小于等于的写法
标准写法如下:第一种写法:原符号 < <= > >= & ' " 替换符号 < <= > >= & ' " SQL示例如下:create_time >= #{startTime} and create_time <= #{endTim转载 2020-11-19 16:27:53 · 267 阅读 · 0 评论 -
Sonar认知复杂度介绍及高复杂度代码的优化思路
一、sonar是什么:sonar是一个代码质量管理平台,能检测出项目中存在的以下一些常见问题。1.缺乏单元测试。统计冰战士单元测试覆盖率。2.重复代码。检测项目中存在的重复代码,并可以在线查看哪些代码重复。3.注释不足或过多。没有注释将使代码可读性变差,而过多的注释又会使得开发人员花费过多的精力去阅读注释,违背初衷。4.潜在的缺陷。比如程序有可能存在空指针,数组越界等问题。5.不遵循代码标准。如方法,类的命名不规范。6.糟糕的复杂分布。文件,类,方法等,如果复杂度过高将难以维护,原创 2020-10-22 19:59:50 · 9701 阅读 · 2 评论 -
Java--使用工厂+策略模式解决if-else/switch分支过多的问题(含demo)
一、前提在平时的开发过程中,你是否遇到过以下问题:1.sonar扫描代码圈复杂度过高,需要减少if-else分支及switch分支。2.某个类中/某个方法的代码太多,难以维护。代码中业务分支过多时,代码可读性会变得很差,大量的代码堆积在一个类中,也会变得难以维护。遇到这些问题,说明你:该拆分啦!!使用Spring的工厂管理+策略模式可以很好的解决这个问题。二、策略模式的介绍策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如每.原创 2020-09-16 15:58:10 · 3335 阅读 · 5 评论 -
Java--JSON嵌套JSON中带‘\‘字符的解决方式
最近在开发中遇到了这么一个问题,我在构造一个Json字符串的时候,由于这个JSON字符串的一个属性本身也是一个JSON字符串,所以在转换成字符串的时候这个子JSON字符串中就带了'\'反斜杠字符。导致后面传参发送到接收方识别不了。由于我不想通过处理JSON字符串(直接把\替换成空串),而是直接传进来就是正常的。经过一系列的尝试,终于将其解决。一、问题复现: //子json串...原创 2019-10-17 17:33:06 · 15927 阅读 · 2 评论 -
MongoDB详解--使用Java对MongoDB的分页查询,排序查询,比较运算条件查询
上一篇文章我们学习了使用Java对MongoDB进行基本的增删改查操作。这次我们进一步来学习如何使用Java对MongoDB进行复杂查询。其中包含对查询出的文档按照某个字段进行排序。对查询出的文档进行条数的限制(适用于分页)以及比较运算符(>,>=,<,<,<=,!=)的使用。下面我将实例代码贴出来,我已经将注释在代码中标注。同学们可以按照这个进行揣摩和理解。注:...原创 2018-12-07 17:18:28 · 8580 阅读 · 0 评论 -
MongoDB详解--使用Java对MongoDB进行增删改查
上一节我们学习了Java连接MongoDB集群的连接池工具类书写,接下来我们来看看如何进行数据库的常用操作,增删改查。由于MongoDB是面向文档存储的一种非关系型数据库,所以在使用的时候我们大多数时候都是在操作文档。新增的是一个条件拼接的文档,删改查的条件其实也是拼接成一个文档。在MongoDB中采用的是一种BSON格式的文档。这种格式类似于C语言的结构体,它十分的高效,性能良好。这也是Mo...原创 2018-12-04 17:53:57 · 495 阅读 · 0 评论 -
MongoDB详解--Java连接mongo集群(工具类)
前两节我们介绍了MongoDB的一些特性以及基本操作。接下来我们来学习一些如何使用jdbc连接MongoDB集群。为什么不先讲连接单个MongoDB而是直接连接集群呢。其实是因为MongoDB通常存储的数据量较大。所以一般都是以集群的形式搭建的。所以我们在这里直接就演示如何连接MongoDB集群。这里我直接提供一个创建Mongo连接池的工具类。当你需要操作MongoDB进行增删改查时直接调...原创 2018-12-04 17:12:02 · 1996 阅读 · 5 评论 -
Java--浅拷贝和深拷贝的快速理解及实现方式介绍
我们在平时的开发中难免会遇到对象的复制问题。对于一些定义简单的对象(所有属性都为基本类型),如果直接赋值操作,相当于两个对象共用一个地址。修改其中那个对象的属性值,另一个的属性值也会一起变化。如果我们想让它们两个各自分配空间,就需要用到对象的拷贝。对于对象中只有基本类型属性的对象我们可以使用浅拷贝。浅拷贝实现方式:首先让定义的实体类实现Cloneable接口。然后重写clone方法,将cl...原创 2018-10-29 16:59:38 · 498 阅读 · 0 评论 -
编写高质量代码改善Java程序的151个建议--简明整理
第一章 Java开发中通用的方法和准则建议1:不要在常量和变量中出现易混淆的字母;(i、l、1;o、0等)。建议2:莫让常量蜕变成变量;(代码运行工程中不要改变常量值)。建议3:三元操作符的类型务必一致;(不一致会导致自动类型转换,类型提升int->float->double等)。建议4:避免带有变长参数的方法重载;(变长参数的方法重载之后可能会...转载 2018-10-23 17:48:10 · 634 阅读 · 0 评论 -
JavaEE--SSH--hibernate框架执行流程
hibernate框架的执行流程详解:1.创建Configuration对象2.Configuration对象自动解析hibernate.cfg.xml文件,3.创建SessionFactory对象,根据主配置hibernate.cfg.xml文件中的配置构建SessionFactory(数据库配置,映射文件xxx.hbm.xml)4.使用SessionFactory创建一个Session5.根据...原创 2018-03-05 11:27:27 · 1113 阅读 · 0 评论 -
Java中间件开发01--Java中间件介绍及部署的准备工作
作为一个Java中间件工程师,工作与传统的JavaWeb开发不同。我们几乎不使用当前主流的框架(如SSH,SSM,SpringBoot,SpringCloud...),所有代码都使用JavaSE进行编写,最大程度提高执行效率和可靠性,也使代码变得十分轻量化和简洁。通常中间件都是使用线程的方式来执行。把每一个功能放到一个线程中来定时或循环执行。在多个线程中还涉及到一些多线程的安全性,数据的共享等...原创 2019-01-04 18:20:59 · 6018 阅读 · 9 评论 -
Java中间件开发02--Java中间件关于多线程的使用和创建方式
在开发Java中间件时,我们往往使用一个线程来完成一个功能,每个线程都需要重复执行,有些需要不停的执行,比如监测数据库的数据是否有变化,有的则可能在指定的时间段每天定时执行,如一些需要在半夜客户少时执行的一些操作。那么我们如何创建多个线程呢,通常有两种方式:一是直接在main函数中创建。然后利用方法来进行线程的保活操作。二是利用线程池Executors,它是初始化一定量的线程,然后你需...原创 2019-02-01 11:13:14 · 859 阅读 · 0 评论 -
Java中间件开发04--Java中间件实现Http消息通信(HttpClient发送+Jetty接收)
Java中间件在进行网络通信时,经常会使用Http协议来发送和接受请求。而我们最常用的就是HttpClient+Jetty服务器配套使用。Jetty的好处想必已经知道,轻量级,高并发,性能优良,关键是它可以嵌入代码中。非常的方便,适合Java中间件的使用场景。而HttpClient也同样优秀。不管是发送Get还是Post请求,以及对请求的参数的解析和响应。都十分简便高效。下面我就将 H...原创 2019-02-22 14:43:28 · 1201 阅读 · 0 评论 -
Java中间件开发03--Java中间件如何执行linux命令及Linux脚本
在中间件的开发过程中,我们和linux随时需要打交道。而中间件也需要部署在Linux主机上。我们有时也需要用Java来控制Linux主机来执行一些脚本或命令,比如监测程序在执行时的运行情况(cpu占用率,内存占用率,磁盘使用情况...)那么如何来进行操作呢,下面我将通过一个demo来为大家演示一下:执行linux命令的工具类:public class ShellUtils { /...原创 2019-02-14 15:48:57 · 477 阅读 · 0 评论 -
MongoDB详解--使用Java对MongoDB中存在的数据进行更新不存在的数据进行插入的操作
今天有个需求,就是把收到的数据实时进行更新到mongodb(之前一直都是插入操作),而Mongodb中也存在如同MySQL里面unique关键字+ON DUPLICATE KEY UPDATE来判断某个数据是否存在,如果存在则更新不存在则插入的操作。那么如何使用Java进行这种更新操作呢。下面直接上代码。连接mongo集群工具类:public class MongoUtils { p...原创 2019-03-07 15:39:47 · 5558 阅读 · 0 评论 -
Java--基于NIO的网络应用框架Netty的介绍和Demo
在传统的IO模型中,每个连接创建成功之后都需要一个线程来维护,而当建立大量连接的时候,同一时刻有大量的线程处于阻塞状态是非常严重的资源浪费。而大量线程之间的切换也会使性能急剧下降。同时在IO编程中,数据的读写是以字节流为单位,效率不高。由于有这么多缺点和问题,所以在jdk1.4之后诞生了NIO(No-Bolcking IO)。NIO做了哪些改进呢,它在建立大量连接的时候不用再创建许多线程,而是...原创 2019-03-19 14:15:33 · 997 阅读 · 0 评论 -
Java--通过JDBC元数据获取表结构(ResultSetMetaData元数据的使用)
最近在线上联调,由于我们没有数据库的可视化工具,和其他公司比对数据和表结构总是十分麻烦。后来我看到组长通过元数据来获取表结构和值。之后我自学了一下,感觉十分方便,分享给大家。jdbc的元数据有两类。一个是DatabaseMetaData,一个是ResultSetMetaData。DatabaseMetaData是描述数据库的元数据对象。ResultSetMetaData是描述结果集的元...原创 2019-04-28 11:30:37 · 7911 阅读 · 1 评论 -
注解代码生成器-lombok的使用
一、概述在编程上,Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。简而言之,一句话就是:通过简单的注解来精简代码达到消除冗长代码的目的。那么它的适用场景是什么呢,当我们一个JavaBean中存在很多属性时,需求的表结构突然变了,有几个属性的类型改了,这时我们就需要重写get,set...原创 2019-07-24 20:09:02 · 546 阅读 · 0 评论