实用工具
文章平均质量分 81
主要是自己在平时使用电脑的过程中,使用的一些好用的软件的分享。
njitzyd
这个作者很懒,什么都没留下…
展开
-
GuavaCache学习三种过期策略的学习
基本介绍回收策略Guava Cache提供了三种清理或者刷新策略expireAfter原创 2022-11-06 21:06:57 · 4162 阅读 · 0 评论 -
Lombok注解的使用
1.简介lombok是一个编译级别的插件,它可以在项目编译的时候生成一些代码。通俗的说,lombok可以通过注解来标示生成getter settter等代码,简便我们的开发。2.使用2.1引入依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <v原创 2021-12-26 00:39:43 · 1638 阅读 · 1 评论 -
不可变集合ImmutableMap
概述ImmutableMap 的作用就是:可以让java代码也能够创建一个对象常量映射,来保存一些常量映射的键值对。不可变集合,顾名思义就是说集合是不可被修改的。集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变。为什么要用immutable对象?immutable对象有以下的优点: 1.对不可靠的客户代码库来说,它使用安全,可以在未受信任的类库中安全的使用这些对象 2.线程安全的:immutable对象在多线程下安全,没有竞态条件 3.不需要支持可变性, 可以尽量节省空间和时间的开销.原创 2021-12-13 22:00:52 · 505 阅读 · 0 评论 -
java对象间的关系映射工具-mapstruct的使用
<h2 id="1前言">1.前言</h2><p>在现在一个多模块的系统中,随着系统的不断迭代,导致各个系统之间的model 不断地增多。如DTO VO BO 等多个对象之间的属性拷贝就是一个不小的原创 2021-07-06 23:29:00 · 561 阅读 · 0 评论 -
Java中的condition类
Java中的condition类Condition是在java 1.5中才出现的,它用来替代传统的Object的wait()、notify()实现线程间的协作,相比使用Object的wait()、notify(),使用Condition的await()、signal()这种方式实现线程间协作更加安全和高效。因此通常来说,线程通信的实现比较推荐使用ConditionCondition是个接口,基本的方法就是await()和signal()方法;Condition依赖于Lock接口,生成一个Cond原创 2021-01-24 17:06:23 · 1242 阅读 · 0 评论 -
SpringBoot中的异步任务、邮件以及定时任务
异步任务背景在我们的业务处理中,比如处理完成需要3s才能完成,但是我们需要如果要让用户等3s,则体验非常差,所以我们采用异步的方式去处理,可以通过线程池来处理 ,但是还要写线程,而springboot中已经默认提供了这种能力 ,我们只要开启即可使用。具体使用创建项目我们只要创建一个基本的springboot项目,然后只要添加web的依赖即可。<dependency> <groupId>org.springframework.boot</groupId&g原创 2021-01-17 18:33:13 · 214 阅读 · 0 评论 -
Swagger 的介绍以及使用
Swagger 的介绍以及使用本文代码已经同步到码云 ,欢迎大家 star https://gitee.com/njitzyd/JavaDemoCollectionSwagger 简介Swagger 是一个主要用来在线生成文档的插件,这里主要用来动态生成api接口供前后端进行交互,如果不生成的话就需要写静态文档来交互,那样不仅很慢而且不容易修改,那Swagger就可以解决这个问题。号称世界上最流行的API框架Restful Api 文档在线自动生成器 => API 文档 与API 定义原创 2021-01-16 17:02:40 · 216 阅读 · 0 评论 -
Java基础之注解和反射
Java基础之注解和反射注解和反射是很过开源框架底层的实现逻辑底层都是通过注解和反射。1.注解1.1注解入门注解(Annotation)很重要,现在的开发模式都是基于注解的,JPA是基于注解的,从Spring基于注解的,从Hibernate也是基于注解的,注解是JDK1.5之后才有的新特性.注解(Annotation)相当于一种标记,在程序中加入注解就等于为程序打上某种标记,没有加,则等于没有任何标记,以后,javac编译器、开发工具和其他程序可以通过反射来了解你的类及各种元素上有无何种标记,原创 2021-01-11 23:58:28 · 174 阅读 · 0 评论 -
Jmeter入门教程
Jmeter入门教程1.简介Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/[回归测试],通过创建带有断言的脚本来验证你的原创 2021-01-11 23:49:33 · 134 阅读 · 0 评论 -
Apache HttpClient 使用教程 以及 Spring 的 RestTemplate
Apache HttpClient 使用教程 以及 Spring 的 RestTemplate本文源代码已经收录在我的码云上面的HttpClientDemo 的模块,大家可以参考 ,地址https://gitee.com/njitzyd/JavaDemoCollectionHttpClient简介HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本。我们可以通过HttpCli原创 2021-01-11 23:47:01 · 356 阅读 · 0 评论 -
Spring中定时任务@Schedule注解的使用
1.概述@Scheduled注解是spring boot提供的用于定时任务控制的注解,主要用于控制任务在某个指定时间执行,或者每隔一段时间执行.注意需要配合@EnableScheduling使用,配置@Scheduled主要有三种配置执行时间的方式,cron,fixedRate,fixedDelay。它的配置一共有8个参数。(在被spring初始化之后,这个定时任务就开始执行了,下面几种cron、fixedDelay、fixedRate等注解都是这样。)2.参数讲解2.1 cron表达式该参数接收原创 2021-01-11 21:11:53 · 4867 阅读 · 0 评论 -
BIO、NIO和AIO的区别以及Netty 简介
BIO、NIO和AIO的区别以及Netty 简介要分清这三个,首先要分清这两组概念。同步(Synchronization)和异步(Asynchronous)的方式同步和异步都是基于应用程序所在操作系统处理IO事件所采用的方式,比如同步:是应用程序要直接参与IO读写的操作。异步:所有的IO读写交给搡作系统去处理,应用程序只需要等待通知。举个通俗的例子:你打电话问书店老板有没有《分布式系统》这本书,如果是同步通信机制,书店老板会说,你稍等,”我查一下",然后开始查啊查,等查好了(可能是原创 2021-01-07 23:14:41 · 86 阅读 · 0 评论 -
SpringBoot自动装配原理
引言springboot给我们的开发带来了极大的便利,并通过启动器的方式方便我们添加依赖而不用过多的关注配置,那么springboot是如何进行工作的?一起探究下。一般我们都会在pom.xml中继承spring-boot-parent<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifact原创 2021-01-04 21:18:53 · 162 阅读 · 0 评论 -
Typora安装 Pandoc实现导出功能
Typora安装 Pandoc实现导出功能问题引入在使用Typora的时候,如果想要把写好的MarkDown文件导出到其他地方的话,是比较方便的。但是Typora本身只支持PDF和HTML两种方式的导出,如下图所示,如果想导出下面的方式他就会提示安装Pandoc插件,name看下如何安装这个插件。安装插件Typora的安装就不多少了,直接官方下载安装包,一直下一步安装就好,Typora官网下载Pandoc进入Pandoc官网,下载自己对应的版本,这里我使用Windows的解压版。配置环境变原创 2021-01-03 22:17:18 · 825 阅读 · 1 评论 -
IDEA安装使用protobuf
Protobuf简介Rrotobuf 是Google 发布的开源项目,全称 Google Protocol Buffers, 是一种轻便高效的结构化数据存储格式,可以用与数据的序列化。它与开发语言无关,和平台无关,具有良好的可扩展性。Protobuf和所有的序列化框架一样,都可以用于数据存储、通讯协议。Portobuf的序列化的结果体积要比XML、JSON小很多,XML和JSON的描述信息太多了,导致消息要大;此外Portobuf还使用了Varint 编码,减少数据对空间的占用。Portobuf序原创 2021-01-03 22:15:05 · 2165 阅读 · 1 评论 -
IDEA 中使用 spring-boot-devtools 实现热部署
IDEA 中使用 spring-boot-devtools 实现热部署热部署可以让我们在更新代码时能实时的去测试是否正确,而不是每次都要重启项目,缩短重启的浪费的时间。配置IDEA首先要让IDEA 能够自动编译,自动加载。打开settings ,找到如下位置,勾选 Build project automatically然后 快捷键Ctrl+Alt+Shift+/ 选择 registry然后找到这项,勾选。新建项目测试这里新建一个springboot的项目,前面的自定义,在选择依赖的原创 2021-01-03 22:12:37 · 103 阅读 · 0 评论 -
IDEA 中 Debug 技巧
IDEA 中 Debug 技巧参考码匠笔记IDEA 中debug 主要是这8个按钮,从左往右依次是:Show Execution Point (Alt + F10):如果你的光标在其它行或其它页面,点击这个按钮可跳转到当前代码执行的行。Step Over (F6):步过,一行一行地往下走,如果这一行上有方法不会进入方法。Step Into (F5):步入,如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库的方法,如第25行的put方法。Force Step Int原创 2021-01-03 22:11:55 · 391 阅读 · 0 评论 -
Git 教程之 设置 .gitignore, IDEA 安装插件以及设置全局文件
Git 教程之 设置 .gitignore, IDEA 安装插件以及设置全局文件在使用GitHub 或者 GitLab 等分布式代码管理平台时,我们在进行代码提交的时候,往往不需要把所有的东西,比如一些无用的文件或者隐私的文件不需要进行上传,那个Git 提供 .gitignore 文件用来忽略不想要上传的问题。IDEA 安装 git文件忽略插件 .gitignoreidea 在使用git进行提交的时候只需要提交源码之类的,并不需要把.idea/以及target等目录下的文件进行提交,通过安装插件原创 2021-01-03 21:32:17 · 562 阅读 · 1 评论 -
API和SPI的简单介绍
引语平时API倒是听得很多?SPI又是啥.别急我们来先看看面向接口编程的调用关系,来了解一下,API和SPI的相似和不同之处。SPI理解先来一段官话的介绍:SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制.我们结合图片来理解一下。 简单的来说分为调用方,接口,服务方.接口就是协议,契约,可以调用方定义,也可以由服务方定义,也就是接口是可以位于调用方的包或者服务方的包. 1.接口的定义和实现都在服务方的时候,仅暴露出接口给调用方使用的原创 2020-12-30 21:32:12 · 628 阅读 · 0 评论 -
Maven依赖中的Scope详解
scope元素的作用:控制 dependency 元素的使用范围。通俗的讲,就是控制 Jar 包在哪些范围被加载和使用。scope具体含义如下:compile(默认)含义:compile 是默认值,如果没有指定 scope 值,该元素的默认值为 compile。被依赖项目需要参与到当前项目的编译,测试,打包,运行等阶段。打包的时候通常会包含被依赖项目。provided含义:被依赖项目理论上可以参与编译、测试、运行等阶段,相当于compile,但是再打包阶段做了exclude的动作。 适用场景:例原创 2020-12-22 21:13:11 · 226 阅读 · 0 评论 -
Java8中的流处理Stream API
1. 是什么Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。也可以使用 Stream API 来并行执行操作。简而言之,Stream API 提供了一种高效且易于使用的处理数据的方式。注意:Stream 自己不会存储元素。Stream 不会改变源对象。相反,他们会返回一个持有结果的新Stream。Stream 操原创 2020-12-20 14:46:29 · 176 阅读 · 0 评论 -
Redisson的使用
<h2 id="redisson的使用">Redisson的使用</h2><h3 id="简介">简介</h3><p>在现在的项目中,经常会有并发问题,解决并发问题的一个思路就是使用分布式锁。在以原创 2020-12-19 22:41:16 · 1813 阅读 · 1 评论 -
本地缓存Guava Cache教程
<h2 id="1背景">1.背景</h2><p>缓存的主要作用是暂时在内存中保存业务系统的数据处理结果,并且等待下次访问使用。在日长开发有很多场合,有一些数据量不是很大,不会经常改动,并且访问非常原创 2020-12-19 22:36:11 · 198 阅读 · 2 评论 -
Redis最全教程
<p>Redis最全教程</p><h2 id="1-redis安装">1. Redis安装</h2><h3 id="11-从官网下载安装包。">1.1 <a href="https://redis原创 2020-12-19 23:00:00 · 2092 阅读 · 1 评论 -
IDEA设置debug
参考转载 2020-12-01 21:37:33 · 187 阅读 · 0 评论 -
TimeUnit.SECONDS.sleep()和sleep区别
刚看到TimeUnit.SECONDS.sleep()方法时觉得挺奇怪的,这里怎么也提供sleep方法?跟进源码可以看到:public void sleep(long timeout) throws InterruptedException { if (timeout > 0) { long ms = toMillis(timeout); int ns = excessNanos(timeout, ms); Thread.sleep(ms,原创 2020-11-13 21:47:57 · 495 阅读 · 0 评论 -
阿里云短信服务实战
短信验证码功能是一个很常用的功能,而且操作也不难,下面实操看看如何进行短信服务实战。个人只能在阿里云使用一个短信验证的功能,但足够了登录阿里云后,点击头像下的AccessKey 管理点击后会出现提示信息这里会有一个所有权限的账户,为了安全我们点击使用子账户创建子账户选择子账户之后,会来到创建用户的界面可以根据提示快速创建用户,在选择权限的地方我们选择只有短信服务。然后下载AccessKey创建用户组就像Linux中的用户组一样,我们可以创建用户组,然后把刚刚创建的用户添加到这原创 2020-11-03 23:48:04 · 572 阅读 · 0 评论 -
Java中joda日期格式化工具的使用
Java中joda日期格式化工具的使用1.基本介绍Java自带日期格式化工具DateFormat ,但是DateFormat 的所有实现,包括 SimpleDateFormat 都不是线程安全的,因此你不应该在多线程序中使用,除非是在对外线程安全的环境中使用,如 将 SimpleDateFormat 限制在 ThreadLocal 中。如果你不这么做,在解析或者格式化日期的时候,可能会获取到一个不正确的结果。因此,从日期、时间处理的所有实践来说,我强力推荐使用joda-time 库。2.joda-ti原创 2020-11-01 17:12:30 · 1318 阅读 · 0 评论 -
POI 和 easyExcel 的简介
Java操作Excel的POI和easyExcel的学习与使用本文的代码已经同步到码云,码云地址在excel-demo模块里1.POI 和 easyExcel 的简介1.1Apache POI 简介Apache POI 官网:https://poi.apache.org/主要功能:1.2easyExcel 简介easyExcel 官网地址:https://github.com/alibaba/easyexcel官方文档地址:https://www.yuque.com/easy原创 2020-10-04 17:23:01 · 1569 阅读 · 1 评论 -
使用BeanUtils.copyProperties进行对象之间的属性拷贝
问题引入需要将不同的两个对象实例进行属性复制,从而基于源对象的属性信息进行后续操作,而不改变源对象的属性信息,比如DTO数据传输对象和数据对象DO,我们需要将DO对象进行属性复制到DTO,但是对象格式又不一样,所以我们需要编写映射代码将对象中的属性值从一种类型转换成另一种类型。这种转换最原始的方式就是手动编写大量的 get/set代码,当然这是我们开发过程不愿意去做的,因为它确实显得很繁琐。为了解决这一痛点,就诞生了一些方便的类库,常用的有 apache的 BeanUtils,spring的 BeanU原创 2020-08-05 20:21:05 · 3524 阅读 · 0 评论 -
VMWare 安装配置Centos 7.6 详细教程
有时候我们需要安装一些服务器类的软件而自己又没有云服务器,在windows 安装又不方便,所以需要安装一个虚拟机,然后再虚拟机中安装Linux 操作系统,来充当我们的服务器,下面介绍如何安装。1. 安装虚拟机文件—》 新建虚拟机然后选择典型模式,下一步选择稍后安装操作系统,下一步选择Linux,下一步给自己的虚拟机起一个名称,放置的位置自己选择,然后下一步设置磁盘大小以及存储方式,然后下一步点击自定义硬件可以把打印机移除。内存处理器默认就好;CD/DVD 选择我们本地下载的C原创 2020-08-04 22:34:26 · 251 阅读 · 0 评论 -
vmware 虚拟机三种网络模式—“桥接、NAT 、仅主机”区别
这个大神写的很好,简单来说就是桥接模式可以和局域网的其他主机通信以及联网,nat模式可以和主机通信以及可以联网,仅主机模式则只能和主机进行通信。三种模式的区别原创 2020-08-02 15:41:52 · 193 阅读 · 0 评论 -
Apache HttpClient 使用教程 以及 Spring 的 RestTemplate
Apache HttpClient 使用教程 以及 Spring 的 RestTemplate本文源代码已经收录在我的码云上面,大家可以参考 ,地址https://gitee.com/njitzyd/JavaDemoCollectionHttpClient简介HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本。我们可以通过HttpClient发送各种HTTP方法。主要特原创 2020-08-02 11:54:45 · 225 阅读 · 0 评论 -
实用工具 一键发布本地文章到各个平台
程序员都会使用Typora 来写文档,但是如何把本地写的文档同步发布到各个平台呢?最主要的问题就是如何进行图片的上传?之前用过使用 GitHub 作为图床或者 Gitee 作为图床,然后在Typora 中配置图床并结合PicGo这个软件每次插入图片就会上传到图床,这种方法是可行的,但也是比较麻烦。包括使用七牛云等图床都挺麻烦的。这个工具的好处就在于可以直接上传到各个平台,他会自动帮你完成上传图片的任务。官方地址:博客助手上面有详细的教程,超实用!!!...原创 2020-08-01 22:03:48 · 787 阅读 · 0 评论 -
IDEA 设置注释模板
在进行开发的时候,尤其是在公司进行代码开发的时候,在你的代码上一般都要加上注释,常见的就是你的名称、创建日期、类的描述等,name如何去定义自己的注释模板呢?设置类的模板IDEA 中可以进行自己模板的定义。按照File–> Settings --> Editer–>>File and Code Templates–>Files中打开设置页面:这里我们主要关注 Class、Interface、Enum 者几个模板的设置,因为我们平时主要用到着三个。选中Class 可以.原创 2020-08-01 20:24:12 · 703 阅读 · 0 评论 -
Spring Boot 五种热部署方式
1、模板热部署在 Spring Boot 中,模板引擎的页面默认是开启缓存的,如果修改了页面的内容,则刷新页面是得不到修改后的页面的,因此我们可以在application.properties中关闭模版引擎的缓存,如下:Thymeleaf的配置:spring.thymeleaf.cache=falseFreeMarker的配置:spring.freemarker.cache=falseGroovy的配置:spring.groovy.template.cache=false原创 2020-05-27 11:40:20 · 326 阅读 · 0 评论 -
Navicat 完美安装教程
详细教程放在文件中,解压后有的word文档,里面有详细的说明流程。原创 2020-06-13 16:04:28 · 154 阅读 · 0 评论 -
一台电脑安装两个不同版本的MySQL
1. 之前的电脑安装过MySQL5.5,和后面的使用过程中有些数据类型不一致,而且有些数据库已经在里面了,所以打算再安装一个版本的数据库,这里我再安装MySQL8.0的版本。2. 安装步骤2.1 下载mysql82.2 解压下载后,把压缩包解压,再8.0版本中,解压后没有my.ini文件。所以我们新建一个my.ini文件,然后写入如下内容。[mysqld]# 设置3307端口port=3307# 设置mysql的安装目录basedir=F:\Program\mysql-8.0.15-win原创 2020-06-11 22:15:57 · 3211 阅读 · 0 评论 -
Win10 超好用的截图工具 Snipaste
工具的下载地址snipaste官网介绍:snipaste的名字就是“截图+贴图”,是一个简单但强大的截图工具。功能:屏幕截图、贴图、编辑、标注费用:个人免费,企业版需内购官方文档:官方文档官方文档的介绍是中文的,很容易读懂。主要就是F1截图。CTRL+C复制到粘贴板,然后就ctrl+v进行粘贴就好。F3可以进行固定在屏幕。...原创 2020-06-07 14:19:34 · 1015 阅读 · 0 评论