自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(261)
  • 资源 (5)
  • 收藏
  • 关注

原创 读取PPT模板替换数据生成PDF报表

记录如何不借助其他第三方库的情况下,单纯使用java读取数据库数据生成PPT,并转PDF

2023-05-31 15:36:31 1162 1

原创 Spring Boot + Redis 实现分布式限流

Spring Boot + Redis实现分布式固定窗口限流

2022-09-09 14:02:19 1571 1

原创 Spring Cache使用Redis自定义缓存key

本篇博客,简单的介绍了sprig cache,spring cache如何使用redis作为缓存,已经自定义缓存key策略,以及通过配置缓存过期时间

2022-09-06 19:41:59 2791

原创 java流知识小结

java流知识小结

2022-06-25 16:53:00 609

原创 javascript知识点小结

javascript知识点小结

2022-06-22 00:29:06 245

原创 jsp知识点小结

jsp知识点小结

2022-06-18 23:40:01 202

原创 CSS知识点小结

css知识简单小结

2022-06-18 23:29:28 224

原创 html知识小结

html简单知识总结

2022-06-18 23:17:37 129

原创 java基础知识小结

java基础知识总结

2022-06-18 22:57:01 173

原创 XML知识点总结

xml知识体系总结

2022-06-18 15:31:10 2325

原创 Skywalking之学习文档

Skywalking学习文档

2022-06-17 15:36:48 273

原创 SkyWalking之安装Java agent

SkyWalking之Java agent

2022-06-17 15:07:16 1699

原创 分布式链路追踪之Skywalking简单了解

分布式链路追踪

2022-06-16 14:49:18 1501

原创 K8S容器项目容器内存配置规则

一、整体概览整体原则:容器最小内存和容器最大内存设置为一致更多参数里:最大堆内存和最小堆内存设置为一致二、细节解释在 Kubernetes 中,像 CPU 这样的资源被称作“可压缩资源”(compressible resources)。它的典型特点是,当可压缩资源不足时,Pod 只会“饥饿”,但不会退出。而像内存这样的资源,则被称作“不可压缩资源(incompressible resources)。当不可压缩资源不足时,Pod 就会因为 OOM(Out-Of-Memory)被内核杀掉。

2022-05-06 15:47:50 3416

原创 Log4j自定义Appender输出日志内容

一、Log4j知识了解在自定义Appende之前,我们先来简单了解下Log4j1、Log4j是什么Log4j是由Apache提供的日志操作包,用于帮助用户处理日志信息。2、log4j的作用log4j提供了方法使我们能将日志信息分级存储。其次,log4j提供了日志不同的存储方式,我们可以将日志发送到控制台,或者文件,或者数据库中等等。3、Log4j三大组件Logger:日志写出器,负责供客户端代码调用,用于输入日志信息。Log4j 允许开发人员定义多个Logger,每个Logger

2022-02-11 17:05:43 3871

原创 Spring动态选择实现类

一、需求描述在实际工作中,我们经常会遇到一个接口及多个实现类的情况,并且在不同的条件下会使用不同的实现类,那么如何动态选择某一个实现类呢。二、代码实现1.根据ApplicationContext的getBeansOfType和自定义注解实现spring上下文工具类ApplicationContextUtilimport org.springframework.beans.BeansException;import org.springframework.context.Appli

2022-01-06 11:45:39 1896

原创 xxl-job简单使用

本篇博客仅作为自己在使用xxl-job过程中的查看的一片文章,仅做记录使用XXL-JOB快速入门 - 简书

2021-12-29 16:09:36 287

原创 注解+切面式的分布式锁

