Java
文章平均质量分 82
feifuzeng
这个作者很懒,什么都没留下…
展开
-
Springboot配置https访问
介绍该篇博文主要介绍如何配置Springboot使其打包部署的服务必须通过HTTPS协议才可访问,仅供内部研究使用。生成https证书要使用https,首先需要ssl证书,获取SSL证书有两种方式:自己通过keytool生成通过证书授权机构购买这里本地测试使用,通过keytool生成,方式如下C:\Users\feifuzeng>keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048原创 2021-04-30 14:02:52 · 375 阅读 · 2 评论 -
缓存穿透、缓存雪崩和缓存击穿是什么?
背景对于缓存穿透、缓存雪崩和缓存击穿常常出现在面试中,今天来看看它到底是啥吧?redis缓存穿透理解重在穿透吧,也就是访问透过redis直接经过mysql,通常是一个不存在的key,在数据库查询为null。每次请求落在数据库、并且高并发。数据库扛不住会挂掉。解决方案可以将查到的null设成该key的缓存对象。当然,也可以根据明显错误的key在逻辑层就就行验证。同时,你也可以分析用户行为,是否为故意请求或者爬虫、攻击者。针对用户访问做限制。其他等等,比如用布隆过滤器(超大型hashmap原创 2021-04-30 14:02:10 · 224 阅读 · 0 评论 -
手把手教你SonarQube入门安装与使用
简介Sonar (SonarQube)是一个开源平台,用于管理源代码的质量。Sonar 不只是一个质量数据报告工具,更是代码质量管理平台。支持Java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十几种编程语言的代码质量管理与检测。Sonar可以从以下七个维度检测代码质量,而作为开发人员至少需要处理前5种代码质量问题。不遵循代码标准sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写。潜在的缺陷原创 2021-04-30 14:00:42 · 999 阅读 · 2 评论 -
Java语法糖详解
语法糖语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。简而言之,语法糖让程序更加简洁,有更高的可读性。我们所熟知的编程语言中几乎都有语法糖。作者认为,语法糖的多少是评判一个语言够不够牛逼的标准之一。很多人说Java是一个“低糖语言”,其实从Java 7开始Java语言层面上一直在添加各种糖,主要是在“Project Coin”项目下研发。尽管现在原创 2021-01-28 09:46:11 · 252 阅读 · 2 评论 -
Java 8中字符串拼接新姿势:StringJoiner
介绍StringJoiner是java.util包中的一个类,用于构造一个由分隔符分隔的字符序列(可选),并且可以从提供的前缀开始并以提供的后缀结尾。虽然这也可以在StringBuilder类的帮助下在每个字符串之后附加分隔符,但StringJoiner提供了简单的方法来实现,而无需编写大量代码。StringJoiner类共有2个构造函数,5个公有方法。其中最常用的方法就是add方法和toString方法,类似于StringBuilder中的append方法和toString方法。用法StringJ原创 2021-01-25 10:06:29 · 488 阅读 · 1 评论 -
Java异常体系概述
Java的异常体系结构Java异常体系的根类是 Throwable, 所以当写在java代码中写throw抛出异常时,后面跟的对象必然是Throwable或其子类的对象。其中Exception异常是指一些可以恢复的异常, 例如常见的NullPointerException空指针异常。Error指的是一些致命的错误,无法通过程序代码手段恢复的异常,例如OutOfMemoryError内存溢出错误。unchecked异常在上图中除了RuntimeException、Error及其子类都是属于unch原创 2021-01-04 16:50:03 · 202 阅读 · 0 评论 -
HashMap源码分析
HashMap 简介HashMap 主要用来存放键值对,它基于哈希表的Map接口实现,是常用的Java集合之一。JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的(“拉链法”解决冲突).JDK1.8 以后在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为 8)时,将链表转化为红黑树(将链表转换成红黑树前会判断,如果当前数组的长度小于 64,那么会选择先进行数组扩容,而不是转换为红黑树),以减少搜索时间,具体可以参考tr原创 2020-10-09 17:11:03 · 123 阅读 · 0 评论 -
Java运算符及运算符的优先级
介绍Java语言中提供了很多运算符来操作变量,现总结以下七种:赋值运算符算术运算符关系运算符逻辑运算符位运算符三目运算符instanceof运算符一、赋值运算符赋值符号 " = "语法:变量名 = 表达式;可以和算术运算符结合成复合赋值运算符,例如" += “、” -= “、” *= “、” /= “、” %= "示例:“int a = 8”、" b += 18"、" m *= 5"二、算术运算符符号 " + “、” - “、” * “、” / “、” % “、” ++原创 2020-09-29 09:19:50 · 25986 阅读 · 2 评论 -
Java并发编程:深入剖析ThreadLocal
一.对ThreadLocal的理解ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,其实意思差不多。可能很多朋友都知道ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。这句话从字面上看起来很容易理解,但是真正理解并不是那么容易。我们还是先来看一个例子:class ConnectionManager { private static Connection connect = null;原创 2020-09-28 08:57:40 · 119 阅读 · 0 评论 -
设计模式之-职责链模式
基本概念什么是链链是一系列节点的集合。链的各节点可灵活拆分再重组。职责链模式使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。角色抽象处理者角色(Handler):定义出一个处理请求的接口。如果需要,接口可以定义 出一个方法以设定和返回对下家的引用。这个角色通常由一个Java抽象类或者Java接口实现。具体处理者角色(ConcreteHandler):具体处理者接到请求后,可原创 2020-09-14 08:54:25 · 130 阅读 · 0 评论 -
设计模式之-装饰器模式
基本概念装饰器模式,顾名思义起的是装饰的作用,就是在一个类上增加功能。如果通过继承来增加功能,在不修改代码的情况下,如果增加功能多的话,会使类的数量爆炸式增长,为管理带来巨大的麻烦。装饰器模式就比较好地解决了这一点。介绍以下为装饰器模式的通用类图:Component,一般是接口或者抽象类,定义了最简单的方法,装饰器类和被装饰类都要实现该接口。ConcreteComponent,被装饰类,实现了Component。Decorator,装饰器类,通过该类为ConcreteComponent动态添原创 2020-09-11 08:54:28 · 141 阅读 · 0 评论 -
Java并发编程:volatile关键字解析
介绍volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一下与内存模型相关的概念和知识,然后分析了volatile关键字的实现原理,最后给出了几个使用volatil原创 2020-09-09 09:05:42 · 115 阅读 · 0 评论 -
前后端API交互如何保证数据安全性?
前言前后端分离的开发方式,我们以接口为标准来进行推动,定义好接口,各自开发自己的功能,最后进行联调整合。无论是开发原生的APP还是webapp还是PC端的软件,只要是前后端分离的模式,就避免不了调用后端提供的接口来进行业务交互。网页或者app,只要抓下包就可以清楚的知道这个请求获取到的数据,这样的接口对爬虫工程师来说是一种福音,要抓你的数据简直轻而易举。数据的安全性非常重要,特别是用户相关的信息,稍有不慎就会被不法分子盗用,所以我们对这块要非常重视,容不得马虎。如何保证API调用时数据的安全性?原创 2020-09-04 13:39:35 · 1236 阅读 · 0 评论 -
ElasticSearch生命周期管理-索引策略配置与操作
概述本文是在本人学习研究ElasticSearch的生命周期管理策略时,发现官方未提供中文文档,有的也是零零散散,此文主要是翻译官方文档Policy phases and actions模块。注:基于6.7版本索引生命周期中有四个阶段,按执行顺序排列。名称描述hot该索引正在积极写入warm索引通常不会被写入,但仍然会被查询cold索引不再更新,很少查询。信息仍然需要搜索,但如果这些查询速度较慢也没关系。delete不再需要索引,可以安全删除原创 2020-08-27 22:35:25 · 2549 阅读 · 0 评论 -
ElasticSearch-生命周期管理
1月29日,Elastic Stack 迎来 6.6 版本的发布,该版本带来很多新功能,比如:Index Lifecycle ManagementFrozen IndexGeoshape based on Bkd TreeSQL adds support for Date histograms…在这些众多功能中,Index Lifecycle Management(索引生命周期管理,后文简称 ILM) 是最受社区欢迎的。今天我们从以下几方面来快速了解下该功能:为什么索引会有生命?什么是索原创 2020-08-25 08:51:11 · 2133 阅读 · 1 评论 -
Http请求-okhttp3基本用法
简介HTTP是现代应用常用的一种交换数据和媒体的网络方式,高效地使用HTTP能让资源加载更快,节省带宽。OkHttp是一个高效的HTTP客户端,它有以下默认特性:支持HTTP/2,允许所有同一个主机地址的请求共享同一个socket连接连接池减少请求延时透明的GZIP压缩减少响应数据的大小缓存响应内容,避免一些完全重复的请求源码:https://github.com/square/okhttp说明:OkHttp支持Android 2.3及以上版本Android平台,对于Java, JDK1.原创 2020-08-25 08:49:02 · 396 阅读 · 0 评论 -
Mybatis进阶使用-一级缓存与二级缓存
简介缓存是一般的ORM 框架都会提供的功能,目的就是提升查询的效率和减少数据库的压力。跟Hibernate 一样,MyBatis 也有一级缓存和二级缓存,并且预留了集成第三方缓存的接口。一级缓存什么是一级缓存?Mybatis一级缓存实际上就是一个依赖于SqlSession的缓存对象,PerpetualCache里面的结构很简单,通过一个k-v结构的cache维护缓存数据。一级缓存默认开启public class PerpetualCache implements Cache { priva原创 2020-08-19 14:05:01 · 326 阅读 · 0 评论 -
MyBatis 之like模糊查询中包含有特殊字符(_、\、%)
问题使用MyBatis中的模糊查询时,当查询关键字中包括有_、\、%时,查询关键字失效。当like中包含_时,查询仍为全部,即 like '%_%'查询出来的结果与like '%%'一致,并不能查询出实际字段中包含有_特殊字符的结果条目like中包括%时,与1中相同like中包含\时,带入查询时,%%无法查询到包含字段中有\的条目处理工具类:特殊字符转义import org.apache.commons.lang3.StringUtils;public class EscapeUtil {原创 2020-08-19 10:36:13 · 3503 阅读 · 1 评论 -
Intellij IDEA 远程调试部署在容器中的springboot项目
前言之前整理过一篇如何利用Intellij IDEA 远程调试部署在远程服务器Tomcat中的Web应用。链接地址:ntelliJ IDEA远程调试(Debug)Tomcat但现在大多数应用都是springboot项目,且是直接java -jar形式运行的,而且都是容器化部署的,那么远程调试方式还是类似吗?答案是肯定的。验证制作镜像一个springboot web应用,名为security-cloud-product-1.0.0.jar,且对外提供Rest服务,端口为8181Dockerf原创 2020-07-10 18:03:37 · 893 阅读 · 0 评论 -
MyBatis 之like模糊查询中包含有特殊字符(_、\、%)
dsadsa原创 2020-06-19 15:06:49 · 2013 阅读 · 1 评论 -
关于tomcat不同版本的maxPostSize配置【待完善】
在日常开发中可能会遇到需要修改tomcat 配置属性maxPoolSize的要求,针对不同版本如何修改这个配置做个简单梳理。(该表格只找了几个典型版本号tomcat测试,其他版本大致都一样)tomcat属性maxPoolSize配置 版本 默认值 配置说明 修改方式 备注 apache tomcat 7.0.63以前 2097152 设置为0和负数均可...原创 2019-02-20 11:15:00 · 1886 阅读 · 0 评论 -
Java生成二维码(zxing、qrCode)
方法一、 第一种:使用google的zxing生成这里主要用到三个jar包maven依赖: com.google.zxing core 3.0.0 com.google.zxing j原创 2017-11-16 11:28:54 · 731 阅读 · 0 评论 -
URLDecoder与URLDecoder的简单了解
URLDecoder是对字符串进行URL解码的编码处理函数。URLDecoder:对字符串进行URL解码。返回值:已解码的字符串函数种类:编码处理URLDecoder是一个函数,可将字符串以URL编码,用于编码处理。UrlEncode:将字符串以URL编码返回值:字符串函数种类:编码处理应用::一般企业部署项目是在原创 2017-07-18 11:18:54 · 5276 阅读 · 0 评论 -
Lambda基础用法
仅供初窥Lambda,示例demo,后续继续完善package com.ohaotian.feifz.demo.lambdas;import java.util.ArrayList;import java.util.Arrays;import java.util.IntSummaryStatistics;import java.util.List;import java.util...原创 2018-12-25 15:13:18 · 1187 阅读 · 0 评论 -
Java基础知识学习总结链接
一、Java中String,StringBuilder,StringBuffer有道笔记:http://note.youdao.com/noteshare?id=492c583f5da970a33f203a9c7c0dcc08&sub=F790ED59C8084D9DBFCC7C8D331C5983CSDN博客:http://www.cnblogs.com/dolphin0520/...原创 2017-11-20 10:50:08 · 387 阅读 · 0 评论 -
ajax跨域 后台允许跨域访问
参考博文:https://blog.csdn.net/djl0906/article/details/702388471、新建一个过滤器package com.util.filter;import javax.servlet.*;import javax.servlet.http.HttpServletResponse;import java.io.IOException;/...转载 2018-07-30 09:51:30 · 608 阅读 · 0 评论 -
JAVA邮件发送(文字+图片+附件)【源码】
介绍: 电子邮件协议电子邮件的在网络中传输和网页一样需要遵从特定的协议,常用的电子邮件协议包括 SMTP,POP3,IMAP。其中邮件的创建和发送只需要用到 SMTP协议,所有本文也只会涉及到SMTP协议。SMTP 是 Simple Mail Transfer Protocol 的简称,即简单邮件传输协议。 JavaMail我们平时通过 Java 代码打开一个 http 网页链接时原创 2017-07-26 09:45:30 · 3817 阅读 · 0 评论 -
java中extends与implements的区别浅谈
1. 在类的声明中,通过关键字extends来创建一个类的子类,即继承一个类。一个类通过关键字implements声明自己实现一个或者多个接口。extends 是继承某个类, 继承之后可以使用父类的方法, 也可以重写父类的方法; implements 是实现多个接口, 接口的方法一般为空的, 必须重写才能使用2.extends是继承父类,只要那个类不是声明为final或者那个类定义翻译 2017-04-27 09:20:20 · 635 阅读 · 0 评论 -
【推荐软件】测试get post请求的好工具----postman
postman这个软件,在测试get post请求方面很方便,本来也可以作为谷歌浏览器插件使用,但是谷歌在大陆受限,用起来一堆毛病,就不考虑在谷歌浏览器加postman插件调试了,这是一个单独软件!这是一个单独软件!这是一个单独软件!参考链接:http://blog.csdn.net/yangfeiyang88/article/details/71713935?locationNum=原创 2017-06-16 10:58:42 · 1078 阅读 · 0 评论 -
Map四种遍历方法
初次接触Map时,发现这个东西变数很大,近日略微研究之后发现这是一个很好的玩意,值得深入研究,这里记录一下Map的四种遍历方法。参考文章:http://www.cnblogs.com/blest-future/p/4628871.html话不多说,直接贴代码。package com.cn.java.map.hashMap;import java.util.HashMap;原创 2017-06-29 17:35:38 · 509 阅读 · 0 评论 -
JAVA List和Map集合类简介(简单整理)
讲述重点之前,先简单介绍一下java集合类,集合类存放于java.util包中。集合类(Collection)存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。集合类型主要有3种:set(集)、list(列表)和map(映射)。该篇博文主要简单介绍一下map和list这两种集合类,首先我们要明确一点,m原创 2017-07-03 16:35:08 · 1004 阅读 · 0 评论 -
常见正则表达式【记录】
很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求。所以我最近把开发中常用的一些正则表达式整理了一下,在这里分享一下。给自己留个底,也给朋友们做个参考。一、校验数字的表达式1 数字:^[0-9]*$2 n位的数字:^\d{n}$3 至少n位的数字:^\d{n,}$4 m-n位的数字:^\d{m,n}$5 零转载 2017-07-14 11:12:07 · 280 阅读 · 0 评论 -
java.util.regex.PatternSyntaxException表达式错误异常【JAVA小知识】
这是我从网上摘录的,自己也遇到了同样的错误,在此感谢作者!Java.util.regex.PatternSyntaxException表达式错误异常String s="/babalaautomgr.ejs?method=constr"; int i=s.split("?").length; System.out.println(i);原创 2017-07-12 11:16:23 · 7020 阅读 · 0 评论 -
Java类创建公共类获取配置文件.properties配置的值
创建的SystemConstants 类:(红色部分为核心代码)package cn.test.util;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStreamReader;import java.util.Properties;public clas原创 2017-05-04 10:47:19 · 2097 阅读 · 0 评论 -
SFTP上传文件到资源服务器 工具类
首先得创建连接sftp服务器的公共类MySftp.java:package cn.test.util;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.text.SimpleDateFormat;import java.util.Date;imp翻译 2017-05-04 10:57:50 · 1268 阅读 · 0 评论 -
java获取配置文件里面信息【附代码】
在实际项目中,我们有许多信息时需要配置在配置文件中,那么用java代码获取项目或者本地的配置就显得尤为重要,这里是基于eclipse写的代码,为避免在实际项目中会出现乱码,所以在本地创建配置文件时要设置文件编码为UTF-8,如果是项目中配置信息,则同样需要设置编码为UTF-8。package com.cn.test;import java.io.FileInputStream;impor原创 2017-07-28 17:52:52 · 2114 阅读 · 0 评论 -
Java获取当前类名和当前方法名
Java获取当前类名的两种方法:适用于非静态方法:this.getClass().getName()适用于静态方法:Thread.currentThread().getStackTrace()[1].getClassName()获取类名:1、在类的实例中可使用this.getClass().getName();但在static method中不能使用该方法;2、在static原创 2017-09-23 12:02:48 · 5361 阅读 · 0 评论 -
java 中 byte[]、File、InputStream 互相转换
1、将File、FileInputStream 转换为byte数组:File file = new File("test.txt");InputStream input = new FileInputStream(file);byte[] byt = new byte[input.available()];input.read(byt);2、将byte数组转换为InputStream:byte[]...转载 2018-07-10 13:58:34 · 2249 阅读 · 0 评论 -
servlet接收http接口入参两种方式
在做开发时,有时可能因为某种原因,需要使目标系统对外暴露接口供第三方系统调用,这是为方便就可能暴露一个servlet,其接受参数只能从j2ee内置对象HttpServletRequest取参数,不同方式提交参数,取参数方式也不一样方式一:传json字符串例如第三方ajax请求如下:var str = {"title":"上线商品数","number":"45671","unit":"个"}原创 2018-05-22 21:11:25 · 3886 阅读 · 0 评论 -
maven常见命令
clean install -Plocal -DskipTests跳过测试选择local的配置进行打包原创 2018-04-24 09:32:46 · 172 阅读 · 0 评论