
工具
文章平均质量分 66
常用工具
可乐多点冰
已经在BAT修行
展开
-
正确写出doublecheck的单例模式
单例模式属于很常见的一种模式,只要是想整个java中该类只需要一个对象即可。默认Spring就是使用的单例模式。写单例模式的方式很多,现在介绍一个doublecheck的方式。public class SingletonController { //默认是第一次创建 private static volatile boolean isCreate = false; //本类内部创建对象实例 private static volatile SingletonContro原创 2021-01-20 16:12:09 · 1378 阅读 · 0 评论 -
简单应用Redis锁解决实际需求
有一个需求是生成订单编号,按序递增,那我们可以使用redis的incr自增方法使订单编号顺序递增。让redis中存入了一个流水号key,incr之后其值就保持最新流水号。但是若很不幸的是,旧redis下线了,新的redis里又不存在原来的流水号key,那就需要代码层面自动添加进去,这个时候就需要编写redis锁去数据库中查找最大的流水号值,并赋值到redis。代码如下 //获取最大的保单流水号 String serialNoKey = redisUtil.get(trav原创 2021-01-18 11:10:19 · 173 阅读 · 0 评论 -
简单介绍查看jvm内存信息工具jvisualvm的使用
运行程序的时候,希望看到jvm堆内存的信息,有2种方法,一种是使用静态的,找到程序的进程id即pid,然后使用jmap -heap pid 就可以看到了。第二种使用动态的,使用工具jconsole或者jvisualvm。这里介绍一下工具jvisualvm,它更加强大。首先输入命令D:\idea\code\firstdemo\target\classes\com\jd\qsm\first\demo\controller>jvisualvmD:\idea\code\firstdemo\targ原创 2021-01-09 21:40:42 · 1629 阅读 · 0 评论 -
spring入参为指定值,校验java入参的值为规定的值,利用Validator指定值校验注解——一看就会
我们在使用spring项目的时候,经常使用@Valid来对入参进行校验,比如必须为空,必须不为空,长度多少,是否符合邮件格式等等,同时也可以正则。如下图所示, @Null(message = "id不能传入",groups = {MyValidDTOIdNull.class}) @NotNull(message = "id必须传入",groups = {MyValidDTOIdNotNull.class}) private String id; @Len原创 2020-12-08 11:58:21 · 12975 阅读 · 8 评论 -
Nginx访问日志详解——各个部分含义——非常简单
Nginx 访问日志最近有分析nginx日志,现在记录一下默认的访问日志格式并分析一下作用。1、查询nginx配置信息root@proxy-nginx2-7b45c87d76-5ldt2:/# whereis nginxnginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginxroot@proxy-nginx2-7b45c87d76-5ldt2:/# cd /etc/nginxroot@proxy-nginx2-7b45c8原创 2020-11-12 11:26:56 · 2823 阅读 · 0 评论 -
MySQL练习题——课后一练
学习目标:很久没有练习写sql了,现在根据题库练习几题,并以后随时看看,知道sql的一些常用语法,特殊技巧学习内容: 以上面的表为例,练习sql题目和答案如下:CREATE TABLE class (cid INT not null,caption VARCHAR(11) NOT null);CREATE TABLE student( sid INT NOT NULL, sname VARCHAR(11) NOT null, gender char(1) DEFAULT '男原创 2020-10-21 21:39:14 · 491 阅读 · 0 评论 -
SpringBoot源码——请求全过程源码分析——一步一步详细分析
文章目录前言一、SpringBoot源码二、源码分析1.引入库2.读入数据总结前言作为java开发,经常使用SpringBoot框架,那么掌握SpringBoot的请求的全流程还是十分必要的。没有研究源码之前,有一些疑问:为什么要返回json串的时候需要在方法上加@ResponseBody,或者在类上加@RestController为什么返回String类型,不加@ResponseBody,就是要去找视图解析器返回modelAndVIew类型并加@ResponseBody,那返回的json串原创 2020-10-15 23:35:45 · 3835 阅读 · 1 评论 -
Apollo使用教程——简单的记录使用的过程——一看就会
文章目录场景一、Apollo简介二、使用步骤1.引入依赖2.application.yml3.pom.xml4.加密总结场景这里简单的记录一下自己在springboot项目集成携程Apollo配置中心的过程。本文不是完整的教程,不具有参考性,只是自己简单记录。一、Apollo简介Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。github项目地址二、使用步骤1.引入依赖原创 2020-09-15 20:41:04 · 7386 阅读 · 0 评论 -
Apollo配置语法——Apollo配置List和Map以及组合应用——非常详细
文章目录1、正常的list和map形式2、mapAndMap形式、mapAndList形式3、属性前缀注入4、全部代码场景:最近使用老东家携程的开源软件Apollo配置中心的时候,需要一个map中的value也是map,但是网上找了半天并没有相关的文章。经过摸索,现记录如下:1、正常的list和map形式Apollo配置中心apollo.map = {key1:"value1",key2:"value2",key3:"value3"}apollo.list = "key1,key2,key3"原创 2020-09-15 15:56:25 · 19165 阅读 · 9 评论 -
SpringBoot热部署DevTools的简单实用——一看就会
场景:在idea开发的时候,经常要重启项目以便测试。若是每次都是重启的话,比较耗时,SpringBoot可以使用DevTools工具来实现热部署,只需要加载修改的文件部署到系统中,这样就较快的速度达到了重启的效果。第一步,引入maven坐标 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dev原创 2020-09-11 14:29:16 · 579 阅读 · 0 评论 -
SpringMVC源码——doDispatch方法源码分析——一看就会
SpringMVC的DispatcherServlet是负责将请求分发,所有的请求都有经过它来统一分发。其中有一个核心的方法就是doDispatch,了解这个方法的逻辑,对了解mvc的调用流程很有帮助。下面简单的分析一下改方法。1、源码下面给出了源码,其实抓住主干部分,下面注释中的7个重要部分,就知道大概的脉络了。protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exce原创 2020-09-10 12:02:19 · 1177 阅读 · 0 评论 -
java优雅的打印日志——对controller层方法的进入和结束地方打印日志——直接使用
场景:看日志是后端常用的操作,但是日志过于多的时候,很难分清日志打印的是不是同一个调用里面的。所以在controller的方法的开始和结尾的地方,打印日志,并且打印入参和出参,这样就能够很好的分析日志的逻辑了。由于每一个controller层的方法都需要打印进入和返回的日志,所以使用AOP的思想可以很好的解决,我们这边使用静态代理AspectJ。 <dependency> <groupId>org.aspectj</groupId>原创 2020-09-07 19:30:09 · 7130 阅读 · 1 评论 -
idea驼峰插件——非常好用简单的驼峰插件:EasyCamelQSM
推荐一款非常简单且轻量的idea插件:EasyCamelQSM。可直接在idea的插件库中搜索并下载。它支持5种模式的切换,对于方法和属性的命名,类的命名,数据表的命名,常量的命名以及空格结构非常有效。默认的快捷键是ctrl + alt + q。支持结构举例格式举例方法和属性名的驼峰结构camelCase类的命名的结构PascalCase数据表的命名结构snake_case常量命名的结构SNAKE_CASE空格的命名结构space case下原创 2020-08-13 09:49:27 · 4051 阅读 · 0 评论 -
本地项目上传git远程仓库——一看就会
需求:以前经常从公司的远程仓库复制已有的项目地址,然后clone到本地仓库。现在展示如何将本地创建好的项目上传到远程仓库。首先在磁盘上创建2个空文件夹,一个作为项目组,一个是实际项目目录。若没有项目组的需求,只需要建立一个实际项目目录,目录与实际项目名一致。 远程仓库中也建立一个项目组和实际项目 3. 使用idea新建项目,创建本地的springboot项目,使用spring initializr快速创建。其中dependency选择时,选择web下的Spring Web。项目地址放入.原创 2020-07-20 11:55:16 · 260 阅读 · 0 评论 -
一步安装k8s集群——5分钟在CentOS安装k8s集群——非常简单一看就会
文章目录k8s安装1、环境配置2、安装master3、安装node节点4、后记学习k8s,必须得安装一台集群,去敲命令才能更加明白知识点,比如集群的网络,pvc等由于百度出来的前几页的安装教程,有点难懂,图片丢失或者没有文件可以下载。因此整理出这篇超级简单安装集群的方式。本文采用看kubeadm安装k8s安装安装包下载地址:qsm-k8s-安装包规划:192.168.180.130 master192.168.180.131 node1192.168.180.129原创 2020-07-17 20:49:50 · 651 阅读 · 0 评论 -
docker安装es和kibana——非常简单
docker安装k8s和kibana非常的简单,只需要简单的几行命令就可以了。1、下载镜像可以使用命令docker pull 即可。由于镜像有点大,所以需要点时间。[root@localhost es]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEdocker.io/kibana 6.5.4原创 2020-07-15 22:26:28 · 6105 阅读 · 1 评论 -
Stream类的集合操作——一看就会
文章目录1、map 映射2、foreach遍历3、filter过滤4、sorted排序5、Match匹配6、Reduce规约对集合list/set进行操作是非常常见的事情。我们可以使用Optional类来处理空指针问题(Optional操作可以参考Optional类判空操作)。之后对元素进行遍历,改变,排序等操作可以使用Stream类了。Stream不是集合,也不保存数据,是用来操作集合里元素的,像一个高级版本的迭代器。Stream的方法分为中间方法和终结方法,中间方法依然会返回Stream,终结方法就原创 2020-07-07 19:58:39 · 1156 阅读 · 0 评论 -
Optional类判空操作——一看就会
文章目录1、Optional类的基本使用2、实际使用3、map和flatMap区别4、思考在开发过程中,经常会遇到判空的情形,若是不处理很有可能出现异常。但是进行的判空代码又冗余,且有时候出现级联判空的时候代码不太优雅。而jdk8中的Optional类正在处理空指针异常的新增类。Optional类可以理解为一个容器,它可以存null,也可以存非null对象。1、Optional类的基本使用//创建2个学生对象,一个为非null,一个为nullStudent student1 = new Stude原创 2020-07-07 14:09:00 · 5165 阅读 · 0 评论 -
mybatis-generator生成的实体带数据表的字段注释,一看就会
文章目录需求1、原始样式2、引入jar包3、自定义实现CommentGenerator接口4、配置generatorConfig.xml需求上一节我们分析了如何使用mybatis-generator来生成一些文件,但是对于生成的文件自带了一些系统注释,显得杂乱无章。现在有更简洁的方法生成清爽的代码。1、原始样式按照上一节的方法,可以生成如下实体类,但是注释信息过于杂乱。/** * * This class was generated by MyBatis Generator. * This原创 2020-05-28 21:24:02 · 9047 阅读 · 4 评论 -
接口文档神器Swagger教程,一看就会
文章目录需求:1、引入jar包2、swagger的配置文档3、基本注解4、java代码演示5、swagger在线地址需求:在开发过程中,经常需要前后端一起工作,那工作核心就是交互的接口文档。但是在动态的开发过程中,请求、返回报文、接口等也是动态增减的,所以使用Swagger可以直接时时的查看到最新的接口文档,还能简单的调用接口。1、引入jar包<dependency> <groupId>io.springfox</groupId> <arti原创 2020-05-26 20:50:11 · 1629 阅读 · 0 评论 -
mybatis-generator只有insert方法,你问题在这可以解决
文章目录需求1、正常版本2、只有insert方法的解决办法1、版本不匹配问题2、设置nullCatalogMeansCurrent=true3、设置catalog4、没有设置主键5、设置了不生成的参数3、com.mysql.jdbc.Driver. This is deprecated问题4、忽略某个字段或者重命名某个字段需求项目想使用mybatis-generator插件来生成一些基础类,包括entity,dao和mapper,但是在使用过程中需要了各种问题,现在记录下来:1、正常版本先直接给出可原创 2020-05-22 10:59:07 · 2239 阅读 · 1 评论 -
将本地项目打为jar包上传到私服Nexus:以idea自动部署和手动导入为例
文章目录1、在idea自动部署为例:2、以手动导入为例:需求:开发项目过程中需要将自己的工程打包为jar上传到远程仓库(以Nexus私服为例),现在展示如何操作。 以一个项目的公共组件项目为例,里面定义了很多的公共对象和公共工具类,其他项目都引用该项目作为开发的基础。1、在idea自动部署为例:配置maven的settings.xml文件,添加service标签的内容,这些内容是所有maven项目共享的,一般是账号和密码。<servers> <server&g原创 2020-05-20 15:19:25 · 3037 阅读 · 1 评论 -
SpringBoot项目使用JavaMailSender发送邮件--以qq邮箱为例
在SpringBoot项目中可以使用JavaMailSender发送邮件引入依赖的jar<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId></dependency>在yaml文件中的邮件相关的配置数据下面以qq邮箱作为发送方为例spri原创 2020-05-14 10:24:20 · 3777 阅读 · 0 评论 -
java中Double转为String时不以科学计数法显示
问题:当Double的长度超过一定长度的时候,会以科学计数法显示。对于前段显示不是很友好。因此需要将其转化为原样式显示。最佳方法Double num = 123000000.456;//按照四舍五入方式保留2位小数String str = new BigDecimal(Double.toString(num)).setScale(2, RoundingMode.HALF_UP).toString();//123000000.46分析过程public class DoubleTest原创 2020-05-11 17:00:31 · 6362 阅读 · 0 评论