一、案例需求 在一个SpringBoot项目,其中定时任务和web端代码耦合在一起,并部署在多个服务器节点上,但这样会存在一个问题,每个节点都会触发一次定时任务,这显然重复执行了。为了达到唯一控制效果,引入了分布式锁的功能。但是有个缺点是每写一个定时任务都得写一份与业务无关的分布式锁代码,这样造成大量的冗余代码。所以想着通过注解+切面的方式来实现代码的精简。二、代码1.注解@Target(ElementType.METHOD)@Retention(RetentionPolicy.R..

2021-12-27 10:20:58 1045

原创 Tomcat 浅度解析

一、Tomcat 顶层架构Tomcat 中最顶层的容器是 Server,代表着整个服务器,负责管理和启动各个 Service,同时监听 8005 端口发过来的 shutdown 命令,用于关闭整个容器。从上图中可以看出,一个 Server 可以包含至少一个 Service,用于具体提供服务。Service 主要包含两个部分:Connector 和 Container。从上图中可以看出 Tomcat 的心脏就是这两个组件,他们的作用如下:1、Connector 提供 Socke

2021-12-23 11:42:23 585

原创 git解决本地分支合并test分支冲突的问题

一、博客背景本篇博客仅作为工作记录使用,记录自己解决问题的过程,同样,本篇博客中介绍的方法不适合所有的人解决冲突。二、分支介绍master分支test分支dev-wuzhu分支(自己开发的分支)dev-xiali分支(同事开发的分支)分支使用前提:我现在所在的公司的发布流程是,先将自己的分支合并到test上,如果test分支发布且测试没问题后,合并到master分支发布生产环境,且不允许将test分支往自己的分支上合并,因为这样会存在将在test分支上,尚未测试通过的分支合并到本

2021-07-16 17:50:15 1776 5

原创 利用hutool解析excel内容转换为实体,实体属性为空

一、博客前提工作中有遇到一个需求,客户提供需要插入数据库的原始数据的excel表格,我去解析表格,将数据插入数据库。当时立马就想到了用hutool的工具类,直接将excel表格nei'r

2021-06-08 20:53:46 12970 9

原创 spring boot项目使用threadlocal存储用户信息实现数据权限控制

一、博客背景 项目是前后端分离的spring boot项目,前端将标识用户信息的code存储在cookie中,当实现从cookie中获取到code值后,再查询数据库获取数据用户信息后,如何将用户信息一层一层的往下传递?有人可能将用户信息存储到HttpServletRequest请求中,后续需要用到用户信息的时候,再从HttpServletRequest中获取。如果在dao层需要用户信息,还需要将HttpServletRequest一层一层传递,或者说在controller中获取到用户信息一层一层传..

2021-05-26 17:48:47 3629

原创 spring boot项目使用@ControllerAdvice做全局异常处理

一、博客背景在项目中有遇到一个需求,对于项目中的特殊异常信息信息需要做一个处理,统一返回到前端。二、代码统一异常处理类import com.tp.common.constant.CommonConstant;import com.tp.common.exception.BusinessException;import com.tp.common.exception.TokenException;import com.tp.common.model.Resp;import com.t

2021-05-26 10:18:57 390

原创 方法里基本类型参数,方法内部改变不会修改方法外部的值

话不多说,直接上代码一、代码 @org.junit.Test public void test7(){ int a= 3; add(a); System.out.println(a); List<String> list = new ArrayList<>(); list.add("c"); addList(list); System.out.pr

2021-05-21 17:00:27 948

原创 jvm知识体系学习

本篇博客作为笔记记录学习使用一、类加载器、类加载机制、双亲委派模型等知识什么是类的加载类的生命周期类加载器类的加载双亲委派模型自定义类加载器详情查看:https://mp.weixin.qq.com/s?__biz=MzI4NDY5Mjc1Mg==&mid=2247483934&idx=1&sn=41c46eceb2add54b7cde9eeb01412a90&chksm=ebf6da61dc81537721d36aadb5d20613b044

2021-03-16 16:46:02 316

原创 Socket编程

本篇博客仅作为一个笔记使用一,网络编程中两个主要的问题一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。而TCP层则提供面向应用的可靠(tcp)的或非可靠(UDP)的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。目前较为流行的网络编程模型是客户机/服务器(C/S)结构。即通信双方一方作为服务器等待客户

2021-03-15 10:37:18 184

原创 mysql如何不依赖数据库客户端将一个表中的数据迁移到令一个数据库中

本次操作只需执行两句sql,分比为mysqldump -u root -p mytest(自己替换数据库名)tb_sent(自己替换表名)> D:/yourtabledata.sql(你需要存储的sql地址)mysql -u root -p safe(自己替换需要导入数据的数据库名)< D:/yourtabledata.sql(前面导出的sql文件存储地址)操作细节,请看下面的步骤一、导出数据打开命令行输入以下sql:表格中需要替换的数据库名和表名...

2021-02-04 20:23:07 168 1

原创 spring boot项目中mybatis plus多数据库支持

一、博客背景当你的项目需要兼容多种数据库,当你在mapper接口中定义一个方法时,你的xml中需要有一个id为你的方法名的标签实现语句,但是在一个xml中id只能唯一,但是你又需要兼容多个数据库,这时你要怎么处理。有两种方法可以处理1.在mapper中定义多个方法,分别对应不同的数据库,xml针对不同的方法写sql,这样就不会存在id冲突的情况了2.在mapper文件中定义一个方法,xml中使用多个id相同的sql语句,且用databaseId标识,这样同样可以解决上面的问题,下面就来讲解具

2021-02-01 16:35:07 3419

原创 ConcurrentHashMap源码查看

一、博客背景因hashmap不是线程安全的,在多线程下插入会有死锁的问题,所以ConcurrentHashMap就出现来替代了,ConcurrentHashMap在java7和java8中数据结构有了变化,我们本篇博客会根据我们目录中的提到的问题一起交叉查看jvav7和java8的源码,查看之前可以自己先想想问题的答案。篇幅较多,请耐心看完,java7的版本号为1.7.0_04,java8的版本号为1.8.0_162二、常见问题CurrentHashMap的实现原理 CurrentHashMa

2021-01-21 20:51:40 260

原创 break 通过自定义标签跳到指定位置

实现比较简单,但是不常用,所以本篇博客作为一个笔记使用,因代码简单,直接粘贴代码和运行结果public class Tets { public static void main(String[] args) { b:for(;;){ System.out.println("bbbbbbbbbbbbbbbbbbbbbb"); a: for(;;){ int i =0; for

2021-01-21 09:56:48 2553 3

原创 数据结构之树

一、什么是树树是一种数据结构,它是由n(n>=1)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树结构示意如下图二、树的相关属性结点:使用树结构存储的每一个数据元素都被称为“结点”。孩子结点或子结点:一个结点含有的子树的根结点称为该结点的子结点;结点的

2021-01-19 15:15:06 765

原创 TreeMap源码查看

一、构造函数// 自定义的比较器,用于给TreeMap的元素排序private final Comparator<? super K> comparator;// 红黑树的根节点private transient Entry<K,V> root;// 节点数目private transient int size = 0;// TreeMap结构的修改次数,用于fail-fast机制private transient int modCount = 0;// 无参

2021-01-18 21:14:43 128 1

原创 set集合类源码查看

一、博客背景set接口下有两个主要常用地的实现子类hashset、linkedhashset和treeset,今天我们就一起来查看学习下二、hashset1.构造函数private transient HashMap<E,Object> map;private static final Object PRESENT = new Object();public HashSet() { map = new HashMap<>();}public Hash

2021-01-18 18:08:28 155 1

原创 LinkedHashMap源码查看

一、背景 LinkedHashMap是基层HashMap的一个子类,所以很多方法都是用的HashMap的方法,尚未了结HashMap的同学可以去看下我的上一篇博客,在本篇博客中涉及到HashMap的源码方法就不不粘贴了,同样本篇会讲解下java7.和java8的代码java7的版本号为1.7.0_04,java8的版本号为1.8.0_162二、问题LinkedHashMap的数据结构三、构造函数1.java7//循环链表的头结点private transient Ent..

2021-01-18 17:04:08 209

原创 HashMap源码查看

一、博客背景hashmap在java7和java8中数据结构有了变化,我们本篇博客会根据我们目录中的提到的问题一起交叉查看jvav7和java8的源码,篇幅较多,请耐心看完,java7的版本号为1.7.0_04,java8的版本号为1.8.0_162二、常见问题HashMap的底层原理是什么? 为什么JDK 7使用数组+链表?JDK8中为什么要使用红黑树? hashmap底层是如何put的 hashmap底层是如何实现get的 hashmap如何扩容

2021-01-14 17:57:26 775

原创 List集合类源码查看

一、博客背景list接口下有两个主要常用地的实现子类ArrayList和LinkedList,今天我们就一起来查看学习下,使用的jdk版本为1.7.0_04二、ArrayList在查看源码之前我们思考一下下面的问题,然后带着问题去学习 ArrayList底层实现原理 ArrayList的默认容量大小? ArrayList的插入或删除一定慢吗? ArrayList底层就是数组,访问速度本身就比较快,为什么还要实现RandomAccess接口? Arra

2021-01-13 19:40:47 310

原创 java集合框架大览

一、为什么需要java集合类框架 在编程中,常常需要集中存放多个数据。从传统意义上讲,数组是我们的一个很好的选择,前提是我们事先已经明确知道我们将要保存的对象的数量。一旦在数组初始化时指定了这个数组长度,这个数组长度就是不可变的,如果我们需要保存一个可以动态增长的数据(在编译时无法确定具体的数量),java的集合类就是一个很好的设计方案了。集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。所以的集合类都位于java.util包下,后来为了处理多线程环境下的并发安全问题,java5还在j..

2021-01-12 17:27:20 176

原创 java多线程基本知识

一、什么是进程,什么是线程,进程和线程的区别进程是资源调度和分配的基本单位。是在系统中正在运行的一个应用程序线程是CPU调度和分配的基本单位。将一个进程划分为若干个独立的执行流,每一个执行流均称为一个线程。二、java中多线程的实现方式继承 Thread 类public class NewThreadName extends Thread{ @Override public void run(){ //线程的执行代码在这里 }}实现

2021-01-06 16:43:38 98

原创 Executor框架

本文的博客仅仅作为笔记记录使用,转载别人优秀的博客https://blog.csdn.net/tongdanping/article/details/79604637

2021-01-06 09:47:05 98

原创 http等网络协议和webservice soket

一、每一层分别有什么协议二、TCP/IP协议TCP/IP 是 Internet 所用的协议,它是一个协议栈,由一系列小而专的协议组成,可分为三个层次:网络层,传输层和应用层网络层:IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议传输层:TCP协议与UDP协议;应用层:FTP、HTTP、TELNET、SMTP、DNS等协议三、HTTP HTTP是HyperText Transfer Protocol(超文本传输协议)的英文缩写。HTTP可以通过传输层的TC..

2020-12-29 17:04:39 511

Elasticsearch6.22和kibana6.22 windows版本启动包

Elasticsearch6.22和kibana6.22 版本启动包

2020-10-12

spring cloud study demo.zip

本案例中包含为一套基础spring cloud的学习demo,其中包含了eureka服务中心的搭建,eureka服务注册和发现,ribbon的服务调用,feign的服务调用,zuul网关的实现,spring cloud config配置中心和配置客户端的搭建,spring cloud的消息总线,spring cloud hystrix断路器,断路器监控,断路器聚合监控等服务

2020-07-30

spring boot整合shiro实现url请求过滤

本demo为Spring boot整合shiro,以mybatis plus做dao层交互数据,实现了读取数据库用户数据实现用户登录,权限认证,读取数据库中用户对应的url请求,实现请求的过滤。自定义了relam和过滤器来实现这些功能

2020-07-13

shior2.zip

本案例是基于springboot+mybatis plus作为基础框架,整合shiro安全框架做的登录,权限认证案例,其中包含了如何自定义relam,shiro如何读取数据库实现权限认证

2020-07-08

springboot-security.rar

spring boot项目配置spring security,然后通过读取数据库用户以实现权限认证,通过数据库中用户对象配置权限实现页面拦截,即哪个页面所有用户都可以反问,哪些页面只有哪些特定用户可以访问

2020-06-04

空空如也

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

TA关注的人

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