自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 资源 (9)
  • 收藏
  • 关注

原创 Excel文件导入功能(带公式)

JAVA实现Excel含公式导入

2021-12-14 10:55:00 1015

原创 JAVA图片转换成字节数组

// logo.jpg为resource目录下的图片路径,采用ClassPathResource,部署到服务器之后也可以获取到resource下的图片ClassPathResource classPathResource = new ClassPathResource("logo.jpg");try{ InputStream inputStream = classPathResource.getInputStream(); ByteArrayOutputStream bos = new ByteA

2021-08-17 10:02:14 789

原创 垃圾回收机制

官方介绍文章目录JVM体系结构各组件基本介绍垃圾回收描述垃圾标记阶段算法垃圾清除阶段算法垃圾分代收集过程JVM体系结构上图各组件翻译如下Class File:.class文件Class Loader Subsystem:类加载子系统Method Area:方法区Heap:堆Java Threads:java线程Program Counter Registers:程序计数器或PC寄存器Native Internal Threads:本地内部线程Runtime Data Areas:运

2021-07-27 11:16:54 154

原创 JVM参数设置、分析

JVM参数的含义参数名称含义默认值备注-Xms初始堆大小物理内存的1/64(小于1GB)默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM会增大堆直到-Xmx的最大限制-Xmx最大堆大小物理内存的1/4(小于1GB)默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制-Xmn年轻代大小注意:此处的大小是指eden区+survivor0区+survivor1区。与

2021-07-23 13:56:29 100

原创 12、垃圾回收

12.1、概述 垃圾是指在运行过程中没有任何指针指向的对象 自动内存管理,无需开发人员手动参与内存的分配与回收,这样降低内存泄漏和内存溢出的风险 自动内存管理机制,能够让软件开发人员从繁重的内存管理中释放出来,可以更专心地专注于业务开发 GC的作用区域:方法区、堆 垃圾回收器可以对年轻代回收,也可以对老年代回收,甚至是全堆和方法区的回收,其中,java堆是垃圾收集器的工作重点 从次数上讲:频繁收集Young区;较少收集Old区;基本不动Perm区

2021-07-22 08:38:13 106

原创 11、String Table

11.1、String Table调整的原因JDK7中将StringTable放到了堆空间中,因为永久代的回收效率很低。在FullGC的时候才会触发,而FullGC是老年代空间不足,永久代不足时才触发,这就导致StringTable回收效率不高,而在开发中会创建大量的字符串,回收效率低,导致永久代内存不足。放到堆里,能及时回收内存11.2、String的基本特性String在jdk8及以前内部定义了final char[] value用于存储字符串数据。jdk9时改为byte[]加上编码标记

2021-07-22 08:37:59 107

原创 10、执行引擎

10.1、概述 执行引擎是JVM核心的组成部分之一 “虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式 JVM的主要任务是负责装载字节码到其内部,但字节码并不能够直接运行在操作系统上,因为字节码指令并非等价于本地机器指令,它内部包含的仅仅是一些能够被JVM所

2021-07-21 11:46:49 49

转载 9、直接内存

JDK8元空间使用的是本地内存 不是虚拟机运行时数据区的一部分,也不是《java虚拟机规范》中定义的内存区域 直接内存是在Java堆外、直接向系统申请的内存区间 来源于NIO,通过存在堆中的DirectByBuffer操作Native内存 通常,访问直接内存的速度会由于Java堆。即读写性能高。因此出于性能考虑,读写频繁的场合可能会考虑使用直接内存,Java的NIO库允许Java程序使用直接内存,用于数据缓冲区 也可能导致OOM异常 由于直

2021-07-21 11:45:28 33

原创 8、HotSpot虚拟机对象探秘

8.1、对象的实例化8.1.1、创建对象的方式 new Class的newInstance:JDK9标记过时,反射的方式,只能调用空参的构造器,权限必须是public Constructor的newInstance:反射的方式,可以调用空参,权限没有要求 使用clone:不调用任何构造器,当前类需要实现Cloneable接口,实现clone方法 使用反序列化:从文件、网络等获取一个对象的二进制流 第三方库Objenesis 8.1.2、创建对象

