自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

KongJHong的博客

人的梦想,是不会结束的

  • 博客(61)
  • 资源 (1)
  • 收藏
  • 关注

原创 BigDecimal工具类,简单而有效

使用链式变成的思想封装BigDecimal,支持四则运算,读者可以根据项目的要求自行添加方法import lombok.Data;import javax.validation.constraints.NotNull;import java.math.BigDecimal;/** * big decimal 工具类 * 大多数只支持double类型 */@Datapublic class BigDecimalUtil { private BigDecimal bigDecimal

2021-08-23 15:43:31 923 2

原创 代理模式和SpringAOP

文章目录1. 什么是代理模式?2. 静态代理2.1 普通代理2.2 强制代理2.3 静态代理的缺点3. 动态代理3.1 JDK动态代理3.2 CGLIB动态代理3.3 总结4. Spring AOP引用1. 什么是代理模式?代理模式的核心作用就是通过代理,控制对对象的访问。它的设计思路是:定义一个抽象角色,让代理角色和真实角色分别去实现它抽象角色(Subject):通常是一个接口,是一个最普通的业务类型定义,无特殊定义真实角色(RealSubject):实现抽象角色,定义真实角色所要实现的业务逻辑

2021-02-28 02:54:35 323 2

原创 读书笔记:七种单例模式

1 饿汉式public final class Singleton { // 实际变量 private byte[] data = new byte[1024]; // 在定义实例变量的时候直接初始化 private static Singleton instance = new Singleton(); // 私有构造函数,不允许外部new private Singleton() {} public static Singleton getInstance() {

2021-02-27 23:59:25 316 1

原创 Tomcat8源码分析-idea运行tomcat8.5.58

本机环境: win10 + jdk1.8tomcat版本: apache-tomcat-8.5.58源码下载: tomcat官网解压下载好的源码包,解压路径不要有英文,不然编译会报错在解压好的文件夹里新增pom.xml文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XM

2021-02-20 19:45:05 460 1

原创 Java8实战笔记:第三部分(8~12章)

简介第8章会介绍如何利用Java 8的新特性及一些技巧,改进现有代码。除此之外,还会探讨一些非常重要的软件开发技术,譬如设计模式、重构、测试以及调试。第9章中,你会了解什么是默认方法,如何以兼容的方式使用默认方法改进API,一些实用的使用模式,以及有效地利用默认方法的规则。(随便看看)第10章围绕Java 8中全新引入的java.util.Optional类展开。java.util.Optional类能帮助我们设计出更优秀的API,同时降低了空指针异常发生的几率。第11章着重介绍Completab

2020-12-15 23:23:18 199

原创 Java8实战笔记:第一部分(1~3章)

1.为什么关心Java8和大多数书本一样,书本的第一章都起统领全书的作用,上来就是一个疑问?Java8怎么还在变,语言的变化离不开程序员对性能和代码简化的需求,进而引出了流处理、Lambda表达式、方法引用、并行化的相关概念1.1 Java 怎么还在变Java 在编程语言生态系统中的位置流处理 ——流是一系列数据项,一次只生成一项用行为参数化把代码传递给方法并行与共享的可变数据Java 需要演变1.2 Java中的函数Java8中新增了函数——值的一种新形式前提是:listFil

2020-12-11 16:07:14 266 1

原创 Java8实战笔记: 第二部分(4~7章)

第四章介绍了流的概念,并解释它与集合的异同第五章详细讨论了表达复杂数据处理查询可以使用的流操作。会谈到很多模式,如筛选、切片、查找、匹配、映射和归约第六章介绍了收集器——Stream API的一个功能,可以让你表达更为复杂的数据处理查询第七章,了解流为何可以自动并行执行,并利用多核架构的优势4. 引入流流是Java API的新成员,它允许你以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现)。就现在来说,你可以把它们看成遍历数据集的高级迭代器。此外,流还可以透明地并行处理,你.

2020-11-25 22:25:00 190

转载 正则表达式速查表

字符描述\将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,"n"匹配字符"n"。\n匹配一个换行符。串行\\匹配\,而\(则匹配(。^匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。$匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。*匹配前面的子表达式零次或多次。例如,zo*能匹配“z”...

2020-11-18 13:02:15 124 1

原创 跳表的实现 Java

一、什么是跳表?我们经常可以看到跳表这个词,但是却对里面的数据结构缺乏了解。相比于红黑树,跳表本身是一种基于链表的数据结构,所以他本身的插入和删除效率很高,而查找效率和红黑树相当,都是O(log2n)O(log_2n)O(log2​n)。我们来看一下跳表的结构可以明显看到,跳表就是一种典型的以空间换时间的数据结构。该算法与哈希算法的另一个区别就是:哈希算法不会保存数据的顺序,而跳表内的所有元素都是排序的。因此对于跳表进行遍历会得到一组有序的数据。在JDK内部,也使用了该数据结构,比如Concurr

2020-10-31 16:00:06 365

原创 SQL查询某条数据是否存在,不用count(*)

// SQLSELECT count(*) FROM table WHERE a = 1 AND b = 2// JAVAint nums = xxDao.countXxxxByXxx(params);if ( nums > 0 ) { //当存在时,执行这里的代码} else { //当不存在时,执行这里的代码}这是一条经典的错误查询,因为在没有索引的情况下它会遍历整个数据库。但是在日常业务代码中,需要根据一个或多个条件,查询是否存在记录,不关心有多少条记录。优化方案/

2020-08-28 11:28:35 1034

原创 Springboot学习 shiro

1. Shiro什么是shiro?官网是一款主流的java安全框架,不依赖任何容器,可以运行在Java SE和Java EE项目里面,主要作用是对访问系统的用户进行身份认证、授权、会话管理、加密等操作Shiro就是用来解决安全管理的系统化框架2. Shiro核心组件用户、角色、权限的关系会给角色赋予权限,然后给用户赋予角色2.1 UsernamePasswordToken用来封装用户登录信息,使用用户的登录信息来创建令牌Token.(封装了用户名和密码的token)2.2 Secur

2020-08-03 22:57:08 219

原创 Angular学习(1)——Angular模块化

Angular模块化模块是组织应用和使用外部库扩展应用的最佳途径NgModule 把组件、指令和管道打包成内聚的功能块,每个模块聚焦于一个特性区域、业务领域、工作流或通用工具。模块还可以把服务加到应用中。 这些服务可能是内部开发的(比如你自己写的),或者来自外部的(比如 Angular 的路由和 HTTP 客户端)。基本模块剖析当你使用 Angular CLI 命令 ng new 生成一个应用时,其默认的 AppModule 是这样的:// importsimport { BrowserMod

2020-07-18 20:58:15 585

原创 SpringBoot中的AOP

1. 什么是AOPAOP: Aspect Oriented Programming的缩写,意为:面向切面编程。面向切面编程的目标就是分离关注点。什么是关注点?就是你做的事情,例如玩,其他的事情,让下人去做2. SpringBoot中的AOP处理2.1 AOP依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-started-aop

2020-07-04 16:52:55 151

转载 自定义注解详解

文章引用深入理解Java:注解(Annotation)自定义注解入门自定义注解详细介绍说在最前文章忽略特性的一些基本概念注解的本质是反射1. 自定义注解注解其实就是一种标记,可以在程序代码中的关键节点(类、方法、变量、参数、包)上打上这些标记,然后程序在编译时或运行时可以检测到这些标记从而执行一些特殊操作第一步:定义注解——相当于定义标记第二步:配置注解——把标记打在需要用到的程序代码中第三部:解析注解——在编译期或运行时监测到标记,并进行特殊操作1.2 基本语法注解类型

2020-07-03 16:33:50 1633

转载 JS扩展日期对象 格式化日期

Date.prototype.format = function(fmt){ var o = { "M+" : this.getMonth()+1, //月份 "d+" : this.getDate(), //日 "h+" : this.getHours(), //小时 "m+" : this.getMinutes(),

2020-06-15 18:16:06 201

原创 安装本地jar包到maven仓库

首先进入下载好jar包的目录打开cmd,运行例如mvn install:install-file -DgroupId=com.aliyun -DartifactId=aliyun-sdk-vod-upload -Dversion=1.4.11 -Dpackaging=jar -Dfile=aliyun-java-vod-upload-1.4.11.jar实际如下mvn install:install-file -DgroupId=groupId -DartifactId=artificatedId

2020-06-02 23:03:42 163

转载 SpringMVC执行流程解析

Spring mvc执行流程用户发起请求到前端控制器(DispatcherServlet),该控制器会过滤出哪些请求可以访问Servlet、哪些不能访问。就是url-pattern的作用,并且会加载springmvc.xml配置文件。前端控制器会找到处理器映射器(HandlerMapping),通过HandlerMapping完成url到controller映射的组件,简单来说,就是将在springmvc.xml中配置的或者注解的url与对应的处理类找到并进行存储,用map<url,handl

2020-06-01 12:49:54 255

原创 Spring AOP详解

AOP作用:在不修改源代码的情况下,可以实现功能的增强1. 静态代理要说AOP,它的核心是动态代理,说道动态代理,必须先说静态代理。静态代理是通过新增代理类对源代码进行增强IRunnner接口如下public interface IRunner{ public void run();}Runner类如下public class Runner implements IRunner { @Override public void run() { Sys

2020-05-22 00:55:03 183

原创 Java多线程和线程池详解

多线程1. 线程的声明周期新建 :从新建一个线程对象到程序start() 这个线程之间的状态,都是新建状态;就绪 :线程对象调用start()方法后,就处于就绪状态,等到JVM里的线程调度器的调度;运行 :就绪状态下的线程在获取CPU资源后就可以执行run(),此时的线程便处于运行状态,运行状态的线程可变为就绪、阻塞及死亡三种状态。等待/阻塞/睡眠 :在一个线程执行了sleep(睡眠)、suspend(挂起)等方法后会失去所占有的资源,从而进入阻塞状态,在睡眠结束后可重新进入就绪状态。终止 :

2020-05-09 16:15:12 857

原创 Springboot:拦截器的配置

拦截器在项目中使用的是非常多的(但不是绝对的),比如拦截一些置顶的 url,做一些判断和处理等等。除此之外,还需要将常用的静态页面或者 swagger 页面放行,不能将这些静态资源给拦截了。首先先自定义一个拦截器。public class MyInterceptor implements HandlerInterceptor { private static final Logger logger = LoggerFactory.getLogger(MyInterceptor.class);

2020-05-08 19:19:46 212

原创 Springboot:全局异常处理

Springboot最小系统模型,全局异常处理

2020-05-08 17:47:16 137

原创 SpringBoot:logback日志配置

SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。

2020-05-08 16:03:04 228

转载 Spring系列:AOP

原文链接:狂神说Spring07:AOP就这么简单什么是AOPAOP(Aspect Oriented Programming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间...

2020-05-08 10:33:00 126

原创 Synchronized面试概念总结

1.什么是SynchroniedSynchronized是一个同步关键字,解决多个线程对共享资源的同步性问题,synchronized关键字可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。1.1 修饰目标修饰目标锁方法实例方法当前实例对象(即方法调用者)静态方法类对象代码块this当前实例对象(即方法调用者)class对象...

2020-05-03 00:00:33 158

原创 MySQL常见面试概念理解

1. MySQL有哪些引擎?其实有很多引擎,但是我们平常就知道InnoDB和MyISAM就足够了1.1 InnoDB和MyISAM的区别InnoDB在主键上建聚簇索引:将主键组织到一棵B+树中,而行数据就储存在叶子节点上。在非主键上建辅助索引:第一步在辅助索引B+树中检索属性值,到达其叶子节点获取对应的主键;第二步使用主键在主索引B+树种再执行一次B+树检索操作(回表),最终到达叶子节点即...

2020-05-02 19:49:02 417

原创 JVM面试题常见概念总结

介绍一下JVM的内存模型线程私有的,有虚拟机栈,本地方法栈,程序计数器线程共享的,有堆和方法区程序计数器看作是当前线程执行的字节码行号的一个指示器,指示下一个要执行的语句,所以必须是线程私有的虚拟机栈就是线程的栈,保存局部变量。当执行一个方法时,会向这个栈区放入一个栈帧本地方法栈和虚拟机栈服务,区别就是虚拟机栈是为Java字节码服务;而本地方法栈是为本地native方法服务...

2020-05-01 14:21:18 209

原创 TheadLocal的理解

ThreadLocal是什么?ThreadLocal是用来维护线程中的变量不被其他线程干扰而出现的一个结构,内部包含一个ThreadLocalMap类,该类为Thread类的一个局部变量,该Map存储的key为ThreadLocal对象自身,value为我们要存储的对象,这样一来,在不同线程中,持有的其实是当前线程的变量副本,与其他线程完全隔离,以此来保证线程执行过程中不受其他线程的影响。Th...

2020-04-30 19:41:45 389

原创 Java:为什么要有包装类

java中有了基本类型为什么还要有包装类型?个人总结包装类的思想并不是简单的让Java基本类型拥有OOP的特性,更深层的用意是——由于Java的底层运行是JVM,而Java虚拟机在运行时分为了五个分区基础类型保存的位置位于栈区,而我们常用的数据结构容器类:List,Set,Map等容器类因为是对象的属性,会分配到堆区(为什么这样设计,我就不懂了)。因为两个区的不同,所以必须有一个在创建在堆...

2020-04-25 01:12:25 906

原创 Java面试:Collections和Collection的区别

Collection从官方文档看,Collection是一个顶层接口,绝大多数常用的容器类都实现了Collection接口,里面定义的容器类的基本方法,例如:CollectionsCollections是一个工具类,此类不能实例化,就像一个工具类,服务于Java的Collection框架。他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。总结Collection...

2020-04-25 01:03:32 306

原创 虚拟机下CentOS 修改动态IP为静态IP(全网最全)

在大多数情况下,我们玩虚拟机都是用NAT模式,这种模式在虚拟机下默认是采用DHCP协议,动态分配IP地址。由于IP地址经常变化,特别是开好几个虚拟机地情况,IP地址会频繁地发生变换,所以,很有必要把动态IP改为静态IP,以方便我们平常地测试下面的操作均在root用户下进行修改动态IP配置查看我们虚拟机的网关和掩码信息子网 :192.168.168.0子网掩码: 255.255.2...

2020-04-21 01:09:49 2348

原创 CentOS:打开指定端口

利用虚拟机做测试的时候,要访问网页的80端口,发现并没有打开,网上的方法都是关闭防火墙,我觉得这样会有一些潜在的风险,虽然只是在虚拟机中做测试,但是该有的防范意识还是要到位的1.查看防火墙状态firewall-cmd --state2.开启端口(如80)firewall-cmd --permanent --zone=public --add-port=80/tcp3.重启防火墙fire...

2020-04-20 12:20:47 2604

原创 SQL:按年龄,性别分组

今天碰到一个面试题,记录一下:现有数据表如下,使用SQL,统计出10~20岁,20~30岁两个分组中男:女人数?请写出对应SQL语句思路考察的是sql-case和group by语句的应用select casewhen age BETWEEN 10 and 20 then "range(10~20)"when age BETWEEN 21 and 30 then "range(20...

2020-04-14 16:50:09 4604

原创 Springboot:Json统一封装

实际项目中,前后端之间数据的传输都使用Json格式,在Spring Boot中,接口返回Json格式的数据很简单,在Controller中使用RestController注解就可以返回Json格式的数据。在Spring Boot中默认使用的Json解析技术是jacksonJsonResultimport lombok.Data;import lombok.ToString;@Data@...

2020-04-14 00:42:30 698

原创 Springboot中Redis工具类配置

Maven工程准备系统用了默认的springboot构建,版本是2.2.6.RELEASE,导入redis的依赖包<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifac...

2020-04-13 18:13:53 351

原创 如何查看SpringBoot的application配置项

场景初学SpringBoot,经常要在application.properties/yml中对某些导入的包进行初始化配置例如在mysql中,我们要配置url,username,password,driverClassName等spring.datasource.url = jdbc:mysql://localhost:3306/DatebaseName(自己数据库名)spring.data...

2020-04-09 13:07:40 4543 1

转载 Session,Cookie和token的关系

本文转载自看完这篇 Session、Cookie、Token,和面试官扯皮就没问题了本文脉络如下Session和CookieHTTP协议是一种无状态协议,即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录;Session和Cookie的主要目的就是为了弥补HTTP的无状态特性Session是什么客户端请求服务端,服务端会为这次请求开辟一块内存空间,...

2020-04-05 20:12:35 309

原创 Java maven项目中读取json资源文件

应用场景springboot maven项目,想读取resources资源目录下自定义的configuration.json文件时,通过下面的代码在本机测试时可以读取try{ //filename="configuration.json" URL url = JsonResourceUtils.class.getResource(filename); String path ...

2020-04-01 00:26:56 4647

原创 重定向和转发的区别

重定向(forward)的特点地址栏发生变化重定向访问其他站点(服务器)的资源重定向是两次请求。不能使用request对象来共享数据转发(redirect)的特点转发地址栏路径不变转发只能访问当前服务器下的资源转发是一次请求,可以使用request对象来共享数据...

2019-10-21 17:49:49 679 1

原创 Ubuntu14编译OpenJDK9

一、说明本文的所有操作都是在JVM虚拟机学习之(1)使用 Ubuntu 14.04 编译 OpenJDK 9的基础上完成最近在看《深入理解JVM虚拟机》这本书,文中第一章需要配置虚拟机和编译OpenJDK,因为书中的版本年代久远,有些资源很难找到,很难复现书中的内容,达到一模一样的效果。网上有很多用Ubuntu16来编译OpenJDK8的文章供参考,本身我的常用linux系统也是Ubuntu1...

2019-10-18 17:55:42 418

转载 Java的IO流

IO流字节流字符流转换流缓冲流数据流读写对象(序列化)NIO在大多数程序中,都需要对输入输出进行处理。例如我们中需要获取用户从键盘上的输入,需要在控制台输出结果等等。除此之外还有从文件中读取数据,向文件中写入数据等等。在 Java 中,我们把这些不同类型的输入输出源抽象地称为流,也就是Stream;在里面输入输出的数据则称为数据流(Data Stream),它们通常具有统一的接...

2019-09-28 20:30:48 249

neo4j-community-3.5.25-unix.tar

neo4j linux版本,亲测centos7和ubuntu16可用

2021-01-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除