
JAVA
文章平均质量分 53
Adonis_D_Gogh
湖畔路打字员
展开
-
SonarQube使用笔记
SonarQube使用笔记简介SonarQube是一个用于管理代码质量的开放平台,可以快速的定位代码中潜在的或者明显的错误。目前支持java,C#,C/C++,Python,PL/SQL,Cobol,JavaScrip,Groovy等二十几种编程语言的代码质量管理与检测。环境&版本Centos6.10jdk8mysql5.7sonarqube-7.7sonar-scanner-2.8特别注意:sonarqube 能支持jdk8和mysql的最高版本是sonarqube-7.7原创 2020-06-18 18:34:11 · 630 阅读 · 0 评论 -
Java8 Stream reduce操作
https://blog.youkuaiyun.com/u011213044/article/details/103997757Reduce,顾名思义为减少的意思,就是根据指定的计算模型将Stream中的值计算得到一个最终结果。在之前的一篇文章Java8函数式编程中简单介绍,Stream的count、min 和max方法底层都是依赖reduce实现的,本篇文章将简单介绍一下Java8 Stream reduce的几种基本用法。首先来看一下Reduce三种形式:S.N. 方法说明1 Opti...转载 2020-06-18 10:51:22 · 466 阅读 · 0 评论 -
JAVA8十大新特性详解
原文:https://www.jianshu.com/p/0bf8fe0f153b一、接口的默认方法Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法,示例如下:interface Formula { double calculate(int a); default double sqrt(int a) ...转载 2020-04-21 15:14:04 · 262 阅读 · 0 评论 -
Java8 Optional使用总结
java8 推出的Optional的目的就是为了杜绝空指针异常,帮助开发者开发出更优雅的代码,使用Optional不正确时,将会违背设计者的初衷。一、Optional的构造方式:1、Optional.of(T)该方式的入参不能为null,否则会有NPE,在确定入参不为空时使用该方式。2、Optional.ofNullable(T)该方式的入参可以为null,当入参不确定为非...转载 2020-04-03 17:09:09 · 342 阅读 · 0 评论 -
观察者模式以及tomcat实现的观察者模式
原文:https://my.oschina.net/u/2457218/blog/1536680观察者设计模式观察者模式也称作发布订阅模式,监听器模式,被观察管理各个观察者,当被观察者的状态有变更的时候,会主动通知观察者。 通常的情况下,我们会怎么实现如果一个对象的状态变更,通知到对相应状态感兴趣的类呢,这个可以分为主动通知和被动通知。 主动通知:...转载 2020-03-27 12:06:47 · 304 阅读 · 0 评论 -
java的io库用到的装饰模式是如何体现的?
概论java的io包下大概有85个类,真复杂。其实不然这些类又可以分为以下四个部分。输入流输出流字节流InputStreamOutputStream字符流 ReaderWriter 简单来说,这四部分的对应都是很整齐的,有Fil...转载 2020-03-25 11:56:36 · 353 阅读 · 0 评论 -
@Scheduled执行阻塞问题
原文:https://blog.youkuaiyun.com/lym0721/article/details/89499588一. 问题描述 最近项目中发现一个问题,计划每日凌晨4:40执行一个定时任务,使用注解方式: @Scheduled(cron = “0 40 4 * * ?”),cron表达式明显没有问题,但是这个定时任务总是不按时执行,有时候得等到8点多,有时候9点多才执行。后来查了下,原...转载 2020-01-06 14:58:15 · 2032 阅读 · 0 评论 -
Java日志框架SLF4J和log4j以及logback的联系和区别
1.SLF4J(Simple logging Facade for Java)意思为简单日志门面,它是把不同的日志系统的实现进行了具体的抽象化,只提供了统一的日志使用接口,使用时只需要按照其提供的接口方法进行调用即可,由于它只是一个接口,并不是一个具体的可以直接单独使用的日志框架,所以最终日志的格式、记录级别、输出方式等都要通过接口绑定的具体的日志系统来实现,这些具体的日志系统就有log...转载 2020-01-06 14:52:22 · 292 阅读 · 0 评论 -
Found multiple occurrences of org.json.JSONObject on the class path
今天在测试代码的时候报了以下错误,特此记录:Found multiple occurrences of org.json.JSONObject on the class path: jar:file:/D:/OpenSources/MyRepository/org/json/json/20170516/json-20170516.jar!/org/json/JSONObject.c...转载 2019-12-12 19:24:20 · 1519 阅读 · 0 评论 -
Java线程的6种状态及切换(透彻讲解)
Java中线程的状态分为6种。1.初始(NEW):新创建了一个线程对象,但还没有调用start()方法。2.运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取CPU的使用权,此时处于就绪状态...转载 2019-11-11 17:18:44 · 257 阅读 · 0 评论 -
转:JVM 线上故障排查基本操作
前言对于后端程序员,特别是 Java 程序员来讲,排查线上问题是不可避免的。各种 CPU 飚高,内存溢出,频繁 GC 等等,这些都是令人头疼的问题。楼主同样也遇到过这些问题,那么,遇到这些问题该如何解决呢?首先,出现问题,肯定要先定位问题所在,然后分析问题原因,再然后解决问题,最后进行总结,防止下次再次出现。今天的文章,就如我们的题目一样,讲的是基本操作,也就是一些排查线上问题的基本方...转载 2019-10-25 10:03:51 · 283 阅读 · 0 评论 -
Java单播、广播、多播(组播)
一、通信方式分类 在当前的网络通信中有三种通信模式:单播、广播和多播(组播),其中多播出现时间最晚,同时具备单播和广播的优点。单播:单台主机与单台主机之间的通信 广播:当台主机与网络中的所有主机通信 多播:当台主机与选定的一组主机的通信二、单播 单播是网络通信中最常见的,网络节点之间的通信 就好像是人们之间的对话一样。如果一个人对另外一个人说话,那么用网络技术的术语...转载 2019-10-24 20:01:55 · 317 阅读 · 0 评论 -
用实例说明多线程的使用场景及方法
转自:https://jingyan.baidu.com/article/455a99506c0a68a16627780a.html1、在讲解之前,先考虑一个编程任务。假设有一个同学通讯录,通讯录长度为1000,用于记录同学的姓名、电话、地址信息,用户可以并发检索该通讯录,输入通讯录中的姓名,程序从通讯录中查找该姓名,如果存在则输出与该姓名相关的电话、地址信息。任务要求简单模拟1000个用户的...转载 2019-06-11 10:07:45 · 2284 阅读 · 0 评论 -
Spring Boot 2.0 新特性和发展方向
以Java 8 为基准Spring Boot 2.0 要求Java 版本必须8以上, Java 6 和 7 不再支持。内嵌容器包结构调整为了支持reactive使用场景,内嵌的容器包结构被重构了的幅度有点大。EmbeddedServletContainer被重命名为WebServer,并且org.springframework.boot.context.embedded 包被重定向到了...转载 2019-06-20 10:53:37 · 221 阅读 · 0 评论 -
异常-java.io.EOFException
产生原因:UTF是双字节编码,而writeChars方法写入的是按照字符格式写入的,在文件中的占位要小于以Unicode编码的同样字符串,所以,使用readUTF方法读取时,会出现EOF错误EOFException:当输入过程中意外到达文件或流的末尾时,抛出此异常。此异常主要被数据输入流用来表明到达流的末尾。注意,其他许多输入操作返回一个特殊值表示到达流的末尾,而不是抛出异常。解决方法...转载 2019-06-13 10:00:20 · 27128 阅读 · 0 评论 -
List中用Stream,filter代替for循环
首先创建一个Student类@Datapublic Class Student{ private Long id; private String name;}在List<Student>中查找name为ZhangSan的对象Strudent在Java8中我们可以这样操作1.查找集合中的第一个对象Optional<A> fi...转载 2019-06-05 15:10:42 · 2446 阅读 · 0 评论 -
### Error updating database. Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x91\x8
报错日志:### Error updating database. Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x91\x87</...' for column 'content' at row 1### The error may involve defaultParameterMap### ...转载 2019-05-30 10:24:58 · 3541 阅读 · 0 评论 -
Java序列化机制和原理
转:https://www.cnblogs.com/redcreen/articles/1955307.htmlJava序列化机制和原理Java序列化算法透析 Serialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化deserialization是一种将这些字节重建成一个对象的过程。Java序列化API提供一种处理对象序列化的标准机制。在这里你能学到如何序列...转载 2019-04-23 10:19:06 · 178 阅读 · 0 评论 -
异常分类
1、类java.lang.Throwable作为所有异常的超类;其下分为Error和Exception,Error为程序本身无法处理的错误,而Exception则是程序本身可以捕获并可处理的异常;2、Exception下面有很多异常类这些异常类被分为两种,一种是运行时异常(又称非检查异常),另一种则是编译异常(即检查异常)。常见异常介绍运行时异常:Array...原创 2019-06-17 09:54:35 · 600 阅读 · 0 评论 -
数据库读写分离、分表分库——Mycat
转:https://www.cnblogs.com/joylee/p/7513038.html系统开发中,数据库是非常重要的一个点。除了程序的本身的优化,如:SQL语句优化、代码优化,数据库的处理本身优化也是非常重要的。主从、热备、分表分库等都是系统发展迟早会遇到的技术问题问题。Mycat是一个广受好评的数据库中间件,已经在很多产品上进行使用了。希望通过这篇文章的介绍,能学会Mycat的使用...转载 2019-04-22 10:41:45 · 203 阅读 · 0 评论 -
OAuth2记录(密码模式)
解决问题:自定义错误返回信息;(见第2节) 扩展token返回信息,利用AdditionalInformation增加附加信息;(见3.1) http basic验证方式;(见1.2及4.2) 当配置.permitAll()时,即使携带Token,也可以直接访问。(见第5节)1.配置1.1.pom依赖<parent> <groupId>org....原创 2019-04-22 10:19:12 · 4426 阅读 · 4 评论 -
java网络通信:TCP/IP、Socket、长连接短连接
TCP/IP 协议组TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。 在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。 在传输层中有TCP协议与UDP协议。 在应用层有: (基于)TCP包括FTP、HTTP、TELNET、SMTP等协议 (基于)UDP包括DNS、TFTP等协议 SOCKET:不属于任何层,也不是协议,只...转载 2019-02-20 15:00:15 · 849 阅读 · 0 评论 -
java网络通信:http连接与socket连接的区别
转自 https://blog.youkuaiyun.com/jy55149676/article/details/8043070应用层:HTTP协议(基于传输层的TCP协议,主要解决如何包装数据)传输层: TCP协议(基于网络层的IP协议)、TPC/IP协议(主要解决数据如何在网络中传输)网络层: IP 协议Socket则是对TCP/IP协议的封装和应用(程序员层面上),Socket本身并不是协...转载 2019-02-20 14:30:22 · 1050 阅读 · 0 评论 -
java网络通信:HTTP协议
转自 https://www.cnblogs.com/WellHold/p/7514333.html http协议是应用层的协义 有个比较形象的描述:HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。 两个计算机之间的交流无非是两个端口之间的数据通信,具体的数据会以什么样的形式展现是以不同的应用层协议来定义的`如HTTP`FTP`... ...转载 2019-02-20 12:44:30 · 297 阅读 · 0 评论 -
toString()与 gson.toJson(xxx)的区别
一、json转String String string = posJ.toString();//两者区别String json = gson.toJson(posJ);将json数据转为String,posJ为一段json数据, 1、使用Object posJ = dangerRecordEntity.getInfo().getPos();String string ...原创 2018-12-07 14:38:39 · 3742 阅读 · 0 评论 -
具有缓存功能的类(Integer、Long等)
转自 https://www.cnblogs.com/rouqinglangzi/p/8848607.html一、Integer类的缓存机制我们查看Integer的源码,就会发现里面有个静态内部类。 public static Integer valueOf(int i) { assert IntegerCache.high >= 127; //...转载 2018-11-12 15:39:19 · 335 阅读 · 0 评论 -
数据库中 当值为0时 if test="enable_flag != null and enable_flag != ''"会拦截
将enable_flag != ” 删除即可 原因:当传输数据与数据库类型不匹配时 例如:传输数据为int类型转载 2018-11-15 19:04:06 · 538 阅读 · 0 评论 -
Swagger注解生成Rest Api文档 并生成静态文档
Swagger注解生成Rest Api文档1、添加配置类@Configuration //spring boot配置注解@EnableSwagger2 //启用swagger2功能注解public class Swagger2Config extends WebMvcConfigurationSupport { @Bean public Docket createRe...原创 2018-11-08 16:16:09 · 1256 阅读 · 0 评论 -
InputStream 、 InputStreamReader 、 BufferedReader区别
转自:https://blog.youkuaiyun.com/lykangjia/article/details/70159619?utm_source=itdadao&utm_medium=referral1、InputStream、OutputStream处理字节流的抽象类InputStream 是字节输入流的所有类的超类,一般我们使用它的子类,如FileInputStream等....转载 2018-11-06 14:39:05 · 264 阅读 · 0 评论 -
spring-webmvc-5.1.7.RELEASE中HandlerInterceptor接口不重写方法不报错
spring-webmvc-5.1.7.RELEASE中HandlerInterceptor接口不重写方法不报错对比源码spring-webmvc-5.1.7.RELEASE中HandlerInterceptor接口package org.springframework.web.servlet;import javax.servlet.http.HttpServletRequ...原创 2019-06-17 16:48:59 · 421 阅读 · 0 评论 -
理解观察者模式
观察者模式是一种行为型模式,适用于对象间一对多的依赖关系,其中一是被观察者,多是观察者,观察者依赖于被观察者。实例:以天气的情景做例子:第三方天气软件从气象站获取最新的温度,湿度和气压,当气象站温度,湿度和气压变化时,第三方天气软件要做到及时的更新。在不使用观察者模式时,类图结果是这样的:在这个类图结果中,气象站维护了温度,湿度,气压数据,同时还要介入第三方软件获取天气...转载 2019-06-25 16:07:30 · 237 阅读 · 0 评论 -
从字节码分析i = i++ 与 i = ++i 的区别
从两段代码分析i++ 与 ++i 的区别public static void test1() { int i = 0; for (int j = 0; j < 10; j++) i = i++; System.out.println(i);}输出结果 0public static void test2() { int i ...原创 2019-10-08 21:09:46 · 412 阅读 · 0 评论 -
java.lang.UnsupportedOperationException解决方法【转】
转自https://blog.youkuaiyun.com/Tracycater/article/details/77592472?locationNum=2&fps=1做开发一定要注重细节。在项目中对List进行操作时报错java.lang.UnsupportedOperationException,后来发现操作的List是由数组转换而成的,通过看源码发现问题,并写测试程序如下。代码块:...转载 2019-10-08 16:06:51 · 250 阅读 · 0 评论 -
分析FastJson OOM内存溢出 bug
起因,事情的背景1.2019年9月5日,360CERT监测到2019年9月3日fastjson在commit 995845170527221ca0293cf290e33a7d6cb52bf7上提交了旨在修复当字符串中包含\x转义字符时可能引发OOM的问题的修复。360CERT 判断该漏洞危害中。影响面较大。攻击者可以通过发送构造好的请求而致使当前线程瘫痪,当发送的恶意请求过多时有可能使...转载 2019-09-24 10:35:24 · 2074 阅读 · 0 评论 -
com.fasterxml.jackson.databind.exc.InvalidDefinitionException
org.springframework.http.converter.HttpMessageConversionException:Typedefinitionerror:[simpletype,classcom.xxx.support.maintenance.SystemTime];nestedexceptioniscom.fasterxml.jackson.databin...原创 2019-08-27 17:33:04 · 1826 阅读 · 0 评论 -
提示:sun.misc.BASE64Decoder是内部专用 API
在使用sun.misc.BASE64Decoder类时,编译时会提示:sun.misc.BASE64Decoder是内部专用 API, 可能会在未来发行版中删除解决办法:改用JDK8自带的java.util.Base64public class JDKBase64Util { /** * BASE64解密 */ public static byt...原创 2019-08-12 09:25:48 · 3510 阅读 · 0 评论 -
Java堆栈跟踪工具
利用Thymeleaf在浏览器查看线程堆栈1、目录结构:2、application.propertiesspring.thymeleaf.cache=false spring.thymeleaf.prefix=classpath:/view/3、pom<dependency> <groupId>org.springframework.b...原创 2019-08-20 17:01:02 · 829 阅读 · 0 评论 -
javax.crypto.BadPaddingException: Given final block not properly padded...
原文:https://www.zhyd.me/article/78JAVA的AES加密解密在windows上测试一切正常,部署到linux之后总是报异常:javax.crypto.BadPaddingException: Given final block not properly padded...查阅资料得知,该问题是由以下原因引起的:private static Secr...转载 2019-08-09 15:42:01 · 619 阅读 · 0 评论 -
@Controller和@RestController的区别
在开发过程中由于大意遇到一个坑,因为需要返回的是JSON数据,但是在controller上只加了@Controller注解,导致一直没产生返回值。后来排查发现此处应该使用@RestController,原因如下:@RestController注解相当于@ResponseBody + @Controller合在一起的作用。1、如果使用@RestController注解Controller类,...原创 2019-08-08 11:34:44 · 191 阅读 · 0 评论 -
volatile内部实现机制理解
在学习内存模型与线程的时候看到这样一句话:“线程对变量的所有操作都必须在工作内存中进行,而不能直接读写主内存中的变量。对于volatile这个特殊情况也不例外。”于是根据这句话来了解volatile的内部机制。被volatile修饰的共享变量在编译后,我们可以在汇编语言中看到一个lock指令,这其实就是内存屏障。当CPU识别到这个指令就会立刻将当前内核的高速缓存回写到主内存,并且...原创 2019-08-01 11:13:02 · 206 阅读 · 0 评论