2021-07-21 11:44:25 64

转载 7、堆(Heap)

7.1、概述 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域 Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间(堆内存的大小是可以调节的) 《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上他应该被视为连续的 所有线程共享Java堆,在这里还可以划分为线程私有的缓冲区(Thread Local Allocation Buffer,TLAB) 7.2、内存细分现代垃圾回收器大部

2021-07-21 11:43:04 94

转载 6、方法区

6.1、方法区的理解《Java虚拟机规范》中明确说明:“尽管所有的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩。”,但对于HotSpotJVM而言,方法区还有一个别名叫做Non-Heap(非堆),目的就是要和堆分开。所以方法区看作是一块独立于Java对的内存空间。方法区和java堆一样,是各个线程共享的内存区域方法区在JVM启动的时候被创建,并且它的实际物理内存空间和Java堆区一样,都是可以不连续的方法区的大小和堆空间一样,可以选择固定大小或者

2021-07-21 11:41:48 195

转载 5、本地方法栈

Java虚拟机栈用于管理java方法的调用,而本地方法栈用于管理本地方法的调用 本地方法栈也是线程私有的 允许被实现成固定或者可动态扩展内存大小(在内存溢出方面是相同的) 如果线程请求分配的栈容量超过本地方法栈允许的最大容量,Java虚拟机将会抛出一个StackOverflowError异常 如果本地方法栈可以动态扩展,并且在尝试扩展的时候无法申请到足够的内存,或者在创建新的线程时没有足够的内存去创建对应的本地方法栈,那么Java虚拟机将会抛出一个OutOf..

2021-07-21 11:40:37 34

原创 4、本地方法接口

4.1、概述4.1.1、什么是本地方法(Native Method)简单地讲,一个Native Method就是一个Java调用非Java代码的接口。一个Native Method是这样一个java方法:该方法的实现是由非java语言实现。在定义一个native method时,并不提供实现体(有些像定义一个Java interface),因为其实现体是由非java语言在外面实现的本地接口的作用是融合不同的编程语言为java所用,他的初衷是融合C/C++程序举例:标识符native可

2021-07-21 11:39:28 74

原创 3、运行时数据区

3.1、概述主要包括方法区Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。另外一些则是与线程一一对应,这些线程对应的数据区域会随着线程开始和结束而创建和销毁3.2、线程线程是一个程序里的运行单元。JVM允许一个应用有多个线程并行运行。在HotSpot JVM里,每个线程都与操作系统的本地线程直接映射。当一个java线程准备好执行以后,此时一个操作系统的本地线程也同时创建。java线程执行终止后,本地线程也会回收..

2021-07-21 11:37:53 97 1

转载 2、类加载子系统

2.1、作用负责从文件系统或网络中加载class文件,class文件开头有特定标识,魔数(Magic Number)、版本号classloader只负责class文件的加载,至于是否可运行,则由执行引擎决定加载的类信息存放于方法区的内存空间,除了类信息,方法区还会存放运行时常量池信息,还可能包括字符串字面量和数字常量(常量池运行时加载到内存中,即运行时常量池)2.2、角色2.3、类的加载过程加载、链接、初始化、使用、卸载2.3.1、加载 通过一个类的全限定名来获取此类的

2021-07-21 11:36:18 44

原创 1、JVM与Java体系结构

1.1、JVM整体架构详图1.2、Java代码执行过程详图1.3、汇编语言、机器语言、高级语言关系1.4、JVM架构模型1.4.1、基于栈式优点:设计和实现简单,适用于资源受限的系统;避开了寄存器的分配:使用零地址指令方式分配;指令流中大部分都是零地址指令,执行过程依赖操作栈,指令集更小(8位字节码,所以指令集更小,但是完成一项操作花费的指令相对多),编译器容易实现;不需要硬件支持,可移植性更好,更好实现跨平台缺点:性能下降,实现同样的功能需要更多的指令,毕竟还要入栈

2021-07-21 11:34:31 141

原创 雪花id

/** * */package cn.com.chengtech.project.pm.worktask;/** * @author * @date 2021年1月29日 */public class SnowFlake{ /** * 起始的时间戳 */ private final static long START_STMP = 1480166465631L; /** * 每一部分占用的位数 */ priva.

2021-01-29 14:59:28 114

转载 java8 LocalDateTime

package com.example.demo.a_helloword;import java.text.ParseException;import java.text.SimpleDateFormat;import java.time.Duration;import java.time.LocalDateTime;import java.time.LocalTime;import java.time.ZoneId;import java.time.format.DateTimeForma.

2020-11-13 21:41:47 105

原创 SpringCloud-Getway及跨域

常用功能包括:路由转发、权限校验、限流控制等https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.1.5.RELEASE/single/spring-cloud-gateway.html

2020-10-13 14:44:08 670

原创 SpringCloud Alibaba-Nacos作为配置中心

使用Nacos Config Starter 完成Spring Cloud应用的配置管理如何接入1、修改pom.xml文件,引入Nacos Config Starter <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </d

2020-10-13 13:50:14 174

原创 SpringCloud-OpenFeign远程调用

简介Feign是一个声明式的HTTP客户端,他的目的就是让远程调用更加简单。feign提供了http请求的模板,通过编写简单的接口和插入注解,就可以定义好http请求的参数、格式、地址等信息。feign整合了Ribbon(负载均衡)和Hystrix(服务熔断),SpringCloudFeign在NetFlixFeign的基础上扩展了对SpringMVC注解的支持,在其实现下,我们只需要创建一个接口并用注解的方式来配置他,即可完成对服务提供方的接口绑定。简化了SpringCloudRibbon自行封装

2020-10-11 10:29:01 994

原创 Spring Cloud Alibaba-Nacos作为注册中心

使用Nacos Discovery Starter完成SpringCloud应用的服务注册与发现如何接入1、修改pom.xml文件,引入Nacos Discovery Starter <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId&g

2020-10-11 09:44:17 99

原创 java8中一个极其强悍的新特性Stream(非常实用)

java8中有两个非常有名的改进,一个是Lambda表达式,一个是Stream。如果我们了解过函数式编程的话,都知道Stream真正把函数式编程的风格引入到了java中一、Stream是什么从名字来看,Stream就是一个流,他的主要作用就是对集合数据进行查找过滤等操作。有点类似于SQL的数据库操作。一句话来解释就是一种高效且易用的数据处理方式。大数据领域也有一个Steam实时流计算框架,不过和这个可不一样。别搞混了。举个例子吧,比如说有一个集合Student数据,我们要删选出学生名字为“张三”

2020-10-09 10:39:54 582

原创 解决Docker安装MySQL中文乱码问题

解决Docker安装MySQL中文乱码问题https://blog.csdn.net/m0_38023584/article/details/105584623

2020-09-29 10:25:12 272

原创 Java8特性的使用

1.合并两个list集合(集合中的元素为对象)List<User> userList= Stream.of(userList1,userList2).flatMap(Collection::stream).distinct().collect(Collectors.toList());2.获取list集合中对象的某个属性List<String> userNameList = userList.stream().map(User::getUserName).collect(

2020-08-01 16:08:37 132

原创 Lombok

Lombok能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法。在源码中没有getter和setter方法,但是在编译生成的字节码文件中有getter和setter方法。Lombok的使用跟引用jar包一样,可以在官网(https://projectlombok.org/download)下载jar包,也可以使用ma...

2020-02-19 11:16:25 67

原创 Springboot统一处理异常

package com.example.chapter10_6.controller;import org.springframework.boot.web.servlet.error.ErrorController;import org.springframework.web.bind.annotation.RequestMapping;import org.springframewo...

2020-02-15 19:57:22 74

原创 SpringBoot中事务的使用

事务的介绍事务具有4个特性:原子性、一致性、隔离性、持久性。通常称为ACID特性。原子性(Atomicity):一个事务是一个不可分割的工作单位,事务中包括的诸多操作要么都做,要么都不做。 一致性(Consistency):事务必须使数据库从一个一致性状态变成另一个一致性状态 隔离性(Isolation):一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事...

2020-02-15 19:51:44 452 1

原创 SpringBoot中使用过滤器、拦截器和监听器

过滤器过滤器filter是servlet技术中心最实用的技术。过滤器是处于客户端与服务器资源文件之间的一道过滤网,过滤一些不符合要求的请求。通常他被用作Session校验,判断用户权限,如果不符合设定条件,就会被拦截到特殊的地址或者给予特殊的响应。使用过滤器只需要实现Filter类init方法:在容器中创建当前过滤器的时候自动调用这个方法。destroy方法:在容器中销毁当前过滤器...

2020-02-15 18:38:03 364

原创 tomcat8配置solr8,创建core,配置数据库连接(mysql)

配置第一步:solr8.0.0解压后找到solr-8.0.0/server/server-webapp/目录下的webapp文件夹,复制粘贴到tomcat下的webapps下,重命名为solr第二步:把solr-8.0.0/server/lib/ext目录下的所有jar包、和solr-8.0.0/dist下的solr-dataimporthandler-6.4.1.jar、solr-dat...

2019-12-27 23:57:40 326

原创 Spring Boot日志

Spring boot使用Commongs Logging进行多有内部日志记录,但保留底层日志实现。为Java Util Logging、Log4j2和Logback提供了默认配置。每种情况下,记录器都预先配置为使用控制台输出,并且提供可选的文件输出。默认情况下,如果使用Starters,就使用Logback进行日志记录。还包括适当的Logback路由,以确保使用java Util Loggi...

2019-11-27 00:06:29 159

原创 Spring Cache\Redis\Memcached

Spring Cache1.简介核心思想是当在调用一个缓存方法时,会把该方法参数和返回结果作为一个键值对存放在缓存中,等到下一次利用同样的参数来调用该方法时将不再执行该方法,而是直接从缓存中获取结果进行返回,从而实现缓存的功能。1.@Cacheable用于标记缓存,也就是对使用@Cacheable注解的位置进行缓存。@Cacheable可以在方法或者类上进行标记,当对方法进行标记时...

2019-11-24 21:15:23 206

原创 Druid数据库连接池

简介Druid是阿里巴巴的一个开源项目,作为一个优秀的数据库连接池,Druid提供了优秀的稳定性,并且在性能方面比其他数据库连接池提高了很多,最重要的是Druid提供了实时监控的功能,如数据源监控、SQL监控、SQL防火墙监控、web应用监控、URI监控、Session监控、Spring监控等。Druid主要用于存储、查询和分析大型事件流。配置Druid在pom文件中加入Druid依赖...

2019-11-22 19:58:25 483

原创 mybatis-generator

//download.csdn.net/download/qq_37054816/119853381.创建springboot项目勾选4个依赖2.配置application.yml文件先将默认的 application.properties 文件名改为 application.yml这里我用的spring的版本为5.2.1,jdbc配置的URL和驱动与原来的不同#...

2019-11-19 16:07:07 91

原创 Springboot学习笔记(十一)——抢购商品

设计与开发数据库表设计数据库共两张表,分别是产品信息表(t_product)和购买信息表(t_purchase_record),建表SQL如下CREATE TABLE `t_product` ( `id` int(12) NOT NULL AUTO_INCREMENT COMMENT '编号', `product_name` varchar(60) CHARACTER SE...

2019-11-13 00:21:36 538

原创 Springboot学习笔记(十)——Spring Security

概述和简单安全认证在Java Web工程中,一般使用Servlet过滤器(Filter)对请求的进行拦截,然后在Filter中通过自己的验证逻辑来决定是否放行请求。同样的,Spring Security也是基于这个原理,在进入到DispatcherServlet前就可以对SpringMVC的请求进行拦截,然后通过一定的验证,从而决定是否放行请求访问系统。为了使用Spring Securit...

2019-10-20 22:28:18 737

原创 Springboot学习笔记(九)——构建REST风格的网站

在HTTP协议发展的过程中,提出了许多规则,但是有些规则繁琐,于是又提出了一种风格约定,便是REST风格。严格地说,REST不是一种标准,而是一种风格。在现今流行的微服务中,这样的风格甚至被推荐为各个微服务系统之间用于交互的方式。首先在REST风格中,每一个资源都只是对应一个网址,而一个代表资源的网址应该是一个名词,而不存在动词,这代表对一个资源的操作。在这样的风格下,对于简易参数则尽量通过网址...

2019-10-10 23:22:48 552

原创 Springboot学习笔记(八)——SpringMVC(二)

处理器映射web工程使用了SpringMVC,那么他在启动阶段就会将注解@RequestMapping所配置的内容保存到处理器映射(HanlderMapping)机制中去,然后等待请求的到来,通过拦截器请求的信息与handlerMapping进行匹配,找到对应的处理器(他包含处理器逻辑),并将处理器及其拦截器保存到HandlerExecutionChain对象中,返回给DispatcherSer...

2019-10-06 22:55:18 254

原创 Springboot学习笔记(八)——SpringMVC(一)

Spring MVC一开始就定位于一个比较松散的耦合,展示给用户的视图(view)、控制器返回的数据模型(model)、定位视图的视图解析器(ViewResolver)和处理器适配器(HandlerAdapter)等内容都是独立的。换句话说,通过springMVC很容易就把后台的数据转换为各种类型的数据,以满足移动互联网数据多样化的要求。例如,springMVC是基于spring基础框架派生出来的...

2019-10-04 21:49:25 183

原创 Springboot学习笔记(七)——MongoDB

Redis是一个能极大的提高互联网系统的性能,但是他有一些缺陷,其中一个就是计算功能十分有限

2019-09-26 15:41:17 272

基于springboot的博客后台系统

静态模板项目制作,将HTML静态项目改为thymeleaf项目,使用Controller进行跳转。实体设计,使用的是spring data jpa,实体设计会决定数据库表的结构。后台方法代码编写,包含查询数据库、封装数据等。渲染数据,将后台查询出来的数据动态渲染到thymeleaf。

2020-03-01

基于springboot的博客系统

静态模板项目制作,将HTML静态项目改为thymeleaf项目,使用Controller进行跳转。实体设计,使用的是spring data jpa,实体设计会决定数据库表的结构。后台方法代码编写,包含查询数据库、封装数据等。渲染数据,将后台查询出来的数据动态渲染到thymeleaf。

2020-02-25

chapter11_4.rar

过滤器filter是servlet技术中心最实用的技术。过滤器是处于客户端与服务器资源文件之间的一道过滤网,过滤一些不符合要求的请求。通常他被用作Session校验,判断用户权限,如果不符合设定条件,就会被拦截到特殊的地址或者给予特殊的响应。java中的拦截器是动态拦截action调用的对象,然后提供了可以在action执行前后增加一些操作,也可以在action执行前停止操作。监听器通常用于监听web应用中对象的创建、销毁等动作的发生,同时对监听的情况作出相应的处理,最常用于统计网站的在线人数、访问量等信息。

2020-02-15

springboot_shiro.rar

springboot使用shiro进行身份认证和权限管理,其中DAO层使用mybatis,。其中分为三种角色:user、VIP和svip

2019-12-11

Druid数据库连接示范.rar

Druid是阿里巴巴的一个开源项目,作为一个优秀的数据库连接池,Druid提供了优秀的稳定性,并且在性能方面比其他数据库连接池提高了很多,最重要的是Druid提供了实时监控的功能,如数据源监控、SQL监控、SQL防火墙监控、web应用监控、URI监控、Session监控、Spring监控等。Druid主要用于存储、查询和分析大型事件流。

2019-11-22

mybatis-generator.rar

mybatis-generator是基于springboot的,通过数据库用来自动生成实体类、dao层以及相关的映射文件

2019-11-19

新闻管理系统.rar

一个简单的基于SSM框架的管理系统,系统主要实现了几个功能模块:用户管理、新闻类别管理、新闻发布管理和前台新闻展示等模块

2019-08-28

mybatis3与spring5整合.rar

mybaits3与spring5的整合,包括dao方式和mapper接口方式

2019-08-24

struts2+spring5+hibernate5.rar

struts2+spring5+hibernate5整合,一个简单的登录注册案例

2019-08-19

空空如也

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

TA关注的人

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